{"version":3,"sources":["/build/webpack/bootstrap","/build/src/modules/match-list/components/OverviewRow/FixtureData/fixtureData.scss","/build/src/modules/ui/components/SettingsToggler/settingsToggler.scss","/build/src/modules/promo/components/TopMatchList/DateTime/dateTime.scss","/build/src/components/Tabs/Tabs.scss","/build/src/components/MatchTime/matchTime.scss","/build/src/modules/banners/utils.ts","/build/src/modules/banners/index.ts","/build/src/styles/spacing.ts","/build/src/assets/svg/arrow-left.svg","/build/src/services/garbage-collector/constants.ts","/build/src/services/garbage-collector/actions.ts","/build/src/services/garbage-collector/locators.ts","/build/src/services/garbage-collector/reserve.ts","/build/src/services/garbage-collector/utils.ts","/build/src/services/garbage-collector/middleware.ts","/build/src/services/garbage-collector/index.ts","/build/src/ui-lib/OddButton/oddButton.scss","/build/src/components/PromoItem/promoItem.scss","/build/src/components/Collapse/collapse.scss","/build/src/modules/freebet/async.ts","/build/src/views/BetslipSidebarWrapper/betslipSidebarWrapper.scss","/build/src/assets/svg/top-tournaments-arrow.svg","/build/src/modules/match-list/components/SportEventRow/StreamMarketCount/streamMarketCount.scss","/build/src/selectors.ts","/build/src/modules/promo/components/ColorfulBanners/colorfulBanners.scss","/build/src/components/DateTime/dateTime.scss","/build/src/ui-lib/Amount/amount.scss","/build/src/views/FavoriteList/favoriteList.scss","/build/src/utils/adaptBettingOptions.ts","/build/src/app-constants.ts","/build/src/utils/getExtraMatchListRoutes.ts","/build/src/index.ts","/build/src/services/analytics/utils.ts","/build/src/root/App/app.scss","/build/src/services/tracking-manager.ts","/build/src/modules/promo/components/TopMatchList/MatchRow/stubMatchRow.scss","/build/src/modules/promo/components/FeaturedTournaments/FeaturedTournamentsRow/featuredTournamentsRow.scss","/build/src/components/OrganizationIcon/organizationIcon.scss","/build/src/assets/svg/arrow.svg","/build/src/modules/match-list/components/OverviewRow/overviewRow.scss","/build/src/utils/removeLastSlash.ts","/build/src/views/SettingsMobileOverlay/settingsMobileOverlay.scss","/build/src/modules/ui/components/ListNav/ListNav.scss","/build/src/utils/isMetaTypeEqualScoreType.ts","/build/src/components/CheckBox/CheckBox.scss","/build/src/utils/bindTrailingArgs.ts","/build/src/utils/checkArrayLength.ts","/build/src/utils/checkIfNewsPage.ts","/build/src/utils/checkIsCmsLink.ts","/build/src/utils/checkIsDynamicCategorizer.ts","/build/src/utils/checkIsListReady.ts","/build/src/utils/checkIsMatchTrackerDisabled.ts","/build/src/utils/checkIsSportEventViewable.ts","/build/src/utils/checkKeyInObj.ts","/build/src/utils/checkSkipPollerConfiguration.ts","/build/src/utils/checkValueInObj.ts","/build/src/utils/checkWidgetContainerProvided.ts","/build/src/utils/convertHexToRgb.ts","/build/src/utils/convertNameToRuLocale.ts","/build/src/utils/convertSecondsToTimeFormat.ts","/build/src/utils/createPortalNode.ts","/build/src/utils/extractParentRouteFromHistory.ts","/build/src/utils/fetchFeaturedCustomList.ts","/build/src/utils/fetchOutrightsByTournamentIds.ts","/build/src/utils/filterScoresBySportAndMatchPart.ts","/build/src/utils/findBetStep.ts","/build/src/components/Fractional/Fractional.tsx","/build/src/utils/formatDecimalOdd.ts","/build/src/utils/getByKey.ts","/build/src/utils/getEurToCurrencyRate.ts","/build/src/utils/roundBet.ts","/build/src/utils/roundBetByStep.ts","/build/src/utils/getCurrency.ts","/build/src/utils/getCurrentMatchPart.ts","/build/src/utils/getProductName.ts","/build/src/utils/getHelmetTitle.ts","/build/src/utils/getMapNameFromMeta.ts","/build/src/utils/getMatchesByIds.ts","/build/src/utils/getMinBet.ts","/build/src/utils/getNumberValueFromPx.ts","/build/src/utils/isValidCssPair.ts","/build/src/utils/getPaletteCssVariables.ts","/build/src/utils/getPinnedStreamPositionCssVariables.ts","/build/src/utils/getPromoTypeIdsBySport.ts","/build/src/utils/getRouteBySportType.ts","/build/src/utils/getScoreTitle.ts","/build/src/utils/getSignedSpecifierPair.ts","/build/src/utils/getSpacingCssVariables.ts","/build/src/utils/getTimeIntervalByUnit.ts","/build/src/utils/getVariablesForLiveSportEvent.ts","/build/src/utils/getYouTubeVideoIdFromUrl.ts","/build/src/utils/isFavoritePage.ts","/build/src/utils/isFeaturedPage.ts","/build/src/utils/isLivePage.ts","/build/src/utils/location/getMatchStatusesByLocation.ts","/build/src/utils/location/getSportEventTypesByLocation.ts","/build/src/utils/location/getDefaultVariablesFavorite.ts","/build/src/utils/parse.ts","/build/src/utils/parseDateString.ts","/build/src/utils/stringify.ts","/build/src/utils/theater-mode/addTheaterModeClass.ts","/build/src/utils/theater-mode/removeTheaterModeClass.ts","/build/src/utils/topMarketsVerify.ts","/build/src/utils/vibrateDevice.ts","/build/src/components/CategorizerHeadingRowGroup/categorizerHeadingRowGroup.scss","/build/src/components/VS/vs.scss","/build/src/components/BackButton/BackButton.tsx","/build/src/components/EventInfo/eventInfo.scss","/build/src/assets/svg/lock.svg","/build/src/modules/promo/components/FeaturedTournamentPage/featuredTournamentPage.scss","/build/src/hoc/makeContextHoc.ts","/build/src/ui-lib/Amount/Amount.tsx","/build/src/ui-lib/Input/Input.tsx","/build/src/ui-lib/OddButton/utils/getTitle.ts","/build/src/ui-lib/OddButton/useOddButton.ts","/build/src/ui-lib/OddButton/OddButton.tsx","/build/src/ui-lib/OddButtonWithHistory/useOddButtonWithHistory.ts","/build/src/ui-lib/OddButtonWithHistory/OddButtonWithHistory.tsx","/build/src/ui-lib/PlatformProvider/PlatformProvider.tsx","/build/src/ui-lib/PrematchDate/PrematchTime.tsx","/build/src/ui-lib/Score/ScoreItem/ScoreItem.tsx","/build/src/ui-lib/Score/useScore.ts","/build/src/ui-lib/Score/Score.tsx","/build/src/ui-lib/SegmentTab/SegmentTab.tsx","/build/src/ui-lib/SegmentControl/SegmentControl.tsx","/build/src/assets/svg/default-logo.svg","/build/src/ui-lib/TeamLogo/TeamLogo.tsx","/build/src/ui-lib/LogoTitle/LogoTitle.tsx","/build/src/ui-lib/TeamsTitleColumn/TeamsTitleColumn.tsx","/build/src/ui-lib/TeamsTitleRow/TeamsTitleRow.tsx","/build/src/components/Currency/currency.scss","/build/src/hoc/makeHocFromHook.ts","/build/src/hoc/withErrorBoundary.tsx","/build/src/hoc/withStreamModule.ts","/build/src/hoc/withStreamWidgetSettings.tsx","/build/src/ui-lib/Score/ScoreItem/scoreItem.scss","/build/src/modules/betslip/components/BetslipHeader/betslipHeader.scss","/build/src/assets/svg/top-tournament.svg","/build/src/modules/filters/components/Categorizer/CategorizerStub/CategorizerStub.tsx","/build/src/modules/filters/async.tsx","/build/src/views/Footer/footer.scss","/build/src/components/OddStatistic/oddStatistic.scss","/build/src/modules/outright/async.ts","/build/src/views/SidebarToggler/sidebarToggler.scss","/build/src/components/PromoHeader/promoHeader.scss","/build/src/modules/promo/components/TopMatch/topMatch.scss","/build/src/services/locale-manager/constants.ts","/build/src/services/locale-manager/LocaleManager.ts","/build/src/assets/svg/all-games.svg","/build/src/modules/match-list/components/OverviewRow/Market/market.scss","/build/src/services/devMiddleware/bannerDevMiddleware.ts","/build/src/modules/promo/components/ColorfulBanner/colorfulBanner.scss","/build/src/components/DateTime/DateTime.tsx","/build/src/ui-lib/Score/score.scss","/build/src/components/PromoMatchDynamicScoreList/promoMatchDynamicScoreList.scss","/build/src/modules/promo/components/BannerImage/bannersImage.scss","/build/src/components/CompetitorLogo/CompetitorLogo.tsx","/build/src/modules/ui/components/OddFormatSelect/oddFormatSelect.scss","/build/src/assets/svg/live.svg","/build/src/modules/betting-ready-indicator/bettingReadyIndicatorContext.ts","/build/src/modules/betting-ready-indicator/initBettingReadyIndicator.ts","/build/src/modules/promo/components/FeaturedTournaments/featuredTournaments.scss","/build/src/views/Navigation/navigation.scss","/build/src/components/PromoMatchOdds/promoMatchOdds.scss","/build/src/assets/svg/check.svg","/build/src/modules/promo/components/EventsOfTheDay/eventsOfTheDay.scss","/build/src/components/CategorizerHeadingRow/categorizerHeadingRow.scss","/build/src/modules/promo/components/TopMatchList/MatchRow/matchRow.scss","/build/src/views/Outrights/outrights.scss","/build/src/modules/match-list/components/SportEventRow/MarketTotalRow/MarketTotalRow.scss","/build/src/components/FixedOverlay/fixedOverlay.scss","/build/src/components/SettingsDropdown/settingsDropdown.scss","/build/src/ui-lib/LogoTitle/logoTitle.scss","/build/src/ui-lib/PrematchDate/prematchTime.scss","/build/src/components/LiveLabel/LiveLabel.tsx","/build/src/modules/cashout/async.tsx","/build/src/components/Spinner/spinner.scss","/build/src/modules/match/components/Match/MatchErrorBoundary.tsx","/build/src/modules/match/components/Match/MatchStub.tsx","/build/src/modules/match/async/MarketsTabConfigsCtx.tsx","/build/src/modules/match/async/index.tsx","/build/src/modules/match-list/components/OverviewRow/FixtureData/fixtureDataContainer.scss","/build/src/components/NavButton/NavButton.tsx","/build/src/components/BetCount/BetCount.tsx","/build/src/components/BetStatus/BetStatus.tsx","/build/src/components/Carousel/index.ts","/build/src/components/CategorizerHeadingRow/CategorizerHeadingRow.tsx","/build/src/components/CategorizerHeadingRowGroup/CategorizerHeadingRowGroup.tsx","/build/src/components/Collapse/Collapse.tsx","/build/src/components/Collapse/useCollapse.ts","/build/src/components/Currency/Currency.tsx","/build/src/components/ErrorBoundary/ErrorBoundary.tsx","/build/src/assets/svg/favorite-border.svg","/build/src/assets/svg/favorite-filled.svg","/build/src/components/FavoriteIcon/FavoriteIcon.tsx","/build/src/components/FixedOverlay/FixedOverlay.tsx","/build/src/components/FlagIcon/FlagIcon.tsx","/build/src/components/FragmentWithProps/FragmentWithProps.tsx","/build/src/components/Helper/index.ts","/build/src/components/LessMoreContainer/useLessMoreContainer.ts","/build/src/components/LessMoreContainer/LessMoreContainer.tsx","/build/src/components/ListHelmet.tsx","/build/src/assets/svg/mob-live.svg","/build/src/components/LiveIcon/LiveIcon.tsx","/build/src/components/Loader/ProgressLine.tsx","/build/src/components/Loader/useLoader.ts","/build/src/components/Loader/Loader.tsx","/build/src/components/LogoTitle/LogoTitle.tsx","/build/src/assets/svg/plus-circle.svg","/build/src/components/MarketsCount/MarketsCount.tsx","/build/src/components/MarketTitle/MarketTitle.tsx","/build/src/components/MatchDateTime/MatchDateTime.tsx","/build/src/components/MatchRow/MiddlePartMatchRow.tsx","/build/src/components/MultiCarousel/index.ts","/build/src/components/NoResults/messages.js","/build/src/components/NoResults/NoResults.tsx","/build/src/components/OddStatistic/OddStatistic.tsx","/build/src/components/Odd/useOdd.ts","/build/src/components/Odd/Odd.tsx","/build/src/components/Odd/OddStub.tsx","/build/src/components/OrganizationIcon/OrganizationIcon.tsx","/build/src/components/PenaltyCard/PenaltyCard.tsx","/build/src/components/Portal/Portal.tsx","/build/src/components/StreamLink/StreamLink.tsx","/build/src/components/PromoFooter/PromoFooter.tsx","/build/src/components/PromoHeader/messages.js","/build/src/components/PromoHeader/PromoHeader.tsx","/build/src/components/PromoItem/PromoItem.tsx","/build/src/components/PromoMatch/index.ts","/build/src/components/ScrollToTop/useScrollToTop.ts","/build/src/components/ScrollToTop/ScrollToTop.tsx","/build/src/components/SettingsDropdown/useSettingsDropdown.ts","/build/src/components/SettingsDropdown/SettingsDropdown.tsx","/build/src/components/Spinner/Spinner.tsx","/build/src/components/SportEventSubscription/SportEventSubscription.ts","/build/src/components/SportEventInViewSubscription/SportEventInViewSubscription.tsx","/build/src/components/SportEventSeoMicromarking/SportEventSeoMicromarking.ts","/build/src/components/SportFilterHeading/SportFilterHeading.tsx","/build/src/components/Tabs/Tabs.tsx","/build/src/components/TeamsTitle/TeamsTitle.tsx","/build/src/components/ToggleFavoriteButton/messages.js","/build/src/components/ToggleFavoriteButton/ToggleFavoriteButton.tsx","/build/src/components/Toggler/Toggler.tsx","/build/src/components/TopBannerCompetitorInfo/TopBannerCompetitorInfo.tsx","/build/src/components/TopBannerMatchInfo/TopBannerMatchInfo.tsx","/build/src/components/TournamentInfo/index.ts","/build/src/components/TournamentName/TournamentName.tsx","/build/src/components/VS/VS.tsx","/build/src/components/Widget/Widget.tsx","/build/src/components/PenaltyCard/penaltyCard.scss","/build/src/services/EntityIdResolver.ts","/build/src/ui-lib/TeamLogo/teamLogo.scss","/build/src/components/PromoMatchBody/promoMatchBody.scss","/build/src/components/LessMoreContainer/lessMoreContainer.scss","/build/src/modules/promo/components/TopMatchList/SportsList/sportsList.scss","/build/src/components/MarketsCount/marketsCount.scss","/build/src/modules/favorite/components/FavoriteCount/useFavoriteCount.ts","/build/src/modules/favorite/components/FavoriteCount/FavoriteCount.tsx","/build/src/modules/favorite/components/FavoriteCountAll/gqlGetSportEventIdsByFilters.js","/build/src/modules/favorite/components/FavoriteCountAll/useFavoriteCountAll.ts","/build/src/modules/favorite/components/FavoriteCountAll/FavoriteCountAll.tsx","/build/src/modules/favorite/components/ToggleFavoriteButtonContainer/ToggleFavoriteButtonContainer.ts","/build/src/modules/favorite/epics.ts","/build/src/modules/favorite/reducer.ts","/build/src/modules/favorite/index.ts","/build/src/modules/match-list/components/PrematchList/prematchList.scss","/build/src/components/LiveIcon/LiveIcon.scss","/build/src/components/FavoriteIcon/favoriteIcon.scss","/build/src/modules/promo/components/TopMatchList/MobileTopMatchItem/mobileTopMatchItem.scss","/build/src/components/FlagIcon/flagIcon.scss","/build/src/services/createStore.ts","/build/src/messages.js","/build/src/styles/fonts.ts","/build/src/styles/palette.ts","/build/src/styles/pinnedStreamPosition.ts","/build/src/styles/index.ts","/build/src/modules/promo/components/TopMatchTabs/topMatchTabs.scss","/build/src/modules/match-list/components/SportEventRow/MarketsValue/MarketValue.scss","/build/src/components/Toggler/Toggler.scss","/build/src/modules/ui/components/SettingsMenu/settingsMenu.scss","/build/src/modules/tournament/constants.ts","/build/src/components/ScrollToTop/ScrollToTop.scss","/build/src/modules/match-list/components/FavoriteList/favoriteList.scss","/build/src/components/Portal/portal.scss","/build/src/modules/match-list/components/OverviewRow/FixtureData/FixtureDataSports/FixtureDataFootball/fixtureDataFootball.scss","/build/src/components/CheckBox/CheckBox.tsx","/build/src/components/GameLogo/useGameLogo.ts","/build/src/components/GameLogo/GameLogo.tsx","/build/src/components/PromoFooter/promoFooter.scss","/build/src/services/user-device.ts","/build/src/views/HeaderMobile/headerMobile.scss","/build/src/components/DebugInfo/useDebugInfo.ts","/build/src/components/DebugInfo/DebugInfo.tsx","/build/src/services/analytics/constants.ts","/build/src/services/analytics/GoogleAnalytics.ts","/build/src/services/analytics/AnalyticAttrsCtx.ts","/build/src/services/analytics/hooks.ts","/build/src/services/analytics/index.ts","/build/src/modules/promo/components/TopMatchList/topMatchList.scss","/build/src/modules/match-list/components/SportEventRow/StreamStub/streamStub.scss","/build/src/modules/match/async/MarketsTabConfigsContext.ts","/build/src/modules/promo/components/BannersCarousel/bannersCarousel.scss","/build/src/views/top-menu/topMenu.scss","/build/src/views/BannersCarousel/bannerCarousels.scss","/build/src/modules/match-list/components/SportEventRow/Score/Score.scss","/build/src/ui-lib/Input/input.scss","/build/src/modules/promo/components/Banners/useBanners.ts","/build/src/modules/promo/components/TopMatchList/MobileHeader/mobileHeader.scss","/build/src/modules/ui/components/CollapsibleSettingsRow/collapsibleSettingsRow.scss","/build/src/modules/match-list/components/SportEventRow/Markets/MarketTotal.scss","/build/src/modules/filters/components/Categorizer/CategorizerStub/categorizerStub.scss","/build/src/components/MatchDateTime/matchDateTime.scss","/build/src/ui-lib/SegmentControl/segmentControl.scss","/build/src/components/SmartLink/SmartLink.tsx","/build/src/components/TeamsTitle/teamsTitle.scss","/build/src/modules/betslip/async/messages-sync.js","/build/src/modules/betslip/async/BetslipStub.tsx","/build/src/modules/betslip/async/index.tsx","/build/src/views/top-menu/TopMenu.tsx","/build/src/modules/match-list/components/CustomVisibilitySensor/CustomVisibilitySensor.tsx","/build/src/modules/match-list/components/OverviewRow/FixtureData/FixtureData.tsx","/build/src/modules/match-list/components/OverviewRow/FixtureData/FixtureDataSports/FixtureDataCS/useFixtureDataCS.ts","/build/src/modules/match-list/components/OverviewRow/FixtureData/FixtureDataSports/FixtureDataCS/FixtureDataCS.tsx","/build/src/modules/match-list/components/OverviewRow/FixtureData/FixtureDataSports/FixtureDataDota/useFixtureDataDota.ts","/build/src/modules/match-list/components/OverviewRow/FixtureData/FixtureDataSports/FixtureDataDota/FixtureDataDota.tsx","/build/src/modules/match-list/components/OverviewRow/FixtureData/FixtureDataSports/FixtureDataFootball/useFixtureDataFootball.ts","/build/src/assets/svg/var-icon.svg","/build/src/modules/match-list/components/OverviewRow/FixtureData/FixtureDataSports/FixtureDataFootball/FixtureDataFootball.tsx","/build/src/modules/match-list/components/OverviewRow/FixtureData/FixtureDataSports/FixtureDataIceHockey/useFixtureIceHockey.ts","/build/src/modules/match-list/components/OverviewRow/FixtureData/FixtureDataSports/FixtureDataIceHockey/FixtureDataIceHockey.tsx","/build/src/modules/match-list/components/OverviewRow/FixtureData/FixtureDataSports/FixtureDataTennis/useFixtureDataTennis.ts","/build/src/modules/match-list/components/OverviewRow/FixtureData/FixtureDataSports/FixtureDataTennis/FixtureDataTennis.tsx","/build/src/modules/match-list/components/OverviewRow/FixtureData/useFixtureData.ts","/build/src/assets/svg/stream.svg","/build/src/modules/match-list/components/OverviewRow/FixtureData/FixtureDataContainer.tsx","/build/src/modules/match-list/components/OverviewRow/TeamsTitle/useTeamsTitle.ts","/build/src/modules/match-list/components/OverviewRow/TeamsTitle/TeamsTitle.tsx","/build/src/modules/match-list/components/OverviewRow/Market/useMarket.ts","/build/src/modules/match-list/components/OverviewRow/Market/Market.tsx","/build/src/modules/match-list/components/OverviewRow/TopMarkets/useTopMarkets.ts","/build/src/modules/match-list/components/OverviewRow/TopMarkets/TopMarkets.tsx","/build/src/modules/match-list/components/OverviewRow/TournamentHeader/useTournamentHeader.ts","/build/src/modules/match-list/components/OverviewRow/TournamentHeader/TournamentHeader.tsx","/build/src/modules/match-list/components/OverviewRow/useOverviewRow.ts","/build/src/modules/match-list/components/OverviewRow/OverviewRow.tsx","/build/src/modules/match-list/components/SportEventRow/Markets/MarketDefault.tsx","/build/src/modules/match-list/components/SportEventRow/MarketsValue/MarketValue.tsx","/build/src/modules/match-list/components/SportEventRow/MarketHcpRow/MarketHcpRow.tsx","/build/src/modules/match-list/components/SportEventRow/Markets/MarketHcp.tsx","/build/src/modules/match-list/components/SportEventRow/MarketsValue/utils.ts","/build/src/modules/match-list/utils.ts","/build/src/modules/match-list/components/SportEventRow/MarketTotalRow/useMarketTotal.ts","/build/src/modules/match-list/components/SportEventRow/MarketTotalRow/MarketTotalRow.tsx","/build/src/modules/match-list/components/SportEventRow/Markets/MarketTotal.tsx","/build/src/modules/match-list/getTopMarkets.tsx","/build/src/modules/match-list/selectors.ts","/build/src/modules/match-list/components/SportEventRow/Markets/TopMarketsContainer.tsx","/build/src/modules/match-list/components/SportEventRow/Score/useScore.ts","/build/src/modules/match-list/components/SportEventRow/Score/Score.tsx","/build/src/modules/match-list/components/SportEventRow/StreamMarketCount/StreamMarketCount.tsx","/build/src/modules/match-list/components/SportEventRow/SportEventRow.tsx","/build/src/modules/match-list/components/SportEventRow/StreamStub/StreamStub.tsx","/build/src/modules/match-list/components/SportEventRow/index.tsx","/build/src/modules/match-list/components/Results/ResultsMatchList.tsx","/build/src/modules/match-list/components/Upcoming/UpcomingMatchList.tsx","/build/src/modules/match-list/messages.js","/build/src/modules/match-list/components/FavoriteList/useFavoriteList.ts","/build/src/modules/match-list/components/FavoriteList/FavoriteList.tsx","/build/src/modules/match-list/components/PaginationWrapper.tsx","/build/src/modules/match-list/components/Results/Results.tsx","/build/src/modules/match-list/components/Upcoming/Upcoming.tsx","/build/src/modules/match-list/components/LiveList/LiveList.tsx","/build/src/modules/match-list/components/PrematchList/PrematchList.tsx","/build/src/modules/match-list/components/useMatchListContainer.ts","/build/src/modules/match-list/components/MatchListContainer.tsx","/build/src/modules/match-list/components/MatchListNavigation/useMatchListNavigation.ts","/build/src/modules/match-list/components/MatchListNavigation/MatchListNavigation.tsx","/build/src/modules/match-list/epics.ts","/build/src/modules/match-list/middleware.ts","/build/src/modules/match-list/index.ts","/build/src/modules/match-list/reducer.ts","/build/src/assets/competitor-bg/constants.ts","/build/src/assets/sport-bg/constants.ts","/build/src/assets/tournament-bg/constants.ts","/build/src/components/SportEventBg/useSportEventBg.ts","/build/src/assets/competitor-bg/index.ts","/build/src/assets/tournament-bg/index.ts","/build/src/assets/sport-bg/index.ts","/build/src/components/SportEventBg/SportEventBg.tsx","/build/src/RootResponse/rootResponse.scss","/build/src/views/HeaderMobile/SettingsButtonMobile/settingsButtonMobile.scss","/build/src/modules/match-list/components/MatchListNavigation/matchListNavigation.scss","/build/src/modules/bets-history/async.tsx","/build/src/modules/promo/components/TopMatchList/Header/header.scss","/build/src/modules/promo/components/Banner/banners.scss","/build/src/styles/flags.css","/build/src/components/LiveLabel/liveLabel.scss","/build/src/assets/svg/chevron.svg","/build/src/modules/match-list/components/OverviewRow/TournamentHeader/tournamentHeader.scss","/build/src/components/PromoMatchDynamicScoreList/usePromoMatchDynamicScoreList.ts","/build/src/components/PromoMatchDynamicScoreList/PromoMatchDynamicScoreList.tsx","/build/src/modules/promo/constants.ts","/build/src/modules/promo/actions.ts","/build/src/modules/promo/components/BannerImage/BannerImage.tsx","/build/src/modules/promo/components/CMSBanner/useCMSBanner.ts","/build/src/modules/promo/components/CMSBanner/CMSBanner.tsx","/build/src/modules/promo/components/Banner/Banner.tsx","/build/src/modules/promo/components/Banners/Banners.tsx","/build/src/modules/promo/components/BannersCarousel/useBannersCarousel.ts","/build/src/modules/promo/components/BannersCarousel/BannersCarousel.tsx","/build/src/modules/promo/components/ColorfulBanner/useColorfulBanner.ts","/build/src/modules/promo/components/ColorfulBanner/ColorfulBanner.tsx","/build/src/modules/promo/components/ColorfulBanners/useColorfulBanners.ts","/build/src/modules/promo/components/ColorfulBanners/ColorfulBanners.tsx","/build/src/modules/promo/components/EventsOfTheDay/useEventsOfTheDay.ts","/build/src/modules/promo/components/EventsOfTheDay/EventsOfTheDay.tsx","/build/src/modules/promo/utils.ts","/build/src/modules/promo/selectors.ts","/build/src/modules/promo/components/FeaturedTournamentPage/useFeaturedTournamentPage.ts","/build/src/modules/promo/components/FeaturedTournamentPage/FeaturedTournamentPage.tsx","/build/src/modules/promo/components/FeaturedTournaments/FeaturedTournamentsLogo/FeaturedTournamentsLogo.tsx","/build/src/modules/promo/components/FeaturedTournaments/FeaturedTournamentsRow/FeaturedTournamentsRow.tsx","/build/src/modules/promo/hooks/useFeaturedConfigs.ts","/build/src/modules/promo/components/FeaturedTournaments/useFeaturedTournaments.ts","/build/src/modules/promo/components/FeaturedTournaments/FeaturedTournaments.tsx","/build/src/modules/promo/messages.js","/build/src/modules/promo/components/TopMatchTabs/TopMatchTabs.tsx","/build/src/modules/promo/components/TopMatch/useTopMatch.ts","/build/src/modules/promo/components/TopMatch/TopMatch.tsx","/build/src/modules/promo/components/TopMatchList/MobileHeader/MobileHeader.tsx","/build/src/modules/promo/components/TopMatchList/MobileTopMatchItem/useMobileTopMatchItem.ts","/build/src/modules/promo/components/TopMatchList/MobileTopMatchItem/MobileTopMatchItem.tsx","/build/src/modules/promo/components/TopMatchList/MobileTopMatch/useMobileTopMatch.ts","/build/src/modules/promo/components/TopMatchList/MobileTopMatch/MobileTopMatch.tsx","/build/src/modules/promo/components/TopMatchList/SportsList/SportsList.tsx","/build/src/modules/promo/components/TopMatchList/MobileTopMatchList/useMobileTopMatchList.ts","/build/src/modules/promo/components/TopMatchList/MobileTopMatchList/MobileTopMatchList.tsx","/build/src/assets/svg/fire.svg","/build/src/modules/promo/components/TopMatchList/Header/Header.tsx","/build/src/modules/promo/components/TopMatchList/DateTime/DateTime.tsx","/build/src/modules/promo/components/TopMatchList/MatchRow/useMatchRow.ts","/build/src/modules/promo/components/TopMatchList/MatchRow/MatchRow.tsx","/build/src/modules/promo/components/TopMatchList/MatchRow/StubMatchRow.tsx","/build/src/modules/promo/components/TopMatchList/SportTabs/SportTabs.tsx","/build/src/modules/promo/components/TopMatchList/TopMatch/useTopMatch.ts","/build/src/modules/promo/components/TopMatchList/TopMatch/TopMatch.tsx","/build/src/modules/promo/components/TopMatchList/TopMatchList.tsx","/build/src/modules/promo/epics.ts","/build/src/modules/promo/reducer.ts","/build/src/modules/promo/index.ts","/build/src/components/TopBannerCompetitorInfo/topBannerCompetitorInfo.scss","/build/src/services/feature-manager/constants.ts","/build/src/services/feature-manager/FeatureManager.ts","/build/src/services/feature-manager/index.ts","/build/node_modules/webpack/buildin/global.js","/build/src/modules/match-list/components/LiveList/liveList.scss","/build/src/views/LeftSidebar/leftSidebar.scss","/build/src/modules/match-list/components/OverviewRow/TopMarkets/topMarkets.scss","/build/src/views/SidebarToggler/sidebarTogglerMob.scss","/build/src/components/CompetitorLogo/competitorLogo.scss","/build/src/components/MarketTitle/MarketTitle.scss","/build/src/modules/betslip/components/Betslip/betslip.scss","/build/src/components/BackButton/backButton.scss","/build/src/modules/betslip/components/BetslipList/betslipList.scss","/build/src/scoreMetaConfig.ts","/build/src/components/GameLogo/gameLogo.scss","/build/src/components/SportFilterHeading/sportFilterHeading.scss","/build/node_modules/webpack/buildin/module.js","/build/src/components/Icon/Icon.tsx","/build/src/modules/promo/components/TopMatchList/SportTabs/sportTabs.scss","/build/src/root/cms-mock/constants.ts","/build/src/modules/promo/components/FeaturedTournaments/FeaturedTournamentsLogo/featuredTournamentsLogo.scss","/build/src/async-modules/index.ts","/build/src/modules/ui/components/ToggleHistory/toggleHistory.scss","/build/src/assets/svg/setting-betslip.svg","/build/src/components/PromoMatchOdds/PromoMatchOdds.tsx","/build/src/modules/ui/constants.ts","/build/src/modules/ui/actions.ts","/build/src/modules/ui/components/ListNav/ListNav.tsx","/build/src/modules/ui/selectors.ts","/build/src/modules/ui/components/OddFormat/OddFormat.tsx","/build/src/modules/ui/components/OddFormatSelect/constants.ts","/build/src/modules/ui/components/OddFormatSelect/useOddFormatSelect.ts","/build/src/assets/svg/exchange-arrows.svg","/build/src/modules/ui/components/OddFormatSelect/OddFormatSelect.tsx","/build/src/modules/ui/components/CollapsibleSettingsRow/CollapsibleSettingsRow.tsx","/build/src/modules/ui/components/OddFormatSelect/OddFormatSelectMobile.tsx","/build/src/modules/ui/components/OddHistory/Chart/utils.ts","/build/src/modules/ui/components/OddHistory/Chart/Chart.tsx","/build/src/modules/ui/components/OddHistory/selectors.ts","/build/src/modules/ui/components/OddHistory/useOddHistory.ts","/build/src/modules/ui/components/OddHistory/OddHistory.tsx","/build/src/modules/ui/components/OddsStatisticSelect/useOddsStatisticSelect.ts","/build/src/assets/svg/percentage.svg","/build/src/modules/ui/components/OddsStatisticSelect/OddsStatisticSelect.tsx","/build/src/modules/ui/components/OddsStatisticSelect/OddsStatisticSelectMobile.tsx","/build/src/modules/ui/components/SettingsToggler/SettingsToggler.tsx","/build/src/assets/svg/change-history.svg","/build/src/modules/ui/components/ToggleHistory/ToggleHistory.tsx","/build/src/modules/ui/components/SettingsMenu/useSettingsMenu.ts","/build/src/modules/ui/components/SettingsMenu/SettingsMenu.tsx","/build/src/modules/ui/epics.ts","/build/src/modules/ui/reducer.ts","/build/src/modules/ui/index.ts","/build/src/components/TopBannerMatchInfo/topBannerMatchInfo.scss","/build/src/modules/promo/components/TopMatchList/TopMatch/topMatch.scss","/build/src/hoc/withLoadable.ts","/build/src/modules/tournament/components/index.ts","/build/src/modules/tournament/index.ts","/build/src/views/constants.tsx","/build/src/views/FavoriteList/FavoriteList.tsx","/build/src/views/Live/useLive.ts","/build/src/views/Live/Live.tsx","/build/src/views/Outright.tsx","/build/src/views/Outrights/useOutrights.ts","/build/src/views/Outrights/Outrights.tsx","/build/src/views/Prematch/usePrematch.ts","/build/src/views/Prematch/Prematch.tsx","/build/src/views/Results/useResults.ts","/build/src/views/Results/Results.tsx","/build/src/views/Upcoming/useUpcoming.ts","/build/src/views/Upcoming/Upcoming.tsx","/build/src/views/BannersCarousel/selectors.ts","/build/src/views/BannersCarousel/useBannersCarousel.ts","/build/src/views/BannersCarousel/BannersCarousel.tsx","/build/src/views/Sidebar/Sidebar.tsx","/build/src/views/Sidebar/SidebarContainer.ts","/build/src/views/SidebarToggler/useSidebarToggler.ts","/build/src/views/SidebarToggler/SidebarToggler.tsx","/build/src/views/SidebarToggler/useSidebarTogglerMob.ts","/build/src/views/SidebarToggler/SidebarTogglerMob.tsx","/build/src/views/Footer/Footer.tsx","/build/src/views/BetslipSidebarWrapper/useBetslipSidebarWrapper.ts","/build/src/views/BetslipSidebarWrapper/BetslipSidebarWrapper.tsx","/build/src/views/SettingsMobileOverlay/SettingsMobileOverlay.tsx","/build/src/views/HeaderMobile/SettingsButtonMobile/useSettingsButtonMobile.ts","/build/src/views/HeaderMobile/SettingsButtonMobile/SettingsButtonMobile.tsx","/build/src/views/HeaderMobile/HeaderMobile.tsx","/build/src/views/LeftSidebar/useLeftSidebar.ts","/build/src/views/LeftSidebar/LeftSidebar.tsx","/build/src/views/Navigation/Navigation.tsx","/build/src/views/OddsStatisticFetcher/useOddsStatisticFetcher.ts","/build/src/views/OddsStatisticFetcher/OddsStatisticFetcher.tsx","/build/src/root/cms-mock/async.ts","/build/src/root/App/utils.ts","/build/src/root/App/useApp.ts","/build/src/root/App/App.tsx","/build/src/services/EntityIdRouteResolver.tsx","/build/src/services/createRoutes.tsx","/build/src/RootResponse/RootResponse.tsx","/build/src/root/Platform.ts","/build/src/root/Root.tsx","/build/src/root/BettingAPI.tsx","/build/src/root/getBettingAPI.ts","/build/src/modules/match-list/components/SportEventRow/sportEventRow.scss","/build/src/ui-lib/TeamsTitleColumn/teamsTitleColumn.scss","/build/src/components/DebugInfo/debugInfo.scss","/build/src/modules/ui/components/OddsStatisticSelect/oddsStatisticSelectMobile.scss","/build/src/modules/ui/components/OddsStatisticSelect/oddsStatisticSelect.scss","/build/src/components/MatchTime/MatchTime.tsx","/build/node_modules/webpack/buildin/harmony-module.js","/build/src/modules/stream/async.ts","/build/src/components/Icon/icon.scss","/build/src/components/NoResults/NoResults.scss","/build/src/views/Sidebar/sidebar.scss","/build/src/moduleLocator.ts","/build/src/components/SportEventInViewSubscription/sportEventInViewSubscription.scss","/build/src/components/EventInfo/EventInfo.tsx","/build/src/modules/match-list/components/SportEventRow/Markets/MarketDefault.scss","/build/src/ui-lib/SegmentTab/segmentTab.scss","/build/src/components/SportEventBg/sportEventBg.scss","/build/src/hooks/useWithLocation.ts","/build/src/hooks/useAppliedFilters.ts","/build/src/hooks/useCheckOnRoute.ts","/build/src/hooks/useClientNode.ts","/build/src/hooks/usePreviousRef.ts","/build/src/hooks/useCompare.ts","/build/src/hooks/useCssClassToggleOnDocument.ts","/build/src/hooks/useEventHandler.ts","/build/src/hooks/useForceUpdate.ts","/build/src/hooks/useIsMobile.ts","/build/src/hooks/useIsMountedRef.ts","/build/src/hooks/useLastBetSum/gqlGetBets.js","/build/src/hooks/useLastBetSum/useLastBetSum.ts","/build/src/hooks/usePureSelector.ts","/build/src/hooks/useMemoSelector.ts","/build/src/hooks/useMatchTime.ts","/build/src/hooks/useToggler.ts","/build/src/hooks/useMore.ts","/build/src/hooks/useMouseEventsHandler.ts","/build/src/hooks/useOnClickOutside.ts","/build/src/hooks/usePlatform.ts","/build/src/hooks/usePollingMinStake.ts","/build/src/hooks/usePrevious.ts","/build/src/hooks/usePromoItemContainer.ts","/build/src/hooks/useSportType.ts","/build/src/hooks/useUnmount.ts","/build/src/hooks/useWidgetSettings.ts","/build/src/hooks/index.ts","/build/src/modules/match-list/components/SportEventRow/Markets/MarketHcp.scss","/build/src/components/ToggleFavoriteButton/toggleFavoriteButton.scss","/build/src/modules/match-list/components/SportEventRow/MarketHcpRow/MarketHcpRow.scss","/build/src/components/Loader/ProgressLine.scss","/build/src/components/MatchRow/middlePartMatchRow.scss","/build/src/assets/svg/arrow-down-circle.svg","/build/src/modules/ui/components/OddHistory/oddHistory.scss","/build/src/components/StreamLink/streamLink.scss","/build/src/components/LogoTitle/LogoTitle.scss","/build/src/modules/match-list/components/Upcoming/upcoming.scss","/build/src/components/PromoMatchBody/PromoMatchBody.tsx","/build/src/modules/ui/components/OddFormatSelect/oddFormatSelectMobile.scss","/build/src/components/NavButton/NavButton.scss","/build/src/components/Fractional/fractional.scss","/build/src/ui-lib/TeamsTitleRow/teamsTitleRow.scss","/build/src/components/TournamentName/tournamentName.scss","/build/src/root/bettingConfigCtx.ts","/build/src/components/Odd/odd.scss","/build/src/assets/svg/play-arrow.svg","/build/src/services/createRootReducer.ts","/build/src/components/BetStatus/betStatus.scss","/build/src/services/configureStore.ts"],"names":["i","chunkIds","length","deferredModules","j","deferredModule","chunkId","existingLinkTags","existingStyleTags","then","type","target","script","enumerable","get","getter","value","key","bind","module","Object","prototype","hasOwnProperty","call","object","property","console","error","err","jsonpArray","webpackJsonpCallback","exports","getBettingOptions","stringify","getBanners","bannerIds","location","window","fetch","locale","Promise","resolve","idsQuery","ids","origin","convert","from","to","method","headers","r","utils","DEFAULT_SPACING","topOffset","bottomOffset","symbol","MARK_REACHABLE_ENTITIES","TRAVERSE_STATE_KEYS","makeAction","markReachableEntities","entityName","getIdsFromBetslipOddId","getIdsFromBetOddId","isOneOfPages","MATCH_LIST_CATEGORY_RECORD_NAME","includes","Routes","TOURNAMENT","tournamentPages","matchListPages","matchLocators","betslip","state","keySeq","map","id","toArray","match","entitiesState","slugOrId","matchId","filter","Boolean","matchList","exact","toSeq","valueSeq","reduce","acc","v","isRecord","isMatchListCategory","concat","matchIds","stream","favorite","banners","zone","config","BannerType","betting_sport_event","maybeCategory","getDescriptiveName","DEFAULT_IDS_STATE","removeFirst","source","items","removableItems","Set","isRemovable","has","delete","entityNames","cache","forEach","this","useState","add","update","cached","remove","replace","prevItems","slice","initialState","entity","setHookState","current","setState","stateOrUpdater","prevState","result","updater","next","splitMarketPath","getIdsFromOddId","renormalize","selectors","selectOddsStatistic","selectOddsStatisticMarkets","locateSweepableMatches","cachedMatchIds","sweepableMatchIds","locateReachableMatchIds","renormalized","EntityNames","Matches","renormalizedToIds","transformRenormalizedToIds","entities","oddsStatistic","oddId","matches","oddsStatisticMarkets","marketId","entitiesCollection","slug","slugId","keys","reachableMatchIdsFromState","locateReachableMatches","stateTree","reachableMatchIds","bets","bet","odds","betHistoryLocator","deleteEntities","GC_SCHEDULE_TIMEOUT","minute","makeMiddleware","timerId","dispatch","getState","mark","clearTimeout","localStorage","getItem","__app","dispatchGC","scheduleDeallocation","setTimeout","action","sweepableMatchEntities","useReservedState","reserve","actions","middleware","loadFreebetModule","AsyncBetslipFreebet","resolveComponent","components","BetslipFreebet","AsyncFreebetPanel","FreebetPanel","AsyncFreebetSelect","FreebetSelect","AsyncFreeBetCategorizer","FreeBetMobileTitle","FreeBetCategorizer","AsyncRequestFreebet","RequestFreebet","makeSelectMatchViewScores","selectMatch","makeMatchSelector","selectMobileMatchStream","selectMatchMeta","selectSportBySportEvent","selectSportByTournament","getSportTypeBySport","selectMatchViewScores","sportId","scoresOrder","makeSelectFilteredScores","isOverview","scores","meta","currentMatchPart","selectFilteredScores","selectOverviewScores","makeSelectMetaValueByName","metaName","find","m","name","selectBetradarLMTCoverageLevel","BetradarLMTCoverageLevel","selectBetradarId","BetradarId","lmt","betradarId","selectMatchTime","Time","selectTimerRunning","TimerRunning","selectIsSportEventViewable","propsToPick","streamUrl","hasValidStream","hasValidBetradarId","makeSelectRouteBySportEvent","selectSport","sport","selectRouteBySportEvent","selectRouteByTournament","adaptBettingOptions","bettingOptions","currency","isAuthorized","rootElement","selectedSportIds","sportIds","token","tournamentIds","features","static_endpoint","public_sv","bettingPath","pagePath","gqlEndpoint","staticEndpoint","url","participantFeatures","EventType","Destination","SidebarView","MatchListType","BettingWidgets","LocalRouts","SportEventMetaKey","MetaSide","SetState","CategorizerTournamentMetaKey","CLASS_NAME_OF_DISABLED_PAGE","CLASS_NAME_OF_DISABLED_SCROLL","CLASS_NAME_OF_BETTING_COMPONENTS","CSS_ID_OF_SETTINGS_MENU","CLASS_NAME_UPDATE_COLORS","DEFAULT_WIDGET_OPTIONS","BETSLIP_SIDEBAR","CATEGORIZER","MOBILE_HEADER","containerElementId","isSettingsEnabled","NAVIGATION","isShowExtraNavigation","SETTINGS","STREAM","scrollToFirstStream","pinMinimizedStreamOutOfView","disableTheaterMode","disableMatchTracker","ignoreOffsetInTheaterMode","ROOT_STYLE_ID_ELEMENT","DEFAULT_BREAKPOINTS","superExtraSmall","extraSmall","small","medium","large","major","extraMajor","great","extraLarge","marketGroupDivider","stateShape","undefined","filters","viewport","ui","pagination","freebet","favoriteMarkets","promo","AppStateRecord","MATCHES_LIMIT_PER_PAGE","MOBILE_MATCHES_LIMIT_PER_PAGE","NEWS_MATCHES_LIMIT_PER_PAGE","OUTRIGHTS_LIMIT_PER_PAGE","POLLING_EDGE_PAGE","ExtendedRouts","PublicRoutes","UPCOMING_LIST","LIVE_LIST","PREMATCH","OUTRIGHTS_LIST","RESULTS_LIST","FAVORITE_UPCOMING","FAVORITE_OUTRIGHTS","FAVORITE_RESULTS","CLASSIC","ESPORT","SlugPublicRoutes","MATCH","OUTRIGHT","RESULT_MATCH","favoritePages","upcoming","outright","BASE_CURRENCY","BET_STEPS","10","50","100","500","1000","5000","10000","50000","100000","Infinity","DEFAULT_MAX_STAKE","BETTING_OPTIONS_KEY","DEBUG_INFO_LOCALSTORAGE_KEY","ANALYTIC_LOCALSTORAGE_KEY","ENABLE_PLACE_BET_LOCALSTORAGE_KEY","DISABLE_PARTICIPANT_FEATURES_LOCALSTORAGE_KEY","VIEWABLE_SPORT_LIST","FOOTBALL","BASKETBALL","ICE_HOCKEY","TENNIS","AMERICAN_FOOTBALL","HANDBALL","VOLLEYBALL","BEACH_VOLLEYBALL","TABLE_TENNIS","BADMINTON","RUGBY","RUGBY_LEAGUE","BASEBALL","CRICKET","DARTS","FUTSAL","SNOOKER","SELECTOR_STUB","_state","_props","DEFAULT_STREAM_URL","SKIP_MATCH_LIST_INITIAL_REQUEST","pages","filterKey","matchListRoutes","getExtraMatchListRoutes","routs","makeExtraMatchListRoutes","parentRoute","route","removeLastSlash","TOP_MARKETS_TYPE","esportIds","classicIds","AVAILABLE_ROUTES_WITH_PARENT_ROUTE","CMS_LINKS","TOP_MARKETS_TYPE_MAPPING","ESPORTS_DOTA_2","MULTIPLE","ESPORTS_FIFA","ESPORTS_BASKETBALL","ESPORTS_ICE_HOCKEY","ESPORTS_NBA_2K18","SINGLE","ESPORTS_LEAGUE_OF_LEGENDS","ESPORTS_HEROES_OF_THE_STORM","ESPORTS_STREET_FIGHTER_5","ESPORTS_ARTIFACT","ESPORTS_HEARTHSTONE","ESPORTS_COUNTER_STRIKE","ESPORTS_TENNIS","BOXING","MMA","Product","ACTIVE_MARKET_STATUSES","MarketStatus","ACTIVE","SUSPENDED","LIVE_SPORTEVENT_STATUSES","SportEventStatus","LIVE","betTypesMessage","OddStatus","WIN","HALF_WIN","LOSS","HALF_LOSS","REFUNDED","BetType","EXPRESS","SYSTEM","TIME_UNIT_IN_MILLISECONDS","hour","day","Platform","BettingSettingsKeys","TITLES_BY_SPECIFIER","top","handicap","marketHandicap","total","marketTotal","PLATFORM_BODY_ATTR","ODD_FORMAT_BODY_ATTR","ROOT_CSS_SCORE","DARK_THEME","CompareStatus","MarketTag","DEFAULT_BETTING_SETTINGS","ODD_FORMAT","OddFormat","Decimal","CALLBACKS","IS_ENABLE_ANALYTICS","THEMES","MARKETS_ACTIVE_STATUSES","ODD_WIN_STATUSES","ODD_LOSS_STATUSES","countryReg","RegExp","BetslipAttrManager","FILTER_LOCATION_SEARCH","RACE_SPORTS","HORSE_RACING","BET_UNSETTLED_STATUSES","BetStatus","PLACED","ARBITRAGE_ACCEPTED","ACCEPTED","UNSETTLED","BET_SETTLED_STATUSES","SETTLED","ROLLED_BACK","OUTRIGHTS_ONLY_SPORTS","ESPORTS_BATTLEGROUNDS","timings","init","bettingAPI","getBettingAPI","bettingLoader","__publishBettingAPI","ffCache","ROUTE_DIVIDER","routes","LOG_TRACKER","set","send","log","isEnable","isSubscribed","getParticipantFeaturesLabel","formattedFeaturesData","values","scenario_identifier","feature_variant","variant","formattedFeaturesString","JSON","sendAnalytics","fieldsObj","label","tracker","bettingApi","subscribeOnBettingSetting","flag","getAll","ga","getTracker","labels","l","eventLabel","join","formatPathname","pathname","every","split","formatSearch","search","searchTransform","s","Target","Origin","debug","handleUserClick","e","originInfo","getEventPath","reverse","element","dataset","analyticsOrigin","attribute","analyticsInfo","targetKey","registerUserAction","throttledUserClickHandler","trailing","dataLayer","push","event","markTarget","markOrigin","path","composedPath","indexOf","getParents","node","memo","memoResult","parentNode","document","addEventListener","cleanUp","removeEventListener","trackingManagerInstance","getTrackingManager","TrackingManager","isMetaTypeEqualScoreType","metaType","scoreType","MetaTypes","TYPE_MAP","ScoreTypes","TYPE_SET","TYPE_GAME_POINTS","TYPE_INNING","TYPE_INNING_OUTS","TYPE_INNING_POINTS","TYPE_QUARTER","TYPE_OVERTIME","TYPE_ROUND_OVERTIME","TYPE_PERIOD_OVERTIME","TYPE_QUARTER_OVERTIME","TYPE_BULLETS","TYPE_PERIOD_BULLETS","TYPE_PERIOD_REGULAR","TYPE_REGULAR","TYPE_GOLDEN_SET","TYPE_PERIOD_1ST_HALF","TYPE_PERIOD_1ST_EXTRA","TYPE_PERIOD_2ND_HALF","TYPE_PERIOD_2ND_EXTRA","TYPE_PERIOD_PENALTIES","bindTrailingArgs","fn","args","boundArgs","checkArrayLength","arr","size","checkIfNewsPage","cmsLinks","checkIsCmsLink","str","checkIsDynamicCategorizer","checkIsListReady","matchIdsWithVisibilityFlags","checkIsMatchTrackerDisabled","isMatchTrackerDisabled","checkKeyInObj","obj","getAppliedFilters","checkSkipPollerConfiguration","checkValueInObj","checkWidgetContainerProvided","widget","convertHexToRgb","hexClr","isShortHex","isLongHex","Error","hexCode","longHexCode","convertShortToLongHexCode","shortHexCode","letter","repeat","red","parseInt","substr","green","blue","TimeUnit","convertNameToRuLocale","title","convertSecondsToTimerFormat","seconds","dividers","dividerIndex","currentDivider","wholePart","Math","abs","trunc","fractionPart","zeroFill","n","createPortalNode","el","createElement","classList","extractParentRouteFromHistoryVendor","extractParentRouteFromHistory","makeRequest","variables","limit","offset","marketStatuses","matchStatuses","NOT_STARTED","isTopMarkets","marketLimit","catch","fetchOutrightsByTournamentIds","retriesLeft","retryInterval","apiClient","marketStatusesForSportEvent","sportEventTypes","SportEventType","TENNIS_HIDDEN_SCORES_TYPES_RESULT_PAGE","TYPE_TIE_BREAK","footballFilterScoreTypesMap","TYPE_TOTAL","footballOverviewScoreTypesMap","TYPE_RED_CARD","matchPartInfo","indexNumber","matchPartInfoType","scoreTypesCollection","home","away","footballFilter","getLastTwoScores","scoreTypes","iceHockeyFilter","basketballFilter","status","subScore","filteredScores","tennisFilter","scoreInfo","findBetStep","step","breakpoint","num","denum","fDecimalOdd","coef","oddFormat","component","Fractional","getByKey","RATES","EUR","CAD","HKD","ISK","PHP","DKK","HUF","CZK","AUD","RON","SEK","IDR","INR","BRL","RUB","HRK","JPY","THB","CHF","SGD","PLN","BGN","TRY","CNY","NOK","NZD","ZAR","USD","MXN","ILS","GBP","KRW","MYR","getEurToCurrencyRate","upperCurrency","toLocaleUpperCase","roundBet","roundBetByStep","roundedBet","getCurrencyInfo","CURRENCY_BET_VARIANTS","AED","BTC","mBTC","UAH","KZT","getCurrency","currencyInfo","betVariants","getBetVariants","currBetVariants","eurToCurrencyRate","MetaTypesTitleMapping","TYPE_PERIOD","textForMatchPart","isNumerableScoreTypes","customMetaTypesNumerable","checkIsNumerableMetaTypes","matchTitle","customMetaTypesNaming","titleParser","index","text","Number","toUpperCase","isTimeDisabled","currMeta","getMetaPart","sortMap","timeSort","sort","a","b","currentMetaParser","customMetaTypesTimeDisabled","customIndexNumber","partStartsFromZero","getProductName","host","ru","com","ua","unknown","format","getHelmetTitle","tournament","formatMessage","parts","date","time","tournamentName","startTime","productName","CS_MAP_NAME_MAPPING","de_dust2","short","long","de_inferno","de_overpass","de_mirage","de_nuke","de_vertigo","de_ancient","getMapNameFromMeta","getMatchesByIds","prevMinBet","getMinBet","request","response","data","minBet","getNumberValueFromPx","valueInPx","numericValue","isNaN","isValidCssPair","naming","defaultValues","ref","PALETTE","SPACING","getPaletteCssVariables","Palette","hex","validationError","cssProp","cssPropRgb","rgb","getPinnedStreamPositionCssVariables","positionProps","propsHaveMissingFields","checkAllVariablesProvided","cssPositionProps","ESPORTS_RAINBOW_SIX","SportType","getRouteBySportType","sportType","Classic","Esport","textForScoreTitle","score","isNumerable","ScoreTypesNumerable","scoreTypesTitleMapping","setMatchPartTypes","getCustomScoreTypesTitleMapping","scoreTitleText","customScoreTitle","operatorConverter","getSignedSpecifierPair","parseFloat","isLessThanZero","firstOperator","firstValue","secondValue","getSpacingCssVariables","spacing","getTimeIntervalByUnit","interval","unit","Date","now","toISOString","getVariablesForLiveSportEvent","sportEventStatuses","marketStatusesForLiveSportEvent","RESULTED","CANCELLED","DEACTIVATED","dateFrom","getYouTubeVideoIdFromUrl","splittedUrl","isFavoritePage","getHistory","isFeaturedPage","routeOrFeatureSlug","isLivePage","getDefaultVariablesFavorite","getMatchStatusesByLocation","ENDED","CLOSED","getSportEventTypesByLocation","parseDateString","parseISO","addTheaterModeClass","body","querySelector","contains","removeTheaterModeClass","isDefault","market","specifiers","some","hcp","isMobileDefault","typeId","isHCP","isTotal","vibrateDevice","pattern","getInstance","isDeviceMobile","navigator","vibrate","goBack","Icon","glyph","analytics","data-action","data-category","category","onClick","className","makeContextHoc","context","propName","Component","props","ctx","isActive","isDisabled","children","isDesktop","onBlur","onFocus","onChange","isInputFocused","onKeyDown","inputMode","currencyName","disabled","min","currOddId","hcpSpecifier","isHome","valueStr","selectOddFormat","selectOddsStatisticView","selectOddWithAvailability","selectOdd","selectStatisticPercentsByMarket","selectStatisticPercentsByMatch","selectMarket","makeSelectProps","selectPropsByBetslip","selectOddButtonView","makeSelectPropsByBetslipStub","selectProps","propsByBetslip","odd","statisticView","ownProps","show","statistic","makeSelectStatistic","OddStatisticView","PROPS_BY_BETSLIP_STUB","betType","betslipBetId","isSelected","BetslipStatus","INITIAL","ODD_STUB","competitorIds","competitorId","forwardRef","outerRef","onMouseEnter","onMouseLeave","hash","innerRef","isFlattenedView","clientHeight","mergeRefs","useOddButton","currOdd","betslipStatus","compareStatus","isEditableBetslip","constants","BETSLIP_ODD_STATUSES_TO_PLACE_BET","recipientBetslipBetId","handleDeleteBetslipOdd","deleteBetslipOdd","handleAddBetslipOdd","addBetslipOdd","handleToggleOdd","titleAttr","betslipOddId","getBetslipOddId","analytic","defaultAttrs","Unknown","priorityAttrs","SelectOdd","isWin","isLoss","CoefEl","resultTitle","won","lost","ResultEl","TitleEl","StatusEl","Equal","arrow","greater","Greater","smaller","Smaller","TopEl","BottomEl","FlattenEl","preventDefault","selectUrl","showHistory","setShowHistory","timer","OddHistory","useOddButtonWithHistory","isPageDisabled","modifiers","enabled","placement","style","arrowProps","fRef","platform","dynamicAttributes","formatTimeAndDate","dateFormat","isToday","todayText","ACTIVE_SCORE_TYPES","typeCard","sideAway","sideHome","scoreName","SideAway","SideHome","side","subValue","idx","withSubValue","Terrorist","ContrTerrorist","Radiant","Dire","DEFAULT_TOTAL","sportEventId","sportEvent","isEnded","totalScore","splice","findIndex","winner","CompetitorHomeAway","HOME","AWAY","UNKNOWN","MAX_COLUMN","analyticAttrs","tabs","logoUrl","competitorType","isServer","isPerson","CompetitorType","PERSON","isOutsource","bgImageStyle","convertedName","competitorsValid","isHomeServer","isAwayServer","awayLogo","awayName","homeLogo","homeName","ClickOnTitle","makeHocFromHook","hook","input","output","getDisplayName","extendHOC","withErrorBoundary","WrappedComponent","render","wrappedComponentName","ErrorBoundaryWrapper","Consumer","widgetOptions","getValue","loadFiltersModule","AsyncCategorizer","Categorizer","AsyncMobileFilters","MobileFilters","fallback","AsyncSportsNavigation","SportsNavigation","AsyncMobileFiltersCtxComponent","MobileFiltersCtxProvider","loadOutrightModule","AsyncOutrightsList","OutrightsList","AsyncOutright","Outright","AsyncOutrightPage","OutrightPage","AsyncOutrightsBanners","OutrightsBanners","LOCALES","dataFeed","cms","banner","reactIntl","messages","dateFns","i18nCountries","transifex","matchTracker","polyfill","DEFAULT_LOCALE","localeManager","payload","setCmsBanners","GET_BANNERS_DATA_SUCCESS","bannerStubs","imageHref","imageSrc","buttonText","buttonHref","LiveLabel","isLiveMatch","GameLogo","gameId","BettingReadyIndicatorContext","withBettingReadyIndicatorContext","checkOnRoute","initIndicator","isFaded","loadCashoutModule","AsyncCashOut","CashOut","handleRefresh","reload","hasError","getDerivedStateFromError","componentDidCatch","errorInfo","finalMessage","intl","uploadError","PageType","INNER","defaultMessage","linkHandler","isLoading","isTimeout","timeIsUp","loading","Fragment","initialProgressValue","fetchStatus","FetchStatus","LOADING","marketsTabConfigsBySport","setMarketsTabConfigsBySport","MarketsTabConfigsContext","Provider","loadMatchModule","AsyncMatch","MatchDataFetcher","AsyncSidebarMarketList","SidebarMarketList","AsyncMatchWithErrorBoundary","link","isDisable","SmartLink","activeClassName","betsSize","betCountTitle","bettingSlipBetTitle","count","betStatus","isProcessing","PROCESSING","isSuccess","SUCCESS","isInitial","isError","ERROR","withLoadable","prefix","suffix","separateRows","isCollapsed","duration","useCollapse","isAnimating","setIsAnimating","nodeRef","mount","durationRef","parentElement","setProperty","currencySymbol","sentryHub","services","withScope","scope","setTag","setExtras","captureException","countryCode","iconStyleName","wrapper","getLackSize","itemsSize","cellInRow","remainder","initSize","transitionTimingFunction","moreLink","columnTitle","useLessMoreContainer","validCellInRow","validInitSize","canCollapse","toggleIsCollapsed","item","visibleItems","extraItems","moreCount","visibleStubsSize","extraStubsSize","over","under","button","visibleStubs","extraStubs","helmetTitle","initialTitle","matchListPageTitle","pathString","transition","percent","strokeWidth","trailWidth","strokeLinecap","strokeColor","trailColor","pathStyle","strokeDasharray","strokeDashoffset","validatedStrokeWidth","validatedTrailWidth","center","viewBoxString","viewBox","preserveAspectRatio","d","stroke","fillOpacity","initialProgressValueRef","progressValue","setProgressValue","isVisibleProgressBar","setIsVisibleProgressBar","timeout","setInterval","prevValue","nextValue","clearInterval","checkEquality","prevProps","nextProps","maxDepth","isLogoHidden","linkToMatch","isLogoBeforeTeamName","CompetitorLogo","renderBody","wrapperStyles","wrapperCn","marketsCount","isHiddenCount","isPlusInCircle","topMarketsCount","diff","appliedAnalytic","GamesContainerMarket","defaultMsg","renderName","txt","isOneXTwo","toLocaleLowerCase","liveCoverage","isLive","isSmall","showGameLogo","MatchTime","marketName","homeTitle","awayTitle","noResultsMessageDefault","noResultsMessageMore","noResultsMessageSearch","noResultsMessagePage","noResultsMessageTryAgain","getFiltersFromLocation","listType","defaultSearchMessage","inputMoreMessage","noPageMessage","page","showSecond","LIST","message","linkMessage","getMessages","linkTo","renderLinkedMessage","timerIdRef","isIncreased","setIsIncreased","oldOddValue","newIsIncreased","lock","isLabel","showResult","withTitle","isShowStatistic","statisticPercent","modifyOddTitle","toggleBetslipOdd","onClickBtn","formattedValue","formatComponent","win","loss","isResultSettled","oddTitle","getOddTittle","oddValue","deactivated","$BetAdd","data-label","stubNode","logo","getPositionStyles","getBoundingClientRect","originValues","iterableValues","roundedVariables","val","transform","pageYOffset","parentRef","replaceContent","isFilled","innerHTML","appendChild","removeChild","scrollToY","yPosition","scrollTo","createPortal","isViewerOpen","watch","hide","isWatchable","favoriteButton","betting_live_of_the_day","betting_match_of_the_day","ofTheDay","PromoHeaderLabel","isEventOfTheDay","msgDesc","toLowerCase","live","isColorful","competitors","AsyncOddButton","liveLabelVisibility","isMatch","isTop","isStatusLive","header","footer","PromoMatchBody","oddIds","dateAndTime","OddButton","parse","useDidUpdate","formattedSearch","isOpen","setIsOpen","container","toggle","close","handleKeydown","keyCode","refs","handler","stub","width","height","useSubscription","batch","getDefaultVariables","isDebugEnabled","SubscribeOrigin","onScroll$","Observable","fromEvent","isDebugOn","SubscriptionRowDebugInfo","DebugInfo","isInlineBlock","isRelativePosition","getSubscriptionVariables","version","subscriptionVariables","inViewRef","isInView","setSubscribed","isScrolling","isInViewRef","scrollSub","throttleTime","merge","debounceTime","distinctUntilChanged","subscribe","scrolling","unsubscribe","MatchList","BaseSportEventSeoMicromarking","getHelmetScript","sportName","makeAbsoluteMatchUrl","matchSlug","getLocationNameByRoute","csport","esport","startDate","address","getStyleNames","changeActiveTab","activeTab","disabledTabs","extraTab","handleChooseTab","tabState","addToFavorites","removeFromFavorites","Add","Remove","ToggleFavorite","isOpened","onText","offText","styles","classes","onToggle","withSportLogo","PromoMatchDynamicScoreList","showDynamicScores","isLinkDisabled","linkToTournament","VS","replacePortalContent","widgetSettings","getElementById","display","warn","EntityType","selectSlug","makeTournamentSelector","getMatchBySlug","getTournamentBySlug","useEntityType","getEntityType","SportEvent","Tournament","entityPropsToPick","makePropsSelector","selectorTournament","selectSportEvent","slugEntity","tournamentId","entityType","selectUpcomingFavoriteCount","selectAllFavoriteCount","selectOutrightsFavoriteCount","makeCountSelector","useFavoriteCount","selectCount","appServiceLocator","changeFavoriteCount","selectFavoriteIds","useFavoriteCountAll","favoriteIds","isRequest","getFavoriteCountFromSportEvents","sportEventType","countType","sportEventIds","makeRequestWithCustomQuery","query","getFavoriteCountMatches","getFavoriteCountOutright","addMatchToFavoriteRequest","addMatchToFavoriteLocal","deleteMatchFromFavoriteRequest","deleteMatchFromFavoriteLocal","selectIsFavoriteSportEvent","handleAddFavorite","favoriteId","handleDeleteFavorite","toggleFavorite","getFavoriteEventsIds","requestLocalSport","ADD_REHYDRATE_FAVORITE_MATCHES_SUCCESS","ADD_FAVORITE_MATCH_LOCAL","ADD_FAVORITE_MATCH_SUCCESS","REMOVE_FAVORITE_MATCH_LOCAL","REMOVE_FAVORITE_MATCH_SUCCESS","MATCH_ENDED","DELETE_MATCH_ID","favoriteCountTypeMapping","selector","requestSport","actions$","ofType","decreaseFavoriteCount","store","switchMap","changeCountOnFavoriteToggle","increaseFavoriteCount","decreaseUpcomingFavoriteCountOnMatchEnd","empty","currentCount","of","delta","isApiTogglePayload","Array","isArray","firstFavoriteId","NAME","stateReconciler","blacklist","reducer","ToggleFavoriteButton","FavoriteCount","FavoriteCountAll","epics","ActionTypes","INIT","createStore","preloadedState","enhancer","currentReducer","currentState","currentListeners","postponedActions","nextListeners","isDispatching","ensureCanMutateNextListeners","listener","listeners","replaceReducer","nextReducer","postponedAction","actionToRemove","observable","outerSubscribe","observer","TypeError","observeState","noOutrightMessageDefault","tomorrowText","filterText","theaterMode","tournamentTitle","normalMode","moreOdds","upcomingShort","outrights","results","selectPlaceholder","selectedDropdownElement","draw","matchTrackerTitle","marketWinner","prizePool","defaultTournamentDescription","nextToGo","myBets","oddsFormat","byMatch","byMarket","HongKong","Indo","Malay","US","favorites","popular","daily","weekly","monthly","all","allGames","unpin","ChangeHistory","more","showSettings","featured","bettingSlip","totalOdd","on","off","statistics","specialBets","team","competitor","yes","no","topSpecifier","other","totalStake","totalWin","rollback","placeBet","unsettled","settled","cashout","deposit","EU","WW","ordinalNumber","PRIMARY_FONT_FAMILY","fontExtensions","makeFontSource","ext","PRIMARY_FONTS","weight","makeFontType","family","descriptors","setFontToCssVar","font","documentElement","DEFAULT_FONT_MAPPING_BY_SUFFIX","primary","secondary","DEFAULT_PALETTE","cPrimary","cPrimaryLight","cPrimaryDark","cSecondary","cSecondaryLight","cSecondaryDark","cBackground","cBackgroundLight","cBackgroundDark","cBackgroundInvert","cSurface","cSurfaceLight","cSurfaceDark","cSurfaceInvert","cTextPrimary","cTextPrimaryLight","cTextPrimaryDark","cTextPrimaryInvert","cTextSecondary","cTextSecondaryLight","cSuccess","cSuccessLight","cSuccessDark","cError","cErrorLight","cErrorDark","cAction","cActionHover","cActionActive","DEFAULT_PINNED_STREAM_POSITION","pPinnedStreamTop","pPinnedStreamRight","pPinnedStreamBottom","pPinnedStreamLeft","REGEX_POSITION_PROPERTY","DEFAULT_POSITION_PROPS","convertObjectToCssVariables","isAnyVariableInvalid","cssVariables","prop","isValidPositionProperty","СssSetNaming","GET_TOURNAMENT_MATCHES_REQUEST","GET_TOURNAMENT_MATCHES_SUCCESS","GET_TOURNAMENT_MATCHES_FAIL","COUNT_PER_PAGE","checked","reversed","check","handleCheckedChange","esportIconsPack","classicIconsPack","isEsport","forceUpdate","callback","svgPack","default","loadEsportIconsPack","loadClassicIconsPack","defaultIcon","checkMobile","userAgent","isMobile","instance","UserDevice","mockMobileDevice","orientation","mockDesktopDevice","isCopied","setIsCopied","onClickHandler","test","copyText","pop","Category","Action","Label","AnalyticsAttr","prevLocation","prevUrl","handleClickEvent","closest","eventCategory","eventAction","eventType","fieldsObject","AppCategory","LocationChange","prevPathName","prevSearch","currentPage","prevPage","ChangePage","useAnalyticAttrs","DEFAULT_INTERVAL","makeSelectBannerByZoneId","makeBannerZoneSettingsSelector","makeSelectMissingBannerZoneIds","getBannersData","zoneId","zoneSettings","bannerZone","missingZoneIds","useBanners","withSportEvent","intervalPair","missingZoneId","ClickOnLink","linkClassName","href","bettingSlipMobile","styleName","handleOpenClick","captureMessage","Warning","withoutPortal","shouldReturnNull","makeOddContainerFor","OddContainer","loadBetslipModule","OddButtonLoadable","betslipModule","AsyncBetslipList","BetslipList","AsyncBetslipListSubscription","BetslipListSubscription","AsyncBetslipBetCount","BetslipBetCount","AsyncQuickBetslip","QuickBetslip","AsyncRestoreBetslipFromURL","RestoreBetslipFromURL","AsyncSynchronizeBetslipState","SynchronizeBetslipState","AsyncRestrictions","Restrictions","ListNav","homeTabs","CustomVisibilitySensor","visibilityChange","visibilityInitRef","firstIcon","secondIcon","thirdIcon","subText","selectIsSmall","BASE_TOTAL_ROUNDS","info","getRounds","nowRound","totalRounds","useFixtureDataCS","withDate","bo","boName","boValue","nameMap","shotNameMap","boValueWithColon","currentRound","isTomorrow","CSText","CSSubtext","dotaText","useFixtureDataDota","isVar","footballText","footballSubtext","iceHockeySubtext","tennisText","useFixtureDataTennis","TieBreak","isStreamAvailable","useFixtureData","matchTimeToShow","fixtureDataSport","selectMatchCompetitorsValid","selectMatchMetaValueByName","Server","server","isPrematchMobileView","MARKET_STUB","priority","tags","withStub","withName","realMarket","useMarket","selectTopMarketIdsByMatchId","topMarketIds","useTopMarkets","selectPreviewTournamentIdFromMatch","prevSportEventId","prevMatchId","hasHeader","selectTournament","selectTournamentId","selectTournamentIdByPrevMatch","selectMatchId","_","selectHasHeader","prevMatch","masterId","makeViewportSelector","sportEventViewable","breakpoints","isMedium","isExtraSmall","ANALYTICS","LineSportEvent","marketCount","isResulted","renderOdds","hasVS","oddsComponents","hasMatchHeader","isDefaultName","defaultProps","specifier","getHcpSpecifier","findByKey","msg","overUnderOdd","outcome","isOverUnderOdd","getMatchesLimitPerPage","makeOddsByMarketSelector","selectOdds","marketSelector","useMarketTotal","params","MarketTotalTitle","selectedMarketId","getOverAndUnderOdds","asyncButtonOverProps","asyncButtonUnderProps","getTotalSpecifier","specifierValue","makeMarketComponent","MarketDefaultContainer","condition","MarketHcpContainer","MarketTotalContainer","getTopMarketComponentsBySport","options","withStubs","topMarketTypeForSport","selectMarkets","selectMatchIdFromProps","selectTopMarketsByMatchId","marketIds","markets","topMarkets","topMarketComponentsBySport","commonProps","renderMarkets","nextMarkets","ReactNode","excludedKeys","selectIsExtraSmall","numberOfShowed","adjustedScores","extra","defaultTotal","showed","extraNumber","isExtendable","changeIsExtendable","isFullView","changeIsFullView","isServerKnown","toggleView","prev","scoresFullLength","ScoreItem","active","streamWithTitle","isResultPage","isSportEventViewable","toggleStream","hasStreamLink","makePure","matchPropsToPick","tournamentPropsToPick","ANALYTICS_CLICK_ON_TITLE","ANALYTICS_PROMO","ANALYTICS_ODD_BTN_STREAM","getStreamSettings","isOneMarketView","getLinkToMatch","isStreamOpen","lessThanOrEqual","deleteMatchId","addMatchId","withClearPrev","renderMiddle","scoreCount","showScores","renderFooter","componentDidUpdate","isOneMarketViewProps","hasMatchLog","isNewsPage","SportEventRowComponent","HidePromo","WatchPromo","withPromoMatch","isHeaderAtTop","selectLessThanOrEqual","selectIsMatchIdWithOpenedStream","streamModule","isGreat","isExistHcpOrTotal","getIsExistHcpOrTotal","prevMarkets","prevIsExistHcpOrTotal","marketsNames","prevMarketsNames","rest","list","MatchListSportEventRowOverview","StreamStub","getMatchIds","handleVisibilityChange","sportEventRows","selectSports","getNewsSportNames","sports","hasTooManySports","sportNames","mapStateToProps","cancelledMatch","upcomingFavorite","outrightsFavorite","resultsFavorite","normalizeEntity","selectMatches","GET_FAVORITE_MATCHES_SUCCESS","mappingMsgByPathname","selectGroupedIdsByTournament","groupBy","groupedIdsByTournament","currFavoriteIds","setCurrFavoriteIds","setFetchStatus","requestFavoriteMatches","allMatchIds","withLoading","prevCurrFavoriteIds","clear","isOutRights","isUpComing","withMarketsCount","incomeMatchIds","normalizedData","intersect","LOADED","prevMatchIds","isAllMatchesExist","subtract","isLocationChanged","filteredMatchIds","isOutrights","useFavoriteList","group","outrightId","maxSizeOfTables","whatToRender","getPollerManager","poller","withDeferRender","hocs","THRESHOLD","initRef","scrollRef","dropPaginationAndLoadMore","dropPaginationState","loadMore","setLoadDirectionAndLoadMore","loadMoreWithPagination","setMinAndMaxPages","requestContent","isRepeat","isPolling","isLoadMore","getTopGap","loader","emptyListMessage","matchIdsSize","allowEmptyMatchList","pollerName","UNSAFE_componentWillReceiveProps","redirectToFirstPage","hasMorePagination","hasNext","isUp","hasMore","threshold","initialLoad","isReverse","isFetchFinished","selectCategoryByLocation","withPagination","selectPaginationByLocation","selectDirection","selectIsInitialLoad","readyIndicator","setReady","categoryData","PollerName","Results","minPage","maxPage","limitPerPage","direction","isLoadInitial","freebetId","Upcoming","Live","Prematch","usePoller","getSportTypeFromLocation","selectIsCompact","selectIsFilterOpened","ROUTES_WITH_LIST","DEFAULT_CONTEXT","currentOverlay","setOverlay","isCompact","isCategorizerOpened","getPollerVariables","restVariables","order","RESULTS","SportEventOrder","NONE","RANK_PERSONALIZED","pollerOpts","MobileFiltersCtx","isRouteWithList","skipInitialRequest","enable","skipRequest","disable","shouldRenderMatchList","OverlayType","FEATURED_TOURNAMENTS_LIST","MATCH_LIST_COMPONENTS_BY_TYPE","UPCOMING","useMatchListNavigation","freeBetId","withSportNavigation","withRender","withFilters","isBettingPage","previousLocation","GROUP_GET_MATCHES_SUCCESS","getRouteFromHistory","registerEpic","handleListResponse","action$","load","addNearestMatchId","moduleLocator","handleMatchEnded","makeHandleMatchEnded","resetCategory","GROUP_GET_MATCHES_REQUEST","makeMatchListMiddleware","prevPathname","listen","modifyActionRankOrder","isMatchListGetMatchesAction","RANK_DEFAULT","paginationReducer","matchesLimitPerPage","outrightsLimitPerPage","pollingEdgePage","availableIds","ESPORTS_VALORANT","useResponsiveContainer","getIdsFromCompetitorId","useSportEventBg","competitorIdPaths","bg","setBg","containerRef","currentBreakpoints","isMounted","loadCompetitorBg","firstId","mapping","loadTournamentBg","loadSportBg","image","isFullSize","loadBetsHistoryModule","AsyncBetList","BetList","usePromoMatchDynamicScoreList","isArrowRotated","changeIsArrowRotated","scrollBarsRef","onArrowClick","getValues","scrollToBottom","scrollToTop","onScrollUpdate","gamePoints","scoreWithoutGamePoint","scoresWithoutTotal","homeTotalScore","awayTotalScore","TennisPoints","autoHide","hideTracksWhenNotNeeded","autoHeight","autoHeightMin","autoHeightMax","onUpdate","up","FeaturedProviderConfigType","GET_FEATURED_TOURNAMENTS_REQUEST","GET_FEATURED_TOURNAMENTS_SUCCESS","GET_FEATURED_TOURNAMENTS_FAIL","GET_MISSING_MATCHES_REQUEST","DEFAULT_CONFIG_LIST_SIZE","ALL","WIDGETS","MARKET_LIMIT","NUMBER_OF_ROWS","ZONE_LOCATIONS","TOP_SPORT_EVENTS","POPULAR_SPORT_EVENTS","FAVORITES_SPORT_EVENTS","FEATURED_ZONES_MAPPING","ClassicLeftWeb","EsportLeftWeb","Mix","MixLeftWeb","FEATURED_SPORT_TYPE_MAPPING","FeaturedSportType","MAPPING_ZONE","MAPPING_PERIOD","MOBILE_TOP_MATCH_LIST_INDEX_CONFIG","Daily","Weekly","Monthly","marketPropsToPick","oddsPropsToPick","makeGetMissingMatches","getFeaturedZoneConfigs","isApiCall","getMissingMatches","Actions","bannerSrc","isButtonBackgroundNew","BannerButtonBackground","src","alt","ClickOnImage","ClickOnButton","selectCmsBanners","selectBannerId","bannerId","makeSelector","cmsBanners","selectBanner","useCMSBanner","getAnalyticAttrsForSportEvent","zoneLocation","TOP_SLIDER","BannerTopSlider","RedirectToSportEvent","getAnalyticAttrsForPromo","RIGHT","BannerRight","RIGHT_SLIDER","BannerRightSlider","getAnalyticAttrsForOddBtn","RIGHT_TOP_SPORT_EVENTS","TopSportEventsRight","analyticAttrsForPromo","analyticAttrsForSportEvent","analyticAttrsForOddBtn","sharedProps","theme","Colorful","cms_banner","withAvailableZoneByAttributes","makeValidBannersSelector","settings","useBannersCarousel","slideWidth","makeMarketSelector","filteredBanners","getAnalyticAttrsByZoneLocation","hasControls","delay","makeBannerItemsSelector","getEventLiveOfTheDay","getEventMatchOfTheDay","selectValidLiveOfTheDay","selectValidMatchOfTheDay","liveOfTheDay","matchOfTheDay","isLoadTimeUp","setIsLoadTimeUp","executableAction","isPollingTurnedOff","idPathDivider","getFeaturedConfig","allSports","featuredSportType","getRouteByFeaturedSportType","CustomList","description","getFeaturedConfigKey","getTransformedFeaturedConfigs","featuredZoneConfigs","transformedConfig","groupBannerItemsBySport","bannerItems","defaultAcc","getAttributesByPeriod","topMatchListIndexConfig","pageLocation","sportEventsIds","selectPromo","selectStateFeaturedTournaments","promoState","selectFeaturedTournamentsConfigs","featuredTournaments","configs","selectFeaturedTournamentsCurrentConfigs","currentConfigs","selectFeaturedTournamentsList","currentConfig","toOrderedSet","selectFeaturedTournamentsFetchStatus","selectAreSportsAvailable","makeSelectZones","zoneIds","bannerItemSelectors","bannerItemsArr","storeNormalizedEntities","useDeepMemo","isLoadingConfig","setLoadingConfig","setConfig","matchesIds","setMatchesIds","memMatchesIds","requestFeaturedCustomList","featuredCustomList","nextConfig","getSportEventsSubscription","getIntervalObserve","UpcomingMatchList","isShowContent","isEmpty","Content","hasBackButton","onChangeClientState","newState","SelectTournament","FiltersFeatured","featuredConfigs","sportsRef","fetchFeaturedZoneConfigs","pollerIntervalSubscription","isExpanded","toggleExpand","isShowExpandButton","FAILED","ToggleMore","Close","Open","topMatch","activeSportId","onTabChange","onInactiveTabHover","FilterSport","selectMissingSportEventIds","COMMON_GET_MATCHES_VARS","preloadedSportsCache","useTopMatch","setActiveSportId","isLoadingTimedOut","setLoadingTimedOut","selectBannerZoneById","makeBannerItemsAndSportsSelector","selectSportEventBannerItems","bannerSportEvents","bannerItemsBySport","missingMatchIds","handleTabChange","preloadMatches","preloadSportEventIds","firstSportId","timeoutId","ANALYTICS_ODD_BTN","periods","activeZoneIndex","makeHandleActiveZoneIndex","period","makeAttributesByBannerZoneSelector","attributes","messageKey","SportEventRow","requestedSportEventCache","missingSportEventIds","newIds","zones","activeSport","makeHandleChangeActiveSport","allGamesMsg","selectSportEventIdsFromProps","makeSelectBannerZonesByAttributes","DEFAULT_SPORT","requestedZoneIdsCache","attributesByPeriod","sportEvents","bannerZonesSelectorsByPeriod","makeZonesSelectorByPeriods","getUniqSportsAndSportEventIds","activeZones","matchIdsBySport","nextSportEventIds","setActiveSport","activePeriod","setActivePeriod","makeHandleActivePeriod","zoneIndex","bannerZonesByPeriod","memBannerZonesByPeriod","memZoneIdsByPeriod","zonesByPeriod","memZonesByPeriod","memMissingSportEventIds","firstPeriod","fire","zoneLocations","widgetType","activeZoneLocation","makeHandleChangeZoneLocation","oddStatView","isOddStatVisible","TopMarketsContainer","TopSportEventsCenter","ANALYTICS_MARKETS","countRenderMarkets","makeHandleChangeSport","isNarrow","sportsIds","requestedZonesCache","zoneAttributes","big","activeZoneId","setActiveZoneId","bannerZones","memBannerZones","memBannerZoneIds","z","selectZones","zonesWithEvent","sportIdsSet","memZoneWithEventIds","missingIds","isShowTopMatch","prevCountRenderMarkets","firstZoneId","attributesByType","isMixPage","isHideWidgetTopMatches","WidgetHideTopMatches","BannerZoneLocation","GET_SPORTS_SUCCESS","getAvailableBannerZones","getBannerZones","BannerZonePlatform","MOBILE","DESKTOP","pageType","LOADED_ZONES","FeaturedTournamentsRecord","nextFeaturedTournaments","nextConfigs","newFeaturedTournaments","hooks","Feature","MultivariateFeature","TRUTHY_VALUES","BOOLEAN_VALUES","HelperBackgroundColor","availableMultivariateFeatures","AvailableMultivariateFeatures","setFeatures","isPromise","updateFeatures","rawFeatures","isVariantEqual","getVariants","featureName","getFeatures","rawFeatureValue","isSupportedFeature","isSupported","supportedFeatureNames","formattedFeatureNames","isValidValue","isValid","g","Function","eval","emptyMeta","getMetaPartIceHockeyFootball","CONFIG_BY_SPORTS","createPeriod","makeCreateMetaByType","typeNumber","metaTypeValue","TYPE_PERIOD_NUMBER","createGameState","TYPE_GAME_STATE","TYPE_STATE_NUMBER","getMetaPartEsportsRocketLeagueCounterStrikeRainbowSix","gameState","tennisSetMatchPartTypes","SCORE_TYPES_TITLE_MAPPING","TYPE_YELLOW_CARD","TYPE_YELLOW_RED_CARD","TYPE_GAME_KILLS","TYPE_GAME_PLAYERS","SPECIFIER_SCORE_TYPES_MAPPING","inningnr","quarternr","setnr","gamenr","mapnr","periodnr","metaTypesNumerable","MetaTypesNumerable","handballScoreTitleMapping","footballOverviewTitleMapping","defaultTitleParser","iceHockeyTennisTitleParser","isTimeInSeconds","isTimeCountdown","defaultResult","defaultBasketball","defaultBasketballTitleParser","insteadMeta","mapsMapping","mapId","ESPORTS_ROCKET_LEAGUE","isTimeAbsolute","webpackPolyfill","deprecate","paths","defineProperty","renderSvg","xlinkHref","LOGIN_HASH","asyncModuleLoaders","lib","useAsyncModule","moduleName","preload","getImmediately","setModule","sub","subModule","getHomeAwayOdds","selectOddsByOddIds","OddName","homeOdd","awayOdd","showVsBlock","numberOfOddStubs","fill","showNames","UISettingKey","CHANGE_ODD_FORMAT","CHANGE_SIDEBAR_VIEW","CHANGE_FAVORITE_COUNT","CHANGE_ODDS_STATISTIC","ENABLE_ODD_HISTORY","DISABLE_ODD_HISTORY","OPEN_SIDEBAR","CLOSE_SIDEBAR","OPEN_FILTER","CLOSE_FILTER","SET_ODDS_CHANGE_MODAL_SHOWN","SET_ACTIVE_MOBILE_COUNTRY_KEY","SHOW_ODDS_STATISTIC","ODD_STATISTIC_VIEW","SHOW_ODD_HISTORY","ODDS_CHANGE_MODAL_SHOWN","UI_GAMBLER_SETTINGS","KeyPathToReducerProp","changeOddFormat","changeSidebarView","enableOddHistory","disableOddHistory","toggleOddHistory","openSidebar","closeSidebar","toggleSidebar","changeOddsStatisticView","openFilter","closeFilter","setActiveMobileCountryKey","nextCountryKey","setOddsChangeModalShown","isCreateButton","selectUI","selectIsSidebarOpen","selectSidebarView","selectFavoriteCount","favoriteCount","upcomingCount","outrightsCount","selectIsOddHistoryEnabled","selectActiveMobileCountryKey","selectIsOddsChangeModalShown","msgMapping","currOddFormat","onMouseDown","currentTarget","setAttribute","filteredOddFormats","STUB","data-format","transitionRef","in","scrollHeight","chevron","toggleRow","first","down","startDown","firstDown","firstUp","startUp","drawChart","border","padding","maxHeight","circleRadius","widthOfLine","coefficient","max","paddedHeight","curr","array","nextIndex","x1","y1","x2","y2prev","y2","isPrevDown","currentGradient","gradient","prevDownFn","prevDown","nextItem","prevItem","gradientFn","clColor","points","circlePosition","x","y","color","colors","svgConfig","stopColor","cx","cy","selectEntitiesData","oddName","matchStatus","splitOddPath","isOddHistoryEnabled","entitiesData","dynamics","setDynamics","p","isUnmount","getVariables","oddPath","sportEventStatus","isHours","subHours","subDays","pointCount","nextDynamics","oddDynamicsByInterval","firstCoef","secondCoef","last","handlerStatisticToggle","makeOnClick","selectedStatisticView","hint","statisticViewMapping","MARKET","selected","openModal","isAnimationFinished","setIsAnimationFinished","mountOnEnter","unmountOnExit","onEntered","unknownChangeGamblerSetting","makeSyncGamblerSettings","selectIsMedium","changeGamblerSetting","ADD_BETSLIP_ODD","selectBetslipOdds","checkEqualSidebarView","sidebarView","epic","makeSetBetslipByStreamClosed","CLOSE_FULLSCREEN_STREAM","checkIsBetslip","checkBreakpoint","OPEN_FULLSCREEN_STREAM","makeSetBetslipByStreamOpen","syncEnableOddHistoryGamblerSettings","syncDisableOddHistoryGamblerSettings","syncOddStatisticGamblerSettings","generatedActions","concatMap","syncOddFormatGamblerSettings","syncOddsChangeModalShownGamblerSettings","makeSyncGamblerSettingsByPlatform","isMobilePlatform","mobileOptions","inboundState","reducedState","persistedState","getInitialState","isSidebarOpen","streamViewerVisibility","isFilterOpened","activeMobileCountryKey","isOddsChangeModalShown","setIn","loadFn","TournamentComponent","favoriteHomeTabs","FavoriteList","searchMatches","selectFetchStatus","selectIsPollingTurnedOff","POLLER_NAME","MatchListContainer","useLive","isSkipInitialRequest","filtersModule","selectCategorizerFetchStatus","usePrematch","extendSearchString","useResult","shouldRenderMobileTopMatches","MobileTopMatchList","selectZoneBanners","requestedZonesCacheRef","bannersConfig","uniqIds","zoneIntervals","INTERVAL","Banner","Banners","TopMatch","tabsData","activeSidebarView","changeActiveTabHandler","matchIdFullScreen","areSportsAvailable","hiddenWithoutAuth","hiddenOnMobile","hiddenLiveStreamTabs","isClosed","filterTabsData","isLiveStreamFullscreen","mapDispatchToProps","selectMatchIdFullScreen","selectIsFullScreen","isFullScreen","handleToggleSidebar","handleCloseSidebar","handleOpenSidebar","getDefaultBottomOffsetForTablet","getComputedStyle","getPropertyValue","defaultOutput","shouldHideSidebar","selectBetslipBetWithStatusFinal","selectBetslipBetTotalsFinal","selectBetslipBetIds","betslipBet","totals","betslipBetIds","betslipOddIds","betslipBetsCount","refContainer","selectBetslipBetInfo","selectChosenBetslipBetId","onClose","formattedOdd","renderCloseBtn","renderBetslipInfo","SidebarToggler","selectIsLarge","useBetslipSidebarWrapper","isLarge","canToggle","conditionalStyleNames","OddFormatSelectMobile","OddsStatisticSelectMobile","useSettingsButtonMobile","toggleModal","modalContainer","lessThenOrEqualSelector","useLeftSidebar","isTablet","isStreamPinAvailable","isVisible","cssVar","sidebarBottomOffset","offsetTop","offsetBottom","NAVIGATION_TABS","tab","getOddsStatistic","throttledLocateReachableMatchIds","memSportEventIds","STUB_COMPONENT","Header","checkDEV","isPreview","CMSModule","navigation","getSports","getMarketTemplates","cachedSportTypes","currLocation","isBannersCarouselVisible","isMainPage","isOutrightsPage","isUpdateColors","AppUpdateColors","layoutElement","overflow","minWidth","ineptWr","ineptWr1","layoutChanger","marketType","MarketType","shouldRenderTopMatches","TopMatchList","SettingsMenu","MatchListNavigation","AppOrigin","TOP_OUTRIGHTS_SLIDER","selectSportBySlug","FeaturedTournamentPage","InnerRouts","EntityIdResolver","createRoutes","history","applyBrowserLocationBlocker","currentLocation","block","nextLocation","calculateResponsiveState","customBreakpoints","currentWidth","throttled","innerWidth","makeViewportReducer","reducerRegistry","storeShape","shape","func","isRequired","mockDevice","register","offsetWidth","extensions","configureStore","getChildContext","reactIntlLocale","textComponent","Children","only","childContextTypes","isInnerPage","BettingAPICore","MainRoot","rootEl","tagName","bettingSettings$","BehaviorSubject","requiredCallbacks","fonts","widgets$","cssVariablesMap","bettingEvents$","updateBettingOptions","getRedirectPayloadByPathname","destination","Sport","MixSports","Redirect","renderDOM","setBettingSetting","bettingEvents","measurePageTimings","times","timing","getTimes","param","enableAnalytics","isEnableAnalytics","selectTheme","changeRoute","startsWith","table","setupPalette","setupSpacing","pinnedStreamPosition","BettingAPI","palette","isInitialized","insertCssVariables","setupWidget","setupPinnedStreamPosition","positionVars","setupBreakpoints","validateCustomBreakpoints","keyForValidation","errors","validateSetupWidget","validateBetslipSidebarWidgetOptions","validateStreamWidgetOptions","validateCategorizerWidgetOptions","sportsOrder","CATEGORIZER_ERROR_LABEL","invalidSportsOrderKeys","invalidSportsOrderValues","errorMsg","widgets","setupFeatures","__getFeatures","transformedParticipantFeatures","feature_name","initPathname","varsMap","vars","convertCssVariablesToString","cssPalletInString","cssInString","rootStyleHTMLElement","getRootHTMLStyleElement","head","existed","rootHTMLStyleElement","originalModule","create","loadStreamModule","AsyncStream","Stream","AsyncPersistentStream","PersistentStream","AsyncStreamPlayer","StreamPlayer","BackButton","isInverted","useClientNode","setNode","usePreviousRef","setCompareStatus","delayRef","prevValueRef","isGreater","countByClass","useCssClassToggleOnDocument","cssClass","counter","makeUseEventHandler","setUpdate","useIsMobile","useIsMountedRef","lastBetSum","isLoaded","setOutput","getLastBet","statuses","race","lastBet","stake","BetslipRememberLastBetSum","isEqual","dependencies","ONE_SECOND","TICK_INTERVAL","TICK_TIMEOUT","matchTime","timerRunning","shouldShowTime","numericalMatchTime","isTimerRunning","useMatchTime","isDecrement","changeTime","addition","tickTimeoutId","finalTime","timeInSeconds","setValue","currentValue","allSize","hasToggle","isShowMore","toggleShowMore","hasToggleMore","useOnClickOutside","Node","isFetched","subject$","Subject","usePollingMinStake","minStake","setMinStake","subscription","usePrevious","selectMatchMarkets","isPromoMarket","primaryMarket","getPrimaryMarket","findPromoMarketBySport","promoMarket","typeIds","marketsWithTypeId","mainSpecifiers","marketMainSpecifier","getMainSpecifierValue","matchMarkets","usePromoItemContainer","validMarketIds","getMarketIdsToSubscribe","skip","HookUsePromoItemContainer","useSportType","useUnmount","useWidgetSettings","changeWidgetOptions","widgetsOptions","useMount","useGridEmbedVideoToken","withMatchLink","CompetitorItemChild","DateTime","PromoMatchOdds","BettingConfigCtx","logReducerTiming","combineReducers","stubReducer","createRootReducer","reducers","appStateShape","getInitialReducers","asyncInitialReducers","syncInitialReducers","middlewareRegistry","rootEpic","gcMiddleware","dynamicMiddlewares","middlewareAPI","act","chain","getEntries","persistConfig","whitelist","middlewares","stateTransformer","devToolsExtension","__REDUX_DEVTOOLS_EXTENSION__","maxAge","getDevtoolActionsMaxAge","serialize","immutable","f","otherFavoriteEpics","otherUIEpics","makeRequestBanners","persistor","onRegistryChange","newReducers","_isPersisted","persist","age"],"mappings":"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CJkjC,eAAgB,WAEpBuN,KAAM,CACFzwC,GAAI,cACJkjC,eAAgB,QAEpBiF,KAAM,CACFjF,eAAgB,OAChBljC,GAAI,eAERooC,MAAO,CACHlF,eAAgB,QAChBljC,GAAI,gBAERg/C,WAAY,CACR9b,eAAgB,cAChBljC,GAAI,qBAER2E,cAAe,CACXu+B,eAAgB,iBAChBljC,GAAI,wBAERi/C,QAAS,CACL/b,eAAgB,WAChBljC,GAAI,kBAERk/C,SAAU,CACNhc,eAAgB,aAChBljC,GAAI,mBAERq2B,KAAM,CACF6M,eAAgB,OAChBljC,GAAI,eAERsX,QAAS,CACL4rB,eAAgB,UAChBljC,GAAI,kBAERsmB,WAAY,CACR4c,eAAgB,aAChBljC,GAAI,qBAERm/C,SAAU,CACNjc,eAAgB,WAChBljC,GAAI,mBAERo/C,KAAM,CACFlc,eAAgB,OAChBljC,GAAI,eAERq/C,MAAO,CACHnc,eAAgB,QAChBljC,GAAI,gBAERs/C,GAAI,CACApc,eAAgB,KAChBljC,GAAI,aAERu/C,UAAW,CACPrc,eAAgB,YAChBljC,GAAI,oBAERwW,IAAK,CACD0sB,eAAgB,MAChBljC,GAAI,cAERw/C,QAAS,CACLtc,eAAgB,UAChBljC,GAAI,kBAERy/C,MAAO,CACHvc,eAAgB,gBAChBljC,GAAI,gBAER0/C,OAAQ,CACJxc,eAAgB,SAChBljC,GAAI,iBAER2/C,QAAS,CACLzc,eAAgB,UAChBljC,GAAI,kBAER4/C,IAAK,CACD1c,eAAgB,MAChBljC,GAAI,cAER6/C,SAAU,CACN3c,eAAgB,YAChBljC,GAAI,mBAER8/C,MAAO,CACH5c,eAAgB,QAChBljC,GAAI,gBAER+/C,cAAe,CACX7c,eAAgB,iBAChBljC,GAAI,wBAERggD,KAAM,CACF9c,eAAgB,OAChBljC,GAAI,0BAERgW,QAAS,CACLktB,eAAgB,UAChBljC,GAAI,mBAERsU,OAAQ,CACJ4uB,eAAgB,SAChBljC,GAAI,kBAERiW,OAAQ,CACJitB,eAAgB,SAChBljC,GAAI,kBAERigD,aAAc,CACV/c,eAAgB,WAChBljC,GAAI,uBAERkgD,SAAU,CACNhd,eAAgB,WAChBljC,GAAI,mBAERmgD,YAAa,CACTjd,eAAgB,eAChBljC,GAAI,uBAER6kC,oBAAqB,CACjB3B,eAAgB,kDAChBljC,GAAI,gCAERogD,SAAU,CACNld,eAAgB,aAChBljC,GAAI,2CAERqgD,GAAI,CACAnd,eAAgB,KAChBljC,GAAI,aAERsgD,IAAK,CACDpd,eAAgB,MAChBljC,GAAI,cAERugD,WAAY,CACRrd,eAAgB,aAChBljC,GAAI,qBAERwgD,YAAa,CACTtd,eAAgB,cAChBljC,GAAI,sBAERq1C,OAAQ,CACJnS,eAAgB,SAChBljC,GAAI,iBAERo1C,OAAQ,CACJlS,eAAgB,QAChBljC,GAAI,iBAERygD,KAAM,CACFvd,eAAgB,OAChBljC,GAAI,eAER0gD,WAAY,CACRxd,eAAgB,aAChBljC,GAAI,qBAER2gD,IAAK,CACDzd,eAAgB,MAChBljC,GAAI,cAER4gD,GAAI,CACA1d,eAAgB,KAChBljC,GAAI,aAER0oC,mBAAoB,CAChBxF,eACI,4HACJljC,GAAI,6BAER6gD,aAAc,CACV3d,eAAgB,MAChBljC,GAAI,uBAER8gD,MAAO,CACH5d,eAAgB,QAChBljC,GAAI,gBAER+gD,WAAY,CACR7d,eAAgB,cAChBljC,GAAI,qBAERghD,SAAU,CACN9d,eAAgB,sBAChBljC,GAAI,mBAERihD,SAAU,CACN/d,eAAgB,SAChBljC,GAAI,mBAERkhD,SAAU,CACNhe,eAAgB,YAChBljC,GAAI,mBAERmhD,UAAW,CACPje,eAAgB,YAChBljC,GAAI,oBAERohD,QAAS,CACLle,eAAgB,UAChBljC,GAAI,kBAERosB,UAAW,CACP8W,eAAgB,aAChBljC,GAAI,oBAERqhD,QAAS,CACLne,eAAgB,UAChBljC,GAAI,kBAERshD,QAAS,CACLpe,eAAgB,UAChBljC,GAAI,kBAER,aAAc,CACVkjC,eAAgB,UAChBljC,GAAI,qBAER,cAAe,CACXkjC,eAAgB,WAChBljC,GAAI,sBAER,SAAU,CACNkjC,eAAgB,MAChBljC,GAAI,iBAER,SAAU,CACNkjC,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c,6BAA6B,cAAc,6BAA6B,cAAc,6BAA6B,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAAU,yBAAyB,UAA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","file":"app-f7415a65.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"fe357c2d\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"fe357c2d\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"0003fe2d\":\"competitor-bg-mob-dark\",\"010b6b6c\":\"tournament-Tournament\",\"012c2b17\":\"betslip-module\",\"24f6d19a\":\"filters-module\",\"2b0fe3d5\":\"competitor-bg-dark\",\"3e6192e5\":\"freebet-module\",\"40ef4384\":\"components-TournamentInfo\",\"42ac9149\":\"bets-history-module\",\"55769d7e\":\"CMS-module\",\"71ecde20\":\"components-Carousel\",\"76f18ccc\":\"esport-icons\",\"8e3f5bc4\":\"classic-icons\",\"92dc1b36\":\"components-MultiCarousel\",\"9c7ab3d0\":\"sport-bg-dark\",\"b8bb3601\":\"outright-module\",\"bdc83adc\":\"match-module\",\"c4a3da56\":\"components-PromoMatch\",\"c4fed2f7\":\"tournament-bg-dark\",\"d9409889\":\"cashout-module\",\"ddc824f7\":\"stream-module\",\"e6e4ca41\":\"components-Helper\",\"e9ba59fc\":\"tournament-bg-mob-dark\",\"f10844a7\":\"sport-bg-mob-dark\"}[chunkId]||chunkId) + \"-\" + {\"0003fe2d\":\"8a0f45a6\",\"010b6b6c\":\"279e7346\",\"012c2b17\":\"3f074250\",\"24f6d19a\":\"8c07a6ff\",\"2b0fe3d5\":\"0170b892\",\"3e6192e5\":\"d7c4a1b3\",\"40ef4384\":\"52ffaa6f\",\"42ac9149\":\"397582a5\",\"55769d7e\":\"ea1185a7\",\"71ecde20\":\"6562da01\",\"76f18ccc\":\"1fa5bf29\",\"8e3f5bc4\":\"38ba3e51\",\"92dc1b36\":\"2c4c6472\",\"9c7ab3d0\":\"3483d86e\",\"b8bb3601\":\"a9a010cf\",\"bdc83adc\":\"634808a0\",\"c4a3da56\":\"80b9201d\",\"c4fed2f7\":\"cbc16f6b\",\"d9409889\":\"d4f7c0bd\",\"ddc824f7\":\"51851ddd\",\"e6e4ca41\":\"749a1b1a\",\"e9ba59fc\":\"1a43936c\",\"f10844a7\":\"dd113145\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"010b6b6c\":1,\"012c2b17\":1,\"24f6d19a\":1,\"3e6192e5\":1,\"42ac9149\":1,\"55769d7e\":1,\"71ecde20\":1,\"92dc1b36\":1,\"b8bb3601\":1,\"bdc83adc\":1,\"c4a3da56\":1,\"d9409889\":1,\"ddc824f7\":1,\"e6e4ca41\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"\" + ({\"0003fe2d\":\"competitor-bg-mob-dark\",\"010b6b6c\":\"tournament-Tournament\",\"012c2b17\":\"betslip-module\",\"24f6d19a\":\"filters-module\",\"2b0fe3d5\":\"competitor-bg-dark\",\"3e6192e5\":\"freebet-module\",\"40ef4384\":\"components-TournamentInfo\",\"42ac9149\":\"bets-history-module\",\"55769d7e\":\"CMS-module\",\"71ecde20\":\"components-Carousel\",\"76f18ccc\":\"esport-icons\",\"8e3f5bc4\":\"classic-icons\",\"92dc1b36\":\"components-MultiCarousel\",\"9c7ab3d0\":\"sport-bg-dark\",\"b8bb3601\":\"outright-module\",\"bdc83adc\":\"match-module\",\"c4a3da56\":\"components-PromoMatch\",\"c4fed2f7\":\"tournament-bg-dark\",\"d9409889\":\"cashout-module\",\"ddc824f7\":\"stream-module\",\"e6e4ca41\":\"components-Helper\",\"e9ba59fc\":\"tournament-bg-mob-dark\",\"f10844a7\":\"sport-bg-mob-dark\"}[chunkId]||chunkId) + \"-\" + {\"0003fe2d\":\"31d6cfe0\",\"010b6b6c\":\"6e3dbadd\",\"012c2b17\":\"787f37db\",\"24f6d19a\":\"6a6aadc5\",\"2b0fe3d5\":\"31d6cfe0\",\"3e6192e5\":\"17215159\",\"40ef4384\":\"31d6cfe0\",\"42ac9149\":\"016dd5b1\",\"55769d7e\":\"4ed1b63c\",\"71ecde20\":\"edab2c34\",\"76f18ccc\":\"31d6cfe0\",\"8e3f5bc4\":\"31d6cfe0\",\"92dc1b36\":\"18555bf3\",\"9c7ab3d0\":\"31d6cfe0\",\"b8bb3601\":\"6fa4431e\",\"bdc83adc\":\"878e74a1\",\"c4a3da56\":\"912aa549\",\"c4fed2f7\":\"31d6cfe0\",\"d9409889\":\"d5a152d7\",\"ddc824f7\":\"94674385\",\"e6e4ca41\":\"35a9f5db\",\"e9ba59fc\":\"31d6cfe0\",\"f10844a7\":\"31d6cfe0\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.request = request;\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\tdocument.body.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar head = document.getElementsByTagName('head')[0];\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\tvar error = new Error('Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')');\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\thead.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([147,\"e3bdfa21\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"fixtureData__container___3J04-\",\"icon\":\"fixtureData__icon___2SR2j\",\"text\":\"fixtureData__text___1JMWR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"settingsToggler__container___CWQAl\",\"stub\":\"settingsToggler__stub___2r123\",\"caret-wrapper\":\"settingsToggler__caret-wrapper___2KWfa\",\"caret\":\"settingsToggler__caret___1nsIF\",\"is-open\":\"settingsToggler__is-open___X6-9D\",\"icon\":\"settingsToggler__icon___2tlTB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"time\":\"dateTime__time___2Hagq\",\"date\":\"dateTime__date___1JWB3\",\"wrapper\":\"dateTime__wrapper___2sx6x\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tabs\":\"Tabs__tabs___KOXfP\",\"tab\":\"Tabs__tab___3KK7U\",\"is-active\":\"Tabs__is-active___2Vi_F\",\"is-disabled\":\"Tabs__is-disabled___27ffU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"matchTime__container___1ZqeI\",\"part\":\"matchTime__part___3RWpM\",\"time\":\"matchTime__time___2iH99\"};","import { BannerTypes } from '@gin-betting/banners';\nimport core from '@gin-betting/core';\n\nimport localeManager from 'services/locale-manager';\n\nconst {\n utils: { getBettingOptions },\n services: { stringify },\n} = core;\n\n// TODO: remove after CMS pass \"getBanners\" thought BettingAPI. GINFE-2607\nexport function getBanners(\n bannerIds: string[]\n): Promise {\n const { location, fetch } = window;\n\n const { locale } = getBettingOptions();\n\n if (!bannerIds || bannerIds.length === 0) return Promise.resolve([]);\n\n const idsQuery = stringify({ ids: bannerIds } as any);\n\n const url = `${location.origin}/api/banners/locale/${localeManager.convert(\n locale,\n {\n from: 'cms',\n to: 'banner',\n }\n )}?${idsQuery}`;\n\n return fetch(url, {\n method: 'GET',\n headers: {\n 'X-Requested-With': 'XMLHttpRequest',\n },\n })\n .then(r => r.json())\n .then(r => r.data);\n}\n","import bannersModule from '@gin-betting/banners';\n\nimport * as utils from './utils';\n\nexport type { BannerTypes } from '@gin-betting/banners';\n\nexport default {\n ...bannersModule,\n utils: {\n ...bannersModule.utils,\n ...utils,\n },\n};\n","import { KebabCase } from 'type-fest';\n\nexport type IBettingSpacing = {\n topOffset: number;\n bottomOffset: number;\n};\n\nexport const DEFAULT_SPACING: IBettingSpacing = {\n topOffset: 50,\n bottomOffset: 50,\n};\n\nexport type SpacingCssProp = `--${KebabCase}`;\n\nexport type SpacingCssVariables = {\n [key in IBettingSpacing as SpacingCssProp]: `${number}px`;\n};\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"arrow-left_3c6dd\",\n \"use\": \"arrow-left_3c6dd-usage\",\n \"viewBox\": \"0 0 10 16\",\n \"content\": \"\\n \\n \\n \\n \\n \\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","export const MARK_REACHABLE_ENTITIES = 'entities/MARK_REACHABLE_ENTITIES' as const;\n\nexport const TRAVERSE_STATE_KEYS = [\n 'betslip',\n 'match',\n 'matchList',\n 'favorite',\n 'stream',\n 'banners',\n] as const;\n\nexport type TraverseStateKeys = typeof TRAVERSE_STATE_KEYS[number];\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport core, { Entities } from '@gin-betting/core';\n\nimport { MARK_REACHABLE_ENTITIES } from './constants';\n\nconst {\n utils: { makeAction },\n} = core;\n\nexport const markReachableEntities = (entityName: Entities.EntityNames) => {\n return makeAction(MARK_REACHABLE_ENTITIES, {\n entityName,\n });\n};\n","import { BannerTypes } from '@gin-betting/banners';\nimport core, { App, Entities, GQL } from '@gin-betting/core';\nimport matchList, { MatchList } from '@gin-betting/match-list';\nimport { Record } from 'immutable';\nimport { partition } from 'lodash';\n\nimport { matchListRoutes, SidebarView } from 'app-constants';\nimport { State } from 'types';\nimport { isFavoritePage, removeLastSlash } from 'utils';\nimport type { TraverseStateKeys } from './constants';\n\ntype Locate> = (\n state: State[K],\n entitiesState?: Entities.EntitiesState\n) => string[];\n\ntype Locators = {\n [P in Exclude]: Locate

;\n};\n\nconst {\n utils: { getIdsFromBetslipOddId, getIdsFromBetOddId, isOneOfPages },\n} = core;\n\nconst {\n constants: { MATCH_LIST_CATEGORY_RECORD_NAME },\n} = matchList;\n\nconst [\n tournamentPages,\n matchListPages,\n] = partition(matchListRoutes as App.Routes[], r =>\n r.includes(removeLastSlash(App.Routes.TOURNAMENT))\n);\n\nexport const matchLocators: Locators = {\n betslip: state => {\n return state\n .get('betslipOdds')\n .keySeq()\n .map(id => getIdsFromBetslipOddId(id).matchId)\n .toArray();\n },\n match: (state, entitiesState) => {\n const slugOrId = state.get('sportEventId');\n const matchId = entitiesState?.get('slugs').get(slugOrId)?.matchId;\n\n return [matchId || slugOrId].filter(Boolean);\n },\n matchList: state => {\n // TODO: remove usage of history in locator. GINFE-2806\n if (\n !isOneOfPages(matchListPages, { exact: true }) &&\n !isOneOfPages(tournamentPages)\n ) {\n return [];\n }\n\n return state\n .toSeq()\n .valueSeq()\n .reduce((acc, v) => {\n if (!Record.isRecord(v) || !isMatchListCategory(v)) return acc;\n\n return acc.concat(v.matchIds.toArray());\n }, []);\n },\n stream: state => {\n return state.get('matchIds').toArray();\n },\n favorite: state => {\n // TODO: remove usage of history in locator. GINFE-2806\n if (!isFavoritePage()) return [];\n\n return state.get('favoriteIds').toArray();\n },\n banners: state => {\n return state.get('zoneBanners').reduce((acc, zone) => {\n const matchIds = zone.config\n .filter(\n (config): config is BannerTypes.BannerSportEvent =>\n config.type === GQL.BannerType.betting_sport_event\n )\n .map(config => config.id);\n\n return acc.concat(matchIds);\n }, []);\n },\n};\n\nexport const betHistoryLocator = (state: State): string[] => {\n if (state.get('ui').get('sidebarView') !== SidebarView.bets) return [];\n\n return state\n .get('entities')\n .get('bets')\n .reduce((acc, bet) => {\n return acc.concat(\n bet.odds.map(oddId => getIdsFromBetOddId(oddId).matchId)\n );\n }, []);\n};\n\nconst isMatchListCategory = (\n maybeCategory: Record\n): maybeCategory is MatchList.MatchListCategory => {\n return (\n Record.getDescriptiveName(maybeCategory) ===\n MATCH_LIST_CATEGORY_RECORD_NAME\n );\n};\n","import { Dispatch, SetStateAction, useCallback, useRef, useState } from 'react';\nimport { Entities } from '@gin-betting/core';\n\nimport { useUnmount } from 'hooks';\n\ntype ReserveCache = {\n [entity in K]: string[];\n};\n\ntype ListId = string[];\n\ninterface IGCReserve {\n add(entityName: T, items: string[]): void;\n remove(entityName: T, items: string[]): void;\n replace(entityName: T, items: string[], prevItems: string[]): void;\n get(entityName: T): string[];\n useState(\n entityName: T,\n initialState?: S\n ): [S, Dispatch>];\n}\n\nconst DEFAULT_IDS_STATE: ListId = [];\n\nclass GCReserve implements IGCReserve {\n private cache: ReserveCache = {} as ReserveCache;\n\n constructor(entityNames: T[]) {\n entityNames.forEach(entityName => {\n this.cache[entityName] = [];\n });\n\n this.useState = this.useState.bind(this);\n }\n\n add(entityName: T, items: string[]): void {\n this.update(entityName, cached => cached.concat(items));\n }\n\n remove(entityName: T, items: string[]): void {\n this.update(entityName, cached => removeFirst(cached, items));\n }\n\n replace(entityName: T, items: string[], prevItems: string[]): void {\n this.update(entityName, cached =>\n removeFirst(cached, prevItems).concat(items)\n );\n }\n\n get(entityName: T): string[] {\n return this.cache[entityName].slice();\n }\n\n /** Enhances \"useState\" hook with automatic GC reserve updates.\n *\n *\n * - State will NOT be reset to the initial value on \"entityName\" change\n */\n useState(\n entityName: T,\n initialState: ListId = DEFAULT_IDS_STATE\n ): [ListId, Dispatch>] {\n /* Silence linter warning about inappropriate hook usage:\n \"cannot be called in a class component\"\n */\n /* eslint-disable react-hooks/rules-of-hooks */\n const entity = useRef(entityName);\n const [state, setHookState] = useState(initialState);\n\n if (initialState && initialState.length > 0) {\n this.add(entity.current, initialState);\n }\n\n const setState: Dispatch> = useCallback(\n stateOrUpdater => {\n setHookState(prevState => {\n const result =\n typeof stateOrUpdater === 'function'\n ? stateOrUpdater(prevState)\n : stateOrUpdater;\n\n if (result) {\n const method = prevState.length > 0 ? 'replace' : 'add';\n\n this[method](entity.current, result, prevState);\n }\n\n return result;\n });\n },\n []\n );\n\n useUnmount(() => {\n this.remove(entity.current, state);\n });\n\n return [state, setState];\n /* eslint-enable */\n }\n\n private update(\n entityName: T,\n updater: (cached: string[]) => string[]\n ): void {\n if (!this.cache[entityName]) return;\n\n const cached = this.cache[entityName];\n const next = updater(cached);\n\n this.cache[entityName] = next;\n }\n}\n\nfunction removeFirst(source: T[], items: T[]): T[] {\n const removableItems = new Set(items);\n\n return source.filter(value => {\n const isRemovable = removableItems.has(value);\n\n if (isRemovable) {\n removableItems.delete(value);\n }\n\n return !isRemovable;\n });\n}\n\nexport default new GCReserve(['matches']);\n","import core, { App, Entities, View } from '@gin-betting/core';\nimport { difference, reduce, transform, uniq } from 'lodash';\n\nimport { State } from 'types';\nimport { TRAVERSE_STATE_KEYS, TraverseStateKeys } from './constants';\nimport { betHistoryLocator, matchLocators } from './locators';\nimport gcReserve from './reserve';\n\nconst {\n utils: { splitMarketPath, getIdsFromOddId },\n entities: {\n utils: { renormalize },\n selectors: { selectOddsStatistic, selectOddsStatisticMarkets },\n },\n} = core;\n\nexport const locateSweepableMatches = (\n state: State\n): Entities.DeleteEntitiesPayload | void => {\n const entitiesState = state.get('entities');\n const cachedMatchIds = entitiesState.get('matches').keySeq().toArray();\n\n const sweepableMatchIds = difference(\n cachedMatchIds,\n locateReachableMatchIds(state)\n );\n\n if (sweepableMatchIds.length === 0) return;\n\n const renormalized = renormalize(\n App.EntityNames.Matches,\n sweepableMatchIds,\n entitiesState\n );\n\n if (!renormalized) return;\n\n const renormalizedToIds = transformRenormalizedToIds(renormalized.entities);\n\n const oddsStatistic = selectOddsStatistic(state)\n .filter(({ id: oddId }) => {\n const matchId = getIdsFromOddId(oddId)?.matchId;\n\n return !matchId || renormalized.entities.matches[matchId];\n })\n .keySeq()\n .toArray();\n\n const oddsStatisticMarkets = selectOddsStatisticMarkets(state)\n .filter(({ id: marketId }) => {\n const matchId = splitMarketPath(marketId)?.matchId;\n\n return !matchId || renormalized.entities.matches[matchId];\n })\n .keySeq()\n .toArray();\n\n return { ...renormalizedToIds, oddsStatistic, oddsStatisticMarkets };\n};\n\nconst transformRenormalizedToIds = (\n entities: View.NormalizedEntities\n): Entities.DeleteEntitiesPayload => {\n return transform(entities, (result, entitiesCollection, key) => {\n let value = entitiesCollection;\n\n if (key === 'tournaments') return result;\n if (key === 'slugs') {\n value = transform(value, (acc, slug: View.Slug, slugId) => {\n if (slug.matchId) {\n acc[slugId] = slug;\n }\n\n return acc;\n });\n }\n\n result[key] = Object.keys(value);\n\n return result;\n });\n};\n\nexport const locateReachableMatchIds = (state: State): string[] => {\n const reachableMatchIdsFromState = reduce(\n TRAVERSE_STATE_KEYS,\n (acc, key: TraverseStateKeys) => {\n const locateReachableMatches = matchLocators[key];\n\n // NOTE: async modules can be nullable. TODO: Improve \"State\" type GINFE-1830\n const stateTree: State[typeof key] | null = state.get(key);\n\n if (!stateTree) return acc;\n\n const reachableMatchIds = locateReachableMatches(\n stateTree as UnionToIntersection,\n state.get('entities')\n );\n\n return acc.concat(reachableMatchIds);\n },\n [...betHistoryLocator(state)] as string[]\n );\n\n return uniq(reachableMatchIdsFromState.concat(gcReserve.get('matches')));\n};\n","import core, { App } from '@gin-betting/core';\nimport { Action, Middleware, MiddlewareAPI } from 'redux';\n\nimport {\n DEBUG_INFO_LOCALSTORAGE_KEY,\n TIME_UNIT_IN_MILLISECONDS,\n} from 'app-constants';\nimport { State } from 'types';\nimport { markReachableEntities } from './actions';\nimport { MARK_REACHABLE_ENTITIES } from './constants';\nimport { locateSweepableMatches } from './utils';\n\nconst {\n entities: {\n actions: { deleteEntities },\n },\n} = core;\n\nconst GC_SCHEDULE_TIMEOUT = 0.5 * TIME_UNIT_IN_MILLISECONDS.minute;\n\nfunction makeMiddleware(): Middleware {\n let timerId: number;\n\n return ({ dispatch, getState }: MiddlewareAPI) => {\n const mark = () => {\n window.clearTimeout(timerId);\n dispatch(markReachableEntities(App.EntityNames.Matches));\n };\n\n if (localStorage.getItem(DEBUG_INFO_LOCALSTORAGE_KEY)) {\n (window as any).__app.dispatchGC = mark;\n }\n\n const sweep = (arg: FirstArgument) => {\n dispatch(deleteEntities(arg));\n };\n\n const scheduleDeallocation = () => {\n timerId = window.setTimeout(mark, GC_SCHEDULE_TIMEOUT);\n };\n\n scheduleDeallocation();\n\n return next => (action: Action) => {\n switch (action.type) {\n case MARK_REACHABLE_ENTITIES: {\n const state = getState();\n const sweepableMatchEntities = locateSweepableMatches(\n state\n );\n\n if (sweepableMatchEntities) {\n sweep(sweepableMatchEntities);\n }\n\n scheduleDeallocation();\n\n return;\n }\n\n default:\n return next(action);\n }\n };\n };\n}\n\nexport default makeMiddleware;\n","import * as actions from './actions';\nimport middleware from './middleware';\nimport reserve from './reserve';\nimport * as utils from './utils';\n\nconst useReservedState = reserve.useState;\n\nexport { useReservedState };\n\nexport default {\n actions,\n middleware,\n reserve,\n utils,\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"oddButton__container___36P6_\",\"is-active\":\"oddButton__is-active___2st2r\",\"is-win\":\"oddButton__is-win___pgg-m\",\"is-loss\":\"oddButton__is-loss___1bpQg\",\"is-selected\":\"oddButton__is-selected___3cbt-\",\"top\":\"oddButton__top___34H3h\",\"bottom\":\"oddButton__bottom___3xDrl\",\"flatten\":\"oddButton__flatten___2Pgr1\",\"title\":\"oddButton__title___eYYGG\",\"status\":\"oddButton__status___YBMnI\",\"coef\":\"oddButton__coef___2tokv\",\"stub\":\"oddButton__stub___2_UxU\",\"statistic\":\"oddButton__statistic___12352\",\"helper\":\"oddButton__helper___10aHy\",\"arrow\":\"oddButton__arrow___2voiI\",\"blinking-arrow\":\"oddButton__blinking-arrow___16UKP\",\"smaller\":\"oddButton__smaller___oxQHj\",\"greater\":\"oddButton__greater___31Q8-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"promoItem__container___v1lH0\",\"is-live\":\"promoItem__is-live___2FH-n\",\"is-match\":\"promoItem__is-match___2kJf_\",\"is-combo\":\"promoItem__is-combo___3tQca\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"collapse__container___3xR_W\",\"is-animating\":\"collapse__is-animating___1SnXV\",\"is-collapsed\":\"collapse__is-collapsed___EDHWV\"};","import loadable from '@loadable/component';\n\nimport { Modules } from 'types';\n\nexport const loadFreebetModule: () => Promise<\n Modules['freebet']\n> = /* #__LOADABLE__ */ () =>\n import(/* webpackChunkName: \"freebet-module\" */ './index');\n\nexport const AsyncBetslipFreebet = loadable(loadFreebetModule, {\n resolveComponent: ({ default: filters }) =>\n filters.components.BetslipFreebet,\n});\n\nexport const AsyncFreebetPanel = loadable(loadFreebetModule, {\n resolveComponent: ({ default: filters }) => filters.components.FreebetPanel,\n});\n\nexport const AsyncFreebetSelect = loadable(loadFreebetModule, {\n resolveComponent: ({ default: filters }) =>\n filters.components.FreebetSelect,\n});\nexport const AsyncFreeBetMobileTitle = loadable(loadFreebetModule, {\n resolveComponent: ({ default: filters }) =>\n filters.components.FreeBetMobileTitle,\n});\nexport const AsyncFreeBetCategorizer = loadable(loadFreebetModule, {\n resolveComponent: ({ default: filters }) =>\n filters.components.FreeBetCategorizer,\n});\n\nexport const AsyncRequestFreebet = loadable(loadFreebetModule, {\n resolveComponent: ({ default: filters }) =>\n filters.components.RequestFreebet,\n});\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"betslipSidebarWrapper__container___2EPNx\",\"portal-container\":\"betslipSidebarWrapper__portal-container___3Ayl9\",\"is-offset-ignored-in-theater-mode\":\"betslipSidebarWrapper__is-offset-ignored-in-theater-mode___xXCYC\"};","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"top-tournaments-arrow_00a2b\",\n \"use\": \"top-tournaments-arrow_00a2b-usage\",\n \"viewBox\": \"0 0 13 7\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"streamMarketCount__container___nk11p\",\"market-count\":\"streamMarketCount__market-count___2rK0t\"};","import core, { App, View } from '@gin-betting/core';\nimport { includes, transform } from 'lodash';\nimport { createSelector } from 'reselect';\n\nimport {\n DEFAULT_STREAM_URL,\n SportEventMetaKey,\n VIEWABLE_SPORT_LIST,\n} from 'app-constants';\nimport { CONFIG_BY_SPORTS } from 'scoreMetaConfig';\nimport { MatchPartInfo, State } from 'types';\nimport {\n filterScoresBySportAndMatchPart,\n getCurrentMatchPart,\n getRouteBySportType,\n} from 'utils';\n\nconst {\n entities: {\n selectors: {\n makeSelectMatchViewScores,\n selectMatch,\n makeMatchSelector,\n selectMobileMatchStream,\n selectMatchMeta,\n selectSportBySportEvent,\n selectSportByTournament,\n },\n },\n utils: { getSportTypeBySport },\n} = core;\n\nconst scoreOrderBySport: {\n [key: string]: Partial<{ [key in App.ScoreTypes]: number }>;\n} = transform(CONFIG_BY_SPORTS, (acc, { scoresOrder }, sportId) => {\n if (scoresOrder) {\n acc[sportId] = scoresOrder;\n }\n});\n\nconst selectMatchViewScores = makeSelectMatchViewScores(scoreOrderBySport);\n\nconst makeSelectFilteredScores = (isOverview: boolean) =>\n createSelector(\n selectMatch,\n selectMatchViewScores,\n selectMatchMeta,\n (match, scores, meta) => {\n let currentMatchPart: MatchPartInfo | null = null;\n\n if (match) {\n currentMatchPart = getCurrentMatchPart(meta, match);\n\n return {\n scores: filterScoresBySportAndMatchPart(\n match.sportId,\n currentMatchPart,\n scores,\n isOverview\n ),\n currentMatchPart,\n meta,\n };\n }\n\n return { scores, currentMatchPart, meta };\n }\n );\n\nexport const selectFilteredScores = makeSelectFilteredScores(false);\nexport const selectOverviewScores = makeSelectFilteredScores(true);\n\nconst makeSelectMetaValueByName = (metaName: T) =>\n createSelector(\n selectMatchMeta,\n meta => meta.find(m => m.name === metaName)?.value ?? null\n );\n\nconst selectBetradarLMTCoverageLevel = makeSelectMetaValueByName(\n SportEventMetaKey.BetradarLMTCoverageLevel\n);\n\nexport const selectBetradarId = createSelector(\n selectBetradarLMTCoverageLevel,\n makeSelectMetaValueByName(SportEventMetaKey.BetradarId),\n (lmt, betradarId) => (lmt && lmt !== '1.00' ? betradarId : null)\n);\nexport const selectMatchTime = makeSelectMetaValueByName(\n SportEventMetaKey.Time\n);\nexport const selectTimerRunning = makeSelectMetaValueByName(\n SportEventMetaKey.TimerRunning\n);\n\nexport const selectIsSportEventViewable = createSelector(\n selectMobileMatchStream,\n selectBetradarId,\n makeMatchSelector({\n propsToPick: ['sportId'],\n }),\n (streamUrl, betradarId, match) => {\n const sportId = match?.sportId;\n\n const hasValidStream =\n !!streamUrl && streamUrl !== '' && streamUrl !== DEFAULT_STREAM_URL;\n\n const hasValidBetradarId =\n !!betradarId && !!sportId && includes(VIEWABLE_SPORT_LIST, sportId);\n\n return {\n hasValidStream,\n hasValidBetradarId,\n };\n }\n);\n\ntype SelectSport = (state: State, props: object) => View.Sport | undefined;\n\nconst makeSelectRouteBySportEvent = (selectSport: SelectSport) =>\n createSelector(selectSport, sport =>\n getRouteBySportType(getSportTypeBySport(sport))\n );\n\nexport const selectRouteBySportEvent = makeSelectRouteBySportEvent(\n selectSportBySportEvent\n);\n\nexport const selectRouteByTournament = makeSelectRouteBySportEvent(\n selectSportByTournament\n);\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"colorfulBanners__container___3D21_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"dateTime__container___3UN4j\",\"is-today\":\"dateTime__is-today___yiYe8\",\"time\":\"dateTime__time___2doVF\",\"date\":\"dateTime__date___2QS99\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"stake\":\"amount__stake___2tO04\",\"is-desktop\":\"amount__is-desktop___3tNIb\",\"is-disabled\":\"amount__is-disabled___24KcS\",\"is-active\":\"amount__is-active___2gcVR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"favoriteList__container___ddxD9\"};","// NOTE: Do not add any external dependency here! This util is used inside independent \"bettingLoader\".\n\nfunction adaptBettingOptions(\n bettingOptions: APIBettingOptions\n): BettingOptions {\n const {\n currency,\n isAuthorized,\n locale,\n rootElement,\n selectedSportIds,\n sportIds,\n token,\n tournamentIds,\n features,\n url: {\n static_endpoint,\n public_sv,\n bettingPath,\n pagePath,\n gqlEndpoint = public_sv,\n staticEndpoint = static_endpoint,\n },\n participantFeatures,\n } = bettingOptions;\n\n const adaptedSelectedSportIds =\n !selectedSportIds || !selectedSportIds.length\n ? sportIds\n : selectedSportIds;\n\n return {\n url: {\n gqlEndpoint,\n staticEndpoint,\n pagePath,\n bettingPath,\n static_endpoint: staticEndpoint,\n public_sv: gqlEndpoint,\n },\n features,\n participantFeatures: participantFeatures || {},\n currency,\n locale,\n sportIds,\n tournamentIds,\n token,\n rootElement,\n isAuthorized,\n selectedSportIds: adaptedSelectedSportIds,\n };\n}\n\nexport default adaptBettingOptions;\n","import { MessageDescriptor } from 'react-intl';\nimport { Sports } from '@gin-betting/constants';\nimport core, { App, GQL, Viewport } from '@gin-betting/core';\nimport { Record as ImRecord } from 'immutable';\nimport { partition, uniq, values } from 'lodash';\n\nimport {\n BettingSettingsOptions,\n BettingWidgetsOptions,\n FullStateShape,\n IBetslipAttrManager,\n SkipInitialRequestByPage,\n State,\n TimeUnit,\n} from 'types';\nimport getExtraMatchListRoutes from 'utils/getExtraMatchListRoutes';\nimport globalMessages from './messages';\n\nconst {\n utils: { getBettingOptions },\n} = core;\n\nexport enum EventType {\n Redirect = 'redirect',\n OpenBetsHistory = 'open-bets-history',\n HandleNotEnoughBalance = 'handle-not-enough-balance',\n HandleNotEnoughDocs = 'handle-not-enough-docs',\n BetConfirm = 'bet-confirm',\n AddOdd = 'add-odd',\n OpenDeposit = 'open-deposit',\n}\n\nexport enum Destination {\n Sport = 'sport',\n Esport = 'esport',\n MixSports = 'mix-sports',\n Login = 'login',\n Outright = 'outright',\n Live = 'live',\n Results = 'results',\n Statistics = 'statistics',\n}\n\nexport enum SidebarView {\n betslip = 'betslip',\n bets = 'bets',\n promo = 'promo',\n live = 'live',\n}\n\nexport enum MatchListType {\n UPCOMING = 'upcoming',\n RESULTS = 'results',\n LIVE = 'live',\n PREMATCH = 'prematch',\n}\n\nexport enum BettingWidgets {\n BETSLIP_SIDEBAR = 'betslipSidebar',\n CATEGORIZER = 'categorizer',\n SETTINGS = 'settings',\n MOBILE_HEADER = 'mobileHeader',\n NAVIGATION = 'navigation',\n STREAM = 'stream',\n}\n\nexport enum LocalRouts {\n FAVORITE_UPCOMING = '/favorite-upcoming',\n FAVORITE_RESULTS = '/favorite-results',\n FAVORITE_OUTRIGHTS = '/favorite-outrights',\n}\n\nexport const CLASS_NAME_OF_DISABLED_PAGE = '__app--is-page-disabled' as const;\nexport const CLASS_NAME_OF_DISABLED_SCROLL = '__app--is-scroll-disabled' as const;\nexport const CLASS_NAME_OF_BETTING_COMPONENTS = '__app--is-betting' as const;\nexport const CSS_ID_OF_SETTINGS_MENU = '__app-oddFormat-select' as const;\nexport const CLASS_NAME_UPDATE_COLORS = '__app-Update-colors' as const;\n\nexport const DEFAULT_WIDGET_OPTIONS: BettingWidgetsOptions = {\n [BettingWidgets.BETSLIP_SIDEBAR]: {},\n [BettingWidgets.CATEGORIZER]: {},\n [BettingWidgets.MOBILE_HEADER]: {\n containerElementId: 'header-betting-block',\n isSettingsEnabled: true,\n },\n [BettingWidgets.NAVIGATION]: {\n isShowExtraNavigation: false,\n },\n [BettingWidgets.SETTINGS]: { containerElementId: CSS_ID_OF_SETTINGS_MENU },\n [BettingWidgets.STREAM]: {\n scrollToFirstStream: true,\n pinMinimizedStreamOutOfView: true,\n disableTheaterMode: false,\n disableMatchTracker: false,\n ignoreOffsetInTheaterMode: false,\n },\n};\n\nexport const ROOT_STYLE_ID_ELEMENT = 'betting-style-root' as const;\n\nexport const DEFAULT_BREAKPOINTS: Viewport.BreakpointsSettings = {\n superExtraSmall: 360,\n extraSmall: 480,\n small: 768,\n medium: 1096,\n large: 1347,\n major: 1366,\n extraMajor: 1439,\n great: 1560,\n extraLarge: 1920,\n};\n\nexport const marketGroupDivider = '~';\n\nconst stateShape: {\n [key in keyof FullStateShape]: undefined;\n} = {\n entities: undefined,\n filters: undefined,\n betslip: undefined,\n viewport: undefined,\n ui: undefined,\n match: undefined,\n matchList: undefined,\n pagination: undefined,\n freebet: undefined,\n favorite: undefined,\n stream: undefined,\n banners: undefined,\n favoriteMarkets: undefined,\n promo: undefined,\n};\n\nexport const AppStateRecord = ImRecord<\n FullStateShape | Partial\n>(stateShape, 'AppState');\n\nexport const MATCHES_LIMIT_PER_PAGE = 20;\nexport const MOBILE_MATCHES_LIMIT_PER_PAGE = 12;\nexport const NEWS_MATCHES_LIMIT_PER_PAGE = 10;\nexport const OUTRIGHTS_LIMIT_PER_PAGE = 100;\nexport const POLLING_EDGE_PAGE = 2; // no polling below that pagination page\n\nexport const ExtendedRouts = {\n ...App.Routes,\n ...LocalRouts,\n};\n\nexport const PublicRoutes = [\n ExtendedRouts.UPCOMING_LIST,\n ExtendedRouts.LIVE_LIST,\n ExtendedRouts.PREMATCH,\n ExtendedRouts.OUTRIGHTS_LIST,\n ExtendedRouts.RESULTS_LIST,\n ExtendedRouts.FAVORITE_UPCOMING,\n ExtendedRouts.FAVORITE_OUTRIGHTS,\n ExtendedRouts.FAVORITE_RESULTS,\n ExtendedRouts.CLASSIC,\n `${ExtendedRouts.CLASSIC}${ExtendedRouts.LIVE_LIST}`,\n `${ExtendedRouts.CLASSIC}${ExtendedRouts.PREMATCH}`,\n ExtendedRouts.ESPORT,\n `${ExtendedRouts.ESPORT}${ExtendedRouts.LIVE_LIST}`,\n `${ExtendedRouts.ESPORT}${ExtendedRouts.PREMATCH}`,\n];\n\nexport const SlugPublicRoutes = [\n ExtendedRouts.MATCH,\n ExtendedRouts.TOURNAMENT,\n ExtendedRouts.OUTRIGHT,\n ExtendedRouts.RESULT_MATCH,\n `${ExtendedRouts.ESPORT}${ExtendedRouts.MATCH}`,\n `${ExtendedRouts.CLASSIC}${ExtendedRouts.MATCH}`,\n `${ExtendedRouts.ESPORT}${ExtendedRouts.TOURNAMENT}`,\n `${ExtendedRouts.CLASSIC}${ExtendedRouts.TOURNAMENT}`,\n `${ExtendedRouts.ESPORT}${ExtendedRouts.OUTRIGHT}`,\n `${ExtendedRouts.CLASSIC}${ExtendedRouts.OUTRIGHT}`,\n `${ExtendedRouts.ESPORT}${ExtendedRouts.RESULT_MATCH}`,\n `${ExtendedRouts.CLASSIC}${ExtendedRouts.RESULT_MATCH}`,\n];\n\nexport const favoritePages = {\n upcoming: ([ExtendedRouts.FAVORITE_UPCOMING] as any) as App.Routes[],\n result: ([ExtendedRouts.FAVORITE_RESULTS] as any) as App.Routes[],\n outright: ([ExtendedRouts.FAVORITE_OUTRIGHTS] as any) as App.Routes[],\n};\n\nexport const BASE_CURRENCY = 'EUR' as const;\n\nexport const BET_STEPS = {\n 10: 1,\n 50: 5,\n 100: 10,\n 500: 50,\n 1000: 100,\n 5000: 500,\n 10000: 1000,\n 50000: 5000,\n 100000: 10000,\n Infinity: 50000,\n} as const;\n\nexport const DEFAULT_MAX_STAKE = 99999 as const;\n\n// TODO: Move to core constant, use in \"getBettingOptions\" util\nexport const BETTING_OPTIONS_KEY = 'bettingOptions' as const;\nexport const DEBUG_INFO_LOCALSTORAGE_KEY = 'debug-info' as const;\nexport const ANALYTIC_LOCALSTORAGE_KEY = '__app-analytic' as const;\nexport const ENABLE_PLACE_BET_LOCALSTORAGE_KEY = '__app-enable-place-bet' as const;\nexport const DISABLE_PARTICIPANT_FEATURES_LOCALSTORAGE_KEY = '__app-disable-participant-features' as const;\n\nexport const VIEWABLE_SPORT_LIST = [\n Sports.FOOTBALL,\n Sports.BASKETBALL,\n Sports.ICE_HOCKEY,\n Sports.TENNIS,\n Sports.AMERICAN_FOOTBALL,\n Sports.HANDBALL,\n Sports.VOLLEYBALL,\n Sports.BEACH_VOLLEYBALL,\n Sports.TABLE_TENNIS,\n Sports.BADMINTON,\n Sports.RUGBY,\n Sports.RUGBY_LEAGUE,\n Sports.BASEBALL,\n Sports.CRICKET,\n Sports.DARTS,\n Sports.FUTSAL,\n Sports.SNOOKER,\n] as const;\n\nexport enum SportEventMetaKey {\n BetradarId = 'betradar_id',\n BetradarLMTCoverageLevel = 'betradar_lmt_coverage_level',\n Time = 'time',\n TimerRunning = 'timer_running',\n Server = 'server', // NOTE: exist on App.MetaTypes\n Var = 'var',\n Bo = 'bo',\n GameState = 'game_state', // NOTE: exist on App.MetaTypes\n Map = 'map', // NOTE: exist on App.MetaTypes\n SideAway = 'side_away',\n SideHome = 'side_home',\n StateNumber = 'state_number', // NOTE: exist on App.MetaTypes\n Round = 'round', // NOTE: exist on App.MetaTypes\n OriginalId = 'original_id',\n SetState = 'set_state', // NOTE: exist on App.MetaTypes\n}\n\nexport enum MetaSide {\n Terrorist = 't',\n ContrTerrorist = 'ct',\n Radiant = 'radiant',\n Dire = 'dire',\n}\n\nexport enum SetState {\n TieBreak = 'tie_break',\n}\n\nexport enum CategorizerTournamentMetaKey {\n CountryCode = 'country_code',\n Logo = 'logo',\n Slug = 'slug',\n Organization = 'organization',\n OrganizationLocalized = 'organization_localized',\n OrganizationLogo = 'organization_logo',\n IsTop = 'is_top',\n LiveEventsCount = 'live_events_count',\n PrematchEventsCount = 'prematch_events_count',\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport const SELECTOR_STUB = (_state: State, _props?: object): null => null;\n\nexport const DEFAULT_STREAM_URL = 'about:blank' as const;\n\nexport const SKIP_MATCH_LIST_INITIAL_REQUEST: SkipInitialRequestByPage = {\n [App.Routes.PREMATCH]: {\n pages: [App.Routes.PREMATCH],\n filterKey: 'dateTo',\n },\n [App.Routes.LIVE_LIST]: {\n pages: [App.Routes.LIVE_LIST],\n filterKey: 'dateTo',\n },\n};\n\nexport const matchListRoutes = getExtraMatchListRoutes(ExtendedRouts);\n\nif (__DEV__) {\n window.bettingOptions.sportIds = values(Sports);\n}\n\n// TODO: [GINFE-1360] remove hardcode\nexport const [esportIds, classicIds] = partition(\n uniq(getBettingOptions().sportIds),\n sportId => sportId.includes('esports_')\n);\n\nexport const AVAILABLE_ROUTES_WITH_PARENT_ROUTE = [\n App.Routes.UPCOMING_LIST,\n App.Routes.LIVE_LIST,\n App.Routes.PREMATCH,\n];\n\nexport const enum TOP_MARKETS_TYPE {\n SINGLE = 'SINGLE',\n MULTIPLE = 'MULTIPLE',\n}\n\nexport const TOP_MARKETS_TYPE_MAPPING = {\n // Esports\n [Sports.ESPORTS_DOTA_2]: TOP_MARKETS_TYPE.MULTIPLE,\n [Sports.ESPORTS_FIFA]: TOP_MARKETS_TYPE.MULTIPLE,\n [Sports.ESPORTS_BASKETBALL]: TOP_MARKETS_TYPE.MULTIPLE,\n [Sports.ESPORTS_ICE_HOCKEY]: TOP_MARKETS_TYPE.MULTIPLE,\n [Sports.ESPORTS_NBA_2K18]: TOP_MARKETS_TYPE.SINGLE,\n [Sports.ESPORTS_LEAGUE_OF_LEGENDS]: TOP_MARKETS_TYPE.MULTIPLE,\n [Sports.ESPORTS_HEROES_OF_THE_STORM]: TOP_MARKETS_TYPE.SINGLE,\n [Sports.ESPORTS_STREET_FIGHTER_5]: TOP_MARKETS_TYPE.SINGLE,\n [Sports.ESPORTS_ARTIFACT]: TOP_MARKETS_TYPE.MULTIPLE,\n [Sports.ESPORTS_HEARTHSTONE]: TOP_MARKETS_TYPE.MULTIPLE,\n [Sports.ESPORTS_COUNTER_STRIKE]: TOP_MARKETS_TYPE.MULTIPLE,\n [Sports.ESPORTS_TENNIS]: TOP_MARKETS_TYPE.MULTIPLE,\n // Classic\n [Sports.FOOTBALL]: TOP_MARKETS_TYPE.MULTIPLE,\n [Sports.BASKETBALL]: TOP_MARKETS_TYPE.MULTIPLE,\n [Sports.TENNIS]: TOP_MARKETS_TYPE.MULTIPLE,\n [Sports.ICE_HOCKEY]: TOP_MARKETS_TYPE.MULTIPLE,\n [Sports.VOLLEYBALL]: TOP_MARKETS_TYPE.MULTIPLE,\n [Sports.BASEBALL]: TOP_MARKETS_TYPE.MULTIPLE,\n [Sports.BOXING]: TOP_MARKETS_TYPE.MULTIPLE,\n [Sports.FUTSAL]: TOP_MARKETS_TYPE.SINGLE,\n [Sports.HANDBALL]: TOP_MARKETS_TYPE.MULTIPLE,\n [Sports.MMA]: TOP_MARKETS_TYPE.MULTIPLE,\n [Sports.SNOOKER]: TOP_MARKETS_TYPE.SINGLE,\n [Sports.AMERICAN_FOOTBALL]: TOP_MARKETS_TYPE.MULTIPLE,\n};\n\nexport enum CMS_LINKS {\n STATISTIC = '/sport-statistics',\n}\n\nexport const ACTIVE_MARKET_STATUSES = [\n GQL.MarketStatus.ACTIVE,\n GQL.MarketStatus.SUSPENDED,\n];\n\nexport const LIVE_SPORTEVENT_STATUSES = [\n GQL.SportEventStatus.LIVE,\n GQL.SportEventStatus.SUSPENDED,\n];\n\nexport const RESULTED_ODD_STATUSES = [\n GQL.OddStatus.WIN,\n GQL.OddStatus.HALF_WIN,\n GQL.OddStatus.LOSS,\n GQL.OddStatus.HALF_LOSS,\n GQL.OddStatus.REFUNDED,\n] as const;\n\nexport const betTypesMessage: { [key in GQL.BetType]: MessageDescriptor } = {\n [GQL.BetType.SINGLE]: globalMessages.SINGLE,\n [GQL.BetType.EXPRESS]: globalMessages.EXPRESS,\n [GQL.BetType.SYSTEM]: globalMessages.SYSTEM,\n};\n\nexport const TIME_UNIT_IN_MILLISECONDS: Record = {\n minute: 1000 * 60,\n hour: 1000 * 60 * 60,\n day: 1000 * 60 * 60 * 24,\n};\n\nexport enum Product {\n ru = 'GGBet.ru',\n ua = 'GGBet.ua',\n com = 'GGBet.com',\n bet = 'GG.BET',\n unknown = 'unknown',\n}\n\nexport const TITLES_BY_SPECIFIER = {\n top: globalMessages.top,\n handicap: globalMessages.marketHandicap,\n total: globalMessages.marketTotal,\n} as const;\n\nexport const PLATFORM_BODY_ATTR = 'data-betting-platform' as const;\nexport const ODD_FORMAT_BODY_ATTR = 'data-betting-odd-format' as const;\nexport const ROOT_CSS_SCORE = ':root' as const;\n\nexport const DARK_THEME = 'dark' as const;\n\nexport enum Platform {\n MOBILE = 'mobile',\n DESKTOP = 'desktop',\n}\n\nexport enum BettingSettingsKeys {\n THEMES = 'theme',\n ODD_FORMAT = 'oddFormat',\n CALLBACKS = 'callbacks',\n IS_ENABLE_ANALYTICS = 'isEnableAnalytics',\n}\n\nexport const DEFAULT_BETTING_SETTINGS: BettingSettingsOptions = {\n [BettingSettingsKeys.ODD_FORMAT]: App.OddFormat.Decimal,\n [BettingSettingsKeys.CALLBACKS]: {},\n [BettingSettingsKeys.IS_ENABLE_ANALYTICS]: false,\n [BettingSettingsKeys.THEMES]: DARK_THEME,\n};\n\nexport const MARKETS_ACTIVE_STATUSES: GQL.MarketStatus[] = [\n GQL.MarketStatus.ACTIVE,\n GQL.MarketStatus.SUSPENDED,\n];\n\nexport const ODD_WIN_STATUSES: GQL.OddStatus[] = [\n GQL.OddStatus.WIN,\n GQL.OddStatus.HALF_WIN,\n];\n\nexport const ODD_LOSS_STATUSES: GQL.OddStatus[] = [\n GQL.OddStatus.LOSS,\n GQL.OddStatus.HALF_LOSS,\n];\n\nexport const countryReg = new RegExp(/\\(([a-zA-Z]{2}-)?[a-zA-Z]{2,8}\\)/, 'g');\n\nexport const BetslipAttrManager: IBetslipAttrManager = {};\n\nexport const FILTER_LOCATION_SEARCH: Array = [\n 'dateTo',\n 'dateFrom',\n 'tournamentIds',\n 'tournamentId',\n 'freeBetId',\n 'betslipOdds',\n 'limit',\n 'offset',\n];\n\nexport enum CompareStatus {\n Greater = 'greater',\n Smaller = 'smaller',\n Equal = 'equal',\n}\n\nexport enum MarketTag {\n EnumerableOddCompetitor = 'enumerable-odd-competitor',\n}\n\nexport const RACE_SPORTS = [Sports.HORSE_RACING] as const;\n\nexport const BET_UNSETTLED_STATUSES = [\n GQL.BetStatus.PLACED,\n GQL.BetStatus.ARBITRAGE_ACCEPTED,\n GQL.BetStatus.ACCEPTED,\n GQL.BetStatus.UNSETTLED,\n] as const;\n\nexport const BET_SETTLED_STATUSES = [\n GQL.BetStatus.SETTLED,\n GQL.BetStatus.ROLLED_BACK,\n];\nexport const OUTRIGHTS_ONLY_SPORTS = [\n Sports.ESPORTS_BATTLEGROUNDS,\n Sports.HORSE_RACING,\n] as const;\n","import { App } from '@gin-betting/core';\nimport { flatten } from 'lodash';\n\n// Prevent circular dependency\nimport type { ExtendedRouts } from 'types';\nimport removeLastSlash from './removeLastSlash';\n\nexport default function getExtraMatchListRoutes(\n routs: typeof ExtendedRouts\n): string[] {\n // Attention sync with InnerRouts\n\n return [\n routs.UPCOMING_LIST,\n routs.OUTRIGHTS_LIST,\n routs.RESULTS_LIST,\n routs.LIVE_LIST,\n routs.PREMATCH,\n routs.CLASSIC,\n routs.ESPORT,\n routs.TOURNAMENT,\n ...flatten([routs.CLASSIC, routs.ESPORT].map(makeExtraMatchListRoutes)),\n ].map(removeLastSlash);\n\n function makeExtraMatchListRoutes(\n parentRoute: App.Routes.CLASSIC | App.Routes.ESPORT\n ): string[] {\n // Attention sync with InnerRouts\n return [\n routs.LIVE_LIST,\n routs.OUTRIGHTS_LIST,\n routs.RESULTS_LIST,\n routs.PREMATCH,\n routs.TOURNAMENT,\n ].map(route => `${parentRoute}${route}`);\n }\n}\n","import core from '@gin-betting/core';\nimport 'root/cms-mock/initScript'; // Don't remove. NOTE: initScript should be init at first !\nimport 'services/locale-manager'; // Don't remove. NOTE: LocaleManager should be init at first !\nimport 'timing.js';\n\nimport UserDevice from 'services/user-device';\nimport getBettingAPI from './root/getBettingAPI';\nimport adaptBettingOptions from './utils/adaptBettingOptions';\n\nimport './global.scss';\nimport './styles/sizes.scss';\n\nconst {\n utils: { getBettingOptions },\n} = core;\n\nwindow.__app = window.__app || ({} as AppPublicAPI);\nwindow.__app.timings = {};\n\ninit();\n\nif (__DEV__) {\n let disabledHeader: HTMLElement | null = null;\n let enabledHeader: HTMLElement | null = null;\n\n if (UserDevice.getInstance()?.isDeviceMobile()) {\n disabledHeader = document.getElementById('header');\n enabledHeader = document.getElementById('mobile-header');\n } else {\n disabledHeader = document.getElementById('mobile-header');\n enabledHeader = document.getElementById('header');\n }\n\n if (disabledHeader) {\n disabledHeader.style.display = 'none';\n }\n\n if (enabledHeader) {\n enabledHeader.style.display = 'block';\n }\n}\n\nfunction init() {\n // @ts-ignore\n window.bettingOptions = adaptBettingOptions(window.bettingOptions);\n\n const bettingAPI = getBettingAPI();\n // @ts-ignore\n window.bettingAPI = bettingAPI;\n\n UserDevice.init();\n\n if (__DEV__) {\n window.bettingLoader = {\n __getLocale: require('./getLocaleByCMSLocale').default(\n getBettingOptions().locale\n ),\n } as any;\n // @ts-ignore\n // bettingAPI.setupBreakpoints({\n // medium: 900,\n // });\n // bettingAPI.setupWidget(BettingWidgets.BETSLIP_SIDEBAR, {\n // containerElementId: 'betslip',\n // isOpen: true,\n // canToggle: true,\n // });\n // bettingAPI.setupWidget(BettingWidgets.CATEGORIZER, {\n // containerElementId: 'categorizer',\n // });\n\n // @ts-ignore\n window.bettingAPI.enableAnalytics(true);\n // @ts-ignore\n window.bettingAPI.subscribe('redirect', ({ destination, link }) => {\n switch (destination) {\n case 'mix-sports':\n case 'esport':\n case 'sport':\n default: {\n // console.log({ destination, link });\n }\n }\n });\n\n return bettingAPI.init();\n }\n\n window.bettingLoader?.__publishBettingAPI(bettingAPI);\n}\n\n// function setupSentry() {\n// const bettingOptions = getBettingOptions();\n\n// if (\n// !bettingOptions ||\n// __DEV__ ||\n// location.hostname.includes('stage') ||\n// location.hostname.includes('dev.') || // cv stage\n// location.hostname.includes('cv.staging') // cv stage\n// ) {\n// return;\n// }\n\n// const { locale, currency, token, isAuthorized, url } = bettingOptions;\n\n// sentryHub.setClient({\n// dsn: 'https://2c0fef52363e4a778cd5399f9ecded0f@sentry.io/297300',\n// release: __SENTRY_RELEASE__,\n// environment: 'production',\n// sampleRate: 0.1,\n// maxBreadcrumbs: 20,\n// enabled: true,\n// ignoreErrors: [\n// 'top.GLOBALS',\n// 'originalCreateNotification',\n// 'canvas.contentDocument',\n// 'fb_xd_fragment',\n// 'Failed to fetch',\n// 'NetworkError when attempting to fetch resource.',\n// 'A batched Operation of responses for',\n// 'window.dohander.getBody',\n// 'window.dor.by',\n// 'AbortError',\n// 'player.twitch.tv',\n// ],\n// blacklistUrls: [\n// /\\/(gtm|ga|analytics)\\.js/i,\n// /extensions\\//i,\n// /^chrome:\\/\\//i,\n// /mobile-build.js/i,\n// /mobile_main_user/i,\n// ],\n// });\n\n// sentryHub.setTags({\n// locale,\n// currency,\n// authorized: isAuthorized ? 'true' : 'false',\n// version: __VERSION__,\n// });\n\n// sentryHub.setExtras({\n// token,\n// pagePath: url.pagePath,\n// timings: window.__app.timings,\n// });\n// }\n","import core from '@gin-betting/core';\nimport { includes, noop, transform, uniq, values } from 'lodash';\n\nimport {\n ANALYTIC_LOCALSTORAGE_KEY,\n BettingSettingsKeys,\n ExtendedRouts,\n FILTER_LOCATION_SEARCH,\n PublicRoutes,\n SlugPublicRoutes,\n} from 'app-constants';\nimport type { IBettingAPI, SearchObj } from 'types';\nimport { parse, stringify } from 'utils';\nimport { FieldsObj } from './types';\n\nconst SLUG = 'slug' as const;\n\nconst {\n constants: { ROUTE_DIVIDER },\n utils: { getBettingOptions },\n} = core;\n\nconst routes = uniq([\n ...values(ExtendedRouts),\n ...SlugPublicRoutes,\n ...PublicRoutes,\n]);\n\nconst LOG_TRACKER: UniversalAnalytics.Tracker = {\n get: noop,\n set: noop,\n send: console.log,\n};\n\nlet isEnable = false;\nlet isSubscribed = false;\n\nconst getTracker = (): UniversalAnalytics.Tracker | undefined => {\n const bettingApi: IBettingAPI | undefined = (window as any).bettingAPI;\n\n if (bettingApi && !isSubscribed) {\n isSubscribed = true;\n\n bettingApi.subscribeOnBettingSetting(\n BettingSettingsKeys.IS_ENABLE_ANALYTICS,\n (flag: boolean) => {\n isEnable = flag;\n }\n );\n }\n\n if (!isEnable) return;\n\n const isAnalyticTurnedOn = !!localStorage.getItem(\n ANALYTIC_LOCALSTORAGE_KEY\n );\n\n if (isAnalyticTurnedOn) {\n return LOG_TRACKER;\n }\n\n // NOTE: If you happen to be using multiple, you may need to fetch the appropriate one by name or index.\n const GAIndex = 0 as const;\n\n const getAll = (window.ga as UniversalAnalytics.ga | undefined)?.getAll;\n\n if (typeof getAll !== 'function') return;\n\n // window.ga can be undefined\n return getAll()[GAIndex];\n};\n\nlet ffCache: string | undefined;\n\nconst getParticipantFeaturesLabel = (): string => {\n if (typeof ffCache !== 'undefined') return ffCache;\n\n const { participantFeatures } = getBettingOptions();\n\n const formattedFeaturesData = Object.values(participantFeatures).reduce(\n (acc, { scenario_identifier, feature_variant, for_analysis }) => {\n return for_analysis\n ? [\n ...acc,\n {\n name: scenario_identifier,\n variant: feature_variant,\n },\n ]\n : acc;\n },\n []\n );\n\n const formattedFeaturesString = formattedFeaturesData.length\n ? `FF: ${JSON.stringify(formattedFeaturesData)}`\n : '';\n\n ffCache = formattedFeaturesString;\n\n return formattedFeaturesString;\n};\n\nexport const sendAnalytics = (\n fieldsObj: FieldsObj,\n label: string | undefined | null\n): void => {\n const tracker = getTracker();\n\n if (!tracker) return;\n\n const labels = [label, getParticipantFeaturesLabel()].filter(l => !!l);\n\n if (labels.length) {\n fieldsObj.eventLabel = labels.join('; ');\n }\n\n tracker.send('event', fieldsObj);\n};\n\nexport const formatPathname = (pathname: string): string => {\n const isRouteWithSlug = routes.every(route => route !== pathname);\n\n return isRouteWithSlug\n ? pathname\n .split(ROUTE_DIVIDER)\n .slice(0, -1)\n .concat(SLUG)\n .join(ROUTE_DIVIDER)\n : pathname;\n};\n\nexport const formatSearch = (search: string): string => {\n const object = parse(search);\n const searchTransform = transform(\n object,\n (result, value, key) => {\n result[key] = includes(FILTER_LOCATION_SEARCH, key)\n ? ''\n : (value as any);\n },\n {} as SearchObj\n );\n\n const s = stringify(searchTransform);\n\n return s ? `?${s}` : s;\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"page-wrapper\":\"app__page-wrapper___9hhzc\",\"dropdown-wrapper\":\"app__dropdown-wrapper___3yuZt\",\"middle\":\"app__middle___cwUcf\"};","import cd from 'debug';\nimport { findKey, includes, throttle } from 'lodash';\n\nconst debug = cd('app:services:tracking-manager');\n\nexport enum Target {\n MainbetAdd = 'mainbet_add',\n LivebetAdd = 'livebet_add',\n FooterbetAdd = 'footerbet_add',\n GamesContainerMarket = 'games_container_market',\n AcceptBet = 'accept_bet',\n NotacceptBet = 'notaccept_bet',\n OddsUpdates = 'odds_updates',\n DeleteAll = 'delete_all',\n Minimize = 'minimize',\n MakeBet = 'make_bet',\n TheaterModeVideoOpen = 'theatermode_video_open',\n TheaterModeVideoClose = 'theatermode_video_close',\n TheaterModeMatchOpen = 'theatermode_match_open',\n TheaterModeMatchClose = 'theatermode_match_close',\n $BetAdd = 'bet_add',\n}\n\nenum Origin {\n Main = 'main',\n Live = 'live',\n Footer = 'footer',\n}\n\ntype EventWithPath = Event & {\n path?: EventTarget[];\n};\n\nclass TrackingManager {\n public registerUserAction(target: string): void {\n if (!window.dataLayer) {\n window.dataLayer = [];\n }\n\n if (typeof window.dataLayer.push === 'function') {\n window.dataLayer.push({ event: target });\n debug('update dataLayer', window.dataLayer);\n }\n }\n\n public markTarget(target: Target | null) {\n if (!target) return {};\n\n return { 'data-analytics-info': target };\n }\n\n public markOrigin(origin: Origin): { 'data-analytics-origin': Origin } {\n return { 'data-analytics-origin': origin };\n }\n\n private getEventPath(e: EventWithPath): HTMLElement[] {\n const path = (e.composedPath && e.composedPath()) || e.path;\n const { target } = e;\n\n if (path != null) {\n return (path.indexOf(window) < 0\n ? path.concat(window)\n : path) as HTMLElement[];\n }\n\n if (target === window) {\n return [window] as any[];\n }\n\n function getParents(\n node: EventTarget | null,\n memo: EventTarget[] | null\n ): EventTarget[] {\n const memoResult = memo || [];\n const { parentNode } = node;\n\n if (!parentNode) {\n return memoResult;\n }\n\n return getParents(parentNode, memoResult.concat(parentNode));\n }\n\n return [target].concat(\n getParents(target, null),\n window\n ) as HTMLElement[];\n }\n\n private handleUserClick = (e: Event) => {\n debug('handle event', e);\n\n let originInfo = '';\n const ePath = this.getEventPath(e);\n\n ePath.reverse().forEach(element => {\n if (!element || !element.dataset) {\n return;\n }\n\n if (element.dataset.analyticsOrigin) {\n originInfo = element.dataset.analyticsOrigin;\n }\n\n const attribute = element.dataset.analyticsInfo;\n\n if (attribute) {\n const targetKey = findKey(Target, value => value === attribute);\n\n if (targetKey && targetKey.includes('$') && originInfo) {\n this.registerUserAction(originInfo + attribute);\n } else if (includes(Target, attribute)) {\n this.registerUserAction(attribute);\n }\n }\n });\n };\n\n private throttledUserClickHandler = throttle(this.handleUserClick, 300, {\n trailing: false,\n });\n\n public init() {\n document.addEventListener('mousedown', this.throttledUserClickHandler);\n document.addEventListener('touchstart', this.throttledUserClickHandler);\n }\n\n public cleanUp() {\n document.removeEventListener(\n 'mousedown',\n this.throttledUserClickHandler\n );\n document.removeEventListener(\n 'touchstart',\n this.throttledUserClickHandler\n );\n }\n}\n\nlet trackingManagerInstance: TrackingManager | null = null;\n\nfunction getTrackingManager(): TrackingManager {\n if (!trackingManagerInstance) {\n trackingManagerInstance = new TrackingManager();\n }\n\n return trackingManagerInstance;\n}\n\nexport { getTrackingManager as tracker };\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"stubMatchRow__container___rA1HM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"featuredTournamentsRow__container___3LmLL\",\"info\":\"featuredTournamentsRow__info___J0V0-\",\"name\":\"featuredTournamentsRow__name___3G0BR\",\"is-active\":\"featuredTournamentsRow__is-active___1OM4l\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"icon\":\"organizationIcon__icon___23G9l\"};","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"arrow_056ca\",\n \"use\": \"arrow_056ca-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"overviewRow__container___2uPYc\",\"is-prematch-mobile-view\":\"overviewRow__is-prematch-mobile-view___EKQvo\",\"is-extra-small\":\"overviewRow__is-extra-small___1KRzu\",\"info\":\"overviewRow__info___7DMyn\",\"titles\":\"overviewRow__titles___1lgxA\",\"fixture\":\"overviewRow__fixture___4kWwA\",\"markets\":\"overviewRow__markets___1UIqn\",\"score\":\"overviewRow__score___H0Oik\"};","import core from '@gin-betting/core';\nimport { last } from 'lodash';\n\nconst {\n constants: { ROUTE_DIVIDER },\n} = core;\n\nexport default function removeLastSlash(route: string): string {\n if (last(route) === ROUTE_DIVIDER && route.length > 1) {\n return route.slice(0, -1);\n }\n\n return route;\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"settingsMobileOverlay__container___dhpgN\",\"title\":\"settingsMobileOverlay__title___3smB8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"ListNav__container___3rIzc\",\"is-mobile\":\"ListNav__is-mobile___101Bq\",\"button\":\"ListNav__button___X9cH2\"};","import { App } from '@gin-betting/core';\n\nexport default function isMetaTypeEqualScoreType(\n metaType: App.MetaTypes,\n scoreType: App.ScoreTypes\n): boolean {\n switch (metaType) {\n case App.MetaTypes.TYPE_MAP: {\n return scoreType === App.ScoreTypes.TYPE_MAP;\n }\n\n case App.MetaTypes.TYPE_SET: {\n return [\n App.ScoreTypes.TYPE_GAME_POINTS,\n App.ScoreTypes.TYPE_SET,\n ].includes(scoreType);\n }\n\n case App.MetaTypes.TYPE_INNING: {\n return [\n App.ScoreTypes.TYPE_INNING_OUTS,\n App.ScoreTypes.TYPE_INNING_POINTS,\n ].includes(scoreType);\n }\n\n case App.MetaTypes.TYPE_QUARTER: {\n return scoreType === App.ScoreTypes.TYPE_QUARTER;\n }\n\n case App.MetaTypes.TYPE_OVERTIME: {\n return [\n App.ScoreTypes.TYPE_ROUND_OVERTIME,\n App.ScoreTypes.TYPE_PERIOD_OVERTIME,\n App.ScoreTypes.TYPE_QUARTER_OVERTIME,\n ].includes(scoreType);\n }\n\n case App.MetaTypes.TYPE_BULLETS: {\n return scoreType === App.ScoreTypes.TYPE_PERIOD_BULLETS;\n }\n\n case App.MetaTypes.TYPE_PERIOD_REGULAR: {\n return scoreType === App.ScoreTypes.TYPE_PERIOD_REGULAR;\n }\n\n case App.MetaTypes.TYPE_REGULAR: {\n return scoreType === App.ScoreTypes.TYPE_PERIOD_REGULAR;\n }\n\n case App.MetaTypes.TYPE_GOLDEN_SET: {\n return scoreType === App.ScoreTypes.TYPE_GOLDEN_SET;\n }\n\n case App.MetaTypes.TYPE_PERIOD_1ST_HALF: {\n return scoreType === App.ScoreTypes.TYPE_PERIOD_1ST_HALF;\n }\n\n case App.MetaTypes.TYPE_PERIOD_1ST_EXTRA: {\n return scoreType === App.ScoreTypes.TYPE_PERIOD_1ST_EXTRA;\n }\n\n case App.MetaTypes.TYPE_PERIOD_2ND_HALF: {\n return scoreType === App.ScoreTypes.TYPE_PERIOD_2ND_HALF;\n }\n\n case App.MetaTypes.TYPE_PERIOD_2ND_EXTRA: {\n return scoreType === App.ScoreTypes.TYPE_PERIOD_2ND_EXTRA;\n }\n\n case App.MetaTypes.TYPE_PERIOD_PENALTIES: {\n return scoreType === App.ScoreTypes.TYPE_PERIOD_PENALTIES;\n }\n\n default: {\n return metaType === (scoreType as any);\n }\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CheckBox__container___3pUCo\",\"checked\":\"CheckBox__checked___3JzjU\",\"icon\":\"CheckBox__icon___2t0Pj\",\"reversed\":\"CheckBox__reversed___1s_vy\"};","type AnyFunction = (...args: T[]) => any;\n\nfunction bindTrailingArgs(fn: AnyFunction, ...boundArgs: T[]) {\n return (...args: T[]) => {\n return fn(...args, ...boundArgs);\n };\n}\n\nexport default bindTrailingArgs;\n","export default function checkArrayLength(\n arr: T[],\n size: N\n): arr is Tuple {\n return arr.length === size;\n}\n","import core from '@gin-betting/core';\nimport get from 'ts-get';\n\nconst {\n utils: { getBettingOptions },\n} = core;\n\nfunction checkIfNewsPage() {\n return get(\n getBettingOptions(),\n bettingOptions => bettingOptions.url.pagePath,\n ''\n ).includes('/news');\n}\n\nexport default checkIfNewsPage;\n","import { includes, values } from 'lodash';\n\nimport { CMS_LINKS } from 'app-constants';\n\nconst cmsLinks = values(CMS_LINKS);\n\nexport default function checkIsCmsLink(str: string) {\n return includes(cmsLinks, str);\n}\n","import core, { App } from '@gin-betting/core';\n\nconst {\n utils: { isOneOfPages },\n} = core;\n\nexport default function checkIsDynamicCategorizer(): boolean {\n return isOneOfPages(\n [\n App.Routes.OUTRIGHTS_LIST,\n App.Routes.OUTRIGHT,\n App.Routes.RESULTS_LIST,\n ],\n {\n exact: true,\n }\n );\n}\n","import { OrderedSet } from 'immutable';\n\nfunction checkIsListReady(\n matchIdsWithVisibilityFlags: OrderedSet | undefined,\n matchIds: OrderedSet\n): boolean {\n return !!(\n (matchIdsWithVisibilityFlags && matchIdsWithVisibilityFlags.size) ||\n matchIds.size\n );\n}\n\nexport default checkIsListReady;\n","import { StreamWidgetOptions } from '../types';\n\nexport default function checkIsMatchTrackerDisabled(\n disableMatchTracker: StreamWidgetOptions['disableMatchTracker'] | undefined,\n sportId: string | undefined\n): boolean {\n if (typeof disableMatchTracker === 'boolean') return disableMatchTracker;\n if (!sportId || !disableMatchTracker) return false;\n\n return disableMatchTracker.includes(sportId);\n}\n","interface Input {\n hasValidStream: boolean;\n hasValidBetradarId: boolean;\n isMatchTrackerDisabled?: boolean;\n}\n\nconst checkIsSportEventViewable = ({\n hasValidStream,\n hasValidBetradarId,\n isMatchTrackerDisabled,\n}: Input) => {\n return hasValidStream || (hasValidBetradarId && !isMatchTrackerDisabled);\n};\n\nexport default checkIsSportEventViewable;\n","export default function checkKeyInObj(\n obj: T,\n key: string | number | symbol\n): key is keyof OmitExtraProps {\n return key in obj;\n}\n","import core from '@gin-betting/core';\n\nimport { SkipInitialRequestConfig } from 'types';\n\nconst {\n utils: { getAppliedFilters, isOneOfPages },\n} = core;\n\nexport default function checkSkipPollerConfiguration(\n config: SkipInitialRequestConfig | undefined\n): boolean {\n if (!config) return false;\n\n const { pages, filterKey } = config;\n\n return isOneOfPages(pages) && !!getAppliedFilters()[filterKey];\n}\n","import { values } from 'lodash';\nimport { Primitive } from 'type-fest';\n\nexport default function checkValueInObj(\n obj: T,\n value: Primitive\n): value is T[keyof T] {\n return values(obj).includes(value);\n}\n","import {\n BettingWidgets,\n BettingWidgetsOptions,\n WidgetPortalContainer,\n} from '../types';\n\nexport default function checkWidgetContainerProvided(\n widget: BettingWidgetsOptions[T]\n): widget is Required {\n return (widget as WidgetPortalContainer).containerElementId !== undefined;\n}\n","interface RGB {\n red: number;\n green: number;\n blue: number;\n}\n\n// long hex - 7 digits. Example: #ffffff\n// shot hex - 4 digits. Example: #fff\n// hexCode - without '#'. Example: fff, ffffff\n\nexport default function convertHexToRgb(hexClr: string): RGB | Error {\n const isShortHex = hexClr.length === 4;\n const isLongHex = hexClr.length === 7;\n\n if ((!isShortHex && !isLongHex) || hexClr[0] !== '#')\n return new Error(`Color hex value is incorrect: \"${hexClr}\"`);\n\n const hexCode = hexClr.slice(1);\n const longHexCode = isLongHex\n ? hexCode\n : convertShortToLongHexCode(hexCode);\n\n return {\n red: parseInt(longHexCode.substr(0, 2), 16),\n green: parseInt(longHexCode.substr(2, 2), 16),\n blue: parseInt(longHexCode.substr(4, 2), 16),\n };\n}\n\nfunction convertShortToLongHexCode(shortHexCode: string): string {\n return shortHexCode\n .split('')\n .map(letter => letter.repeat(2))\n .join('');\n}\n","function convertNameToRuLocale(title: string | null | undefined): string {\n if (!title) return '';\n\n return title;\n}\n\nexport default convertNameToRuLocale;\n","enum TimeUnit {\n Day = 24 * 60 * 60,\n Hour = 60 * 60,\n Minute = 60,\n Second = 1,\n}\n\nexport default function convertSecondsToTimerFormat(\n seconds: number,\n dividers: TimeUnit[],\n dividerIndex: number = 0\n): string {\n const currentDivider = dividers[dividerIndex];\n\n if (!currentDivider) return '';\n\n const wholePart = Math.abs(Math.trunc(seconds / currentDivider));\n const fractionPart = seconds % currentDivider;\n\n if (dividers.length === dividerIndex + 1) return zeroFill(wholePart);\n\n const sign = dividerIndex === 0 && seconds < 0 ? '-' : '';\n\n return (\n sign +\n zeroFill(wholePart)\n .concat(':')\n .concat(\n convertSecondsToTimerFormat(\n fractionPart,\n dividers,\n dividerIndex + 1\n )\n )\n );\n}\n\nfunction zeroFill(n: number): string {\n if (n < 10) return `0${n}`;\n\n return `${n}`;\n}\n","import { CLASS_NAME_OF_BETTING_COMPONENTS } from 'app-constants';\n\nexport default function createPortalNode(): HTMLElement {\n const el = document.createElement('aside');\n el.classList.add(CLASS_NAME_OF_BETTING_COMPONENTS);\n\n return el;\n}\n","import core from '@gin-betting/core';\n\nconst {\n constants: { ROUTE_DIVIDER },\n utils: {\n extractParentRouteFromHistory: extractParentRouteFromHistoryVendor,\n },\n} = core;\n\nexport default function extractParentRouteFromHistory() {\n const parentRoute = extractParentRouteFromHistoryVendor();\n\n if (parentRoute === ROUTE_DIVIDER) return '';\n\n return parentRoute;\n}\n","import core, { App, GQL } from '@gin-betting/core';\n\nimport { ACTIVE_MARKET_STATUSES } from 'app-constants';\n\nconst { appServiceLocator } = core;\n\nconst apiClient = appServiceLocator.get('apiClient');\n\nconst fetchFeaturedCustomList = (\n slug: string\n): Promise> =>\n apiClient\n .makeRequest({\n method: 'getFeaturedCustomList',\n variables: {\n slug,\n limit: 20,\n offset: 0,\n marketStatuses: ACTIVE_MARKET_STATUSES,\n matchStatuses: [\n GQL.SportEventStatus.LIVE,\n GQL.SportEventStatus.NOT_STARTED,\n GQL.SportEventStatus.SUSPENDED,\n ],\n isTopMarkets: true,\n marketLimit: 3,\n },\n })\n .catch(err => {\n console.error(err);\n });\n\nexport default fetchFeaturedCustomList;\n","import core, { App, GQL } from '@gin-betting/core';\n\nimport { ACTIVE_MARKET_STATUSES } from 'app-constants';\n\nconst { appServiceLocator } = core;\n\nasync function fetchOutrightsByTournamentIds(\n tournamentIds: string[],\n retriesLeft: number = 3,\n retryInterval: number = 1000\n): Promise> {\n const apiClient = appServiceLocator.get('apiClient');\n\n try {\n return await apiClient.makeRequest({\n method: 'getMatchesByFilters',\n variables: {\n tournamentIds,\n marketStatuses: ACTIVE_MARKET_STATUSES,\n marketStatusesForSportEvent: ACTIVE_MARKET_STATUSES,\n matchStatuses: [\n GQL.SportEventStatus.NOT_STARTED,\n GQL.SportEventStatus.SUSPENDED,\n GQL.SportEventStatus.LIVE,\n ],\n sportEventTypes: [GQL.SportEventType.OUTRIGHT],\n limit: 20,\n offset: 0,\n // NOTE: null stands for empty filter to override default value defined in GQL file\n marketLimit: null,\n },\n });\n } catch (err) {\n if (retriesLeft < 1) {\n return err;\n }\n\n await new Promise(resolve => setTimeout(resolve, retryInterval));\n\n return fetchOutrightsByTournamentIds(tournamentIds, retriesLeft - 1);\n }\n}\n\nexport default fetchOutrightsByTournamentIds;\n","import { Sports } from '@gin-betting/constants';\nimport { App, View } from '@gin-betting/core';\nimport { findLast } from 'lodash';\n\nimport { LIVE_SPORTEVENT_STATUSES } from 'app-constants';\nimport type { MatchPartInfo } from 'types';\n\nconst TENNIS_HIDDEN_SCORES_TYPES_RESULT_PAGE: App.ScoreTypes[] = [\n App.ScoreTypes.TYPE_GOLDEN_SET,\n App.ScoreTypes.TYPE_GAME_POINTS,\n App.ScoreTypes.TYPE_TIE_BREAK,\n];\n\ntype ScoreTypesMap = {\n [key in App.MetaTypes]?: App.ScoreTypes[];\n};\n\nconst footballFilterScoreTypesMap: ScoreTypesMap = {\n [App.MetaTypes.TYPE_PERIOD_1ST_HALF]: [App.ScoreTypes.TYPE_TOTAL],\n [App.MetaTypes.TYPE_PERIOD_2ND_HALF]: [\n App.ScoreTypes.TYPE_TOTAL,\n App.ScoreTypes.TYPE_PERIOD_1ST_HALF,\n ],\n [App.MetaTypes.TYPE_PERIOD_1ST_EXTRA]: [\n App.ScoreTypes.TYPE_TOTAL,\n App.ScoreTypes.TYPE_PERIOD_1ST_HALF,\n App.ScoreTypes.TYPE_PERIOD_2ND_HALF,\n ],\n [App.MetaTypes.TYPE_PERIOD_2ND_EXTRA]: [\n App.ScoreTypes.TYPE_TOTAL,\n App.ScoreTypes.TYPE_PERIOD_1ST_HALF,\n App.ScoreTypes.TYPE_PERIOD_2ND_HALF,\n App.ScoreTypes.TYPE_PERIOD_1ST_EXTRA,\n ],\n [App.MetaTypes.TYPE_PERIOD_PENALTIES]: [\n App.ScoreTypes.TYPE_TOTAL,\n App.ScoreTypes.TYPE_PERIOD_1ST_HALF,\n App.ScoreTypes.TYPE_PERIOD_2ND_HALF,\n App.ScoreTypes.TYPE_PERIOD_1ST_EXTRA,\n App.ScoreTypes.TYPE_PERIOD_2ND_EXTRA,\n ],\n};\n\nconst footballOverviewScoreTypesMap: ScoreTypesMap = {\n [App.MetaTypes.TYPE_PERIOD_1ST_HALF]: [\n App.ScoreTypes.TYPE_TOTAL,\n App.ScoreTypes.TYPE_RED_CARD,\n App.ScoreTypes.TYPE_PERIOD_1ST_HALF,\n ],\n [App.MetaTypes.TYPE_PERIOD_2ND_HALF]: [\n App.ScoreTypes.TYPE_TOTAL,\n App.ScoreTypes.TYPE_RED_CARD,\n App.ScoreTypes.TYPE_PERIOD_1ST_HALF,\n App.ScoreTypes.TYPE_PERIOD_2ND_HALF,\n ],\n [App.MetaTypes.TYPE_PERIOD_1ST_EXTRA]: [\n App.ScoreTypes.TYPE_TOTAL,\n App.ScoreTypes.TYPE_RED_CARD,\n App.ScoreTypes.TYPE_PERIOD_2ND_HALF,\n App.ScoreTypes.TYPE_PERIOD_1ST_EXTRA,\n ],\n [App.MetaTypes.TYPE_PERIOD_2ND_EXTRA]: [\n App.ScoreTypes.TYPE_TOTAL,\n App.ScoreTypes.TYPE_RED_CARD,\n App.ScoreTypes.TYPE_PERIOD_1ST_EXTRA,\n App.ScoreTypes.TYPE_PERIOD_2ND_EXTRA,\n ],\n [App.MetaTypes.TYPE_PERIOD_PENALTIES]: [\n App.ScoreTypes.TYPE_TOTAL,\n App.ScoreTypes.TYPE_RED_CARD,\n App.ScoreTypes.TYPE_PERIOD_2ND_EXTRA,\n App.ScoreTypes.TYPE_PERIOD_PENALTIES,\n ],\n};\n\nconst footballFilter = (\n scores: View.ScoreInfo[],\n matchPartInfo: MatchPartInfo,\n isOverview: boolean\n) => {\n const matchPartInfoType = matchPartInfo.type;\n\n if (!matchPartInfoType) return scores;\n\n const scoreTypesMap = isOverview\n ? footballOverviewScoreTypesMap\n : footballFilterScoreTypesMap;\n const scoreTypesCollection = scoreTypesMap[matchPartInfoType];\n\n if (!scoreTypesCollection) return scores;\n\n return scores.filter(\n ({ type, home, away }) =>\n scoreTypesCollection.includes(type) &&\n (type !== App.ScoreTypes.TYPE_RED_CARD || !!(+home + +away))\n );\n};\n\nconst iceHockeyFilter = (\n scores: View.ScoreInfo[],\n matchPartInfo: MatchPartInfo,\n isOverview: boolean\n) => {\n if (isOverview) {\n return getLastTwoScores({\n scores,\n scoreTypes: App.ScoreTypes.TYPE_PERIOD_REGULAR,\n isOverview,\n });\n }\n\n switch (true) {\n case matchPartInfo.type === App.MetaTypes.TYPE_REGULAR &&\n matchPartInfo.indexNumber === 1: {\n return scores.filter(s =>\n [App.ScoreTypes.TYPE_TOTAL].includes(s.type)\n );\n }\n\n case matchPartInfo.type === App.MetaTypes.TYPE_REGULAR &&\n matchPartInfo.indexNumber === 2: {\n return scores.filter(\n s =>\n s.type === App.ScoreTypes.TYPE_TOTAL ||\n (s.type === App.ScoreTypes.TYPE_PERIOD_REGULAR &&\n s.indexNumber === 1)\n );\n }\n\n case matchPartInfo.type === App.MetaTypes.TYPE_REGULAR &&\n matchPartInfo.indexNumber === 3: {\n return scores.filter(\n s =>\n s.type === App.ScoreTypes.TYPE_TOTAL ||\n (s.type === App.ScoreTypes.TYPE_PERIOD_REGULAR &&\n [1, 2].includes(s.indexNumber))\n );\n }\n\n case matchPartInfo.type === App.MetaTypes.TYPE_OVERTIME: {\n return scores.filter(s =>\n [\n App.ScoreTypes.TYPE_TOTAL,\n App.ScoreTypes.TYPE_PERIOD_OVERTIME,\n App.ScoreTypes.TYPE_PERIOD_REGULAR,\n ].includes(s.type)\n );\n }\n\n case matchPartInfo.type === App.MetaTypes.TYPE_BULLETS: {\n return scores.filter(s =>\n [\n App.ScoreTypes.TYPE_TOTAL,\n App.ScoreTypes.TYPE_PERIOD_REGULAR,\n ].includes(s.type)\n );\n }\n\n default: {\n return scores;\n }\n }\n};\n\nconst basketballFilter = (\n scores: View.ScoreInfo[],\n matchPartInfo: MatchPartInfo,\n isOverview: boolean\n) => {\n if (isOverview) {\n switch (true) {\n case matchPartInfo.type === App.MetaTypes.TYPE_QUARTER &&\n matchPartInfo.indexNumber === 1: {\n return scores.filter(s =>\n [App.ScoreTypes.TYPE_TOTAL].includes(s.type)\n );\n }\n\n case matchPartInfo.type === App.MetaTypes.TYPE_OVERTIME:\n case matchPartInfo.type === App.MetaTypes.TYPE_QUARTER: {\n return getLastTwoScores({\n scores,\n scoreTypes: App.ScoreTypes.TYPE_QUARTER,\n isOverview,\n });\n }\n\n default: {\n return scores;\n }\n }\n }\n\n switch (true) {\n case matchPartInfo.type === App.MetaTypes.TYPE_QUARTER &&\n matchPartInfo.indexNumber === 1: {\n return scores.filter(s =>\n [App.ScoreTypes.TYPE_TOTAL].includes(s.type)\n );\n }\n\n case matchPartInfo.type === App.MetaTypes.TYPE_OVERTIME: {\n const lastOT = findLast(\n scores,\n s => s.type === App.ScoreTypes.TYPE_PERIOD_OVERTIME\n );\n\n if (lastOT) {\n return scores.filter(\n s =>\n !(\n s.type === App.ScoreTypes.TYPE_PERIOD_OVERTIME &&\n s.indexNumber !== lastOT.indexNumber\n )\n );\n }\n\n return scores;\n }\n\n default: {\n return scores;\n }\n }\n};\n\nconst tennisFilter = (\n scores: View.ScoreInfo[],\n { type, indexNumber, status }: MatchPartInfo,\n isOverview: boolean\n) => {\n if (isOverview) {\n const TENNIS_LIMIT_MAP = 3 as const;\n\n const isTbForCurrentSetExists = scores.find(\n s =>\n s.type === App.ScoreTypes.TYPE_TIE_BREAK &&\n s.indexNumber === indexNumber\n );\n\n const filteredScores = scores\n .filter(s => s.type !== App.ScoreTypes.TYPE_TIE_BREAK)\n .map(s => {\n if (s.indexNumber !== indexNumber || !isTbForCurrentSetExists) {\n return s;\n }\n\n return { ...s, subScore: isTbForCurrentSetExists };\n });\n\n return scores.length > TENNIS_LIMIT_MAP\n ? scores.slice(0, 1).concat(filteredScores.slice(-TENNIS_LIMIT_MAP))\n : scores;\n }\n\n const filteredScores = LIVE_SPORTEVENT_STATUSES.includes(status)\n ? scores\n : scores.filter(\n s => !TENNIS_HIDDEN_SCORES_TYPES_RESULT_PAGE.includes(s.type)\n );\n\n switch (true) {\n case type === App.MetaTypes.TYPE_SET: {\n const isTbForCurrentSetExists = filteredScores.find(\n s =>\n s.type === App.ScoreTypes.TYPE_TIE_BREAK &&\n s.indexNumber === indexNumber\n );\n\n return filteredScores.filter(s => {\n return !(\n (s.type === App.ScoreTypes.TYPE_TIE_BREAK &&\n s.indexNumber !== indexNumber) ||\n (s.type === App.ScoreTypes.TYPE_GAME_POINTS &&\n isTbForCurrentSetExists)\n );\n });\n }\n\n default: {\n return filteredScores;\n }\n }\n};\n\nconst filterScoresBySportAndMatchType = (\n sportId: string,\n matchPartInfo: MatchPartInfo,\n scores: View.ScoreInfo[],\n isOverview: boolean\n): View.ScoreInfo[] => {\n if (!matchPartInfo.type || !matchPartInfo.indexNumber) {\n return scores;\n }\n\n switch (sportId) {\n case Sports.FOOTBALL:\n case Sports.ESPORTS_FIFA:\n return footballFilter(scores, matchPartInfo, isOverview);\n\n case Sports.ICE_HOCKEY:\n return iceHockeyFilter(scores, matchPartInfo, isOverview);\n\n case Sports.BASKETBALL:\n return basketballFilter(scores, matchPartInfo, isOverview);\n\n case Sports.TENNIS:\n case Sports.ESPORTS_TENNIS:\n return tennisFilter(scores, matchPartInfo, isOverview);\n\n case Sports.ESPORTS_COUNTER_STRIKE:\n case Sports.ESPORTS_DOTA_2:\n return getLastTwoScores({\n scores,\n scoreTypes: App.ScoreTypes.TYPE_MAP,\n isOverview,\n });\n\n default: {\n return scores;\n }\n }\n};\n\nexport default filterScoresBySportAndMatchType;\n\nfunction getLastTwoScores(scoreInfo: {\n scores: View.ScoreInfo[];\n scoreTypes: App.ScoreTypes;\n isOverview: boolean;\n}): View.ScoreInfo[] {\n const { scores, scoreTypes, isOverview } = scoreInfo;\n\n if (!isOverview) return scores;\n\n const NUMBER_LAST_SCORES = 2 as const;\n const lengthIncomeType = scores.filter(el => el.type === scoreTypes).length;\n\n if (lengthIncomeType > NUMBER_LAST_SCORES) {\n const filterScores = scores\n .slice(0, 1)\n .concat(scores.slice(-NUMBER_LAST_SCORES));\n\n return filterScores;\n }\n\n return scores;\n}\n","import { find } from 'lodash';\n\nimport { BET_STEPS } from 'app-constants';\n\nexport default function findBetStep(bet: number): number {\n return find(BET_STEPS, (step, breakpoint) => bet <= +breakpoint)!;\n}\n","import React from 'react';\nimport cn from 'classnames';\n\nimport './fractional.scss';\n\ninterface Props {\n value: string;\n}\n\nconst Fractional: React.FC = ({ value }) => {\n const [num, denum] = value.split('/');\n\n return (\n \n

{num}
\n {denum &&
{denum}
}\n \n );\n};\n\nexport default Fractional;\n","import React from 'react';\nimport core, { App } from '@gin-betting/core';\nimport { floor } from 'lodash';\n\nimport Fractional from 'components/Fractional';\n\nconst { formatDecimalOdd: fDecimalOdd } = core.utils;\n\ntype Value = ReturnType;\n\nconst formatDecimalOdd = (\n ...args: Parameters\n): {\n value: Value;\n component: JSX.Element | Value;\n} => {\n const [coef, oddFormat] = args;\n\n let value: Value = floor(+coef, 2);\n\n const result: ReturnType = {\n value,\n component: value,\n };\n\n value = fDecimalOdd(coef, oddFormat);\n result.value = value;\n result.component = value;\n\n if (oddFormat === App.OddFormat.Fractional) {\n result.component = React.createElement(Fractional, {\n value: value as string,\n });\n }\n\n return result;\n};\n\nexport default formatDecimalOdd;\n","export default function getByKey(\n obj: Exclude void> | null | undefined,\n key: U\n): T extends null | undefined\n ? undefined\n : U extends keyof T\n ? T[U]\n : T[keyof T] | undefined {\n if (!obj) return undefined as any;\n\n return (obj as any)[key];\n}\n","import getByKey from './getByKey';\n\n// base on EURO\nconst RATES = {\n EUR: 1,\n CAD: 1.5359,\n HKD: 8.4391,\n ISK: 156.5,\n PHP: 55.414,\n DKK: 7.4619,\n HUF: 349.56,\n CZK: 27.053,\n AUD: 1.7266,\n RON: 4.8373,\n SEK: 10.8895,\n IDR: 17089.8,\n INR: 83.705,\n BRL: 5.699,\n RUB: 80.621,\n HRK: 7.601,\n JPY: 117.12,\n THB: 35.56,\n CHF: 1.0516,\n SGD: 1.5539,\n PLN: 4.5288,\n BGN: 1.9558,\n TRY: 7.5506,\n CNY: 7.6991,\n NOK: 11.4145,\n NZD: 1.821,\n ZAR: 20.2373,\n USD: 1.0888,\n MXN: 26.2939,\n ILS: 3.9082,\n GBP: 0.87163,\n KRW: 1334.51,\n MYR: 4.7655,\n} as const;\n\nexport default function getEurToCurrencyRate(\n currency: string\n): number | undefined {\n const upperCurrency = currency.toLocaleUpperCase();\n\n return getByKey(RATES, upperCurrency);\n}\n","import findBetStep from './findBetStep';\nimport roundBetByStep from './roundBetByStep';\n\nexport default function roundBet(bet: number): number {\n const betStep = findBetStep(bet);\n\n return roundBetByStep(bet, betStep);\n}\n","import { ceil } from 'lodash';\n\nexport default function roundBetByStep(bet: number, step: number) {\n const roundedBet = ceil(bet);\n\n return roundedBet + step - (roundedBet % step);\n}\n","import core from '@gin-betting/core';\n\nimport { BASE_CURRENCY } from 'app-constants';\nimport type { BetVariants } from 'types';\nimport getByKey from './getByKey';\nimport getEurToCurrencyRate from './getEurToCurrencyRate';\nimport roundBet from './roundBet';\n\nconst {\n utils: { getCurrency: getCurrencyInfo },\n} = core;\n\nconst CURRENCY_BET_VARIANTS_TYPE_CONST = {\n [BASE_CURRENCY]: [3, 5, 10, 20, 50, 100],\n RUB: [200, 400, 800, 1600, 4000, 8000],\n USD: [3, 5, 10, 20, 50, 100],\n AED: [12, 20, 40, 80, 200, 400],\n AUD: [5, 9, 17, 35, 90, 170],\n BRL: [17, 30, 60, 120, 300, 600],\n BTC: [0.0005, 0.0008, 0.0015, 0.003, 0.008, 0.015],\n CAD: [5, 8, 15, 30, 80, 150],\n CNY: [25, 40, 80, 150, 400, 800],\n JPY: [350, 600, 1200, 2500, 6000, 12000],\n NOK: [35, 60, 110, 250, 600, 1100],\n SEK: [30, 50, 100, 200, 500, 1000],\n mBTC: [0.5, 0.8, 1.5, 3, 8, 15],\n UAH: [100, 150, 300, 600, 1500, 3000],\n KZT: [1500, 2500, 5000, 10000, 25000, 50000],\n};\n\nconst CURRENCY_BET_VARIANTS: ExtraProps<\n typeof CURRENCY_BET_VARIANTS_TYPE_CONST\n> = CURRENCY_BET_VARIANTS_TYPE_CONST;\n\nfunction getBetVariants(currency: string): BetVariants {\n const currBetVariants = getByKey(CURRENCY_BET_VARIANTS, currency);\n\n if (currBetVariants) return currBetVariants;\n\n const eurToCurrencyRate = getEurToCurrencyRate(currency);\n\n if (!eurToCurrencyRate) return CURRENCY_BET_VARIANTS[BASE_CURRENCY];\n\n const betVariants = CURRENCY_BET_VARIANTS[BASE_CURRENCY].map(i =>\n roundBet(i * eurToCurrencyRate)\n );\n\n CURRENCY_BET_VARIANTS[currency] = betVariants;\n\n return betVariants;\n}\n\nexport default function getCurrency() {\n const currencyInfo = getCurrencyInfo();\n const { currencyName } = currencyInfo;\n\n const betVariants = getBetVariants(currencyName);\n\n return {\n ...currencyInfo,\n betVariants,\n };\n}\n","import { App, View } from '@gin-betting/core';\nimport { last } from 'lodash';\n\nimport { CONFIG_BY_SPORTS, metaTypesNumerable } from 'scoreMetaConfig';\nimport { MatchPartInfo } from 'types';\nimport getByKey from './getByKey';\n\nconst MetaTypesTitleMapping = {\n [App.MetaTypes.TYPE_SET]: 'S',\n [App.MetaTypes.TYPE_GOLDEN_SET]: 'GS',\n [App.MetaTypes.TYPE_PERIOD_1ST_HALF]: '1H',\n [App.MetaTypes.TYPE_PERIOD_1ST_EXTRA]: '1EH',\n [App.MetaTypes.TYPE_PERIOD_2ND_HALF]: '2H',\n [App.MetaTypes.TYPE_PERIOD_2ND_EXTRA]: '2EH',\n [App.MetaTypes.TYPE_PERIOD_PENALTIES]: 'Aft.Penalty',\n [App.MetaTypes.TYPE_QUARTER]: 'Q',\n [App.MetaTypes.TYPE_PERIOD]: 'P',\n [App.MetaTypes.TYPE_REGULAR]: 'P',\n [App.MetaTypes.TYPE_OVERTIME]: 'Overtime',\n [App.MetaTypes.TYPE_BULLETS]: 'Bullets',\n [App.MetaTypes.TYPE_MAP]: 'Map',\n [App.MetaTypes.TYPE_INNING]: 'IN',\n};\n\nconst checkIsNumerableMetaTypes = (\n metaType: App.MetaTypes,\n sportId: string\n): boolean => {\n const config = CONFIG_BY_SPORTS[sportId];\n\n const customNumerable =\n config?.customMetaTypesNumerable ?? metaTypesNumerable;\n\n return customNumerable.includes(metaType);\n};\n\ninterface TextForMatchPart {\n metaType: App.MetaTypes;\n indexNumber: number;\n sportId: string;\n meta: View.Meta[];\n}\n\nconst textForMatchPart = ({\n metaType,\n indexNumber,\n sportId,\n meta,\n}: TextForMatchPart): string => {\n const isNumerableScoreTypes = checkIsNumerableMetaTypes(metaType, sportId);\n const config = CONFIG_BY_SPORTS[sportId];\n\n const matchTitle =\n config?.customMetaTypesNaming?.[metaType] ??\n getByKey(MetaTypesTitleMapping, metaType) ??\n '';\n\n if (!isNumerableScoreTypes) return matchTitle;\n\n return (\n config?.titleParser?.({\n index: indexNumber,\n text: matchTitle,\n meta,\n type: metaType,\n }) ?? (Number(indexNumber) || 0) + matchTitle.toUpperCase()\n );\n};\n\nconst currentMetaParser = (\n meta: View.Meta[],\n sportId: string\n): View.Meta | undefined => {\n const config = CONFIG_BY_SPORTS[sportId];\n\n const getMetaPart = config?.getMetaPart;\n\n if (getMetaPart) return getMetaPart(meta, sportId);\n\n const sortMap = config?.timeSort;\n\n if (!sortMap) return last(meta);\n\n return last(\n meta.sort((a, b) => (sortMap[a.name] || 0) - (sortMap[b.name] || 0))\n );\n};\n\nconst getCurrentMatchPart = (\n meta: View.Meta[],\n { status, sportId }: View.Match\n): MatchPartInfo => {\n const config = CONFIG_BY_SPORTS[sportId];\n\n let result: MatchPartInfo = {\n sportId,\n status,\n text: '',\n isTimeDisabled: config?.isTimeDisabled,\n indexNumber: 9999,\n type: 'unknown' as any,\n };\n\n const currMeta = currentMetaParser(meta, sportId);\n\n if (!currMeta) return result;\n\n const { value, name } = currMeta;\n\n const isTimeDisabled =\n config?.isTimeDisabled ??\n config?.customMetaTypesTimeDisabled?.includes(name as App.MetaTypes);\n\n const customIndexNumber = config?.partStartsFromZero?.includes(\n name as App.MetaTypes\n )\n ? Number(value) + 1\n : Number(value);\n\n result = {\n sportId,\n status,\n text: textForMatchPart({\n metaType: name as App.MetaTypes,\n indexNumber: customIndexNumber,\n sportId,\n meta,\n }),\n type: name as App.MetaTypes,\n indexNumber: customIndexNumber,\n isTimeDisabled,\n };\n\n return result;\n};\n\nexport default getCurrentMatchPart;\n","import core from '@gin-betting/core';\n\nimport { Product } from 'app-constants';\n\nconst {\n utils: { getBettingOptions },\n} = core;\n\nexport default function getProductName(): Product {\n const { host } = window.location;\n const { staticEndpoint } = getBettingOptions().url;\n\n switch (true) {\n case host === 'ggbet.ru': {\n return Product.ru;\n }\n\n case host === 'ggbet.com': {\n return Product.com;\n }\n\n case host === 'ggbet.ua': {\n return Product.ua;\n }\n\n case staticEndpoint.includes('ggbet'): {\n return Product.bet;\n }\n\n default: {\n if (__DEV__) {\n return Product.bet;\n }\n\n return Product.unknown;\n }\n }\n}\n","import { IntlFormatters } from 'react-intl';\nimport core, { View } from '@gin-betting/core';\n\nimport globalMessages from 'messages';\nimport getProductName from './getProductName';\n\nconst {\n utils: { format },\n} = core;\n\nfunction getHelmetTitle({\n match,\n tournament,\n formatMessage,\n}: {\n match: Pick | null;\n tournament: Pick | null;\n formatMessage: IntlFormatters['formatMessage'];\n}): string {\n const parts = {\n matchTitle: '',\n date: '',\n time: '',\n tournamentName: '',\n };\n\n if (match) {\n parts.matchTitle = match.title;\n parts.time = format(match.startTime, 'HH:mm');\n parts.date = format(match.startTime, 'dd.MM.yy');\n }\n\n if (tournament) {\n parts.tournamentName = tournament.name;\n }\n\n const { matchTitle, tournamentName, date, time } = parts;\n\n return formatMessage(globalMessages.matchTitle, {\n matchTitle:\n window.location.host === 'ggbet.ru'\n ? matchTitle.split('VS').join('против')\n : matchTitle,\n tournamentName,\n date,\n time,\n productName: getProductName(),\n });\n}\n\nexport default getHelmetTitle;\n","const CS_MAP_NAME_MAPPING: {\n [key: string]: {\n short: string;\n long: string;\n };\n} = {\n de_dust2: {\n short: 'D2',\n long: 'Dust 2',\n },\n de_inferno: {\n short: 'Inf',\n long: 'Inferno',\n },\n de_overpass: {\n short: 'Ovp',\n long: 'Overpass',\n },\n de_mirage: {\n short: 'Mrg',\n long: 'Mirage',\n },\n de_nuke: {\n short: 'Nuk',\n long: 'Nuke',\n },\n de_vertigo: {\n short: 'Vrt',\n long: 'Vertigo',\n },\n de_ancient: {\n short: 'Anc',\n long: 'Ancient',\n },\n};\n\nexport default function getMapNameFromMeta({\n map,\n format,\n}: {\n map: string | undefined;\n format: 'short' | 'long';\n}): string {\n if (!map) return '';\n\n return CS_MAP_NAME_MAPPING[map]?.[format] || map;\n}\n","import core, { App, GQL } from '@gin-betting/core';\n\nconst { appServiceLocator } = core;\n\nexport default function getMatchesByIds(\n variables: GQL.GetMatchesByIdsQueryVariables\n): Promise> {\n const apiClient = appServiceLocator.get('apiClient');\n const method = 'getMatchesByIds';\n\n return apiClient.makeRequest({\n method,\n variables,\n });\n}\n","import core from '@gin-betting/core';\n\nconst { appServiceLocator } = core;\n\nlet prevMinBet = 0;\n\nexport default function getMinBet(): {\n prevMinBet: number;\n request: () => Promise;\n} {\n return {\n prevMinBet,\n request: () =>\n appServiceLocator\n .get('apiClient')\n .makeRequest({\n method: 'getMinBet',\n variables: {},\n })\n .then(response => {\n prevMinBet = Number(response.data.minBet.value);\n\n return prevMinBet;\n })\n .catch(error => {\n console.error(error);\n\n return prevMinBet;\n }),\n };\n}\n","function getNumberValueFromPx(valueInPx: string): number | undefined {\n if (!valueInPx.includes('px')) return;\n\n const numericValue = parseInt(valueInPx, 10);\n\n if (Number.isNaN(numericValue)) return;\n\n return numericValue;\n}\n\nexport default getNumberValueFromPx;\n","import { DEFAULT_PALETTE, DEFAULT_SPACING, СssSetNaming } from 'styles';\n\nexport default function isValidCssPair({\n naming,\n key,\n value,\n}: {\n naming: СssSetNaming;\n key: string;\n value: T;\n}): Error | undefined {\n let defaultValues = {};\n\n let ref: 'string' | 'number' = 'string';\n\n switch (naming) {\n case СssSetNaming.PALETTE: {\n ref = 'string';\n defaultValues = DEFAULT_PALETTE;\n break;\n }\n\n case СssSetNaming.SPACING: {\n ref = 'number';\n defaultValues = DEFAULT_SPACING;\n break;\n }\n\n default: {\n break;\n }\n }\n\n if (!(key in defaultValues)) {\n return new Error(`Not supported ${naming} key: ${key}`);\n }\n\n if (typeof value !== ref) {\n return new Error(\n `Not supported value of ${naming} key. Key: ${key}. Value: ${value}`\n );\n }\n}\n","import { kebabCase, reduce } from 'lodash';\nimport { KebabCase } from 'type-fest';\n\nimport { IBettingPalette, PaletteCssVariables, СssSetNaming } from 'styles';\nimport convertHexToRgb from './convertHexToRgb';\nimport isValidCssPair from './isValidCssPair';\n\nfunction getPaletteCssVariables(\n Palette: Partial\n): PaletteCssVariables {\n return reduce(\n Palette,\n (\n acc,\n hex: IBettingPalette[keyof IBettingPalette],\n key: keyof IBettingPalette\n ) => {\n const validationError = isValidCssPair({\n naming: СssSetNaming.PALETTE,\n key,\n value: hex,\n });\n\n if (validationError) {\n console.error(validationError);\n\n return acc;\n }\n\n const cssProp = `--${\n kebabCase(key) as KebabCase\n }` as const;\n const cssPropRgb = `${cssProp}-rgb` as const;\n const rgb = convertHexToRgb(hex);\n\n acc[cssProp] = hex;\n\n if (rgb instanceof Error) {\n console.error(rgb);\n } else {\n const { red, green, blue } = rgb;\n\n acc[cssPropRgb] = `${red}, ${green}, ${blue}` as const;\n }\n\n return acc;\n },\n {} as PaletteCssVariables\n );\n}\n\nexport default getPaletteCssVariables;\n","import { isEmpty } from 'lodash';\n\nimport {\n convertObjectToCssVariables,\n DEFAULT_PINNED_STREAM_POSITION,\n DEFAULT_POSITION_PROPS,\n IBettingPinnedStreamPosition,\n} from 'styles';\n\nfunction getPinnedStreamPositionCssVariables(\n positionProps: Required\n): CssVariables {\n if (propsHaveMissingFields(positionProps)) return DEFAULT_POSITION_PROPS;\n\n const [\n cssPositionProps,\n isAnyPassedPropInvalid,\n ] = convertObjectToCssVariables(positionProps);\n\n return isAnyPassedPropInvalid ? DEFAULT_POSITION_PROPS : cssPositionProps;\n}\n\nfunction propsHaveMissingFields(\n positionProps: Partial\n): boolean {\n if (isEmpty(positionProps)) {\n console.error(\n 'Position variables for PinnedStreamComponent are missing!'\n );\n\n return true;\n }\n\n if (!checkAllVariablesProvided(positionProps)) {\n console.error(\n 'Position variables for PinnedStreamComponent include not all required fields!'\n );\n\n return true;\n }\n\n return false;\n}\n\nfunction checkAllVariablesProvided(\n positionProps: Partial\n): boolean {\n return Object.keys(DEFAULT_PINNED_STREAM_POSITION).every(\n key => key in positionProps\n );\n}\n\nexport default getPinnedStreamPositionCssVariables;\n","import { Sports } from '@gin-betting/constants';\n\nconst getPromoTypeIdsBySport = (sportId?: string): number[] | null => {\n switch (sportId) {\n case Sports.ESPORTS_DOTA_2:\n case Sports.ESPORTS_LEAGUE_OF_LEGENDS:\n case Sports.ESPORTS_HEROES_OF_THE_STORM:\n return [50, 1, 20];\n\n case Sports.ESPORTS_COUNTER_STRIKE:\n case Sports.ESPORTS_RAINBOW_SIX:\n return [7, 1, 20];\n\n default:\n return null;\n }\n};\n\nexport default getPromoTypeIdsBySport;\n","import core, { App } from '@gin-betting/core';\n\nimport { ParentPath } from 'types';\n\nconst {\n constants: { SportType },\n} = core;\n\nexport default function getRouteBySportType(\n sportType: App.SportType | undefined\n): ParentPath {\n switch (sportType) {\n case SportType.Classic: {\n return App.Routes.CLASSIC;\n }\n\n case SportType.Esport: {\n return App.Routes.ESPORT;\n }\n\n default: {\n return '';\n }\n }\n}\n","import { App, View } from '@gin-betting/core';\nimport { get } from 'lodash';\n\nimport { CONFIG_BY_SPORTS, SCORE_TYPES_TITLE_MAPPING } from 'scoreMetaConfig';\nimport { CustomScoreTypesParser, ScoreTitleArgs } from 'types';\n\nconst getCustomScoreTypesTitleMapping = ({\n currentMatchPart,\n score,\n isOverview,\n meta,\n}: ScoreTitleArgs): CustomScoreTypesParser => {\n const isNumerable = App.ScoreTypesNumerable.includes(score.type);\n const scoreTypesTitleMapping = SCORE_TYPES_TITLE_MAPPING;\n\n if (!currentMatchPart?.sportId) {\n return {\n scoreTypesTitleMapping,\n isNumerable,\n };\n }\n\n const { sportId } = currentMatchPart;\n\n const config = get(CONFIG_BY_SPORTS, sportId, undefined);\n\n return (\n config?.setMatchPartTypes?.({\n meta,\n score,\n currentMatchPart,\n isOverview,\n }) || {\n scoreTypesTitleMapping,\n isNumerable,\n }\n );\n};\n\nconst textForScoreTitle = ({\n meta,\n currentMatchPart,\n score,\n isOverview,\n}: ScoreTitleArgs): string => {\n const {\n scoreTypesTitleMapping,\n isNumerable,\n } = getCustomScoreTypesTitleMapping({\n score,\n currentMatchPart,\n isOverview,\n meta,\n });\n\n const scoreTitleText = scoreTypesTitleMapping[score.type] ?? '-';\n\n if (!isNumerable) {\n return scoreTitleText;\n }\n\n return customScoreTitle({\n type: score.type,\n index: score.indexNumber,\n sportId: currentMatchPart?.sportId,\n text: scoreTitleText,\n meta,\n isOverview,\n });\n};\n\nconst getScoreTitle = ({\n meta,\n score,\n currentMatchPart,\n isOverview,\n}: ScoreTitleArgs): string => {\n if (!(score.type in SCORE_TYPES_TITLE_MAPPING)) {\n return score.type;\n }\n\n return textForScoreTitle({ currentMatchPart, score, isOverview, meta });\n};\n\ninterface CustomScoreTitle {\n sportId: string | undefined;\n type: App.ScoreTypes;\n index: number;\n text: string;\n meta: View.Meta[];\n isOverview: boolean | undefined;\n}\n\nconst customScoreTitle = ({\n index,\n text,\n sportId,\n meta,\n type,\n isOverview,\n}: CustomScoreTitle): string => {\n const title = index + text;\n\n if (!sportId) return title;\n\n const config = get(CONFIG_BY_SPORTS, sportId, undefined);\n\n return (\n config?.titleParser?.({ index, text, meta, type, isOverview }) ?? title\n );\n};\n\nexport default getScoreTitle;\n","const operatorConverter = {\n '+': '-',\n '-': '+',\n};\n\nfunction getSignedSpecifierPair(value: string | null): Tuple {\n if (!value) {\n return ['-', '-'];\n }\n\n const floatValue = parseFloat(value);\n\n if (floatValue === 0) {\n return ['0', '0'];\n }\n\n const isLessThanZero = value.includes('-');\n\n const firstOperator = isLessThanZero ? '-' : '+';\n\n const firstValue = isLessThanZero ? value : `${firstOperator}${value}`;\n\n const secondValue = firstValue.replace(\n firstOperator,\n operatorConverter[firstOperator]\n );\n\n return [firstValue, secondValue];\n}\n\nexport default getSignedSpecifierPair;\n","import { kebabCase, reduce } from 'lodash';\nimport type { KebabCase } from 'type-fest';\n\nimport {\n DEFAULT_SPACING,\n IBettingSpacing,\n SpacingCssVariables,\n СssSetNaming,\n} from 'styles';\nimport isValidCssPair from './isValidCssPair';\n\nfunction getSpacingCssVariables(\n spacing: Partial\n): SpacingCssVariables {\n return reduce(\n { ...DEFAULT_SPACING, ...spacing },\n (acc, value, key: keyof IBettingSpacing) => {\n const validationError = isValidCssPair({\n naming: СssSetNaming.SPACING,\n key,\n value,\n });\n\n if (validationError) {\n console.error(validationError);\n\n return acc;\n }\n\n const cssProp = `--${\n kebabCase(key) as KebabCase\n }` as const;\n\n acc[cssProp] = `${value}px` as const;\n\n return acc;\n },\n {} as SpacingCssVariables\n );\n}\n\nexport default getSpacingCssVariables;\n","import { TIME_UNIT_IN_MILLISECONDS } from 'app-constants';\nimport { TimeUnit } from 'types';\n\ninterface GetTimeIntervalByUnitArgs {\n interval: number;\n unit: TimeUnit;\n}\n\nexport default function getTimeIntervalByUnit({\n interval,\n unit,\n}: GetTimeIntervalByUnitArgs): string {\n return new Date(\n Date.now() + interval * TIME_UNIT_IN_MILLISECONDS[unit]\n ).toISOString();\n}\n","// import dFnsSubDays from 'date-fns/subDays';\nimport { GQL } from '@gin-betting/core';\nimport { intersection, union } from 'lodash';\n\nimport { LIVE_SPORTEVENT_STATUSES } from 'app-constants';\n\n// const {\n// utils: { format },\n// } = core;\n\nexport default function getVariablesForLiveSportEvent(\n sportEventStatuses: GQL.SportEventStatus[] | null | undefined,\n marketStatuses: GQL.MarketStatus[] | null | undefined\n): {\n marketStatusesForLiveSportEvent: GQL.MarketStatus[] | null | undefined;\n dateFrom?: string | undefined;\n} {\n if (\n !marketStatuses ||\n !intersection(LIVE_SPORTEVENT_STATUSES, sportEventStatuses).length\n ) {\n return {\n marketStatusesForLiveSportEvent: marketStatuses,\n };\n }\n\n // const dateFrom = format(dFnsSubDays(new Date(), 1), 'yyyy-MM-dd');\n\n return {\n marketStatusesForLiveSportEvent: union(marketStatuses, [\n GQL.MarketStatus.RESULTED,\n GQL.MarketStatus.CANCELLED,\n GQL.MarketStatus.DEACTIVATED,\n ]),\n dateFrom: undefined,\n };\n}\n","export default function getYouTubeVideoIdFromUrl(\n url: string\n): string | undefined {\n const splittedUrl = url.split('/');\n\n return splittedUrl[splittedUrl.length - 1];\n}\n","import core, { App } from '@gin-betting/core';\n\nimport { ExtendedRouts } from 'app-constants';\n\nconst {\n utils: { isOneOfPages },\n} = core;\n\nexport default function isFavoritePage() {\n return isOneOfPages(\n ([\n ExtendedRouts.FAVORITE_UPCOMING,\n ExtendedRouts.FAVORITE_RESULTS,\n ExtendedRouts.FAVORITE_OUTRIGHTS,\n ] as any) as App.Routes[],\n { exact: true }\n );\n}\n","import core from '@gin-betting/core';\nimport { includes, values } from 'lodash';\n\nimport { ExtendedRouts } from 'app-constants';\nimport extractParentRouteFromHistory from './extractParentRouteFromHistory';\n\nconst {\n constants: { ROUTE_DIVIDER },\n services: { getHistory },\n} = core;\n\nexport default function isFeaturedPage(): boolean {\n const {\n location: { pathname },\n } = getHistory();\n\n const parentRoute = extractParentRouteFromHistory();\n const routeOrFeatureSlug = pathname.replace(parentRoute, '');\n\n if (\n !routeOrFeatureSlug ||\n routeOrFeatureSlug.split(ROUTE_DIVIDER).length > 2\n ) {\n return false;\n }\n\n return !includes(values(ExtendedRouts), routeOrFeatureSlug);\n}\n","import core, { App } from '@gin-betting/core';\n\nconst { isOneOfPages } = core.utils;\n\nexport default function isLivePage(): boolean {\n return isOneOfPages([App.Routes.LIVE_LIST], { exact: false });\n}\n","import core, { GQL } from '@gin-betting/core';\n\nimport { favoritePages } from 'app-constants';\n\nconst { isOneOfPages } = core.utils;\n\nexport default function getMatchStatusesByLocation() {\n if (isOneOfPages(favoritePages.outright)) {\n return [\n GQL.SportEventStatus.NOT_STARTED,\n GQL.SportEventStatus.SUSPENDED,\n GQL.SportEventStatus.LIVE,\n ];\n }\n\n if (isOneOfPages(favoritePages.result)) {\n return [\n GQL.SportEventStatus.ENDED,\n GQL.SportEventStatus.LIVE,\n GQL.SportEventStatus.CLOSED,\n GQL.SportEventStatus.CANCELLED,\n ];\n }\n\n return [\n GQL.SportEventStatus.NOT_STARTED,\n GQL.SportEventStatus.SUSPENDED,\n GQL.SportEventStatus.LIVE,\n ];\n}\n","import core, { GQL } from '@gin-betting/core';\n\nimport { favoritePages } from 'app-constants';\n\nconst { isOneOfPages } = core.utils;\n\nexport default function getSportEventTypesByLocation() {\n if (isOneOfPages(favoritePages.outright)) {\n return [GQL.SportEventType.OUTRIGHT];\n }\n\n return [GQL.SportEventType.MATCH];\n}\n","import core, { GQL } from '@gin-betting/core';\nimport cd from 'debug';\n\nimport getMatchStatusesByLocation from './getMatchStatusesByLocation';\nimport getSportEventTypesByLocation from './getSportEventTypesByLocation';\n\nconst { getBettingOptions, getAppliedFilters } = core.utils;\n\nconst debug = cd('app:utils:getDefaultVariables');\n\nexport default function getDefaultVariablesFavorite(): GQL.GetMatchesByFiltersQueryVariables {\n const { sportIds, tournamentIds = [] } = getBettingOptions();\n const matchStatuses = getMatchStatusesByLocation();\n const sportEventTypes = getSportEventTypesByLocation();\n const filters = getAppliedFilters();\n\n const defaultVariables = {\n matchStatuses,\n sportEventTypes,\n sportIds,\n tournamentIds,\n };\n\n const extendedVariables: {\n dateSortAscending?: false;\n dateFrom?: string;\n withMarketsCount?: false;\n } = {};\n\n const result: GQL.GetMatchesByFiltersQueryVariables = {\n offset: 0,\n limit: 100,\n ...defaultVariables,\n ...extendedVariables,\n // TODO: remove type casting, hardcode\n ...(filters as Omit),\n };\n\n debug('result', result);\n\n return result;\n}\n","import core from '@gin-betting/core';\n\nimport type { SearchObj } from 'types';\n\nconst {\n services: { parse: coreParse },\n} = core;\n\nconst parse: (str: string) => SearchObj = coreParse;\n\nexport default parse;\n","import parseISO from 'date-fns/parseISO';\n\nimport { DateString } from 'components/Datepicker/types';\n\nfunction parseDateString(date: DateString): Date {\n return typeof date === 'string' ? parseISO(date) : date;\n}\n\nexport default parseDateString;\n","import core from '@gin-betting/core';\n\nimport type { SearchObj } from 'types';\n\nconst {\n services: { stringify: coreStringify },\n} = core;\n\nconst stringify: (obj: SearchObj) => string = coreStringify;\n\nexport default stringify;\n","export default function addTheaterModeClass() {\n const body = document.querySelector('body');\n const className = 'in-theater-mode';\n\n if (body && !body.classList.contains(className)) {\n body.classList.add(className);\n }\n}\n","export default function removeTheaterModeClass() {\n const body = document.querySelector('body');\n const className = 'in-theater-mode';\n\n if (body && body.classList.contains(className)) {\n body.classList.remove(className);\n }\n}\n","import { SpecifierName } from '@gin-betting/constants';\nimport { View } from '@gin-betting/core';\n\nfunction isDefault(market: View.Market): boolean {\n return !market.specifiers.some(s => {\n return s.name === SpecifierName.total || s.name === SpecifierName.hcp;\n });\n}\n\nfunction isMobileDefault(market: View.Market): boolean {\n return [1, 20].includes(market.typeId);\n}\n\nfunction isHCP({ specifiers }: View.Market): boolean {\n return (\n specifiers.some(s => s.name === SpecifierName.hcp) &&\n !specifiers.some(s => s.name === SpecifierName.total)\n );\n}\n\nfunction isTotal(market: View.Market): boolean {\n return market.specifiers.some(s => {\n return s.name === SpecifierName.total;\n });\n}\n\nexport default { isDefault, isMobileDefault, isHCP, isTotal };\n","import UserDevice from 'services/user-device';\n\nfunction vibrateDevice(pattern: number | number[]) {\n if (!UserDevice.getInstance()?.isDeviceMobile()) return;\n\n // NOTE: This does not work in safari\n if (typeof window.navigator.vibrate === 'function') {\n window.navigator.vibrate(pattern);\n }\n}\n\nexport default vibrateDevice;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"categorizerHeadingRowGroup__container___1w28P\",\"separated-rows\":\"categorizerHeadingRowGroup__separated-rows___1eLw3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"vs__container___1MAF8\"};","import React from 'react';\nimport core from '@gin-betting/core';\n\nimport type { Analytics } from 'services/analytics';\nimport Icon from '../Icon';\n\nimport backIcon from 'assets/svg/arrow-left.svg';\nimport './backButton.scss';\n\nconst {\n utils: { goBack },\n} = core;\n\ninterface Props {\n analytics?: Analytics;\n}\n\nconst BackButton: React.FC = ({ analytics }) => {\n return (\n \n \n \n );\n};\n\nexport default BackButton;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"eventInfo__container___2yq4W\",\"wrapper\":\"eventInfo__wrapper___1jDKh\",\"is-inverted\":\"eventInfo__is-inverted___1dvyD\",\"logo\":\"eventInfo__logo___37psP\",\"is-loaded\":\"eventInfo__is-loaded___3BqVh\",\"info-wrap\":\"eventInfo__info-wrap___JC3fx\",\"prize-wrap\":\"eventInfo__prize-wrap___3AJNc\",\"title\":\"eventInfo__title___15rDR\",\"h1\":\"eventInfo__h1___3rido\",\"name\":\"eventInfo__name___3gXP1\",\"description\":\"eventInfo__description___3WPEX\",\"prize-pool\":\"eventInfo__prize-pool___2sow5\"};","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"lock_d7074\",\n \"use\": \"lock_d7074-usage\",\n \"viewBox\": \"0 0 12 15\",\n \"content\": \"\\n \\n \\n \\n \\n \\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"featuredTournamentPage__container___2X0Ji\",\"loader-block\":\"featuredTournamentPage__loader-block___2M3v8\"};","import { createElement, useContext } from 'react';\n\ninterface MakeContextHocArgs {\n propName: K;\n context: React.Context;\n}\n\nfunction makeContextHoc(\n args: MakeContextHocArgs\n) {\n const { context, propName = 'ctx' } = args;\n\n const withContext =

(\n Component: React.ComponentType

\n ) => {\n const BoundComponent = (props: Pick>) => {\n const ctx = useContext(context);\n\n return createElement(Component, {\n ...(props as P),\n [propName]: ctx,\n });\n };\n\n return BoundComponent;\n };\n\n return withContext;\n}\n\nexport default makeContextHoc;\n","import React, { ReactNode } from 'react';\nimport cn from 'classnames';\n\nimport UserDevice from 'services/user-device';\n\nimport './amount.scss';\n\ninterface Props {\n isDisabled?: boolean;\n isActive: boolean;\n onClick: DivEl['onClick'];\n children: ReactNode;\n}\n\nconst Amount: React.FC = ({\n isActive,\n isDisabled,\n onClick,\n children,\n}) => {\n const isDesktop = !UserDevice.getInstance()?.isDeviceMobile();\n\n return (\n \n {children}\n \n );\n};\n\nexport default Amount;\n","import React from 'react';\nimport core from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport UserDevice from 'services/user-device';\n\nimport './input.scss';\n\nconst {\n utils: { getCurrency },\n} = core;\n\ninterface Props {\n isDisabled?: boolean;\n value: string;\n onBlur: InputEl['onBlur'];\n onFocus: InputEl['onFocus'];\n onChange: InputEl['onChange'];\n isInputFocused: boolean;\n onKeyDown?: InputEl['onKeyDown'];\n}\n\nconst Input: React.FC = ({\n isDisabled,\n onBlur,\n onFocus,\n value,\n onChange,\n isInputFocused,\n onKeyDown,\n}) => {\n const isDesktop = !UserDevice.getInstance()?.isDeviceMobile();\n const inputMode = isDesktop ? ('text' as const) : ('decimal' as const);\n const { currencyName } = getCurrency();\n\n return (\n \n \n

{currencyName}
\n \n );\n};\n\nexport default Input;\n","import { SpecifierName } from '@gin-betting/constants';\nimport { View } from '@gin-betting/core';\nimport { find, isNaN } from 'lodash';\n\nconst getTitle = (\n market: View.Market | null,\n { name, id: currOddId }: View.Odd\n): string => {\n if (!market) return name;\n\n const { specifiers, odds } = market;\n\n const hcpSpecifier = find(specifiers, s => s.name === SpecifierName.hcp);\n\n if (hcpSpecifier) {\n const isHome = odds[0] === currOddId;\n\n const { value: valueStr } = hcpSpecifier;\n\n const value = isHome ? +valueStr : -+valueStr;\n\n const symbol = value > 0 ? '+' : '';\n\n if (isNaN(value)) {\n return valueStr;\n }\n\n return `${symbol}${value}`;\n }\n\n return name;\n};\n\nexport default getTitle;\n","import { useCallback, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport core, { App, GQL, View } from '@gin-betting/core';\nimport { includes } from 'lodash';\nimport { createSelector, createStructuredSelector } from 'reselect';\n\nimport { CompareStatus } from 'app-constants';\nimport { Modules, useAsyncModule } from 'async-modules';\nimport { useCompare } from 'hooks';\nimport ui from 'modules/ui';\nimport type { State } from 'types';\nimport { getTitle } from './utils';\n\nconst {\n selectors: { selectOddFormat, selectOddsStatisticView },\n} = ui;\nconst {\n entities: {\n selectors: {\n selectOddWithAvailability,\n selectOdd,\n selectStatisticPercentsByMarket,\n selectStatisticPercentsByMatch,\n selectMarket,\n },\n },\n utils: { getIdsFromOddId },\n} = core;\n\ntype BetslipMdl = Modules['betslip']['default'];\n\ntype PropsByBetslip = ReturnType<\n BetslipMdl['selectors']['selectOddButtonView']\n>;\n\ninterface Input {\n oddId: string;\n}\n\ninterface Output {\n titleAttr: string;\n title: string;\n value: number;\n status: GQL.OddStatus;\n isActive: boolean;\n isSelected: boolean;\n statistic: number | null;\n compareStatus: CompareStatus;\n handleToggleOdd: VoidFn;\n oddFormat: App.OddFormat;\n betslipOddId: string;\n}\n\nexport default function useOddButton({ oddId }: Input): Output {\n const dispatch = useDispatch();\n const betslip = useAsyncModule('betslip');\n\n const selectProps = useMemo(() => makeSelectProps(betslip), [betslip]);\n const { marketId = '' } = getIdsFromOddId(oddId) || {};\n\n const {\n odd: currOdd,\n market,\n propsByBetslip: {\n betslipBetId,\n isSelected,\n status: betslipStatus,\n isActive,\n },\n statistic,\n oddFormat,\n } = useSelector((s: State) => selectProps(s, { oddId, marketId }));\n\n const odd = currOdd || ODD_STUB;\n\n const { value, status, name } = odd;\n\n const title = getTitle(market, odd);\n\n const { compareStatus } = useCompare({ value });\n\n const isEditableBetslip = includes(\n betslip?.constants.BETSLIP_ODD_STATUSES_TO_PLACE_BET,\n betslipStatus\n );\n\n const recipientBetslipBetId = isEditableBetslip ? betslipBetId : undefined;\n\n // NOTE: Uncomment to enable multi betslip!\n // const recipientBetslipBetId =\n // isSingle || isEditableBetslip ? betslipBetId : initialBetslipBetId;\n\n const handleDeleteBetslipOdd = useCallback(() => {\n if (!isEditableBetslip || !betslip) return;\n\n dispatch(betslip.actions.deleteBetslipOdd({ oddId, betslipBetId }));\n }, [dispatch, betslip, betslipBetId, isEditableBetslip, oddId]);\n\n const handleAddBetslipOdd = useCallback(() => {\n if (!recipientBetslipBetId || !betslip) return;\n\n dispatch(\n betslip.actions.addBetslipOdd({\n oddId,\n betslipBetId: recipientBetslipBetId,\n })\n );\n }, [dispatch, betslip, recipientBetslipBetId, oddId]);\n\n const handleToggleOdd = useCallback(\n () => (isSelected ? handleDeleteBetslipOdd() : handleAddBetslipOdd()),\n [isSelected, handleAddBetslipOdd, handleDeleteBetslipOdd]\n );\n\n return {\n titleAttr: name,\n title,\n value,\n status,\n isActive,\n isSelected,\n statistic,\n compareStatus,\n handleToggleOdd,\n oddFormat,\n betslipOddId:\n betslip?.utils.getBetslipOddId({ oddId, betslipBetId }) || '',\n };\n}\n\nconst makeSelectProps = (betslip: Modules['betslip']['default'] | null) => {\n const selectPropsByBetslip =\n betslip?.selectors.selectOddButtonView ||\n makeSelectPropsByBetslipStub();\n\n const selectProps = createStructuredSelector({\n propsByBetslip: selectPropsByBetslip,\n odd: selectOdd,\n oddFormat: selectOddFormat,\n statisticView: selectOddsStatisticView,\n market: selectMarket,\n });\n\n return (state: State, ownProps: { oddId: string; marketId: string }) => {\n const {\n statisticView: { show, statisticView },\n ...props\n } = selectProps(state, ownProps);\n\n return {\n statistic: show\n ? makeSelectStatistic(statisticView)(state, ownProps)\n : null,\n ...props,\n };\n };\n};\n\nconst makeSelectStatistic = (statisticView: App.OddStatisticView) =>\n statisticView === App.OddStatisticView.MATCH\n ? selectStatisticPercentsByMatch\n : selectStatisticPercentsByMarket;\n\nconst PROPS_BY_BETSLIP_STUB: Omit = {\n betType: GQL.BetType.SINGLE,\n betslipBetId: '',\n isSelected: false,\n status: App.BetslipStatus.INITIAL,\n};\n\nconst ODD_STUB: View.Odd = {\n status: GQL.OddStatus.CANCELLED,\n competitorIds: [],\n id: '',\n isActive: false,\n name: '',\n value: 1.01,\n competitorId: '',\n};\n\nconst makeSelectPropsByBetslipStub = () => {\n return createSelector(\n selectOddWithAvailability,\n ({ isActive }): PropsByBetslip => ({\n isActive,\n ...PROPS_BY_BETSLIP_STUB,\n })\n );\n};\n","import React, { Fragment, useRef } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router';\nimport cn from 'classnames';\nimport { includes } from 'lodash';\nimport { useMergeRefs } from 'use-callback-ref';\n\nimport {\n BetslipAttrManager,\n CompareStatus,\n ODD_LOSS_STATUSES,\n ODD_WIN_STATUSES,\n} from 'app-constants';\nimport { Icon } from 'components';\nimport globalMsgs from 'messages';\nimport {\n Action,\n Category,\n formatPathname,\n formatSearch,\n useAnalyticAttrs,\n} from 'services/analytics';\nimport { formatDecimalOdd } from 'utils';\nimport useOddButton from './useOddButton';\n\nimport arrow from 'assets/svg/arrow.svg';\nimport './oddButton.scss';\n\ntype Btn = React.DOMAttributes;\n\ninterface Props {\n oddId: string;\n onMouseEnter?: Btn['onMouseLeave'];\n onMouseLeave?: Btn['onMouseEnter'];\n}\n\nconst MAX_FLATTEN_HEIGHT = 40 as const;\n\nconst OddButton: React.RefForwardingComponent = (\n { oddId, onMouseEnter, onMouseLeave },\n outerRef\n) => {\n const { search, pathname, hash } = useLocation();\n const { formatMessage } = useIntl();\n const innerRef = useRef(null);\n\n const isFlattenedView =\n (innerRef.current?.clientHeight || Infinity) < MAX_FLATTEN_HEIGHT;\n\n const mergeRefs = useMergeRefs([outerRef, innerRef]);\n\n const {\n isActive,\n isSelected,\n value,\n title,\n titleAttr,\n compareStatus,\n handleToggleOdd,\n statistic,\n oddFormat,\n status,\n betslipOddId,\n } = useOddButton({\n oddId,\n });\n\n const analytic = useAnalyticAttrs({\n defaultAttrs: { 'data-category': Category.Unknown },\n priorityAttrs: {\n 'data-action': Action.SelectOdd,\n 'data-label': betslipOddId,\n },\n });\n\n const isWin = includes(ODD_WIN_STATUSES, status);\n const isLoss = includes(ODD_LOSS_STATUSES, status);\n\n const { component: CoefEl } = isActive\n ? formatDecimalOdd(value, oddFormat)\n : { component: '-' };\n\n const resultTitle = isWin\n ? formatMessage(globalMsgs.won)\n : isLoss\n ? formatMessage(globalMsgs.lost)\n : undefined;\n\n const ResultEl =
{resultTitle || CoefEl}
;\n const TitleEl =
{title}
;\n const StatusEl = (compareStatus !== CompareStatus.Equal || statistic) && (\n
\n {isActive && compareStatus !== CompareStatus.Equal ? (\n \n \n \n ) : (\n statistic &&
{statistic}%
\n )}\n
\n );\n\n const TopEl = (\n
\n {ResultEl}\n {StatusEl}\n
\n );\n\n const BottomEl =
{TitleEl}
;\n\n const FlattenEl = (\n
\n {ResultEl}\n {TitleEl}\n {StatusEl}\n
\n );\n\n const onClick: DivEl['onClick'] = e => {\n e.preventDefault();\n\n if (!isActive && !isSelected) return;\n\n handleToggleOdd();\n\n if (!betslipOddId) return;\n\n if (isSelected) {\n delete BetslipAttrManager[betslipOddId];\n\n return;\n }\n\n const selectUrl = `${formatPathname(pathname)}${formatSearch(\n search\n )}${hash}`;\n\n BetslipAttrManager[betslipOddId] = {\n category: analytic['data-category'],\n label: { selectUrl },\n };\n };\n\n return (\n \n {isFlattenedView ? (\n FlattenEl\n ) : (\n \n {TopEl}\n {BottomEl}\n \n )}\n \n );\n};\n\nexport default React.forwardRef(OddButton);\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport core from '@gin-betting/core';\nimport { debounce } from 'lodash';\n\nimport { useMemoSelector } from 'hooks';\n\nconst {\n entities: {\n selectors: { selectOddWithAvailability },\n },\n} = core;\n\nconst TIMEOUT = 600;\n\ninterface Input {\n oddId: string;\n}\n\ninterface Output {\n isActive: boolean;\n showHistory: boolean;\n onMouseLeave: () => void;\n onMouseEnter: () => void;\n}\n\nconst useMouseEventsHandler = ({ oddId }: Input): Output => {\n const { isActive } = useMemoSelector(selectOddWithAvailability, { oddId });\n const [showHistory, setShowHistory] = useState(false);\n\n const timer = useRef(0 as any);\n\n const onMouseEnter = useCallback(() => {\n debounce(() => {\n clearTimeout(timer.current);\n\n timer.current = setTimeout(() => {\n setShowHistory(true);\n }, TIMEOUT);\n }, 100)();\n }, []);\n\n const onMouseLeave = useCallback(() => {\n debounce(() => {\n clearTimeout(timer.current);\n setShowHistory(false);\n }, 100)();\n }, []);\n\n useEffect(() => () => clearTimeout(timer.current), []);\n\n return {\n isActive,\n showHistory,\n onMouseLeave,\n onMouseEnter,\n };\n};\n\nexport default useMouseEventsHandler;\n","import React from 'react';\nimport { Manager, Popper, Reference } from 'react-popper';\n\nimport { Portal } from 'components';\nimport ui from 'modules/ui';\nimport UserDevice from 'services/user-device';\nimport OddButton from '../OddButton';\nimport useOddButtonWithHistory from './useOddButtonWithHistory';\n\nconst {\n components: { OddHistory },\n} = ui;\n\ninterface Props {\n oddId: string;\n}\n\nconst OddButtonWithHistory: React.FC = ({ oddId }) => {\n const {\n isActive,\n showHistory,\n onMouseEnter,\n onMouseLeave,\n } = useOddButtonWithHistory({\n oddId,\n });\n\n if (!isActive || UserDevice.getInstance()?.isDeviceMobile())\n return ;\n\n return (\n \n \n {({ ref }) => (\n \n )}\n \n {showHistory && (\n \n \n {({ ref, style, arrowProps, placement }) => (\n \n )}\n \n \n )}\n \n );\n};\n\nexport default React.memo(OddButtonWithHistory);\n","import React from 'react';\n\nimport { Platform, PLATFORM_BODY_ATTR } from 'app-constants';\n\ninterface Props {\n platform: Platform;\n}\n\nconst PlatformProvider: React.FC = ({ children, platform }) => {\n const dynamicAttributes = {\n [PLATFORM_BODY_ATTR]: platform,\n };\n\n return
{children}
;\n};\n\nexport default PlatformProvider;\n","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport core from '@gin-betting/core';\n\nimport globalMsgs from 'messages';\n\nimport './prematchTime.scss';\n\nconst {\n utils: { formatTimeAndDate },\n} = core;\n\ninterface Props {\n startTime: string;\n}\n\nconst PrematchTime: React.FC = ({ startTime }) => {\n const { formatMessage } = useIntl();\n const { date, time, isToday } = formatTimeAndDate(startTime, {\n // => 01.10 / Oct 01\n // dateFormat: isSmall ? 'dd.MM' : 'MMM dd',\n dateFormat: 'MMM dd',\n });\n\n return (\n
\n
\n {time}\n
\n
\n {isToday ? formatMessage(globalMsgs.todayText) : date}\n
\n
\n );\n};\n\nexport default PrematchTime;\n","import React, { useMemo } from 'react';\nimport { useIntl } from 'react-intl';\nimport { Sports } from '@gin-betting/constants';\nimport { App, View } from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport { MetaSide, SportEventMetaKey } from 'app-constants';\nimport { PenaltyCard } from 'components';\nimport globalMsgs from 'messages';\nimport { ExtendedScoreInfo, MatchPartInfo } from 'types';\nimport {\n getMapNameFromMeta,\n getScoreTitle,\n isMetaTypeEqualScoreType,\n} from 'utils';\n\nimport './scoreItem.scss';\n\ninterface Props {\n meta: View.Meta[];\n score: ExtendedScoreInfo;\n currentMatchPart: MatchPartInfo | null;\n sportId: string | undefined;\n}\n\nconst ACTIVE_SCORE_TYPES = [App.ScoreTypes.TYPE_GAME_POINTS];\n\nconst ScoreItem: React.FC = ({\n score,\n currentMatchPart,\n meta,\n sportId,\n}) => {\n const { type, home, away, subScore } = score;\n const { formatMessage } = useIntl();\n\n const scoreName = useMemo(() => {\n if (type === App.ScoreTypes.TYPE_TOTAL) {\n return formatMessage(globalMsgs.score);\n }\n\n if (type === App.ScoreTypes.TYPE_RED_CARD) {\n return ;\n }\n\n const title = getScoreTitle({\n meta,\n score,\n currentMatchPart,\n isOverview: true,\n });\n\n if (\n sportId === Sports.ESPORTS_COUNTER_STRIKE &&\n score.type === App.ScoreTypes.TYPE_MAP\n ) {\n return getMapNameFromMeta({\n format: 'short',\n map: title,\n });\n }\n\n return title;\n }, [type, score, currentMatchPart, meta, sportId, formatMessage]);\n\n const isTotal = type === App.ScoreTypes.TYPE_TOTAL;\n\n const isActive =\n ACTIVE_SCORE_TYPES.includes(score.type) ||\n (currentMatchPart &&\n currentMatchPart.indexNumber === score.indexNumber &&\n isMetaTypeEqualScoreType(currentMatchPart.type, score.type));\n\n let sideAway: MetaSide | undefined;\n\n let sideHome: MetaSide | undefined;\n\n if (isActive && type === App.ScoreTypes.TYPE_MAP) {\n sideAway = meta.find(({ name }) => name === SportEventMetaKey.SideAway)\n ?.value as MetaSide | undefined;\n sideHome = meta.find(({ name }) => name === SportEventMetaKey.SideHome)\n ?.value as MetaSide | undefined;\n }\n\n const items: {\n value: string;\n side: MetaSide | undefined;\n subValue: string | undefined;\n }[] = [\n { value: home, side: sideHome, subValue: subScore?.home },\n { value: away, side: sideAway, subValue: subScore?.away },\n ];\n\n return (\n \n
\n {scoreName}\n
\n\n
\n {items.map(({ value, side, subValue }, idx) => {\n const withSubValue =\n isActive && typeof subValue === 'string';\n\n return (\n // eslint-disable-next-line react/no-array-index-key\n
\n \n
{value}
\n {withSubValue && (\n
\n ({subValue})\n
\n )}\n
\n
\n );\n })}\n \n \n );\n};\n\nexport default ScoreItem;\n","import core, { App, GQL, View } from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport { useMemoSelector } from 'hooks';\nimport { selectOverviewScores } from 'selectors';\nimport type { MatchPartInfo } from 'types';\n\nconst {\n entities: {\n selectors: { makeMatchSelector },\n },\n} = core;\n\ninterface Input {\n sportEventId: string;\n}\n\ninterface Output {\n meta: View.Meta[];\n scores: View.ScoreInfo[];\n winner: GQL.CompetitorHomeAway;\n currentMatchPart: MatchPartInfo | null;\n sportId: string | undefined;\n}\n\nconst DEFAULT_TOTAL: View.ScoreInfo = {\n home: '',\n away: '',\n type: App.ScoreTypes.TYPE_TOTAL,\n indexNumber: 0,\n};\n\nconst MAX_COLUMN = 4 as const;\n\nconst useScore = ({ sportEventId }: Input): Output => {\n const {\n sportEvent,\n scores: { scores, currentMatchPart, meta },\n } = useMemoSelector(makeSelectProps(), { matchId: sportEventId });\n\n const isEnded = sportEvent?.status === GQL.SportEventStatus.ENDED;\n\n const totalScore =\n scores.splice(\n scores.findIndex(({ type }) => type === App.ScoreTypes.TYPE_TOTAL),\n 1\n )[0] || DEFAULT_TOTAL;\n\n const { home, away } = totalScore;\n\n const winner =\n isEnded && !!home && !!away && +home !== +away\n ? +home > +away\n ? GQL.CompetitorHomeAway.HOME\n : GQL.CompetitorHomeAway.AWAY\n : GQL.CompetitorHomeAway.UNKNOWN;\n\n return {\n scores: [...scores.slice(0, MAX_COLUMN - 1), totalScore],\n winner,\n currentMatchPart,\n meta,\n sportId: sportEvent?.sportId,\n };\n};\n\nexport default useScore;\n\nconst makeSelectProps = () => {\n return createStructuredSelector({\n scores: selectOverviewScores,\n sportEvent: makeMatchSelector({ propsToPick: ['status', 'sportId'] }),\n });\n};\n","import React from 'react';\n\nimport ScoreItem from './ScoreItem';\nimport useScore from './useScore';\n\nimport './score.scss';\n\ninterface Props {\n sportEventId: string;\n}\n\nconst Score: React.FC = ({ sportEventId }) => {\n const { scores, currentMatchPart, meta, sportId } = useScore({\n sportEventId,\n });\n\n return (\n
\n {scores.map(score => {\n const key = score.type + score.indexNumber;\n\n return (\n \n );\n })}\n
\n );\n};\n\nexport default Score;\n","import React from 'react';\nimport cn from 'classnames';\n\nimport type { AnalyticAttrs } from 'services/analytics';\n\nimport './segmentTab.scss';\n\ninterface Props {\n text: string;\n title?: string;\n analyticAttrs?: AnalyticAttrs;\n isActive?: boolean;\n isDisabled?: boolean;\n onClick?: VoidFn;\n}\n\nconst SegmentTab: React.FC = ({\n isActive,\n text,\n title,\n onClick,\n analyticAttrs,\n isDisabled,\n}) => {\n return (\n \n {text}\n \n );\n};\n\nexport default SegmentTab;\n","import React, { ComponentPropsWithoutRef } from 'react';\nimport cn from 'classnames';\n\nimport SegmentTab from '../SegmentTab';\n\nimport './segmentControl.scss';\n\ninterface Props {\n tabs: ComponentPropsWithoutRef[];\n}\n\nconst SegmentControl: React.FC = ({ tabs }) => {\n return (\n 2,\n })}\n >\n {tabs.map(({ title, text, isActive, onClick }) => (\n \n ))}\n \n );\n};\n\nexport default SegmentControl;\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"default-logo_b37f7\",\n \"use\": \"default-logo_b37f7-usage\",\n \"viewBox\": \"0 0 28 9\",\n \"content\": \"\\n \\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react';\nimport LogoResizer from '@gin-betting/components/logo-resizer';\nimport { GQL } from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport { Icon } from 'components';\n\nimport defaultLogo from 'assets/svg/default-logo.svg';\nimport './teamLogo.scss';\n\ninterface Props {\n logoUrl: string | undefined;\n competitorType: GQL.CompetitorType;\n isServer: boolean;\n}\n\nconst TeamLogo: React.FC = ({ logoUrl, competitorType, isServer }) => {\n const isPerson = competitorType === GQL.CompetitorType.PERSON;\n\n return logoUrl ? (\n \n {({ ref, bgImageStyle }) => (\n
\n \n {isServer &&
}\n
\n )}\n \n ) : (\n
\n \n {isServer &&
}\n
\n );\n};\n\nexport default TeamLogo;\n","import React from 'react';\nimport { GQL } from '@gin-betting/core';\n\nimport { convertNameToRuLocale } from 'utils';\nimport TeamLogo from '../TeamLogo';\n\nimport './logoTitle.scss';\n\ninterface Props {\n name: string | null;\n logoUrl: string;\n competitorType: GQL.CompetitorType;\n isServer: boolean;\n}\n\nconst LogoTitle: React.FC = ({\n name,\n logoUrl,\n competitorType,\n isServer,\n}) => {\n const convertedName = convertNameToRuLocale(name);\n\n return (\n
\n \n \n {convertedName}\n
\n
\n );\n};\n\nexport default LogoTitle;\n","import React from 'react';\nimport { View } from '@gin-betting/core';\n\nimport { AnalyticAttrs } from 'services/analytics';\nimport LogoTitle from '../LogoTitle';\nimport PrematchDate from '../PrematchDate';\n\nimport './teamsTitleColumn.scss';\n\ninterface Props {\n competitorsValid: View.CompetitorsValid;\n analytics?: Partial;\n isHomeServer: boolean;\n isAwayServer: boolean;\n startTime: string;\n}\n\nconst TeamsTitleColumn: React.FC = ({\n competitorsValid,\n analytics,\n isHomeServer,\n isAwayServer,\n startTime,\n}) => {\n const {\n awayLogo,\n awayName,\n homeLogo,\n homeName,\n competitorType,\n } = competitorsValid;\n\n return (\n \n \n \n \n
\n );\n};\n\nexport default TeamsTitleColumn;\n","import React from 'react';\nimport { View } from '@gin-betting/core';\n\nimport { Action, useAnalyticAttrs } from 'services/analytics';\nimport LogoTitle from '../LogoTitle';\n\nimport './teamsTitleRow.scss';\n\ninterface Props {\n competitorsValid: View.CompetitorsValid;\n isHomeServer: boolean;\n isAwayServer: boolean;\n}\n\nconst TeamsTitleRow: React.FC = ({\n competitorsValid,\n isHomeServer,\n isAwayServer,\n}) => {\n const analytics = useAnalyticAttrs({\n priorityAttrs: {\n 'data-action': Action.ClickOnTitle,\n },\n });\n const {\n awayLogo,\n awayName,\n homeLogo,\n homeName,\n competitorType,\n } = competitorsValid;\n\n return (\n \n \n \n \n );\n};\n\nexport default TeamsTitleRow;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"currency__container___3bB97\"};","import React, { createElement } from 'react';\nimport { Arg1 } from 'tsargs';\n\ninterface MakeHocFromHookArgs any, K extends string> {\n propName: K;\n hook: C;\n input: Arg1;\n}\n\nexport type HookedProps any, K extends string> = {\n [key in K]: ReturnType;\n};\n\nfunction makeHocFromHook any, K extends string>(\n args: MakeHocFromHookArgs\n) {\n const { hook, input, propName } = args;\n\n const withHook =

>(\n Component: React.ComponentType

\n ) => {\n const BoundComponent = (props: Pick>) => {\n const output: ReturnType = hook(input);\n\n return createElement(Component, {\n ...(props as P),\n [propName]: output,\n });\n };\n\n return BoundComponent;\n };\n\n return withHook;\n}\n\nexport default makeHocFromHook;\n","import React from 'react';\nimport core from '@gin-betting/core';\n\nimport { ErrorBoundary } from 'components';\n\nconst {\n utils: { getDisplayName },\n hocs: { extendHOC },\n} = core;\n\nfunction withErrorBoundary(WrappedComponent: React.ComponentType) {\n const name = getDisplayName(WrappedComponent);\n\n class ErrorBoundaryWrapper extends React.Component {\n render() {\n return (\n \n \n \n );\n }\n }\n\n return extendHOC(WrappedComponent, ErrorBoundaryWrapper);\n}\n\nexport default withErrorBoundary;\n","import { useAsyncModule } from 'async-modules';\nimport type { Modules } from 'types';\nimport makeHocFromHook, { HookedProps } from './makeHocFromHook';\n\nconst propName = 'streamModule' as const;\n\nconst withStreamModule = makeHocFromHook({\n hook: useAsyncModule,\n input: 'stream',\n propName,\n});\n\nexport namespace WithStreamModuleTypes {\n export type WithStreamModule = HookedProps<\n (moduleName: 'stream') => StreamModule | null,\n typeof propName\n >;\n export type StreamModule = Modules['stream']['default'];\n}\n\nexport default withStreamModule;\n","import React from 'react';\nimport { BettingConfigCtx } from 'root/bettingConfigCtx';\n\nimport { BettingWidgets } from 'app-constants';\nimport { StreamWidgetOptions } from 'types';\n\nconst withStreamWidgetSettings = (\n WrappedComponent: React.ComponentType\n): React.ComponentType => {\n return props => (\n \n {context => {\n const { widgets$ } = context;\n const widgetOptions = widgets$.getValue()[\n BettingWidgets.STREAM\n ];\n\n return ;\n }}\n \n );\n};\n\nexport type WithStreamWidgetSettingsTypes = StreamWidgetOptions;\n\nexport default withStreamWidgetSettings;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"scoreItem__container___1pLdm\",\"is-total\":\"scoreItem__is-total___19l5q\",\"scores\":\"scoreItem__scores___1GqTj\",\"score\":\"scoreItem__score___1xnuo\",\"backlight\":\"scoreItem__backlight___3Ds-v\",\"is-active\":\"scoreItem__is-active___Y_GW4\",\"is-terrorist\":\"scoreItem__is-terrorist___1Hg06\",\"is-contr-terrorist\":\"scoreItem__is-contr-terrorist___10oJu\",\"is-radiant\":\"scoreItem__is-radiant___1eJnO\",\"is-dire\":\"scoreItem__is-dire___3v-l7\",\"with-sub-value\":\"scoreItem__with-sub-value___2bQ5q\",\"value\":\"scoreItem__value___p8Ft5\",\"title\":\"scoreItem__title___lEOfC\",\"sub-value\":\"scoreItem__sub-value___QD_9r\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"betslipHeader__container___29-oN\",\"is-active\":\"betslipHeader__is-active___3Vw1m\",\"is-processing\":\"betslipHeader__is-processing___1NiUZ\",\"is-completed\":\"betslipHeader__is-completed___3XiEe\",\"has-error\":\"betslipHeader__has-error___3mbdL\",\"is-closed\":\"betslipHeader__is-closed___1ZFKn\",\"button-wrapper\":\"betslipHeader__button-wrapper___2jGf2\",\"icon\":\"betslipHeader__icon___2t-ri\",\"disabled\":\"betslipHeader__disabled___127me\",\"label\":\"betslipHeader__label___3nzmq\",\"label-text\":\"betslipHeader__label-text___3D-xd\"};","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"top-tournament_03dd6\",\n \"use\": \"top-tournament_03dd6-usage\",\n \"viewBox\": \"0 0 19 23\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react';\n\nimport './categorizerStub.scss';\n\nconst CategorizerStub: React.FC = () => {\n return

;\n};\n\nexport default CategorizerStub;\n","import React from 'react';\nimport loadable from '@loadable/component';\n\nimport CategorizerStub from './components/Categorizer/CategorizerStub';\n\nexport const loadFiltersModule = /* #__LOADABLE__ */ () =>\n import(/* webpackChunkName: \"filters-module\" */ './index');\n\n/* eslint-disable react/display-name */\n\nexport const AsyncCategorizer = loadable(loadFiltersModule, {\n resolveComponent: ({ default: filters }) => filters.components.Categorizer, // TODO check if p-min-delay 1000 needed\n});\n\nexport const AsyncMobileFilters = loadable(loadFiltersModule, {\n resolveComponent: ({ default: filters }) =>\n filters.components.MobileFilters,\n fallback: ,\n});\n\nexport const AsyncSportsNavigation = loadable(loadFiltersModule, {\n resolveComponent: ({ default: filters }) =>\n filters.components.SportsNavigation,\n});\n\nexport const AsyncMobileFiltersCtxComponent = loadable(loadFiltersModule, {\n resolveComponent: ({ default: filters }) =>\n filters.components.MobileFiltersCtxProvider,\n});\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"footer__container___2tyK9\",\"is-mobile\":\"footer__is-mobile___1X3kr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"percent\":\"oddStatistic__percent___2lKpG\",\"exist\":\"oddStatistic__exist___3UFi6\",\"not-exist\":\"oddStatistic__not-exist___1gdgn\"};","import loadable from '@loadable/component';\n\nimport { Modules } from 'types';\n\n// eslint-disable-next-line\nexport const loadOutrightModule: () => Promise<\n Modules['outright']\n> = /* #__LOADABLE__ */ () =>\n import(/* webpackChunkName: \"outright-module\" */ './index');\n\nexport const AsyncOutrightsList = loadable(loadOutrightModule, {\n resolveComponent: ({ default: outright }) =>\n outright.components.OutrightsList,\n});\n\nexport const AsyncOutright = loadable(loadOutrightModule, {\n resolveComponent: ({ default: outright }) => outright.components.Outright,\n});\n\nexport const AsyncOutrightPage = loadable(loadOutrightModule, {\n resolveComponent: ({ default: outright }) =>\n outright.components.OutrightPage,\n});\n\nexport const AsyncOutrightsBanners = loadable(loadOutrightModule, {\n resolveComponent: ({ default: outright }) =>\n outright.components.OutrightsBanners,\n});\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"sidebarToggler__container___2z38k\",\"is-full-screen\":\"sidebarToggler__is-full-screen___1yaqF\",\"is-offset-ignored-in-full-screen\":\"sidebarToggler__is-offset-ignored-in-full-screen___2scq7\",\"btn\":\"sidebarToggler__btn___2wIhe\",\"is-open-sidebar\":\"sidebarToggler__is-open-sidebar___33N3E\",\"sidebar-icon\":\"sidebarToggler__sidebar-icon___3_-AK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"promoHeader__container___1jYFu\",\"logo\":\"promoHeader__logo___2CTiR\",\"label\":\"promoHeader__label___2oGYm\",\"live\":\"promoHeader__live___v44Mv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"topMatch__container___1gvuF\",\"header\":\"topMatch__header___3_hQu\",\"header-title\":\"topMatch__header-title___3I1Qx\",\"spinner\":\"topMatch__spinner___3Wnh7\"};","// NOTE: Do not add any external dependency here! This util is used inside independent \"bettingLoader\".\nimport type { Config } from './LocaleManager';\n\nexport const LOCALES: Config[] = [\n {\n dataFeed: ['en', 'en_US'],\n cms: ['en'],\n banner: 'en',\n reactIntl: 'en',\n messages: 'en',\n dateFns: 'en-US',\n i18nCountries: 'en',\n transifex: 'l:en',\n matchTracker: 'en',\n polyfill: 'en',\n },\n {\n dataFeed: ['ru', 'ru_RU', 'ru_RF'],\n cms: ['ru'],\n banner: 'ru',\n reactIntl: 'ru',\n messages: 'ru',\n dateFns: 'ru',\n i18nCountries: 'ru',\n transifex: 'l:ru',\n matchTracker: 'ru',\n polyfill: 'ru',\n },\n {\n dataFeed: ['ru_RF', 'ru', 'ru_RU'],\n cms: ['ru_RF'],\n banner: 'ru',\n reactIntl: 'ru',\n messages: 'ru_RF',\n dateFns: 'ru',\n i18nCountries: 'ru',\n transifex: 'l:ru_RU',\n matchTracker: 'ru',\n polyfill: 'ru',\n },\n {\n dataFeed: ['sv', 'sv_SE'],\n cms: ['sv'],\n banner: 'se',\n reactIntl: 'sv',\n messages: 'sv',\n dateFns: 'sv',\n i18nCountries: 'sv',\n transifex: 'l:sv',\n matchTracker: 'en',\n polyfill: 'sv',\n },\n {\n dataFeed: ['zh_CN', 'zh'],\n cms: ['zh', 'cn', 'zh_CN'],\n banner: 'cn',\n reactIntl: 'zh',\n messages: 'zh',\n dateFns: 'zh-CN',\n i18nCountries: 'zh',\n transifex: 'l:zh_CN',\n matchTracker: 'zh',\n polyfill: 'zh',\n },\n {\n dataFeed: ['pt_BR', 'pt', 'pt_PT'],\n cms: ['pt'],\n banner: 'pt',\n reactIntl: 'pt',\n messages: 'pt',\n dateFns: 'pt',\n i18nCountries: 'pt',\n transifex: 'l:pt_BR',\n matchTracker: 'pt',\n polyfill: 'pt',\n },\n {\n dataFeed: ['uk', 'uk_UA'],\n cms: ['uk', 'ua', 'uk-ua', 'uk_UA'],\n banner: 'uk-ua',\n reactIntl: 'uk',\n messages: 'uk',\n dateFns: 'uk',\n i18nCountries: 'uk',\n transifex: 'l:uk',\n matchTracker: 'ukr',\n polyfill: 'uk',\n },\n {\n dataFeed: ['ja', 'ja_JP'],\n cms: ['ja'],\n banner: 'ja',\n reactIntl: 'ja',\n messages: 'ja',\n dateFns: 'ja',\n i18nCountries: 'ja',\n transifex: 'l:ja',\n matchTracker: 'ja',\n polyfill: 'ja',\n },\n {\n dataFeed: ['de', 'de_DE'],\n cms: ['de'],\n banner: 'de',\n reactIntl: 'de',\n messages: 'de',\n dateFns: 'de',\n i18nCountries: 'de',\n transifex: 'l:de',\n matchTracker: 'de',\n polyfill: 'de',\n },\n {\n dataFeed: ['pl', 'pl_PL'],\n cms: ['pl'],\n banner: 'pl',\n reactIntl: 'pl',\n messages: 'pl',\n dateFns: 'pl',\n i18nCountries: 'pl',\n transifex: 'l:pl',\n matchTracker: 'pl',\n polyfill: 'pl',\n },\n {\n dataFeed: ['pt', 'pt_PT', 'pt_BR'],\n cms: ['pt_PT'],\n banner: 'pt',\n reactIntl: 'pt',\n messages: 'pt_PT',\n dateFns: 'pt',\n i18nCountries: 'pt',\n transifex: 'l:pt',\n matchTracker: 'pt',\n polyfill: 'pt',\n },\n {\n dataFeed: ['en_CA', 'en', 'en_US'],\n cms: ['en_CA'],\n banner: 'en-ca',\n reactIntl: 'en-CA',\n messages: 'en_CA',\n dateFns: 'en-CA',\n i18nCountries: 'en',\n transifex: 'l:en_CA',\n matchTracker: 'en',\n polyfill: 'en',\n },\n {\n dataFeed: ['fr_CA', 'fr'],\n cms: ['fr_CA'],\n banner: 'fr-ca',\n reactIntl: 'fr-CA',\n messages: 'fr_CA',\n dateFns: 'fr-CA',\n i18nCountries: 'fr',\n transifex: 'l:fr_CA',\n matchTracker: 'fr',\n polyfill: 'fr',\n },\n {\n dataFeed: ['ro', 'ro_RO'],\n cms: ['ro'],\n banner: 'ro',\n reactIntl: 'ro',\n messages: 'ro',\n dateFns: 'ro',\n i18nCountries: 'ro',\n transifex: 'l:ro',\n matchTracker: 'ro',\n polyfill: 'ro',\n },\n {\n dataFeed: ['hu', 'hu_HU'],\n cms: ['hu'],\n banner: 'hu',\n reactIntl: 'hu',\n messages: 'hu',\n dateFns: 'hu',\n i18nCountries: 'hu',\n transifex: 'l:hu',\n matchTracker: 'hu',\n polyfill: 'hu',\n },\n {\n dataFeed: ['es', 'es_ES'],\n cms: ['es'],\n banner: 'es',\n reactIntl: 'es',\n messages: 'es',\n dateFns: 'es',\n i18nCountries: 'es',\n transifex: 'l:es',\n matchTracker: 'es',\n polyfill: 'es',\n },\n {\n dataFeed: ['th'],\n cms: ['th'],\n banner: 'th',\n reactIntl: 'th',\n messages: 'th',\n dateFns: 'th',\n i18nCountries: 'th',\n transifex: 'l:th_TH',\n matchTracker: 'th',\n polyfill: 'th',\n },\n {\n dataFeed: ['tl'],\n cms: ['tl_PH'],\n banner: 'tl-ph',\n reactIntl: 'fil',\n messages: 'fil',\n dateFns: 'en-US',\n i18nCountries: 'en',\n transifex: 'l:fil_PH',\n matchTracker: 'en',\n polyfill: 'fil',\n },\n {\n dataFeed: ['vi'],\n cms: ['vi'],\n banner: 'vi',\n reactIntl: 'vi',\n messages: 'vi',\n dateFns: 'vi',\n i18nCountries: 'vi',\n transifex: 'l:vi_VN',\n matchTracker: 'vi',\n polyfill: 'vi',\n },\n {\n dataFeed: ['hi'],\n cms: ['hi'],\n banner: 'hi',\n reactIntl: 'hi',\n messages: 'hi',\n dateFns: 'hi',\n i18nCountries: 'hi',\n transifex: 'l:hi_IN',\n matchTracker: 'en',\n polyfill: 'hi',\n },\n];\n\nexport const DEFAULT_LOCALE: Config = LOCALES[0]!;\n","// NOTE: Do not add any external dependency here! This util is used inside independent \"bettingLoader\".\nimport baseLocaleManager, {\n Config as ConfigBase,\n Extensions as ExtensionsBase,\n LocaleManagerInterface,\n} from '@gin-betting/locale-manager';\nimport type { LocaleData } from 'i18n-iso-countries';\n\nimport { DEFAULT_LOCALE, LOCALES } from './constants';\n\nexport interface Config extends ConfigBase {\n banner: string; // TODO: remove after CMS pass \"getBanners\" thought BettingAPI. GINFE-2607\n i18nCountries: string;\n transifex: string;\n matchTracker: string;\n polyfill: string;\n reactIntl: string;\n dateFns: string;\n}\n\nexport interface Extensions extends ExtensionsBase {\n messages: any;\n i18nCountries: LocaleData;\n}\n\nconst localeManager = (baseLocaleManager as unknown) as LocaleManagerInterface<\n Config,\n Extensions\n>;\n\nlocaleManager.set(LOCALES, DEFAULT_LOCALE);\n\nexport default localeManager;\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"all-games_c1d06\",\n \"use\": \"all-games_c1d06-usage\",\n \"viewBox\": \"0 0 28 17\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"market__container___3VAIG\",\"name\":\"market__name___2HszL\",\"odds\":\"market__odds___3URGG\"};","import { Middleware } from 'redux';\n\nimport bannersModule, { BannerTypes } from 'modules/banners';\n\nconst bannerDevMiddleware: Middleware = ({ dispatch }) => next => (\n action: any\n) => {\n const { type, payload } = action;\n const {\n actions: { setCmsBanners },\n constants: { GET_BANNERS_DATA_SUCCESS },\n } = bannersModule;\n\n const bannerStubs: [BannerTypes.BannerInfo, ...BannerTypes.BannerInfo[]] = [\n {\n id: 'banner:betting',\n imageHref: '/en/news/just-bet-and-win-prizes',\n imageSrc: '/assets/news/promo.png',\n title: 'title 1',\n buttonText: 'my bets',\n buttonHref: '#!/player/profile-bets-history',\n },\n {\n id: 'banner:banner-b2',\n imageHref: '/en/news/just-bet-and-win-prizes',\n imageSrc: '/assets/news/promo1.png',\n title: 'title 1',\n buttonText: '',\n buttonHref: '',\n },\n {\n id: 'banner:banner-b3',\n imageHref: '/en/news/just-bet-and-win-prizes',\n imageSrc: '/assets/news/promo1.png',\n title: 'title 1',\n buttonText: 'my bets 3',\n buttonHref: '#!/player/profile-bets-history',\n },\n ];\n\n if (type === GET_BANNERS_DATA_SUCCESS) {\n const banners = (payload.data.banners as BannerTypes.ApiBannerItem[])\n .filter(b => b.type === 'cms_banner')\n .map(({ id }, i) => ({\n ...(bannerStubs[i] ?? bannerStubs[0]),\n id,\n }));\n\n if (banners.length > 0) {\n setTimeout(() => {\n dispatch(setCmsBanners({ banners }));\n }, 3000);\n }\n }\n\n return next(action);\n};\n\nexport default bannerDevMiddleware;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"colorfulBanner__container___23R35\",\"wrapper\":\"colorfulBanner__wrapper___272XB\",\"competitor\":\"colorfulBanner__competitor___3UsYs\",\"odds\":\"colorfulBanner__odds___sYadS\"};","import React, { Fragment, memo } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport core from '@gin-betting/core';\nimport cn from 'classnames';\nimport cd from 'debug';\nimport { capitalize } from 'lodash';\n\nimport globalMessages from 'messages';\nimport LiveLabel from '../LiveLabel';\n\nimport './dateTime.scss';\n\nconst { formatTimeAndDate } = core.utils;\nconst debug = cd('components:DateTime');\n\ninterface Props {\n isLiveMatch: boolean;\n startTime: string;\n}\n\nconst DateTime: React.FC = props => {\n debug('render', props);\n\n const { startTime, isLiveMatch } = props;\n const { isToday, date, time } = formatTimeAndDate(startTime);\n\n return (\n \n {isLiveMatch ? (\n \n ) : (\n \n
\n {isToday ? time : capitalize(date)}\n
\n
\n {isToday ? (\n \n ) : (\n time\n )}\n
\n
\n )}\n
\n );\n};\n\nexport default memo(DateTime);\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"score__container___3m9R9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"score-container\":\"promoMatchDynamicScoreList__score-container___ZGZeb\",\"score-point\":\"promoMatchDynamicScoreList__score-point___Ss2_y\",\"score-divider\":\"promoMatchDynamicScoreList__score-divider___NnyrR\",\"dynamic-scores\":\"promoMatchDynamicScoreList__dynamic-scores___1YUT1\",\"with-borders\":\"promoMatchDynamicScoreList__with-borders___1i-rg\",\"total-score\":\"promoMatchDynamicScoreList__total-score___18DoU\",\"small-font\":\"promoMatchDynamicScoreList__small-font___2Zpgb\",\"score\":\"promoMatchDynamicScoreList__score___RfJLG\",\"count\":\"promoMatchDynamicScoreList__count___1Atej\",\"score-title\":\"promoMatchDynamicScoreList__score-title___1e4Rl\",\"server\":\"promoMatchDynamicScoreList__server___1TBd3\",\"home\":\"promoMatchDynamicScoreList__home___25pIp\",\"away\":\"promoMatchDynamicScoreList__away___1ymVt\",\"active\":\"promoMatchDynamicScoreList__active___3g7qz\",\"arrow-down\":\"promoMatchDynamicScoreList__arrow-down___2j_3z\",\"up\":\"promoMatchDynamicScoreList__up___2MsnJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"bannersImage__container___mAPHC\",\"list\":\"bannersImage__list___QevZ4\",\"item\":\"bannersImage__item___2idWL\",\"button\":\"bannersImage__button___OYgfQ\",\"button-new\":\"bannersImage__button-new___1PlwK\",\"img\":\"bannersImage__img___1xByX\"};","import React from 'react';\nimport LogoResizer from '@gin-betting/components/logo-resizer';\n\nimport GameLogo from '../GameLogo';\n\nimport './competitorLogo.scss';\n\ninterface Props {\n logoUrl: string | undefined;\n sportId: string;\n}\n\nconst CompetitorLogo: React.FC = ({ logoUrl, sportId }) => {\n return logoUrl ? (\n \n {({ ref, bgImageStyle }) => (\n \n )}\n \n ) : (\n
\n \n
\n );\n};\n\nexport default CompetitorLogo;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"options\":\"oddFormatSelect__options___1aHHb\",\"option\":\"oddFormatSelect__option___U3JDL\",\"is-selected\":\"oddFormatSelect__is-selected___3QnH9\"};","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"live_d6b31\",\n \"use\": \"live_d6b31-usage\",\n \"viewBox\": \"0 0 24 12\",\n \"content\": \"\\n \\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import { createContext } from 'react';\n\nimport makeContextHoc from 'hoc/makeContextHoc';\nimport { IBettingReadyIndicatorContext } from './types';\n\nexport const BettingReadyIndicatorContext = createContext(\n {} as IBettingReadyIndicatorContext\n);\n\nexport const withBettingReadyIndicatorContext = makeContextHoc<\n IBettingReadyIndicatorContext,\n 'readyIndicator'\n>({\n context: BettingReadyIndicatorContext,\n propName: 'readyIndicator',\n});\n","import core, { App } from '@gin-betting/core';\n\nconst {\n utils: { checkOnRoute },\n} = core;\n\nconst initBettingReadyIndicator = (initIndicator: (keys: string[]) => void) => {\n switch (true) {\n case checkOnRoute(App.Routes.TOURNAMENT): {\n initIndicator(['hasTitle', 'hasData']);\n\n break;\n }\n\n case checkOnRoute(App.Routes.MATCH): {\n initIndicator(['hasTitle', 'hasData']);\n\n break;\n }\n\n case checkOnRoute(App.Routes.OUTRIGHT): {\n initIndicator(['hasTitle', 'hasData']);\n\n break;\n }\n\n default: {\n break;\n }\n }\n};\n\nexport default initBettingReadyIndicator;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"featuredTournaments__container____E55c\",\"header\":\"featuredTournaments__header___1wHHf\",\"title\":\"featuredTournaments__title___2oY8s\",\"body\":\"featuredTournaments__body___yb0_i\",\"icon\":\"featuredTournaments__icon___oFo7k\",\"icon-container\":\"featuredTournaments__icon-container___2UDNw\",\"is-rotated\":\"featuredTournaments__is-rotated___njMFS\",\"load\":\"featuredTournaments__load___2WBQX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"navigation__container___21T2_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"promoMatchOdds__container___B3qVL\",\"odd\":\"promoMatchOdds__odd___3caWe\",\"odd-name\":\"promoMatchOdds__odd-name___1tGws\",\"vs\":\"promoMatchOdds__vs___3I_EV\"};","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"check_60290\",\n \"use\": \"check_60290-usage\",\n \"viewBox\": \"0 0 13 10\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// extracted by mini-css-extract-plugin\nmodule.exports = {\"events-of-the-day\":\"eventsOfTheDay__events-of-the-day___30igc\",\"container\":\"eventsOfTheDay__container___1RhcX\",\"spinner\":\"eventsOfTheDay__spinner___1Eg5k\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"categorizerHeadingRow__container___2B0vK\",\"is-active\":\"categorizerHeadingRow__is-active___cm2hN\",\"body\":\"categorizerHeadingRow__body___3-9nt\",\"prefix\":\"categorizerHeadingRow__prefix___2Pxjj\",\"suffix\":\"categorizerHeadingRow__suffix___2mCAm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"matchRow__container___4anQd\",\"is-one-market-view\":\"matchRow__is-one-market-view___2TWqZ\",\"wrapper\":\"matchRow__wrapper___2ePqh\",\"favorite\":\"matchRow__favorite___1hdhY\",\"logo\":\"matchRow__logo___22E3M\",\"info\":\"matchRow__info___2fS7Q\",\"competitors\":\"matchRow__competitors___2Kql-\",\"competitor\":\"matchRow__competitor___35oee\",\"date\":\"matchRow__date___3aZnp\",\"markets\":\"matchRow__markets___2Ozl7\",\"is-odd-stat-visible\":\"matchRow__is-odd-stat-visible___2ZKMu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"divider\":\"outrights__divider___2m01l\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"row\":\"MarketTotalRow__row___3Q6Bq\",\"bg\":\"MarketTotalRow__bg___1qysU\",\"col\":\"MarketTotalRow__col___1YDJb\",\"section\":\"MarketTotalRow__section___1KWhs\",\"title\":\"MarketTotalRow__title___2bg8i\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"fixedOverlay__container___2IWCf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"settingsDropdown__container___2VZMD\",\"stub\":\"settingsDropdown__stub___3lLq8\",\"icon\":\"settingsDropdown__icon___PNZt_\",\"is-open\":\"settingsDropdown__is-open___3Zh9J\",\"caret\":\"settingsDropdown__caret___1dB3i\",\"right-margin\":\"settingsDropdown__right-margin___30I0n\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"logoTitle__wrapper___32sG4\",\"name\":\"logoTitle__name___3_ywM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"prematchTime__container___1gnWi\"};","import React from 'react';\nimport cn from 'classnames';\n\nimport './liveLabel.scss';\n\ninterface Props {\n isFaded?: boolean;\n}\n\n// TODO: add \"title\"\nconst LiveLabel: React.FC = ({ isFaded }) => {\n return (\n \n Live\n \n );\n};\n\nexport default LiveLabel;\n","import loadable from '@loadable/component';\n\nexport const loadCashoutModule = /* #__LOADABLE__ */ () =>\n import(/* webpackChunkName: \"cashout-module\" */ './index');\n\nexport const AsyncCashOut = loadable(loadCashoutModule, {\n resolveComponent: ({ default: cashout }) => cashout.components.CashOut,\n});\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loader\":\"spinner__loader___33GBS\",\"loader__circle\":\"spinner__loader__circle___2FC9P\",\"loader__container\":\"spinner__loader__container___3csMH\",\"loader__spinner\":\"spinner__loader__spinner___1TQd3\",\"loader__rotate\":\"spinner__loader__rotate___2ok8f\",\"loader__spinner--orange\":\"spinner__loader__spinner--orange___J2Xt_\",\"loader__spinner--blue\":\"spinner__loader__spinner--blue___1W67z\",\"loader__spinner--green\":\"spinner__loader__spinner--green___27wWG\"};","import React from 'react';\nimport { injectIntl, WrappedComponentProps } from 'react-intl';\nimport { App } from '@gin-betting/core';\n\nimport { NoResults } from 'components';\nimport globalMessages from 'messages';\n\ntype Props = WrappedComponentProps;\n\ntype State = {\n hasError: boolean;\n};\n\nclass MatchErrorBoundary extends React.Component {\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n\n constructor(props: Props) {\n super(props);\n this.state = { hasError: false };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error('MatchErrorBoundary:', error, errorInfo);\n }\n\n handleRefresh = () => {\n if (typeof window !== 'undefined') {\n window.location.reload();\n }\n };\n\n render() {\n const finalMessage = this.props.intl.formatMessage(\n globalMessages.uploadError\n );\n\n if (this.state.hasError) {\n return (\n \n );\n }\n\n return this.props.children;\n }\n}\n\nexport default injectIntl(MatchErrorBoundary);\n","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport { App } from '@gin-betting/core';\n\nimport { Loader, NoResults } from 'components';\nimport globalMessages from 'messages';\n\ninterface Props {\n error?: any;\n isTimeout?: boolean;\n isLoading?: boolean;\n}\n\nconst MatchStub: React.FC = ({ isLoading, isTimeout, error }) => {\n const { formatMessage } = useIntl();\n\n const getFinalMessage = (): string => {\n if (isTimeout) {\n return formatMessage(globalMessages.timeIsUp);\n }\n\n return error && !isLoading\n ? formatMessage(globalMessages.uploadError)\n : formatMessage(globalMessages.loading);\n };\n\n const handleRefresh = () => {\n if (typeof window !== 'undefined') {\n window.location.reload();\n }\n };\n\n const finalMessage = getFinalMessage();\n\n return (\n \n {isLoading && (\n \n )}\n \n \n );\n};\n\nexport default MatchStub;\n","import React, { useState } from 'react';\nimport type { Match } from '@gin-betting/match';\n\nimport MarketsTabConfigsContext from './MarketsTabConfigsContext';\n\nconst MarketsTabConfigsCtx: React.FC = ({ children }) => {\n const [\n marketsTabConfigsBySport,\n setMarketsTabConfigsBySport,\n ] = useState({});\n\n return (\n \n {children}\n \n );\n};\n\nexport default MarketsTabConfigsCtx;\n","import React from 'react';\nimport loadable from '@loadable/component';\n\nimport MatchErrorBoundary from 'modules/match/components/Match/MatchErrorBoundary';\nimport { Modules } from '../../../types';\nimport MatchStub from '../components/Match/MatchStub';\n\nexport { default as MarketsTabConfigsCtx } from './MarketsTabConfigsCtx';\n\ninterface Props {\n slugOrId: string;\n}\n\nexport const loadMatchModule: () => Promise<\n Modules['match']\n> = /* #__LOADABLE__ */ () =>\n import(/* webpackChunkName: \"match-module\" */ '../index');\n\nexport const AsyncMatch = loadable(loadMatchModule, {\n resolveComponent: ({ default: match }) => match.components.MatchDataFetcher,\n fallback: ,\n});\n\nexport const AsyncSidebarMarketList = loadable(loadMatchModule, {\n resolveComponent: ({ default: match }) =>\n match.components.SidebarMarketList,\n});\n\nexport const AsyncMatchWithErrorBoundary: React.FC = ({ slugOrId }) => (\n \n \n \n);\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"stream\":\"fixtureDataContainer__stream___2rBqg\"};","import React from 'react';\nimport { NavLink } from 'react-router-dom';\n\nimport { checkIsCmsLink } from 'utils';\nimport SmartLink from '../SmartLink';\n\nimport './NavButton.scss';\n\ninterface OwnProps {\n link: string;\n isDisable: boolean;\n}\n\ntype Props = OwnProps;\n\nconst NavButton: React.FC = ({ link, isDisable, children }) => {\n if (isDisable) {\n return (\n \n {children}\n \n );\n }\n\n if (checkIsCmsLink(link)) {\n return (\n \n {children}\n \n );\n }\n\n return (\n \n {children}\n \n );\n};\n\nexport default NavButton;\n","import React from 'react';\nimport { useIntl } from 'react-intl';\n\nimport globalMessages from 'messages';\n\ninterface Props {\n betsSize: number | null;\n}\n\nconst BetCount: React.FC = ({ betsSize }) => {\n const { formatMessage } = useIntl();\n\n const betCountTitle = betsSize\n ? formatMessage(globalMessages.bettingSlipBetTitle, {\n count: betsSize,\n })\n : '';\n\n return (\n
\n {`${betsSize} ${betCountTitle}`}\n
\n );\n};\n\nexport default BetCount;\n","import React from 'react';\nimport { App } from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport './betStatus.scss';\n\ninterface Props {\n betStatus: App.BetslipStatus;\n}\n\nconst BetStatus: React.SFC = ({ betStatus }) => {\n const isProcessing = betStatus === App.BetslipStatus.PROCESSING;\n const isSuccess = betStatus === App.BetslipStatus.SUCCESS;\n\n const isInitial = betStatus === App.BetslipStatus.INITIAL;\n const isError = betStatus === App.BetslipStatus.ERROR;\n\n return (\n \n );\n};\n\nexport default BetStatus;\n","import withLoadable from 'hoc/withLoadable';\n\nconst Carousel = /* #__LOADABLE__ */ () =>\n import(/* webpackChunkName: \"components-Carousel\" */ './Carousel');\n\nexport default withLoadable(Carousel);\n","import React, { ReactElement } from 'react';\nimport cn from 'classnames';\n\nimport type { Analytics } from 'services/analytics';\n\nimport './categorizerHeadingRow.scss';\n\ninterface Props {\n isActive?: boolean;\n prefix?: ReactElement;\n suffix?: ReactElement;\n onClick?: VoidFn;\n analytics?: Analytics;\n}\n\nconst CategorizerHeadingRow: React.FC = ({\n isActive = false,\n prefix,\n suffix,\n onClick,\n children,\n analytics,\n}) => {\n return (\n \n {prefix && (\n \n {prefix}\n \n )}\n {children && (\n \n {children}\n \n )}\n {suffix && (\n \n {suffix}\n \n )}\n \n );\n};\n\nexport default CategorizerHeadingRow;\n","import React from 'react';\nimport cn from 'classnames';\n\nimport './categorizerHeadingRowGroup.scss';\n\ninterface Props {\n separateRows?: boolean;\n}\n\nconst CategorizerHeadingRowGroup: React.FC = ({\n separateRows = false,\n children,\n}) => {\n return (\n \n {children}\n \n );\n};\n\nexport default CategorizerHeadingRowGroup;\n","import React from 'react';\nimport cn from 'classnames';\n\nimport useCollapse from './useCollapse';\n\nimport './collapse.scss';\n\ninterface Props {\n isCollapsed: boolean;\n duration?: number;\n}\n\nconst Collapse: React.FC = ({\n isCollapsed,\n duration = 500,\n children,\n}) => {\n const { isAnimating, nodeRef } = useCollapse({\n isCollapsed,\n duration,\n });\n\n return (\n \n {(isAnimating || !isCollapsed) && (\n
{children}
\n )}\n \n );\n};\n\nexport default Collapse;\n","import { useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport { useClientNode, useMount } from 'hooks';\n\ninterface Input {\n duration: number;\n isCollapsed: boolean;\n}\n\ninterface Output {\n isAnimating: boolean;\n nodeRef: (el: HTMLElement | null) => void;\n}\n\nexport default function useCollapse({ duration, isCollapsed }: Input): Output {\n const [isAnimating, setIsAnimating] = useState(false);\n const [node, nodeRef] = useClientNode();\n\n const mount = useRef(false);\n const durationRef = useRef(duration);\n durationRef.current = duration;\n\n useEffect(() => {\n node?.parentElement?.style.setProperty(\n `--Collapse-height`,\n `${node.clientHeight}px`\n );\n node?.parentElement?.style.setProperty(\n `--Collapse-duration`,\n `${durationRef.current}ms`\n );\n }, [node]);\n\n useMount(() => {\n mount.current = true;\n });\n\n useLayoutEffect(() => {\n if (!mount.current) return;\n\n setIsAnimating(true);\n\n const timer = setTimeout(() => {\n setIsAnimating(false);\n }, durationRef.current);\n\n return () => clearTimeout(timer);\n }, [isCollapsed]);\n\n return {\n isAnimating,\n nodeRef,\n };\n}\n","import React from 'react';\nimport core from '@gin-betting/core';\n\nimport './currency.scss';\n\nconst {\n utils: { getCurrency },\n} = core;\n\nconst Currency: React.FC = () => {\n const { currencySymbol } = getCurrency();\n\n return (\n \n {currencySymbol}\n \n );\n};\n\nexport default Currency;\n","import React, { ErrorInfo } from 'react';\nimport core from '@gin-betting/core';\n\nconst { sentryHub } = core.services;\n\ninterface Props {\n wrappedComponentName: string;\n}\n\ninterface State {\n error: Error | null;\n}\n\nexport default class ErrorBoundary extends React.Component {\n state = { error: null };\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n this.setState({ error });\n sentryHub.withScope(scope => {\n scope.setTag('react-component', this.props.wrappedComponentName);\n scope.setExtras(errorInfo as any);\n\n sentryHub.captureException(error);\n });\n }\n\n render() {\n if (this.state.error) {\n return null;\n }\n\n return this.props.children;\n }\n}\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"favorite-border_d90e0\",\n \"use\": \"favorite-border_d90e0-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"favorite-filled_2a487\",\n \"use\": \"favorite-filled_2a487-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react';\nimport cn from 'classnames';\n\nimport Icon from '../Icon';\n\nimport favoriteBorderGlyph from 'assets/svg/favorite-border.svg';\nimport favoriteFilledGlyph from 'assets/svg/favorite-filled.svg';\nimport './favoriteIcon.scss';\n\ninterface Props {\n isActive: boolean;\n}\n\nconst FavoriteIcon: React.FC = ({ isActive }) => {\n return (\n \n );\n};\n\nexport default React.memo(FavoriteIcon);\n","import React from 'react';\n\nimport './fixedOverlay.scss';\n\nconst FixedOverlay: React.FC = ({ children }) => (\n
{children}
\n);\n\nexport default FixedOverlay;\n","import React from 'react';\n\nimport { getByKey } from 'utils';\n\nimport icons from '../../styles/flags.css';\nimport styles from './flagIcon.scss';\n\ninterface Props {\n countryCode: string | null;\n}\n\nconst FlagIcon: React.FC = ({ countryCode }) => {\n if (countryCode == null) return null;\n\n const id = `icon-${countryCode}` as const;\n\n const iconStyleName = getByKey(icons, id) || '';\n\n return (\n \n );\n};\n\nexport default React.memo(FlagIcon);\n","import React, { Fragment } from 'react';\n\nconst FragmentWithProps: React.FC = ({ children }) => (\n {children}\n);\n\nexport default FragmentWithProps;\n","import withLoadable from 'hoc/withLoadable';\n\nconst Helper = /* #__LOADABLE__ */ () =>\n import(/* webpackChunkName: \"components-Helper\" */ './Helper');\n\nexport default withLoadable(Helper);\n","import { reduce, size } from 'lodash';\n\nimport { useToggler } from 'hooks';\n\ninterface Input {\n initSize: number;\n items: T[];\n cellInRow: number;\n}\n\ninterface Output {\n canCollapse: boolean;\n moreCount: number;\n visibleItems: T[];\n extraItems: T[];\n toggleIsCollapsed: VoidFunction;\n isCollapsed: boolean;\n visibleStubsSize: number;\n extraStubsSize: number;\n validCellInRow: number;\n}\n\nexport default function useLessMoreContainer({\n initSize,\n items,\n cellInRow,\n}: Input): Output {\n const validCellInRow = items.length < cellInRow ? items.length : cellInRow;\n const validInitSize = initSize + getLackSize(initSize, validCellInRow);\n\n const allSize = size(items);\n\n const canCollapse = allSize > validInitSize;\n\n const [isCollapsed, toggleIsCollapsed] = useToggler(canCollapse);\n\n const [visibleItems, extraItems] = reduce(\n items,\n (acc: [T[], T[]], item, idx) => {\n acc[idx < validInitSize ? 0 : 1].push(item);\n\n return acc;\n },\n [[], []]\n );\n\n const moreCount = extraItems.length;\n\n const visibleStubsSize = getLackSize(visibleItems.length, validCellInRow);\n const extraStubsSize = getLackSize(extraItems.length, validCellInRow);\n\n return {\n canCollapse,\n moreCount,\n visibleItems,\n extraItems,\n isCollapsed,\n toggleIsCollapsed,\n visibleStubsSize,\n extraStubsSize,\n validCellInRow,\n };\n}\n\nfunction getLackSize(itemsSize: number, cellInRow: number): number {\n const remainder = itemsSize % cellInRow;\n\n return remainder ? cellInRow - remainder : 0;\n}\n","import React, { Fragment, useMemo } from 'react';\nimport { useIntl } from 'react-intl';\nimport CollapsibleContainer from '@gin-betting/components/collapsible-container';\nimport cn from 'classnames';\nimport { times, upperFirst } from 'lodash';\n\nimport messages from 'messages';\nimport SmartLink from '../SmartLink';\nimport useLessMoreContainer from './useLessMoreContainer';\n\nimport './lessMoreContainer.scss';\n\ntype CollapsibleContainerProps = PropsFromReactComponent<\n typeof CollapsibleContainer\n>;\n\ninterface Props\n extends Omit {\n initSize: number;\n children: Array;\n cellInRow: 1 | 2 | 3 | 4 | 5;\n moreLink?: string;\n columnTitle?: JSX.Element;\n}\n\nconst LessMoreContainer: React.FC = ({\n initSize,\n children: items,\n duration,\n transitionTimingFunction,\n cellInRow,\n moreLink,\n columnTitle,\n}) => {\n const {\n visibleItems,\n extraItems,\n canCollapse,\n moreCount,\n isCollapsed,\n visibleStubsSize,\n extraStubsSize,\n toggleIsCollapsed,\n validCellInRow,\n } = useLessMoreContainer({\n initSize,\n items,\n cellInRow,\n });\n const { formatMessage } = useIntl();\n\n const text = isCollapsed\n ? `${formatMessage(messages.over)} +${moreCount}`\n : formatMessage(messages.under);\n\n const button = useMemo(\n () =>\n moreLink ? (\n \n {upperFirst(text)}\n \n ) : (\n
\n {upperFirst(text)}\n
\n ),\n [text, moreLink, toggleIsCollapsed]\n );\n\n const visibleStubs = useMemo(\n () =>\n times(visibleStubsSize).map(i => (\n \n )),\n [visibleStubsSize]\n );\n\n const extraStubs = useMemo(\n () =>\n times(extraStubsSize).map(i => (\n \n {!isCollapsed && i === 0 && button}\n \n )),\n [extraStubsSize, button, isCollapsed]\n );\n\n return (\n \n {columnTitle && (\n
\n {times(cellInRow).map(idx => (\n {columnTitle}\n ))}\n
\n )}\n
\n {visibleItems}\n {visibleStubs}\n
\n\n {canCollapse && (\n \n \n \n {extraItems}\n {extraStubs}\n \n \n {(isCollapsed || !extraStubs.length) && button}\n \n )}\n \n );\n};\n\nexport default React.memo(LessMoreContainer);\n","import React from 'react';\nimport Helmet from 'react-helmet';\nimport { useIntl } from 'react-intl';\n\nimport messages from 'messages';\nimport { getProductName } from 'utils';\n\nconst ListHelmet: React.FC = () => {\n const { formatMessage } = useIntl();\n\n const helmetTitle =\n window.__app.initialTitle ||\n formatMessage(messages.matchListPageTitle, {\n productName: getProductName(),\n });\n\n return ;\n};\n\nexport default React.memo(ListHelmet);\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"mob-live_6482e\",\n \"use\": \"mob-live_6482e-usage\",\n \"viewBox\": \"0 0 22 22\",\n \"content\": \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react';\nimport cn from 'classnames';\n\nimport UserDevice from 'services/user-device';\nimport Icon from '../Icon';\n\nimport live from 'assets/svg/mob-live.svg';\nimport './LiveIcon.scss';\n\nconst LiveIcon: React.FC = () => (\n \n);\n\nexport default LiveIcon;\n","import React from 'react';\nimport { inRange } from 'lodash';\n\nimport './ProgressLine.scss';\n\ntype StrokeLinecap = 'round' | 'butt' | 'square' | 'inherit';\n\ninterface DefaultProps {\n strokeWidth: number;\n strokeColor: string;\n trailWidth: number;\n trailColor: string;\n strokeLinecap: StrokeLinecap;\n transition: string;\n}\n\ntype NeedProps = {\n percent: number;\n};\n\ntype Props = Partial & NeedProps;\n\nconst ProgressLine: React.FC = ({\n transition = 'stroke-dashoffset 0.6s ease 0s, stroke 0.6s ease',\n percent,\n strokeWidth = 1,\n trailWidth,\n strokeLinecap = 'square',\n strokeColor = '#3FC7FA',\n trailColor = '#D9D9D9',\n}) => {\n const pathStyle = {\n strokeDasharray: '100px, 100px',\n strokeDashoffset: `${100 - percent}px`,\n transition,\n };\n\n const validatedStrokeWidth =\n strokeWidth && inRange(strokeWidth, 0, 100) ? strokeWidth : 1;\n\n const validatedTrailWidth = trailWidth || validatedStrokeWidth;\n\n const center = validatedStrokeWidth / 2;\n const right = 100 - validatedStrokeWidth / 2;\n const viewBoxString = `0 0 100 ${validatedStrokeWidth}`;\n let pathString;\n\n if (strokeLinecap !== 'butt') {\n pathString = `M ${center},${center} L ${right},${center}`;\n } else {\n pathString = `M ${0},${center} L ${100},${center}`;\n }\n\n return (\n \n \n\n \n \n );\n};\n\nexport default ProgressLine;\n","import { useEffect, useRef, useState } from 'react';\nimport { App } from '@gin-betting/core';\n\ninterface Input {\n initialProgressValue: number;\n fetchStatus: App.FetchStatus;\n}\n\ninterface Output {\n progressValue: number;\n isVisibleProgressBar: boolean;\n}\n\nconst DELAY = 1500 as const;\nconst INTERVAL = 500 as const;\nconst PROGRESS_VALUE_STEP = 2 as const;\nconst MAX_PROGRESS_VALUE = 100 as const;\n\nconst useLoader = ({ initialProgressValue, fetchStatus }: Input): Output => {\n const initialProgressValueRef = useRef(initialProgressValue);\n initialProgressValueRef.current = initialProgressValue;\n\n const [progressValue, setProgressValue] = useState(\n initialProgressValueRef.current\n );\n const [isVisibleProgressBar, setIsVisibleProgressBar] = useState(\n false\n );\n\n useEffect(() => {\n let timeout: number | undefined;\n\n if (fetchStatus === App.FetchStatus.LOADING) {\n setIsVisibleProgressBar(true);\n } else {\n setProgressValue(MAX_PROGRESS_VALUE);\n\n timeout = window.setTimeout(() => {\n setIsVisibleProgressBar(false);\n }, DELAY);\n }\n\n return () => {\n clearTimeout(timeout);\n };\n }, [fetchStatus]);\n\n useEffect(() => {\n if (!isVisibleProgressBar) {\n setProgressValue(initialProgressValueRef.current);\n\n return;\n }\n\n const interval = window.setInterval(() => {\n setProgressValue(prevValue => {\n const nextValue = prevValue + PROGRESS_VALUE_STEP;\n\n if (nextValue > MAX_PROGRESS_VALUE) {\n clearInterval(interval);\n\n return prevValue;\n }\n\n return nextValue;\n });\n }, INTERVAL);\n\n return () => {\n clearInterval(interval);\n };\n }, [isVisibleProgressBar]);\n\n return {\n isVisibleProgressBar,\n progressValue,\n };\n};\n\nexport default useLoader;\n","import React from 'react';\nimport core, { App } from '@gin-betting/core';\n\nimport ProgressLine from './ProgressLine';\nimport useLoader from './useLoader';\n\nconst {\n utils: { checkEquality },\n} = core;\n\ninterface Props {\n initialProgressValue: number;\n fetchStatus: App.FetchStatus;\n}\n\nconst Loader: React.FC = ({ fetchStatus, initialProgressValue }) => {\n const { isVisibleProgressBar, progressValue } = useLoader({\n fetchStatus,\n initialProgressValue,\n });\n\n return isVisibleProgressBar ? (\n \n ) : null;\n};\n\nexport default React.memo(Loader, (prevProps, nextProps) =>\n checkEquality(prevProps, nextProps, { maxDepth: 2 })\n);\n","import React, { useMemo } from 'react';\nimport cn from 'classnames';\n\nimport { convertNameToRuLocale } from 'utils';\nimport CompetitorLogo from '../CompetitorLogo';\nimport SmartLink from '../SmartLink';\n\nimport './LogoTitle.scss';\n\nconst { Fragment } = React;\n\ninterface Props {\n name: string | null;\n sportId: string;\n logoUrl?: string;\n linkToMatch?: string | null;\n isLogoBeforeTeamName?: boolean;\n isLogoHidden?: boolean;\n styleName?: string;\n className?: string;\n}\n\nconst LogoTitle: React.FC = ({\n name,\n logoUrl,\n isLogoHidden,\n linkToMatch,\n className,\n isLogoBeforeTeamName,\n sportId,\n}) => {\n const renderBody = useMemo(() => {\n const convertedName = convertNameToRuLocale(name);\n\n return (\n \n \n {convertedName}\n \n\n {!isLogoHidden && (\n \n )}\n \n );\n }, [name, isLogoHidden, logoUrl, sportId]);\n\n const wrapperStyles = cn('wrapper', {\n 'is-reverse': isLogoBeforeTeamName,\n });\n const wrapperCn = cn('__app-LogoTitle-link', {\n '__app-LogoTitle-is-reverse': isLogoBeforeTeamName,\n });\n\n return (\n
\n {linkToMatch ? (\n \n {renderBody}\n \n ) : (\n
\n {renderBody}\n
\n )}\n
\n );\n};\n\nexport default LogoTitle;\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"plus-circle_08411\",\n \"use\": \"plus-circle_08411-usage\",\n \"viewBox\": \"0 0 16 16\",\n \"content\": \"\\n \\n \\n \\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React, { useMemo } from 'react';\n\nimport { Action, AnalyticAttrsCtx, useAnalyticAttrs } from 'services/analytics';\nimport { Target, tracker } from 'services/tracking-manager';\nimport Icon from '../Icon';\nimport SmartLink from '../SmartLink/SmartLink';\n\nimport backIcon from 'assets/svg/arrow-left.svg';\nimport plusCircle from 'assets/svg/plus-circle.svg';\nimport './marketsCount.scss';\n\ninterface Props {\n marketsCount: number | undefined;\n topMarketsCount?: number;\n linkToMatch: string | null;\n isHiddenCount?: boolean;\n isPlusInCircle?: boolean;\n}\n\nconst MarketsCount: React.FC = ({\n marketsCount = 0,\n isHiddenCount,\n linkToMatch,\n isPlusInCircle,\n topMarketsCount = 1,\n}) => {\n const analytic = useAnalyticAttrs();\n const diff = marketsCount - topMarketsCount;\n\n const appliedAnalytic = useMemo(\n () => ({ ...analytic, 'data-action': Action.SelectMoreMarkets }),\n [analytic]\n );\n\n return (\n \n \n {diff >= 1 && !isHiddenCount ? (\n \n {isPlusInCircle ? (\n \n ) : (\n '+'\n )}\n {diff}\n \n ) : (\n \n \n \n )}\n \n \n );\n};\n\nexport default React.memo(MarketsCount);\n","import React from 'react';\nimport { FormattedMessage, MessageDescriptor } from 'react-intl';\n\nimport './MarketTitle.scss';\n\ninterface Props {\n name: string;\n defaultMsg: MessageDescriptor;\n}\n\nconst MarketTitle: React.FC = ({ name, defaultMsg }) => {\n return name ? (\n renderName(name)\n ) : (\n \n {(txt: string) => renderName(txt)}\n \n );\n};\n\nexport default MarketTitle;\n\nfunction renderName(name: string) {\n // TODO: remove hardcode 1x2\n const isOneXTwo = name.toLocaleLowerCase() === '1x2';\n\n return (\n
\n {isOneXTwo ? (\n name.split('').map(letter =>
{letter}
)\n ) : (\n
{name}
\n )}\n
\n );\n}\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport core from '@gin-betting/core';\nimport cn from 'classnames';\nimport cd from 'debug';\n\nimport globalMessages from 'messages';\nimport GameLogo from '../GameLogo';\nimport MatchTime from '../MatchTime';\n\nimport './matchDateTime.scss';\n\nconst {\n utils: { formatTimeAndDate },\n} = core;\n\nconst debug = cd('components:DateTime');\n\ninterface Props {\n matchId: string;\n isLive: boolean;\n startTime: string;\n liveCoverage: boolean;\n isSmall: boolean;\n sportId: string;\n showGameLogo?: boolean;\n dateFormat?: string;\n}\n\nconst MatchDateTime: React.FC = props => {\n debug('render', props);\n\n const {\n matchId,\n startTime,\n liveCoverage,\n isLive,\n isSmall,\n sportId,\n showGameLogo,\n dateFormat,\n } = props;\n\n const { date, time, isToday } = formatTimeAndDate(startTime, {\n // => 01.10 / Oct 01\n dateFormat: dateFormat ? dateFormat : isSmall ? 'dd.MM' : 'MMM dd',\n });\n\n return (\n
\n
\n {showGameLogo && sportId && }\n {(liveCoverage || isLive) && (\n \n Live\n
\n )}\n
\n \n
\n {isLive ? (\n \n ) : (\n
\n {time}\n
\n )}\n
\n\n {isLive ? null : isToday && !isSmall ? (\n
\n \n
\n ) : (\n date\n )}\n \n \n );\n};\n\nexport default MatchDateTime;\n","import React from 'react';\n\nimport LogoTitle from '../LogoTitle';\n\nimport './middlePartMatchRow.scss';\n\ninterface Props {\n sportId: string;\n linkToMatch: string | null;\n marketName?: string;\n homeTitle: string;\n awayTitle: string;\n homeLogo: string;\n awayLogo: string;\n children: JSX.Element;\n}\n\nconst MiddlePartMatchRow: React.FC = ({\n linkToMatch,\n marketName,\n homeTitle,\n awayTitle,\n homeLogo,\n awayLogo,\n children,\n sportId,\n}) => {\n return (\n \n \n {marketName ? (\n \n {marketName}\n \n ) : (\n
\n )}\n\n \n
\n
\n {children}\n
\n \n \n \n \n );\n};\n\nexport default MiddlePartMatchRow;\n","import withLoadable from 'hoc/withLoadable';\n\nconst MultiCarousel = /* #__LOADABLE__ */ () =>\n import(\n /* webpackChunkName: \"components-MultiCarousel\" */ './MultiCarousel'\n );\n\nexport default withLoadable(MultiCarousel);\n","/* tslint:disable */\nimport { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n noResultsMessageDefault: {\n defaultMessage: 'Sorry, currently there are no events available for betting.',\n id: 'components.NoResults'\n },\n noResultsMessageMore: {\n defaultMessage: 'Please enter at least two characters in order to search',\n id: 'components.NoResults/More'\n },\n noResultsMessageSearch: {\n defaultMessage: 'Sorry, we couldn\\'t find anything matching your search! Please try different criteria',\n id: 'components.yNoResults/Search'\n },\n noResultsMessagePage: {\n defaultMessage: 'Sorry, currently there are no events available for this page. Please try different page',\n id: 'components.NoResults/Page'\n },\n noResultsMessageTryAgain: {\n defaultMessage: 'Try again',\n id: 'components.NoResults/TryAgain'\n }\n});","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport core, { App } from '@gin-betting/core';\n\nimport SmartLink from '../SmartLink/SmartLink';\nimport messages from './messages';\n\nimport './NoResults.scss';\n\nconst { getFiltersFromLocation } = core.utils;\n\ninterface Props {\n type?: App.PageType;\n defaultMessage?: string;\n listType?: App.PageType;\n\n linkHandler?: () => void;\n error?: any;\n}\n\nconst NoResults: React.FC = ({\n type,\n error,\n defaultMessage,\n linkHandler,\n listType,\n}) => {\n const { formatMessage } = useIntl();\n const defaultMsg =\n defaultMessage || formatMessage(messages.noResultsMessageDefault);\n const defaultSearchMessage = formatMessage(messages.noResultsMessageSearch);\n const inputMoreMessage = formatMessage(messages.noResultsMessageMore);\n const noPageMessage = formatMessage(messages.noResultsMessagePage);\n\n const getMessages = (): { message: string; linkMessage?: string } => {\n const { search, page } = getFiltersFromLocation();\n const showSecond = search && search.length < 2;\n\n if (type === App.PageType.LIST && showSecond)\n return { message: inputMoreMessage };\n\n if (search) return { message: defaultSearchMessage };\n\n if (error) {\n return {\n message: defaultMsg,\n linkMessage: formatMessage(messages.noResultsMessageTryAgain),\n };\n }\n\n if (page && +page > 1) {\n return { message: noPageMessage, linkMessage: 'All Games' };\n }\n\n return { message: defaultMsg };\n };\n\n const renderLinkedMessage = (linkMessage: string) => {\n const linkTo = listType || '/';\n\n return linkHandler ? (\n
\n {linkMessage}\n
\n ) : (\n \n {linkMessage}\n \n );\n };\n\n const { message, linkMessage } = getMessages();\n\n return (\n
\n
\n {message}\n
\n {linkMessage && renderLinkedMessage(linkMessage)}\n
\n );\n};\n\nexport default NoResults;\n","import React from 'react';\n\nimport './oddStatistic.scss';\n\ninterface Props {\n show?: boolean;\n percent?: number | null;\n}\n\nconst OddStatistic: React.FC = props => {\n const { show, percent } = props;\n\n if (!show) return null;\n\n return percent ? (\n
\n {percent}%\n
\n ) : (\n \n );\n};\n\nexport default React.memo(OddStatistic);\n","import { useEffect, useRef, useState } from 'react';\nimport { IntlShape, useIntl } from 'react-intl';\nimport { View } from '@gin-betting/core';\n\nimport { usePrevious } from 'hooks';\n\ninterface Input {\n odd: View.Odd | null;\n isActive: boolean;\n}\n\ninterface Output {\n isIncreased: boolean | null;\n intl: IntlShape;\n}\n\nconst useOdd = (props: Input): Output => {\n const { odd, isActive } = props;\n const intl = useIntl();\n const timerIdRef = useRef();\n\n const [isIncreased, setIsIncreased] = useState(null);\n\n const { value = null, id = null } = odd || {};\n\n const oldOddValue = usePrevious(value);\n\n useEffect(\n () => {\n const newIsIncreased =\n value && oldOddValue && value !== oldOddValue\n ? value >= oldOddValue\n : null;\n\n if (newIsIncreased !== null) {\n setIsIncreased(newIsIncreased);\n timerIdRef.current = window.setTimeout(() => {\n setIsIncreased(null);\n }, 2200);\n }\n\n return () => {\n clearTimeout(timerIdRef.current);\n };\n },\n /* oldOddValue from usePrevious hook is don't need here because this ref value */\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n [id, value]\n );\n\n useEffect(() => () => clearTimeout(timerIdRef.current), []);\n\n return {\n isIncreased: isActive ? isIncreased : null,\n intl,\n };\n};\n\nexport default useOdd;\n","import React, { useCallback } from 'react';\nimport { IntlShape } from 'react-intl';\nimport { RefHandler } from 'react-popper';\nimport { useLocation } from 'react-router';\nimport { App, GQL, View } from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport { BetslipAttrManager } from 'app-constants';\nimport messages from 'messages';\nimport {\n Category,\n formatPathname,\n formatSearch,\n useAnalyticAttrs,\n} from 'services/analytics';\nimport { Target, tracker } from 'services/tracking-manager';\nimport { formatDecimalOdd } from 'utils';\nimport Icon from '../Icon';\nimport OddStatistic from '../OddStatistic';\nimport useOdd from './useOdd';\n\nimport arrow from 'assets/svg/arrow.svg';\nimport lock from 'assets/svg/lock.svg';\nimport './odd.scss';\n\ntype Btn = React.DOMAttributes;\n\ninterface Props {\n odd: View.Odd | null;\n isActive: boolean;\n isCompact: boolean;\n oddFormat: App.OddFormat;\n betslipOddId?: string;\n isLabel?: boolean;\n isSelected?: boolean;\n toggleBetslipOdd?: () => void;\n showResult?: boolean;\n withTitle?: boolean;\n isShowStatistic?: boolean;\n statisticPercent?: number | null;\n onMouseEnter?: Btn['onMouseLeave'];\n onMouseLeave?: Btn['onMouseEnter'];\n fRef?: RefHandler;\n modifyOddTitle?: (name: string) => string;\n}\n\nfunction getOddTittle(\n oddValue: React.ReactText,\n isResultSettled: boolean,\n odd: View.Odd,\n isActive: boolean,\n intl: IntlShape\n) {\n const { name, status } = odd;\n\n if (isActive) {\n return `${name}: ${oddValue}`;\n }\n\n if (isResultSettled) {\n const resultText = intl.formatMessage(\n status === GQL.OddStatus.WIN ? messages.won : messages.lost\n );\n\n return `${name}: ${resultText}`;\n }\n\n return intl.formatMessage(messages.deactivated);\n}\n\nconst Odd: React.FC = props => {\n const {\n odd,\n isSelected,\n isLabel,\n isActive,\n oddFormat,\n showResult,\n withTitle,\n isShowStatistic,\n statisticPercent,\n onMouseLeave,\n onMouseEnter,\n fRef,\n modifyOddTitle,\n betslipOddId,\n toggleBetslipOdd,\n } = props;\n const location = useLocation();\n\n const { search, pathname, hash } = location;\n\n const analyticAttrs = useAnalyticAttrs();\n\n const { isIncreased, intl } = useOdd({ odd, isActive });\n\n const onClickBtn = useCallback(() => {\n if (!toggleBetslipOdd) return;\n\n toggleBetslipOdd();\n\n if (!betslipOddId) return;\n\n if (isSelected) {\n delete BetslipAttrManager[betslipOddId];\n\n return;\n }\n\n const selectUrl = `${formatPathname(pathname)}${formatSearch(\n search\n )}${hash}`;\n\n BetslipAttrManager[betslipOddId] = {\n category: analyticAttrs['data-category'] || Category.Unknown,\n label: { selectUrl },\n };\n }, [\n toggleBetslipOdd,\n betslipOddId,\n analyticAttrs,\n isSelected,\n search,\n pathname,\n hash,\n ]);\n\n if (odd === null) return null;\n\n const { value, status, name } = odd;\n\n const {\n value: formattedValue,\n component: formatComponent,\n } = formatDecimalOdd(value, oddFormat);\n\n const win = status === GQL.OddStatus.WIN;\n const loss = status === GQL.OddStatus.LOSS;\n const isResultSettled = !!showResult && (win || loss);\n\n const oddTitle = getOddTittle(\n formattedValue,\n isResultSettled,\n odd,\n isActive,\n intl\n );\n\n return (\n \n {withTitle && (\n
\n \n {typeof modifyOddTitle === 'function'\n ? modifyOddTitle(name)\n : name}\n \n
\n )}\n \n {isActive ? (\n
\n {isIncreased != null && (\n \n \n
\n )}\n
{formatComponent}
\n \n \n ) : isResultSettled ? (\n
\n
\n {intl.formatMessage(\n win ? messages.won : messages.lost\n )}\n
\n
\n ) : (\n \n )}\n\n {isResultSettled && (\n \n )}\n \n
\n );\n};\n\nexport default React.memo(Odd);\n","import React from 'react';\nimport { useIntl } from 'react-intl';\n\nimport messages from 'messages';\nimport Icon from '../Icon';\n\nimport lock from 'assets/svg/lock.svg';\nimport './odd.scss';\n\ninterface Props {\n stubNode?: JSX.Element;\n}\n\nconst OddButtonStub: React.FC = ({ stubNode }) => {\n const { formatMessage } = useIntl();\n\n return (\n \n {stubNode ? (\n stubNode\n ) : (\n \n )}\n \n );\n};\n\nexport default OddButtonStub;\n","import React from 'react';\nimport LogoResizer from '@gin-betting/components/logo-resizer';\n\nimport './organizationIcon.scss';\n\ninterface Props {\n logo: string | null;\n}\n\nconst OrganizationIcon: React.FC = ({ logo }) => {\n if (!logo) {\n return null;\n }\n\n return (\n \n {({ ref, bgImageStyle }) => {\n return (\n \n );\n }}\n \n );\n};\n\nexport default OrganizationIcon;\n","import React from 'react';\nimport cn from 'classnames';\n\nimport './penaltyCard.scss';\n\ninterface Props {\n typeCard: string;\n}\n\nconst PenaltyCard: React.FC = ({ typeCard }) => (\n
\n);\n\nexport default PenaltyCard;\n","import React, { useEffect, useMemo, useRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport cn from 'classnames';\nimport { ceil, isEmpty, pick, reduce } from 'lodash';\n\nimport { CLASS_NAME_OF_DISABLED_PAGE } from 'app-constants';\nimport { createPortalNode } from 'utils';\n\nimport './portal.scss';\n\ninterface Props {\n styleName?: string;\n className?: string;\n isPageDisabled?: boolean;\n replaceContent?: boolean;\n isFilled?: boolean;\n parentRef?: HTMLElement | null;\n parentNode?: HTMLElement | null;\n children: React.ReactNode;\n}\n\ntype AnyVariables = { [key: string]: number };\ntype TrimmedVariables = Pick;\n\ninterface Styles {\n transform?: string;\n}\n\nconst Portal: React.FC = ({\n parentNode,\n className,\n isPageDisabled = true,\n parentRef,\n replaceContent = false,\n children,\n isFilled,\n}) => {\n const el = useMemo(() => createPortalNode(), []);\n const ref = useRef(0);\n\n useEffect(() => {\n if (parentNode) {\n if (replaceContent) {\n parentNode.innerHTML = '';\n }\n\n parentNode.appendChild(el);\n } else {\n document.body.appendChild(el);\n }\n\n return () => {\n if (parentNode) {\n parentNode.removeChild(el);\n } else {\n document.body.removeChild(el);\n }\n };\n }, [replaceContent, parentNode, el]);\n\n useEffect(() => {\n if (isPageDisabled) {\n document.body.classList.add(CLASS_NAME_OF_DISABLED_PAGE);\n ref.current = window.pageYOffset;\n }\n\n return () => {\n document.body.classList.remove(CLASS_NAME_OF_DISABLED_PAGE);\n\n if (isPageDisabled) {\n scrollToY(ref.current);\n }\n };\n }, [isPageDisabled]);\n\n return ReactDOM.createPortal(\n \n {children}\n
,\n el\n );\n};\n\nfunction getPositionStyles(ref?: HTMLElement | null): Styles {\n if (!ref || !ref.getBoundingClientRect) return {};\n\n const originValues = ref.getBoundingClientRect();\n\n /* can not iterate through originValues */\n const iterableValues: TrimmedVariables = pick(originValues, [\n 'left',\n 'top',\n 'height',\n ]);\n\n if (isEmpty(iterableValues)) return {};\n\n /* to avoid \"blur\" effect every variable must be integer */\n const roundedVariables: TrimmedVariables = reduce(\n iterableValues,\n (acc, val, key) => ({ ...acc, [key]: ceil(val) }),\n {} as TrimmedVariables\n );\n\n const { left, top, height } = roundedVariables;\n const scrolled = ceil(window.pageYOffset);\n const totalTopOffset = top + height + scrolled;\n\n return {\n transform: `translate3d(${left}px, ${totalTopOffset}px, 0)`,\n };\n}\n\nfunction scrollToY(yPosition: number): void {\n setTimeout(() => window.scrollTo(0, yPosition), 0);\n}\n\nexport default React.memo(Portal);\n","import React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport cn from 'classnames';\nimport cd from 'debug';\n\nimport globalMessages from 'messages';\nimport type { Analytics } from 'services/analytics';\nimport Icon from '../Icon';\nimport SmartLink from '../SmartLink';\n\nimport arrowLeft from 'assets/svg/arrow-left.svg';\nimport playSmall from 'assets/svg/play-arrow.svg';\nimport './streamLink.scss';\n\nconst debug = cd('components:Score');\n\ninterface Props {\n linkToMatch: string | null;\n withTitle?: boolean;\n onClick?: () => void;\n isViewerOpen?: boolean;\n analytics?: Analytics;\n}\n\nconst StreamLink: React.FC = props => {\n debug('render', props);\n\n const { withTitle, linkToMatch, isViewerOpen, analytics } = props;\n const { formatMessage } = useIntl();\n\n if (typeof props.onClick === 'function') {\n return (\n \n \n {withTitle && (\n \n )}\n \n );\n }\n\n return (\n \n \n {withTitle && }\n \n );\n};\n\nexport default StreamLink;\n","import React from 'react';\n\nimport MarketsCount from '../MarketsCount';\nimport StreamLink from '../StreamLink';\n\nimport './promoFooter.scss';\n\ninterface Props {\n marketsCount: number | undefined;\n isWatchable: boolean;\n favoriteButton: JSX.Element;\n linkToMatch: string | null;\n}\n\nconst PromoFooter: React.FC = ({\n marketsCount,\n isWatchable,\n favoriteButton,\n linkToMatch,\n}) => {\n return (\n
\n {favoriteButton}\n\n \n\n {isWatchable && }\n
\n );\n};\n\nexport default React.memo(PromoFooter);\n","/* tslint:disable */\nimport { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n betting_live_of_the_day: {\n defaultMessage: 'Live',\n id: 'component.PromoHeader.Live'\n },\n betting_match_of_the_day: {\n defaultMessage: 'Match',\n id: 'component.PromoHeader.Match'\n },\n betting_sport_event: {\n defaultMessage: 'Top Event',\n id: 'component.PromoHeader.TopEvent'\n },\n ofTheDay: {\n defaultMessage: 'of the day',\n id: 'component.PromoHeader.OfTheDay'\n }\n})","import React, { Fragment } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { GQL } from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport { getByKey } from 'utils';\nimport GameLogo from '../GameLogo';\nimport message from './messages';\n\nimport './promoHeader.scss';\n\ninterface Props {\n sportId: string;\n type: GQL.BannerType;\n isColorful?: boolean;\n}\n\nconst PromoHeader: React.FC = ({ sportId, type, isColorful }) => {\n return (\n
\n
\n \n
\n {!isColorful && }\n
\n );\n};\n\nconst PromoHeaderLabel: React.FC> = ({ type }) => {\n const isEventOfTheDay = [\n GQL.BannerType.betting_live_of_the_day,\n GQL.BannerType.betting_match_of_the_day,\n ].includes(type);\n\n const msgDesc = getByKey(message, type.toLowerCase());\n\n return (\n \n {msgDesc && }\n {isEventOfTheDay && (\n \n {' '}\n \n \n )}\n \n );\n};\n\nexport default React.memo(PromoHeader);\n","import React from 'react';\nimport { App, GQL } from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport { BettingWidgets, LIVE_SPORTEVENT_STATUSES } from 'app-constants';\nimport { usePromoItemContainer, useWidgetSettings } from 'hooks';\nimport type { OddButtonComponent } from 'types';\nimport { checkIsMatchTrackerDisabled, checkIsSportEventViewable } from 'utils';\nimport PromoFooter from '../PromoFooter';\nimport PromoHeader from '../PromoHeader';\nimport PromoMatchBody from '../PromoMatchBody';\n\nimport './promoItem.scss';\n\ninterface Props {\n matchId: string;\n type?: GQL.BannerType;\n AsyncOddButton: OddButtonComponent;\n favoriteButton: JSX.Element;\n header?: JSX.Element | null;\n footer?: JSX.Element | null;\n isColorful?: boolean;\n}\n\nconst PromoItem: React.FC = props => {\n const {\n match,\n competitors,\n tournament,\n market,\n hasValidStream,\n hasValidBetradarId,\n route,\n } = usePromoItemContainer(props);\n\n const { disableMatchTracker } = useWidgetSettings({\n widget: BettingWidgets.STREAM,\n });\n\n const { type, favoriteButton, AsyncOddButton, isColorful } = props;\n\n if (!match) return null;\n\n const {\n id,\n marketsCount,\n startTime,\n sportId,\n slug,\n status,\n liveCoverage,\n } = match;\n\n const linkToMatch = `${route}${App.Routes.MATCH}${slug}`;\n\n const isLive = type === GQL.BannerType.betting_live_of_the_day;\n const isMatch = type === GQL.BannerType.betting_match_of_the_day;\n const isTop = type === GQL.BannerType.betting_sport_event;\n\n const isStatusLive = LIVE_SPORTEVENT_STATUSES.includes(status);\n\n const isWatchable =\n (isLive || isStatusLive) &&\n checkIsSportEventViewable({\n hasValidBetradarId,\n hasValidStream,\n isMatchTrackerDisabled: checkIsMatchTrackerDisabled(\n disableMatchTracker,\n sportId\n ),\n });\n\n let liveLabelVisibility: 'visible' | 'faded' | undefined;\n\n if (isStatusLive) {\n liveLabelVisibility = 'visible';\n } else if (liveCoverage) {\n liveLabelVisibility = 'faded';\n }\n\n let { header, footer } = props;\n\n if (typeof header === 'undefined' && type) {\n header = (\n \n );\n }\n\n if (typeof footer === 'undefined') {\n footer = (\n \n );\n }\n\n return (\n \n {header}\n\n \n\n {footer}\n \n );\n};\n\nexport default PromoItem;\n","import withLoadable from 'hoc/withLoadable';\n\nconst PromoMatch = /* #__LOADABLE__ */ () =>\n import(/* webpackChunkName: \"components-PromoMatch\" */ './PromoMatch');\n\nexport default withLoadable(PromoMatch);\n","import { useRef } from 'react';\nimport { useLocation } from 'react-router';\nimport core, { App } from '@gin-betting/core';\nimport { omit } from 'lodash';\n\nconst {\n services: { parse, stringify },\n hooks: { useDidUpdate },\n} = core;\n\nconst RESOLVE_LIST_REQUEST_TIME = 50;\n\nconst FILTER_LOCATION_SEARCH: Array = ['page'];\n\nconst useScrollToTop = (): void => {\n const timerIdRef = useRef();\n const { pathname, search } = useLocation();\n const formattedSearch = stringify(\n omit(parse(search), FILTER_LOCATION_SEARCH)\n );\n\n useDidUpdate(() => {\n timerIdRef.current = window.setTimeout(() => {\n window.scrollTo(0, 0);\n }, RESOLVE_LIST_REQUEST_TIME);\n\n return () => {\n clearTimeout(timerIdRef.current);\n };\n }, [pathname, formattedSearch]);\n};\n\nexport default useScrollToTop;\n","import React from 'react';\n\nimport useScrollToTop from './useScrollToTop';\n\nimport './ScrollToTop.scss';\n\nconst ScrollToTop: React.FC = ({ children }) => {\n useScrollToTop();\n\n return
{children}
;\n};\n\nexport default ScrollToTop;\n","import {\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useOnClickOutside } from 'hooks';\n\ninterface Output {\n isOpen: boolean;\n toggle: () => void;\n container: RefObject;\n}\n\nconst useSettingsDropdown = (): Output => {\n const [isOpen, setIsOpen] = useState(false);\n const container = useRef(null);\n\n const toggle = useCallback(() => {\n setIsOpen(!isOpen);\n }, [isOpen]);\n\n const close = useCallback(() => setIsOpen(false), []);\n\n const handleKeydown = useCallback(\n (event: KeyboardEvent) => {\n if (event.keyCode === 27) close();\n },\n [close]\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeydown, false);\n\n return () => {\n document.removeEventListener('keydown', handleKeydown, false);\n };\n }, [handleKeydown]);\n\n const refs = useMemo(() => [container], []);\n\n useOnClickOutside({ refs, handler: close, isOpen });\n\n return {\n isOpen,\n toggle,\n container,\n };\n};\n\nexport default useSettingsDropdown;\n","import React from 'react';\nimport cn from 'classnames';\n\nimport Icon from '../Icon';\nimport useSettingsDropdown from './useSettingsDropdown';\n\nimport './settingsDropdown.scss';\n\ninterface Props {\n title: string;\n stub:\n | {\n width?: number;\n height?: number;\n glyph: {\n id: string;\n content: string;\n viewBox: string;\n };\n }\n | { element: JSX.Element };\n}\n\nconst SettingsDropdown: React.SFC = ({ title, children, stub }) => {\n const { isOpen, toggle, container } = useSettingsDropdown();\n\n return (\n \n \n {'element' in stub ? (\n stub.element\n ) : (\n \n )}\n
\n
\n {isOpen && children}\n \n );\n};\n\nexport default SettingsDropdown;\n","import React from 'react';\n\nimport './spinner.scss';\n\nconst Spinner: React.FC = () => {\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n );\n};\n\nexport default Spinner;\n","import React from 'react';\nimport core, { API, Async } from '@gin-betting/core';\n\nconst {\n hooks: { useSubscription },\n} = core;\n\ninterface Props {\n variables: API.GQLSubscriptions['onUpdateSportEvent'][1];\n origin: Async.SubscribeOrigin;\n batch: boolean;\n}\n\nconst SportEventSubscription: React.FC = ({\n variables,\n batch,\n origin,\n}) => {\n useSubscription({\n variables,\n config: {\n method: 'onUpdateSportEvent',\n origin,\n batch,\n },\n });\n\n return null;\n};\n\nexport default SportEventSubscription;\n","import React, { Fragment, useEffect, useRef, useState } from 'react';\nimport { useInView } from 'react-intersection-observer';\nimport core, { GQL } from '@gin-betting/core';\nimport cn from 'classnames';\nimport { Observable } from 'rxjs/Observable';\nimport 'rxjs/add/observable/fromEvent';\nimport 'rxjs/add/operator/throttleTime';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/merge';\nimport 'rxjs/add/operator/debounceTime';\nimport 'rxjs/add/operator/distinctUntilChanged';\n\nimport { useMount } from 'hooks';\nimport DebugInfo from '../DebugInfo';\nimport SportEventSubscription from '../SportEventSubscription';\n\nimport './sportEventInViewSubscription.scss';\n\nconst {\n utils: { getDefaultVariables, isDebugEnabled },\n async: {\n constants: { SubscribeOrigin },\n },\n} = core;\n\ninterface Props {\n matchId: string;\n version: string | undefined;\n}\n\nconst onScroll$ = Observable.fromEvent(document, 'scroll');\nconst isDebugOn = isDebugEnabled();\n\nconst SportEventInViewSubscription: React.FC = ({\n matchId,\n version,\n}) => {\n const variables = getSubscriptionVariables(matchId, version);\n\n const [inViewRef, isInView] = useInView();\n const [isSubscribed, setSubscribed] = useState(isInView);\n\n const isScrolling = useRef(false);\n const isInViewRef = useRef(isInView);\n\n isInViewRef.current = isInView;\n\n useMount(() => {\n const scrollSub = onScroll$\n .throttleTime(100)\n .map(() => true)\n .merge(onScroll$.debounceTime(350).map(() => false))\n .distinctUntilChanged()\n .subscribe(scrolling => {\n isScrolling.current = scrolling;\n\n if (scrolling === false) {\n // NOTE: Trigger subscription change when user stop scrolling\n setSubscribed(isInViewRef.current);\n }\n });\n\n return () => {\n scrollSub.unsubscribe();\n };\n });\n\n useEffect(() => {\n // NOTE: Do not trigger subscription change when user is scrolling\n if (isScrolling.current) return;\n\n setSubscribed(isInView);\n }, [isInView]);\n\n return (\n \n \n\n {isSubscribed && (\n \n )}\n\n {isDebugOn && (\n \n )}\n \n );\n};\n\ninterface SubscriptionRowDebugInfoProps {\n sportEventId: string;\n isSubscribed: boolean;\n}\n\nconst SubscriptionRowDebugInfo = ({\n sportEventId,\n isSubscribed,\n}: SubscriptionRowDebugInfoProps) => {\n return (\n
\n \n \n {isSubscribed ? 'Subscribed' : 'Unsubscribed'}\n \n
\n );\n};\n\nconst getSubscriptionVariables = (\n matchId: string,\n version: string | undefined\n):\n | GQL.OnUpdateSportEventSubscriptionVariables\n | GQL.SubscriptionOnUpdateSportEventArgs => {\n const subscriptionVariables: GQL.OnUpdateSportEventSubscriptionVariables = {\n sportEventId: matchId,\n isTopMarkets: true,\n version,\n };\n\n const { marketStatuses } = getDefaultVariables();\n\n if (marketStatuses) {\n return {\n ...subscriptionVariables,\n marketStatuses,\n };\n }\n\n return subscriptionVariables;\n};\n\nexport default React.memo(SportEventInViewSubscription);\n","import { createElement, FC, memo, useCallback } from 'react';\nimport { useIntl } from 'react-intl';\nimport core, { App, View } from '@gin-betting/core';\n\nimport globalMsgs from 'messages';\nimport { getRouteBySportType } from 'utils';\n\nconst {\n utils: { getBettingOptions, getSportTypeBySport, checkOnRoute },\n components: { SportEventSeoMicromarking: BaseSportEventSeoMicromarking },\n} = core;\n\nconst SportEventSeoMicromarking: FC<{ sportEventId: string }> = ({\n sportEventId,\n}) => {\n const { formatMessage } = useIntl();\n\n const getHelmetScript = useCallback(\n ({ sportEvent, sport }) => {\n const { title, startTime, slug } = sportEvent;\n const { name: sportName } = sport;\n\n const url = makeAbsoluteMatchUrl(sport, slug);\n\n const name =\n getLocationNameByRoute(formatMessage)?.toLowerCase() ||\n sportName;\n\n return [\n {\n type: 'application/ld+json',\n innerHTML: JSON.stringify({\n '@context': 'https://schema.org',\n '@type': 'SportsEvent',\n name: title,\n startDate: startTime,\n url,\n location: {\n '@type': 'Place',\n name,\n address: { '@type': 'PostalAddress', name: '' },\n },\n }),\n },\n ];\n },\n [formatMessage]\n );\n\n return createElement(BaseSportEventSeoMicromarking, {\n sportEventId,\n getHelmetScript,\n });\n};\n\nexport default memo(SportEventSeoMicromarking);\n\nfunction makeAbsoluteMatchUrl(sport: View.Sport, matchSlug: string): string {\n let {\n url: { bettingPath },\n } = getBettingOptions();\n\n // Avoid double slash when joined\n if (bettingPath === '/') {\n bettingPath = '';\n }\n\n const sportType = getRouteBySportType(getSportTypeBySport(sport));\n\n return [\n location.origin,\n bettingPath,\n sportType,\n App.Routes.MATCH,\n matchSlug,\n ].join('');\n}\n\nfunction getLocationNameByRoute(\n formatMessage: ReturnType['formatMessage']\n): string | null {\n switch (true) {\n case checkOnRoute(App.Routes.CLASSIC, { exact: true }): {\n return formatMessage(globalMsgs.csport);\n }\n\n case checkOnRoute(App.Routes.ESPORT, { exact: true }): {\n return formatMessage(globalMsgs.esport);\n }\n\n default: {\n return null;\n }\n }\n}\n","import React from 'react';\nimport cn from 'classnames';\n\nimport Icon from '../Icon';\n\nimport live from 'assets/svg/live.svg';\nimport './sportFilterHeading.scss';\n\ninterface Props {\n title: string;\n logo: React.ReactNode;\n isActive: boolean;\n count?: number;\n onClick?: () => void;\n isLive?: boolean;\n}\n\nconst SportFilterHeading: React.FC = ({\n isActive,\n onClick,\n title,\n logo,\n isLive,\n}) => {\n return (\n \n {logo}\n
{title}
\n {isLive && }\n
\n );\n};\n\nexport default React.memo(SportFilterHeading);\n","import React from 'react';\nimport cn from 'classnames';\nimport { map } from 'lodash';\n\nimport './Tabs.scss';\n\ninterface Props {\n activeTab: any;\n data: {\n [value: string]: string;\n };\n changeActiveTab: (activeTab: any) => void;\n disabledTabs?: any[];\n extraTab?: JSX.Element;\n}\n\nconst Tabs: React.FC = ({\n data,\n changeActiveTab,\n activeTab,\n disabledTabs,\n extraTab,\n}) => {\n return (\n
\n {map(data, (title, value) => {\n const isActive = activeTab === value;\n const isDisabled =\n !!disabledTabs && disabledTabs.includes(value);\n\n const handleChooseTab =\n !isActive && !isDisabled\n ? changeActiveTab.bind(this, value)\n : undefined;\n\n const tabState = {\n isActive,\n isDisabled,\n };\n\n return (\n \n {title}\n
\n );\n })}\n {extraTab}\n \n );\n};\n\ninterface GetStyleOptions {\n isActive: boolean;\n isDisabled: boolean;\n prefix?: string;\n}\n\nfunction getStyleNames({\n isActive,\n isDisabled,\n prefix = '',\n}: GetStyleOptions): string {\n return cn(`${prefix}tab`, {\n [`${prefix}is-active`]: isActive,\n [`${prefix}is-disabled`]: isDisabled,\n });\n}\n\nexport default Tabs;\n","import React from 'react';\nimport { View } from '@gin-betting/core';\n\nimport { AnalyticAttrs } from 'services/analytics';\nimport LogoTitle from '../LogoTitle';\n\nimport './teamsTitle.scss';\n\ninterface Props {\n competitorsValid: View.CompetitorsValid;\n linkToMatch: string | null;\n sportId: string;\n analytics?: Partial;\n}\n\nconst TeamsTitle: React.FC = ({\n competitorsValid: { awayLogo, awayName, homeLogo, homeName },\n linkToMatch,\n sportId,\n analytics,\n}) => {\n return (\n \n \n
\n {/* */}X\n
\n \n \n );\n};\n\nexport default TeamsTitle;\n","/* tslint:disable */\nimport { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n addToFavorites: {\n defaultMessage: 'Add to Favorites',\n id: 'components.addToFavorites',\n },\n removeFromFavorites: {\n defaultMessage: 'Remove from Favorites',\n id: 'components.removeFromFavorites',\n },\n});\n","import React from 'react';\nimport { useIntl } from 'react-intl';\n\nimport { Action, Label, useAnalyticAttrs } from 'services/analytics';\nimport FavoriteIcon from '../FavoriteIcon';\nimport messages from './messages';\n\nimport './toggleFavoriteButton.scss';\n\ninterface Props {\n isActive: boolean;\n toggle: (event: React.MouseEvent) => void;\n}\n\nconst { Add, Remove } = Label;\nconst { ToggleFavorite } = Action;\n\nconst ToggleFavoriteButton: React.FC = ({ isActive, toggle }) => {\n const analytics = useAnalyticAttrs();\n const { formatMessage } = useIntl();\n\n const msg = isActive\n ? messages.removeFromFavorites\n : messages.addToFavorites;\n\n const title = formatMessage(msg);\n\n const onClick: DivEl['onClick'] = e => {\n e.preventDefault();\n\n toggle(e);\n };\n\n return (\n \n \n \n );\n};\n\nexport default ToggleFavoriteButton;\n","import * as React from 'react';\nimport * as cn from 'classnames';\n\nimport './Toggler.scss';\n\ninterface Props {\n onToggle: () => void;\n isOpened: boolean;\n isDisabled?: boolean;\n onText?: string;\n offText?: string;\n}\nconst Toggler: React.FC = props => {\n const { isOpened, isDisabled, onText, offText } = props;\n\n const styles = cn('container', {\n 'is-open': isOpened,\n 'is-disabled': isDisabled,\n });\n\n const classes = cn('__app-Toggler-container', {\n '__app-Toggler-is-open': isOpened,\n '__app-Toggler-is-disabled': isDisabled,\n });\n\n return (\n
\n {onText && (\n
\n {onText}\n
\n )}\n
\n {offText && (\n
\n {offText}\n
\n )}\n
\n );\n};\n\nexport default Toggler;\n","import React from 'react';\nimport cn from 'classnames';\n\nimport CompetitorLogo from '../CompetitorLogo';\nimport GameLogo from '../GameLogo';\n\nimport './topBannerCompetitorInfo.scss';\n\ninterface Props {\n sportId: string;\n logo: string;\n name: string;\n isHome: boolean;\n withSportLogo?: boolean;\n}\n\nconst TopBannerCompetitorInfo: React.FC = ({\n sportId,\n logo,\n isHome,\n name,\n withSportLogo,\n}) => {\n return (\n \n {withSportLogo && }\n\n \n \n \n \n {name}\n
\n \n \n \n );\n};\n\nexport default React.memo(TopBannerCompetitorInfo);\n","import React from 'react';\nimport { App, View } from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport { ParentPath } from 'types';\nimport MatchDateTime from '../MatchDateTime';\nimport PromoMatchDynamicScoreList from '../PromoMatchDynamicScoreList';\nimport SmartLink from '../SmartLink';\n\nimport './topBannerMatchInfo.scss';\n\nconst tournamentPropsToPick = ['id' as const, 'name' as const, 'slug' as const];\n\ninterface Props {\n tournament: Pick<\n View.Tournament,\n typeof tournamentPropsToPick[number]\n > | null;\n startTime: string | undefined;\n isLive: boolean;\n route: ParentPath;\n marketName: string;\n score?: string;\n matchId: string | null;\n sportId: string | undefined;\n dateFormat: string;\n}\n\nconst TopBannerMatchInfo: React.FC = ({\n tournament,\n startTime,\n route,\n isLive,\n marketName,\n score,\n matchId,\n sportId,\n dateFormat,\n}) => {\n return (\n \n {tournament && (\n \n \n {tournament.name}\n \n \n )}\n\n {sportId && startTime && matchId && (\n \n )}\n\n {sportId && matchId && isLive && (\n
\n \n
\n )}\n\n \n {marketName || -}\n \n \n );\n};\n\nexport default React.memo(TopBannerMatchInfo);\n","import withLoadable from 'hoc/withLoadable';\n\nconst TournamentInfo = /* #__LOADABLE__ */ () =>\n import(\n /* webpackChunkName: \"components-TournamentInfo\" */ './TournamentInfo'\n );\n\nexport default withLoadable(TournamentInfo);\n","import React from 'react';\nimport core, { App } from '@gin-betting/core';\nimport cd from 'debug';\n\nimport { ParentPath } from 'types';\nimport GameLogo from '../GameLogo';\nimport SmartLink from '../SmartLink';\n\nimport './tournamentName.scss';\n\nconst debug = cd('components:TournamentName');\n\nconst {\n utils: { checkOnRoute },\n} = core;\n\ninterface Props {\n tournamentName: string;\n masterId: string;\n sportId: string;\n slug: string;\n route: ParentPath;\n isDisabled?: boolean;\n}\n\nconst TournamentName: React.FC = props => {\n debug('render', props);\n const { tournamentName, sportId, slug, isDisabled, route } = props;\n const isLinkDisabled =\n checkOnRoute(App.Routes.TOURNAMENT) ||\n checkOnRoute(App.Routes.RESULTS_LIST) ||\n isDisabled;\n\n const linkToTournament = `${route}${App.Routes.TOURNAMENT}${slug}`;\n\n return (\n
\n \n {isLinkDisabled ? (\n
\n {tournamentName}\n
\n ) : (\n \n {tournamentName}\n \n )}\n
\n );\n};\n\nexport default TournamentName;\n","import React from 'react';\n\nimport './vs.scss';\n\ninterface Props {\n symbol?: '+' | '=';\n}\n\nexport default function VS(props: Props) {\n const { symbol } = props;\n\n return (\n
\n {symbol || 'vs'}\n
\n );\n}\n","import React from 'react';\n\nimport { BettingWidgets, DEBUG_INFO_LOCALSTORAGE_KEY } from 'app-constants';\nimport { useWidgetSettings } from 'hooks';\nimport { checkWidgetContainerProvided } from 'utils';\nimport Portal from '../Portal';\n\ninterface Props {\n widget: BettingWidgets;\n children: React.ReactElement;\n isPageDisabled?: boolean;\n replacePortalContent?: boolean;\n isFilled?: boolean;\n}\n\nconst Widget: React.FC = ({\n widget,\n children,\n isPageDisabled = false,\n replacePortalContent = false,\n isFilled,\n}) => {\n const widgetSettings = useWidgetSettings({ widget });\n\n if (!checkWidgetContainerProvided(widgetSettings)) {\n return children;\n }\n\n const { containerElementId } = widgetSettings;\n\n if (containerElementId === null) return null;\n\n const node = document.getElementById(containerElementId);\n\n if (!node) {\n if (localStorage.getItem(DEBUG_INFO_LOCALSTORAGE_KEY)) {\n console.warn(\n `Container element for widget \"${widget}\" with id \"${containerElementId}\" is missing`\n );\n }\n\n return null;\n }\n\n // TODO: remove hardcode\n if (widget === BettingWidgets.SETTINGS) {\n node.style.display = 'flex';\n }\n\n return (\n \n {children}\n \n );\n};\n\nexport default React.memo(Widget);\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"penalty-card\":\"penaltyCard__penalty-card___2JC1y\",\"red\":\"penaltyCard__red___1hldC\"};","import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport core, { App, GQL } from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport { ACTIVE_MARKET_STATUSES } from 'app-constants';\nimport { useMemoSelector, useWithLocation } from 'hooks';\n\nconst {\n entities: {\n selectors: { selectSlug, makeMatchSelector, makeTournamentSelector },\n actions: { getMatchBySlug, getTournamentBySlug },\n },\n utils: { checkOnRoute },\n} = core;\n\nenum EntityType {\n SportEvent,\n Tournament,\n}\n\ninterface Props {\n slug: string;\n sportEventId?: string;\n tournamentId?: string;\n children: (entityId: string) => any;\n}\n\nconst useEntityType = (): EntityType | null => {\n const eventType = useWithLocation(() => getEntityType());\n\n return eventType;\n};\n\nconst EntityIdResolver: React.FC = ({\n sportEventId,\n tournamentId,\n slug,\n children,\n}) => {\n const dispatch = useDispatch();\n const entityType = useEntityType();\n const { sportEvent, tournament, slugEntity } = useMemoSelector(\n makePropsSelector(),\n {\n slug,\n matchId: sportEventId,\n tournamentId,\n }\n );\n\n useEffect(() => {\n switch (entityType) {\n case EntityType.SportEvent: {\n dispatch(\n getMatchBySlug({\n slug,\n marketStatuses: getMarketStatus(),\n })\n );\n\n break;\n }\n\n case EntityType.Tournament: {\n dispatch(\n getTournamentBySlug({\n slug,\n })\n );\n break;\n }\n\n default: {\n break;\n }\n }\n }, [dispatch, slug, entityType]);\n\n switch (entityType) {\n case EntityType.SportEvent: {\n const id = sportEvent?.id || slugEntity?.matchId;\n\n return id ? children(id) : null;\n }\n\n case EntityType.Tournament: {\n const id = tournament?.id || slugEntity?.tournamentId;\n\n return id ? children(id) : null;\n }\n\n default: {\n return children(slug);\n }\n }\n};\n\nfunction getMarketStatus(): GQL.MarketStatus[] {\n return checkOnRoute(App.Routes.RESULT_MATCH)\n ? [GQL.MarketStatus.RESULTED]\n : ACTIVE_MARKET_STATUSES;\n}\n\nfunction getEntityType(): EntityType | null {\n if (\n checkOnRoute(App.Routes.MATCH) ||\n checkOnRoute(App.Routes.OUTRIGHT) ||\n checkOnRoute(App.Routes.RESULT_MATCH)\n ) {\n return EntityType.SportEvent;\n }\n\n if (checkOnRoute(App.Routes.TOURNAMENT)) {\n return EntityType.Tournament;\n }\n\n return null;\n}\n\nconst entityPropsToPick = ['id' as const];\n\nconst makePropsSelector = () => {\n const selectorTournament = makeTournamentSelector({\n propsToPick: entityPropsToPick,\n });\n const selectSportEvent = makeMatchSelector({\n propsToPick: entityPropsToPick,\n });\n\n return createStructuredSelector({\n slugEntity: selectSlug,\n sportEvent: selectSportEvent,\n tournament: selectorTournament,\n });\n};\n\nexport default EntityIdResolver;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"teamLogo__container___2KttP\",\"logo\":\"teamLogo__logo___1zoAw\",\"is-person\":\"teamLogo__is-person___2w5sg\",\"server\":\"teamLogo__server___2VWyN\",\"icon\":\"teamLogo__icon___1LCIT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"promoMatchBody__container___1tzoA\",\"tournament\":\"promoMatchBody__tournament___1M0Aj\",\"competitors\":\"promoMatchBody__competitors___3nRe7\",\"competitor-item\":\"promoMatchBody__competitor-item___7dWWk\",\"competitor-name\":\"promoMatchBody__competitor-name___3IM6A\",\"market-name\":\"promoMatchBody__market-name___Rcdu6\",\"info-container\":\"promoMatchBody__info-container___3QErb\",\"live-container\":\"promoMatchBody__live-container___aCQei\",\"stub\":\"promoMatchBody__stub___3rkw_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"lessMoreContainer__container___2C-fo\",\"can-collapse\":\"lessMoreContainer__can-collapse___2KSLE\",\"visible\":\"lessMoreContainer__visible___iADpg\",\"extra\":\"lessMoreContainer__extra___k_h3i\",\"cell-in-row-1\":\"lessMoreContainer__cell-in-row-1___2blLn\",\"cell-in-row-2\":\"lessMoreContainer__cell-in-row-2___2uwbt\",\"cell-in-row-3\":\"lessMoreContainer__cell-in-row-3___3Am_n\",\"cell-in-row-4\":\"lessMoreContainer__cell-in-row-4___32V8z\",\"cell-in-row-5\":\"lessMoreContainer__cell-in-row-5___3wVGT\",\"stub\":\"lessMoreContainer__stub___2eTgv\",\"button\":\"lessMoreContainer__button___17Rtq\",\"fadeIn\":\"lessMoreContainer__fadeIn___QHIqY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"sportsList__container___gld1E\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"rotate\":\"marketsCount__rotate___3TpxM\",\"icon\":\"marketsCount__icon___2oYck\",\"plus-circle\":\"marketsCount__plus-circle___22vxT\",\"value\":\"marketsCount__value___1qhSR\",\"markets-count\":\"marketsCount__markets-count___v4kPh\",\"title\":\"marketsCount__title___3dbx7\"};","import { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport ui from 'modules/ui';\nimport { FavoriteCountType } from '../../types';\n\nconst {\n selectors: {\n selectUpcomingFavoriteCount,\n selectAllFavoriteCount,\n selectOutrightsFavoriteCount,\n },\n} = ui;\n\ninterface Input {\n type: FavoriteCountType;\n}\n\ninterface Output {\n count: number | null;\n}\n\nconst makeCountSelector = (type: FavoriteCountType) => {\n switch (type) {\n case 'upcoming':\n return selectUpcomingFavoriteCount;\n case 'outrights':\n return selectOutrightsFavoriteCount;\n\n default:\n return selectAllFavoriteCount;\n }\n};\n\nfunction useFavoriteCount({ type }: Input): Output {\n const selectCount = useMemo(() => makeCountSelector(type), [type]);\n\n const count = useSelector(selectCount);\n\n return { count };\n}\n\nexport default useFavoriteCount;\n","import React from 'react';\n\nimport { FavoriteCountType } from '../../types';\nimport useFavoriteCount from './useFavoriteCount';\n\ninterface Props {\n type: FavoriteCountType;\n}\n\nconst FavoriteCount: React.FC = ({ type }) => {\n const { count } = useFavoriteCount({ type });\n\n if (count === null || (type === 'all' && !count) || count < 0) return null;\n\n return
{count}
;\n};\n\nexport default FavoriteCount;\n","import gql from 'graphql-tag';\n// import { GQL } from '@gin-betting/core';\n\n// export type GetSportEventIdsByFiltersQuery = {\n// matches: Array<{\n// id: string;\n// fixture: {\n// type: GQL.SportEventType;\n// };\n// }>;\n// };\n\nexport default gql`\n query GetSportEventIdsByFilters(\n $sportEventIds: [String!]!\n $offset: Int\n $limit: Int\n $searchString: String\n $dateFrom: String\n $dateTo: String\n $dateSortAscending: Boolean\n $providerIds: [Int!]\n $matchStatuses: [SportEventStatus!]\n $marketStatuses: [MarketStatus!]\n $sportIds: [String!]\n $tournamentIds: [String!]\n $sportEventTypes: [SportEventType!]\n $marketTypes: [Int!]\n ) {\n matches: filterSportEvents(\n sportEventIds: $sportEventIds\n offset: $offset\n limit: $limit\n searchString: $searchString\n dateFrom: $dateFrom\n dateTo: $dateTo\n dateSortAscending: $dateSortAscending\n providerIds: $providerIds\n matchStatuses: $matchStatuses\n marketStatuses: $marketStatuses\n sportIds: $sportIds\n tournamentIds: $tournamentIds\n sportEventTypes: $sportEventTypes\n marketTypes: $marketTypes\n ) {\n id\n fixture {\n type\n }\n }\n }\n`;\n","import { useCallback, useEffect, useRef } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport core, { API, GQL } from '@gin-betting/core';\nimport favorite from '@gin-betting/favorite';\n\nimport ui, { UI } from 'modules/ui';\nimport UserDevice from 'services/user-device';\nimport { getDefaultVariablesFavorite } from 'utils';\nimport GET_SPORT_EVENT_IDS_BY_FILTERS from './gqlGetSportEventIdsByFilters';\n\ntype GetSportEventIdsByFiltersQuery = {\n matches: Array<{\n id: string;\n fixture: {\n type: GQL.SportEventType;\n };\n }>;\n};\n\nconst {\n appServiceLocator,\n utils: { getBettingOptions },\n} = core;\nconst {\n actions: { changeFavoriteCount },\n} = ui;\n\nconst {\n selectors: { selectFavoriteIds },\n} = favorite;\n\nfunction useFavoriteCountAll(): void {\n const dispatch = useDispatch();\n const favoriteIds = useSelector(selectFavoriteIds);\n const isRequest = useRef(false);\n\n const getFavoriteCountFromSportEvents = useCallback(\n (\n sportEventType: GQL.SportEventType,\n countType: UI.FavoriteCountType\n ) => {\n const { sportIds } = getDefaultVariablesFavorite();\n const variables: GQL.GetMatchesByEventIdsQueryVariables = {\n sportEventIds: favoriteIds.toArray(),\n // TODO: Refactor Favorite Count: fix counter, avoid obsolete requests on mobile\n sportIds: UserDevice.getInstance()?.isDeviceMobile()\n ? getBettingOptions().selectedSportIds\n : sportIds,\n };\n appServiceLocator\n .get('apiClient')\n .makeRequestWithCustomQuery<\n GetSportEventIdsByFiltersQuery,\n GQL.GetMatchesByEventIdsQueryVariables,\n API.Action\n >({\n query: GET_SPORT_EVENT_IDS_BY_FILTERS as any,\n variables: {\n ...variables,\n matchStatuses: [\n GQL.SportEventStatus.NOT_STARTED,\n GQL.SportEventStatus.SUSPENDED,\n GQL.SportEventStatus.LIVE,\n ],\n sportEventTypes: [sportEventType],\n },\n action: {\n type: 'favorite/GET_SPORT_EVENT_IDS_BY_FILTERS',\n payload: {},\n },\n })\n .then(({ response }) => {\n const { matches } = response.data;\n dispatch(\n changeFavoriteCount({\n type: countType,\n count: matches.length,\n })\n );\n })\n .catch(err => {\n console.error(err);\n });\n },\n [dispatch, favoriteIds]\n );\n\n const getFavoriteCountMatches = useCallback(() => {\n getFavoriteCountFromSportEvents(GQL.SportEventType.MATCH, 'upcoming');\n }, [getFavoriteCountFromSportEvents]);\n\n const getFavoriteCountOutright = useCallback(() => {\n getFavoriteCountFromSportEvents(\n GQL.SportEventType.OUTRIGHT,\n 'outrights'\n );\n }, [getFavoriteCountFromSportEvents]);\n\n useEffect(() => {\n if (favoriteIds.size === 0 || isRequest.current) return;\n\n isRequest.current = true;\n\n getFavoriteCountMatches();\n getFavoriteCountOutright();\n }, [favoriteIds, getFavoriteCountMatches, getFavoriteCountOutright]);\n}\n\nexport default useFavoriteCountAll;\n","import React from 'react';\n\nimport FavoriteCount from '../FavoriteCount';\nimport useFavoriteCountAll from './useFavoriteCountAll';\n\ninterface Props {}\n\nconst FavoriteCountAll: React.FC = () => {\n useFavoriteCountAll();\n\n return ;\n};\n\nexport default FavoriteCountAll;\n","import React, { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport core from '@gin-betting/core';\nimport favorite from '@gin-betting/favorite';\nimport { createStructuredSelector } from 'reselect';\n\nimport { ToggleFavoriteButton } from 'components';\nimport { useMemoSelector } from 'hooks';\n\ninterface Props {\n matchId: string;\n}\nconst {\n utils: { getBettingOptions },\n} = core;\n\nconst {\n actions: {\n addMatchToFavoriteRequest,\n addMatchToFavoriteLocal,\n deleteMatchFromFavoriteRequest,\n deleteMatchFromFavoriteLocal,\n },\n selectors: { selectIsFavoriteSportEvent },\n} = favorite;\n\nconst ToggleFavoriteButtonContainer: React.FC = ({ matchId }) => {\n const dispatch = useDispatch();\n\n const { isActive } = useMemoSelector(makeSelectProps(), { matchId }, [\n matchId,\n ]);\n\n const handleAddFavorite = useCallback(\n (favoriteId: string) => {\n const { isAuthorized } = getBettingOptions();\n\n if (isAuthorized) {\n dispatch(addMatchToFavoriteRequest({ favoriteId }));\n } else {\n dispatch(addMatchToFavoriteLocal({ favoriteId }));\n }\n },\n [dispatch]\n );\n\n const handleDeleteFavorite = useCallback(\n (favoriteId: string) => {\n const { isAuthorized } = getBettingOptions();\n\n if (isAuthorized) {\n dispatch(deleteMatchFromFavoriteRequest({ favoriteId }));\n } else {\n dispatch(deleteMatchFromFavoriteLocal({ favoriteId }));\n }\n },\n [dispatch]\n );\n\n const toggleFavorite = useCallback(() => {\n if (isActive) {\n handleDeleteFavorite(matchId);\n } else {\n handleAddFavorite(matchId);\n }\n }, [isActive, handleDeleteFavorite, handleAddFavorite, matchId]);\n\n return React.createElement(ToggleFavoriteButton, {\n isActive,\n toggle: toggleFavorite,\n });\n};\n\nconst makeSelectProps = () =>\n createStructuredSelector({\n isActive: selectIsFavoriteSportEvent,\n });\n\nexport default ToggleFavoriteButtonContainer;\n","import core, { App, Entities, GQL } from '@gin-betting/core';\nimport favorite, { Favorite } from '@gin-betting/favorite';\nimport { TypedEpic } from 'redux-observable';\nimport { Observable } from 'rxjs/Observable';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/switchMap';\nimport 'rxjs/add/observable/of';\n\nimport ui from 'modules/ui';\nimport { State } from 'types';\n\ntype FavoriteToggleAction = ReturnType<\n App.TypedActionCreator\n>;\n\ntype FavoriteToggleActionPayload =\n | Favorite.ToggleFavoriteActionPayload\n | Favorite.FavoriteActionPayloadAddRemove;\n\nconst {\n actions: { getFavoriteEventsIds },\n epics: { requestLocalSport },\n selectors: { selectFavoriteIds },\n constants: {\n ADD_REHYDRATE_FAVORITE_MATCHES_SUCCESS,\n ADD_FAVORITE_MATCH_LOCAL,\n ADD_FAVORITE_MATCH_SUCCESS,\n REMOVE_FAVORITE_MATCH_LOCAL,\n REMOVE_FAVORITE_MATCH_SUCCESS,\n },\n} = favorite;\n\nconst {\n utils: { getBettingOptions },\n entities: {\n constants: { MATCH_ENDED, DELETE_MATCH_ID },\n selectors: { selectMatch },\n },\n} = core;\n\nconst {\n actions: { changeFavoriteCount },\n selectors: { selectOutrightsFavoriteCount, selectUpcomingFavoriteCount },\n} = ui;\n\nconst favoriteCountTypeMapping = {\n [GQL.SportEventType.MATCH]: {\n type: 'upcoming' as const,\n selector: selectUpcomingFavoriteCount,\n },\n [GQL.SportEventType.OUTRIGHT]: {\n type: 'outrights' as const,\n selector: selectOutrightsFavoriteCount,\n },\n};\n\nexport { requestLocalSport };\n\nexport const requestSport: TypedEpic<\n Favorite.ListTypeT,\n ReturnType\n> = actions$ => {\n return actions$.ofType(ADD_REHYDRATE_FAVORITE_MATCHES_SUCCESS).map(() => {\n const { sportIds } = getBettingOptions();\n\n return getFavoriteEventsIds({\n sportIds,\n matchStatuses: [\n GQL.SportEventStatus.LIVE,\n GQL.SportEventStatus.NOT_STARTED,\n GQL.SportEventStatus.SUSPENDED,\n GQL.SportEventStatus.ENDED,\n GQL.SportEventStatus.CLOSED,\n GQL.SportEventStatus.CANCELLED,\n ],\n });\n });\n};\n\ntype OutputAction = ReturnType | never;\n\nexport const decreaseFavoriteCount: TypedEpic<\n FavoriteToggleAction,\n OutputAction\n> = (actions$, store) => {\n return actions$\n .ofType(ADD_FAVORITE_MATCH_LOCAL, ADD_FAVORITE_MATCH_SUCCESS)\n .switchMap(({ payload }) =>\n changeCountOnFavoriteToggle(store.getState(), payload, 1)\n );\n};\n\nexport const increaseFavoriteCount: TypedEpic<\n FavoriteToggleAction,\n OutputAction\n> = (actions$, store) => {\n return actions$\n .ofType(REMOVE_FAVORITE_MATCH_LOCAL, REMOVE_FAVORITE_MATCH_SUCCESS)\n .switchMap(({ payload }) =>\n changeCountOnFavoriteToggle(store.getState(), payload, -1)\n );\n};\n\nexport const decreaseUpcomingFavoriteCountOnMatchEnd: TypedEpic<\n App.TypedAction,\n OutputAction\n> = (actions$, store) => {\n return actions$\n .ofType(MATCH_ENDED, DELETE_MATCH_ID)\n .switchMap(({ payload }) => {\n const state = store.getState();\n const favoriteIds = selectFavoriteIds(state);\n\n if (!favoriteIds.includes(payload.matchId))\n return Observable.empty();\n\n const match = selectMatch(state, {\n matchId: payload.matchId,\n });\n\n if (!match) return Observable.empty();\n\n const { type, selector } = favoriteCountTypeMapping[match.type];\n\n const currentCount = selector(state);\n\n if (currentCount === null) return Observable.empty();\n\n return Observable.of(\n changeFavoriteCount({\n type,\n count: currentCount - 1,\n })\n );\n });\n};\n\nfunction changeCountOnFavoriteToggle(\n state: State,\n payload: FavoriteToggleActionPayload,\n delta: 1 | -1\n): Observable {\n let favoriteId = '';\n\n if (isApiTogglePayload(payload)) {\n const firstFavoriteId = payload.favoriteIds[0];\n\n if (firstFavoriteId) {\n favoriteId = firstFavoriteId;\n }\n } else if (payload.favoriteId) {\n favoriteId = payload.favoriteId;\n }\n\n const match = selectMatch(state, {\n matchId: favoriteId,\n });\n\n if (\n !match ||\n ![\n GQL.SportEventStatus.NOT_STARTED,\n GQL.SportEventStatus.SUSPENDED,\n GQL.SportEventStatus.LIVE,\n ].includes(match.status)\n ) {\n return Observable.empty();\n }\n\n const { type, selector } = favoriteCountTypeMapping[match.type];\n\n const currentCount = selector(state);\n\n if (currentCount === null) return Observable.empty();\n\n return Observable.of(\n changeFavoriteCount({\n type,\n count: currentCount + delta,\n })\n );\n}\n\nfunction isApiTogglePayload(\n payload: FavoriteToggleActionPayload\n): payload is Favorite.FavoriteActionPayloadAddRemove {\n const { favoriteIds } = payload as Favorite.FavoriteActionPayloadAddRemove;\n\n return Array.isArray(favoriteIds);\n}\n","import favorite, { Favorite } from '@gin-betting/favorite';\nimport { persistReducer } from '@gin-betting/persist';\n\nexport default persistReducer(\n {\n key: favorite.constants.NAME,\n stateReconciler: false,\n blacklist: ['fetchStatus'],\n },\n favorite.reducer\n);\n","import favorite, { Favorite as Types } from '@gin-betting/favorite';\n\nimport FavoriteCount from './components/FavoriteCount';\nimport FavoriteCountAll from './components/FavoriteCountAll';\nimport ToggleFavoriteButton from './components/ToggleFavoriteButtonContainer';\nimport * as epics from './epics';\nimport reducer from './reducer';\n\nconst components = {\n ToggleFavoriteButton,\n FavoriteCount,\n FavoriteCountAll,\n};\n\nconst { actions, constants, selectors } = favorite;\n\nexport { Types as Favorite };\nexport default {\n actions,\n constants,\n components,\n selectors,\n reducer,\n epics,\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"freebet-wrapper\":\"prematchList__freebet-wrapper___oCYgX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"LiveIcon__container___1kVTH\",\"anim\":\"LiveIcon__anim___3MWiL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"icon\":\"favoriteIcon__icon___YQWG3\",\"is-active\":\"favoriteIcon__is-active___9bAyZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"mobileTopMatchItem__container___Gm07W\",\"title\":\"mobileTopMatchItem__title___384Kk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"flagIcon__wrapper___1UuXD\"};","// @ts-nocheck TODO remove me\n/* tslint:disable prefer-for-of */\nimport { isEqual, isPlainObject, remove } from 'lodash';\nimport { Store } from 'redux';\nimport $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nconst ActionTypes = {\n INIT: '@@redux/INIT',\n};\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\nexport default function createStore(\n reducer,\n preloadedState,\n enhancer\n): Store {\n if (\n typeof preloadedState === 'function' &&\n typeof enhancer === 'undefined'\n ) {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n let currentReducer = reducer;\n let currentState = preloadedState;\n let currentListeners: any[] = [];\n const postponedActions: any[] = [];\n let nextListeners = currentListeners;\n let isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n function getState() {\n return currentState;\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n let isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n const index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(\n 'Actions must be plain objects. ' +\n 'Use custom middleware for async actions.'\n );\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(\n 'Actions may not have an undefined \"type\" property. ' +\n 'Have you misspelled a constant?'\n );\n }\n\n if (isDispatching) {\n postponedActions.push(action);\n\n return;\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } catch (err) {\n console.error(err);\n } finally {\n isDispatching = false;\n }\n\n const listeners = (currentListeners = nextListeners);\n\n for (let i = 0; i < listeners.length; i++) {\n const listener = listeners[i];\n\n listener();\n }\n\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({ type: ActionTypes.INIT });\n\n postponedActions.forEach(postponedAction => {\n remove(postponedActions, actionToRemove =>\n isEqual(actionToRemove, postponedAction)\n );\n\n dispatch(postponedAction.action);\n });\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n function observable() {\n const outerSubscribe = subscribe;\n\n return {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe(observer) {\n if (typeof observer !== 'object') {\n throw new TypeError(\n 'Expected the observer to be an object.'\n );\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n const unsubscribe = outerSubscribe(observeState);\n\n return { unsubscribe };\n },\n\n [$$observable]() {\n return this;\n },\n };\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({ type: ActionTypes.INIT });\n\n return {\n dispatch,\n subscribe,\n getState,\n replaceReducer,\n [$$observable]: observable,\n };\n}\n","/* tslint:disable */\nimport { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n matchTitle: {\n defaultMessage:\n '{productName, select, unknown {{matchTitle} betting, {tournamentName} {date} in {time}} other {{matchTitle} betting, {tournamentName} {date} in {time} - {productName}}}',\n id: 'match.Match.title',\n },\n noOutrightMessageDefault: {\n defaultMessage: 'No outright found with id',\n id: 'components.NoOutrightWithId',\n },\n todayText: {\n defaultMessage: 'Today',\n id: 'todayText',\n },\n tomorrowText: {\n defaultMessage: 'Tomorrow',\n id: 'tomorrowText',\n },\n filterText: {\n defaultMessage: 'Filters',\n id: 'global.filterText',\n },\n theaterMode: {\n defaultMessage: 'Theater mode',\n id: 'global.theaterMode',\n },\n tournamentTitle: {\n defaultMessage:\n '{productName, select, unknown {{tournamentName}} other {{tournamentName} Betting - {productName}}}',\n id: 'global.tournamentTitle',\n },\n normalMode: {\n defaultMessage: 'Normal mode',\n id: 'global.normalMode',\n },\n loading: {\n defaultMessage: 'Loading',\n id: 'global.loading',\n },\n timeIsUp: {\n defaultMessage: 'Module loading timed out',\n id: 'global.timeIsUp',\n },\n uploadError: {\n defaultMessage: 'Error has occured while uploading module',\n id: 'global.uploadError',\n },\n moreOdds: {\n defaultMessage: 'More odds',\n id: 'global.moreOdds',\n },\n upcoming: {\n defaultMessage: 'Upcoming games',\n id: 'global.upcoming',\n },\n upcomingShort: {\n defaultMessage: 'Upcoming',\n id: 'global.upcomingShort',\n },\n outrights: {\n defaultMessage: 'Outrights',\n id: 'global.outrights',\n },\n results: {\n defaultMessage: 'Results',\n id: 'global.results',\n },\n deactivated: {\n id: 'global.deactivated',\n defaultMessage: 'Deactivated',\n },\n event: {\n id: 'global.event',\n defaultMessage: 'Event',\n },\n selectPlaceholder: {\n id: 'global.selectPlaceholder.',\n defaultMessage: 'Select',\n },\n selectedDropdownElement: {\n id: 'global.selectedDropdownElement',\n defaultMessage: 'Selected',\n },\n draw: {\n defaultMessage: 'Draw',\n id: 'global.draw',\n },\n stream: {\n defaultMessage: 'Stream',\n id: 'global.stream',\n },\n matchTrackerTitle: {\n defaultMessage: 'Match centre',\n id: 'global.matchTrackerTitle',\n },\n watch: {\n defaultMessage: 'Watch',\n id: 'global.watch',\n },\n marketTotal: {\n defaultMessage: 'Total',\n id: 'marketName.Total',\n },\n marketHandicap: {\n defaultMessage: 'Handicap',\n id: 'marketName.Handicap',\n },\n marketWinner: {\n defaultMessage: 'Winner',\n id: 'marketName.Winner',\n },\n won: {\n defaultMessage: 'WIN',\n id: 'global.odd.Won',\n },\n lost: {\n defaultMessage: 'LOSS',\n id: 'global.odd.Lost',\n },\n score: {\n id: 'global.score',\n defaultMessage: 'Score',\n },\n prizePool: {\n defaultMessage: 'Prize Pool:',\n id: 'global.prizePool',\n },\n defaultTournamentDescription: {\n defaultMessage:\n 'Place your bet on {name} tournament with best odds! You can place an ordinary bet on the outcome of an individual match or take a risk and make an express bet on several outcomes to multiply your winnings!',\n id: 'global.tournamentDescription',\n },\n promo: {\n id: 'global.promo',\n defaultMessage: 'Promo',\n },\n live: {\n id: 'global.live',\n defaultMessage: 'Live',\n },\n nextToGo: {\n id: 'global.nextToGo',\n defaultMessage: 'Next To Go',\n },\n myBets: {\n id: 'global.myBets',\n defaultMessage: 'my bets',\n },\n hide: {\n id: 'global.hide',\n defaultMessage: 'hide',\n },\n over: {\n defaultMessage: 'over',\n id: 'global.over',\n },\n under: {\n defaultMessage: 'under',\n id: 'global.under',\n },\n oddsFormat: {\n defaultMessage: 'Odds format',\n id: 'global.oddsFormat',\n },\n oddsStatistic: {\n defaultMessage: 'Odds statistic',\n id: 'global.oddsStatistic',\n },\n byMatch: {\n defaultMessage: 'by match',\n id: 'global.byMatch',\n },\n byMarket: {\n defaultMessage: 'by markets',\n id: 'global.byMarket',\n },\n show: {\n defaultMessage: 'Show',\n id: 'global.show',\n },\n Decimal: {\n defaultMessage: 'Decimal',\n id: 'global.Decimal',\n },\n Fractional: {\n defaultMessage: 'Fractional',\n id: 'global.Fractional',\n },\n HongKong: {\n defaultMessage: 'HongKong',\n id: 'global.HongKong',\n },\n Indo: {\n defaultMessage: 'Indo',\n id: 'global.Indo',\n },\n Malay: {\n defaultMessage: 'Malay',\n id: 'global.Malay',\n },\n US: {\n defaultMessage: 'US',\n id: 'global.US',\n },\n favorites: {\n defaultMessage: 'favorites',\n id: 'global.favorites',\n },\n top: {\n defaultMessage: 'top',\n id: 'global.top',\n },\n popular: {\n defaultMessage: 'popular',\n id: 'global.popular',\n },\n daily: {\n defaultMessage: 'Next 24 hours',\n id: 'global.daily',\n },\n weekly: {\n defaultMessage: 'weekly',\n id: 'global.weekly',\n },\n monthly: {\n defaultMessage: 'monthly',\n id: 'global.monthly',\n },\n all: {\n defaultMessage: 'All',\n id: 'global.all',\n },\n allGames: {\n defaultMessage: 'All Games',\n id: 'global.allGames',\n },\n unpin: {\n defaultMessage: 'unpin',\n id: 'global.unpin',\n },\n ChangeHistory: {\n defaultMessage: 'History Change',\n id: 'global.ToggleHistory',\n },\n more: {\n defaultMessage: 'More',\n id: 'outright.OddTypes.more',\n },\n EXPRESS: {\n defaultMessage: 'EXPRESS',\n id: 'betslip.EXPRESS',\n },\n SINGLE: {\n defaultMessage: 'SINGLE',\n id: 'betslip.SINGLE',\n },\n SYSTEM: {\n defaultMessage: 'SYSTEM',\n id: 'betslip.SYSTEM',\n },\n showSettings: {\n defaultMessage: 'Settings',\n id: 'global.showSettings',\n },\n featured: {\n defaultMessage: 'Featured',\n id: 'global.featured',\n },\n bettingSlip: {\n defaultMessage: 'Betting Slip',\n id: 'betslip.BettingSlip',\n },\n bettingSlipBetTitle: {\n defaultMessage: '{count,plural, one {Outcome} other {Outcomes}}',\n id: 'betslip.BettingSlip.BetTitle',\n },\n totalOdd: {\n defaultMessage: 'Total Odds',\n id: 'betslip.BetslipFooter.TotalRow.totalOdd',\n },\n on: {\n defaultMessage: 'On',\n id: 'global.On',\n },\n off: {\n defaultMessage: 'Off',\n id: 'global.Off',\n },\n statistics: {\n defaultMessage: 'statistics',\n id: 'global.statistics',\n },\n specialBets: {\n defaultMessage: 'specialBets',\n id: 'global.specialBets',\n },\n esport: {\n defaultMessage: 'ESport',\n id: 'global.esport',\n },\n csport: {\n defaultMessage: 'Sport',\n id: 'global.csport',\n },\n team: {\n defaultMessage: 'Team',\n id: 'global.team',\n },\n competitor: {\n defaultMessage: 'Competitor',\n id: 'global.competitor',\n },\n yes: {\n defaultMessage: 'Yes',\n id: 'global.yes',\n },\n no: {\n defaultMessage: 'No',\n id: 'global.no',\n },\n matchListPageTitle: {\n defaultMessage:\n '{productName, select, unknown {Esports Betting and Odds Online} other {Esports Betting and Odds Online at {productName}}}',\n id: 'global.matchListPageTitle',\n },\n topSpecifier: {\n defaultMessage: 'Top',\n id: 'global.topSpecifier',\n },\n other: {\n defaultMessage: 'Other',\n id: 'global.other',\n },\n totalStake: {\n defaultMessage: 'Total Stake',\n id: 'global.totalStake',\n },\n totalWin: {\n defaultMessage: 'Total potential win',\n id: 'global.totalWin',\n },\n rollback: {\n defaultMessage: 'Return',\n id: 'global.rollback',\n },\n placeBet: {\n defaultMessage: 'Place Bet',\n id: 'global.placeBet',\n },\n unsettled: {\n defaultMessage: 'unsettled',\n id: 'global.unsettled',\n },\n settled: {\n defaultMessage: 'settled',\n id: 'global.settled',\n },\n startTime: {\n defaultMessage: 'Start time',\n id: 'global.startTime',\n },\n cashout: {\n defaultMessage: 'cashout',\n id: 'global.cashout',\n },\n deposit: {\n defaultMessage: 'Deposit',\n id: 'global.deposit',\n },\n 'WW-OCEANIA': {\n defaultMessage: 'Oceania',\n id: 'global.WW-OCEANIA',\n },\n 'WW-AMERICAS': {\n defaultMessage: 'Americas',\n id: 'global.WW-AMERICAS',\n },\n 'WW-CIS': {\n defaultMessage: 'CIS',\n id: 'global.WW-CIS',\n },\n 'WW-SEA': {\n defaultMessage: 'SEA',\n id: 'global.WW-SEA',\n },\n EU: {\n defaultMessage: 'European Union',\n id: 'global.EU',\n },\n WW: {\n defaultMessage: 'World',\n id: 'global.WW',\n },\n 'WW-NAM': {\n defaultMessage: 'North America',\n id: 'global.WW-NAM',\n },\n 'WW-SAM': {\n defaultMessage: 'South America',\n id: 'global.WW-SAM',\n },\n 'WW-EUR': {\n defaultMessage: 'Europe',\n id: 'global.WW-EUR',\n },\n 'WW-AFR': {\n defaultMessage: 'Africa',\n id: 'global.WW-AFR',\n },\n 'WW-ASI': {\n defaultMessage: 'Asia',\n id: 'global.WW-ASI',\n },\n 'WW-AUS': {\n defaultMessage: 'Australia',\n id: 'global.WW-AUS',\n },\n 'GB-ENG': {\n defaultMessage: 'England',\n id: 'global.GB-ENG',\n },\n 'GB-SCT': {\n defaultMessage: 'Scotland',\n id: 'global.GB-SCT',\n },\n 'GB-WLS': {\n defaultMessage: 'Wales',\n id: 'global.GB-WLS',\n },\n 'GB-NIR': {\n defaultMessage: 'Northern Ireland',\n id: 'global.GB-NIR',\n },\n freebet: {\n defaultMessage: 'FreeBet',\n id: 'global.freebet',\n },\n ordinalNumber: {\n defaultMessage:\n '{number, selectordinal, zero {#th} one {#st} two {#nd} few {#rd} many {#th} other {#th}}',\n id: 'global.ordinalNumber',\n },\n win: {\n defaultMessage: 'Win',\n id: 'global.win',\n },\n});\n","import type { FontFaceDescriptors } from 'css-font-loading-module';\n\nexport interface FontType {\n family: string;\n source: string;\n descriptors?: FontFaceDescriptors;\n}\n\nexport type Suffix = 'primary' | 'secondary';\n\nexport const PRIMARY_FONT_FAMILY = 'Roboto' as const;\n// export const SECONDARY_FONT_FAMILY = 'Roboto Condensed' as const;\n\nexport const fontExtensions = ['.woff2', '.woff', '.ttf'] as const;\n\nfunction makeFontSource(path: string): string {\n return fontExtensions.map(ext => `url(${path}${ext})` as const).join(`, `);\n}\n\nfunction makeFontType(\n family: string,\n path: string,\n descriptors: FontFaceDescriptors\n): FontType {\n return {\n family,\n source: makeFontSource(path),\n descriptors,\n };\n}\n\nexport const PRIMARY_FONTS = ['400', '500', '700', '900'].map(weight =>\n makeFontType(\n PRIMARY_FONT_FAMILY,\n `assets/fonts/roboto-lc/roboto-lc-${weight}`,\n {\n style: 'normal',\n weight,\n }\n )\n) as Tuple;\n\n// export const SECONDARY_FONTS = ['400', '700'].map(weight =>\n// makeFontType(\n// SECONDARY_FONT_FAMILY,\n// `assets/fonts/roboto-condensed-lc/roboto-condensed-lc-${weight}`,\n// {\n// style: 'normal',\n// weight,\n// }\n// )\n// ) as Tuple;\n\nexport function setFontToCssVar(font: string, suffix: Suffix): void {\n document.documentElement.style.setProperty(\n `--app-font-family-${suffix}`,\n `${font}, sans-serif`\n );\n}\n\nclass DefaultFontMappingBySuffix implements Record {\n primary = [PRIMARY_FONT_FAMILY, PRIMARY_FONTS] as const;\n secondary = [PRIMARY_FONT_FAMILY, PRIMARY_FONTS] as const;\n}\n\nexport const DEFAULT_FONT_MAPPING_BY_SUFFIX = new DefaultFontMappingBySuffix();\n","import { KebabCase } from 'type-fest';\n\nexport type IBettingPalette = {\n cPrimary: string;\n cPrimaryLight: string;\n cPrimaryDark: string;\n\n cSecondary: string;\n cSecondaryLight: string;\n cSecondaryDark: string;\n\n cBackground: string;\n cBackgroundLight: string;\n cBackgroundDark: string;\n cBackgroundInvert: string;\n\n cSurface: string;\n cSurfaceLight: string;\n cSurfaceDark: string;\n cSurfaceInvert: string;\n\n cTextPrimary: string;\n cTextPrimaryLight: string;\n cTextPrimaryDark: string;\n cTextPrimaryInvert: string;\n\n cTextSecondary: string;\n cTextSecondaryLight: string;\n\n cSuccess: string;\n cSuccessLight: string;\n cSuccessDark: string;\n\n cError: string;\n cErrorLight: string;\n cErrorDark: string;\n\n cAction: string;\n cActionHover: string;\n cActionActive: string;\n};\n\nexport const DEFAULT_PALETTE: IBettingPalette = {\n cPrimary: '#ff9c00',\n cPrimaryLight: '#ffb43d',\n cPrimaryDark: '#e08900',\n\n cSecondary: '#076dea',\n cSecondaryLight: '#076dea',\n cSecondaryDark: '#076dea',\n\n cBackground: '#14171d',\n cBackgroundLight: '#191c24',\n cBackgroundDark: '#000',\n cBackgroundInvert: '#fff',\n\n cSurface: '#2a3040',\n cSurfaceLight: '#3a4768',\n cSurfaceDark: '#1d212a',\n cSurfaceInvert: '#f9f9fb',\n\n cTextPrimary: '#fff',\n cTextPrimaryLight: '#bebebe',\n cTextPrimaryDark: '#9b9b9b',\n cTextPrimaryInvert: '#0e1014',\n\n cTextSecondary: '#5d6473',\n cTextSecondaryLight: '#808aa6',\n\n cSuccess: '#5cae50',\n cSuccessLight: '#7dbf73',\n cSuccessDark: '#325e2b',\n\n cError: '#cf2c27',\n cErrorLight: '#dd4f4b',\n cErrorDark: '#701515',\n\n cAction: '#fff',\n cActionHover: '#bebebe',\n cActionActive: '#ff9c00',\n};\n\nexport type PaletteCssProp = `--${KebabCase}`;\nexport type PaletteCssPropRgb = `${PaletteCssProp}-rgb`;\n\nexport type PaletteRgbVars = {\n [key in IBettingPalette as PaletteCssPropRgb]: `${number}, ${number}, ${number}`;\n};\n\nexport type PaletteHexVars = {\n [key in IBettingPalette as PaletteCssProp]: string;\n};\n\nexport interface PaletteCssVariables extends PaletteHexVars, PaletteRgbVars {}\n","import { kebabCase, reduce } from 'lodash';\n\nexport interface IBettingPinnedStreamPosition {\n pPinnedStreamTop: string | null;\n pPinnedStreamRight: string | null;\n pPinnedStreamBottom: string | null;\n pPinnedStreamLeft: string | null;\n}\n\nexport const DEFAULT_PINNED_STREAM_POSITION: IBettingPinnedStreamPosition = {\n pPinnedStreamTop: null,\n pPinnedStreamRight: null,\n pPinnedStreamBottom: '10px',\n pPinnedStreamLeft: '10px',\n};\n\nconst REGEX_POSITION_PROPERTY = /^((\\d+(\\.\\d+)?)(px|em|rem|vw|vh|%))|null$/i;\n\nexport const [DEFAULT_POSITION_PROPS] = convertObjectToCssVariables(\n DEFAULT_PINNED_STREAM_POSITION\n);\n\nexport function convertObjectToCssVariables(\n positionProps: Partial\n): [CssVariables, boolean] {\n let isAnyVariableInvalid = false;\n\n const convertedVariables = reduce(\n positionProps,\n (cssVariables: CssVariables, value, prop) => {\n const validationError = isValidPositionProperty(prop, value);\n\n if (validationError) {\n console.error(validationError);\n isAnyVariableInvalid = true;\n } else {\n cssVariables[`--${kebabCase(prop)}`] = `${value}`;\n }\n\n return cssVariables;\n },\n {}\n );\n\n return [convertedVariables, isAnyVariableInvalid];\n}\n\nfunction isValidPositionProperty(key: string, value: any): Error | undefined {\n if (value === null) return;\n\n if (typeof value !== 'string') {\n return new Error(`Allowed types for key: ${key}, are String or Null.`);\n }\n\n if (!(key in DEFAULT_PINNED_STREAM_POSITION)) {\n return new Error(`Not supported positioning key: ${key}`);\n }\n\n if (!value.match(REGEX_POSITION_PROPERTY)) {\n return new Error(\n `Not supported value of positioning key. Key: ${key}. Value: ${value}`\n );\n }\n}\n","export * from './fonts';\nexport * from './palette';\nexport * from './pinnedStreamPosition';\nexport * from './spacing';\n\nexport enum СssSetNaming {\n SPACING = 'spacing',\n PALETTE = 'palette',\n PINNED_STREAM_POSITION = 'pinnedStreamPosition',\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"topMatchTabs__container___1anOB\",\"tab-item\":\"topMatchTabs__tab-item___QbFzG\",\"is-active\":\"topMatchTabs__is-active___7oofw\",\"tab-title\":\"topMatchTabs__tab-title___bjQY5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"MarketValue__title___1c4Ct\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Toggler__container___2NS7e\",\"label\":\"Toggler__label___uqMQe\",\"on\":\"Toggler__on___PUOWi\",\"off\":\"Toggler__off___-7lEE\",\"thumb\":\"Toggler__thumb___2ivD5\",\"is-open\":\"Toggler__is-open___3z06_\",\"is-disabled\":\"Toggler__is-disabled___N78cC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"settingsMenu__container___2dofG\",\"settings-wrapper\":\"settingsMenu__settings-wrapper___2kHgl\",\"animation-finished\":\"settingsMenu__animation-finished___H_zEZ\",\"settings\":\"settingsMenu__settings___2jjMM\",\"is-open\":\"settingsMenu__is-open___3F1Uv\"};","import { App } from '@gin-betting/core';\n\nexport const NAME = 'tournament' as const;\n\nexport const GET_TOURNAMENT_MATCHES_REQUEST = `tournament/GET_TOURNAMENT_MATCHES:REQUEST` as const;\nexport const GET_TOURNAMENT_MATCHES_SUCCESS = `tournament/GET_TOURNAMENT_MATCHES:SUCCESS` as const;\nexport const GET_TOURNAMENT_MATCHES_FAIL = `tournament/GET_TOURNAMENT_MATCHES:FAIL` as const;\n\nexport const COUNT_PER_PAGE = 20;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"ScrollToTop__container___37xDi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"favoriteList__container___3F7MA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"portal__container___3uBc9\",\"is-filled\":\"portal__is-filled___3NYuV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"var\":\"fixtureDataFootball__var___2NNvL\"};","import React, { useCallback } from 'react';\nimport cn from 'classnames';\n\nimport { useIsMobile } from 'hooks';\nimport type { Analytics } from 'services/analytics';\nimport Icon from '../Icon';\n\nimport checkDesk from 'assets/svg/check.svg';\nimport chevron from 'assets/svg/chevron.svg';\nimport './CheckBox.scss';\n\ninterface Props {\n checked?: boolean;\n reversed?: boolean;\n onChange?: (event: React.SyntheticEvent) => void;\n analytics?: Analytics;\n}\n\nconst CheckBox: React.FC = ({\n checked = false,\n reversed = false,\n onChange,\n analytics,\n}) => {\n const check = useIsMobile() ? chevron : checkDesk;\n\n const handleCheckedChange = useCallback(\n (event: React.SyntheticEvent) => {\n if (!onChange) return;\n\n onChange(event);\n },\n [onChange]\n );\n\n return (\n \n {checked && }\n \n );\n};\n\nexport default CheckBox;\n","import { useEffect, useState } from 'react';\n\nimport { getByKey } from 'utils';\n\ntype EsportIconsPack = typeof import('assets/esport-icons-pack')['default'];\n\ntype ClassicIconsPack = typeof import('assets/classic-icons-pack')['default'];\n\nlet esportIconsPack: EsportIconsPack | null = null;\nlet classicIconsPack: ClassicIconsPack | null = null;\n\ninterface Input {\n gameId: string;\n}\n\ninterface Output {\n glyph: any;\n}\n\nconst loadEsportIconsPack = async (callback: VoidFn) => {\n const svgPack = await import(\n /* webpackChunkName: \"esport-icons\" */ 'assets/esport-icons-pack'\n );\n esportIconsPack = svgPack.default;\n callback();\n};\n\nconst loadClassicIconsPack = async (callback: VoidFn) => {\n const svgPack = await import(\n /* webpackChunkName: \"classic-icons\" */ 'assets/classic-icons-pack'\n );\n classicIconsPack = svgPack.default;\n callback();\n};\n\nconst useGameLogo = ({ gameId }: Input): Output => {\n const isEsport = gameId.includes('esport');\n const [, forceUpdate] = useState(0);\n\n useEffect(() => {\n if (\n getByKey(esportIconsPack, gameId) ||\n getByKey(classicIconsPack, gameId)\n )\n return;\n\n const callback = () => forceUpdate(s => s + 1);\n\n if (isEsport) {\n loadEsportIconsPack(callback);\n } else {\n loadClassicIconsPack(callback);\n }\n }, [gameId, isEsport]);\n\n const defaultIcon = isEsport\n ? esportIconsPack?.default\n : classicIconsPack?.default;\n\n return {\n glyph:\n getByKey(esportIconsPack, gameId) ||\n getByKey(classicIconsPack, gameId) ||\n defaultIcon,\n };\n};\n\nexport default useGameLogo;\n","import React from 'react';\n\nimport Icon from '../Icon';\nimport useGameLogo from './useGameLogo';\n\nimport './gameLogo.scss';\n\ninterface Props {\n gameId: string;\n}\n\nconst GameLogo: React.FC = ({ gameId }) => {\n const { glyph } = useGameLogo({\n gameId,\n });\n\n if (!glyph) return
;\n\n return ;\n};\n\nexport default GameLogo;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"promoFooter__container___3xtOp\"};","import core, { Viewport } from '@gin-betting/core';\n\nimport { DEFAULT_BREAKPOINTS } from 'app-constants';\n\nconst {\n utils: { checkMobile },\n} = core;\n\nclass UserDevice {\n static readonly mockMobileDevice: Required = {\n type: 'screen',\n width: `${DEFAULT_BREAKPOINTS.superExtraSmall}px`,\n orientation: '(orientation: portrait)',\n };\n static readonly mockDesktopDevice: Required = {\n type: 'screen',\n width: `${DEFAULT_BREAKPOINTS.extraLarge}px`,\n orientation: '(orientation: landscape)',\n };\n\n private static instance: UserDevice | undefined = undefined;\n\n private readonly isMobile: boolean;\n\n private constructor(userAgent?: string) {\n this.isMobile = checkMobile(userAgent);\n }\n\n static init(userAgent?: string): UserDevice {\n return (this.instance = new UserDevice(userAgent));\n }\n\n static getInstance(): UserDevice | null {\n if (!this.instance) {\n try {\n throw new Error('UserDevice is used before initialized!');\n } catch (error) {\n console.error(error);\n }\n\n return null;\n }\n\n return this.instance;\n }\n\n public isDeviceMobile(): boolean {\n return this.isMobile;\n }\n}\n\nexport default UserDevice;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"headerMobile__container___1LJmN\"};","import { SyntheticEvent, useEffect, useState } from 'react';\nimport copy from 'copy-to-clipboard';\n\ninterface Output {\n onClickHandler: (event: SyntheticEvent) => void;\n isCopied: boolean;\n}\n\ninterface Input {\n text: string | undefined;\n}\n\nconst useDebugInfo = ({ text }: Input): Output => {\n const [isCopied, setIsCopied] = useState(false);\n\n useEffect(() => {\n if (!isCopied) return;\n\n const timeout = setTimeout(() => {\n setIsCopied(false);\n }, 1000);\n\n return () => clearTimeout(timeout);\n }, [isCopied]);\n\n const onClickHandler = (event: SyntheticEvent) => {\n event.preventDefault();\n\n if (!text) return;\n\n if (/^([0-9]:)/.test(text)) {\n const copyText = text.split(':').pop();\n\n if (!copyText) return;\n\n copy(copyText);\n } else {\n copy(text);\n }\n\n setIsCopied(true);\n };\n\n return {\n isCopied,\n onClickHandler,\n };\n};\n\nexport default useDebugInfo;\n","import React from 'react';\nimport core from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport useDebugInfo from './useDebugInfo';\n\nimport './debugInfo.scss';\n\ninterface Props {\n text: string | undefined;\n isInlineBlock?: boolean;\n isRelativePosition?: boolean;\n}\n\nconst {\n utils: { isDebugEnabled },\n} = core;\n\nconst DebugInfo: React.FC = ({\n text,\n isInlineBlock,\n isRelativePosition,\n}) => {\n const { isCopied, onClickHandler } = useDebugInfo({ text });\n\n if (!isDebugEnabled() || !text) return null;\n\n return (\n \n \n {text}\n
\n {isCopied &&
Copied to clipboard!
}\n \n );\n};\n\nexport default DebugInfo;\n","export enum Category {\n FiltersLive = 'Filters - Live',\n FiltersNextToGo = 'Filters - Next-to-go',\n FiltersFeatured = 'Filters - Featured',\n FiltersCategorizer = 'Filters - Categorizer',\n TopSportEventsCenter = 'Top sport events - center',\n TopSportEventsRight = 'Top sport events - right',\n BannerTopSlider = 'Banner - Top slider',\n BannerTop = 'Banner - Top slider',\n BannerRight = 'Banner - Right',\n BannerRightSlider = 'Banner - Right slider',\n BannerOutright = 'Banner - Outright',\n LineOutright = 'Line - Outright',\n LineSportEvent = 'Line - Sport event',\n MatchHeader = 'Match - Header',\n MatchMarkets = 'Match - Markets',\n SidebarMarketList = 'Match - Sidebar Market List',\n AppCategory = 'App',\n Betslip = 'Betslip',\n Unknown = 'Unknown',\n}\n\nexport enum Action {\n ClickOnLink = 'Click on link',\n // Live and Next to Go filters\n Open = 'Open',\n FiltersTime = 'Filter by time',\n // Featured filters\n SelectTournament = 'Select tournament ',\n ToggleMore = 'Toggle more',\n // Categorizer filters\n SelectSport = 'Select sport',\n OpenSport = 'Open sport',\n SelectAllTournamentsSport = 'Select all tournaments in sport',\n ClearTournamentsSport = 'Clear tournaments in sport',\n // Top sport events\n FilterSport = 'Filter by sport',\n SelectOdd = 'Select odd',\n SelectMoreMarkets = 'Select more markets',\n ClickOnTitle = 'Click on title',\n // Banner\n ClickOnImage = 'Click on image',\n ClickOnButton = 'Click on button',\n ChangeSlide = 'Change slide',\n RedirectToSportEvent = 'Redirect to sport event',\n // Line sports\n OpenFullscreen = 'Open fullscreen',\n HidePromo = 'Hide promo',\n WatchPromo = 'Watch promo',\n SelectPromoOdd = 'Select promo odd',\n PlayStream = 'Play stream',\n PauseStream = 'Pause stream',\n ToggleFavorite = 'Toggle favorite',\n // Match-header\n GoBack = 'Go back',\n ChangeTab = 'Change tab',\n StatisticsBtnClick = 'match statistic button click',\n // Match markets\n ToggleMarketGroup = 'Toggle market group',\n // Location Change\n LocationChange = 'Location Change',\n ChangePage = 'Change Page',\n GoToEventView = 'Go to event view',\n // Betslip\n PlaceBet = 'Place Bet',\n DeclineBet = 'Decline Bet',\n AcceptedBet = 'Accepted Bet',\n PlaceBetMultiSingle = 'Place Bet Multi Single',\n SelectSuggest = 'Select suggest',\n PlaceOdd = 'Place Odd',\n}\n\nexport enum Label {\n Open = 'open',\n Close = 'close',\n Remove = 'remove',\n Add = 'add',\n Daily = 'daily',\n Weekly = 'weekly',\n Monthly = 'monthly',\n MaxBet = 'max bet button',\n}\n\nexport enum AnalyticsAttr {\n category = 'data-category',\n action = 'data-action',\n label = 'data-label',\n}\n","import React, { memo, useCallback, useEffect, useRef } from 'react';\nimport { useLocation } from 'react-router';\n\nimport { usePrevious } from 'hooks';\nimport UserDevice from 'services/user-device';\nimport { parse } from 'utils';\nimport { Action, AnalyticsAttr, Category } from './constants';\nimport type { FieldsObj } from './types';\nimport { formatPathname, formatSearch, sendAnalytics } from './utils';\n\nconst GoogleAnalytics: React.FC = () => {\n const location = useLocation();\n const prevLocation = usePrevious(location);\n\n const { search, pathname, hash } = location;\n\n const prevUrl = useRef('Enter the site');\n\n const handleClickEvent: EventListener = useCallback((event: Event) => {\n const { target } = event;\n\n if (!target) return;\n\n // NOTE: additional check on closest method\n const dataset = (target as Element)?.closest(\n `[${AnalyticsAttr.category}]` as const\n )?.dataset;\n\n if (!dataset) return;\n\n const { category, action, label } = dataset;\n\n if (!category || !action) return;\n\n const fieldsObj: FieldsObj = {\n eventCategory: category,\n eventAction: action,\n };\n sendAnalytics(fieldsObj, label);\n }, []);\n\n useEffect(() => {\n const eventType = UserDevice.getInstance()?.isDeviceMobile()\n ? 'click'\n : 'mousedown';\n\n document.body.addEventListener(eventType, handleClickEvent);\n\n return () => {\n document.body.removeEventListener(eventType, handleClickEvent);\n };\n }, [handleClickEvent]);\n\n useEffect(() => {\n const url = `${formatPathname(pathname)}${formatSearch(search)}${hash}`;\n const label = `From: ${prevUrl.current}; To: ${url}`;\n const fieldsObject = {\n eventCategory: Category.AppCategory,\n eventAction: Action.LocationChange,\n };\n\n prevUrl.current = url;\n\n sendAnalytics(fieldsObject, label);\n }, [search, hash, pathname]);\n\n useEffect(() => {\n if (!prevLocation) return;\n\n const { pathname: prevPathName, search: prevSearch } = prevLocation;\n\n const currentPage = parse(search).page;\n\n const prevPage = parse(prevSearch).page;\n\n if ((!currentPage && !prevPage) || prevPathName !== pathname) return;\n\n const label = `From: ${prevPage ?? 1}; To: ${currentPage ?? 1}`;\n\n const fieldsObject = {\n eventCategory: Category.AppCategory,\n eventAction: Action.ChangePage,\n };\n sendAnalytics(fieldsObject, label);\n }, [pathname, prevLocation, search]);\n\n return null;\n};\n\nexport default memo(GoogleAnalytics);\n","import { createContext } from 'react';\n\nimport type { AnalyticAttrs } from './types';\n\nconst AnalyticAttrsCtx = createContext>({});\n\nexport default AnalyticAttrsCtx;\n","import { useContext } from 'react';\n\nimport AnalyticAttrsCtx from './AnalyticAttrsCtx';\nimport type { AnalyticAttrs } from './types';\n\nexport function useAnalyticAttrs(): Partial;\nexport function useAnalyticAttrs>(obj: {\n defaultAttrs: T;\n}): Partial & T;\nexport function useAnalyticAttrs

>(obj: {\n priorityAttrs: P;\n}): Partial & P;\nexport function useAnalyticAttrs<\n T extends Partial,\n P extends Partial\n>(obj: { defaultAttrs: T; priorityAttrs: P }): Partial & T & P;\nexport function useAnalyticAttrs<\n T extends Partial,\n P extends Partial\n>(obj?: {\n defaultAttrs?: T;\n priorityAttrs?: P;\n}):\n | Partial\n | (Partial & T)\n | (Partial & P)\n | (Partial & T & P) {\n const analytic = useContext(AnalyticAttrsCtx);\n\n if (!obj) return analytic;\n\n const { defaultAttrs, priorityAttrs } = obj;\n\n return { ...defaultAttrs, ...analytic, ...priorityAttrs };\n}\n","import googleAnalytics from './GoogleAnalytics';\n\nexport { default as AnalyticAttrsCtx } from './AnalyticAttrsCtx';\nexport { Action, Category, Label } from './constants';\nexport { useAnalyticAttrs } from './hooks';\nexport type {\n AnalyticAttrs,\n Analytics,\n FieldsObj,\n RequiredAnalytics,\n} from './types';\nexport { formatPathname, formatSearch } from './utils';\n\nexport default googleAnalytics;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"widget-wrapper\":\"topMatchList__widget-wrapper___1EBlL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"streamStub__container___2xNIx\"};","import { createContext } from 'react';\nimport type { Match } from '@gin-betting/match';\nimport { noop } from 'lodash';\n\ninterface IMarketsTabConfigsContext {\n marketsTabConfigsBySport: Match.MarketTabConfigBySport;\n setMarketsTabConfigsBySport: (\n state:\n | Match.MarketTabConfigBySport\n | ((\n config: Match.MarketTabConfigBySport\n ) => Match.MarketTabConfigBySport)\n ) => void;\n}\n\nconst MarketsTabConfigsContext = createContext({\n marketsTabConfigsBySport: {},\n setMarketsTabConfigsBySport: noop,\n});\n\nexport default MarketsTabConfigsContext;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"banners-slider\":\"bannersCarousel__banners-slider___39SHg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"topMenu__container___2kpIe\",\"header\":\"topMenu__header___3Owjs\",\"loader-block\":\"topMenu__loader-block___2dVtb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"bannerCarousels__container___Chq9v\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Score__container___26Czo\",\"home\":\"Score__home___3n_68\",\"name\":\"Score__name___1cOGh\",\"dynamic-scores-wrapper\":\"Score__dynamic-scores-wrapper___3-9JU\",\"dynamic-scores\":\"Score__dynamic-scores___1WVpz\",\"with-server\":\"Score__with-server___TpMmF\",\"is-open\":\"Score__is-open___3dhG4\",\"score\":\"Score__score___3vr5r\",\"total\":\"Score__total___HwTZf\",\"is-short-view\":\"Score__is-short-view___o6zCs\",\"is-long\":\"Score__is-long___7GAKS\",\"score-title\":\"Score__score-title___34lxy\",\"toggle-wrapper\":\"Score__toggle-wrapper___35sCn\",\"toggle-btn\":\"Score__toggle-btn___2H39z\",\"score-server\":\"Score__score-server___1i4Du\",\"server\":\"Score__server___39Fk9\",\"active\":\"Score__active___14Jmn\",\"constant-scores-wrapper\":\"Score__constant-scores-wrapper___3_mtf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"input__wrapper___1Y1h-\",\"is-disabled\":\"input__is-disabled___uQdAj\",\"is-focused\":\"input__is-focused___ellMh\",\"is-desktop\":\"input__is-desktop___3stSf\",\"input\":\"input__input___tstQL\",\"currency\":\"input__currency___3HtRA\"};","import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport bannersModule, { BannerTypes } from '@gin-betting/banners';\nimport core from '@gin-betting/core';\nimport { find, get } from 'lodash';\nimport { createStructuredSelector } from 'reselect';\n\nimport { ACTIVE_MARKET_STATUSES } from 'app-constants';\nimport { useMemoSelector } from 'hooks';\n\ninterface Input {\n zoneId: string;\n withSportEvent?: boolean;\n}\n\ninterface Output {\n interval: number;\n banners: BannerTypes.BannerItem[];\n}\n\nconst DEFAULT_INTERVAL = 5 * 1000;\n\nconst {\n selectors: {\n makeSelectBannerByZoneId,\n makeBannerZoneSettingsSelector,\n makeSelectMissingBannerZoneIds,\n },\n actions: { getBannersData },\n} = bannersModule;\n\nconst {\n utils: { getBettingOptions },\n} = core;\n\nfunction useBanners({ zoneId, withSportEvent = true }: Input): Output {\n const dispatch = useDispatch();\n\n const {\n bannerZone,\n zoneSettings,\n missingZoneIds,\n } = useMemoSelector(makeSelectProps(zoneId), {}, [zoneId]);\n\n const intervalPair = find(zoneSettings, { name: 'interval' });\n const interval = +(intervalPair?.value ?? DEFAULT_INTERVAL);\n\n const banners = bannerZone?.config ?? [];\n const missingZoneId = get(missingZoneIds, 0, undefined);\n\n useEffect(() => {\n if (!missingZoneId) return;\n\n dispatch(\n getBannersData({\n zoneId: missingZoneId,\n marketStatuses: ACTIVE_MARKET_STATUSES,\n marketLimit: 1,\n sportIds: getBettingOptions().sportIds,\n withSportEvent,\n })\n );\n }, [dispatch, missingZoneId, withSportEvent]);\n\n return {\n interval,\n banners,\n };\n}\n\nconst makeSelectProps = (zoneId: string) =>\n createStructuredSelector({\n zoneSettings: makeBannerZoneSettingsSelector(zoneId),\n bannerZone: makeSelectBannerByZoneId(zoneId),\n missingZoneIds: makeSelectMissingBannerZoneIds([zoneId]),\n });\n\nexport default useBanners;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"mobileHeader__container___ygKqQ\",\"item\":\"mobileHeader__item___2wY-2\",\"active-item\":\"mobileHeader__active-item___1-Fh7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"collapsibleSettingsRow__container___1aMfo\",\"title\":\"collapsibleSettingsRow__title___3vaA1\",\"icon\":\"collapsibleSettingsRow__icon___2yxJk\",\"is-open\":\"collapsibleSettingsRow__is-open___1_MoC\",\"selected-item\":\"collapsibleSettingsRow__selected-item___1Pkkx\",\"toggle\":\"collapsibleSettingsRow__toggle___2Xw8j\",\"transition-animation\":\"collapsibleSettingsRow__transition-animation___2sA_p\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"MarketTotal__container___27K7p\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"categorizerStub__container___1Bsvg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"matchDateTime__container___32qEP\",\"row\":\"matchDateTime__row___3QzRM\",\"time-container\":\"matchDateTime__time-container___1Vcsr\",\"time\":\"matchDateTime__time___3R6Tx\",\"date\":\"matchDateTime__date___2Hw-c\",\"today\":\"matchDateTime__today___CwuX8\",\"title\":\"matchDateTime__title___hscu9\",\"live\":\"matchDateTime__live___RvzL3\",\"isLive\":\"matchDateTime__isLive___8f4IP\",\"time-wrapper\":\"matchDateTime__time-wrapper___3X6NB\",\"sport-event-time\":\"matchDateTime__sport-event-time___1NndP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"segmentControl__container___3OLBv\",\"with-padding\":\"segmentControl__with-padding___2PmXr\"};","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport core from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport { Action, useAnalyticAttrs } from 'services/analytics';\nimport { checkIsCmsLink } from 'utils';\n\nconst {\n utils: { getBettingOptions },\n} = core;\n\ninterface OwnProps {\n to: string | null;\n styleName?: string;\n className?: string;\n title?: string;\n onClick?: () => void;\n}\n\ntype Props = OwnProps;\n\nconst SmartLink: React.FC = ({\n to,\n title,\n className,\n children,\n onClick,\n}) => {\n const analytic = useAnalyticAttrs({\n defaultAttrs: { 'data-action': Action.ClickOnLink },\n });\n const bettingOptions = getBettingOptions();\n\n const linkClassName = cn('__app-SmartLink-link', className);\n\n if (!to) return null;\n\n if (bettingOptions.url.pagePath || checkIsCmsLink(to)) {\n return (\n \n {children}\n \n );\n }\n\n return (\n \n {children}\n \n );\n};\n\nexport default SmartLink;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"teamsTitle__container___2wIlz\",\"draw\":\"teamsTitle__draw___2l7YP\"};","/* tslint:disable */\nimport {\n defineMessages\n} from 'react-intl';\n\nexport default defineMessages({\n bettingSlipMobile: {\n defaultMessage: 'Betslip',\n id: 'betslip.BettingSlipMobile'\n },\n})","import React from 'react';\nimport {\n FormattedMessage,\n injectIntl,\n WrappedComponentProps,\n} from 'react-intl';\nimport core from '@gin-betting/core';\nimport { Severity } from '@sentry/types';\n\nimport { Icon, Portal } from 'components';\nimport globalMessages from 'messages';\nimport UserDevice from 'services/user-device';\nimport messages from './messages-sync';\n\nimport arrowDownCircle from 'assets/svg/arrow-down-circle.svg';\nimport * as betslip from '../components/Betslip/betslip.scss';\nimport * as header from '../components/BetslipHeader/betslipHeader.scss';\nimport * as container from '../components/BetslipList/betslipList.scss';\n\n// Don't change css imports\n/* eslint-disable */\n\nconst { sentryHub } = core.services;\n\n// TODO: remove unused expressions; investigate\n// right now this is required so webpack do not trim \"unused\" imports\n/* tslint:disable:no-unused-expression */\ncontainer;\nheader;\nbetslip;\n/* eslint-enable */\n\ninterface OwnProps {\n withoutPortal?: boolean;\n shouldReturnNull?: boolean;\n}\n\ntype Props = OwnProps & WrappedComponentProps;\n\nclass BetslipStub extends React.Component {\n styleName = 'container.container container.is-disabled';\n className = '__app-BetslipContainer-container';\n\n handleOpenClick = () => {\n sentryHub.captureMessage(\n 'Attempt to open betslip before the module is loaded',\n Severity.Warning\n );\n };\n\n renderBody = () => {\n const {\n intl: { formatMessage },\n } = this.props;\n\n const isMobile = UserDevice.getInstance()?.isDeviceMobile();\n\n return (\n

\n \n \n \n \n\n
\n \n 0\n {!isMobile &&\n formatMessage(\n globalMessages.bettingSlipBetTitle,\n {\n count: 0,\n }\n )}\n \n\n \n
\n
\n \n );\n };\n\n render() {\n const { withoutPortal, shouldReturnNull = false } = this.props;\n\n if (shouldReturnNull) return null;\n\n if (withoutPortal) {\n return (\n
\n {this.renderBody()}\n
\n );\n }\n\n return (\n \n {this.renderBody()}\n \n );\n }\n}\n\nexport default injectIntl(BetslipStub);\n","import React from 'react';\nimport core from '@gin-betting/core';\nimport loadable from '@loadable/component';\n\nimport { Modules } from 'async-modules';\nimport { Odd, OddStub } from 'components';\nimport ui from 'modules/ui';\nimport BetslipStub from './BetslipStub';\n\ntype OddProps = PropsFromReactComponent;\n\nconst {\n entities: {\n components: { makeOddContainerFor },\n },\n utils: { getBettingOptions },\n} = core;\nconst {\n components: { OddFormat },\n} = ui;\n\ntype AsyncOddButtonProps = {\n oddId: string | undefined;\n showResult?: boolean;\n withTitle?: boolean;\n fRef?: (ref: HTMLElement | null) => void;\n onMouseEnter?: React.MouseEventHandler | undefined;\n onMouseLeave?: React.MouseEventHandler | undefined;\n modifyOddTitle?: (name: string) => string;\n stubNode?: JSX.Element;\n};\n\nconst OddContainer = makeOddContainerFor();\n\nexport const loadBetslipModule: () => Promise<\n Modules['betslip']\n> = /* #__LOADABLE__ */ () =>\n import(/* webpackChunkName: \"betslip-module\" */ '../index');\n\nexport const OddButtonLoadable = loadable(loadBetslipModule, {\n resolveComponent: betslipModule =>\n betslipModule.default.components.OddButton,\n});\n\n// TODO: Add proper types for \"props\"\nexport const AsyncOddButton = (props: AsyncOddButtonProps): JSX.Element => (\n \n {oddFormat => (\n \n )}\n \n }\n />\n);\n\nexport const AsyncBetslipList = loadable(loadBetslipModule, {\n resolveComponent: betslipModule =>\n betslipModule.default.components.BetslipList,\n fallback: (\n \n ),\n});\n\nexport const AsyncBetslipListSubscription = loadable(loadBetslipModule, {\n resolveComponent: betslipModule =>\n betslipModule.default.components.BetslipListSubscription,\n});\n\nexport const AsyncBetslipBetCount = loadable(loadBetslipModule, {\n resolveComponent: betslipModule =>\n betslipModule.default.components.BetslipBetCount,\n});\n\nexport const AsyncQuickBetslip = loadable(loadBetslipModule, {\n resolveComponent: betslipModule =>\n betslipModule.default.components.QuickBetslip,\n});\n\nexport const AsyncRestoreBetslipFromURL = loadable(loadBetslipModule, {\n resolveComponent: betslipModule =>\n betslipModule.default.components.RestoreBetslipFromURL,\n});\n\nexport const AsyncSynchronizeBetslipState = loadable(loadBetslipModule, {\n resolveComponent: betslipModule =>\n betslipModule.default.components.SynchronizeBetslipState,\n});\n\nexport const AsyncRestrictions = loadable(loadBetslipModule, {\n resolveComponent: betslipModule =>\n betslipModule.default.components.Restrictions,\n});\n","import React from 'react';\nimport { App } from '@gin-betting/core';\n\nimport { Loader } from 'components';\nimport ui from 'modules/ui';\nimport type { ListNavTab } from 'types';\n\nimport './topMenu.scss';\n\ninterface Props {\n homeTabs: ListNavTab[];\n fetchStatus: App.FetchStatus;\n}\n\nconst {\n components: { ListNav },\n} = ui;\n\nconst TopMenu: React.FC = ({ homeTabs, fetchStatus, children }) => {\n return (\n
\n
\n \n {children}\n
\n
\n \n
\n
\n );\n};\n\nexport default React.memo(TopMenu);\n","import React from 'react';\nimport * as VisibilitySensor from 'react-visibility-sensor';\nimport { Pagination } from '@gin-betting/match-list';\n\ninterface NeededProps {\n visibilityChange: Pagination.ReturnedPaginationProps['handleVisibilityChange'];\n page: number;\n visibilityInitRef: Pagination.ReturnedPaginationProps['visibilityInitRef'];\n}\n\nexport const CustomVisibilitySensor: React.SFC> = ({\n visibilityChange = () => null,\n page = 0,\n visibilityInitRef = () => null,\n}) => {\n return (\n \n {() => (\n \n )}\n \n );\n};\n","import React from 'react';\n\nimport './fixtureData.scss';\n\ninterface Props {\n firstIcon?: JSX.Element | null;\n secondIcon?: JSX.Element | null;\n thirdIcon?: JSX.Element | null;\n text?: string | null;\n subText?: string | null;\n}\n\nconst FixtureData: React.FC = ({\n firstIcon,\n secondIcon,\n thirdIcon,\n text,\n subText,\n}) => {\n return (\n
\n {firstIcon &&
{firstIcon}
}\n {(text || subText) && (\n
\n {text && {text}}\n {subText && {subText}}\n
\n )}\n\n {secondIcon &&
{secondIcon}
}\n {thirdIcon &&
{thirdIcon}
}\n
\n );\n};\n\nexport default FixtureData;\n","import { useIntl } from 'react-intl';\nimport core, { View } from '@gin-betting/core';\nimport dFnsIsTomorrow from 'date-fns/isTomorrow';\nimport parseISO from 'date-fns/parseISO';\nimport { createStructuredSelector } from 'reselect';\n\nimport { LIVE_SPORTEVENT_STATUSES, SportEventMetaKey } from 'app-constants';\nimport { useMemoSelector } from 'hooks';\nimport globalMsgs from 'messages';\nimport { selectOverviewScores } from 'selectors';\nimport { getMapNameFromMeta } from 'utils';\n\nconst {\n utils: { formatTimeAndDate },\n entities: {\n selectors: { selectMatchMeta },\n },\n viewport: {\n selectors: { selectIsSmall },\n },\n} = core;\n\ninterface Input {\n sportEvent: View.Match;\n withDate: boolean;\n}\n\ninterface Output {\n text: string | null;\n subText: string | null;\n}\n\nconst OVER_ROUNDS = 6 as const;\nconst BASE_TOTAL_ROUNDS = 30 as const;\n\nexport default function useFixtureDataCS({\n sportEvent,\n withDate,\n}: Input): Output {\n const { formatMessage } = useIntl();\n const {\n meta,\n isSmall,\n info: { currentMatchPart },\n } = useMemoSelector(makeSelectProps(), {\n matchId: sportEvent.id,\n });\n\n if (!withDate) {\n return {\n text: null,\n subText: null,\n };\n }\n\n const { startTime, status } = sportEvent;\n const isLive = LIVE_SPORTEVENT_STATUSES.includes(status);\n\n if (isLive) {\n const bo = meta.find(item => item.name === SportEventMetaKey.Bo);\n\n const boName = bo?.name || '';\n const boValue = bo?.value || '';\n\n const nameMap = getMapNameFromMeta({\n map: currentMatchPart?.text,\n format: 'long',\n });\n const shotNameMap = getMapNameFromMeta({\n map: currentMatchPart?.text,\n format: 'short',\n });\n\n const boValueWithColon = boValue ? `${boValue}: ` : '';\n const currentRound =\n meta.find(item => item.name === SportEventMetaKey.Round)?.value ||\n '';\n\n return {\n text: `${boName.toUpperCase()}${boValueWithColon} ${\n isSmall ? shotNameMap : nameMap\n }`,\n subText:\n currentRound &&\n `R: ${currentRound}/${getRounds(\n currentRound,\n BASE_TOTAL_ROUNDS\n )}`,\n };\n }\n\n const { date, time, isToday } = formatTimeAndDate(startTime, {\n // => 01.10 / Oct 01\n // dateFormat: isSmall ? 'dd.MM' : 'MMM dd',\n dateFormat: 'MMM dd',\n });\n\n const isTomorrow = dFnsIsTomorrow(parseISO(startTime));\n\n return {\n text: time,\n subText: isToday\n ? formatMessage(globalMsgs.todayText)\n : isTomorrow\n ? formatMessage(globalMsgs.tomorrowText)\n : date,\n };\n}\n\nconst makeSelectProps = () =>\n createStructuredSelector({\n meta: selectMatchMeta,\n isSmall: selectIsSmall,\n info: selectOverviewScores,\n });\n\nconst getRounds = (nowRound: string, totalRounds: number): number => {\n if (totalRounds >= Number(nowRound)) return totalRounds;\n\n const nextTotalRounds = totalRounds + OVER_ROUNDS;\n\n return getRounds(nowRound, nextTotalRounds);\n};\n","import React from 'react';\nimport { View } from '@gin-betting/core';\n\nimport FixtureData from '../../FixtureData';\nimport useFixtureDataCS from './useFixtureDataCS';\n\ninterface Props {\n firstIcon: JSX.Element | null;\n secondIcon: JSX.Element | null;\n sportEvent: View.Match;\n withDate: boolean;\n}\n\nconst FixtureDataCS: React.FC = ({\n firstIcon,\n secondIcon,\n sportEvent,\n withDate,\n}) => {\n const { text: CSText, subText: CSSubtext } = useFixtureDataCS({\n sportEvent,\n withDate,\n });\n\n return (\n \n );\n};\n\nexport default FixtureDataCS;\n","import core, { View } from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport { LIVE_SPORTEVENT_STATUSES, SportEventMetaKey } from 'app-constants';\nimport { useMemoSelector } from 'hooks';\n\nconst {\n entities: {\n selectors: { selectMatchMeta },\n },\n viewport: {\n selectors: { selectIsSmall },\n },\n} = core;\n\ninterface Input {\n sportEvent: View.Match;\n text: string | null;\n}\n\ninterface Output {\n text: string | null;\n}\n\nexport default function useFixtureDataDota({\n sportEvent,\n text,\n}: Input): Output {\n const { meta } = useMemoSelector(makeSelectProps(), {\n matchId: sportEvent.id,\n });\n\n const { status } = sportEvent;\n\n const isLive = LIVE_SPORTEVENT_STATUSES.includes(status);\n\n if (isLive) {\n const bo = meta.find(item => item.name === SportEventMetaKey.Bo);\n\n const boName = bo?.name || '';\n const boValue = bo?.value || '';\n\n const boData =\n boName && boValue\n ? `${boName.toUpperCase()}${boValue.toUpperCase()}:`\n : '';\n\n return {\n text: `${boData}${text || ''}`,\n };\n }\n\n return {\n text,\n };\n}\n\nconst makeSelectProps = () =>\n createStructuredSelector({\n meta: selectMatchMeta,\n isSmall: selectIsSmall,\n });\n","import React from 'react';\nimport { View } from '@gin-betting/core';\n\nimport FixtureData from '../../FixtureData';\nimport useFixtureDataDota from './useFixtureDataDota';\n\ninterface Props {\n firstIcon: JSX.Element | null;\n secondIcon: JSX.Element | null;\n sportEvent: View.Match;\n text: string | null;\n subText: string | null;\n}\n\nconst FixtureDataDota: React.FC = ({\n firstIcon,\n secondIcon,\n sportEvent,\n text,\n subText,\n}) => {\n const { text: dotaText } = useFixtureDataDota({\n sportEvent,\n text,\n });\n\n return (\n \n );\n};\n\nexport default FixtureDataDota;\n","import { App, View } from '@gin-betting/core';\nimport { find } from 'lodash';\n\nimport { SportEventMetaKey } from 'app-constants';\nimport { useMemoSelector } from 'hooks';\nimport { selectOverviewScores } from 'selectors';\n\ninterface Input {\n matchId: string;\n text: string | null;\n subText: string | null;\n}\n\ninterface Output {\n isVar: boolean;\n text: string | null;\n subText: string | null;\n}\n\nconst useFixtureDataFootball = ({ matchId, text, subText }: Input): Output => {\n const { scores, currentMatchPart, meta } = useMemoSelector(\n selectOverviewScores,\n {\n matchId,\n }\n );\n\n const isVar = meta.some(item => item.name === SportEventMetaKey.Var);\n\n if (\n currentMatchPart &&\n currentMatchPart.type === App.MetaTypes.TYPE_PERIOD_PENALTIES\n ) {\n const { home, away } = find(\n scores,\n s => s.type === App.ScoreTypes.TYPE_PERIOD_PENALTIES\n ) as View.ScoreInfo;\n\n return {\n isVar,\n text: `${text} (${home}:${away})`,\n subText: null,\n };\n }\n\n return { isVar, text, subText };\n};\n\nexport default useFixtureDataFootball;\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"var-icon_8075f\",\n \"use\": \"var-icon_8075f-usage\",\n \"viewBox\": \"0 0 14 6\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react';\n\nimport { Icon } from 'components';\nimport FixtureData from '../../FixtureData';\nimport useFixtureDataFootball from './useFixtureDataFootball';\n\nimport varIcon from 'assets/svg/var-icon.svg';\nimport './fixtureDataFootball.scss';\n\ninterface Props {\n matchId: string;\n firstIcon: JSX.Element | null;\n secondIcon: JSX.Element | null;\n text: string | null;\n subText: string | null;\n}\n\nconst FixtureDataFootball: React.FC = ({\n firstIcon,\n secondIcon,\n text,\n subText,\n matchId,\n}) => {\n const {\n isVar,\n text: footballText,\n subText: footballSubtext,\n } = useFixtureDataFootball({ matchId, text, subText });\n\n return (\n : null}\n />\n );\n};\n\nexport default FixtureDataFootball;\n","import { App } from '@gin-betting/core';\n\nimport { useMemoSelector } from 'hooks';\nimport { selectOverviewScores } from 'selectors';\n\ninterface Input {\n matchId: string;\n subText: string | null;\n}\n\ninterface Output {\n subText: string | null;\n}\n\nconst useFixtureIceHockey = ({ matchId, subText }: Input): Output => {\n const { currentMatchPart } = useMemoSelector(selectOverviewScores, {\n matchId,\n });\n\n if (\n currentMatchPart &&\n currentMatchPart.type === App.MetaTypes.TYPE_BULLETS\n ) {\n return {\n subText: null,\n };\n }\n\n return { subText };\n};\n\nexport default useFixtureIceHockey;\n","import React from 'react';\n\nimport FixtureData from '../../FixtureData';\nimport useFixtureIceHockey from './useFixtureIceHockey';\n\ninterface Props {\n matchId: string;\n firstIcon: JSX.Element | null;\n secondIcon: JSX.Element | null;\n text: string | null;\n subText: string | null;\n}\n\nconst FixtureDataIceHockey: React.FC = ({\n matchId,\n firstIcon,\n secondIcon,\n text,\n subText,\n}) => {\n const { subText: iceHockeySubtext } = useFixtureIceHockey({\n subText,\n matchId,\n });\n\n return (\n \n );\n};\n\nexport default FixtureDataIceHockey;\n","import core, { View } from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport { SetState, SportEventMetaKey } from 'app-constants';\nimport { useMemoSelector } from 'hooks';\n\nconst {\n entities: {\n selectors: { selectMatchMeta },\n },\n} = core;\n\ninterface Input {\n text: string | null;\n sportEvent: View.Match;\n}\n\ninterface Output {\n text: string | null;\n}\n\nexport default function useFixtureDataTennis({\n text,\n sportEvent,\n}: Input): Output {\n const { meta } = useMemoSelector(makeSelectProps(), {\n matchId: sportEvent.id,\n });\n\n const setState = meta.find(\n ({ name }) => name === SportEventMetaKey.SetState\n );\n\n return {\n text: setState?.value === SetState.TieBreak ? 'Tie-Break' : text,\n };\n}\n\nconst makeSelectProps = () =>\n createStructuredSelector({\n meta: selectMatchMeta,\n });\n","import React from 'react';\nimport { View } from '@gin-betting/core';\n\nimport FixtureData from '../../FixtureData';\nimport useFixtureDataTennis from './useFixtureDataTennis';\n\ninterface Props {\n firstIcon: JSX.Element | null;\n secondIcon: JSX.Element | null;\n sportEvent: View.Match;\n text: string | null;\n}\n\nconst FixtureDataTennis: React.FC = ({\n firstIcon,\n secondIcon,\n text,\n sportEvent,\n}) => {\n const { text: tennisText } = useFixtureDataTennis({\n text,\n sportEvent,\n });\n\n return (\n \n );\n};\n\nexport default FixtureDataTennis;\n","import { useIntl } from 'react-intl';\nimport core, { View } from '@gin-betting/core';\nimport dFnsIsTomorrow from 'date-fns/isTomorrow';\nimport parseISO from 'date-fns/parseISO';\n\nimport { LIVE_SPORTEVENT_STATUSES } from 'app-constants';\nimport { useMatchTime } from 'hooks';\nimport globalMsgs from 'messages';\n\nconst {\n utils: { formatTimeAndDate },\n} = core;\n\ninterface Input {\n sportEvent: View.Match;\n withDate: boolean;\n}\n\ninterface Output {\n text: string | null;\n subText: string | null;\n}\n\nexport default function useFixtureData({\n sportEvent,\n withDate,\n}: Input): Output {\n const { formatMessage } = useIntl();\n const { currentMatchPart, matchTimeToShow } = useMatchTime({\n matchId: sportEvent.id,\n });\n\n const { startTime, status } = sportEvent;\n\n const isLive = LIVE_SPORTEVENT_STATUSES.includes(status);\n\n if (!withDate) {\n return {\n text: null,\n subText: null,\n };\n }\n\n if (isLive) {\n return {\n text: currentMatchPart || '',\n subText: matchTimeToShow,\n };\n }\n\n const { date, time, isToday } = formatTimeAndDate(startTime, {\n // => 01.10 / Oct 01\n // dateFormat: isSmall ? 'dd.MM' : 'MMM dd',\n dateFormat: 'MMM dd',\n });\n\n const isTomorrow = dFnsIsTomorrow(parseISO(startTime));\n\n return {\n text: time,\n subText: isToday\n ? formatMessage(globalMsgs.todayText)\n : isTomorrow\n ? formatMessage(globalMsgs.tomorrowText)\n : date,\n };\n}\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"stream_c95bc\",\n \"use\": \"stream_c95bc-usage\",\n \"viewBox\": \"0 0 16 16\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React, { useMemo } from 'react';\nimport { Sports } from '@gin-betting/constants';\nimport type { View } from '@gin-betting/core';\n\nimport { Icon } from 'components';\nimport favorite from 'modules/favorite';\nimport FixtureData from './FixtureData';\nimport {\n FixtureDataCS,\n FixtureDataDota,\n FixtureDataFootball,\n FixtureDataIceHockey,\n FixtureDataTennis,\n} from './FixtureDataSports';\nimport useFixtureData from './useFixtureData';\n\nimport stream from 'assets/svg/stream.svg';\nimport './fixtureDataContainer.scss';\n\nconst {\n components: { ToggleFavoriteButton },\n} = favorite;\n\ninterface Props {\n sportEvent: View.Match;\n isStreamAvailable: boolean;\n withDate: boolean;\n}\n\nconst FixtureContainer: React.FC = ({\n sportEvent,\n isStreamAvailable,\n withDate,\n}) => {\n const { text, subText } = useFixtureData({ sportEvent, withDate });\n const { id: matchId, sportId } = sportEvent;\n\n const firstIcon = useMemo((): JSX.Element => {\n return ;\n }, [matchId]);\n\n const secondIcon = useMemo((): JSX.Element | null => {\n return isStreamAvailable ? (\n \n ) : null;\n }, [isStreamAvailable]);\n\n const fixtureDataSport: { [key: string]: JSX.Element } = {\n [Sports.FOOTBALL]: (\n \n ),\n [Sports.ESPORTS_COUNTER_STRIKE]: (\n \n ),\n [Sports.ESPORTS_DOTA_2]: (\n \n ),\n [Sports.ICE_HOCKEY]: (\n \n ),\n [Sports.TENNIS]: (\n \n ),\n [Sports.ESPORTS_TENNIS]: (\n \n ),\n };\n\n return (\n
\n {fixtureDataSport[sportId] || (\n \n )}\n
\n );\n};\n\nexport default FixtureContainer;\n","import core, { View } from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport { SportEventMetaKey } from 'app-constants';\nimport { useMemoSelector } from 'hooks';\n\nconst {\n entities: {\n selectors: { selectMatchCompetitorsValid, selectMatchMetaValueByName },\n },\n} = core;\n\ninterface Input {\n sportEventId: string;\n}\n\ninterface Output {\n competitorsValid: View.CompetitorsValid;\n isHomeServer: boolean;\n isAwayServer: boolean;\n}\n\nconst useTeamsTitle = ({ sportEventId }: Input): Output => {\n const { competitorsValid, server } = useMemoSelector(makeSelectProps(), {\n matchId: sportEventId,\n metaName: SportEventMetaKey.Server,\n });\n\n const isHomeServer = server === 'home';\n const isAwayServer = server === 'away';\n\n return {\n competitorsValid,\n isHomeServer,\n isAwayServer,\n };\n};\n\nexport default useTeamsTitle;\n\nconst makeSelectProps = () => {\n return createStructuredSelector({\n competitorsValid: selectMatchCompetitorsValid,\n server: selectMatchMetaValueByName,\n });\n};\n","import React, { Fragment, memo } from 'react';\n\nimport { TeamsTitleColumn, TeamsTitleRow } from 'ui-lib';\nimport useTeamsTitle from './useTeamsTitle';\n\ninterface Props {\n isPrematchMobileView: boolean;\n startTime: string;\n sportEventId: string;\n}\n\nconst TeamsTitle: React.FC = ({\n isPrematchMobileView,\n startTime,\n sportEventId,\n}) => {\n const { competitorsValid, isHomeServer, isAwayServer } = useTeamsTitle({\n sportEventId,\n });\n\n return (\n \n {isPrematchMobileView ? (\n \n ) : (\n \n )}\n \n );\n};\n\nexport default memo(TeamsTitle);\n","import core, { View } from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport { useMemoSelector } from 'hooks';\n\nconst {\n entities: {\n selectors: { selectMarket },\n },\n} = core;\n\ninterface Input {\n marketId: string;\n}\n\ninterface Output {\n market: View.Market | null;\n}\n\nexport default function useMarket({ marketId }: Input): Output {\n const { market } = useMemoSelector(makeSelectProps(), { marketId });\n\n return {\n market,\n };\n}\n\nconst makeSelectProps = () => {\n return createStructuredSelector({\n market: selectMarket,\n });\n};\n","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport { API, View } from '@gin-betting/core';\n\nimport globalMsgs from 'messages';\nimport UserDevice from 'services/user-device';\nimport { OddButton } from 'ui-lib';\nimport { topMarketsVerify } from 'utils';\nimport useMarket from './useMarket';\n\nimport './market.scss';\n\nconst { isMobileDefault } = topMarketsVerify;\n\ninterface Props {\n marketId: string;\n withStub?: boolean;\n withName: boolean;\n}\n\nconst MARKET_STUB: Omit = {\n id: '',\n priority: 0,\n status: API.MarketStatus.SUSPENDED,\n odds: ['', ''],\n specifiers: [],\n typeId: -999,\n tags: [],\n};\n\nconst Market: React.FC = ({ marketId, withStub, withName }) => {\n const { formatMessage } = useIntl();\n const { market: realMarket } = useMarket({ marketId });\n const isMobile = UserDevice.getInstance()?.isDeviceMobile();\n\n let market =\n realMarket ||\n (withStub\n ? { ...MARKET_STUB, name: formatMessage(globalMsgs.marketWinner) }\n : null);\n\n if (isMobile && realMarket && !isMobileDefault(realMarket)) {\n market = {\n ...MARKET_STUB,\n name: formatMessage(globalMsgs.marketWinner),\n };\n }\n\n if (!market) return null;\n\n const { name, odds } = market;\n\n return (\n
\n {withName && (\n
\n {name}\n
\n )}\n
\n {odds.map((oddId, idx) => (\n \n ))}\n
\n
\n );\n};\n\nexport default React.memo(Market);\n","import matchList from '@gin-betting/match-list';\nimport { List } from 'immutable';\nimport { createStructuredSelector } from 'reselect';\n\nimport { useMemoSelector } from 'hooks';\n\nconst {\n selectors: { selectTopMarketIdsByMatchId },\n} = matchList;\n\ninterface Input {\n sportEventId: string;\n}\n\ninterface Output {\n topMarketIds: List;\n}\n\nexport default function useTopMarkets({ sportEventId }: Input): Output {\n const { topMarketIds = List() } = useMemoSelector(makeSelectProps(), {\n matchId: sportEventId,\n });\n\n return {\n topMarketIds,\n };\n}\n\nconst makeSelectProps = () => {\n return createStructuredSelector({\n topMarketIds: selectTopMarketIdsByMatchId,\n });\n};\n","import React from 'react';\n\nimport Market from '../Market';\nimport useTopMarkets from './useTopMarkets';\n\nimport './topMarkets.scss';\n\ninterface Props {\n sportEventId: string;\n count: number;\n withName: boolean;\n}\n\nconst MARKET_ID_STUB = 'stub-market-id' as const;\n\nconst TopMarkets: React.FC = ({ sportEventId, count, withName }) => {\n let { topMarketIds } = useTopMarkets({ sportEventId });\n\n if (topMarketIds.count() === 0) {\n topMarketIds = topMarketIds.push(MARKET_ID_STUB);\n }\n\n return (\n
\n {topMarketIds.slice(0, count).map(marketId => (\n \n ))}\n
\n );\n};\n\nexport default React.memo(TopMarkets);\n","import core, { View } from '@gin-betting/core';\nimport { createSelector, createStructuredSelector } from 'reselect';\n\nimport { useMemoSelector } from 'hooks';\n\nconst {\n entities: {\n selectors: {\n selectMatch,\n makeMatchSelector,\n makeTournamentSelector,\n selectPreviewTournamentIdFromMatch,\n },\n },\n} = core;\n\ninterface Input {\n sportEventId: string;\n prevSportEventId: string | undefined;\n}\n\ninterface Output {\n hasHeader: boolean;\n tournament: View.Tournament | null;\n}\n\nconst useTournamentHeader = ({\n sportEventId,\n prevSportEventId,\n}: Input): Output => {\n const { hasHeader, tournament } = useMemoSelector(makeSelectProps(), {\n matchId: sportEventId,\n prevMatchId: prevSportEventId,\n });\n\n return {\n hasHeader,\n tournament,\n };\n};\n\nexport default useTournamentHeader;\n\nconst makeSelectProps = () => {\n const selectTournament = makeTournamentSelector({\n selectTournamentId: selectPreviewTournamentIdFromMatch,\n });\n\n const selectTournamentIdByPrevMatch = makeMatchSelector({\n propsToPick: ['tournament'],\n selectMatchId: (_, props: { prevMatchId: string }) => props.prevMatchId,\n });\n\n const selectHasHeader = createSelector(\n selectMatch,\n selectTournamentIdByPrevMatch,\n (match, prevMatch) =>\n !match || !prevMatch || match.tournament !== prevMatch.tournament\n );\n\n return createStructuredSelector({\n hasHeader: selectHasHeader,\n tournament: selectTournament,\n });\n};\n","import React, { memo } from 'react';\n\nimport { TournamentName } from 'components';\nimport { ParentPath } from 'types';\nimport useTournamentHeader from './useTournamentHeader';\n\nimport './tournamentHeader.scss';\n\ninterface Props {\n sportId: string;\n route: ParentPath;\n sportEventId: string;\n prevSportEventId: string | undefined;\n}\n\nconst TournamentHeader: React.FC = ({\n sportId,\n route,\n prevSportEventId,\n sportEventId,\n}) => {\n const { hasHeader, tournament } = useTournamentHeader({\n prevSportEventId,\n sportEventId,\n });\n\n if (!hasHeader || !tournament) return null;\n\n return (\n
\n \n
\n );\n};\n\nexport default memo(TournamentHeader);\n","import core, { View } from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport { BettingWidgets, SportEventMetaKey } from 'app-constants';\nimport { useMemoSelector, useWidgetSettings } from 'hooks';\nimport { selectIsSportEventViewable, selectRouteBySportEvent } from 'selectors';\nimport { ParentPath } from 'types';\nimport { checkIsMatchTrackerDisabled, checkIsSportEventViewable } from 'utils';\n\nconst {\n entities: {\n selectors: { selectMatch },\n },\n viewport: {\n selectors: { makeViewportSelector },\n },\n} = core;\n\ninterface Input {\n sportEventId: string;\n}\n\ninterface Output {\n match: View.Match | null;\n route: ParentPath;\n isStreamAvailable: boolean;\n isExtraSmall: boolean;\n isSmall: boolean;\n isMedium: boolean;\n}\n\nconst useOverviewRow = ({ sportEventId }: Input): Output => {\n const { disableMatchTracker } = useWidgetSettings({\n widget: BettingWidgets.STREAM,\n });\n const {\n match,\n route,\n sportEventViewable: { hasValidBetradarId, hasValidStream },\n breakpoints,\n } = useMemoSelector(makeSelectProps(), {\n matchId: sportEventId,\n metaName: SportEventMetaKey.Server,\n });\n\n const { extraSmall, small, medium } = breakpoints;\n\n const isStreamAvailable = checkIsSportEventViewable({\n hasValidStream,\n hasValidBetradarId,\n isMatchTrackerDisabled: checkIsMatchTrackerDisabled(\n disableMatchTracker,\n match?.sportId\n ),\n });\n\n return {\n isStreamAvailable,\n match,\n route,\n isSmall: small,\n isMedium: medium,\n isExtraSmall: extraSmall,\n };\n};\n\nexport default useOverviewRow;\n\nconst makeSelectProps = () => {\n return createStructuredSelector({\n match: selectMatch,\n route: selectRouteBySportEvent,\n sportEventViewable: selectIsSportEventViewable,\n breakpoints: makeViewportSelector('lessThanOrEqual'),\n });\n};\n","import React from 'react';\nimport { App, GQL } from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport { LIVE_SPORTEVENT_STATUSES } from 'app-constants';\nimport {\n SmartLink,\n SportEventInViewSubscription,\n SportEventSeoMicromarking,\n} from 'components';\nimport { AnalyticAttrs, AnalyticAttrsCtx, Category } from 'services/analytics';\nimport { Score } from 'ui-lib';\nimport FixtureData from './FixtureData';\nimport TeamsTitle from './TeamsTitle';\nimport TopMarkets from './TopMarkets';\nimport TournamentHeader from './TournamentHeader';\nimport useOverviewRow from './useOverviewRow';\n\nimport './overviewRow.scss';\n\ninterface Props {\n sportEventId: string;\n prevSportEventId: string | undefined;\n}\n\nconst ANALYTICS: Partial = {\n 'data-category': Category.LineSportEvent,\n};\n\nconst OverviewRow: React.FC = ({ sportEventId, prevSportEventId }) => {\n const {\n match,\n route,\n isStreamAvailable,\n isExtraSmall,\n isSmall,\n isMedium,\n } = useOverviewRow({ sportEventId });\n\n if (!match) return null;\n\n const { slug, version, sportId, status, startTime } = match;\n\n const marketCount = isSmall ? 1 : isMedium ? 2 : 3;\n\n const linkToMatch = `${route}${App.Routes.MATCH}${slug}`;\n const isLive = LIVE_SPORTEVENT_STATUSES.includes(status);\n const isPrematchMobileView = !isLive && isExtraSmall;\n const isResulted = GQL.SportEventStatus.ENDED === status;\n\n return (\n \n \n \n \n \n
\n
\n \n
\n
\n \n
\n
\n {(isLive || isResulted) && (\n
\n \n
\n )}\n
\n \n
\n \n
\n );\n};\n\nexport default OverviewRow;\n","import React from 'react';\nimport { API, View } from '@gin-betting/core';\nimport cn from 'classnames';\nimport cd from 'debug';\n\nimport { MarketTitle, VS } from 'components';\nimport globalMessages from 'messages';\nimport { AsyncOddButton } from 'modules/betslip/async';\n\nimport './MarketDefault.scss';\n\nconst debug = cd('match-list:components:MarketDefault');\n\ninterface Props {\n market?: View.Market;\n hasMatchHeader?: boolean;\n hasVS?: boolean;\n isDefaultName?: boolean;\n}\n\nexport default class MarketDefault extends React.Component {\n static defaultProps: Required> = {\n market: {\n id: '',\n priority: 0,\n status: API.MarketStatus.SUSPENDED,\n odds: ['', ''],\n name: '',\n specifiers: [],\n typeId: -999,\n tags: [],\n },\n };\n\n renderOdds = (): JSX.Element[] => {\n const { market, hasVS } = this.props;\n const { odds } = market || { odds: [] };\n\n const oddsComponents = odds.slice(0, 3).map((oddId, idx) => {\n return (\n 2,\n })}\n key={oddId || idx}\n className=\"__app-MarketDefault-button\"\n >\n \n \n );\n });\n\n if (hasVS && oddsComponents.length === 2) {\n oddsComponents.splice(\n 1,\n 0,\n
\n \n
\n );\n }\n\n return oddsComponents;\n };\n\n render() {\n debug('render', this.props);\n const { market, hasMatchHeader, isDefaultName } = this.props;\n\n return (\n \n {hasMatchHeader && (\n \n )}\n {this.renderOdds()}\n \n );\n }\n}\n","import React from 'react';\n\nimport './MarketValue.scss';\n\ninterface OwnProps {\n value: string;\n}\n\ntype Props = OwnProps;\n\nconst MarketValue: React.FC = ({ value }) => (\n
\n {value || '-'}\n
\n);\n\nexport default MarketValue;\n","import React from 'react';\nimport cd from 'debug';\n\nimport { AsyncOddButton } from 'modules/betslip/async';\nimport { MarketValue } from '../MarketsValue';\n\nimport './MarketHcpRow.scss';\n\nconst debug = cd('match-list:components:MarketHcpRow');\n\ninterface OwnProps {\n oddId: string | undefined;\n value: string;\n}\n\ntype Props = OwnProps;\n\nconst MarketHcpRow: React.FC = props => {\n debug('render', props);\n\n const { value, oddId } = props;\n\n return (\n
\n \n
\n \n
\n
\n );\n};\n\nexport default MarketHcpRow;\n","import React from 'react';\nimport { API, View } from '@gin-betting/core';\nimport cd from 'debug';\n\nimport { TITLES_BY_SPECIFIER } from 'app-constants';\nimport { MarketTitle } from 'components';\nimport { getSignedSpecifierPair } from 'utils';\nimport { MarketHcpRow } from '../MarketHcpRow';\nimport { getHcpSpecifier } from '../MarketsValue/utils';\n\nimport './MarketHcp.scss';\n\nconst debug = cd('match-list:components:MarketHcp');\n\nexport interface OwnProps {\n market: View.Market;\n hasMatchHeader?: boolean;\n isDefaultName?: boolean;\n}\n\ntype Props = OwnProps;\n\nconst MarketHcp: React.FC = props => {\n debug('render', props);\n const { market, hasMatchHeader, isDefaultName } = props;\n\n const { specifiers, name, odds } = market;\n\n const specifier = getHcpSpecifier(specifiers);\n\n const [firstValue, secondValue] = getSignedSpecifierPair(\n specifier ? specifier.value : null\n );\n\n return (\n
\n {hasMatchHeader && (\n \n )}\n \n \n
\n );\n};\n\nconst defaultProps: Required> = {\n market: {\n id: '',\n priority: 0,\n status: API.MarketStatus.SUSPENDED,\n odds: ['', ''],\n name: '',\n specifiers: [],\n typeId: -999,\n tags: [],\n },\n};\n\nMarketHcp.defaultProps = defaultProps;\n\nexport default React.memo(MarketHcp);\n","import { SpecifierName } from '@gin-betting/constants';\n\nimport { GetSpecifierHandler } from '../types';\n\nexport const getHcpSpecifier: GetSpecifierHandler = specifiers =>\n specifiers.find(s => s.name === SpecifierName.hcp);\nexport const getTotalSpecifier: GetSpecifierHandler = specifiers =>\n specifiers.find(s => s.name === SpecifierName.total);\n","import { WrappedComponentProps } from 'react-intl';\nimport { View } from '@gin-betting/core';\nimport { getOutcomesFromOddNames } from '@gin-betting/table-view/outcomes';\n\nimport {\n MATCHES_LIMIT_PER_PAGE,\n MOBILE_MATCHES_LIMIT_PER_PAGE,\n NEWS_MATCHES_LIMIT_PER_PAGE,\n} from 'app-constants';\nimport globalMessages from 'messages';\nimport UserDevice from 'services/user-device';\nimport { checkIfNewsPage } from 'utils';\n\ntype Odds = Array>;\n\ninterface OverUnder {\n over: Odds[number];\n under: Odds[number];\n}\n\nexport const getOverAndUnderOdds = (\n odds: Odds,\n formatMessage: WrappedComponentProps['intl']['formatMessage']\n): OverUnder => {\n return {\n ...findByKey({\n key: 'over',\n odds,\n formatMessage,\n }),\n ...findByKey({\n key: 'under',\n odds,\n formatMessage,\n }),\n };\n};\n\nfunction findByKey({\n key,\n odds,\n formatMessage,\n}: {\n key: K;\n odds: Odds;\n formatMessage: WrappedComponentProps['intl']['formatMessage'];\n}): Pick {\n // NOTE:\n // ATTENTION: Message from intl should be equal with odd outcome otherwise total market ignored\n const msg = formatMessage(globalMessages[key]);\n\n // TODO: don't mutate \"odds\"\n const overUnderOdd = odds.find(odd => {\n const [outcome] = getOutcomesFromOddNames([odd], null);\n\n if (!outcome) return false;\n\n const isOverUnderOdd = [msg, key]\n .map(str => str.toLowerCase())\n .includes(outcome.toLowerCase());\n\n if (isOverUnderOdd) {\n odd.name = outcome;\n }\n\n return isOverUnderOdd;\n }) ?? { id: '', name: msg };\n\n return {\n [key]: overUnderOdd,\n } as any;\n}\n\nexport const getMatchesLimitPerPage = () =>\n checkIfNewsPage()\n ? NEWS_MATCHES_LIMIT_PER_PAGE\n : UserDevice.getInstance()?.isDeviceMobile()\n ? MOBILE_MATCHES_LIMIT_PER_PAGE\n : MATCHES_LIMIT_PER_PAGE;\n","import { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport core from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport { State } from 'types';\n\nconst { makeOddsByMarketSelector } = core.entities.selectors;\nconst { selectMarket } = core.entities.selectors;\n\ninterface Params {\n marketId: string;\n}\n\nconst makePropsSelector = () => {\n const selectOdds = makeOddsByMarketSelector({\n marketSelector: selectMarket,\n propsToPick: ['id', 'name'],\n });\n\n return createStructuredSelector({ odds: selectOdds, market: selectMarket });\n};\n\nfunction useMarketTotal(params: Params): ReturnType {\n const selectProps = useMemo(makePropsSelector, []);\n\n return useSelector>(state =>\n selectProps(state, params)\n );\n}\n\nexport default useMarketTotal;\n","import React from 'react';\nimport { injectIntl, useIntl, WrappedComponentProps } from 'react-intl';\nimport { View } from '@gin-betting/core';\nimport cd from 'debug';\n\nimport { TITLES_BY_SPECIFIER } from 'app-constants';\nimport { AsyncOddButton } from 'modules/betslip/async';\nimport { getOverAndUnderOdds } from '../../../utils';\nimport { MarketValue } from '../MarketsValue';\nimport useMarketTotal from './useMarketTotal';\n\nimport './MarketTotalRow.scss';\n\nconst debug = cd('match-list:components:MarketTotalRow');\n\ninterface OwnProps {\n selectedMarketId: string;\n value: string;\n}\n\ntype Props = OwnProps & WrappedComponentProps;\n\nconst MarketTotalRow: React.FC = props => {\n debug('render', props);\n\n const {\n intl: { formatMessage },\n value,\n selectedMarketId,\n } = props;\n\n const { odds } = useMarketTotal({ marketId: selectedMarketId });\n\n const { over, under } = getOverAndUnderOdds(odds, formatMessage);\n\n const asyncButtonOverProps = {\n oddId: over.id,\n showResult: true,\n };\n const asyncButtonUnderProps = {\n oddId: under.id,\n showResult: true,\n };\n\n return (\n \n
\n \n
\n
\n \n
\n \n
\n
\n \n
\n
\n
\n );\n};\n\ntype TitleProps = {\n over: Pick;\n under: Pick;\n};\n\nconst MarketTotalTitle: React.FC = ({ over, under }) => {\n const { formatMessage } = useIntl();\n const title = formatMessage(TITLES_BY_SPECIFIER.total);\n\n return (\n \n \n {title}\n \n \n {over.name}\n \n \n {under.name}\n \n \n );\n};\n\nexport default injectIntl(MarketTotalRow);\n","import React from 'react';\nimport { API, View } from '@gin-betting/core';\nimport cd from 'debug';\n\nimport { TITLES_BY_SPECIFIER } from 'app-constants';\nimport { MarketTitle } from 'components';\nimport { getTotalSpecifier } from '../MarketsValue/utils';\nimport { MarketTotalRow } from '../MarketTotalRow';\n\nimport './MarketTotal.scss';\n\nconst debug = cd('match-list:components:MarketTotal');\n\ninterface OwnProps {\n market: View.Market;\n hasMatchHeader?: boolean;\n isDefaultName?: boolean;\n}\n\ntype Props = OwnProps;\n\nconst MarketTotal: React.FC = props => {\n debug('render', props);\n const { market, hasMatchHeader, isDefaultName } = props;\n\n const { id, specifiers, name } = market;\n\n const specifier = getTotalSpecifier(specifiers);\n const specifierValue = specifier ? specifier.value : '';\n\n return (\n
\n {hasMatchHeader && (\n \n )}\n \n
\n );\n};\n\nconst defaultProps: Required> = {\n market: {\n id: '',\n priority: 0,\n status: API.MarketStatus.SUSPENDED,\n odds: ['', ''],\n name: '',\n specifiers: [],\n typeId: -999,\n tags: [],\n },\n};\n\nMarketTotal.defaultProps = defaultProps;\n\nexport default MarketTotal;\n","import matchList from '@gin-betting/match-list';\n\nimport { TOP_MARKETS_TYPE, TOP_MARKETS_TYPE_MAPPING } from 'app-constants';\nimport { topMarketsVerify } from 'utils';\nimport MarketDefault from './components/SportEventRow/Markets/MarketDefault';\nimport MarketHcp from './components/SportEventRow/Markets/MarketHcp';\nimport MarketTotal from './components/SportEventRow/Markets/MarketTotal';\n\nconst {\n utils: { makeMarketComponent },\n} = matchList;\nconst { isDefault, isHCP, isTotal } = topMarketsVerify;\n\nconst MarketDefaultContainer = makeMarketComponent({\n condition: isDefault,\n Component: MarketDefault,\n});\n\n/* TODO don`t use any */\nconst MarketHcpContainer = makeMarketComponent({\n condition: isHCP,\n Component: MarketHcp,\n});\n\nconst MarketTotalContainer = makeMarketComponent({\n condition: isTotal,\n Component: MarketTotal,\n});\n\nexport function getTopMarketComponentsBySport(\n sportId: string,\n options: {\n count: number;\n withStubs?: boolean;\n }\n) {\n // TODO: Change to returning strings\n const { count, withStubs } = options;\n\n const topMarketTypeForSport =\n TOP_MARKETS_TYPE_MAPPING[\n sportId as keyof typeof TOP_MARKETS_TYPE_MAPPING\n ];\n\n if (\n !withStubs &&\n (!topMarketTypeForSport ||\n topMarketTypeForSport === TOP_MARKETS_TYPE.SINGLE)\n )\n return [MarketDefaultContainer];\n\n switch (count) {\n case 1: {\n return [MarketDefaultContainer];\n }\n\n case 2: {\n return [MarketDefaultContainer, MarketTotalContainer];\n }\n\n default: {\n return [\n MarketDefaultContainer,\n MarketHcpContainer,\n MarketTotalContainer,\n ];\n }\n }\n}\n","import core, { View } from '@gin-betting/core';\nimport matchList from '@gin-betting/match-list';\nimport createCachedSelector from 're-reselect';\n\nconst {\n entities: {\n selectors: { selectMarkets, selectMatchIdFromProps },\n },\n} = core;\n\nconst {\n selectors: { selectTopMarketIdsByMatchId },\n} = matchList;\n\nexport const selectTopMarketsByMatchId = createCachedSelector(\n selectTopMarketIdsByMatchId,\n selectMarkets,\n (marketIds, markets): View.Market[] => {\n if (!marketIds) return [];\n\n return (\n marketIds\n .toArray()\n .filter(marketId => markets.has(marketId))\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n .map(marketId => markets.get(marketId)!)\n );\n }\n)(selectMatchIdFromProps);\n","import React, { Fragment } from 'react';\nimport core from '@gin-betting/core';\nimport cd from 'debug';\nimport { createStructuredSelector } from 'reselect';\n\nimport { usePureSelector } from 'hooks';\nimport { State } from 'types';\nimport { getTopMarketComponentsBySport } from '../../../getTopMarkets';\nimport { selectTopMarketsByMatchId } from '../../../selectors';\n\nconst {\n utils: { checkEquality },\n} = core;\n\nconst debug = cd('match-list:components:TopMarkets');\n\ninterface Props {\n matchId: string;\n hasMatchHeader: boolean;\n hasVS?: boolean;\n sportId: string;\n count: number;\n isDefaultName?: boolean;\n withStubs?: boolean;\n}\n\nconst TopMarketsContainer: React.FC = props => {\n debug('render', props);\n\n const {\n hasMatchHeader,\n hasVS,\n sportId,\n count,\n matchId,\n isDefaultName,\n withStubs,\n } = props;\n\n const { topMarkets } = usePureSelector((s: State) =>\n selectProps(s, { matchId })\n );\n\n const topMarketComponentsBySport = getTopMarketComponentsBySport(sportId, {\n count,\n withStubs,\n });\n\n const commonProps = {\n hasMatchHeader,\n hasVS,\n matchId,\n isDefaultName,\n };\n\n const renderMarkets: JSX.Element[] = [];\n\n topMarketComponentsBySport.reduce((acc, item, idx) => {\n const { nextMarkets, ReactNode } = item(acc, commonProps, idx);\n renderMarkets.push(ReactNode);\n\n return nextMarkets;\n }, topMarkets);\n\n return {renderMarkets};\n};\n\nconst selectProps = createStructuredSelector({\n topMarkets: selectTopMarketsByMatchId,\n});\n\nexport default React.memo(TopMarketsContainer, (prevProps, nextProps) =>\n checkEquality(prevProps, nextProps, {\n maxDepth: 3,\n excludedKeys: ['odds', 'specifiers'],\n })\n);\n","import { useDebugValue, useEffect, useState } from 'react';\nimport core, { App, View } from '@gin-betting/core';\nimport { sum } from 'lodash';\n\nimport { useMemoSelector } from 'hooks';\nimport { CONFIG_BY_SPORTS } from 'scoreMetaConfig';\nimport { selectFilteredScores } from 'selectors';\nimport { MatchPartInfo } from 'types';\n\nconst {\n viewport: {\n selectors: { selectIsExtraSmall },\n },\n entities: {\n selectors: { selectMatchMetaValueByName },\n },\n} = core;\n\ninterface Input {\n matchId: string;\n sportId: string;\n numberOfShowed: number;\n isEnded?: boolean;\n}\n\ninterface Output {\n meta: View.Meta[];\n extra: View.ScoreInfo[];\n showed: View.ScoreInfo[];\n isServerKnown: boolean;\n isHomeServer: boolean;\n isAwayServer: boolean;\n winner: 'home' | 'away' | '';\n isExtendable: boolean;\n isFullView: boolean;\n toggleView: () => void;\n currentMatchPart: MatchPartInfo | null;\n scoresFullLength: number;\n}\n\nconst useScore = ({\n matchId,\n sportId,\n numberOfShowed,\n isEnded,\n}: Input): Output => {\n const config = CONFIG_BY_SPORTS[sportId];\n const { scores, currentMatchPart, meta } = useMemoSelector(\n selectFilteredScores,\n {\n matchId,\n }\n );\n const isExtraSmall = useMemoSelector(selectIsExtraSmall);\n const adjustedScores = isExtraSmall\n ? scores.filter(s => s.type === App.ScoreTypes.TYPE_TOTAL)\n : scores;\n\n const server = useMemoSelector(selectMatchMetaValueByName, {\n matchId,\n metaName: 'server',\n });\n\n const extra = [...adjustedScores];\n\n const defaultTotal: View.ScoreInfo = {\n home: '',\n away: '',\n type: App.ScoreTypes.TYPE_TOTAL,\n indexNumber: 0,\n };\n\n const total = extra.splice(\n extra.findIndex(i => i.type === App.ScoreTypes.TYPE_TOTAL),\n 1\n )[0];\n\n const totalScore = total || defaultTotal;\n const showed = extra.splice(-numberOfShowed);\n showed.push(totalScore);\n\n const extraNumber = extra.length;\n const [isExtendable, changeIsExtendable] = useState(extraNumber > 0);\n const [isFullView, changeIsFullView] = useState(false);\n const toggleView = () => changeIsFullView(prev => !prev);\n\n useEffect(() => {\n changeIsExtendable(extraNumber > 0);\n }, [extraNumber]);\n\n const { home, away } = totalScore;\n\n const winner =\n isEnded && !!home && !!away && sum([+home, +away]) !== 0\n ? +home > +away\n ? 'home'\n : 'away'\n : '';\n\n const isHomeServer = server === 'home';\n const isAwayServer = server === 'away';\n\n const isServerKnown =\n !!config?.scoresOrder && (isHomeServer || isAwayServer);\n\n useDebugValue({ showed, extra });\n\n return {\n extra,\n showed,\n isServerKnown,\n isHomeServer,\n isAwayServer,\n winner,\n isExtendable,\n isFullView,\n toggleView,\n currentMatchPart,\n scoresFullLength: scores.length,\n meta,\n };\n};\n\nexport default useScore;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Sports } from '@gin-betting/constants';\nimport { App, View } from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport globalMessages from 'messages';\nimport { MatchPartInfo } from 'types';\nimport { getMapNameFromMeta, getScoreTitle } from 'utils';\nimport useScore from './useScore';\n\nimport './Score.scss';\n\ninterface Props {\n isEnded?: boolean;\n numberOfShowed: number;\n hasMatchHeader?: boolean;\n sportId: string;\n matchId: string;\n}\n\nconst Score: React.FC = ({\n isEnded,\n hasMatchHeader,\n numberOfShowed,\n sportId,\n matchId,\n}) => {\n const {\n extra,\n showed,\n isServerKnown,\n isHomeServer,\n isAwayServer,\n winner,\n isExtendable,\n isFullView,\n toggleView,\n currentMatchPart,\n meta,\n } = useScore({ matchId, sportId, isEnded, numberOfShowed });\n\n const scoresFullLength = showed.length + extra.length;\n\n return (\n 8,\n })}\n className=\"__app-Score2-container\"\n >\n {hasMatchHeader && (\n
\n \n
\n )}\n
\n \n {isExtendable && (\n
\n
\n
\n )}\n {isServerKnown && (\n
\n \n \n
\n )}\n {extra.map(score => (\n \n ))}\n
\n
\n
\n {showed.map(score => (\n \n ))}\n
\n \n );\n};\n\nconst ScoreItem: React.FC<{\n meta: View.Meta[];\n score: View.ScoreInfo;\n currentMatchPart: MatchPartInfo | null;\n sportId: string;\n}> = ({ score, currentMatchPart, meta, sportId }) => {\n const isTotal = score.type === App.ScoreTypes.TYPE_TOTAL;\n\n const name = isTotal\n ? 'Total'\n : getScoreTitle({ score, currentMatchPart, meta });\n\n return (\n \n
{score.home}
\n
\n {sportId === Sports.ESPORTS_COUNTER_STRIKE &&\n score.type === App.ScoreTypes.TYPE_MAP\n ? getMapNameFromMeta({\n format: 'short',\n map: name,\n })\n : name}\n
\n
{score.away}
\n \n );\n};\n\nexport default Score;\n","import React from 'react';\n\nimport { MarketsCount, StreamLink } from 'components';\nimport type { Analytics } from 'services/analytics';\n\nimport './streamMarketCount.scss';\n\ninterface Props {\n topMarketsCount: number;\n streamWithTitle: boolean;\n marketsCount: number | undefined;\n linkToMatch: string | null;\n isResultPage?: boolean;\n isLive: boolean;\n toggleStream?: () => void;\n isViewerOpen: boolean;\n isSportEventViewable: boolean;\n analytics?: Analytics;\n}\n\nconst StreamMarketCount: React.FC = props => {\n const {\n marketsCount,\n linkToMatch,\n streamWithTitle,\n topMarketsCount,\n isResultPage = false,\n isLive,\n isViewerOpen,\n isSportEventViewable,\n analytics,\n toggleStream,\n } = props;\n\n const hasStreamLink = isSportEventViewable && (!isResultPage || isLive);\n\n return (\n \n {hasStreamLink && (\n \n )}\n\n
\n \n
\n \n );\n};\n\nexport default StreamMarketCount;\n","import React, { Fragment } from 'react';\nimport { connect, DispatchProp } from 'react-redux';\nimport core, { App, GQL, View, Viewport } from '@gin-betting/core';\nimport cn from 'classnames';\nimport cd from 'debug';\nimport { difference, noop } from 'lodash';\nimport { compose } from 'redux';\nimport { createSelector } from 'reselect';\nimport { Arg1 } from 'tsargs';\n\nimport { LIVE_SPORTEVENT_STATUSES, SELECTOR_STUB } from 'app-constants';\nimport {\n MarketsCount,\n MatchDateTime,\n MiddlePartMatchRow,\n SmartLink,\n SportEventInViewSubscription,\n SportEventSeoMicromarking,\n StreamLink,\n TeamsTitle,\n TournamentName,\n} from 'components';\nimport {\n withStreamModule,\n WithStreamModuleTypes,\n withStreamWidgetSettings,\n WithStreamWidgetSettingsTypes,\n} from 'hoc';\nimport { AsyncOddButton } from 'modules/betslip/async';\nimport favorite from 'modules/favorite';\nimport { AsyncStream } from 'modules/stream/async';\nimport {\n selectBetradarId,\n selectIsSportEventViewable,\n selectRouteBySportEvent,\n} from 'selectors';\nimport { Action, AnalyticAttrsCtx, Category } from 'services/analytics';\nimport type { ParentPath, State as AppState } from 'types';\nimport {\n checkIfNewsPage,\n checkIsMatchTrackerDisabled,\n checkIsSportEventViewable,\n topMarketsVerify,\n} from 'utils';\nimport { getTopMarketComponentsBySport } from '../../getTopMarkets';\nimport { selectTopMarketsByMatchId } from '../../selectors';\nimport { TopMarketsContainer } from './Markets';\nimport Score from './Score';\nimport StreamMarketCount from './StreamMarketCount';\n\nimport './sportEventRow.scss';\n\nconst {\n hocs: { makePure },\n entities: {\n selectors: {\n selectMatchCompetitorsValid,\n makeMatchSelector,\n makeTournamentSelector,\n selectPreviewTournamentIdFromMatch,\n selectMobileMatchStream,\n },\n },\n viewport: {\n selectors: { makeViewportSelector },\n },\n} = core;\nconst { ToggleFavoriteButton } = favorite.components;\nconst { isHCP, isTotal } = topMarketsVerify;\n\nconst debug = cd('match-list:components:MatchRowContainer');\n\nconst matchPropsToPick = [\n 'title' as const,\n 'id' as const,\n 'marketsCount' as const,\n 'sportId' as const,\n 'streams' as const,\n 'liveCoverage' as const,\n 'status' as const,\n 'startTime' as const,\n 'tournament' as const,\n 'score' as const,\n 'slug' as const,\n 'hasMatchLog' as const,\n 'version' as const,\n];\n\nconst tournamentPropsToPick = [\n 'id' as const,\n 'name' as const,\n 'masterId' as const,\n 'slug' as const,\n];\n\ntype Match = Pick;\n\ntype Tournament = Pick;\n\ninterface MappedProps {\n match: Match | null;\n tournament: Tournament | null;\n competitorsValid: View.CompetitorsValid;\n lessThanOrEqual: Viewport.Breakpoints;\n hasHeader: boolean;\n topMarketsCount: number;\n streamUrl: ReturnType;\n markets: ReturnType;\n isStreamOpen: boolean | null;\n isOneMarketView: boolean;\n count: number;\n scoreCount: number;\n hasValidStream: boolean;\n hasValidBetradarId: boolean;\n betradarId: string | null;\n route: ParentPath;\n}\n\ninterface MappedActions {\n addMatchId:\n | WithStreamModuleTypes.StreamModule['actions']['addMatchId']\n | VoidFn;\n deleteMatchId:\n | WithStreamModuleTypes.StreamModule['actions']['deleteMatchId']\n | VoidFn;\n}\n\ninterface OwnProps {\n matchId: string;\n prevMatchId: string | undefined;\n isResultPage?: boolean;\n}\n\ninterface ConnectOwnProps\n extends OwnProps,\n WithStreamModuleTypes.WithStreamModule {}\n\ntype Props = OwnProps &\n MappedProps &\n MappedActions &\n WithStreamModuleTypes.WithStreamModule &\n WithStreamWidgetSettingsTypes;\n// & ResponsiveComponents.ResponseContainerProps;\n\ntype State = {\n isOneMarketView: boolean;\n};\n\nconst ANALYTICS = {\n 'data-category': Category.LineSportEvent,\n 'data-action': Action.SelectOdd,\n};\n\nconst ANALYTICS_CLICK_ON_TITLE = {\n 'data-action': Action.ClickOnTitle,\n 'data-category': Category.LineSportEvent,\n};\n\nconst ANALYTICS_PROMO = {\n category: Category.LineSportEvent,\n};\n\nconst ANALYTICS_ODD_BTN_STREAM = {\n 'data-category': Category.LineSportEvent,\n 'data-action': Action.SelectOdd,\n};\n\nconst getStreamSettings = ({\n hasValidStream,\n hasValidBetradarId,\n isMatchTrackerDisabled,\n isSmall,\n isStreamOpen,\n}: {\n hasValidStream: boolean;\n hasValidBetradarId: boolean;\n isMatchTrackerDisabled: boolean;\n isSmall: boolean;\n isStreamOpen: boolean | null;\n}) => {\n const isStreamAvailable =\n (hasValidStream || (hasValidBetradarId && !isMatchTrackerDisabled)) &&\n !isSmall;\n\n const isViewerOpen = !!isStreamOpen && isStreamAvailable;\n\n return {\n isViewerOpen,\n isStreamAvailable,\n };\n};\n\nclass SportEventRow extends React.Component {\n state: State = {\n isOneMarketView: true,\n };\n\n constructor(props: Props) {\n super(props);\n const { isOneMarketView } = props;\n\n this.state.isOneMarketView = isOneMarketView;\n }\n\n componentDidUpdate() {\n const { isOneMarketView } = this.state;\n const { isOneMarketView: isOneMarketViewProps } = this.props;\n\n if (isOneMarketView && !isOneMarketViewProps) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n isOneMarketView: false,\n });\n }\n }\n\n getLinkToMatch = (): string | null => {\n const { isResultPage, match, route } = this.props;\n\n return match\n ? `${route}${\n isResultPage ? App.Routes.RESULT_MATCH : App.Routes.MATCH\n }${match.slug}`\n : null;\n };\n\n toggleStream = (): void => {\n const {\n matchId,\n hasValidStream,\n hasValidBetradarId,\n isStreamOpen,\n lessThanOrEqual,\n disableMatchTracker,\n match,\n } = this.props;\n\n const isSmall = lessThanOrEqual.small;\n\n const { isViewerOpen } = getStreamSettings({\n hasValidStream,\n hasValidBetradarId,\n isMatchTrackerDisabled: checkIsMatchTrackerDisabled(\n disableMatchTracker,\n match?.sportId\n ),\n isSmall,\n isStreamOpen,\n });\n\n if (isViewerOpen) {\n this.props.deleteMatchId({ matchId });\n } else {\n this.props.addMatchId({ matchId, withClearPrev: true });\n }\n };\n\n renderMiddle = (): JSX.Element | null => {\n const { isOneMarketView } = this.state;\n const {\n match,\n hasHeader,\n competitorsValid,\n count,\n scoreCount,\n } = this.props;\n\n if (!match) return null;\n\n const { id: matchId, sportId, status } = match;\n const isEnded =\n status === GQL.SportEventStatus.ENDED ||\n status === GQL.SportEventStatus.CLOSED;\n\n const showScores =\n [...LIVE_SPORTEVENT_STATUSES, GQL.SportEventStatus.ENDED].includes(\n status\n ) && !checkIfNewsPage();\n\n const { awayLogo, awayName, homeLogo, homeName } = competitorsValid;\n const linkToMatch = this.getLinkToMatch();\n\n if (isOneMarketView) {\n return (\n \n \n \n \n \n );\n }\n\n return (\n \n
\n \n {showScores && (\n \n )}\n
\n
\n \n \n \n
\n
\n );\n };\n\n renderFooter = (): JSX.Element | null => {\n const {\n match,\n matchId,\n hasValidStream,\n hasValidBetradarId,\n disableMatchTracker,\n } = this.props;\n\n if (!match) return null;\n\n const { marketsCount } = match;\n\n const isSportEventViewable = checkIsSportEventViewable({\n hasValidStream,\n hasValidBetradarId,\n isMatchTrackerDisabled: checkIsMatchTrackerDisabled(\n disableMatchTracker,\n match.sportId\n ),\n });\n\n const linkToMatch = this.getLinkToMatch();\n\n return (\n
\n \n\n \n {isSportEventViewable && (\n
\n \n
\n )}\n
\n );\n };\n\n render() {\n debug('render', this.props);\n const { isOneMarketView } = this.state;\n const {\n hasValidStream,\n hasValidBetradarId,\n match,\n tournament,\n hasHeader,\n isResultPage,\n topMarketsCount,\n lessThanOrEqual,\n matchId,\n streamUrl,\n isStreamOpen,\n betradarId,\n route,\n disableMatchTracker,\n } = this.props;\n\n if (!match) return null;\n\n const isMatchTrackerDisabled = checkIsMatchTrackerDisabled(\n disableMatchTracker,\n match.sportId\n );\n\n const isSportEventViewable = checkIsSportEventViewable({\n hasValidStream,\n hasValidBetradarId,\n isMatchTrackerDisabled,\n });\n\n const {\n sportId,\n startTime,\n liveCoverage,\n status,\n marketsCount,\n title,\n slug,\n hasMatchLog,\n version,\n } = match;\n\n const isSmall = lessThanOrEqual.small;\n const isExtraSmall = lessThanOrEqual.extraSmall;\n const isNewsPage = checkIfNewsPage();\n\n const { isViewerOpen, isStreamAvailable } = getStreamSettings({\n hasValidStream,\n hasValidBetradarId,\n isMatchTrackerDisabled,\n isSmall,\n isStreamOpen,\n });\n\n const isLive = LIVE_SPORTEVENT_STATUSES.includes(status);\n\n const linkToMatch = this.getLinkToMatch();\n\n const SportEventRowComponent = (\n \n \n \n \n\n {hasHeader && (\n \n {tournament && (\n \n )}\n \n )}\n \n {!isExtraSmall && (\n \n )}\n\n \n\n {this.renderMiddle()}\n\n {!isExtraSmall && (\n \n \n \n )}\n \n {isExtraSmall && this.renderFooter()}\n {isViewerOpen && (\n
\n \n \n \n
\n )}\n \n
\n );\n\n if (isNewsPage) {\n return (\n \n {SportEventRowComponent}\n \n );\n }\n\n return SportEventRowComponent;\n }\n}\n\nconst makeMapStateToProps = (\n state: AppState,\n ownProps: ConnectOwnProps\n): MappedProps => {\n const selectMatch = makeMatchSelector({\n propsToPick: matchPropsToPick,\n });\n const selectTournamentIdByPrevMatch = makeMatchSelector({\n propsToPick: ['tournament'],\n selectMatchId: (_, props: { prevMatchId: string }) => props.prevMatchId,\n });\n\n const selectHasHeader = createSelector(\n selectMatch,\n selectTournamentIdByPrevMatch,\n (match, prevMatch) =>\n !(match && prevMatch && match.tournament === prevMatch.tournament)\n );\n\n const selectTournament = makeTournamentSelector({\n propsToPick: tournamentPropsToPick,\n selectTournamentId: selectPreviewTournamentIdFromMatch,\n });\n\n const selectLessThanOrEqual = makeViewportSelector('lessThanOrEqual');\n\n const selectIsMatchIdWithOpenedStream =\n ownProps.streamModule?.selectors.selectIsMatchIdWithOpenedStream ??\n SELECTOR_STUB;\n\n const sportEvent = selectMatch(state, ownProps);\n const tournament = selectTournament(state, ownProps);\n const lessThanOrEqual = selectLessThanOrEqual(state, ownProps);\n const streamUrl = selectMobileMatchStream(state, ownProps);\n const competitorsValid = selectMatchCompetitorsValid(state, ownProps);\n const isStreamOpen = selectIsMatchIdWithOpenedStream(state, ownProps);\n\n let hasHeader = selectHasHeader(state, ownProps);\n\n const markets = selectTopMarketsByMatchId(state, {\n matchId: ownProps.matchId,\n });\n\n const isGreat = lessThanOrEqual.great;\n const isSmall = lessThanOrEqual.small;\n const isExtraSmall = lessThanOrEqual.extraSmall;\n\n const { hasValidStream, hasValidBetradarId } = selectIsSportEventViewable(\n state,\n {\n matchId: ownProps.matchId,\n }\n );\n\n const count = isSmall ? 2 : 3;\n const scoreCount = isGreat ? (isSmall ? 1 : 2) : 3;\n\n const isExistHcpOrTotal = getIsExistHcpOrTotal(markets);\n\n const isOneMarketView =\n !!sportEvent &&\n (getTopMarketComponentsBySport(sportEvent.sportId, { count }).length ===\n 1 ||\n !isExistHcpOrTotal) &&\n !isExtraSmall;\n\n if (!hasHeader) {\n const prevMarkets = selectTopMarketsByMatchId(state, {\n matchId: ownProps.prevMatchId,\n });\n\n const prevIsExistHcpOrTotal = getIsExistHcpOrTotal(prevMarkets);\n\n const marketsNames = markets.map(m => m.name);\n const prevMarketsNames = prevMarkets.map(m => m.name);\n\n hasHeader =\n difference(marketsNames, prevMarketsNames).length > 0 ||\n prevIsExistHcpOrTotal !== isExistHcpOrTotal;\n }\n\n const betradarId = selectBetradarId(state, {\n matchId: ownProps.matchId,\n });\n const route = selectRouteBySportEvent(state, {\n matchId: ownProps.matchId,\n });\n\n return {\n hasHeader,\n match: sportEvent,\n tournament,\n lessThanOrEqual,\n hasValidStream,\n hasValidBetradarId,\n isStreamOpen,\n competitorsValid,\n streamUrl,\n topMarketsCount: markets.length,\n markets,\n isOneMarketView,\n count,\n scoreCount,\n betradarId,\n route,\n };\n};\n\nconst mapDispatchToProps = (\n dispatch: DispatchProp['dispatch'],\n { streamModule }: ConnectOwnProps\n): MappedActions => {\n if (!streamModule)\n return {\n addMatchId: noop,\n deleteMatchId: noop,\n };\n\n const {\n actions: { addMatchId, deleteMatchId },\n } = streamModule;\n\n return {\n addMatchId: (payload: Arg1) =>\n dispatch(addMatchId(payload)),\n deleteMatchId: (payload: Arg1) =>\n dispatch(deleteMatchId(payload)),\n };\n};\n\nexport default compose>(\n // withResponseContainer,\n withStreamModule,\n withStreamWidgetSettings,\n connect(\n makeMapStateToProps,\n mapDispatchToProps\n ),\n makePure({ maxDepth: 3 })\n)(SportEventRow);\n\nconst getIsExistHcpOrTotal = (markets: View.Market[]): boolean =>\n markets.some(m => isHCP(m) || isTotal(m));\n","import React from 'react';\n\nimport './streamStub.scss';\n\ninterface Props {}\n\nconst StreamComponent: React.SFC = () => (\n
\n);\n\nexport default StreamComponent;\n","import React from 'react';\n\nimport features from 'services/feature-manager';\nimport OverviewRow from '../OverviewRow';\nimport SportEventRow from './SportEventRow';\n\nexport { default as StreamStub } from './StreamStub';\n\nconst SportEventRowOrOverview: React.FC<\n PropsFromReactComponent\n> = ({ matchId, prevMatchId, ...rest }) => {\n const isSportEventRowOverview = features.isActive(\n features.list.MatchListSportEventRowOverview\n );\n\n return isSportEventRowOverview ? (\n \n ) : (\n \n );\n};\n\nexport default SportEventRowOrOverview;\n","import React from 'react';\nimport { Pagination } from '@gin-betting/match-list';\nimport cd from 'debug';\nimport { OrderedSet } from 'immutable';\nimport { get } from 'lodash';\n\nimport { CustomVisibilitySensor } from '../CustomVisibilitySensor/CustomVisibilitySensor';\nimport SportEventRow, { StreamStub } from '../SportEventRow';\n\nconst debug = cd('app:match-list:components:ResultsMatchList');\n\ninterface Props {\n matchIds: OrderedSet;\n isSmall: boolean;\n handleVisibilityChange?: Pagination.ReturnedPaginationProps['handleVisibilityChange'];\n visibilityInitRef?: Pagination.ReturnedPaginationProps['visibilityInitRef'];\n}\n\nclass ResultsMatchList extends React.Component {\n getMatchIds = (): OrderedSet => this.props.matchIds;\n\n render() {\n debug('render', this.props);\n const {\n matchIds,\n handleVisibilityChange,\n visibilityInitRef,\n } = this.props;\n\n const sportEventRows: JSX.Element[] = [];\n\n let prevMatchId: string | undefined;\n\n matchIds.delete('visibility1').forEach(matchId => {\n const component = matchId.match(/visibility/) ? (\n \n ) : (\n \n );\n\n sportEventRows.push(component);\n\n prevMatchId = matchId.match(/visibility/) ? prevMatchId : matchId;\n });\n\n sportEventRows.push();\n\n return sportEventRows;\n }\n}\n\nexport default ResultsMatchList;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { connect } from 'react-redux';\nimport core, { App } from '@gin-betting/core';\nimport { Pagination } from '@gin-betting/match-list';\nimport cd from 'debug';\nimport { OrderedSet } from 'immutable';\nimport { createStructuredSelector } from 'reselect';\nimport get from 'ts-get';\n\nimport { SmartLink } from 'components';\nimport globalMessages from 'messages';\nimport { checkIfNewsPage } from 'utils';\nimport { CustomVisibilitySensor } from '../CustomVisibilitySensor/CustomVisibilitySensor';\nimport SportEventRow, { StreamStub } from '../SportEventRow';\n\nimport './upcoming.scss';\n\nconst debug = cd('app:match-list:components:UpcomingMatchList');\n\nconst {\n entities: {\n selectors: { selectSports },\n },\n} = core;\n\ninterface OwnProps {\n matchIds: OrderedSet;\n isMedium: boolean;\n isSmall: boolean;\n handleVisibilityChange?: Pagination.ReturnedPaginationProps['handleVisibilityChange'];\n visibilityInitRef?: Pagination.ReturnedPaginationProps['visibilityInitRef'];\n}\n\ninterface MappedProps {\n sports: ReturnType;\n}\n\ntype Props = OwnProps & MappedProps;\n\nconst {\n utils: { getBettingOptions },\n} = core;\n\nclass UpcomingMatchList extends React.Component {\n getMatchIds = () => this.props.matchIds;\n\n getNewsSportNames = () => {\n const { sports } = this.props;\n const { selectedSportIds } = getBettingOptions();\n\n const hasTooManySports = selectedSportIds.length > 5;\n\n const hasNamesToRender =\n selectedSportIds.length && sports.size && !hasTooManySports;\n\n if (!hasNamesToRender) {\n return null;\n }\n\n let sportNames: JSX.Element[] = [];\n\n sportNames = selectedSportIds\n .map(sportId => sports.get(sportId))\n .filter((i): i is NonNullable => !!i)\n .map(({ id, name }, index) => (\n \n {`${name}${\n index + 1 === selectedSportIds.length ? '' : ','\n }`}\n \n ));\n\n sportNames.push(\n \n \n \n );\n\n return
{sportNames}
;\n };\n\n render() {\n debug('render', this.props);\n const {\n matchIds,\n handleVisibilityChange,\n visibilityInitRef,\n } = this.props;\n\n if (!matchIds.size) return null;\n\n const sportEventRows: JSX.Element[] = [];\n\n const isNewsPage = checkIfNewsPage();\n\n let prevMatchId: string | undefined;\n\n matchIds.delete('visibility1').forEach((matchId: string) => {\n const component = matchId.match(/visibility/) ? (\n item[0] ?? '0', '0')\n }\n visibilityInitRef={visibilityInitRef}\n />\n ) : (\n \n );\n\n sportEventRows.push(component);\n\n prevMatchId = matchId.match(/visibility/) ? prevMatchId : matchId;\n });\n\n sportEventRows.push();\n\n if (isNewsPage) {\n return (\n \n
\n {this.getNewsSportNames()}\n\n
\n {sportEventRows}\n
\n\n \n
\n
\n {' '}\n \n
\n
\n
\n
\n
\n );\n }\n\n return sportEventRows;\n }\n}\n\nconst mapStateToProps = createStructuredSelector({\n sports: selectSports,\n});\n\nexport default connect(mapStateToProps)(UpcomingMatchList);\n","/* tslint:disable */\nimport {\n defineMessages\n} from 'react-intl';\n\nexport default defineMessages({\n cancelledMatch: {\n id: 'matchList.MatchRow.RowMiddle.cancelledTitle',\n defaultMessage: 'Cancelled',\n },\n upcomingFavorite: {\n id: 'matchList.upcomingFavorite',\n defaultMessage: \"You don’t have favorite upcoming games. You can add event to «Favorites» by clicking on star in the left part of matches list and never miss interesting events!\"\n },\n outrightsFavorite: {\n id: 'matchList.outrightsFavorite',\n defaultMessage: \"You don’t have favorite outrights. You can add event to «Favorites» by clicking on star in the left part of matches list and never miss interesting events!\"\n },\n resultsFavorite: {\n id: 'matchList.resultsFavorite',\n defaultMessage: \"You don’t have favorite results. You can add event to «Favorites» by clicking on star in the left part of matches list and never miss interesting events! \"\n }\n});","import { useCallback, useEffect, useState } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport { useLocation } from 'react-router';\nimport core, { App, GQL, Viewport } from '@gin-betting/core';\nimport matchList from '@gin-betting/match-list';\nimport { OrderedSet } from 'immutable';\nimport { createSelector, createStructuredSelector } from 'reselect';\n\nimport { ExtendedRouts } from 'app-constants';\nimport { useMemoSelector, usePrevious } from 'hooks';\nimport favorite from 'modules/favorite';\nimport { getByKey, getDefaultVariablesFavorite } from 'utils';\nimport messages from '../../messages';\n\nconst {\n selectors: { selectFavoriteIds },\n} = favorite;\n\nconst {\n appServiceLocator,\n utils: { checkOnRoute },\n entities: {\n normalizeEntity,\n selectors: { selectMatches },\n },\n viewport: {\n selectors: { makeViewportSelector },\n },\n} = core;\n\nconst {\n constants: { GET_FAVORITE_MATCHES_SUCCESS },\n} = matchList;\n\nconst mappingMsgByPathname = {\n [ExtendedRouts.FAVORITE_UPCOMING]: messages.upcomingFavorite,\n [ExtendedRouts.FAVORITE_OUTRIGHTS]: messages.outrightsFavorite,\n [ExtendedRouts.FAVORITE_RESULTS]: messages.resultsFavorite,\n};\n\ninterface IOutput {\n currFavoriteIds: OrderedSet;\n fetchStatus: App.FetchStatus;\n filteredMatchIds: OrderedSet;\n isOutrights: boolean;\n msg: string | undefined;\n lessThanOrEqual: Viewport.Breakpoints;\n groupedIdsByTournament: ReturnType;\n}\n\nexport const useFavoriteList = (): IOutput => {\n const dispatch = useDispatch();\n const location = useLocation();\n const {\n lessThanOrEqual,\n matchIds,\n groupedIdsByTournament,\n } = useMemoSelector(selectProps, { location });\n\n const intl = useIntl();\n const [currFavoriteIds, setCurrFavoriteIds] = useState>(\n OrderedSet()\n );\n const [fetchStatus, setFetchStatus] = useState(\n App.FetchStatus.INITIAL\n );\n\n const requestFavoriteMatches = useCallback(\n (\n { withLoading }: { withLoading: boolean },\n allMatchIds: ReturnType\n ) => {\n setCurrFavoriteIds(prevCurrFavoriteIds =>\n prevCurrFavoriteIds.clear()\n );\n const isOutRights = checkOnRoute(ExtendedRouts.FAVORITE_OUTRIGHTS);\n const isUpComing = checkOnRoute(ExtendedRouts.FAVORITE_UPCOMING);\n\n const variables: GQL.GetMatchesByEventIdsQueryVariables = {\n ...getDefaultVariablesFavorite(),\n sportEventIds: allMatchIds.toArray(),\n isTopMarkets: !isOutRights,\n withMarketsCount: isUpComing,\n marketLimit: isOutRights ? null : 3,\n };\n\n if (withLoading) {\n setFetchStatus(App.FetchStatus.LOADING);\n }\n\n appServiceLocator\n .get('apiClient')\n .makeRequest({\n method: 'getMatchesByEventIds',\n variables,\n })\n .then(response => {\n const incomeMatchIds = response.data.matches.map(\n match => match.id\n );\n const normalizedData = normalizeEntity(response.data);\n dispatch({\n type: GET_FAVORITE_MATCHES_SUCCESS,\n payload: {\n ...normalizedData,\n listType: '/',\n isTopMarkets: true,\n },\n });\n setCurrFavoriteIds(allMatchIds.intersect(incomeMatchIds));\n setFetchStatus(prev =>\n withLoading ? App.FetchStatus.LOADED : prev\n );\n })\n .catch(err => {\n console.error(err);\n\n if (withLoading) {\n setFetchStatus(App.FetchStatus.LOADED);\n }\n });\n },\n [dispatch]\n );\n\n const prevMatchIds = usePrevious(matchIds);\n const isAllMatchesExist =\n !prevMatchIds || matchIds.subtract(prevMatchIds).count() === 0;\n\n const prevPathName = usePrevious(location.pathname);\n const isLocationChanged = prevPathName !== location.pathname;\n\n useEffect(() => {\n if (isAllMatchesExist && !isLocationChanged) return;\n if (matchIds.count() === 0) {\n setFetchStatus(App.FetchStatus.LOADED);\n\n return;\n }\n\n requestFavoriteMatches({ withLoading: isLocationChanged }, matchIds);\n }, [\n requestFavoriteMatches,\n isAllMatchesExist,\n matchIds,\n isLocationChanged,\n ]);\n\n const filteredMatchIds = currFavoriteIds.intersect(matchIds);\n const isOutrights = checkOnRoute(ExtendedRouts.FAVORITE_OUTRIGHTS);\n\n const msgDesc = getByKey(mappingMsgByPathname, location.pathname);\n const msg = msgDesc ? intl.formatMessage(msgDesc) : undefined;\n\n return {\n currFavoriteIds,\n fetchStatus,\n filteredMatchIds,\n isOutrights,\n msg,\n lessThanOrEqual,\n groupedIdsByTournament,\n };\n};\n\nconst selectGroupedIdsByTournament = createSelector(\n selectFavoriteIds,\n selectMatches,\n (matchIds, matches) => {\n return matchIds.groupBy(matchId => {\n const match = matches.get(matchId);\n\n return !match || match.tournament;\n });\n }\n);\n\nconst selectProps = createStructuredSelector({\n lessThanOrEqual: makeViewportSelector('lessThanOrEqual'),\n matchIds: selectFavoriteIds,\n groupedIdsByTournament: selectGroupedIdsByTournament,\n});\n","import React from 'react';\nimport core, { App } from '@gin-betting/core';\nimport { OrderedSet } from 'immutable';\n\nimport { ExtendedRouts, LocalRouts } from 'app-constants';\nimport { NoResults } from 'components';\nimport { AsyncOutright } from 'modules/outright/async';\nimport UserDevice from 'services/user-device';\nimport { TopMenu } from 'views/top-menu';\nimport ResultsMatchList from '../Results/ResultsMatchList';\nimport UpcomingMatchList from '../Upcoming/UpcomingMatchList';\nimport { useFavoriteList } from './useFavoriteList';\n\nimport './favoriteList.scss';\n\nconst {\n utils: { checkOnRoute },\n} = core;\n\ninterface IFavoriteList {\n homeTabs: {\n title: JSX.Element;\n link: LocalRouts;\n }[];\n}\n\nconst FavoriteList: React.FC = ({ homeTabs }) => {\n const {\n currFavoriteIds,\n fetchStatus,\n filteredMatchIds,\n isOutrights,\n msg,\n lessThanOrEqual,\n groupedIdsByTournament,\n } = useFavoriteList();\n\n const whatToRender = (): React.ReactNode => {\n switch (true) {\n case fetchStatus === App.FetchStatus.LOADED &&\n !filteredMatchIds.count():\n return (\n \n );\n /* falls through */\n case isOutrights:\n return groupedIdsByTournament.valueSeq().map(group => {\n const filteredGroup = currFavoriteIds.intersect(\n group as OrderedSet\n );\n\n return filteredGroup.map(outrightId => (\n \n ));\n });\n /* falls through */\n case checkOnRoute(ExtendedRouts.FAVORITE_RESULTS):\n return (\n \n );\n default:\n return (\n \n );\n }\n };\n\n const isMobile = UserDevice.getInstance()?.isDeviceMobile();\n\n return (\n
\n \n
{whatToRender()}
\n
\n );\n};\n\nexport default React.memo(FavoriteList);\n","import React from 'react';\nimport InfiniteScroll from 'react-infinite-scroller';\nimport core, { App, Poller } from '@gin-betting/core';\nimport matchList, { Pagination } from '@gin-betting/match-list';\nimport cd from 'debug';\nimport { isNil } from 'lodash';\n\nimport { Loader, NoResults } from 'components';\nimport { checkIfNewsPage } from 'utils';\n\nconst debug = cd('app:match-list:components:MatchList');\n\nconst { getPollerManager } = core.poller;\nconst { withDeferRender } = core.hocs;\n\nconst { THRESHOLD } = matchList.pagination.constants;\n\ninterface OwnProps {\n matchIdsSize: number;\n fetchStatus: App.FetchStatus;\n hasNext: boolean;\n pollerName:\n | App.PollerName.Results\n | App.PollerName.Upcoming\n | App.PollerName.Prematch\n | App.PollerName.Tournament\n | App.PollerName.Live;\n children: any;\n dropPaginationState: Pagination.DropPaginationStateFn;\n setMinAndMaxPages: Pagination.SetMinAndMaxPagesFn;\n isMedium: boolean;\n redirectToFirstPage?: boolean;\n allowEmptyMatchList?: boolean;\n}\n\ntype PickedReturnedPaginationProps = Pick<\n Pagination.ReturnedPaginationProps,\n 'hasMore' | 'isUp' | 'loadMoreWithPagination'\n>;\n\ntype Props = OwnProps & Partial;\n\nclass PaginationWrapper extends React.Component {\n poller: Poller.Poller | undefined;\n scrollRef: HTMLDivElement | null;\n\n constructor(props: Props) {\n super(props);\n\n this.poller = getPollerManager().get(props.pollerName);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps: Props) {\n const { fetchStatus, matchIdsSize, redirectToFirstPage } = nextProps;\n\n if (\n fetchStatus === App.FetchStatus.LOADED &&\n matchIdsSize < 1 &&\n redirectToFirstPage\n ) {\n this.dropPaginationAndLoadMore();\n }\n }\n\n initRef = (instance: HTMLDivElement) => (this.scrollRef = instance);\n\n dropPaginationAndLoadMore = () => {\n this.props.dropPaginationState();\n this.loadMore();\n };\n\n setLoadDirectionAndLoadMore = () => {\n const { fetchStatus, matchIdsSize } = this.props;\n\n if (matchIdsSize === 0 || fetchStatus === App.FetchStatus.LOADING) {\n return;\n }\n\n if (this.props.loadMoreWithPagination) {\n this.props.loadMoreWithPagination(this.loadMore);\n } else {\n /* direction is always down in this case */\n this.props.setMinAndMaxPages();\n this.loadMore();\n }\n };\n\n loadMore = () => {\n if (this.poller) {\n this.poller.requestContent({\n isRepeat: false,\n isPolling: false,\n isLoadMore: true,\n });\n }\n };\n\n getTopGap = (): number => {\n if (!this.scrollRef) return 0;\n\n return window.pageYOffset + this.scrollRef.getBoundingClientRect().top;\n };\n\n loader = () => {\n const { fetchStatus, matchIdsSize } = this.props;\n\n return matchIdsSize > 15 ? (\n \n ) : null;\n };\n\n emptyListMessage = () => {\n const { fetchStatus, matchIdsSize, allowEmptyMatchList } = this.props;\n\n if (matchIdsSize < 1 && fetchStatus === App.FetchStatus.LOADED) {\n return allowEmptyMatchList ? null : (\n \n );\n }\n };\n\n render() {\n debug('render', this.props);\n\n const isNewsPage = checkIfNewsPage();\n\n const {\n hasMore: hasMorePagination,\n hasNext,\n children,\n isUp,\n } = this.props;\n\n if (isNewsPage) {\n return children;\n }\n\n // const filterMatchComponent = ;\n const hasMore = isNil(hasMorePagination) ? hasNext : hasMorePagination;\n const threshold = isUp ? this.getTopGap() + THRESHOLD : THRESHOLD;\n\n return (\n
\n \n {children}\n\n {this.emptyListMessage()}\n \n {!isUp && hasMore && this.loader()}\n
\n );\n }\n}\n\nexport default withDeferRender(PaginationWrapper);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport core, { App, Viewport } from '@gin-betting/core';\nimport matchList, { Pagination } from '@gin-betting/match-list';\nimport cd from 'debug';\nimport { compose } from 'redux';\n\nimport {\n BettingReadyIndicatorContextProps,\n withBettingReadyIndicatorContext,\n} from 'modules/betting-ready-indicator';\nimport type { State } from 'types';\nimport PaginationWrapper from '../PaginationWrapper';\nimport ResultsMatchList from './ResultsMatchList';\n\nconst debug = cd('app:match-list:components:Results');\n\nconst {\n utils: { isFetchFinished },\n} = core;\n\nconst {\n viewport: {\n selectors: { makeViewportSelector },\n },\n} = core;\n\nconst {\n selectors: { selectCategoryByLocation },\n pagination: {\n actions: { dropPaginationState, setMinAndMaxPages },\n hocs: { withPagination },\n selectors: {\n selectPaginationByLocation,\n selectDirection,\n selectIsInitialLoad,\n },\n },\n} = matchList;\n\ninterface OwnProps {}\n\ninterface MappedProps extends Pagination.NeededPaginationProps {\n lessThanOrEqual: Viewport.Breakpoints;\n}\n\ninterface MappedActions {\n dropPaginationState: typeof dropPaginationState;\n setMinAndMaxPages: typeof setMinAndMaxPages;\n}\n\ntype Props = OwnProps &\n MappedProps &\n Partial &\n MappedActions &\n BettingReadyIndicatorContextProps &\n RouteComponentProps;\n\nclass Results extends React.Component {\n componentDidUpdate() {\n const {\n readyIndicator,\n categoryData: { fetchStatus },\n } = this.props;\n\n if (isFetchFinished(fetchStatus)) {\n readyIndicator.setReady();\n }\n }\n\n render() {\n debug('render', this.props);\n\n const {\n lessThanOrEqual,\n categoryData,\n hasNext,\n hasMore,\n isUp,\n matchIdsWithVisibilityFlags,\n visibilityInitRef,\n handleVisibilityChange,\n loadMoreWithPagination,\n } = this.props;\n\n const { matchIds, fetchStatus } = categoryData;\n\n const isSmall = lessThanOrEqual.small;\n const isMedium = lessThanOrEqual.medium;\n\n return (\n \n \n \n );\n }\n}\n\nconst makeMapStateToProps = (\n state: State,\n ownProps: OwnProps & RouteComponentProps\n): MappedProps => {\n const {\n hasNext,\n minPage,\n currentPage,\n maxPage,\n limitPerPage,\n } = selectPaginationByLocation(state, ownProps);\n const categoryData = selectCategoryByLocation(state, ownProps);\n\n return {\n lessThanOrEqual: makeViewportSelector('lessThanOrEqual')(\n state,\n ownProps\n ),\n categoryData,\n /* for pagination */\n hasNext,\n pages: { minPage, currentPage, maxPage, limitPerPage },\n direction: selectDirection(state),\n isLoadInitial: selectIsInitialLoad(state),\n };\n};\n\nconst mapDispatchToProps = {\n dropPaginationState,\n setMinAndMaxPages,\n};\n\nexport default compose>(\n withRouter,\n connect(makeMapStateToProps, mapDispatchToProps),\n withPagination,\n withBettingReadyIndicatorContext\n)(Results);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport core, { App, Viewport } from '@gin-betting/core';\nimport matchList, { Pagination } from '@gin-betting/match-list';\nimport cd from 'debug';\nimport { compose } from 'redux';\n\nimport {\n BettingReadyIndicatorContextProps,\n withBettingReadyIndicatorContext,\n} from 'modules/betting-ready-indicator';\nimport { AsyncFreebetPanel } from 'modules/freebet/async';\nimport type { State } from 'types';\nimport PaginationWrapper from '../PaginationWrapper';\nimport UpcomingMatchList from './UpcomingMatchList';\n\nimport './upcoming.scss';\n\nconst debug = cd('app:match-list:components:Upcoming');\n\nconst {\n utils: { isFetchFinished },\n} = core;\n\nconst {\n utils: { getFiltersFromLocation },\n viewport: {\n selectors: { makeViewportSelector },\n },\n} = core;\nconst {\n pagination: {\n actions: { dropPaginationState, setMinAndMaxPages },\n hocs: { withPagination },\n selectors: {\n selectDirection,\n selectIsInitialLoad,\n selectPaginationByLocation,\n },\n },\n selectors: { selectCategoryByLocation },\n} = matchList;\n\ninterface MappedCommonProps extends Pagination.NeededPaginationProps {\n lessThanOrEqual: Viewport.Breakpoints;\n}\n\ninterface MappedActions {\n dropPaginationState: Pagination.DropPaginationStateFn;\n setMinAndMaxPages: Pagination.SetMinAndMaxPagesFn;\n}\n\ntype Props = MappedCommonProps &\n Partial &\n MappedActions &\n BettingReadyIndicatorContextProps;\n\nclass Upcoming extends React.Component {\n componentDidUpdate() {\n const {\n readyIndicator,\n categoryData: { fetchStatus },\n } = this.props;\n\n if (isFetchFinished(fetchStatus)) {\n readyIndicator.setReady();\n }\n }\n\n render() {\n debug('render', this.props);\n\n const {\n lessThanOrEqual,\n categoryData,\n hasNext,\n hasMore,\n isUp,\n matchIdsWithVisibilityFlags,\n visibilityInitRef,\n handleVisibilityChange,\n loadMoreWithPagination,\n } = this.props;\n\n const { fetchStatus } = categoryData;\n const { matchIds } = categoryData;\n\n const isMedium = lessThanOrEqual.medium;\n const isSmall = lessThanOrEqual.small;\n const { freeBetId: freebetId } = getFiltersFromLocation();\n\n return (\n \n {freebetId && (\n
\n \n
\n )}\n\n \n \n );\n }\n}\n\nconst makeMapStateToProps = (\n state: State,\n ownProps: RouteComponentProps\n): MappedCommonProps => {\n const {\n hasNext,\n minPage,\n currentPage,\n maxPage,\n limitPerPage,\n } = selectPaginationByLocation(state, ownProps);\n const categoryData = selectCategoryByLocation(state, ownProps);\n\n return {\n lessThanOrEqual: makeViewportSelector('lessThanOrEqual')(\n state,\n ownProps\n ),\n categoryData,\n hasNext,\n pages: {\n minPage,\n currentPage,\n maxPage,\n limitPerPage,\n },\n direction: selectDirection(state),\n isLoadInitial: selectIsInitialLoad(state),\n };\n};\n\nconst mapDispatchToProps: MappedActions = {\n dropPaginationState,\n setMinAndMaxPages,\n};\n\nexport default compose>(\n withRouter,\n connect(\n makeMapStateToProps,\n mapDispatchToProps\n ),\n withPagination,\n withBettingReadyIndicatorContext\n)(Upcoming);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport core, { App, Viewport } from '@gin-betting/core';\nimport matchList, { Pagination } from '@gin-betting/match-list';\nimport cd from 'debug';\nimport { compose } from 'redux';\n\nimport {\n BettingReadyIndicatorContextProps,\n withBettingReadyIndicatorContext,\n} from 'modules/betting-ready-indicator';\nimport { AsyncFreebetPanel } from 'modules/freebet/async';\nimport type { State } from 'types';\nimport PaginationWrapper from '../PaginationWrapper';\nimport UpcomingMatchList from '../Upcoming/UpcomingMatchList';\n\nimport './liveList.scss';\n\nconst debug = cd('app:match-list:components:Upcoming');\n\nconst {\n utils: { isFetchFinished },\n} = core;\n\nconst {\n utils: { getFiltersFromLocation },\n viewport: {\n selectors: { makeViewportSelector },\n },\n} = core;\nconst {\n pagination: {\n actions: { dropPaginationState, setMinAndMaxPages },\n hocs: { withPagination },\n selectors: {\n selectDirection,\n selectIsInitialLoad,\n selectPaginationByLocation,\n },\n },\n selectors: { selectCategoryByLocation },\n} = matchList;\n\ninterface MappedProps extends Pagination.NeededPaginationProps {\n lessThanOrEqual: Viewport.Breakpoints;\n}\n\ninterface MappedActions {\n dropPaginationState: Pagination.DropPaginationStateFn;\n setMinAndMaxPages: Pagination.SetMinAndMaxPagesFn;\n}\n\ntype Props = MappedProps &\n RouteComponentProps &\n Partial &\n MappedActions &\n BettingReadyIndicatorContextProps;\n\nclass LiveList extends React.Component {\n componentDidUpdate() {\n const { readyIndicator, categoryData } = this.props;\n\n if (isFetchFinished(categoryData.fetchStatus)) {\n readyIndicator.setReady();\n }\n }\n\n render() {\n debug('render', this.props);\n\n const {\n lessThanOrEqual,\n categoryData,\n hasNext,\n hasMore,\n isUp,\n matchIdsWithVisibilityFlags,\n visibilityInitRef,\n handleVisibilityChange,\n loadMoreWithPagination,\n } = this.props;\n\n const { fetchStatus, matchIds } = categoryData;\n\n const isMedium = lessThanOrEqual.medium;\n const isSmall = lessThanOrEqual.small;\n const { freeBetId: freebetId } = getFiltersFromLocation();\n\n return (\n \n {freebetId && (\n
\n \n
\n )}\n\n \n \n );\n }\n}\n\nconst makeMapStateToProps = (\n state: State,\n ownProps: RouteComponentProps\n): MappedProps => {\n const {\n hasNext,\n minPage,\n currentPage,\n maxPage,\n limitPerPage,\n } = selectPaginationByLocation(state, ownProps);\n const categoryData = selectCategoryByLocation(state, ownProps);\n\n return {\n lessThanOrEqual: makeViewportSelector('lessThanOrEqual')(\n state,\n ownProps\n ),\n categoryData,\n hasNext,\n pages: {\n minPage,\n currentPage,\n maxPage,\n limitPerPage,\n },\n direction: selectDirection(state),\n isLoadInitial: selectIsInitialLoad(state),\n };\n};\n\nconst mapDispatchToProps: MappedActions = {\n dropPaginationState,\n setMinAndMaxPages,\n};\n\nexport default compose>(\n withRouter,\n connect(\n makeMapStateToProps,\n mapDispatchToProps\n ),\n withPagination,\n withBettingReadyIndicatorContext\n)(LiveList);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport core, { App, Viewport } from '@gin-betting/core';\nimport matchList, { Pagination } from '@gin-betting/match-list';\nimport cd from 'debug';\nimport { compose } from 'redux';\n\nimport {\n BettingReadyIndicatorContextProps,\n withBettingReadyIndicatorContext,\n} from 'modules/betting-ready-indicator';\nimport { AsyncFreebetPanel } from 'modules/freebet/async';\nimport { State } from 'types';\nimport PaginationWrapper from '../PaginationWrapper';\nimport { OwnProps } from '../SportEventRow/Markets/MarketHcp';\nimport UpcomingMatchList from '../Upcoming/UpcomingMatchList';\n\nimport './prematchList.scss';\n\nconst debug = cd('app:match-list:components:Prematch');\n\nconst {\n utils: { isFetchFinished },\n} = core;\n\nconst {\n utils: { getFiltersFromLocation },\n viewport: {\n selectors: { makeViewportSelector },\n },\n} = core;\n\nconst {\n pagination: {\n actions: { dropPaginationState, setMinAndMaxPages },\n hocs: { withPagination },\n selectors: {\n selectPaginationByLocation,\n selectDirection,\n selectIsInitialLoad,\n },\n },\n selectors: { selectCategoryByLocation },\n} = matchList;\n\ninterface MappedCommonProps extends Pagination.NeededPaginationProps {\n lessThanOrEqual: Viewport.Breakpoints;\n}\n\ninterface MappedActions {\n dropPaginationState: Pagination.DropPaginationStateFn;\n setMinAndMaxPages: Pagination.SetMinAndMaxPagesFn;\n}\n\ntype Props = MappedCommonProps &\n RouteComponentProps &\n Partial &\n MappedActions &\n BettingReadyIndicatorContextProps;\n\nclass PrematchList extends React.Component {\n componentDidUpdate() {\n const {\n categoryData: { fetchStatus },\n readyIndicator,\n } = this.props;\n\n if (isFetchFinished(fetchStatus)) {\n readyIndicator.setReady();\n }\n }\n\n render() {\n debug('render', this.props);\n\n const {\n lessThanOrEqual,\n categoryData,\n hasNext,\n hasMore,\n isUp,\n matchIdsWithVisibilityFlags,\n visibilityInitRef,\n handleVisibilityChange,\n loadMoreWithPagination,\n } = this.props;\n\n const { fetchStatus, matchIds } = categoryData;\n\n const isMedium = lessThanOrEqual.medium;\n const isSmall = lessThanOrEqual.small;\n const { freeBetId: freebetId } = getFiltersFromLocation();\n\n return (\n \n {freebetId && (\n
\n \n
\n )}\n\n \n \n );\n }\n}\n\nconst makeMapStateToProps = (\n state: State,\n ownProps: OwnProps & RouteComponentProps\n): MappedCommonProps => {\n const {\n hasNext,\n minPage,\n currentPage,\n maxPage,\n limitPerPage,\n } = selectPaginationByLocation(state, ownProps);\n\n const categoryData = selectCategoryByLocation(state, ownProps);\n\n return {\n lessThanOrEqual: makeViewportSelector('lessThanOrEqual')(\n state,\n ownProps\n ),\n categoryData,\n hasNext,\n pages: {\n minPage,\n currentPage,\n maxPage,\n limitPerPage,\n },\n direction: selectDirection(state),\n isLoadInitial: selectIsInitialLoad(state),\n };\n};\n\nconst mapDispatchToProps: MappedActions = {\n dropPaginationState,\n setMinAndMaxPages,\n};\n\nexport default compose(\n withRouter,\n connect(\n makeMapStateToProps,\n mapDispatchToProps\n ),\n withPagination,\n withBettingReadyIndicatorContext\n)(PrematchList);\n","import { createContext, useContext } from 'react';\nimport { useSelector } from 'react-redux';\nimport core, { App, GQL, Poller } from '@gin-betting/core';\nimport type matchList from '@gin-betting/match-list';\nimport { noop, omit } from 'lodash';\nimport { createStructuredSelector } from 'reselect';\n\nimport { MatchListType } from 'app-constants';\nimport { useAsyncModule } from 'async-modules';\nimport { useDidUpdate, useMount, useWithLocation } from 'hooks';\nimport ui from 'modules/ui';\nimport type { State } from 'types';\nimport {\n checkIfNewsPage,\n getVariablesForLiveSportEvent,\n parse,\n stringify,\n} from 'utils';\n\ntype MatchListModule = typeof matchList;\n\nconst {\n poller: { usePoller, getPollerManager },\n utils: {\n getBettingOptions,\n getDefaultVariables,\n getAppliedFilters,\n getSportTypeFromLocation,\n },\n viewport: {\n selectors: { selectIsCompact },\n },\n} = core;\n\nconst {\n selectors: { selectIsFilterOpened },\n} = ui;\n\ninterface Input {\n pollerOpts: Poller.UsePollerInput<\n MatchListModule['actions']['searchMatches']\n >;\n type: MatchListType;\n}\n\ninterface Output {\n shouldRenderMatchList: boolean;\n}\n\nconst FILTER_LOCATION_SEARCH: Array = ['page'];\n\nconst ROUTES_WITH_LIST = [MatchListType.LIVE, MatchListType.PREMATCH];\n\nconst DEFAULT_CONTEXT = createContext({\n currentOverlay: 'DEFAULT_CONTEXT' as any,\n setOverlay: noop,\n});\n\nconst useMatchListContainer = ({ pollerOpts, type }: Input): Output => {\n const filter = useAsyncModule('filters');\n const { currentOverlay } = useContext(\n filter?.MobileFiltersCtx || DEFAULT_CONTEXT\n );\n const { isCompact, isCategorizerOpened } = useSelector((s: State) =>\n selectProps(s, {})\n );\n\n const isRouteWithList = ROUTES_WITH_LIST.includes(type);\n\n const { search, sportType, variables } = useWithLocation(\n ({ search: s }) => ({\n search: stringify(omit(parse(s), FILTER_LOCATION_SEARCH)),\n sportType: getSportTypeFromLocation(),\n variables: getPollerVariables(type),\n })\n );\n\n const { requestContent } = usePoller({\n ...pollerOpts,\n skipInitialRequest: true, // NOTE: prevent request content in usePoller. Request content placed in useMount\n variables,\n });\n\n useMount(() => {\n const { pollerName, skipInitialRequest } = pollerOpts;\n const poller = getPollerManager().get(pollerName);\n\n if (!poller) return;\n\n poller.enable({ skipRequest: skipInitialRequest });\n\n return () => {\n poller.disable();\n };\n });\n\n useDidUpdate(() => {\n requestContent();\n }, [requestContent, sportType, search]);\n\n return {\n shouldRenderMatchList:\n !isCompact ||\n ((isRouteWithList || !isCategorizerOpened) &&\n currentOverlay !==\n filter?.constants.OverlayType.FEATURED_TOURNAMENTS_LIST),\n };\n};\n\nconst selectProps = createStructuredSelector({\n isCompact: selectIsCompact,\n isCategorizerOpened: selectIsFilterOpened,\n});\n\nfunction getPollerVariables(\n type: MatchListType\n): Partial {\n const { sportId, tournamentId } = getAppliedFilters();\n const { selectedSportIds } = getBettingOptions();\n\n const isNewsPage = checkIfNewsPage();\n\n const {\n marketStatuses,\n matchStatuses,\n ...restVariables\n } = getDefaultVariables();\n\n const {\n marketStatusesForLiveSportEvent,\n dateFrom,\n } = getVariablesForLiveSportEvent(matchStatuses, marketStatuses);\n\n return {\n dateFrom,\n matchStatuses,\n marketStatuses,\n ...restVariables,\n ...(tournamentId && { tournamentIds: [tournamentId] }),\n ...(sportId && { sportIds: [sportId] }),\n ...(isNewsPage &&\n selectedSportIds.length && { sportIds: selectedSportIds }),\n marketStatusesForSportEvent: marketStatusesForLiveSportEvent,\n marketLimit: 3,\n isTopMarkets: true,\n order:\n type === MatchListType.RESULTS\n ? GQL.SportEventOrder.NONE\n : GQL.SportEventOrder.RANK_PERSONALIZED,\n };\n}\n\nexport default useMatchListContainer;\n","import React, { Fragment, ReactElement } from 'react';\nimport core, { App } from '@gin-betting/core';\nimport { Arg1 } from 'tsargs';\n\nimport { MatchListType } from 'app-constants';\nimport Results from './Results/Results';\nimport Upcoming from './Upcoming/Upcoming';\nimport LiveList from './LiveList';\nimport PrematchList from './PrematchList';\nimport useMatchListContainer from './useMatchListContainer';\n\nconst {\n poller: { usePoller },\n} = core;\n\ninterface Props {\n type: MatchListType;\n fetchStatus: App.FetchStatus;\n pollerOpts: Arg1;\n}\n\nconst MATCH_LIST_COMPONENTS_BY_TYPE: Record = {\n [MatchListType.LIVE]: ,\n [MatchListType.RESULTS]: ,\n [MatchListType.UPCOMING]: ,\n [MatchListType.PREMATCH]: ,\n};\n\nconst MatchListContainer: React.FC = ({ pollerOpts, type }) => {\n const { shouldRenderMatchList } = useMatchListContainer({\n pollerOpts,\n type,\n });\n\n return (\n \n {shouldRenderMatchList && MATCH_LIST_COMPONENTS_BY_TYPE[type]}\n \n );\n};\n\nexport default MatchListContainer;\n","import { useSelector } from 'react-redux';\nimport core, { App } from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport { useWithLocation } from 'hooks';\nimport type { State } from 'types';\nimport { checkIsDynamicCategorizer, parse } from 'utils';\n\nconst {\n utils: { getBettingOptions, isOneOfPages, getAppliedFilters },\n viewport: {\n selectors: { selectIsCompact },\n },\n} = core;\n\ninterface Output {\n withSportNavigation: boolean;\n isCompact: boolean;\n isBettingPage: boolean;\n withRender: boolean;\n withFilters: boolean;\n}\n\nexport default function useMatchListNavigation(): Output {\n const {\n withSportNavigation,\n withRender,\n location,\n withFilters,\n } = useWithLocation(l => {\n const { freeBetId } = getAppliedFilters();\n\n const { isTop } = parse(l.search);\n\n return {\n withSportNavigation: !checkIsDynamicCategorizer(),\n withRender:\n isOneOfPages(\n [\n App.Routes.UPCOMING_LIST,\n App.Routes.ESPORT,\n App.Routes.CLASSIC,\n App.Routes.RESULTS_LIST,\n ],\n { exact: true }\n ) || isOneOfPages([App.Routes.LIVE_LIST, App.Routes.PREMATCH]),\n location: l,\n withFilters:\n !isOneOfPages([App.Routes.OUTRIGHTS_LIST]) &&\n !freeBetId &&\n !isTop,\n };\n });\n\n const { isCompact } = useSelector((s: State) =>\n selectProps(s, { location })\n );\n\n return {\n withSportNavigation,\n isCompact,\n isBettingPage: getBettingOptions().url.pagePath === '',\n\n withRender,\n withFilters,\n };\n}\n\nconst selectProps = createStructuredSelector({\n isCompact: selectIsCompact,\n});\n","import React, { Fragment } from 'react';\n\nimport { ListHelmet } from 'components';\nimport {\n AsyncMobileFilters,\n AsyncMobileFiltersCtxComponent,\n AsyncSportsNavigation,\n} from 'modules/filters/async';\nimport { AsyncFreebetSelect } from 'modules/freebet/async';\nimport useMatchListNavigation from './useMatchListNavigation';\n\nimport './matchListNavigation.scss';\n\nconst MatchListNavigation: React.FC = ({ children }) => {\n const {\n isBettingPage,\n isCompact,\n withSportNavigation,\n withRender,\n withFilters,\n } = useMatchListNavigation();\n\n if (!withRender) return {children};\n\n return (\n \n {isBettingPage && isCompact && (\n \n
\n \n
\n\n {withFilters && }\n
\n )}\n\n {isBettingPage && window.__app.previousLocation && }\n {!isCompact && withSportNavigation && }\n {children}\n
\n );\n};\n\nexport default MatchListNavigation;\n","import core, { App, Entities } from '@gin-betting/core';\nimport matchList from '@gin-betting/match-list';\nimport { OrderedSet } from 'immutable';\nimport { TypedAction } from 'redux';\nimport { TypedEpic } from 'redux-observable';\nimport { Observable } from 'rxjs/Observable';\nimport get from 'ts-get';\nimport 'rxjs/add/observable/of';\nimport 'rxjs/add/observable/empty';\n\nimport { asyncModuleLoaders, AsyncModules } from 'async-modules';\nimport moduleLocator from 'moduleLocator';\nimport { Modules } from 'types';\n\nconst {\n entities: {\n constants: { GROUP_GET_MATCHES_SUCCESS, MATCH_ENDED, DELETE_MATCH_ID },\n },\n utils: { getRouteFromHistory },\n services: { registerEpic },\n} = core;\n\nconst {\n selectors: { selectCategoryByLocation },\n constants: { GET_FAVORITE_MATCHES_SUCCESS },\n} = matchList;\n\nexport const handleListResponse: TypedEpic = (action$, store) => {\n return action$\n .filter(\n (\n action: TypedAction\n ) => {\n const type = get(action, a => a.type);\n const group = get(action, a => a.meta.group);\n const payload = get(action, a => a.payload);\n\n if (!payload) return false;\n\n const { isLoadMore = false, result, isPolling } = payload;\n\n return (\n !isLoadMore &&\n !isPolling &&\n Array.isArray(result) &&\n (group === GROUP_GET_MATCHES_SUCCESS ||\n type === GET_FAVORITE_MATCHES_SUCCESS)\n );\n }\n )\n .switchMap(action => {\n asyncModuleLoaders.stream\n .load()\n .then(streamModule => {\n const {\n default: {\n actions: { addNearestMatchId },\n },\n } = (streamModule as unknown) as AsyncModules['stream']; // TODO remove type casting\n const matchIds = get(action, a => a.payload.result);\n store.dispatch(addNearestMatchId({ matchIds }));\n })\n .catch(err =>\n console.warn('Error loading loadStreamModule', err)\n );\n\n return Observable.empty();\n });\n};\n\nconst makeHandleMatchEnded = (\n streamModule: Modules['stream']['default']\n): TypedEpic => {\n const {\n actions: { addNearestMatchId },\n selectors: { selectIsMatchIdWithOpenedStream },\n } = streamModule;\n\n return (action$, store) => {\n return action$\n .ofType(MATCH_ENDED, DELETE_MATCH_ID)\n .switchMap(action => {\n const state = store.getState();\n const { matchId } = action.payload;\n const isMatchIdWithOpenedStream = selectIsMatchIdWithOpenedStream(\n state,\n { matchId }\n );\n\n if (!isMatchIdWithOpenedStream) return Observable.empty();\n\n const route = getRouteFromHistory();\n\n let matchIds: null | OrderedSet = null;\n\n switch (route) {\n case App.Routes.TOURNAMENT:\n case App.Routes.UPCOMING_LIST:\n case App.Routes.RESULTS_LIST: {\n matchIds = selectCategoryByLocation(state, {\n location: { pathname: route },\n }).matchIds;\n\n break;\n }\n\n default: {\n break;\n }\n }\n\n if (!matchIds) return Observable.empty();\n\n return Observable.of(\n addNearestMatchId({ matchIds: matchIds.toArray() })\n );\n });\n };\n};\n\nmoduleLocator.get('stream').subscribe(streamModule => {\n const handleMatchEnded = makeHandleMatchEnded(streamModule);\n\n registerEpic(handleMatchEnded);\n});\n","import core, { GQL } from '@gin-betting/core';\nimport matchList from '@gin-betting/match-list';\nimport { Middleware, MiddlewareAPI, TypedAction } from 'redux';\n\nimport { ExtendedRouts, matchListRoutes } from 'app-constants';\nimport { State } from 'types';\n\nconst {\n actions: { resetCategory, searchMatches },\n} = matchList;\nconst {\n services: { getHistory },\n utils: { isOneOfPages },\n entities: {\n constants: { GROUP_GET_MATCHES_REQUEST },\n },\n} = core;\n\nfunction makeMatchListMiddleware(): Middleware {\n let prevPathname: string;\n\n return ({ dispatch }: MiddlewareAPI) => {\n const history = getHistory();\n\n history.listen(({ pathname }) => {\n // TODO: check. may be we should reset category when user go out from matchList?\n if (!matchListRoutes.includes(pathname)) return;\n\n if (prevPathname && pathname !== prevPathname) {\n dispatch(resetCategory({ listType: prevPathname }));\n }\n\n prevPathname = pathname;\n });\n\n return next => (action: TypedAction) => {\n modifyActionRankOrder(action);\n\n return next(action);\n };\n };\n}\n\nfunction modifyActionRankOrder(action: TypedAction): void {\n if (\n !isMatchListGetMatchesAction(action) ||\n isOneOfPages([ExtendedRouts.RESULTS_LIST])\n ) {\n return;\n }\n\n if (isOneOfPages([ExtendedRouts.TOURNAMENT])) {\n action.payload.variables.order = GQL.SportEventOrder.RANK_DEFAULT;\n\n return;\n }\n\n action.payload.variables.order = GQL.SportEventOrder.RANK_PERSONALIZED;\n}\n\nfunction isMatchListGetMatchesAction(\n action: any\n): action is ReturnType {\n return action.meta && action.meta.group === GROUP_GET_MATCHES_REQUEST;\n}\n\nexport default makeMatchListMiddleware;\n","import matchList, { MatchList, Pagination } from '@gin-betting/match-list';\n\nimport * as components from './components';\nimport * as epics from './epics';\nimport { getTopMarketComponentsBySport } from './getTopMarkets';\nimport messages from './messages';\nimport middleware from './middleware';\nimport reducer, { paginationReducer } from './reducer';\nimport * as selectors from './selectors';\n\nexport { MatchList, Pagination };\nexport default {\n components,\n ...matchList,\n selectors: { ...matchList.selectors, ...selectors },\n epics,\n reducer,\n paginationReducer,\n getTopMarketComponentsBySport,\n messages,\n middleware,\n};\n","import matchList from '@gin-betting/match-list';\n\nimport {\n matchListRoutes,\n OUTRIGHTS_LIMIT_PER_PAGE,\n POLLING_EDGE_PAGE,\n} from 'app-constants';\nimport { getMatchesLimitPerPage } from './utils';\n\nexport const paginationReducer = () =>\n matchList.pagination.reducer({\n matchesLimitPerPage: getMatchesLimitPerPage(),\n outrightsLimitPerPage: OUTRIGHTS_LIMIT_PER_PAGE,\n pollingEdgePage: POLLING_EDGE_PAGE,\n routes: matchListRoutes,\n });\n\nexport default () =>\n matchList.reducer(getMatchesLimitPerPage(), matchListRoutes);\n","export const availableIds = [\n 'gin:bfa2fe2c-2e1c-48e5-9c25-f9d2d2bb8f71',\n 'gt:4629',\n] as const;\n","import { Sports } from '@gin-betting/constants';\n\nexport const availableIds = [\n Sports.ESPORTS_COUNTER_STRIKE,\n Sports.ESPORTS_DOTA_2,\n Sports.ESPORTS_VALORANT,\n] as const;\n","export const availableIds = [\n 'gin:908bd706-afb8-44aa-bad4-bd9b6375a671',\n 'gin:66e4c786-dbe1-4410-b817-ca52cd9d2e35',\n] as const;\n","import { useEffect, useState } from 'react';\nimport core from '@gin-betting/core';\nimport responsiveComponents from '@gin-betting/responsive-components';\nimport competitorBg from 'assets/competitor-bg';\nimport sportBg from 'assets/sport-bg';\nimport tournamentBg from 'assets/tournament-bg';\n\nconst { useResponsiveContainer } = responsiveComponents;\nconst {\n utils: { getIdsFromCompetitorId },\n} = core;\n\ninterface Input {\n competitorIds: string[];\n tournamentId: string;\n sportId: string;\n}\n\ninterface Output {\n bg: string | null;\n containerRef: (node: Element | null) => void;\n}\n\nexport default function useSportEventBg({\n competitorIds: competitorIdPaths,\n tournamentId,\n sportId,\n}: Input): Output {\n const [bg, setBg] = useState(null);\n const { containerRef, currentBreakpoints, node } = useResponsiveContainer({\n breakpoints: { medium: 440 },\n });\n\n const isMobile: null | boolean = node\n ? !currentBreakpoints.includes('medium')\n : null;\n\n const competitorIds = competitorIdPaths.map(\n id => getIdsFromCompetitorId(id).competitorId\n );\n\n useEffect(() => {\n if (isMobile === null) return;\n\n let isMounted = true;\n\n (\n competitorBg(competitorIds, isMobile) ||\n tournamentBg([tournamentId], isMobile) ||\n sportBg([sportId], isMobile)\n )?.then(image => {\n if (!isMounted || !image) return;\n\n setBg(image);\n });\n\n return () => {\n isMounted = false;\n };\n }, [competitorIds, tournamentId, sportId, isMobile]);\n\n return {\n containerRef,\n bg,\n };\n}\n","import { intersection } from 'lodash';\n\nimport { availableIds } from './constants';\n\nexport default function loadCompetitorBg(\n ids: string[],\n isMobile: boolean\n): Promise | null {\n const firstId = intersection(availableIds, ids)[0] as\n | typeof availableIds[number]\n | undefined;\n\n if (!firstId) return null;\n\n let promise: Promise<{ default: { [key: string]: string } }>;\n\n if (isMobile) {\n promise = import(\n /* webpackChunkName: \"competitor-bg-mob-dark\" */ './mob/dark'\n );\n } else {\n promise = import(/* webpackChunkName: \"competitor-bg-dark\" */ './dark');\n }\n\n return promise.then(mapping => mapping.default[firstId]);\n}\n","import { intersection } from 'lodash';\n\nimport { availableIds } from './constants';\n\nexport default function loadTournamentBg(\n ids: string[],\n isMobile: boolean\n): Promise | null {\n const firstId = intersection(availableIds, ids)[0] as\n | typeof availableIds[number]\n | undefined;\n\n if (!firstId) return null;\n\n let promise: Promise<{ default: { [key: string]: string } }>;\n\n if (isMobile) {\n promise = import(\n /* webpackChunkName: \"tournament-bg-mob-dark\" */ './mob/dark'\n );\n } else {\n promise = import(/* webpackChunkName: \"tournament-bg-dark\" */ './dark');\n }\n\n return promise.then(mapping => mapping.default[firstId]);\n}\n","import { intersection } from 'lodash';\n\nimport { availableIds } from './constants';\n\nexport default function loadSportBg(\n ids: string[],\n isMobile: boolean\n): Promise | null {\n const firstId = intersection(availableIds, ids)[0] as\n | typeof availableIds[number]\n | undefined;\n\n if (!firstId) return null;\n\n let promise: Promise<{ default: { [key: string]: string } }>;\n\n if (isMobile) {\n promise = import(\n /* webpackChunkName: \"sport-bg-mob-dark\" */ './mob/dark'\n );\n } else {\n promise = import(/* webpackChunkName: \"sport-bg-dark\" */ './dark');\n }\n\n return promise.then(mapping => mapping.default[firstId]);\n}\n","import React, { memo, useCallback } from 'react';\nimport LazyImage from '@gin-betting/components/lazy-image';\n\nimport useSportEventBg from './useSportEventBg';\n\nimport './sportEventBg.scss';\n\ntype Props = {\n competitorIds: string[];\n tournamentId: string;\n sportId: string;\n};\n\nconst SportEventBg: React.FC = ({\n competitorIds,\n tournamentId,\n sportId,\n}) => {\n const { containerRef, bg } = useSportEventBg({\n competitorIds,\n tournamentId,\n sportId,\n });\n\n const children = useCallback(\n ({ ref, bgImageStyle }) => (\n
\n ),\n []\n );\n\n return (\n \n {bg && (\n \n {children}\n \n )}\n
\n );\n};\n\nexport default memo(SportEventBg);\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"rootResponse__container___2aflL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"settingsButtonMobile__container___1Icah\",\"icon\":\"settingsButtonMobile__icon___3uNvV\",\"is-open\":\"settingsButtonMobile__is-open___1Esc1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper-top-menu\":\"matchListNavigation__wrapper-top-menu___1xBRh\"};","import loadable from '@loadable/component';\n\nexport const loadBetsHistoryModule = /* #__LOADABLE__ */ () =>\n import(/* webpackChunkName: \"bets-history-module\" */ './index');\n\nexport const AsyncBetList = loadable(loadBetsHistoryModule, {\n resolveComponent: ({ default: betsHistoryModule }) =>\n betsHistoryModule.components.BetList,\n});\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"header__container___1V3UI\",\"categories\":\"header__categories___3PXsS\",\"category\":\"header__category___CZIi-\",\"active\":\"header__active___1ch5U\",\"type\":\"header__type___1CeuJ\",\"icon\":\"header__icon___kdE6n\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"top-zone-banners\":\"banners__top-zone-banners___1T9rM\",\"is-colorful\":\"banners__is-colorful___22R6L\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"icon-_basque-country\":\"flags__icon-_basque-country___CmAiE\",\"icon-_british-antarctic-territory\":\"flags__icon-_british-antarctic-territory___1QxOw\",\"icon-_commonwealth\":\"flags__icon-_commonwealth___2hPEH\",\"icon-_gosquared\":\"flags__icon-_gosquared___l9Y_q\",\"icon-_mars\":\"flags__icon-_mars___11r5G\",\"icon-_nagorno-karabakh\":\"flags__icon-_nagorno-karabakh___1C4wR\",\"icon-_nato\":\"flags__icon-_nato___UQ8qk\",\"icon-_northern-cyprus\":\"flags__icon-_northern-cyprus___2d9oS\",\"icon-_olympics\":\"flags__icon-_olympics___1A7MD\",\"icon-_red-cross\":\"flags__icon-_red-cross___mTepe\",\"icon-_somaliland\":\"flags__icon-_somaliland___3eeDI\",\"icon-_south-ossetia\":\"flags__icon-_south-ossetia___QDHAa\",\"icon-_united-nations\":\"flags__icon-_united-nations___1QxI4\",\"icon-_unknown\":\"flags__icon-_unknown___2Bkly\",\"icon-AB\":\"flags__icon-AB___1_toK\",\"icon-AD\":\"flags__icon-AD___2hdxF\",\"icon-AE\":\"flags__icon-AE___3Autd\",\"icon-AF\":\"flags__icon-AF___1bVR4\",\"icon-AG\":\"flags__icon-AG___1YJSE\",\"icon-AI\":\"flags__icon-AI___B1HCA\",\"icon-AL\":\"flags__icon-AL___2Lk5C\",\"icon-AM\":\"flags__icon-AM___PNupw\",\"icon-AN\":\"flags__icon-AN___1YcEj\",\"icon-AO\":\"flags__icon-AO___1uddD\",\"icon-AQ\":\"flags__icon-AQ___1L5uF\",\"icon-AR\":\"flags__icon-AR___2zCIY\",\"icon-AS\":\"flags__icon-AS___19a8g\",\"icon-AT\":\"flags__icon-AT___JxvGp\",\"icon-AU\":\"flags__icon-AU___2umb3\",\"icon-AW\":\"flags__icon-AW___Dl3Ks\",\"icon-AX\":\"flags__icon-AX___2xJeG\",\"icon-AZ\":\"flags__icon-AZ___1POi4\",\"icon-BA\":\"flags__icon-BA___3R0Ip\",\"icon-BB\":\"flags__icon-BB___g68NX\",\"icon-BD\":\"flags__icon-BD___1opvN\",\"icon-BE\":\"flags__icon-BE___3zCL8\",\"icon-BF\":\"flags__icon-BF___34By0\",\"icon-BG\":\"flags__icon-BG___2HDUH\",\"icon-BH\":\"flags__icon-BH___Bo4ZU\",\"icon-BI\":\"flags__icon-BI___1QKgB\",\"icon-BJ\":\"flags__icon-BJ___2q6Bh\",\"icon-BL\":\"flags__icon-BL___2M81H\",\"icon-BM\":\"flags__icon-BM___14aSI\",\"icon-BN\":\"flags__icon-BN___2qLiX\",\"icon-BO\":\"flags__icon-BO___agAok\",\"icon-BR\":\"flags__icon-BR___3J8-R\",\"icon-BS\":\"flags__icon-BS___uEFG1\",\"icon-BT\":\"flags__icon-BT___1M62Z\",\"icon-BW\":\"flags__icon-BW___25UUE\",\"icon-BY\":\"flags__icon-BY___2Z7ER\",\"icon-BZ\":\"flags__icon-BZ___HXhyN\",\"icon-CA\":\"flags__icon-CA___306ul\",\"icon-CC\":\"flags__icon-CC___brz6O\",\"icon-CD\":\"flags__icon-CD___3eI-r\",\"icon-CF\":\"flags__icon-CF___2pOhN\",\"icon-CG\":\"flags__icon-CG___2UZ2R\",\"icon-CH\":\"flags__icon-CH___3d2Ra\",\"icon-CI\":\"flags__icon-CI___G0NOG\",\"icon-CK\":\"flags__icon-CK___3wZei\",\"icon-CL\":\"flags__icon-CL___19gkg\",\"icon-CM\":\"flags__icon-CM___2ZwVE\",\"icon-CN\":\"flags__icon-CN___3Wk5p\",\"icon-CO\":\"flags__icon-CO___1vbTZ\",\"icon-CR\":\"flags__icon-CR___28b0a\",\"icon-CU\":\"flags__icon-CU___6Q2W1\",\"icon-CV\":\"flags__icon-CV___ABllM\",\"icon-CW\":\"flags__icon-CW___2Cbg3\",\"icon-CX\":\"flags__icon-CX___2BvAm\",\"icon-CY\":\"flags__icon-CY___3Xu82\",\"icon-CZ\":\"flags__icon-CZ___TyOF7\",\"icon-DE\":\"flags__icon-DE___pUvjg\",\"icon-DJ\":\"flags__icon-DJ___3iZ71\",\"icon-DK\":\"flags__icon-DK___3kTDV\",\"icon-DM\":\"flags__icon-DM___FhrlA\",\"icon-DO\":\"flags__icon-DO___YI2Fq\",\"icon-DZ\":\"flags__icon-DZ___3Zq0G\",\"icon-EC\":\"flags__icon-EC___1Z8Ik\",\"icon-EE\":\"flags__icon-EE___2WeRG\",\"icon-EG\":\"flags__icon-EG___2wvN-\",\"icon-EH\":\"flags__icon-EH___btTMg\",\"icon-ER\":\"flags__icon-ER___nhoZO\",\"icon-ES\":\"flags__icon-ES___23eKN\",\"icon-ET\":\"flags__icon-ET___zTTL6\",\"icon-EU\":\"flags__icon-EU___3uzTg\",\"icon-FI\":\"flags__icon-FI___1dOa9\",\"icon-FJ\":\"flags__icon-FJ___IV7Qe\",\"icon-FK\":\"flags__icon-FK___K2ClW\",\"icon-FM\":\"flags__icon-FM___GSZj1\",\"icon-FO\":\"flags__icon-FO___1bKTY\",\"icon-FR\":\"flags__icon-FR___W0tBm\",\"icon-GA\":\"flags__icon-GA___I3zdg\",\"icon-GB-ENG\":\"flags__icon-GB-ENG___3U524\",\"icon-GB-NIR\":\"flags__icon-GB-NIR___2uSqg\",\"icon-GB-SCT\":\"flags__icon-GB-SCT___1j3QQ\",\"icon-GB-WLS\":\"flags__icon-GB-WLS___1XauT\",\"icon-GB\":\"flags__icon-GB___2IdPl\",\"icon-GD\":\"flags__icon-GD___1OMm-\",\"icon-GE\":\"flags__icon-GE___1lt_Y\",\"icon-GG\":\"flags__icon-GG___3V5Vs\",\"icon-GH\":\"flags__icon-GH___2p8ha\",\"icon-GI\":\"flags__icon-GI___b1AcC\",\"icon-GL\":\"flags__icon-GL___2ntud\",\"icon-GM\":\"flags__icon-GM___1WKo2\",\"icon-GN\":\"flags__icon-GN___2RLjn\",\"icon-GQ\":\"flags__icon-GQ___3wAW6\",\"icon-GR\":\"flags__icon-GR___3P7h0\",\"icon-GS\":\"flags__icon-GS___2XQCF\",\"icon-GT\":\"flags__icon-GT___3KHR7\",\"icon-GU\":\"flags__icon-GU___1AVMn\",\"icon-GW\":\"flags__icon-GW___wZYEL\",\"icon-GY\":\"flags__icon-GY___3o7aO\",\"icon-HK\":\"flags__icon-HK___1SX17\",\"icon-HN\":\"flags__icon-HN___3tXLN\",\"icon-HR\":\"flags__icon-HR___1jECl\",\"icon-HT\":\"flags__icon-HT___2EmyC\",\"icon-HU\":\"flags__icon-HU___1HMKY\",\"icon-IC\":\"flags__icon-IC___rFCjh\",\"icon-ID\":\"flags__icon-ID___19gcF\",\"icon-IE\":\"flags__icon-IE___1DdBa\",\"icon-IL\":\"flags__icon-IL___1IA19\",\"icon-IM\":\"flags__icon-IM___3WOcw\",\"icon-IN\":\"flags__icon-IN___1erxM\",\"icon-IQ\":\"flags__icon-IQ___1QG3D\",\"icon-IR\":\"flags__icon-IR___3-vB5\",\"icon-IS\":\"flags__icon-IS___1Mt-x\",\"icon-IT\":\"flags__icon-IT___1NzjX\",\"icon-JE\":\"flags__icon-JE___1omKH\",\"icon-JM\":\"flags__icon-JM___6-NoU\",\"icon-JO\":\"flags__icon-JO___2ngf2\",\"icon-JP\":\"flags__icon-JP___3mBJ3\",\"icon-KE\":\"flags__icon-KE___34LNz\",\"icon-KG\":\"flags__icon-KG___1y2Ir\",\"icon-KH\":\"flags__icon-KH___3j6sh\",\"icon-KI\":\"flags__icon-KI___3vlU8\",\"icon-KM\":\"flags__icon-KM___JcEbB\",\"icon-KN\":\"flags__icon-KN___1S4Tu\",\"icon-KP\":\"flags__icon-KP___1aoea\",\"icon-KR\":\"flags__icon-KR___3PKfd\",\"icon-KW\":\"flags__icon-KW___3KVnh\",\"icon-KY\":\"flags__icon-KY___1G0Uw\",\"icon-KZ\":\"flags__icon-KZ___15GhQ\",\"icon-LA\":\"flags__icon-LA___1Yl_b\",\"icon-LB\":\"flags__icon-LB___1-6A1\",\"icon-LC\":\"flags__icon-LC___4x7G_\",\"icon-LI\":\"flags__icon-LI___6zEwz\",\"icon-LK\":\"flags__icon-LK___2MsAC\",\"icon-LR\":\"flags__icon-LR___1Urm8\",\"icon-LS\":\"flags__icon-LS___zdX6l\",\"icon-LT\":\"flags__icon-LT___2Op_-\",\"icon-LU\":\"flags__icon-LU___3Oipq\",\"icon-LV\":\"flags__icon-LV___pFStU\",\"icon-LY\":\"flags__icon-LY___2LLwJ\",\"icon-MA\":\"flags__icon-MA___34-De\",\"icon-MC\":\"flags__icon-MC___3fbyx\",\"icon-MD\":\"flags__icon-MD___3CTIY\",\"icon-ME\":\"flags__icon-ME___2HaxN\",\"icon-MF\":\"flags__icon-MF___25QRi\",\"icon-MG\":\"flags__icon-MG___1wW8K\",\"icon-MH\":\"flags__icon-MH___dXxmY\",\"icon-MK\":\"flags__icon-MK___3bo66\",\"icon-ML\":\"flags__icon-ML___2hzkx\",\"icon-MM\":\"flags__icon-MM___3WYHs\",\"icon-MN\":\"flags__icon-MN___TjZdU\",\"icon-MO\":\"flags__icon-MO___2O8e6\",\"icon-MP\":\"flags__icon-MP___3LdW_\",\"icon-MQ\":\"flags__icon-MQ____N2YU\",\"icon-MR\":\"flags__icon-MR___1ZyDV\",\"icon-MS\":\"flags__icon-MS___EZ-S7\",\"icon-MT\":\"flags__icon-MT___2i8u_\",\"icon-MU\":\"flags__icon-MU___3hA23\",\"icon-MV\":\"flags__icon-MV___19FNq\",\"icon-MW\":\"flags__icon-MW___2AzaC\",\"icon-MX\":\"flags__icon-MX___2uYbf\",\"icon-MY\":\"flags__icon-MY___z23t5\",\"icon-MZ\":\"flags__icon-MZ___20GU_\",\"icon-NA\":\"flags__icon-NA___2LnrT\",\"icon-NC\":\"flags__icon-NC___18gUJ\",\"icon-NE\":\"flags__icon-NE___3oYtB\",\"icon-NF\":\"flags__icon-NF___3j0u1\",\"icon-NG\":\"flags__icon-NG___1Ey_m\",\"icon-NI\":\"flags__icon-NI___2Jdxk\",\"icon-NL\":\"flags__icon-NL___2dwFL\",\"icon-NO\":\"flags__icon-NO___2lxFH\",\"icon-NP\":\"flags__icon-NP___yDBnf\",\"icon-NR\":\"flags__icon-NR___3Qhu7\",\"icon-NU\":\"flags__icon-NU___gWbN0\",\"icon-NZ\":\"flags__icon-NZ___KvAt6\",\"icon-OM\":\"flags__icon-OM___1bBvY\",\"icon-PA\":\"flags__icon-PA___1vSj4\",\"icon-PE\":\"flags__icon-PE___3tRc7\",\"icon-PF\":\"flags__icon-PF___3xdy-\",\"icon-PG\":\"flags__icon-PG___3WxZo\",\"icon-PH\":\"flags__icon-PH___2XG8c\",\"icon-PK\":\"flags__icon-PK___2zO34\",\"icon-PL\":\"flags__icon-PL___2RdTj\",\"icon-PN\":\"flags__icon-PN___1yMoc\",\"icon-PR\":\"flags__icon-PR___QtP4d\",\"icon-PS\":\"flags__icon-PS___FEV_R\",\"icon-PT\":\"flags__icon-PT___3bNdk\",\"icon-PW\":\"flags__icon-PW___2fEJa\",\"icon-PY\":\"flags__icon-PY___1PJyz\",\"icon-QA\":\"flags__icon-QA___3yBIf\",\"icon-RO\":\"flags__icon-RO___1sPVa\",\"icon-RS\":\"flags__icon-RS___1frIJ\",\"icon-RU\":\"flags__icon-RU___3E8nc\",\"icon-RW\":\"flags__icon-RW___3fOaT\",\"icon-SA\":\"flags__icon-SA___2v6yA\",\"icon-SB\":\"flags__icon-SB___3GDsU\",\"icon-SC\":\"flags__icon-SC___1HeC7\",\"icon-SD\":\"flags__icon-SD___CUr9L\",\"icon-SE\":\"flags__icon-SE___1OfoC\",\"icon-SG\":\"flags__icon-SG___3hf_e\",\"icon-SH\":\"flags__icon-SH___1m1ey\",\"icon-SI\":\"flags__icon-SI___3T6LD\",\"icon-SK\":\"flags__icon-SK___3nmNT\",\"icon-SL\":\"flags__icon-SL___1w0C0\",\"icon-SM\":\"flags__icon-SM___1VWUW\",\"icon-SN\":\"flags__icon-SN___21EnE\",\"icon-SO\":\"flags__icon-SO___2ttQd\",\"icon-SR\":\"flags__icon-SR___15XSO\",\"icon-SS\":\"flags__icon-SS___1A1rE\",\"icon-ST\":\"flags__icon-ST___2eRIf\",\"icon-SV\":\"flags__icon-SV___13Ei7\",\"icon-SY\":\"flags__icon-SY___1pV3l\",\"icon-SZ\":\"flags__icon-SZ___1G5ZX\",\"icon-TC\":\"flags__icon-TC___C52pJ\",\"icon-TD\":\"flags__icon-TD___4wWUC\",\"icon-TF\":\"flags__icon-TF___3zpVE\",\"icon-TG\":\"flags__icon-TG___3_xLS\",\"icon-TH\":\"flags__icon-TH___xmeKV\",\"icon-TJ\":\"flags__icon-TJ___3bml0\",\"icon-TK\":\"flags__icon-TK___2qSdC\",\"icon-TL\":\"flags__icon-TL___1UgaI\",\"icon-TM\":\"flags__icon-TM___3MiZr\",\"icon-TN\":\"flags__icon-TN___3tCfG\",\"icon-TO\":\"flags__icon-TO___2R6nT\",\"icon-TR\":\"flags__icon-TR___2ilua\",\"icon-TT\":\"flags__icon-TT___U90ne\",\"icon-TV\":\"flags__icon-TV___3d88q\",\"icon-TW\":\"flags__icon-TW___3mY8e\",\"icon-TZ\":\"flags__icon-TZ___27NC0\",\"icon-UA\":\"flags__icon-UA___-a-32\",\"icon-UG\":\"flags__icon-UG___2FbCn\",\"icon-US\":\"flags__icon-US___3eKKW\",\"icon-UY\":\"flags__icon-UY___QUz70\",\"icon-UZ\":\"flags__icon-UZ___pu7t3\",\"icon-VA\":\"flags__icon-VA___gju95\",\"icon-VC\":\"flags__icon-VC___1rTPr\",\"icon-VE\":\"flags__icon-VE___cQ64p\",\"icon-VG\":\"flags__icon-VG___23tCc\",\"icon-VI\":\"flags__icon-VI___3Tjmn\",\"icon-VN\":\"flags__icon-VN___THThn\",\"icon-VU\":\"flags__icon-VU___oDzb6\",\"icon-WF\":\"flags__icon-WF___1VqhZ\",\"icon-WS\":\"flags__icon-WS___2IzpP\",\"icon-WW-AFR\":\"flags__icon-WW-AFR___250ey\",\"icon-WW-AMERICAS\":\"flags__icon-WW-AMERICAS___o0vHi\",\"icon-WW-ASI\":\"flags__icon-WW-ASI___2ECfi\",\"icon-WW-AUS\":\"flags__icon-WW-AUS___19G5F\",\"icon-WW-CIS\":\"flags__icon-WW-CIS___3gDEW\",\"icon-WW-EUR\":\"flags__icon-WW-EUR___3gncq\",\"icon-WW-NAM\":\"flags__icon-WW-NAM___LFafo\",\"icon-WW-OCEANIA\":\"flags__icon-WW-OCEANIA___3rZWC\",\"icon-WW-SAM\":\"flags__icon-WW-SAM___3K7E0\",\"icon-WW-SEA\":\"flags__icon-WW-SEA___3QBTB\",\"icon-WW\":\"flags__icon-WW___3yYOo\",\"icon-XK\":\"flags__icon-XK___1U9lF\",\"icon-YE\":\"flags__icon-YE___1S8BL\",\"icon-YT\":\"flags__icon-YT___1F4-n\",\"icon-ZA\":\"flags__icon-ZA___22hmY\",\"icon-ZM\":\"flags__icon-ZM___22Je7\",\"icon-ZW\":\"flags__icon-ZW___1fhrq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"live\":\"liveLabel__live___zIQYS\",\"is-faded\":\"liveLabel__is-faded___3Wp1X\"};","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"chevron_66dd4\",\n \"use\": \"chevron_66dd4-usage\",\n \"viewBox\": \"0 0 512 512\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"tournamentHeader__header___2DV_b\"};","import { createRef, RefObject, useCallback, useState } from 'react';\nimport Scrollbars, { positionValues } from 'react-custom-scrollbars';\nimport core, { View } from '@gin-betting/core';\n\nimport { useMemoSelector } from 'hooks';\nimport { selectFilteredScores } from 'selectors';\nimport { MatchPartInfo } from 'types';\n\ninterface Input {\n matchId: string;\n}\n\ninterface Output {\n meta: View.Meta[];\n server: string | null;\n scores: View.ScoreInfo[];\n scrollBarsRef: RefObject;\n isArrowRotated: boolean;\n onScrollUpdate: (values: positionValues) => void;\n onArrowClick: () => void;\n currentMatchPart: MatchPartInfo | null;\n}\n\nconst {\n entities: {\n selectors: { selectMatchMetaValueByName },\n },\n} = core;\n\nfunction usePromoMatchDynamicScoreList({ matchId }: Input): Output {\n const [isArrowRotated, changeIsArrowRotated] = useState(false);\n\n const { scores, currentMatchPart, meta } = useMemoSelector(\n selectFilteredScores,\n {\n matchId,\n }\n );\n const server = useMemoSelector(selectMatchMetaValueByName, {\n matchId,\n metaName: 'server',\n });\n\n const scrollBarsRef = createRef();\n\n const onArrowClick = useCallback(() => {\n if (!scrollBarsRef.current) return;\n\n const {\n getValues,\n scrollToBottom,\n scrollToTop,\n } = scrollBarsRef.current;\n\n const values = getValues();\n\n if (values.top > 0.5) {\n scrollToTop();\n changeIsArrowRotated(false);\n } else {\n scrollToBottom();\n changeIsArrowRotated(true);\n }\n }, [scrollBarsRef]);\n\n const onScrollUpdate = useCallback((values: positionValues) => {\n changeIsArrowRotated(values.top > 0.5);\n }, []);\n\n return {\n server,\n scores,\n scrollBarsRef,\n isArrowRotated,\n onScrollUpdate,\n onArrowClick,\n currentMatchPart,\n meta,\n };\n}\n\nexport default usePromoMatchDynamicScoreList;\n","import React from 'react';\nimport Scrollbars from 'react-custom-scrollbars';\nimport { Sports } from '@gin-betting/constants';\nimport { App } from '@gin-betting/core';\nimport cn from 'classnames';\nimport { partition, startCase } from 'lodash';\n\nimport { getMapNameFromMeta, getScoreTitle } from 'utils';\nimport usePromoMatchDynamicScoreList from './usePromoMatchDynamicScoreList';\n\nimport './promoMatchDynamicScoreList.scss';\n\ntype Props = {\n matchId: string;\n sportId: string;\n showDynamicScores: boolean;\n};\n\nconst PromoMatchDynamicScoreList: React.FC = ({\n matchId,\n sportId,\n showDynamicScores,\n}) => {\n const {\n scrollBarsRef,\n isArrowRotated,\n server,\n scores,\n onArrowClick,\n onScrollUpdate,\n currentMatchPart,\n meta,\n } = usePromoMatchDynamicScoreList({ matchId });\n\n const [[gamePoints], scoreWithoutGamePoint] =\n sportId === Sports.TENNIS\n ? partition(scores, s => s.type === App.ScoreTypes.TYPE_GAME_POINTS)\n : [[], scores];\n\n const [[totalScore], scoresWithoutTotal] = partition(\n scoreWithoutGamePoint,\n s => s.type === App.ScoreTypes.TYPE_TOTAL\n );\n const homeTotalScore = totalScore?.home ?? '';\n const awayTotalScore = totalScore?.away ?? '';\n\n const TennisPoints =\n showDynamicScores && gamePoints ? (\n
\n
{gamePoints.home}
\n
\n {getScoreTitle({ meta, score: gamePoints })}\n
\n
{gamePoints.away}
\n
\n ) : null;\n\n return (\n \n {TennisPoints}\n 4,\n })}\n >\n {showDynamicScores && (\n \n )}\n
{homeTotalScore}
\n \n :\n
\n\n
{awayTotalScore}
\n\n {showDynamicScores && (\n \n )}\n \n {showDynamicScores && (\n \n \n {scoresWithoutTotal\n .slice()\n .reverse()\n .map(({ type, indexNumber, home, away }) => (\n
\n
{home}
\n \n {getMapNameFromMeta({\n format: 'short',\n map: getScoreTitle({\n meta,\n score: {\n type,\n indexNumber,\n },\n currentMatchPart,\n }),\n })}\n
\n
{away}
\n \n ))}\n \n\n {scoresWithoutTotal.length > 2 && (\n \n )}\n \n )}\n \n );\n};\n\nexport default PromoMatchDynamicScoreList;\n","import { MessageDescriptor } from 'react-intl';\nimport {\n BannerZoneLocation,\n FeaturedTournamentZone,\n TimePeriod,\n} from '@gin-betting/constants';\nimport core, { GQL } from '@gin-betting/core';\n\nimport globalMsgs from 'messages';\nimport { WidgetType } from './types';\n\nconst {\n constants: { SportType },\n} = core;\n\nexport const NAME = 'promo' as const;\n\nexport const GET_FEATURED_TOURNAMENTS_REQUEST = `promo/GET_FEATURED_TOURNAMENTS:REQUEST` as const;\nexport const GET_FEATURED_TOURNAMENTS_SUCCESS = `promo/GET_FEATURED_TOURNAMENTS:SUCCESS` as const;\nexport const GET_FEATURED_TOURNAMENTS_FAIL = `promo/GET_FEATURED_TOURNAMENTS:FAIL` as const;\n\nexport const GET_MISSING_MATCHES_REQUEST = `promo/GET_MISSING_MATCHES:REQUEST` as const;\n\nexport const DEFAULT_CONFIG_LIST_SIZE = 5 as const;\n\nexport const ALL = 'all' as const;\n\nexport const WIDGETS = ['daily', 'weekly', 'monthly'] as const;\n\nexport const MARKET_LIMIT = 3 as const;\n\nexport const NUMBER_OF_ROWS = 5;\n\nexport const ZONE_LOCATIONS = [\n BannerZoneLocation.TOP_SPORT_EVENTS,\n BannerZoneLocation.POPULAR_SPORT_EVENTS,\n BannerZoneLocation.FAVORITES_SPORT_EVENTS,\n] as const;\n\nexport const FEATURED_ZONES_MAPPING = {\n [SportType.Classic]: FeaturedTournamentZone.ClassicLeftWeb,\n [SportType.Esport]: FeaturedTournamentZone.EsportLeftWeb,\n [SportType.Mix]: FeaturedTournamentZone.MixLeftWeb,\n};\n\nexport const FEATURED_SPORT_TYPE_MAPPING = {\n [GQL.FeaturedSportType.ESPORT]: SportType.Esport,\n [GQL.FeaturedSportType.CLASSIC]: SportType.Classic,\n};\n\nexport enum FeaturedProviderConfigType {\n CustomList = 'CUSTOM_LIST',\n Tournament = 'TOURNAMENT',\n}\n\nexport const MAPPING_ZONE = {\n [BannerZoneLocation.POPULAR_SPORT_EVENTS]: globalMsgs.popular,\n [BannerZoneLocation.TOP_SPORT_EVENTS]: globalMsgs.top,\n [BannerZoneLocation.FAVORITES_SPORT_EVENTS]: globalMsgs.favorites,\n};\n\nexport const MAPPING_PERIOD: {\n [key in WidgetType]: MessageDescriptor;\n} = {\n daily: globalMsgs.daily,\n weekly: globalMsgs.weekly,\n monthly: globalMsgs.monthly,\n};\n\nexport const MOBILE_TOP_MATCH_LIST_INDEX_CONFIG: {\n [key in WidgetType]: number;\n} = {\n daily: TimePeriod.Daily,\n weekly: TimePeriod.Weekly,\n monthly: TimePeriod.Monthly,\n};\n\nexport const matchPropsToPick = [\n 'id' as const,\n 'marketsCount' as const,\n 'sportId' as const,\n 'score' as const,\n 'tournament' as const,\n 'startTime' as const,\n 'streams' as const,\n 'status' as const,\n 'liveCoverage' as const,\n 'slug' as const,\n 'meta' as const,\n];\n\nexport const marketPropsToPick = [\n 'id' as const,\n 'name' as const,\n 'odds' as const,\n];\n\nexport const oddsPropsToPick = [\n 'id' as const,\n 'name' as const,\n 'competitorIds' as const,\n];\n\nexport const tournamentPropsToPick = [\n 'id' as const,\n 'name' as const,\n 'slug' as const,\n];\n","import core, { GQL } from '@gin-betting/core';\n\nimport {\n GET_FEATURED_TOURNAMENTS_REQUEST,\n GET_MISSING_MATCHES_REQUEST,\n} from './constants';\nimport {\n GetFeaturedZoneConfigsRequestAction,\n GetFeaturedZoneConfigsRequestActionArgs,\n} from './types';\n\nconst {\n entities: {\n actions: { makeGetMissingMatches },\n },\n} = core;\n\nexport const getFeaturedZoneConfigs = (\n variables: GQL.GetFeaturedZoneConfigsQueryVariables,\n args: GetFeaturedZoneConfigsRequestActionArgs\n): GetFeaturedZoneConfigsRequestAction => {\n return {\n type: GET_FEATURED_TOURNAMENTS_REQUEST,\n payload: {\n method: 'getFeaturedZoneConfigs',\n variables,\n args,\n },\n meta: { isApiCall: true },\n };\n};\n\nexport const getMissingMatches = makeGetMissingMatches({\n type: GET_MISSING_MATCHES_REQUEST,\n withMarketsCount: true,\n});\n\nexport const Actions = {\n getFeaturedZoneConfigs,\n};\n","import React, { Fragment } from 'react';\nimport { BannerTypes } from '@gin-betting/banners';\nimport LazyImage from '@gin-betting/components/lazy-image';\nimport core from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport { Action, useAnalyticAttrs } from 'services/analytics';\nimport features from 'services/feature-manager';\n\nimport './bannersImage.scss';\n\nconst {\n utils: { getBettingOptions },\n} = core;\n\ninterface Props {\n banner: BannerTypes.BannerInfo;\n}\n\nconst BannerImage: React.FC = ({ banner }) => {\n const {\n imageHref,\n imageSrc: bannerSrc,\n title,\n buttonHref,\n buttonText,\n id,\n } = banner;\n\n const isButtonBackgroundNew = features.isActive(\n features.list.BannerButtonBackground\n );\n\n const analyticAttrs = useAnalyticAttrs();\n\n if (!bannerSrc) return null;\n\n const { locale } = getBettingOptions();\n const eventLabel = `[${locale}] ${id}`;\n\n return (\n
\n
\n \n {({ url, ref }) => {\n return (\n \n \n {url && (\n \n )}\n \n {!!buttonText && url && (\n \n {buttonText}\n \n )}\n \n );\n }}\n \n
\n
\n );\n};\n\nexport default React.memo(BannerImage);\n","import { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport bannersModule, { BannerTypes } from '@gin-betting/banners';\nimport { createSelector } from 'reselect';\n\nimport type { State } from 'types';\n\ninterface Input {\n bannerId: string;\n}\n\ninterface Output {\n banner: BannerTypes.BannerInfo | null;\n}\n\nconst {\n selectors: { selectCmsBanners },\n} = bannersModule;\n\nconst selectBannerId = (_: State, bannerId: string) => bannerId;\n\nconst makeSelector = () =>\n createSelector(\n selectCmsBanners,\n selectBannerId,\n (cmsBanners, bannerId) =>\n cmsBanners.find(banner => banner.id === bannerId) || null\n );\n\nfunction useBanners({ bannerId }: Input): Output {\n const selectBanner = useMemo(() => makeSelector(), []);\n const banner = useSelector(state => selectBanner(state, bannerId));\n\n return {\n banner,\n };\n}\n\nexport default useBanners;\n","import React from 'react';\n\nimport BannerImage from '../BannerImage';\nimport useCMSBanner from './useCMSBanner';\n\ninterface Props {\n bannerId: string;\n}\n\nconst CMSBanner: React.FC = ({ bannerId }) => {\n const { banner } = useCMSBanner({ bannerId });\n\n if (!banner) return null;\n\n return ;\n};\n\nexport default CMSBanner;\n","import React, { useMemo } from 'react';\nimport { BannerTypes } from '@gin-betting/banners';\nimport {\n BannerZoneLocation,\n SportEventBannerTheme,\n} from '@gin-betting/constants';\nimport { GQL } from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport { PromoItem } from 'components';\nimport { AsyncOddButton } from 'modules/betslip/async';\nimport favorite from 'modules/favorite';\nimport {\n Action,\n AnalyticAttrs,\n AnalyticAttrsCtx,\n Category,\n} from 'services/analytics';\nimport CMSBanner from '../CMSBanner';\n\nimport './banners.scss';\n\nconst { ToggleFavoriteButton } = favorite.components;\n\ninterface Props {\n banner: BannerTypes.BannerItem;\n zoneLocation: BannerZoneLocation;\n}\n\nconst Banner: React.FC = ({ banner, zoneLocation }) => {\n const {\n analyticAttrsForPromo,\n analyticAttrsForSportEvent,\n analyticAttrsForOddBtn,\n } = useMemo(\n () => ({\n analyticAttrsForPromo: getAnalyticAttrsForPromo(zoneLocation),\n analyticAttrsForSportEvent: getAnalyticAttrsForSportEvent(\n zoneLocation\n ),\n analyticAttrsForOddBtn: getAnalyticAttrsForOddBtn(zoneLocation),\n }),\n [zoneLocation]\n );\n\n switch (banner.type) {\n case GQL.BannerType.betting_live_of_the_day:\n case GQL.BannerType.betting_match_of_the_day:\n case GQL.BannerType.betting_sport_event: {\n const { id: matchId, type } = banner;\n\n if (!matchId) return null;\n\n const sharedProps: React.ComponentProps = {\n matchId,\n AsyncOddButton,\n type,\n favoriteButton: ,\n };\n\n if (zoneLocation === BannerZoneLocation.TOP_SLIDER) {\n if (\n banner.type === GQL.BannerType.betting_sport_event &&\n banner.theme === SportEventBannerTheme.Colorful\n ) {\n return (\n \n \n \n \n \n );\n }\n\n return (\n \n \n \n \n \n );\n }\n\n return ;\n }\n\n // TODO Ask for design\n // case GQL.BannerType.betting_tournament: {\n // const { id: tournamentId } = banner;\n //\n // return (\n // null\n // );\n // }\n\n case GQL.BannerType.cms_banner: {\n return (\n \n \n \n );\n }\n\n default: {\n return null;\n }\n }\n};\n\nconst getAnalyticAttrsForSportEvent = (\n zoneLocation: BannerZoneLocation\n): Partial => {\n switch (zoneLocation) {\n case BannerZoneLocation.TOP_SLIDER:\n return {\n 'data-category': Category.BannerTopSlider,\n 'data-action': Action.RedirectToSportEvent,\n };\n default:\n return {};\n }\n};\n\nfunction getAnalyticAttrsForPromo(\n zoneLocation: BannerZoneLocation\n): Partial {\n switch (zoneLocation) {\n case BannerZoneLocation.TOP_SLIDER:\n return {\n 'data-category': Category.BannerTopSlider,\n };\n case BannerZoneLocation.RIGHT:\n return {\n 'data-category': Category.BannerRight,\n };\n case BannerZoneLocation.RIGHT_SLIDER:\n return {\n 'data-category': Category.BannerRightSlider,\n };\n default:\n return {};\n }\n}\n\nfunction getAnalyticAttrsForOddBtn(\n zoneLocation: BannerZoneLocation\n): AnalyticAttrs {\n switch (zoneLocation) {\n case BannerZoneLocation.TOP_SLIDER: {\n return {\n 'data-category': Category.BannerTopSlider,\n 'data-action': Action.SelectOdd,\n };\n }\n\n case BannerZoneLocation.RIGHT: {\n return {\n 'data-category': Category.BannerRight,\n 'data-action': Action.SelectOdd,\n };\n }\n\n case BannerZoneLocation.RIGHT_SLIDER: {\n return {\n 'data-category': Category.BannerRightSlider,\n 'data-action': Action.SelectOdd,\n };\n }\n\n case BannerZoneLocation.RIGHT_TOP_SPORT_EVENTS: {\n return {\n 'data-category': Category.TopSportEventsRight,\n 'data-action': Action.SelectOdd,\n };\n }\n\n default: {\n return {\n 'data-category': Category.AppCategory,\n 'data-action': Action.SelectOdd,\n };\n }\n }\n}\n\nexport default Banner;\n","import React from 'react';\nimport bannersModule, { BannerTypes } from '@gin-betting/banners';\n\nimport Banner from '../Banner';\nimport useBanners from './useBanners';\n\nconst {\n hocs: { withAvailableZoneByAttributes },\n} = bannersModule;\n\ninterface OwnProps {\n zoneLocation: BannerTypes.BannerZoneLocation;\n}\n\ntype Props = OwnProps & BannerTypes.WithAvailableZoneProps;\n\nconst Banners: React.FC = React.memo(({ zoneId, zoneLocation }) => {\n const { banners } = useBanners({ zoneId });\n\n return (\n \n {banners.map((banner, idx) => (\n \n ))}\n \n );\n});\n\nexport default withAvailableZoneByAttributes(Banners);\n","import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport bannersModule, { BannerTypes } from '@gin-betting/banners';\nimport core, { API } from '@gin-betting/core';\nimport { find } from 'lodash';\nimport { createSelector } from 'reselect';\n\nimport { ACTIVE_MARKET_STATUSES } from 'app-constants';\nimport { useMemoSelector } from 'hooks';\n\ninterface Input {\n zoneId: string;\n}\n\ninterface Output {\n interval: number;\n banners: BannerTypes.BannerItem[];\n}\n\nconst {\n actions: { getBannersData },\n selectors: {\n selectCmsBanners,\n makeSelectBannerByZoneId,\n makeBannerZoneSettingsSelector,\n },\n} = bannersModule;\n\nconst {\n utils: { getBettingOptions },\n} = core;\n\nconst DEFAULT_INTERVAL = 5 * 1000;\n\nconst makeValidBannersSelector = (zoneId: string) =>\n createSelector(\n makeSelectBannerByZoneId(zoneId),\n makeBannerZoneSettingsSelector(zoneId),\n selectCmsBanners,\n (bannerZone, settings, cmsBanners) => {\n const bannerList = bannerZone?.config ?? [];\n\n const banners: BannerTypes.BannerItem[] = bannerList.filter(\n banner => {\n switch (banner.type) {\n case API.BannerType.cms_banner: {\n return !!cmsBanners.find(b => b.id === banner.id);\n }\n\n default:\n return true;\n }\n }\n );\n\n return { banners, settings };\n }\n );\n\nfunction useBannersCarousel({ zoneId }: Input): Output {\n const dispatch = useDispatch();\n\n const { banners, settings } = useMemoSelector(\n makeValidBannersSelector(zoneId)\n );\n\n const intervalPair = find(settings, { name: 'interval' });\n const interval = +(intervalPair?.value ?? DEFAULT_INTERVAL);\n\n useEffect(() => {\n dispatch(\n getBannersData({\n zoneId,\n marketStatuses: ACTIVE_MARKET_STATUSES,\n marketLimit: 1,\n sportIds: getBettingOptions().sportIds,\n })\n );\n }, [dispatch, zoneId]);\n\n return { interval, banners };\n}\n\nexport default useBannersCarousel;\n","import React from 'react';\nimport bannersModule, { BannerTypes } from '@gin-betting/banners';\n\nimport { MultiCarousel } from 'components';\nimport Banner from '../Banner';\nimport useBannersCarousel from './useBannersCarousel';\n\nimport './bannersCarousel.scss';\n\ntype Props = BannerTypes.WithAvailableZoneProps;\n\nconst {\n hocs: { withAvailableZoneByAttributes },\n} = bannersModule;\n\nconst BannersCarousel: React.FC = React.memo(\n ({ zoneId, zoneLocation }) => {\n const { interval, banners } = useBannersCarousel({ zoneId });\n\n if (!banners.length) {\n return null;\n }\n\n return (\n
\n \n {banners.map(banner => (\n \n ))}\n \n
\n );\n }\n);\n\nexport default withAvailableZoneByAttributes(BannersCarousel);\n","import core, { View } from '@gin-betting/core';\nimport { createSelector } from 'reselect';\n\nimport { LIVE_SPORTEVENT_STATUSES } from 'app-constants';\nimport { useMemoSelector } from 'hooks';\nimport { selectRouteBySportEvent } from 'selectors';\nimport { ParentPath } from 'types';\nimport {\n marketPropsToPick,\n matchPropsToPick,\n oddsPropsToPick,\n tournamentPropsToPick,\n} from '../../constants';\n\ninterface Input {\n matchId: string | null;\n}\n\ninterface Output {\n match: Pick | null;\n market: Pick | null;\n odds: Array>;\n tournament: Pick<\n View.Tournament,\n typeof tournamentPropsToPick[number]\n > | null;\n competitors: View.CompetitorsValid;\n route: ParentPath;\n isLive: boolean;\n}\n\nconst {\n entities: {\n selectors: {\n selectMatchCompetitorsValid,\n makeMatchSelector,\n makeMarketSelector,\n makeOddsByMarketSelector,\n makeTournamentSelector,\n },\n },\n} = core;\n\nconst selectMatch = makeMatchSelector({\n propsToPick: matchPropsToPick,\n});\n\nconst selectMarket = makeMarketSelector({\n propsToPick: marketPropsToPick,\n});\n\nconst selectOdds = makeOddsByMarketSelector({\n marketSelector: selectMarket,\n propsToPick: oddsPropsToPick,\n});\n\nconst selectTournament = makeTournamentSelector({\n propsToPick: tournamentPropsToPick,\n selectTournamentId: createSelector(\n selectMatch,\n match => match?.tournament ?? null\n ),\n});\n\nconst selectProps = createSelector(\n selectMatch,\n selectMarket,\n selectOdds,\n selectTournament,\n selectMatchCompetitorsValid,\n selectRouteBySportEvent,\n (match, market, odds, tournament, competitors, route) => ({\n match,\n market,\n odds,\n tournament,\n competitors,\n route,\n })\n);\n\nconst makePropsSelector = (): typeof selectProps => selectProps;\n\nconst useColorfulBanner = ({ matchId }: Input): Output => {\n const {\n competitors,\n market,\n route,\n tournament,\n match,\n odds,\n } = useMemoSelector(makePropsSelector(), { matchId });\n const isLive = !!match && LIVE_SPORTEVENT_STATUSES.includes(match.status);\n\n return {\n isLive,\n competitors,\n match,\n market,\n route,\n odds,\n tournament,\n };\n};\n\nexport default useColorfulBanner;\n","import React from 'react';\nimport type { BannerTypes } from '@gin-betting/banners';\nimport { App } from '@gin-betting/core';\n\nimport {\n PromoMatchOdds,\n SmartLink,\n TopBannerCompetitorInfo,\n TopBannerMatchInfo,\n} from 'components';\nimport { AsyncOddButton } from 'modules/betslip/async';\nimport useColorfulBanner from './useColorfulBanner';\n\nimport './colorfulBanner.scss';\n\ninterface Props {\n banner: BannerTypes.BannerItem;\n}\n\nconst ColorfulBanner: React.FC = ({ banner }) => {\n const { id: matchId } = banner;\n\n const {\n competitors,\n market,\n match,\n tournament,\n route,\n isLive,\n } = useColorfulBanner({\n matchId,\n });\n\n const { awayName, awayLogo, homeLogo, homeName } = competitors;\n\n return (\n
\n \n
\n \n
\n\n \n\n
\n \n
\n \n\n
\n \n
\n
\n );\n};\n\nexport default React.memo(ColorfulBanner);\n","import { BannerTypes } from '@gin-betting/banners';\n\nimport useBanners from '../Banners/useBanners';\n\ninterface Input {\n zoneId: string;\n}\n\ninterface Output {\n filteredBanners: BannerTypes.BannerItem[];\n interval: number;\n}\n\nconst useColorfulBanners = ({ zoneId }: Input): Output => {\n const { banners, interval } = useBanners({ zoneId });\n const filteredBanners = banners.filter(({ id }) => id);\n\n return {\n filteredBanners,\n interval,\n };\n};\n\nexport default useColorfulBanners;\n","import React, { useMemo } from 'react';\nimport bannersModule, { BannerTypes } from '@gin-betting/banners';\nimport { BannerZoneLocation } from '@gin-betting/constants';\nimport { GQL } from '@gin-betting/core';\n\nimport { Carousel } from 'components';\nimport { AnalyticAttrs, AnalyticAttrsCtx, Category } from 'services/analytics';\nimport CMSBanner from '../CMSBanner';\nimport ColorfulBanner from '../ColorfulBanner';\nimport useColorfulBanners from './useColorfulBanners';\n\nimport './colorfulBanners.scss';\n\nconst {\n hocs: { withAvailableZoneByAttributes },\n} = bannersModule;\n\ninterface OwnProps {\n zoneLocation: BannerTypes.BannerZoneLocation;\n}\n\ntype Props = OwnProps & BannerTypes.WithAvailableZoneProps;\n\nconst ColorfulBanners: React.FC = ({ zoneId, zoneLocation }) => {\n const { filteredBanners, interval } = useColorfulBanners({\n zoneId,\n });\n const analyticAttrs = useMemo(\n () => getAnalyticAttrsByZoneLocation(zoneLocation),\n [zoneLocation]\n );\n\n if (!filteredBanners.length) return null;\n\n const renderBanners = () =>\n filteredBanners.map(banner => {\n switch (banner.type) {\n case GQL.BannerType.cms_banner: {\n return (\n \n \n \n );\n }\n\n default: {\n return (\n \n );\n }\n }\n });\n\n return (\n
\n \n {renderBanners()}\n \n
\n );\n};\n\nfunction getAnalyticAttrsByZoneLocation(\n zoneLocation: BannerZoneLocation\n): Partial {\n switch (zoneLocation) {\n case BannerZoneLocation.TOP_SLIDER:\n return {\n 'data-category': Category.BannerTopSlider,\n };\n\n case BannerZoneLocation.RIGHT:\n return {\n 'data-category': Category.BannerRight,\n };\n case BannerZoneLocation.RIGHT_SLIDER:\n return {\n 'data-category': Category.BannerRightSlider,\n };\n default:\n return {};\n }\n}\n\nexport default withAvailableZoneByAttributes(ColorfulBanners);\n","import { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport bannersModule, { BannerTypes } from '@gin-betting/banners';\nimport core, { GQL } from '@gin-betting/core';\nimport { compact, first } from 'lodash';\nimport { createSelector } from 'reselect';\n\nconst {\n actions: { getBannersData },\n selectors: { makeBannerItemsSelector },\n} = bannersModule;\n\nconst {\n poller: { usePoller },\n utils: { getBettingOptions },\n entities: {\n actions: { getEventLiveOfTheDay, getEventMatchOfTheDay },\n },\n} = core;\n\ninterface Output {\n items: Array<\n BannerTypes.BannerLiveOfTheDay | BannerTypes.BannerMatchOfTheDay\n >;\n isLoadTimeUp: boolean;\n}\n\nconst makeSelector = (zoneId: string) => {\n const selectValidLiveOfTheDay = makeBannerItemsSelector(\n zoneId,\n GQL.BannerType.betting_live_of_the_day\n );\n\n const selectValidMatchOfTheDay = makeBannerItemsSelector(\n zoneId,\n GQL.BannerType.betting_match_of_the_day\n );\n\n return createSelector(\n selectValidLiveOfTheDay,\n selectValidMatchOfTheDay,\n (liveOfTheDay, matchOfTheDay) => ({\n liveOfTheDay: first(liveOfTheDay),\n matchOfTheDay: first(matchOfTheDay),\n })\n );\n};\n\nconst useEventsOfTheDay = (zoneId: string): Output => {\n const dispatch = useDispatch();\n\n const { liveOfTheDay, matchOfTheDay } = useSelector(makeSelector(zoneId));\n\n const [isLoadTimeUp, setIsLoadTimeUp] = useState(false);\n\n const { selectedSportIds } = getBettingOptions();\n\n const variables = { sportIds: selectedSportIds };\n\n useEffect(() => {\n dispatch(getBannersData({ zoneId }));\n }, [dispatch, zoneId]);\n\n usePoller({\n pollerName: GQL.BannerType.betting_live_of_the_day,\n executableAction: getEventLiveOfTheDay,\n variables,\n isPollingTurnedOff: false,\n });\n\n usePoller({\n pollerName: GQL.BannerType.betting_match_of_the_day,\n executableAction: getEventMatchOfTheDay,\n variables,\n isPollingTurnedOff: false,\n });\n\n useEffect(() => {\n setTimeout(() => {\n setIsLoadTimeUp(true);\n }, 5000);\n }, []);\n\n const items = compact([matchOfTheDay, liveOfTheDay]);\n\n return {\n items,\n isLoadTimeUp,\n };\n};\n\nexport default useEventsOfTheDay;\n","import React, { Fragment } from 'react';\nimport banners, { BannerTypes } from '@gin-betting/banners';\n\nimport { Carousel, PromoItem, Spinner } from 'components';\nimport { AsyncOddButton } from 'modules/betslip/async';\nimport favorite from 'modules/favorite';\nimport useEventsOfTheDay from './useEventsOfTheDay';\n\nimport './eventsOfTheDay.scss';\n\nconst {\n components: { ToggleFavoriteButton },\n} = favorite;\n\nconst {\n hocs: { withAvailableZoneByAttributes },\n} = banners;\n\nconst EventsOfTheDay: React.FC = ({\n zoneId,\n}) => {\n const { items, isLoadTimeUp } = useEventsOfTheDay(zoneId);\n\n if (!items.length) {\n return !isLoadTimeUp ? (\n
\n \n
\n ) : null;\n }\n\n return (\n
\n \n {items.map(({ id: matchId, type }) => {\n if (!matchId) return null;\n\n return (\n \n \n }\n AsyncOddButton={AsyncOddButton}\n />\n \n );\n })}\n \n
\n );\n};\n\nexport default withAvailableZoneByAttributes(EventsOfTheDay);\n","import { BannerTypes } from '@gin-betting/banners';\nimport core, { Entities, GQL, View } from '@gin-betting/core';\nimport { Map, OrderedMap } from 'immutable';\nimport { map, reduce, transform } from 'lodash';\n\nimport { ExtendedRouts, MARKETS_ACTIVE_STATUSES } from 'app-constants';\nimport { ParentPath } from 'types';\nimport { getRouteBySportType } from 'utils';\nimport { getMissingMatches } from './actions';\nimport {\n ALL,\n FEATURED_SPORT_TYPE_MAPPING,\n FeaturedProviderConfigType,\n MARKET_LIMIT,\n ZONE_LOCATIONS,\n} from './constants';\nimport type { FeaturedConfig, MatchIdsBySport, WidgetType } from './types';\n\nconst {\n utils: { getSportTypeBySport },\n constants: { idPathDivider },\n} = core;\n\nconst checkIsCustomList = (\n item: GQL.GetFeaturedZoneConfigsQuery['featuredZoneConfigs'][number]\n): item is {\n __typename: 'FeaturedZoneCustomListProvider';\n} & GQL.FeaturedZoneCustomListProviderFragment => 'slug' in item;\n\nconst getRouteByFeaturedSportType = (\n featuredSportType: GQL.FeaturedSportType\n): ParentPath => {\n const sportType = FEATURED_SPORT_TYPE_MAPPING[featuredSportType];\n\n return getRouteBySportType(sportType);\n};\n\nconst getFeaturedConfig = (\n config: GQL.GetFeaturedZoneConfigsQuery['featuredZoneConfigs'][number],\n allSports: Map\n): FeaturedConfig | null => {\n if (checkIsCustomList(config)) {\n const route = getRouteByFeaturedSportType(config.sportType);\n\n return {\n type: FeaturedProviderConfigType.CustomList,\n slug: config.slug,\n name: config.title,\n description: config.description,\n logo: config.image,\n priority: config.priority,\n linkToTournament: `${route}/${config.slug}`,\n };\n }\n\n if (!config.tournament) return null;\n\n const {\n priority,\n tournament: { slug, sportId, name, description, logo },\n } = config;\n const sport = allSports.get(sportId);\n\n if (!sport) return null;\n\n const sportType = getSportTypeBySport(sport);\n const route = getRouteBySportType(sportType);\n\n return {\n type: FeaturedProviderConfigType.Tournament,\n slug,\n name,\n description,\n logo,\n priority,\n linkToTournament: `${route}${ExtendedRouts.TOURNAMENT}${slug}`,\n };\n};\n\nexport const getFeaturedConfigKey = (slug: string, type: string): string =>\n `${slug}${idPathDivider}${type}`;\n\nexport const getTransformedFeaturedConfigs = (\n featuredZoneConfigs: GQL.GetFeaturedZoneConfigsQuery['featuredZoneConfigs'],\n allSports: OrderedMap\n): OrderedMap => {\n return featuredZoneConfigs.reduce((acc, config) => {\n const transformedConfig = getFeaturedConfig(config, allSports);\n\n if (!transformedConfig?.slug) return acc;\n\n const key = getFeaturedConfigKey(\n transformedConfig.slug,\n transformedConfig.type\n );\n\n return acc.set(key, transformedConfig);\n }, OrderedMap());\n};\n\nexport function groupBannerItemsBySport(\n bannerItems: BannerTypes.BannerSportEvent[],\n defaultAcc?: MatchIdsBySport\n): MatchIdsBySport {\n return reduce(\n bannerItems,\n (acc, { group, id }) => {\n const sportId = group?.groupBy ?? ALL;\n\n acc[sportId] = (acc[sportId] || new Set()).add(id);\n\n return acc;\n },\n defaultAcc ?? {}\n );\n}\n\ntype GetAttributesByPeriodArgs = { [key in WidgetType]: number };\n\nexport const getAttributesByPeriod = (\n topMatchListIndexConfig: GetAttributesByPeriodArgs\n): { [key: string]: BannerTypes.BannerZoneAttributes[] } => {\n return transform(topMatchListIndexConfig, (acc, index, type) => {\n acc[type] = map(ZONE_LOCATIONS, pageLocation => ({\n index,\n pageLocation,\n }));\n });\n};\n\nexport const makeGetMissingMatches = (\n sportEventsIds: string[]\n): Entities.MakeGetMissingMatchesResult<{}> =>\n getMissingMatches({\n sportEventsIds,\n isTopMarkets: true,\n marketLimit: MARKET_LIMIT,\n withMarketsCount: true,\n marketStatuses: MARKETS_ACTIVE_STATUSES,\n });\n","import banners from '@gin-betting/banners';\nimport core, { GQL } from '@gin-betting/core';\nimport { Map, OrderedSet } from 'immutable';\nimport { createSelector, Selector } from 'reselect';\n\nimport type { State } from 'types';\nimport type { BannerItemsByZoneId, FeaturedConfig, PromoState } from './types';\nimport { groupBannerItemsBySport } from './utils';\n\nconst {\n entities: {\n selectors: { selectSports },\n },\n} = core;\n\nconst {\n selectors: { makeBannerItemsSelector },\n} = banners;\n\nexport const selectPromo = (state: State): PromoState => state.promo;\n\nexport const selectStateFeaturedTournaments = createSelector(\n selectPromo,\n promoState => promoState.get('featuredTournaments')\n);\n\nexport const selectFeaturedTournamentsConfigs = createSelector(\n selectStateFeaturedTournaments,\n (featuredTournaments): Map =>\n featuredTournaments.configs\n);\n\nexport const selectFeaturedTournamentsCurrentConfigs = createSelector(\n selectStateFeaturedTournaments,\n (featuredTournaments): OrderedSet =>\n featuredTournaments.currentConfigs\n);\n\nexport const selectFeaturedTournamentsList = createSelector(\n selectFeaturedTournamentsConfigs,\n selectFeaturedTournamentsCurrentConfigs,\n (configs, currentConfigs): OrderedSet => {\n return currentConfigs\n .map(currentConfig => configs.get(currentConfig))\n .filter((config): config is FeaturedConfig => !!config)\n .toOrderedSet();\n }\n);\n\nexport const selectFeaturedTournamentsFetchStatus = createSelector(\n selectStateFeaturedTournaments,\n featuredTournaments => featuredTournaments.fetchStatus\n);\n\nexport const selectAreSportsAvailable = createSelector(selectSports, sports =>\n Boolean(sports.size)\n);\n\nexport const makeSelectZones = (\n zoneIds: string[]\n): Selector => {\n const bannerItemSelectors = zoneIds.map(zoneId =>\n makeBannerItemsSelector(zoneId, GQL.BannerType.betting_sport_event)\n );\n\n // NOTE: \"createSelector\" type issue with rest args\n return (createSelector as any)(\n ...bannerItemSelectors,\n (\n ...bannerItemsArr: Array<\n ReturnType\n >\n ): BannerItemsByZoneId => {\n // NOTE: zoneIds.length should be equal with bannerItemsArr.length\n return zoneIds.reduce((acc, zoneId, index) => {\n const prev = acc[zoneId];\n\n const bannerItems = bannerItemsArr[index];\n\n if (!bannerItems) return acc;\n\n acc[zoneId] = groupBannerItemsBySport(bannerItems, prev);\n\n return acc;\n }, {});\n }\n );\n};\n","import { useCallback, useContext, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useParams } from 'react-router';\nimport core, { App, GQL, View } from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport { useMemoSelector } from 'hooks';\nimport {\n BettingReadyIndicatorContext,\n IBettingReadyIndicatorContext,\n} from 'modules/betting-ready-indicator';\nimport { useReservedState } from 'services/garbage-collector';\nimport { fetchFeaturedCustomList } from 'utils';\nimport { selectFeaturedTournamentsFetchStatus } from '../../selectors';\n\ninterface Output {\n config: GQL.FeaturedZoneCustomListProviderFragment | null | undefined;\n fetchStatus: App.FetchStatus;\n readyIndicator: IBettingReadyIndicatorContext;\n matchesIds: string[];\n isSmall: boolean;\n isMedium: boolean;\n isLoadingConfig: boolean;\n}\n\nconst {\n entities: {\n normalizeEntity,\n actions: { storeNormalizedEntities },\n },\n viewport: {\n selectors: { makeViewportSelector },\n },\n utils: { isFetchFinished },\n poller: { getPollerManager },\n hooks: { useDeepMemo },\n} = core;\n\nconst selectProps = createStructuredSelector({\n lessThanOrEqual: makeViewportSelector('lessThanOrEqual'),\n fetchStatus: selectFeaturedTournamentsFetchStatus,\n});\n\nconst useFeaturedTournamentPage = (): Output => {\n const { slug } = useParams<{ slug: string }>();\n\n const dispatch = useDispatch();\n const readyIndicator = useContext(BettingReadyIndicatorContext);\n const [isLoadingConfig, setLoadingConfig] = useState(false);\n\n const [config, setConfig] = useState<\n GQL.FeaturedZoneCustomListProviderFragment | null | undefined\n >(undefined);\n const [matchesIds, setMatchesIds] = useReservedState('matches', []);\n const memMatchesIds = useDeepMemo(matchesIds);\n\n const {\n lessThanOrEqual: { small: isSmall, medium: isMedium },\n fetchStatus,\n } = useMemoSelector(selectProps, { location, slug });\n\n const requestFeaturedCustomList = useCallback(\n (isMounted: boolean) => {\n fetchFeaturedCustomList(slug)\n .then(response => {\n if (!response || !response.data) return;\n\n const {\n config: nextConfig,\n sportEventsList: { matches },\n } = response.data.featuredCustomList;\n const ids = matches.map(match => match.id);\n\n const normalizedData = normalizeEntity({\n matches,\n }) as View.Normalized;\n\n dispatch(\n storeNormalizedEntities(normalizedData, {\n isTopMarkets: true,\n })\n );\n\n if (isMounted) {\n setConfig(nextConfig);\n setMatchesIds(ids);\n setLoadingConfig(false);\n }\n })\n .catch(err => console.error(err));\n },\n [dispatch, setMatchesIds, slug]\n );\n\n useEffect(() => {\n let isMounted = true;\n\n setLoadingConfig(true);\n requestFeaturedCustomList(isMounted);\n\n const pollInterval$ = getPollerManager().getIntervalObserve();\n const getSportEventsSubscription = pollInterval$.subscribe(() => {\n requestFeaturedCustomList(isMounted);\n });\n\n return () => {\n isMounted = false;\n getSportEventsSubscription.unsubscribe();\n };\n }, [dispatch, requestFeaturedCustomList]);\n\n useEffect(() => {\n if (isFetchFinished(fetchStatus) && isLoadingConfig) {\n readyIndicator.setReady('hasData');\n }\n }, [fetchStatus, readyIndicator, isLoadingConfig]);\n\n return {\n config,\n matchesIds: memMatchesIds,\n fetchStatus,\n isSmall,\n isMedium,\n readyIndicator,\n isLoadingConfig,\n };\n};\n\nexport default useFeaturedTournamentPage;\n","import React from 'react';\nimport Helmet from 'react-helmet';\nimport { useIntl } from 'react-intl';\nimport { App } from '@gin-betting/core';\nimport { OrderedSet } from 'immutable';\n\nimport { EventInfo, Loader, NoResults } from 'components';\nimport globalMessages from 'messages';\nimport matchList from 'modules/match-list';\nimport { getProductName } from 'utils';\nimport useFeaturedTournamentPage from './useFeaturedTournamentPage';\n\nimport './featuredTournamentPage.scss';\n\nconst {\n components: { UpcomingMatchList },\n} = matchList;\n\nconst FeaturedTournamentPage: React.FC = () => {\n const { formatMessage } = useIntl();\n\n const {\n config,\n isMedium,\n isSmall,\n fetchStatus,\n matchesIds,\n readyIndicator,\n isLoadingConfig,\n } = useFeaturedTournamentPage();\n\n const isShowContent =\n ![App.FetchStatus.INITIAL, App.FetchStatus.LOADING].includes(\n fetchStatus\n ) && !isLoadingConfig;\n const isEmpty =\n matchesIds.length === 0 && fetchStatus === App.FetchStatus.LOADED;\n\n const Content = config ? (\n \n \n\n {isEmpty ? (\n \n ) : (\n \n )}\n \n ) : (\n \n );\n\n return (\n
\n {\n if (newState.title) {\n readyIndicator.setReady('hasTitle');\n }\n }}\n />\n\n
\n \n
\n\n {isShowContent && Content}\n
\n );\n};\n\nexport default React.memo(FeaturedTournamentPage);\n","import React from 'react';\nimport LogoResizer from '@gin-betting/components/logo-resizer';\n\nimport { Icon } from 'components';\n\nimport stubImage from 'assets/svg/top-tournament.svg';\nimport './featuredTournamentsLogo.scss';\n\ninterface Props {\n logo: string | undefined;\n}\n\nconst FeaturedTournamentsLogo: React.FC = ({ logo }) => (\n
\n {logo ? (\n \n {({ ref, bgImageStyle }) => (\n
\n )}\n \n ) : (\n \n )}\n
\n);\n\nexport default FeaturedTournamentsLogo;\n","import React from 'react';\nimport { useLocation } from 'react-router';\nimport cn from 'classnames';\n\nimport { SmartLink } from 'components';\nimport { Action, Category } from 'services/analytics';\nimport { FeaturedConfig } from '../../../types';\nimport FeaturedTournamentsLogo from '../FeaturedTournamentsLogo';\n\nimport './featuredTournamentsRow.scss';\n\ninterface Props {\n config: FeaturedConfig;\n}\n\nconst FeaturedTournamentsRow: React.FC = ({ config }) => {\n const { pathname } = useLocation();\n\n const { linkToTournament, name, logo } = config;\n\n if (!name || !linkToTournament) return null;\n\n const isActive = pathname === linkToTournament;\n\n return (\n \n \n\n \n \n {name}\n
\n \n \n );\n};\n\nexport default React.memo(FeaturedTournamentsRow);\n","import { useCallback, useEffect, useRef } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useLocation } from 'react-router';\nimport core, { App } from '@gin-betting/core';\nimport { OrderedSet } from 'immutable';\nimport { createSelector } from 'reselect';\n\nimport { useMemoSelector, useSportType } from 'hooks';\nimport { getFeaturedZoneConfigs } from '../actions';\nimport { FEATURED_ZONES_MAPPING } from '../constants';\nimport {\n selectFeaturedTournamentsFetchStatus,\n selectFeaturedTournamentsList,\n} from '../selectors';\nimport type { FeaturedConfig } from '../types';\n\ninterface Output {\n featuredConfigs: OrderedSet;\n fetchStatus: App.FetchStatus;\n}\n\nconst {\n poller: { getPollerManager },\n entities: {\n selectors: { selectSports },\n },\n} = core;\n\nconst selectProps = createSelector(\n selectFeaturedTournamentsList,\n selectFeaturedTournamentsFetchStatus,\n selectSports,\n (featuredConfigs, fetchStatus, sports) => ({\n featuredConfigs,\n fetchStatus,\n sports,\n })\n);\n\nconst useFeaturedConfigs = (): Output => {\n useLocation();\n const dispatch = useDispatch();\n\n const { featuredConfigs, fetchStatus, sports } = useMemoSelector(\n selectProps\n );\n\n const sportType = useSportType();\n\n // NOTE: Sports are passed to callback via ref to avoid obsolete effect calls.\n // We rely on fact that sports are fetched only once,\n // so the \"sports.size\" change from 0 to any value is the only valid change\n const sportsRef = useRef(sports);\n sportsRef.current = sports;\n\n const zoneId = FEATURED_ZONES_MAPPING[sportType];\n\n const fetchFeaturedZoneConfigs = useCallback(\n (isPolling: boolean = false) => {\n dispatch(\n getFeaturedZoneConfigs(\n { zoneId },\n { isPolling, allSports: sportsRef.current }\n )\n );\n },\n [dispatch, zoneId]\n );\n\n useEffect(() => {\n if (sports.size === 0) return;\n\n fetchFeaturedZoneConfigs();\n\n const pollInterval$ = getPollerManager().getIntervalObserve();\n const pollerIntervalSubscription = pollInterval$.subscribe(() => {\n fetchFeaturedZoneConfigs(true);\n });\n\n return () => {\n pollerIntervalSubscription.unsubscribe();\n };\n }, [fetchFeaturedZoneConfigs, sports.size]);\n\n return {\n featuredConfigs,\n fetchStatus,\n };\n};\n\nexport default useFeaturedConfigs;\n","import { App } from '@gin-betting/core';\nimport { OrderedSet } from 'immutable';\n\nimport { useToggler } from 'hooks';\nimport { DEFAULT_CONFIG_LIST_SIZE } from '../../constants';\nimport { useFeaturedConfigs } from '../../hooks';\nimport type { FeaturedConfig } from '../../types';\n\ninterface Output {\n featuredConfigs: OrderedSet;\n toggleExpand: VoidFunction;\n isExpanded: boolean;\n isShowExpandButton: boolean;\n fetchStatus: App.FetchStatus;\n}\n\nconst useFeaturedTournaments = (): Output => {\n const { fetchStatus, featuredConfigs } = useFeaturedConfigs();\n\n const [isExpanded, toggleExpand] = useToggler(false);\n\n const visibleConfigs = isExpanded\n ? featuredConfigs\n : featuredConfigs.slice(0, DEFAULT_CONFIG_LIST_SIZE);\n\n const isShowExpandButton = featuredConfigs.size > DEFAULT_CONFIG_LIST_SIZE;\n\n return {\n featuredConfigs: visibleConfigs,\n toggleExpand,\n isExpanded,\n isShowExpandButton,\n fetchStatus,\n };\n};\n\nexport default useFeaturedTournaments;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { App } from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport { Icon } from 'components';\nimport messages from 'messages';\nimport { Action, Category, Label } from 'services/analytics';\nimport FeaturedTournamentsRow from './FeaturedTournamentsRow';\nimport useFeaturedTournaments from './useFeaturedTournaments';\n\nimport arrow from 'assets/svg/top-tournaments-arrow.svg';\nimport './featuredTournaments.scss';\n\nconst { LOADED, LOADING, INITIAL, FAILED } = App.FetchStatus;\n\nconst FeaturedTournaments: React.FC = () => {\n const {\n featuredConfigs,\n toggleExpand,\n isExpanded,\n isShowExpandButton,\n fetchStatus,\n } = useFeaturedTournaments();\n\n if ([LOADED, FAILED].includes(fetchStatus) && featuredConfigs.size === 0) {\n return null;\n }\n\n return (\n
\n
\n \n \n \n
\n\n {[INITIAL, LOADING].includes(fetchStatus) ? (\n
\n ) : (\n \n
\n {featuredConfigs.map(config => (\n \n ))}\n
\n\n {isShowExpandButton && (\n \n \n
\n )}\n \n )}\n
\n );\n};\n\nexport default React.memo(FeaturedTournaments);\n","/* tslint:disable */\nimport { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n topMatch: {\n defaultMessage: 'Top events of the day',\n id: 'component.TopMatch.topMatch'\n },\n})","import React from 'react';\nimport { View } from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport { GameLogo } from 'components';\nimport { Action, Category } from 'services/analytics';\n\nimport './topMatchTabs.scss';\n\ninterface Props {\n sports: View.Sport[];\n activeSportId: string;\n onTabChange: (sportId: string) => void;\n onInactiveTabHover: (sportId: string) => void;\n}\n\nconst TopMatchTabs: React.FC = ({\n sports,\n activeSportId,\n onTabChange,\n onInactiveTabHover,\n}) => {\n return (\n
\n {sports.map(({ id, name }) => (\n onTabChange(id)}\n onMouseEnter={() =>\n activeSportId !== id && onInactiveTabHover(id)\n }\n >\n \n {id === activeSportId && (\n
{name}
\n )}\n
\n ))}\n \n );\n};\n\nexport default TopMatchTabs;\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport bannersModule, { BannerTypes } from '@gin-betting/banners';\nimport core, { App, GQL, View } from '@gin-betting/core';\nimport { groupBy } from 'lodash';\nimport { createSelector } from 'reselect';\n\nimport { ACTIVE_MARKET_STATUSES } from 'app-constants';\n\ninterface Input {\n zoneId: string;\n}\n\ninterface Output {\n sports: View.Sport[];\n sportEventIds: string[];\n activeSportId: string;\n isLoadingTimedOut: boolean;\n fetchStatus: App.FetchStatus | undefined;\n handleTabChange: (sportId: string) => void;\n preloadMatches: (sportId: string) => void;\n}\n\nconst {\n actions: { getBannersData, getMissingMatches },\n selectors: { makeBannerItemsSelector, makeSelectBannerByZoneId },\n} = bannersModule;\n\nconst {\n poller: { usePoller },\n entities: {\n selectors: { selectSports, selectMissingSportEventIds },\n },\n hooks: { useDeepMemo },\n utils: { getBettingOptions },\n} = core;\n\nconst COMMON_GET_MATCHES_VARS: Omit<\n GQL.GetMatchesByIdsQueryVariables,\n 'sportEventsIds'\n> = {\n isTopMarkets: true,\n marketLimit: 1,\n withMarketsCount: true,\n marketStatuses: ACTIVE_MARKET_STATUSES,\n};\n\nconst preloadedSportsCache: string[] = [];\n\nfunction useTopMatch({ zoneId }: Input): Output {\n const dispatch = useDispatch();\n const [activeSportId, setActiveSportId] = useState('');\n const [isLoadingTimedOut, setLoadingTimedOut] = useState(false);\n\n const selectBannerZoneById = useMemo(\n () => makeSelectBannerByZoneId(zoneId),\n [zoneId]\n );\n\n const fetchStatus = useSelector(selectBannerZoneById)?.fetchStatus;\n\n const { sports, bannerItemsBySport } = useSelector(\n makeBannerItemsAndSportsSelector(\n makeBannerItemsSelector(\n zoneId,\n GQL.BannerType.betting_sport_event,\n selectBannerZoneById\n )\n )\n );\n\n const bannerItems = useDeepMemo(bannerItemsBySport);\n const sportEventIds = bannerItems[activeSportId]?.map(({ id }) => id) || [];\n\n const missingMatchIds = useDeepMemo(\n useSelector(state => {\n return selectMissingSportEventIds(state, {\n sportEventIds,\n });\n })\n );\n\n const handleTabChange = useCallback((sportId: string) => {\n setActiveSportId(sportId);\n }, []);\n\n const preloadMatches = useCallback(\n (sportId: string) => {\n if (preloadedSportsCache.includes(sportId)) return;\n\n preloadedSportsCache.push(sportId);\n\n const preloadSportEventIds = bannerItems[sportId]?.map(\n ({ id }) => id\n );\n\n if (!preloadSportEventIds) return;\n\n dispatch(\n getMissingMatches({\n sportEventsIds: preloadSportEventIds,\n ...COMMON_GET_MATCHES_VARS,\n })\n );\n },\n [bannerItems, dispatch]\n );\n\n useEffect(() => {\n if (missingMatchIds.length === 0) return;\n\n dispatch(\n getMissingMatches({\n sportEventsIds: missingMatchIds,\n ...COMMON_GET_MATCHES_VARS,\n })\n );\n }, [missingMatchIds, dispatch]);\n\n const { requestContent } = usePoller({\n pollerName: 'BANNER_TOP_SPORT_EVENTS',\n executableAction: getBannersData,\n variables: {\n zoneId,\n marketStatuses: ACTIVE_MARKET_STATUSES,\n withSportEvent: false,\n sportIds: getBettingOptions().sportIds,\n },\n isPollingTurnedOff: false,\n });\n\n useEffect(() => {\n requestContent();\n }, [zoneId, requestContent]);\n\n useEffect(() => {\n const firstSportId = sports[0]?.id;\n\n if (\n !firstSportId ||\n (activeSportId && sports.find(({ id }) => id === activeSportId))\n ) {\n return;\n }\n\n setActiveSportId(firstSportId);\n }, [activeSportId, sports]);\n\n useEffect(() => {\n const timeoutId = window.setTimeout(() => {\n setLoadingTimedOut(true);\n }, 5000);\n\n return () => {\n if (timeoutId) {\n window.clearTimeout(timeoutId);\n }\n };\n }, []);\n\n return {\n sports,\n sportEventIds,\n activeSportId,\n handleTabChange,\n preloadMatches,\n fetchStatus,\n isLoadingTimedOut,\n };\n}\n\nfunction makeBannerItemsAndSportsSelector(\n selectSportEventBannerItems: (\n ...args: any[]\n ) => BannerTypes.BannerSportEvent[]\n) {\n return createSelector(\n selectSportEventBannerItems,\n selectSports,\n (bannerSportEvents, allSports) => {\n const bannerItemsBySport = groupBy(\n bannerSportEvents,\n item => item.group?.groupBy\n );\n\n const sports = Object.keys(bannerItemsBySport)\n .map(sportId => allSports.get(sportId))\n .filter((v): v is View.Sport => !!v);\n\n return {\n bannerItemsBySport,\n sports,\n };\n }\n );\n}\n\nexport default useTopMatch;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport banners, { BannerTypes } from '@gin-betting/banners';\nimport { App } from '@gin-betting/core';\n\nimport {\n Carousel,\n PromoItem,\n Spinner,\n SportEventSeoMicromarking,\n} from 'components';\nimport { AsyncOddButton } from 'modules/betslip/async';\nimport favorite from 'modules/favorite';\nimport { Action, AnalyticAttrsCtx, Category } from 'services/analytics';\nimport messages from '../../messages';\nimport TopMatchTabs from '../TopMatchTabs';\nimport useTopMatch from './useTopMatch';\n\nimport './topMatch.scss';\n\nconst {\n components: { ToggleFavoriteButton },\n} = favorite;\nconst {\n hocs: { withAvailableZoneByAttributes },\n} = banners;\n\nconst ANALYTICS_ODD_BTN = {\n 'data-category': Category.TopSportEventsRight,\n 'data-action': Action.SelectOdd,\n};\n\nconst TopMatch: React.FC = ({ zoneId }) => {\n const {\n sports,\n sportEventIds,\n activeSportId,\n handleTabChange,\n preloadMatches,\n fetchStatus,\n isLoadingTimedOut,\n } = useTopMatch({ zoneId });\n\n if (sportEventIds.length === 0) {\n if (fetchStatus === App.FetchStatus.LOADING && !isLoadingTimedOut)\n return (\n
\n \n
\n );\n\n return null;\n }\n\n return (\n
\n
\n \n \n \n
\n\n \n\n \n {sportEventIds.map(matchId => (\n \n \n \n }\n />\n \n\n \n \n ))}\n \n
\n );\n};\n\nexport default withAvailableZoneByAttributes(TopMatch);\n","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport cn from 'classnames';\nimport { get, map } from 'lodash';\n\nimport { MAPPING_PERIOD } from '../../../constants';\nimport type { WidgetType } from '../../../types';\n\nimport './mobileHeader.scss';\n\ninterface Props {\n periods: WidgetType[];\n activeZoneIndex: WidgetType;\n makeHandleActiveZoneIndex: (zoneIndex: WidgetType) => VoidFunction;\n}\n\nconst MobileHeader: React.FC = ({\n periods,\n activeZoneIndex,\n makeHandleActiveZoneIndex,\n}) => {\n const { formatMessage } = useIntl();\n\n return (\n
\n {map(periods, type => {\n const period = get(MAPPING_PERIOD, type, undefined);\n\n return (\n \n {period ? formatMessage(period) : type}\n
\n );\n })}\n \n );\n};\n\nexport default React.memo(MobileHeader);\n","import { useMemo } from 'react';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport banners from '@gin-betting/banners';\nimport { get, upperFirst } from 'lodash';\n\nimport { useMemoSelector } from 'hooks';\nimport { MAPPING_ZONE } from '../../../constants';\n\nconst {\n selectors: { makeAttributesByBannerZoneSelector },\n} = banners;\n\ninterface Input {\n zoneId: string;\n sportEventIds: Set;\n}\n\ninterface Output {\n matchesIds: string[];\n title: string;\n}\n\nconst useMobileTopMatchItem = ({ zoneId, sportEventIds }: Input): Output => {\n const { formatMessage } = useIntl();\n\n const attributes = useMemoSelector(\n makeAttributesByBannerZoneSelector(zoneId),\n {}\n );\n\n const matchesIds = useMemo(() => Array.from(sportEventIds), [\n sportEventIds,\n ]);\n\n const location = attributes?.pageLocation ?? '';\n const messageKey: MessageDescriptor | undefined = get(\n MAPPING_ZONE,\n location,\n undefined\n );\n const title = upperFirst(messageKey ? formatMessage(messageKey) : location);\n\n return {\n matchesIds,\n title,\n };\n};\n\nexport default useMobileTopMatchItem;\n","import React from 'react';\nimport { map } from 'lodash';\n\nimport matchList from 'modules/match-list';\nimport useMobileTopMatchItem from './useMobileTopMatchItem';\n\nimport './mobileTopMatchItem.scss';\n\nconst {\n components: { SportEventRow },\n} = matchList;\n\ninterface Props {\n zoneId: string;\n sportEventIds: Set;\n}\n\nconst MobileTopMatchItem: React.FC = ({ zoneId, sportEventIds }) => {\n const { matchesIds, title } = useMobileTopMatchItem({\n zoneId,\n sportEventIds,\n });\n\n if (!matchesIds.length) return null;\n\n return (\n
\n
{title}
\n\n
\n {map(matchesIds, matchId => (\n \n ))}\n
\n
\n );\n};\n\nexport default React.memo(MobileTopMatchItem);\n","import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { difference, isEmpty } from 'lodash';\n\nimport { makeGetMissingMatches } from '../../../utils';\n\ninterface Input {\n missingSportEventIds: string[];\n}\n\ninterface Output {}\n\nconst requestedSportEventCache: string[] = [];\n\nconst useMobileTopMatch = ({ missingSportEventIds }: Input): Output => {\n const dispatch = useDispatch();\n\n useEffect(() => {\n const newIds = difference(\n missingSportEventIds,\n requestedSportEventCache\n );\n\n if (isEmpty(newIds)) return;\n\n requestedSportEventCache.push(...newIds);\n\n dispatch(makeGetMissingMatches(newIds));\n\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [dispatch, missingSportEventIds]);\n\n return {};\n};\n\nexport default useMobileTopMatch;\n","import React from 'react';\nimport { get, map } from 'lodash';\n\nimport type { BannerItemsByZoneId } from '../../../types';\nimport MobileTopMatchItem from '../MobileTopMatchItem';\nimport useMobileTopMatch from './useMobileTopMatch';\n\ninterface Props {\n sport: string;\n zones: BannerItemsByZoneId;\n missingSportEventIds: string[];\n}\n\nconst MobileTopMatch: React.FC = ({\n missingSportEventIds,\n sport,\n zones,\n}) => {\n useMobileTopMatch({ missingSportEventIds });\n\n return (\n \n {map(zones, (sports, zoneId) => {\n const sportEventIds = get(sports, sport, undefined);\n\n if (!sportEventIds) return null;\n\n return (\n \n );\n })}\n \n );\n};\n\nexport default React.memo(MobileTopMatch);\n","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport core from '@gin-betting/core';\nimport { map } from 'lodash';\n\nimport { GameLogo, Icon, SportFilterHeading } from 'components';\nimport { usePureSelector } from 'hooks';\nimport globalMessages from 'messages';\nimport { ALL } from '../../../constants';\n\nimport allGames from 'assets/svg/all-games.svg';\nimport './sportsList.scss';\n\nconst {\n entities: {\n selectors: { selectSports },\n },\n} = core;\n\ninterface Props {\n activeSport: string;\n sportIds: string[];\n makeHandleChangeActiveSport: (sportId: string) => VoidFunction;\n}\n\nconst SportsList: React.FC = ({\n activeSport,\n sportIds,\n makeHandleChangeActiveSport,\n}) => {\n const { formatMessage } = useIntl();\n\n const allSports = usePureSelector(selectSports);\n const allGamesMsg = formatMessage(globalMessages.allGames);\n\n return (\n
\n }\n title={allGamesMsg}\n />\n\n {map(sportIds, sportId => {\n if (sportId === ALL) return null;\n\n const sportName = allSports.get(sportId)?.name ?? '';\n\n return (\n }\n title={sportName}\n onClick={makeHandleChangeActiveSport(sportId)}\n />\n );\n })}\n
\n );\n};\n\nexport default React.memo(SportsList);\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport banners from '@gin-betting/banners';\nimport core from '@gin-betting/core';\nimport {\n first,\n flatten,\n forEach,\n get,\n isEmpty,\n keys,\n reduce,\n some,\n transform,\n uniq,\n values,\n} from 'lodash';\nimport { createSelector, createStructuredSelector } from 'reselect';\n\nimport { MARKETS_ACTIVE_STATUSES } from 'app-constants';\nimport { usePureSelector } from 'hooks';\nimport type { State } from 'types';\nimport {\n ALL,\n MARKET_LIMIT,\n MOBILE_TOP_MATCH_LIST_INDEX_CONFIG,\n} from '../../../constants';\nimport { makeSelectZones } from '../../../selectors';\nimport type { BannerItemsByZoneId, WidgetType } from '../../../types';\nimport { getAttributesByPeriod } from '../../../utils';\n\nconst {\n entities: {\n selectors: { selectSportEventIdsFromProps, selectMatches },\n },\n utils: { getBettingOptions },\n hooks: { useDeepMemo },\n} = core;\n\nconst {\n actions: { getBannersData },\n selectors: { makeSelectBannerZonesByAttributes },\n} = banners;\n\ninterface Output {\n periods: WidgetType[];\n sportIds: string[];\n missingSportEventIds: string[];\n activeZones: BannerItemsByZoneId | undefined;\n activePeriod?: WidgetType;\n activeSport: string;\n makeHandleActivePeriod: (zoneIndex: WidgetType) => VoidFunction;\n makeHandleChangeActiveSport: (sportId: string) => VoidFunction;\n}\n\nconst DEFAULT_SPORT = ALL;\n\nconst requestedZoneIdsCache: string[] = [];\n\nconst attributesByPeriod = getAttributesByPeriod(\n MOBILE_TOP_MATCH_LIST_INDEX_CONFIG\n);\n\nconst selectMissingSportEventIds = createSelector(\n selectSportEventIdsFromProps,\n selectMatches,\n (sportEventIds, sportEvents) =>\n sportEventIds.filter(id => {\n const sportEvent = sportEvents.get(id);\n\n return !sportEvent || sportEvent.markets.length < MARKET_LIMIT;\n })\n);\n\nconst useMobileTopMatchList = (): Output => {\n const dispatch = useDispatch();\n\n const [activeSport, setActiveSport] = useState(DEFAULT_SPORT);\n const [activePeriod, setActivePeriod] = useState();\n\n const makeHandleActivePeriod = useCallback(\n (zoneIndex: WidgetType) => () => {\n setActivePeriod(zoneIndex);\n setActiveSport(DEFAULT_SPORT);\n },\n []\n );\n\n const makeHandleChangeActiveSport = useCallback(\n (sportId: string) => () => setActiveSport(sportId),\n []\n );\n\n const bannerZonesByPeriod = usePureSelector((state: State) =>\n createStructuredSelector(bannerZonesSelectorsByPeriod)(state, {})\n );\n\n const memBannerZonesByPeriod = useDeepMemo(bannerZonesByPeriod);\n\n const memZoneIdsByPeriod = useMemo(\n () =>\n transform(\n memBannerZonesByPeriod,\n (\n acc,\n bannerItems,\n zoneId: keyof typeof memBannerZonesByPeriod\n ) => {\n acc[zoneId] = bannerItems.map(({ id }) => id);\n }\n ) as { [key in WidgetType]: string[] },\n [memBannerZonesByPeriod]\n );\n\n const zonesByPeriod = usePureSelector((state: State) =>\n makeZonesSelectorByPeriods(memZoneIdsByPeriod)(state, {})\n );\n\n const memZonesByPeriod = useDeepMemo(zonesByPeriod);\n\n const periods = useMemo(\n () =>\n reduce(\n memZonesByPeriod,\n (acc, zoneIds, key: WidgetType) => {\n const isWidgetTypeAvailable = some(\n zoneIds,\n matchIdsBySport => !isEmpty(matchIdsBySport)\n );\n\n if (isWidgetTypeAvailable) {\n acc.push(key);\n }\n\n return acc;\n },\n [] as WidgetType[]\n ),\n [memZonesByPeriod]\n );\n\n const activeZones = activePeriod\n ? memZonesByPeriod[activePeriod]\n : undefined;\n\n const { sportEventIds, sportIds } = useMemo(\n () => getUniqSportsAndSportEventIds(activeZones, activeSport),\n [activeSport, activeZones]\n );\n\n const missingSportEventIds = usePureSelector((state: State) =>\n selectMissingSportEventIds(state, { sportEventIds })\n );\n\n const memMissingSportEventIds = useDeepMemo(missingSportEventIds);\n\n useEffect(() => {\n const firstPeriod = first(periods);\n\n if (!firstPeriod) return;\n\n setActivePeriod(firstPeriod);\n }, [periods]);\n\n useEffect(() => {\n flatten(values(memZoneIdsByPeriod))\n .filter(zoneId => !requestedZoneIdsCache.includes(zoneId))\n .forEach(zoneId => {\n requestedZoneIdsCache.push(zoneId);\n dispatch(\n getBannersData({\n zoneId,\n marketStatuses: MARKETS_ACTIVE_STATUSES,\n withSportEvent: false,\n sportIds: getBettingOptions().sportIds,\n })\n );\n });\n }, [dispatch, memZoneIdsByPeriod]);\n\n return {\n periods,\n sportIds,\n missingSportEventIds: memMissingSportEventIds,\n activeZones,\n activePeriod,\n activeSport,\n makeHandleActivePeriod,\n makeHandleChangeActiveSport,\n };\n};\n\nconst bannerZonesSelectorsByPeriod = transform(\n attributesByPeriod,\n (acc, item, key: WidgetType) => {\n acc[key] = makeSelectBannerZonesByAttributes(item);\n }\n) as {\n [key in WidgetType]: ReturnType;\n};\n\nconst makeZonesSelectorByPeriods = (\n data: { [key in WidgetType]: string[] }\n) => {\n const selectProps = transform(data, (acc, zoneIds, period: WidgetType) => {\n acc[period] = makeSelectZones(zoneIds);\n }) as { [key in WidgetType]: ReturnType };\n\n return createStructuredSelector(selectProps);\n};\n\nconst getUniqSportsAndSportEventIds = (\n activeZones: BannerItemsByZoneId | undefined,\n activeSport: string\n): {\n sportEventIds: string[];\n sportIds: string[];\n} => {\n const sportEventIds: string[] = [];\n const sportIds: string[] = [];\n\n if (!activeZones) {\n return {\n sportEventIds,\n sportIds,\n };\n }\n\n forEach(activeZones, matchIdsBySport => {\n if (!isEmpty(matchIdsBySport)) {\n const nextSportEventIds = get(\n matchIdsBySport,\n activeSport,\n undefined\n );\n\n if (nextSportEventIds) {\n sportEventIds.push(...Array.from(nextSportEventIds));\n }\n\n sportIds.push(...keys(matchIdsBySport));\n }\n });\n\n return {\n sportEventIds: uniq(sportEventIds),\n sportIds: uniq(sportIds),\n };\n};\n\nexport default useMobileTopMatchList;\n","import React from 'react';\n\nimport MobileHeader from '../MobileHeader';\nimport MobileTopMatch from '../MobileTopMatch';\nimport SportsList from '../SportsList';\nimport useMobileTopMatchList from './useMobileTopMatchList';\n\nconst MobileTopMatchList: React.FC = () => {\n const {\n periods,\n sportIds,\n missingSportEventIds,\n activeZones,\n activePeriod,\n activeSport,\n makeHandleActivePeriod,\n makeHandleChangeActiveSport,\n } = useMobileTopMatchList();\n\n if (!activeZones || !activePeriod) return null;\n\n return (\n \n \n\n \n\n \n \n );\n};\n\nexport default React.memo(MobileTopMatchList);\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"fire_5a2c0\",\n \"use\": \"fire_5a2c0-usage\",\n \"viewBox\": \"0 0 10 11\",\n \"content\": \"\\n \\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport cn from 'classnames';\nimport { get, map, upperFirst } from 'lodash';\n\nimport { Icon } from 'components';\nimport { MAPPING_PERIOD, MAPPING_ZONE } from '../../../constants';\nimport type { WidgetType, ZoneLocation } from '../../../types';\n\nimport fireGlyph from 'assets/svg/fire.svg';\nimport './header.scss';\n\ninterface Props {\n widgetType: WidgetType;\n zoneLocations: ZoneLocation[];\n activeZoneLocation: ZoneLocation | undefined;\n makeHandleChangeZoneLocation: (zoneLocation: ZoneLocation) => VoidFunction;\n}\n\nconst Header: React.FC = ({\n zoneLocations,\n widgetType,\n activeZoneLocation,\n makeHandleChangeZoneLocation,\n}) => {\n const { formatMessage } = useIntl();\n\n const period = get(MAPPING_PERIOD, widgetType, undefined);\n\n return (\n
\n \n\n
\n {period ? formatMessage(period) : widgetType}\n
\n\n
\n {map(zoneLocations, location => {\n const title = get(MAPPING_ZONE, location, undefined);\n\n return (\n \n {upperFirst(\n title ? formatMessage(title) : location\n )}\n
\n );\n })}\n
\n \n );\n};\n\nexport default Header;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport core from '@gin-betting/core';\nimport { capitalize } from 'lodash';\n\nimport { LiveLabel, MatchTime } from 'components';\nimport globalMessages from 'messages';\n\nimport './dateTime.scss';\n\nconst {\n utils: { formatTimeAndDate },\n} = core;\n\ninterface Props {\n startTime: string;\n isLive: boolean;\n matchId: string;\n}\n\nconst DateTime: React.FC = ({ startTime, isLive, matchId }) => {\n const { isToday, date, time } = formatTimeAndDate(startTime);\n\n return (\n \n \n\n
\n {isLive ? (\n \n ) : (\n \n
\n {isToday ? time : capitalize(date)}\n
\n
\n {isToday ? (\n \n ) : (\n time\n )}\n
\n
\n )}\n
\n
\n );\n};\n\nexport default DateTime;\n","import core, { App, View } from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport { useMemoSelector } from 'hooks';\nimport ui from 'modules/ui';\nimport { selectRouteBySportEvent } from 'selectors';\nimport { State } from 'types';\n\nconst {\n entities: {\n selectors: { selectMatch, selectMatchCompetitorsValid },\n },\n} = core;\n\nconst {\n selectors: { selectOddsStatisticView },\n} = ui;\n\ninterface Input {\n matchId: string;\n}\n\ninterface Output {\n match: View.Match | null;\n competitors: View.CompetitorsValid;\n linkToMatch: string | null;\n isOddStatVisible: boolean;\n}\n\nconst useMatchRow = ({ matchId }: Input): Output => {\n const {\n match,\n competitors,\n route,\n oddStatView,\n } = useMemoSelector((state: State) => selectProps(state, { matchId }));\n\n const linkToMatch = match\n ? `${route}${App.Routes.MATCH}${match.slug}`\n : null;\n\n return {\n match,\n competitors,\n linkToMatch,\n isOddStatVisible: oddStatView.show,\n };\n};\n\nexport default useMatchRow;\n\nconst selectProps = createStructuredSelector({\n match: selectMatch,\n competitors: selectMatchCompetitorsValid,\n route: selectRouteBySportEvent,\n oddStatView: selectOddsStatisticView,\n});\n","import React from 'react';\nimport cn from 'classnames';\n\nimport { LIVE_SPORTEVENT_STATUSES } from 'app-constants';\nimport {\n GameLogo,\n MarketsCount,\n SmartLink,\n SportEventInViewSubscription,\n SportEventSeoMicromarking,\n} from 'components';\nimport favorite from 'modules/favorite';\nimport matchList from 'modules/match-list';\nimport { Action, AnalyticAttrsCtx, Category } from 'services/analytics';\nimport DateTime from '../DateTime';\nimport useMatchRow from './useMatchRow';\n\nimport './matchRow.scss';\n\ninterface Props {\n matchId: string;\n countRenderMarkets: number;\n hasMatchHeader: boolean;\n}\n\nconst {\n components: { TopMarketsContainer },\n} = matchList;\n\nconst {\n components: { ToggleFavoriteButton },\n} = favorite;\n\nconst ANALYTICS = {\n 'data-category': Category.TopSportEventsCenter,\n};\n\nconst ANALYTICS_MARKETS = {\n 'data-category': Category.TopSportEventsCenter,\n};\n\nconst MatchRow: React.FC = ({\n matchId,\n countRenderMarkets,\n hasMatchHeader,\n}) => {\n const { match, linkToMatch, competitors, isOddStatVisible } = useMatchRow({\n matchId,\n });\n\n if (!match) return null;\n\n const { sportId, startTime, marketsCount, status, version } = match;\n\n const isLive = LIVE_SPORTEVENT_STATUSES.includes(status);\n\n return (\n \n \n \n \n
\n \n
\n\n
\n \n
\n\n
\n \n \n {competitors.homeName}\n
\n \n {competitors.awayName}\n \n \n\n
\n \n
\n \n\n
\n \n \n \n
\n\n \n \n
\n );\n};\n\nexport default React.memo(MatchRow);\n","import React from 'react';\n\nimport './stubMatchRow.scss';\n\nconst StubMatchRow: React.FC = () =>
;\n\nexport default StubMatchRow;\n","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport core from '@gin-betting/core';\nimport cn from 'classnames';\nimport { filter, map } from 'lodash';\n\nimport { GameLogo } from 'components';\nimport { usePureSelector } from 'hooks';\nimport globalMsgs from 'messages';\nimport type { Analytics } from 'services/analytics';\nimport { ALL } from '../../../constants';\n\nimport './sportTabs.scss';\n\nconst {\n entities: {\n selectors: { selectSports },\n },\n} = core;\n\ninterface Props {\n sports: string[];\n activeSport: string;\n isNarrow: boolean;\n makeHandleChangeSport: (\n sportId: string\n ) => (event: React.MouseEvent) => void;\n analytics?: Analytics;\n}\n\nconst SportTabs: React.FC = ({\n sports,\n activeSport,\n makeHandleChangeSport,\n isNarrow,\n analytics,\n}) => {\n const { formatMessage } = useIntl();\n\n const allSports = usePureSelector(selectSports);\n const sportsIds = filter(sports, sport => sport !== ALL);\n\n return (\n
\n \n {formatMessage(globalMsgs.all)}\n
\n\n {map(sportsIds, sportId => {\n const isActive = activeSport === sportId;\n const sportName = allSports.get(sportId)?.name ?? '';\n\n return (\n \n
\n \n\n {isActive && (\n {sportName}\n )}\n
\n
\n );\n })}\n \n );\n};\n\nexport default React.memo(SportTabs);\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport banners, { BannerTypes } from '@gin-betting/banners';\nimport core from '@gin-betting/core';\nimport responsiveComponents from '@gin-betting/responsive-components';\nimport { difference, first, includes, keys, some } from 'lodash';\n\nimport { ACTIVE_MARKET_STATUSES } from 'app-constants';\nimport { useMemoSelector, usePrevious, usePureSelector } from 'hooks';\nimport { getMissingMatches } from '../../../actions';\nimport { ALL, NUMBER_OF_ROWS } from '../../../constants';\nimport { makeSelectZones } from '../../../selectors';\nimport type { ZoneLocation } from '../../../types';\n\nconst {\n entities: {\n selectors: { selectMissingSportEventIds },\n },\n utils: { getBettingOptions },\n hooks: { useDeepMemo },\n} = core;\n\nconst {\n actions: { getBannersData },\n selectors: { makeSelectBannerZonesByAttributes },\n} = banners;\n\nconst { useResponsiveContainer } = responsiveComponents;\n\ninterface Input {\n zoneAttributes: BannerTypes.BannerZoneAttributes[];\n}\n\ninterface Output {\n activeZoneLocation: ZoneLocation | undefined;\n activeSport: string;\n zoneLocations: ZoneLocation[];\n sportEventIds: string[];\n sportIds: string[];\n countRenderMarkets: number;\n isShowTopMatch: boolean;\n isNarrow: boolean;\n makeHandleChangeZoneLocation: (zoneLocation: ZoneLocation) => VoidFunction;\n makeHandleChangeSport: (sportId: string) => VoidFunction;\n containerRef: (node: Element | null) => void;\n}\n\nconst requestedZonesCache: string[] = [];\n\nconst useTopMatch = ({ zoneAttributes }: Input): Output => {\n const dispatch = useDispatch();\n const { containerRef, currentBreakpoints } = useResponsiveContainer({\n breakpoints: { small: 380, medium: 480, big: 650 },\n });\n\n // TODO: Calculate market count based on zone availability instead of element width\n const countRenderMarkets =\n currentBreakpoints.length === 0\n ? 0\n : includes(currentBreakpoints, 'big')\n ? 3\n : 1;\n\n const [activeZoneId, setActiveZoneId] = useState();\n const [activeSport, setActiveSport] = useState(ALL);\n\n const bannerZones = useMemoSelector(\n // NOTE: Currently \"zoneAttributes\" does not change, no need to re-create the selector fn\n makeSelectBannerZonesByAttributes(zoneAttributes),\n // TODO: Delete this obj whe \"selectSportTypeFromLocation\" is replaced\n {}\n );\n\n const memBannerZones = useDeepMemo(bannerZones);\n\n const memBannerZoneIds = useDeepMemo(memBannerZones.map(z => z.id));\n\n const selectZones = useMemo(() => makeSelectZones(memBannerZoneIds), [\n memBannerZoneIds,\n ]);\n\n const zones = usePureSelector(selectZones);\n\n const zonesWithEvent = memBannerZones.filter(({ id }) =>\n some(zones[id], sportIdsSet => !!sportIdsSet.size)\n );\n\n const memZoneWithEventIds = useDeepMemo(\n () => zonesWithEvent.map(({ id }) => id),\n [zonesWithEvent]\n );\n\n const activeZoneLocation = memBannerZones.find(z => z.id === activeZoneId)\n ?.attributes.pageLocation as ZoneLocation | undefined;\n\n const zone = activeZoneId ? zones[activeZoneId] : undefined;\n\n const sportEventIds: string[] = Array.from(zone?.[activeSport] ?? []);\n\n const missingIds = useMemoSelector(selectMissingSportEventIds, {\n sportEventIds,\n });\n\n const memMissingSportEventIds = useDeepMemo(missingIds);\n\n const isShowTopMatch = some(\n zones,\n item => (item?.[ALL]?.size ?? 0) >= NUMBER_OF_ROWS\n );\n\n const makeHandleChangeZoneLocation = useCallback(\n (zoneLocation: ZoneLocation) => () => {\n const zoneId = memBannerZones.find(\n z => z.attributes.pageLocation === zoneLocation\n )?.id;\n\n if (!zoneId) return;\n\n setActiveZoneId(zoneId);\n setActiveSport(ALL);\n },\n [memBannerZones]\n );\n\n const makeHandleChangeSport = useCallback(\n (sportId: string) => () => {\n setActiveSport(sportId);\n },\n []\n );\n\n const prevCountRenderMarkets = usePrevious(countRenderMarkets);\n\n useEffect(() => {\n if (\n memMissingSportEventIds.length === 0 ||\n // NOTE: Prev value for count is required to avoid obsolete requests\n // when widget is rendered empty at first\n prevCountRenderMarkets === undefined ||\n countRenderMarkets === 0 ||\n countRenderMarkets < prevCountRenderMarkets\n ) {\n return;\n }\n\n dispatch(\n getMissingMatches({\n sportEventsIds: memMissingSportEventIds,\n isTopMarkets: true,\n marketLimit: countRenderMarkets,\n withMarketsCount: true,\n marketStatuses: ACTIVE_MARKET_STATUSES,\n })\n );\n /* \"prevCountRenderMarkets\" is mutable ref.current */\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [dispatch, countRenderMarkets, memMissingSportEventIds]);\n\n useEffect(() => {\n const firstZoneId = first(memZoneWithEventIds);\n\n if (!firstZoneId) return;\n\n setActiveZoneId(firstZoneId);\n }, [memZoneWithEventIds]);\n\n useEffect(() => {\n memBannerZoneIds.forEach(zoneId => {\n if (requestedZonesCache.includes(zoneId)) return;\n\n requestedZonesCache.push(zoneId);\n\n dispatch(\n getBannersData({\n zoneId,\n marketStatuses: ACTIVE_MARKET_STATUSES,\n withSportEvent: false,\n sportIds: getBettingOptions().sportIds,\n })\n );\n });\n }, [dispatch, memBannerZoneIds]);\n\n return {\n activeZoneLocation,\n activeSport,\n countRenderMarkets,\n isShowTopMatch,\n zoneLocations: zonesWithEvent.map(\n z => z.attributes.pageLocation as ZoneLocation\n ),\n sportIds: keys(zone),\n sportEventIds: difference(sportEventIds, memMissingSportEventIds).slice(\n 0,\n NUMBER_OF_ROWS\n ),\n isNarrow:\n currentBreakpoints.length === 1 &&\n currentBreakpoints[0] === 'small',\n makeHandleChangeZoneLocation,\n makeHandleChangeSport,\n containerRef,\n };\n};\n\nexport default useTopMatch;\n","import React from 'react';\nimport { BannerTypes } from '@gin-betting/banners';\nimport { map, times } from 'lodash';\n\nimport { Action, Category } from 'services/analytics';\nimport { NUMBER_OF_ROWS } from '../../../constants';\nimport type { WidgetType } from '../../../types';\nimport Header from '../Header';\nimport MatchRow, { StubMatchRow } from '../MatchRow';\nimport SportTabs from '../SportTabs';\nimport useTopMatch from './useTopMatch';\n\nimport './topMatch.scss';\n\ninterface Props {\n type: WidgetType;\n zoneAttributes: BannerTypes.BannerZoneAttributes[];\n}\n\nconst ANALYTICS = {\n category: Category.TopSportEventsCenter,\n action: Action.FilterSport,\n};\n\nconst TopMatch: React.FC = ({ type, zoneAttributes }) => {\n const {\n isShowTopMatch,\n activeZoneLocation,\n makeHandleChangeZoneLocation,\n zoneLocations,\n activeSport,\n makeHandleChangeSport,\n sportEventIds,\n containerRef,\n countRenderMarkets,\n sportIds,\n isNarrow,\n } = useTopMatch({ zoneAttributes });\n\n if (!isShowTopMatch) return null;\n\n return (\n
\n \n\n \n\n {map(sportEventIds, (sportEventId, index) => (\n \n ))}\n\n {times(NUMBER_OF_ROWS - sportEventIds.length).map(idx => (\n \n ))}\n
\n );\n};\n\nexport default TopMatch;\n","import React from 'react';\nimport { BannerTypes } from '@gin-betting/banners';\nimport CollapsibleContainer from '@gin-betting/components/collapsible-container';\nimport { TimePeriod } from '@gin-betting/constants';\nimport core, { App } from '@gin-betting/core';\nimport { keys } from 'lodash';\n\nimport { useAppliedFilters } from 'hooks';\nimport features from 'services/feature-manager';\nimport UserDevice from 'services/user-device';\nimport { WIDGETS } from '../../constants';\nimport type { WidgetType } from '../../types';\nimport { getAttributesByPeriod } from '../../utils';\nimport ColorfulBanners from '../ColorfulBanners';\nimport TopMatch from './TopMatch';\n\nimport './topMatchList.scss';\n\ninterface Props {\n sportType: App.SportType;\n}\n\nconst topMatchListIndexConfig: { [key in WidgetType]: number } = {\n daily: TimePeriod.Daily,\n weekly: TimePeriod.Weekly,\n monthly: TimePeriod.Monthly,\n};\n\nconst attributesByType = getAttributesByPeriod(topMatchListIndexConfig);\n\nconst {\n constants: { SportType },\n} = core;\n\nconst TopMatchList: React.FC = ({ sportType }) => {\n const filters = useAppliedFilters();\n const isCollapsed = keys(filters).length > 0;\n\n const isMixPage = sportType === SportType.Mix;\n\n const isHideWidgetTopMatches = features.isActive(\n features.list.WidgetHideTopMatches\n );\n\n return (\n \n {isMixPage && (\n \n )}\n
\n {!UserDevice.getInstance()?.isDeviceMobile() &&\n !isHideWidgetTopMatches &&\n WIDGETS.map((type, index) => {\n const zoneAttributes = attributesByType[type];\n\n if (!zoneAttributes || index >= 2) {\n return null;\n }\n\n return (\n \n );\n })}\n
\n
\n );\n};\n\nexport default TopMatchList;\n","import banners, { BannerTypes } from '@gin-betting/banners';\nimport core from '@gin-betting/core';\n\nimport UserDevice from 'services/user-device';\nimport { GetBannerZones } from './types';\n\nconst {\n entities: {\n constants: { GET_SPORTS_SUCCESS },\n },\n utils: { getSportTypeFromLocation },\n} = core;\n\nconst {\n actions: { getAvailableBannerZones },\n} = banners;\n\nexport const getBannerZones: GetBannerZones = actions$ => {\n return actions$.ofType(GET_SPORTS_SUCCESS).map(() => {\n const platform = UserDevice.getInstance()?.isDeviceMobile()\n ? BannerTypes.BannerZonePlatform.MOBILE\n : BannerTypes.BannerZonePlatform.DESKTOP;\n\n const sportType = getSportTypeFromLocation();\n\n return getAvailableBannerZones({\n pageType: sportType,\n platform,\n });\n });\n};\n","import { App } from '@gin-betting/core';\nimport { Map, OrderedSet, Record } from 'immutable';\n\nimport {\n GET_FEATURED_TOURNAMENTS_FAIL,\n GET_FEATURED_TOURNAMENTS_REQUEST,\n GET_FEATURED_TOURNAMENTS_SUCCESS,\n} from './constants';\nimport type {\n Actions,\n FeaturedTournamentsStateShape,\n PromoState,\n PromoStateShape,\n} from './types';\nimport { getTransformedFeaturedConfigs } from './utils';\n\nconst LOADED_ZONES = new Set();\n\nconst FeaturedTournamentsRecord = Record(\n {\n configs: Map(),\n currentConfigs: OrderedSet([]),\n fetchStatus: App.FetchStatus.INITIAL,\n },\n 'FeaturedTournamentsState'\n);\n\nconst PromoStateRecord = Record(\n {\n featuredTournaments: new FeaturedTournamentsRecord(),\n },\n 'PromoState'\n);\n\nconst initialState = new PromoStateRecord();\n\nexport default function reducer(\n state: PromoState = initialState,\n action: Actions\n): PromoState {\n switch (action.type) {\n case GET_FEATURED_TOURNAMENTS_REQUEST: {\n const {\n args,\n variables: { zoneId },\n } = action.payload;\n\n if (args?.isPolling) {\n return state;\n }\n\n let nextFeaturedTournaments = state.featuredTournaments;\n\n // TODO: Refactor \"fetchStatus\", it should be used only within requested \"zone\" context\n if (!LOADED_ZONES.has(zoneId)) {\n nextFeaturedTournaments = nextFeaturedTournaments.set(\n 'fetchStatus',\n App.FetchStatus.LOADING\n );\n\n LOADED_ZONES.add(zoneId);\n }\n\n return state.set('featuredTournaments', nextFeaturedTournaments);\n }\n\n case GET_FEATURED_TOURNAMENTS_SUCCESS: {\n const {\n data: { featuredZoneConfigs },\n allSports,\n } = action.payload;\n\n const { configs } = state.featuredTournaments;\n\n const nextConfigs = getTransformedFeaturedConfigs(\n featuredZoneConfigs,\n allSports\n );\n\n const newFeaturedTournaments = state.featuredTournaments\n .set('configs', configs.concat(nextConfigs))\n .set('currentConfigs', OrderedSet(nextConfigs.keys()))\n .set('fetchStatus', App.FetchStatus.LOADED);\n\n return state.set('featuredTournaments', newFeaturedTournaments);\n }\n\n case GET_FEATURED_TOURNAMENTS_FAIL: {\n const newFeaturedTournaments = state.featuredTournaments.set(\n 'fetchStatus',\n App.FetchStatus.LOADED\n );\n\n return state.set('featuredTournaments', newFeaturedTournaments);\n }\n\n default:\n return state;\n }\n}\n","import * as actions from './actions';\nimport * as components from './components';\nimport * as constants from './constants';\nimport * as epics from './epics';\nimport * as hooks from './hooks';\nimport reducer from './reducer';\nimport * as selectors from './selectors';\nimport * as types from './types';\nimport * as utils from './utils';\n\nexport default {\n constants,\n components,\n actions,\n reducer,\n epics,\n selectors,\n utils,\n hooks,\n};\n\nexport { types as Promo };\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"topBannerCompetitorInfo__container___27ZWu\",\"competitor\":\"topBannerCompetitorInfo__competitor___b1XVP\",\"wrapper\":\"topBannerCompetitorInfo__wrapper___2Q5Qs\",\"name\":\"topBannerCompetitorInfo__name___3lnH5\"};","export enum Feature {\n MatchMarketsFavorites = 'match.markets-favorites',\n CategorizerTopTournaments = 'categorizer.hoist-top-tournaments',\n CategorizerSortingApi = 'categorizer.sorting-api',\n MatchListSportEventRowOverview = 'match-list.sport-event-row-overview',\n BetslipStakeSuggesterByCurrency = 'betslip.stake-suggester-by-currency',\n BetslipRememberLastBetSum = 'betslip.remember-last-bet-sum',\n BetslipRefillBalanceModal = 'betslip.refill-balance-modal',\n WidgetHideTopMatches = 'widget.hide-top-matches',\n BannerButtonBackground = 'banner.button-background-new',\n AppUpdateColors = 'app.update-colors',\n StreamGridPlayer = 'stream.grid-player',\n MatchStatisticButton = 'match.statistic-button',\n}\n\nexport enum MultivariateFeature {\n HelperBackgroundColor = 'helper.background-color',\n}\n","/* eslint-disable max-classes-per-file */\nimport { includes, reduce } from 'lodash';\n\nimport { Feature, MultivariateFeature } from './constants';\n\ntype Features = {\n [key in Feature]?: boolean;\n};\n\ntype InputFeatures = {\n [key: string]: boolean | string;\n};\n\ntype MultivariateFeatures = {\n [key in MultivariateFeature]?: string;\n};\n\ntype AvailableFeatureKey<\n T extends MultivariateFeature\n> = AvailableMultivariateFeatures[T][number];\n\nconst TRUTHY_VALUES = ['true', 'enabled'] as const;\nconst FALSY_VALUES = ['false', 'disabled'] as const;\n\nconst BOOLEAN_VALUES = [...TRUTHY_VALUES, ...FALSY_VALUES] as const;\n\nclass AvailableMultivariateFeatures\n implements Record {\n [MultivariateFeature.HelperBackgroundColor] = [\n 'green',\n 'yellow',\n 'blue',\n ] as const;\n}\n\nconst availableMultivariateFeatures = new AvailableMultivariateFeatures();\n\nclass FeatureManager {\n private features: Features & MultivariateFeatures = {};\n\n list = {\n ...Feature,\n ...MultivariateFeature,\n };\n\n setFeatures(\n input: Promise | InputFeatures | undefined\n ): void {\n if (!input) return;\n\n if (isPromise(input)) {\n input\n .then(rawFeatures => {\n this.updateFeatures(rawFeatures);\n })\n .catch(err => {\n console.error(err);\n });\n } else {\n this.updateFeatures(input);\n }\n }\n\n isActive(input: Feature | Feature[]): boolean {\n const featureNames = Array.isArray(input) ? input : [input];\n\n return featureNames.every(name => Boolean(this.features[name]));\n }\n\n isVariantEqual(\n name: T,\n value: AvailableMultivariateFeatures[T][number]\n ): boolean {\n return this.features[name] === value;\n }\n\n getVariants(\n name: T\n ): { [Key in AvailableFeatureKey]: boolean } {\n return reduce(\n availableMultivariateFeatures[name],\n (acc, variant: AvailableFeatureKey) => {\n acc[variant] = this.features[name] === variant;\n\n return acc;\n },\n {} as { [Key in AvailableFeatureKey]: boolean }\n );\n }\n\n isDisabled(featureName: Feature | MultivariateFeature): boolean {\n return !this.features[featureName];\n }\n\n getFeatures(): Features {\n // TODO: Optimize\n return {\n ...this.features,\n };\n }\n\n private updateFeatures(rawFeatures: InputFeatures): void {\n Object.keys(rawFeatures).forEach(featureName => {\n const rawFeatureValue = rawFeatures[featureName];\n\n if (\n isSupportedFeature(featureName) &&\n isValidValue(rawFeatureValue, featureName)\n ) {\n this.features[featureName] = includes(\n BOOLEAN_VALUES,\n rawFeatureValue\n )\n ? includes(TRUTHY_VALUES, rawFeatureValue)\n : (rawFeatureValue as any);\n }\n });\n }\n}\n\nconst supportedFeatureNames = Object.values({\n ...Feature,\n ...MultivariateFeature,\n});\n\nfunction isSupportedFeature(\n featureName: string\n): featureName is Feature | MultivariateFeature {\n const isSupported = supportedFeatureNames.includes(featureName);\n\n if (!isSupported && !__DEV__) {\n const formattedFeatureNames = supportedFeatureNames.map(\n name => `\\n- \"${name}\"`\n );\n console.warn(\n `[FeatureManager]: Unknown feature passed \"${featureName}\"\\n\\nSupported features: ${formattedFeatureNames}`\n );\n }\n\n return isSupported;\n}\n\nfunction isValidValue(\n value: any,\n featureName: string\n): value is boolean | string {\n const isValid = typeof value === 'boolean' || typeof value === 'string';\n\n if (!isValid) {\n console.error(\n `[FeatureManager]: Invalid value passed for feature: \"${featureName}\"! Expected boolean or string, but received: ${typeof value}`\n );\n }\n\n return isValid;\n}\n\nfunction isPromise(obj: PromiseLike | any): obj is PromiseLike {\n return (\n !!obj &&\n (typeof obj === 'object' || typeof obj === 'function') &&\n typeof obj.then === 'function'\n );\n}\n\nexport default new FeatureManager();\n","import featureManager from './FeatureManager';\n\nexport { Feature, MultivariateFeature } from './constants';\nexport default featureManager;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"freebet-wrapper\":\"liveList__freebet-wrapper___2Xc3k\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"leftSidebar__container___3nn04\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"topMarkets__container___2iXaB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"sidebarTogglerMob__container___1HvNr\",\"is-full-screen\":\"sidebarTogglerMob__is-full-screen___3h3Qx\",\"open-btn\":\"sidebarTogglerMob__open-btn___a3SFF\",\"close-btn\":\"sidebarTogglerMob__close-btn___1q3HI\",\"total-odd\":\"sidebarTogglerMob__total-odd___2Oq1h\",\"close-icon\":\"sidebarTogglerMob__close-icon___3WHPF\",\"icon\":\"sidebarTogglerMob__icon___LJF9G\",\"close-text\":\"sidebarTogglerMob__close-text___nPGwv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"logo\":\"competitorLogo__logo___146on\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"name\":\"MarketTitle__name___3s5m_\",\"ellipsis\":\"MarketTitle__ellipsis___fM2H7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"betslip__container___2h_Wl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"back\":\"backButton__back___3_4bU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"betslipList__container___3jBO_\",\"solo\":\"betslipList__solo___3gKP5\",\"header-wrapper\":\"betslipList__header-wrapper___DNMeH\",\"is-mobile\":\"betslipList__is-mobile___1oo1I\",\"is-opened\":\"betslipList__is-opened___1JD8k\",\"divider\":\"betslipList__divider___3kLj3\"};","import { SpecifierName, Sports } from '@gin-betting/constants';\nimport { App, View } from '@gin-betting/core';\nimport { without } from 'lodash';\n\nimport { LIVE_SPORTEVENT_STATUSES } from 'app-constants';\nimport isMetaTypeEqualScoreType from 'utils/isMetaTypeEqualScoreType';\nimport type { GetMetaPart, ScoreConfig, SetMatchPart } from './types';\n\nconst emptyMeta: View.Meta = { name: '', value: '', id: '' };\n\nconst getMetaPartIceHockeyFootball: GetMetaPart = (meta, sportId) => {\n const config = CONFIG_BY_SPORTS[sportId];\n\n const period = createPeriod(meta);\n\n if (period && config?.timeSort?.[period.name]) return period;\n\n return emptyMeta;\n};\n\nfunction makeCreateMetaByType([type, typeNumber]: [\n App.MetaTypes,\n App.MetaTypes\n]) {\n return (meta: View.Meta[]): View.Meta | undefined => {\n const metaType = meta.find(({ name }) => name === type)?.value;\n const metaTypeValue = meta.find(({ name }) => name === typeNumber)\n ?.value;\n\n if (!metaType || !metaTypeValue) return;\n\n return {\n name: metaType,\n value: metaTypeValue,\n };\n };\n}\n\nconst createPeriod = makeCreateMetaByType([\n App.MetaTypes.TYPE_PERIOD,\n App.MetaTypes.TYPE_PERIOD_NUMBER,\n]);\n\nconst createGameState = makeCreateMetaByType([\n App.MetaTypes.TYPE_GAME_STATE,\n App.MetaTypes.TYPE_STATE_NUMBER,\n]);\n\nconst getMetaPartEsportsFifa: GetMetaPart = (meta, sportId) => {\n const config = CONFIG_BY_SPORTS[sportId];\n\n const period = createPeriod(meta);\n\n if (period && config?.timeSort?.[period.name]) return period;\n\n if (period && config?.insteadMeta?.includes(period.name as App.MetaTypes)) {\n return {\n name: App.MetaTypes.TYPE_PERIOD_2ND_HALF,\n value: '',\n };\n }\n\n return emptyMeta;\n};\n\nconst getMetaPartEsportsIceHockey: GetMetaPart = (meta, sportId) => {\n const config = CONFIG_BY_SPORTS[sportId];\n\n const period = createPeriod(meta);\n\n if (period && config?.timeSort?.[period.name]) return period;\n\n if (period && config?.insteadMeta?.includes(period.name as App.MetaTypes)) {\n return { name: App.MetaTypes.TYPE_REGULAR, value: '3' };\n }\n\n return emptyMeta;\n};\n\nconst getMetaPartEsportsRocketLeagueCounterStrikeRainbowSix: GetMetaPart = (\n meta,\n sportId\n) => {\n const config = CONFIG_BY_SPORTS[sportId];\n\n const gameState = createGameState(meta);\n\n if (gameState && config?.timeSort?.[gameState.name]) {\n return gameState;\n }\n\n return emptyMeta;\n};\n\nconst tennisSetMatchPartTypes: SetMatchPart = ({\n score,\n currentMatchPart,\n isOverview,\n}) => {\n const isNumerable = App.ScoreTypesNumerable.includes(score.type);\n\n const result = {\n scoreTypesTitleMapping: SCORE_TYPES_TITLE_MAPPING,\n isNumerable,\n };\n\n if (isOverview)\n return {\n scoreTypesTitleMapping: {\n ...SCORE_TYPES_TITLE_MAPPING,\n [App.ScoreTypes.TYPE_SET]: '',\n [App.ScoreTypes.TYPE_GAME_POINTS]: 'P',\n },\n isNumerable,\n };\n\n if (!currentMatchPart) return result;\n\n const { type, indexNumber, status } = currentMatchPart;\n\n const isCurrentPart =\n LIVE_SPORTEVENT_STATUSES.includes(status) &&\n isMetaTypeEqualScoreType(type, score.type) &&\n score.indexNumber === indexNumber;\n\n if (!isCurrentPart) return result;\n\n return {\n scoreTypesTitleMapping: {\n ...SCORE_TYPES_TITLE_MAPPING,\n [App.ScoreTypes.TYPE_SET]: 'GS',\n },\n isNumerable: false,\n };\n};\n\nconst dota2MatchPartTypes: SetMatchPart = ({ score, isOverview }) => ({\n scoreTypesTitleMapping: {\n ...SCORE_TYPES_TITLE_MAPPING,\n ...(isOverview && {\n [App.ScoreTypes.TYPE_MAP]: '',\n }),\n },\n isNumerable: App.ScoreTypesNumerable.includes(score.type),\n});\nconst basketballMatchPartTypes: SetMatchPart = ({ score, isOverview }) => ({\n scoreTypesTitleMapping: {\n ...SCORE_TYPES_TITLE_MAPPING,\n ...(isOverview && {\n [App.ScoreTypes.TYPE_QUARTER]: '',\n }),\n },\n isNumerable: App.ScoreTypesNumerable.includes(score.type),\n});\n\nexport const SCORE_TYPES_TITLE_MAPPING: Record = {\n [App.ScoreTypes.TYPE_TOTAL]: 'Score',\n [App.ScoreTypes.TYPE_GAME_POINTS]: 'GP',\n [App.ScoreTypes.TYPE_SET]: 'S',\n [App.ScoreTypes.TYPE_TIE_BREAK]: 'TBP',\n [App.ScoreTypes.TYPE_GOLDEN_SET]: 'GS',\n [App.ScoreTypes.TYPE_YELLOW_CARD]: 'YC',\n [App.ScoreTypes.TYPE_RED_CARD]: 'RC',\n [App.ScoreTypes.TYPE_YELLOW_RED_CARD]: 'YRC',\n [App.ScoreTypes.TYPE_PERIOD_1ST_HALF]: '1H',\n [App.ScoreTypes.TYPE_PERIOD_1ST_EXTRA]: '1E',\n [App.ScoreTypes.TYPE_PERIOD_2ND_HALF]: '2H',\n [App.ScoreTypes.TYPE_PERIOD_2ND_EXTRA]: '2E',\n [App.ScoreTypes.TYPE_PERIOD_PENALTIES]: 'P',\n [App.ScoreTypes.TYPE_QUARTER]: 'Q',\n [App.ScoreTypes.TYPE_QUARTER_OVERTIME]: 'OT',\n [App.ScoreTypes.TYPE_PERIOD_REGULAR]: 'P',\n [App.ScoreTypes.TYPE_PERIOD_OVERTIME]: 'OT',\n [App.ScoreTypes.TYPE_PERIOD_BULLETS]: 'B',\n [App.ScoreTypes.TYPE_GAME_KILLS]: 'K',\n [App.ScoreTypes.TYPE_GAME_PLAYERS]: 'Players',\n [App.ScoreTypes.TYPE_MAP]: 'Map',\n [App.ScoreTypes.TYPE_ROUND_OVERTIME]: 'OT',\n [App.ScoreTypes.TYPE_INNING_POINTS]: 'IN',\n [App.ScoreTypes.TYPE_INNING_OUTS]: 'INO',\n};\n\nexport const SPECIFIER_SCORE_TYPES_MAPPING = {\n [SpecifierName.inningnr]: App.ScoreTypes.TYPE_INNING_POINTS,\n [SpecifierName.quarternr]: App.ScoreTypes.TYPE_QUARTER,\n [SpecifierName.setnr]: App.ScoreTypes.TYPE_SET,\n [SpecifierName.gamenr]: App.ScoreTypes.TYPE_GAME_POINTS,\n [SpecifierName.mapnr]: App.ScoreTypes.TYPE_MAP,\n [SpecifierName.periodnr]: App.ScoreTypes.TYPE_PERIOD_REGULAR,\n};\n\nexport const metaTypesNumerable = without(\n App.MetaTypesNumerable,\n App.MetaTypes.TYPE_OVERTIME,\n App.MetaTypes.TYPE_BULLETS\n);\n\nconst handballScoreTitleMapping = {\n ...SCORE_TYPES_TITLE_MAPPING,\n [App.ScoreTypes.TYPE_PERIOD_1ST_EXTRA]: '1ET',\n [App.ScoreTypes.TYPE_PERIOD_2ND_EXTRA]: '2ET',\n};\n\nconst footballOverviewTitleMapping = {\n ...SCORE_TYPES_TITLE_MAPPING,\n [App.ScoreTypes.TYPE_PERIOD_1ST_HALF]: '1',\n [App.ScoreTypes.TYPE_PERIOD_2ND_HALF]: '2',\n};\n\nconst handballMatchPart: SetMatchPart = ({ score }) => {\n const isNumerable = App.ScoreTypesNumerable.includes(score.type);\n\n return {\n scoreTypesTitleMapping: handballScoreTitleMapping,\n isNumerable,\n };\n};\n\nconst footballMatchPart: SetMatchPart = ({ score, isOverview }) => {\n const isNumerable = App.ScoreTypesNumerable.includes(score.type);\n\n return {\n scoreTypesTitleMapping: isOverview\n ? footballOverviewTitleMapping\n : SCORE_TYPES_TITLE_MAPPING,\n isNumerable,\n };\n};\n\nconst defaultTitleParser: NonNullable = ({\n index,\n text,\n}) => `${text} ${index}`;\n\nconst iceHockeyTennisTitleParser: NonNullable = ({\n index,\n text,\n isOverview,\n}) => (isOverview ? `${index}` : `${index} ${text}`);\n\nconst defaultBasketballTitleParser: NonNullable = ({\n index,\n text,\n}) => `${index} ${text}`;\n\nconst counterStrikeTitleParser: NonNullable = ({\n index,\n meta,\n text,\n type,\n}) => {\n const defaultResult = defaultTitleParser({\n index,\n meta,\n text,\n type,\n });\n\n if (![App.MetaTypes.TYPE_MAP, App.ScoreTypes.TYPE_MAP].includes(type)) {\n return defaultResult;\n }\n\n const map = meta.find(({ name }) => name === App.MetaTypes.TYPE_MAP);\n\n if (!map) {\n return defaultResult;\n }\n\n let mapsMapping: { [key: number]: string } = {};\n\n try {\n mapsMapping = JSON.parse(map.value);\n } catch (e) {}\n\n const mapId = mapsMapping[index];\n\n if (!mapId || mapId.toLocaleLowerCase() === 'unknown') return defaultResult;\n\n return mapId;\n};\n\nconst basketballTitleParser: NonNullable = ({\n index,\n meta,\n text,\n type,\n}) => {\n const defaultResult = defaultTitleParser({\n index,\n meta,\n text,\n type,\n });\n\n const defaultBasketball = defaultBasketballTitleParser({\n index,\n meta,\n text,\n type,\n });\n\n if (\n ![\n App.MetaTypes.TYPE_OVERTIME,\n App.ScoreTypes.TYPE_QUARTER_OVERTIME,\n ].includes(type)\n ) {\n return defaultBasketball;\n }\n\n return defaultResult;\n};\n\nexport const CONFIG_BY_SPORTS: {\n [sportId: string]: ScoreConfig;\n} = {\n [Sports.ICE_HOCKEY]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_PERIOD_REGULAR]: 2,\n [App.ScoreTypes.TYPE_PERIOD_BULLETS]: 3,\n [App.ScoreTypes.TYPE_PERIOD_OVERTIME]: 4,\n },\n timeSort: {\n [App.MetaTypes.TYPE_REGULAR]: 1,\n [App.MetaTypes.TYPE_OVERTIME]: 2,\n [App.MetaTypes.TYPE_BULLETS]: 3,\n },\n customMetaTypesNaming: {\n [App.MetaTypes.TYPE_REGULAR]: 'Period',\n [App.MetaTypes.TYPE_BULLETS]: 'Shootout',\n [App.MetaTypes.TYPE_OVERTIME]: 'Overtime',\n },\n partStartsFromZero: [App.MetaTypes.TYPE_REGULAR],\n customMetaTypesNumerable: without(\n App.MetaTypesNumerable,\n App.MetaTypes.TYPE_BULLETS,\n App.MetaTypes.TYPE_OVERTIME\n ),\n isTimeInSeconds: true,\n isTimeCountdown: true,\n getMetaPart: getMetaPartIceHockeyFootball,\n titleParser: iceHockeyTennisTitleParser,\n },\n [Sports.VOLLEYBALL]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_SET]: 2,\n [App.ScoreTypes.TYPE_GOLDEN_SET]: 3,\n },\n partStartsFromZero: [App.MetaTypes.TYPE_SET],\n timeSort: {\n [App.MetaTypes.TYPE_SET]: 1,\n [App.MetaTypes.TYPE_GOLDEN_SET]: 2,\n },\n },\n [Sports.BASKETBALL]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_QUARTER]: 2,\n [App.ScoreTypes.TYPE_GAME_POINTS]: 3,\n },\n partStartsFromZero: [App.MetaTypes.TYPE_QUARTER],\n timeSort: {\n [App.MetaTypes.TYPE_QUARTER]: 1,\n [App.MetaTypes.TYPE_OVERTIME]: 2,\n },\n isTimeInSeconds: true,\n isTimeCountdown: true,\n customMetaTypesNumerable: App.MetaTypesNumerable,\n titleParser: basketballTitleParser,\n setMatchPartTypes: basketballMatchPartTypes,\n },\n [Sports.FOOTBALL]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_RED_CARD]: 2,\n [App.ScoreTypes.TYPE_PERIOD_1ST_HALF]: 3,\n [App.ScoreTypes.TYPE_PERIOD_2ND_HALF]: 4,\n [App.ScoreTypes.TYPE_PERIOD_1ST_EXTRA]: 5,\n [App.ScoreTypes.TYPE_PERIOD_2ND_EXTRA]: 6,\n [App.ScoreTypes.TYPE_PERIOD_PENALTIES]: 7,\n },\n timeSort: {\n [App.MetaTypes.TYPE_PERIOD_1ST_HALF]: 1,\n [App.MetaTypes.TYPE_PERIOD_2ND_HALF]: 2,\n [App.MetaTypes.TYPE_PERIOD_1ST_EXTRA]: 3,\n [App.MetaTypes.TYPE_PERIOD_2ND_EXTRA]: 4,\n [App.MetaTypes.TYPE_PERIOD_PENALTIES]: 5,\n },\n customMetaTypesNaming: {\n [App.MetaTypes.TYPE_PERIOD_1ST_HALF]: '1 Time',\n [App.MetaTypes.TYPE_PERIOD_2ND_HALF]: '2 Time',\n [App.MetaTypes.TYPE_PERIOD_1ST_EXTRA]: '1 Overtime',\n [App.MetaTypes.TYPE_PERIOD_2ND_EXTRA]: '2 Overtime',\n [App.MetaTypes.TYPE_PERIOD_PENALTIES]: 'Penalty',\n },\n isTimeInSeconds: true,\n getMetaPart: getMetaPartIceHockeyFootball,\n setMatchPartTypes: footballMatchPart,\n },\n [Sports.TENNIS]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_SET]: 2,\n [App.ScoreTypes.TYPE_GAME_POINTS]: 3,\n [App.ScoreTypes.TYPE_TIE_BREAK]: 4,\n },\n partStartsFromZero: [App.MetaTypes.TYPE_SET],\n timeSort: {\n [App.MetaTypes.TYPE_SET]: 1,\n },\n customMetaTypesNaming: {\n [App.MetaTypes.TYPE_SET]: 'Set',\n },\n setMatchPartTypes: tennisSetMatchPartTypes,\n titleParser: iceHockeyTennisTitleParser,\n },\n [Sports.HANDBALL]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_PERIOD_1ST_HALF]: 2,\n [App.ScoreTypes.TYPE_PERIOD_2ND_HALF]: 3,\n [App.ScoreTypes.TYPE_PERIOD_1ST_EXTRA]: 4,\n [App.ScoreTypes.TYPE_PERIOD_2ND_EXTRA]: 5,\n },\n timeSort: {\n [App.MetaTypes.TYPE_PERIOD_1ST_HALF]: 1,\n [App.MetaTypes.TYPE_PERIOD_2ND_HALF]: 2,\n [App.MetaTypes.TYPE_PERIOD_1ST_EXTRA]: 3,\n [App.MetaTypes.TYPE_PERIOD_2ND_EXTRA]: 4,\n [App.MetaTypes.TYPE_PERIOD_PENALTIES]: 5,\n },\n customMetaTypesNaming: {\n [App.MetaTypes.TYPE_PERIOD_1ST_EXTRA]: '1ET',\n [App.MetaTypes.TYPE_PERIOD_2ND_EXTRA]: '2ET',\n },\n isTimeInSeconds: true,\n customMetaTypesTimeDisabled: [App.MetaTypes.TYPE_PERIOD_PENALTIES],\n getMetaPart: getMetaPartIceHockeyFootball,\n setMatchPartTypes: handballMatchPart,\n },\n [Sports.TABLE_TENNIS]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_SET]: 2,\n [App.ScoreTypes.TYPE_GAME_POINTS]: 3,\n [App.ScoreTypes.TYPE_TIE_BREAK]: 4,\n },\n timeSort: {\n [App.MetaTypes.TYPE_SET]: 1,\n },\n isTimeDisabled: true,\n },\n [Sports.BEACH_VOLLEYBALL]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_SET]: 2,\n [App.ScoreTypes.TYPE_GOLDEN_SET]: 3,\n },\n timeSort: {\n [App.MetaTypes.TYPE_SET]: 1,\n [App.MetaTypes.TYPE_GOLDEN_SET]: 2,\n },\n isTimeDisabled: true,\n },\n [Sports.BADMINTON]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_SET]: 2,\n [App.ScoreTypes.TYPE_GOLDEN_SET]: 3,\n },\n timeSort: {\n [App.MetaTypes.TYPE_SET]: 1,\n [App.MetaTypes.TYPE_GOLDEN_SET]: 2,\n },\n isTimeDisabled: true,\n },\n [Sports.BASEBALL]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_INNING_POINTS]: 2,\n },\n timeSort: {\n [App.MetaTypes.TYPE_INNING]: 1,\n },\n },\n\n [Sports.ESPORTS_DOTA_2]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_MAP]: 2,\n },\n timeSort: {\n [App.MetaTypes.TYPE_MAP]: 1,\n },\n titleParser: defaultTitleParser,\n isTimeInSeconds: true,\n setMatchPartTypes: dota2MatchPartTypes,\n },\n [Sports.ESPORTS_FIFA]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_PERIOD_1ST_HALF]: 2,\n [App.ScoreTypes.TYPE_PERIOD_2ND_HALF]: 3,\n },\n timeSort: {\n [App.MetaTypes.TYPE_PERIOD_1ST_HALF]: 1,\n [App.MetaTypes.TYPE_PERIOD_2ND_HALF]: 2,\n [App.MetaTypes.TYPE_PERIOD]: 5,\n },\n isTimeInSeconds: true,\n insteadMeta: [\n App.MetaTypes.TYPE_PERIOD_1ST_EXTRA,\n App.MetaTypes.TYPE_PERIOD_2ND_EXTRA,\n App.MetaTypes.TYPE_PERIOD_PENALTIES,\n ],\n getMetaPart: getMetaPartEsportsFifa,\n },\n [Sports.ESPORTS_BASKETBALL]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_QUARTER]: 2,\n [App.ScoreTypes.TYPE_QUARTER_OVERTIME]: 3,\n },\n timeSort: {\n [App.MetaTypes.TYPE_QUARTER]: 1,\n [App.MetaTypes.TYPE_OVERTIME]: 2,\n },\n isTimeInSeconds: true,\n isTimeCountdown: true,\n customMetaTypesNumerable: without(\n App.MetaTypesNumerable,\n App.MetaTypes.TYPE_BULLETS\n ),\n },\n [Sports.ESPORTS_ICE_HOCKEY]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_PERIOD_REGULAR]: 2,\n },\n timeSort: {\n [App.MetaTypes.TYPE_REGULAR]: 1,\n },\n isTimeInSeconds: true,\n isTimeCountdown: true,\n insteadMeta: [App.MetaTypes.TYPE_BULLETS, App.MetaTypes.TYPE_OVERTIME],\n getMetaPart: getMetaPartEsportsIceHockey,\n },\n [Sports.ESPORTS_COUNTER_STRIKE]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_MAP]: 2,\n },\n timeSort: {\n [App.MetaTypes.TYPE_MAP]: 1,\n [App.MetaTypes.TYPE_OVERTIME]: 2,\n },\n titleParser: counterStrikeTitleParser,\n getMetaPart: getMetaPartEsportsRocketLeagueCounterStrikeRainbowSix,\n },\n [Sports.ESPORTS_LEAGUE_OF_LEGENDS]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_MAP]: 2,\n },\n timeSort: {\n [App.MetaTypes.TYPE_MAP]: 1,\n },\n titleParser: defaultTitleParser,\n isTimeInSeconds: true,\n },\n [Sports.ESPORTS_VALORANT]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_MAP]: 2,\n },\n timeSort: {\n [App.MetaTypes.TYPE_MAP]: 1,\n },\n titleParser: defaultTitleParser,\n isTimeDisabled: true,\n },\n [Sports.ESPORTS_RAINBOW_SIX]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_MAP]: 2,\n },\n timeSort: {\n [App.MetaTypes.TYPE_MAP]: 1,\n [App.MetaTypes.TYPE_OVERTIME]: 2,\n },\n titleParser: defaultTitleParser,\n getMetaPart: getMetaPartEsportsRocketLeagueCounterStrikeRainbowSix,\n isTimeDisabled: true,\n },\n [Sports.ESPORTS_ROCKET_LEAGUE]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_MAP]: 2,\n },\n timeSort: {\n [App.MetaTypes.TYPE_MAP]: 1,\n [App.MetaTypes.TYPE_OVERTIME]: 2,\n },\n titleParser: defaultTitleParser,\n getMetaPart: getMetaPartEsportsRocketLeagueCounterStrikeRainbowSix,\n isTimeInSeconds: true,\n isTimeCountdown: true,\n isTimeAbsolute: true,\n },\n [Sports.ESPORTS_TENNIS]: {\n scoresOrder: {\n [App.ScoreTypes.TYPE_TOTAL]: 1,\n [App.ScoreTypes.TYPE_SET]: 2,\n [App.ScoreTypes.TYPE_GAME_POINTS]: 3,\n [App.ScoreTypes.TYPE_TIE_BREAK]: 4,\n },\n partStartsFromZero: [App.MetaTypes.TYPE_SET],\n timeSort: {\n [App.MetaTypes.TYPE_SET]: 1,\n },\n customMetaTypesNaming: {\n [App.MetaTypes.TYPE_SET]: 'Set',\n },\n setMatchPartTypes: tennisSetMatchPartTypes,\n titleParser: iceHockeyTennisTitleParser,\n },\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"game\":\"gameLogo__game___3nyqQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"sportFilterHeading__container___23QMV\",\"live\":\"sportFilterHeading__live___1gMk4\",\"is-active\":\"sportFilterHeading__is-active___3GiGc\",\"ellipsis\":\"sportFilterHeading__ellipsis___3fLbK\"};","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import React, { useMemo } from 'react';\nimport cn from 'classnames';\n\nimport './icon.scss';\n\ninterface Props {\n glyph: {\n id: string;\n content: string;\n viewBox: string;\n };\n width?: number | string;\n height?: number | string;\n className?: string;\n styleName?: string;\n onClick?: (event: React.MouseEvent) => void;\n title?: string;\n}\n\nconst Icon: React.FC = ({\n title,\n glyph,\n width = 16,\n height = 16,\n className,\n onClick,\n}) => {\n const renderSvg = useMemo(() => {\n if (!glyph) return null;\n\n return (\n \n \n \n );\n }, [glyph, width, height, className, onClick]);\n\n if (title) {\n return (\n
\n {renderSvg}\n
\n );\n }\n\n return renderSvg;\n};\n\nexport default Icon;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"sportTabs__container___2u6WQ\",\"sport\":\"sportTabs__sport___2Lrp2\",\"active\":\"sportTabs__active___3vv2r\",\"is-narrow\":\"sportTabs__is-narrow___2VDJ7\",\"all-button\":\"sportTabs__all-button___280bJ\",\"name\":\"sportTabs__name___2q73k\",\"logo\":\"sportTabs__logo___3aQln\"};","export const LOGIN_HASH = '#!/auth/signin';\n\nexport const featureFlagData = {\n top_banner: {\n feature_name: 'top_banner',\n feature_variant: 'disabled',\n scenario_identifier: 'test top banner:3',\n for_analysis: false,\n uuid: '7dc588c1-1f5b-40ef-bbce-aaaa1d50ca41',\n player_id: '134326',\n },\n top_banner2: {\n feature_name: 'top_banner2',\n feature_variant: 'disabled',\n scenario_identifier: 'test top banner:4',\n for_analysis: true,\n uuid: '7dc588c1-1f5b-40ef-bbce-aaaa1d50ca41',\n player_id: '134326',\n },\n top_banner3: {\n feature_name: 'top_banner3',\n feature_variant: 'enabled',\n scenario_identifier: 'test top banner:5',\n for_analysis: false,\n uuid: '7dc588c1-1f5b-40ef-bbce-aaaa1d50ca41',\n player_id: '134326',\n },\n 'match-list.sport-event-row-overview': {\n feature_name: 'match-list.sport-event-row-overview',\n feature_variant: 'enabled',\n scenario_identifier: 'match-list.sport-event-row-overview:0',\n for_analysis: false,\n uuid: '7dc588c1-1f5b-40ef-bbce-aaaa1d50ca41',\n player_id: '134326',\n },\n 'helper.background-color': {\n feature_name: 'helper.background-color',\n feature_variant: 'blue',\n scenario_identifier: 'helper.background-color:0',\n for_analysis: false,\n uuid: '7dc588c1-1f5b-40ef-bbce-aaaa1d50ca41',\n player_id: '134326',\n },\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"featuredTournamentsLogo__container___1qJxu\",\"icon\":\"featuredTournamentsLogo__icon___1X0IW\",\"logo\":\"featuredTournamentsLogo__logo___2hgrW\"};","import { useEffect, useState } from 'react';\nimport loadable from '@loadable/component';\nimport 'rxjs/add/operator/distinctUntilChanged';\n\nimport moduleLocator from 'moduleLocator';\nimport { loadBetsHistoryModule } from 'modules/bets-history/async';\nimport { loadBetslipModule } from 'modules/betslip/async';\nimport { loadCashoutModule } from 'modules/cashout/async';\nimport { loadFiltersModule } from 'modules/filters/async';\nimport { loadFreebetModule } from 'modules/freebet/async';\nimport { loadMatchModule } from 'modules/match/async';\nimport { loadOutrightModule } from 'modules/outright/async';\nimport { loadStreamModule } from 'modules/stream/async';\nimport type { AsyncModules, ModuleName, Modules } from './types';\n\nexport type {\n AsyncModules,\n BetslipModule,\n ModuleLocator,\n Modules,\n} from './types';\n\nexport const asyncModuleLoaders: AsyncModules = {\n betslip: loadable.lib(loadBetslipModule),\n outright: loadable.lib(loadOutrightModule),\n match: loadable.lib(loadMatchModule),\n freebet: loadable.lib(loadFreebetModule),\n stream: loadable.lib(loadStreamModule),\n filters: loadable.lib(loadFiltersModule),\n 'bets-history': loadable.lib(loadBetsHistoryModule),\n cashout: loadable.lib(loadCashoutModule),\n};\n\nexport function useAsyncModule(\n moduleName: T,\n preload?: boolean\n): Modules[T]['default'] | null {\n const [module, setModule] = useState(\n moduleLocator.getImmediately(moduleName)\n );\n\n useEffect(() => {\n if (!module && preload) {\n asyncModuleLoaders[moduleName].load();\n }\n }, [module, moduleName, preload]);\n\n useEffect(() => {\n if (module) return;\n\n const sub = moduleLocator\n .get(moduleName)\n .distinctUntilChanged()\n .subscribe((subModule: Modules[T]['default']) => {\n setModule(subModule);\n });\n\n return () => sub.unsubscribe();\n }, [moduleName, module]);\n\n return module;\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"toggleHistory__container___3wSx3\",\"icon\":\"toggleHistory__icon___2vDbG\",\"is-enable\":\"toggleHistory__is-enable___32mOq\"};","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"setting-betslip_7022b\",\n \"use\": \"setting-betslip_7022b-usage\",\n \"viewBox\": \"0 0 16 16\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react';\nimport core, { View } from '@gin-betting/core';\n\nimport { useMemoSelector } from 'hooks';\n\nimport './promoMatchOdds.scss';\n\nconst {\n utils: { getHomeAwayOdds },\n entities: {\n selectors: { selectOddsByOddIds },\n },\n} = core;\n\ninterface Props {\n oddIds?: string[];\n competitors: View.CompetitorsValid;\n OddButton: React.ComponentType<{\n oddId: string | undefined;\n withTitle?: boolean;\n }>;\n showVsBlock?: boolean;\n}\n\nconst stub: Pick = {\n id: '',\n name: '',\n} as const;\n\nconst minNumberOfOdds = 2 as const;\n\nconst PromoMatchOdds: React.FC = ({\n competitors,\n OddButton,\n oddIds = [],\n showVsBlock = true,\n}) => {\n const selectedOdds = useMemoSelector(selectOddsByOddIds, {\n oddIds,\n });\n\n const odds = selectedOdds.map(i => i ?? stub);\n\n const numberOfOddStubs = minNumberOfOdds - odds.length;\n\n if (numberOfOddStubs > 0) {\n odds.push(...Array(numberOfOddStubs).fill(stub));\n }\n\n const showNames = odds[0]?.name !== competitors.homeName;\n\n return (\n
\n {odds.map(({ id }, idx) => (\n \n \n {showNames && (\n \n )}\n
\n ))}\n\n {odds.length === 2 && showVsBlock && (\n
\n VS\n
\n )}\n \n );\n};\n\ninterface OddNameProps {\n oddId: string;\n odds: Array>;\n competitors: View.CompetitorsValid;\n}\n\nconst OddName: React.FC = ({ oddId, odds, competitors }) => {\n const { homeOdd, awayOdd } = getHomeAwayOdds({ odds });\n\n let name = '';\n\n if (homeOdd?.id === oddId) {\n name = homeOdd.name.replace(competitors.homeName, '');\n }\n\n if (awayOdd?.id === oddId) {\n name = awayOdd.name.replace(competitors.awayName, '');\n }\n\n if (!name) return null;\n\n return (\n
\n {name}\n
\n );\n};\n\nexport default React.memo(PromoMatchOdds);\n","export const NAME = 'ui' as const;\n\nexport const CHANGE_ODD_FORMAT = `ui/CHANGE_ODD_FORMAT` as const;\nexport const CHANGE_SIDEBAR_VIEW = `ui/CHANGE_SIDEBAR_VIEW` as const;\nexport const CHANGE_FAVORITE_COUNT = `ui/CHANGE_FAVORITE_COUNT` as const;\nexport const CHANGE_ODDS_STATISTIC = `ui/CHANGE_ODDS_STATISTIC` as const;\n\nexport const ENABLE_ODD_HISTORY = `ui/ENABLE_ODD_HISTORY` as const;\nexport const DISABLE_ODD_HISTORY = `ui/DISABLE_ODD_HISTORY` as const;\n\nexport const OPEN_SIDEBAR = `ui/OPEN_SIDEBAR` as const;\nexport const CLOSE_SIDEBAR = `ui/CLOSE_SIDEBAR` as const;\n\nexport const OPEN_FILTER = `ui/OPEN_FILTER` as const;\nexport const CLOSE_FILTER = `ui/CLOSE_FILTER` as const;\n\nexport const SET_ODDS_CHANGE_MODAL_SHOWN = 'ui/SET_ODDS_CHANGE_MODAL_SHOWN' as const;\n\nexport const SET_ACTIVE_MOBILE_COUNTRY_KEY = 'ui/SET_ACTIVE_MOBILE_COUNTRY_KEY' as const;\n\nexport enum UISettingKey {\n ODD_FORMAT = 'oddFormat',\n SHOW_ODDS_STATISTIC = 'showOddsStatistics',\n ODD_STATISTIC_VIEW = 'oddStatisticView',\n SHOW_ODD_HISTORY = 'showOddHistory',\n ODDS_CHANGE_MODAL_SHOWN = 'isOddsChangeModalShown',\n}\n\nexport class KeyPathToReducerProp implements Record {\n [UISettingKey.ODD_FORMAT] = 'oddFormat' as const;\n [UISettingKey.SHOW_ODDS_STATISTIC] = 'oddsStatistic.show' as const;\n [UISettingKey.ODD_STATISTIC_VIEW] = 'oddsStatistic.statisticView' as const;\n [UISettingKey.SHOW_ODD_HISTORY] = 'isOddHistoryEnabled' as const;\n [UISettingKey.ODDS_CHANGE_MODAL_SHOWN] = 'isOddsChangeModalShown' as const;\n}\n\nexport const UI_GAMBLER_SETTINGS = {\n [NAME]: { ...new KeyPathToReducerProp() },\n};\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport core, { App } from '@gin-betting/core';\n\nimport { SidebarView } from 'app-constants';\nimport {\n CHANGE_FAVORITE_COUNT,\n CHANGE_ODD_FORMAT,\n CHANGE_ODDS_STATISTIC,\n CHANGE_SIDEBAR_VIEW,\n CLOSE_FILTER,\n CLOSE_SIDEBAR,\n DISABLE_ODD_HISTORY,\n ENABLE_ODD_HISTORY,\n OPEN_FILTER,\n OPEN_SIDEBAR,\n SET_ACTIVE_MOBILE_COUNTRY_KEY,\n SET_ODDS_CHANGE_MODAL_SHOWN,\n} from './constants';\nimport { FavoriteCountType } from './types';\n\nconst { makeAction } = core.utils;\n\nexport function changeOddFormat(payload: { oddFormat: App.OddFormat }) {\n return makeAction(CHANGE_ODD_FORMAT, payload);\n}\n\nexport function changeFavoriteCount(payload: {\n count: number;\n type: FavoriteCountType;\n}) {\n return makeAction(CHANGE_FAVORITE_COUNT, payload);\n}\n\nexport function changeSidebarView(payload: { sidebarView: SidebarView }) {\n return makeAction(CHANGE_SIDEBAR_VIEW, payload);\n}\n\nexport const enableOddHistory = () => makeAction(ENABLE_ODD_HISTORY);\nexport const disableOddHistory = () => makeAction(DISABLE_ODD_HISTORY);\nexport const toggleOddHistory = ({ isEnable }: { isEnable: boolean }) =>\n isEnable ? disableOddHistory() : enableOddHistory();\n\nexport const openSidebar = () => makeAction(OPEN_SIDEBAR);\nexport const closeSidebar = () => makeAction(CLOSE_SIDEBAR);\nexport const toggleSidebar = ({ isOpen }: { isOpen: boolean }) =>\n isOpen ? openSidebar() : closeSidebar();\n\nexport function changeOddsStatisticView(payload: {\n statisticView?: App.OddStatisticView;\n show?: boolean;\n}) {\n return makeAction(CHANGE_ODDS_STATISTIC, payload);\n}\n\nexport const openFilter = () => makeAction(OPEN_FILTER);\nexport const closeFilter = () => makeAction(CLOSE_FILTER);\n\nexport const setActiveMobileCountryKey = (nextCountryKey: string) =>\n makeAction(SET_ACTIVE_MOBILE_COUNTRY_KEY, nextCountryKey);\n\nexport const setOddsChangeModalShown = (value: boolean | undefined = true) =>\n makeAction(SET_ODDS_CHANGE_MODAL_SHOWN, value);\n\nexport const Actions = {\n changeOddFormat,\n toggleOddHistory,\n changeSidebarView,\n changeFavoriteCount,\n changeOddsStatisticView,\n openSidebar,\n closeSidebar,\n toggleSidebar,\n openFilter,\n closeFilter,\n setActiveMobileCountryKey,\n setOddsChangeModalShown,\n};\n\n/* eslint-disable */\nexport type Actions = App.ActionsUnion;\n","import React, { Fragment } from 'react';\nimport cn from 'classnames';\nimport { includes } from 'lodash';\n\nimport { AVAILABLE_ROUTES_WITH_PARENT_ROUTE } from 'app-constants';\nimport { NavButton } from 'components';\nimport UserDevice from 'services/user-device';\nimport type { ListNavTab } from 'types';\nimport { extractParentRouteFromHistory, removeLastSlash } from 'utils';\n\nimport './ListNav.scss';\n\ninterface Props {\n tabs: ListNavTab[];\n}\n\nconst ListNav: React.FC = ({ tabs }) => {\n const parentRoute = extractParentRouteFromHistory();\n\n return (\n \n {tabs.map(\n ({ link, title, isDisable, isCreateButton = true }, idx) => {\n const key = link + idx;\n\n return isCreateButton ? (\n \n \n {title}\n \n \n ) : (\n {title}\n );\n }\n )}\n \n );\n};\n\nexport default ListNav;\n","import { createSelector } from 'reselect';\n\nimport { State } from 'types';\nimport { UIState } from './types';\n\nexport const selectUI = (state: State): UIState => state.ui;\n\nexport const selectOddFormat = createSelector(selectUI, ui => ui.oddFormat);\nexport const selectIsSidebarOpen = createSelector(\n selectUI,\n ui => ui.isSidebarOpen\n);\nexport const selectOddsStatisticView = createSelector(\n selectUI,\n ui => ui.oddsStatistic\n);\n\nexport const selectSidebarView = createSelector(selectUI, ui => ui.sidebarView);\nexport const selectFavoriteCount = createSelector(\n selectUI,\n ui => ui.favoriteCount\n);\n\nexport const selectUpcomingFavoriteCount = createSelector(\n selectFavoriteCount,\n favoriteCount => favoriteCount.upcoming\n);\n\nexport const selectOutrightsFavoriteCount = createSelector(\n selectFavoriteCount,\n favoriteCount => favoriteCount.outrights\n);\n\nexport const selectAllFavoriteCount = createSelector(\n selectUpcomingFavoriteCount,\n selectOutrightsFavoriteCount,\n (upcomingCount, outrightsCount) => {\n if (upcomingCount === null || outrightsCount === null) {\n return null;\n }\n\n return upcomingCount + outrightsCount;\n }\n);\n\nexport const selectIsOddHistoryEnabled = createSelector(\n selectUI,\n ui => ui.isOddHistoryEnabled\n);\n\nexport const selectIsFilterOpened = createSelector(\n selectUI,\n ui => ui.isFilterOpened\n);\n\nexport const selectActiveMobileCountryKey = createSelector(\n selectUI,\n ui => ui.activeMobileCountryKey\n);\n\nexport const selectIsOddsChangeModalShown = createSelector(selectUI, ui =>\n ui.get('isOddsChangeModalShown')\n);\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { App } from '@gin-betting/core';\n\nimport { selectOddFormat } from '../../selectors';\n\ninterface Props {\n children: (oddFormat: App.OddFormat) => JSX.Element;\n}\n\nconst OddFormat: React.FC = ({ children }) => {\n const oddFormat = useSelector(selectOddFormat);\n\n return children(oddFormat);\n};\n\nexport default OddFormat;\n","import { MessageDescriptor } from 'react-intl';\nimport { App } from '@gin-betting/core';\n\nimport globalMsg from 'messages';\n\nexport const msgMapping: { [K in App.OddFormat]: MessageDescriptor } = {\n [App.OddFormat.Decimal]: globalMsg.Decimal,\n [App.OddFormat.Fractional]: globalMsg.Fractional,\n [App.OddFormat.HongKong]: globalMsg.HongKong,\n [App.OddFormat.Indo]: globalMsg.Indo,\n [App.OddFormat.Malay]: globalMsg.Malay,\n [App.OddFormat.US]: globalMsg.US,\n};\n","import React, { useCallback, useEffect } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { App } from '@gin-betting/core';\n\nimport { ODD_FORMAT_BODY_ATTR } from 'app-constants';\nimport globalMsg from 'messages';\nimport { checkValueInObj } from 'utils';\nimport { changeOddFormat } from '../../actions';\nimport { selectOddFormat } from '../../selectors';\n\ninterface Output {\n currOddFormat: App.OddFormat;\n title: string;\n filteredOddFormats: App.OddFormat[];\n onMouseDown: (e: React.MouseEvent) => void;\n}\n\n/* TODO delete App.OddFormat.Fractional in future */\nconst filteredOddFormats = Object.values(App.OddFormat).filter(\n format => format !== App.OddFormat.Fractional\n);\n\nconst useOddFormatSelect = (): Output => {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n const currOddFormat = useSelector(selectOddFormat);\n\n const onMouseDown: Output['onMouseDown'] = useCallback(\n e => {\n const { format: oddFormat } = e.currentTarget.dataset;\n\n if (!checkValueInObj(App.OddFormat, oddFormat)) return;\n\n dispatch(\n changeOddFormat({\n oddFormat,\n })\n );\n },\n [dispatch]\n );\n\n const title = formatMessage(globalMsg.oddsFormat);\n\n useEffect(() => {\n document.body.setAttribute(ODD_FORMAT_BODY_ATTR, currOddFormat);\n }, [currOddFormat]);\n\n return {\n currOddFormat,\n title,\n filteredOddFormats,\n onMouseDown,\n };\n};\n\nexport default useOddFormatSelect;\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"exchange-arrows_1defd\",\n \"use\": \"exchange-arrows_1defd-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport cn from 'classnames';\nimport { map } from 'lodash';\n\nimport { SettingsDropdown } from 'components';\nimport { msgMapping } from './constants';\nimport useOddFormatSelect from './useOddFormatSelect';\n\nimport arrows from 'assets/svg/exchange-arrows.svg';\nimport './oddFormatSelect.scss';\n\nconst STUB = {\n glyph: arrows,\n width: 17,\n height: 17,\n};\n\nconst OddFormatSelect: React.FC = () => {\n const { formatMessage } = useIntl();\n const {\n currOddFormat,\n title,\n filteredOddFormats,\n onMouseDown,\n } = useOddFormatSelect();\n\n return (\n \n
\n {map(filteredOddFormats, item => (\n \n {formatMessage(msgMapping[item])}\n
\n ))}\n \n
\n );\n};\n\nexport default OddFormatSelect;\n","import React, { useRef } from 'react';\nimport { FormattedMessage, MessageDescriptor } from 'react-intl';\nimport { Transition } from 'react-transition-group';\nimport cn from 'classnames';\n\nimport { Icon } from 'components';\n\nimport arrowDown from 'assets/svg/arrow-left.svg';\nimport './collapsibleSettingsRow.scss';\n\ninterface Props {\n onToggle: () => void;\n isOpen: boolean;\n title: string | JSX.Element;\n message: MessageDescriptor;\n}\n\nconst CollapsibleSettingsRow: React.FC = ({\n isOpen,\n title,\n onToggle,\n message,\n children,\n}) => {\n const transitionRef = useRef(null);\n\n return (\n \n
\n
{title}
\n
\n \n
\n
\n \n
\n
\n\n \n {transition => {\n if (transition === 'exited') {\n return null;\n }\n\n return (\n \n {children}\n \n );\n }}\n \n
\n );\n};\n\nexport default CollapsibleSettingsRow;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport cn from 'classnames';\nimport { map } from 'lodash';\n\nimport { Icon } from 'components';\nimport { useToggler } from 'hooks';\nimport CollapsibleSettingsRow from '../CollapsibleSettingsRow';\nimport { msgMapping } from './constants';\nimport useOddFormatSelect from './useOddFormatSelect';\n\nimport chevron from 'assets/svg/chevron.svg';\nimport './oddFormatSelectMobile.scss';\n\nconst OddFormatSelectMobile: React.FC = () => {\n const {\n currOddFormat,\n title,\n filteredOddFormats,\n onMouseDown,\n } = useOddFormatSelect();\n\n const [isOpen, toggleRow] = useToggler(false);\n\n return (\n \n {map(filteredOddFormats, item => (\n \n {currOddFormat === item && (\n \n )}\n
\n \n
\n \n ))}\n \n );\n};\n\nexport default OddFormatSelectMobile;\n","type Line = {\n x1: number;\n x2: number;\n y1: number;\n y2: number;\n gradient: 'up' | 'down' | 'none' | 'red' | 'first_down' | 'first_up';\n};\n\ntype Config = {\n width: number;\n padding: number;\n border: number;\n maxHeight: number;\n};\n\ntype Acc = { points: Line[]; circlePosition: [] };\n\nconst colors = {\n first: '#3a4768',\n up: '#00bd9c',\n down: '#a52032',\n startDown: 'url(#down)',\n firstDown: 'url(#first_down)',\n firstUp: 'url(#first_up)',\n startUp: 'url(#up)',\n};\nconst down = [colors.startDown, colors.firstDown, colors.down];\nconst prevDownFn = ({ points }: Acc, i: number): boolean => {\n const currentGradient = points[i - 1]?.gradient;\n\n return !!currentGradient && down.includes(currentGradient);\n};\n\nconst gradientFn = (\n curr: number,\n i: number,\n array: number[],\n prevDown: boolean\n): string => {\n const nextItem = array[i + 1]!; // TODO: check me\n const prevItem = array[i - 1]!; // TODO: check me\n\n return i === 0 && curr <= nextItem\n ? colors.firstUp\n : i === 0 && curr > nextItem\n ? colors.firstDown\n : prevDown && curr > nextItem\n ? colors.down\n : curr > nextItem && !prevDown\n ? colors.startDown\n : curr < prevItem && !(curr > nextItem)\n ? colors.startUp\n : colors.up;\n};\n\nexport const drawChart = (data: number[], config: Config) => {\n const { width, border, padding, maxHeight } = config; // h - max height of svg\n const circleRadius = border * 2;\n const paddedWidth = width - circleRadius; // with padding inside svg\n const widthOfLine = (paddedWidth - padding) / (data.length - 1); // width of line\n const min = Math.min(...data);\n const diff = Math.max(...data) - min || 1;\n const coefficient = (maxHeight - padding) / diff;\n const paddedHeight = maxHeight - padding; // dynamic height for centered by vertically\n\n const result = data.reduce(\n (acc: Acc, curr: number, i, array: number[]) => {\n const nextIndex = i + 1;\n const x1 = i * widthOfLine + circleRadius; // start line by x\n const y1 = paddedHeight - coefficient * (curr - min) + circleRadius; // start line by y\n const x2 = data[nextIndex]\n ? nextIndex * widthOfLine + circleRadius\n : x1; // end line by x\n const y2prev =\n paddedHeight -\n coefficient * ((array[nextIndex] || curr) - min) +\n circleRadius; // end line by y\n const y2 = y1 === y2prev ? y2prev + 0.0001 : y2prev; // fixed display of SVG line for chromium\n const isPrevDown = prevDownFn(acc, i);\n const gradient = gradientFn(curr, i, array, isPrevDown);\n const clColor =\n i === 0 ? colors.first : isPrevDown ? colors.down : colors.up;\n\n return {\n points: [...acc.points, { x1, y1, x2, y2, gradient }],\n circlePosition: [\n ...acc.circlePosition,\n { x: x1, y: y1, color: clColor },\n ],\n };\n },\n { points: [], circlePosition: [] }\n );\n\n return { height: maxHeight, ...result, colors };\n};\n","import React from 'react';\n\nimport { drawChart } from './utils';\n\ninterface Props {\n data: number[];\n}\n\nconst Chart: React.FC = ({ data }) => {\n const svgConfig = {\n width: 145,\n padding: 15,\n border: 2,\n maxHeight: 50,\n };\n const { points, circlePosition, height, colors } = drawChart(\n data,\n svgConfig\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {points.map(obj => (\n \n ))}\n {circlePosition.map(obj => (\n \n ))}\n \n );\n};\n\nexport default React.memo(Chart);\n","import core from '@gin-betting/core';\nimport { createSelector } from 'reselect';\n\nconst {\n entities: {\n selectors: { selectOdd, selectMarket, selectMatch },\n },\n} = core;\n\nexport const selectEntitiesData = createSelector(\n selectOdd,\n selectMarket,\n selectMatch,\n (odd, market, match) => {\n if (!odd || !market || !match) {\n return { marketName: '', oddName: '', matchStatus: null };\n }\n\n return {\n oddName: odd.name,\n marketName: market.name,\n matchStatus: match.status,\n };\n }\n);\n","import { useEffect, useState } from 'react';\nimport core, { App, GQL } from '@gin-betting/core';\nimport subDays from 'date-fns/subDays';\nimport subHours from 'date-fns/subHours';\nimport { createSelector } from 'reselect';\n\nimport { LIVE_SPORTEVENT_STATUSES } from 'app-constants';\nimport { useMemoSelector } from 'hooks';\nimport type { State } from 'types';\nimport { selectIsOddHistoryEnabled, selectOddFormat } from '../../selectors';\nimport { selectEntitiesData } from './selectors';\n\nconst {\n utils: { splitOddPath, getIdsFromOddId, format },\n appServiceLocator,\n} = core;\n\nconst selectProps = createSelector(\n selectOddFormat,\n selectIsOddHistoryEnabled,\n selectEntitiesData,\n (oddFormat, isOddHistoryEnabled, entitiesData) => ({\n oddFormat,\n isOddHistoryEnabled,\n entitiesData,\n })\n);\n\ninterface Input {\n oddId: string;\n}\n\ninterface Output {\n marketName: string;\n oddName: string;\n oddFormat: App.OddFormat;\n dynamics: number[];\n}\n\nconst useOddHistory = ({ oddId }: Input): Output => {\n const [dynamics, setDynamics] = useState([]);\n\n const { matchId, marketId } = getIdsFromOddId(oddId)!;\n\n const { entitiesData, isOddHistoryEnabled, oddFormat } = useMemoSelector(\n (s: State, p) => selectProps(s, p),\n {\n oddId,\n matchId,\n marketId,\n }\n );\n\n const { marketName, oddName, matchStatus } = entitiesData;\n\n useEffect(() => {\n let isUnmount = false;\n\n if (isOddHistoryEnabled && matchStatus) {\n const variables = getVariables(oddId, matchStatus);\n\n const apiClient = appServiceLocator.get('apiClient');\n\n apiClient\n .makeRequest({\n method: 'getOddDynamicsByInterval',\n variables,\n })\n .then(({ data }) => {\n if (!data || isUnmount) return;\n\n const nextDynamics = data.oddDynamicsByInterval.dynamics\n .slice(-5)\n .map(obj => obj.value);\n\n setDynamics(nextDynamics);\n })\n .catch(err => {\n console.error(err);\n });\n }\n\n return () => {\n isUnmount = true;\n };\n }, [matchStatus, oddId, isOddHistoryEnabled]);\n\n return { dynamics, marketName, oddName, oddFormat };\n};\n\nfunction getVariables(\n oddPath: string,\n sportEventStatus: GQL.SportEventStatus\n): GQL.GetOddDynamicsByIntervalQueryVariables {\n const { marketId, matchId: sportEventId, oddId } = splitOddPath(oddPath)!;\n\n const date = new Date();\n\n const isHours = LIVE_SPORTEVENT_STATUSES.includes(sportEventStatus);\n\n const from = format(isHours ? subHours(date, 2) : subDays(date, 3));\n\n return {\n marketId,\n sportEventId,\n oddId,\n pointCount: 5,\n from,\n };\n}\n\nexport default useOddHistory;\n","import React from 'react';\nimport { PopperArrowProps, RefHandler } from 'react-popper';\nimport cn from 'classnames';\n\nimport { formatDecimalOdd } from 'utils';\nimport Chart from './Chart';\nimport useOddHistory from './useOddHistory';\n\nimport './oddHistory.scss';\n\ninterface OwnProps {\n oddId: string;\n style: React.CSSProperties;\n fRef: RefHandler;\n arrowProps: PopperArrowProps;\n placement: string;\n}\n\nconst OddHistory = ({\n oddId,\n style,\n fRef,\n arrowProps,\n placement,\n}: OwnProps) => {\n const { dynamics, oddName, marketName, oddFormat } = useOddHistory({\n oddId,\n });\n\n const firstCoef = dynamics[0];\n const secondCoef = dynamics[dynamics.length - 1];\n\n if (!firstCoef || !secondCoef) return null;\n\n const { component: first } = formatDecimalOdd(firstCoef, oddFormat);\n const { component: last } = formatDecimalOdd(secondCoef, oddFormat);\n\n return (\n
\n
\n
{marketName}
\n
{oddName}
\n
\n
\n
{first}
\n
\n
\n \n
\n
\n
{last}
\n
\n \n
\n );\n};\n\nexport default React.memo(OddHistory);\n","import { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { App } from '@gin-betting/core';\n\nimport { useMemoSelector } from 'hooks';\nimport { changeOddsStatisticView } from '../../actions';\nimport { selectOddsStatisticView } from '../../selectors';\n\ninterface Output {\n show: boolean;\n statisticView: App.OddStatisticView;\n handlerStatisticToggle: () => void;\n makeOnClick: (selectedStatisticView: App.OddStatisticView) => () => void;\n}\n\nconst useOddsStatisticSelect = (): Output => {\n const dispatch = useDispatch();\n const { statisticView, show } = useMemoSelector(selectOddsStatisticView);\n\n const handlerStatisticToggle = useCallback(() => {\n dispatch(changeOddsStatisticView({ show: !show }));\n }, [dispatch, show]);\n\n const makeOnClick = useCallback(\n (selectedStatisticView: App.OddStatisticView) => () => {\n dispatch(\n changeOddsStatisticView({\n statisticView: selectedStatisticView,\n })\n );\n },\n [dispatch]\n );\n\n return {\n show,\n statisticView,\n handlerStatisticToggle,\n makeOnClick,\n };\n};\n\nexport default useOddsStatisticSelect;\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"percentage_3f357\",\n \"use\": \"percentage_3f357-usage\",\n \"viewBox\": \"0 0 512 512\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport { App } from '@gin-betting/core';\nimport cn from 'classnames';\nimport { map } from 'lodash';\n\nimport { Icon, SettingsDropdown, Toggler } from 'components';\nimport globalMsg from 'messages';\nimport useOddsStatisticSelect from './useOddsStatisticSelect';\n\nimport chevron from 'assets/svg/chevron.svg';\nimport percent from 'assets/svg/percentage.svg';\nimport './oddsStatisticSelect.scss';\n\nconst STUB = {\n glyph: percent,\n width: 12,\n height: 12,\n};\n\nconst OddsStatisticSelect: React.FC = () => {\n const {\n show,\n statisticView,\n handlerStatisticToggle,\n makeOnClick,\n } = useOddsStatisticSelect();\n const { formatMessage } = useIntl();\n\n const hint = formatMessage(globalMsg.oddsStatistic);\n\n const statisticViewMapping: { [K: string]: string } = {\n [App.OddStatisticView.MATCH]: formatMessage(globalMsg.byMatch),\n [App.OddStatisticView.MARKET]: formatMessage(globalMsg.byMarket),\n };\n\n return (\n \n
\n
\n
\n {formatMessage(globalMsg.show)}\n
\n \n
\n {map(\n statisticViewMapping,\n (title, selected: App.OddStatisticView) => {\n const isSelected = statisticView === selected;\n\n return (\n \n {isSelected && (\n \n )}\n {title}\n
\n );\n }\n )}\n \n
\n );\n};\n\nexport default OddsStatisticSelect;\n","import React from 'react';\nimport { FormattedMessage, MessageDescriptor } from 'react-intl';\nimport { App } from '@gin-betting/core';\nimport cn from 'classnames';\nimport { map } from 'lodash';\n\nimport { Icon, Toggler } from 'components';\nimport { useToggler } from 'hooks';\nimport globalMsg from 'messages';\nimport CollapsibleSettingsRow from '../CollapsibleSettingsRow';\nimport useOddsStatisticSelect from './useOddsStatisticSelect';\n\nimport chevron from 'assets/svg/chevron.svg';\nimport './oddsStatisticSelectMobile.scss';\n\nconst statisticViewMapping: { [K: string]: MessageDescriptor } = {\n [App.OddStatisticView.MATCH]: globalMsg.byMatch,\n [App.OddStatisticView.MARKET]: globalMsg.byMarket,\n};\n\nconst OddsStatisticSelect: React.FC = () => {\n const {\n show,\n statisticView,\n handlerStatisticToggle,\n makeOnClick,\n } = useOddsStatisticSelect();\n\n const [isOpened, openModal] = useToggler(false);\n\n return (\n
\n }\n >\n \n
\n
\n \n
\n \n
\n\n {map(\n statisticViewMapping,\n (title, selected: App.OddStatisticView) => {\n const isSelected = statisticView === selected;\n\n return (\n \n
\n {isSelected && (\n \n )}\n \n
\n
\n );\n }\n )}\n \n \n \n );\n};\n\nexport default OddsStatisticSelect;\n","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport cn from 'classnames';\n\nimport { Icon } from 'components';\nimport globalMsg from 'messages';\n\nimport Arrow from 'assets/svg/arrow.svg';\nimport settingsIcon from 'assets/svg/setting-betslip.svg';\nimport './settingsToggler.scss';\n\ninterface OwnProps {\n isOpen: boolean;\n onClickHandler: () => void;\n}\n\ntype Props = OwnProps;\n\nconst SettingsToggler: React.FC = ({ onClickHandler, isOpen }) => {\n const { formatMessage } = useIntl();\n\n return (\n \n
\n
\n \n
\n \n
\n \n );\n};\n\nexport default SettingsToggler;\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"change-history_d36b0\",\n \"use\": \"change-history_d36b0-usage\",\n \"viewBox\": \"0 0 13 12\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport cn from 'classnames';\n\nimport { Icon } from 'components';\nimport globalMsg from 'messages';\nimport { State } from 'types';\nimport { toggleOddHistory } from '../../actions';\nimport { selectIsOddHistoryEnabled } from '../../selectors';\n\nimport changeHistory from 'assets/svg/change-history.svg';\nimport './toggleHistory.scss';\n\nconst ToggleHistory: React.FC = () => {\n const isEnable = useSelector((s: State) => selectIsOddHistoryEnabled(s));\n const dispatch = useDispatch();\n const { formatMessage } = useIntl();\n\n const changeStatus = () => {\n dispatch(toggleOddHistory({ isEnable }));\n };\n\n const title = formatMessage(globalMsg.ChangeHistory);\n\n return (\n
\n \n
\n );\n};\n\nexport default ToggleHistory;\n","import { useState } from 'react';\n\nconst useSettingsMenu = () => {\n const [isOpen, setIsOpen] = useState(false);\n const [isAnimationFinished, setIsAnimationFinished] = useState(\n false\n );\n\n const onClickHandler = () => {\n if (isOpen) {\n setIsOpen(false);\n setIsAnimationFinished(false);\n } else {\n setIsOpen(true);\n }\n };\n\n return {\n onClickHandler,\n setIsAnimationFinished,\n isOpen,\n isAnimationFinished,\n };\n};\n\nexport default useSettingsMenu;\n","import React, { Fragment } from 'react';\nimport { Transition } from 'react-transition-group';\nimport { TransitionStatus } from 'react-transition-group/Transition';\nimport cn from 'classnames';\n\nimport { OddFormatSelect } from '../OddFormatSelect';\nimport { OddsStatisticSelect } from '../OddsStatisticSelect';\nimport SettingsToggler from '../SettingsToggler';\nimport ToggleHistory from '../ToggleHistory';\nimport useSettingsMenu from './useSettingsMenu';\n\nimport './settingsMenu.scss';\n\nconst SettingsMenu: React.FC = () => {\n const {\n isOpen,\n onClickHandler,\n isAnimationFinished,\n setIsAnimationFinished,\n } = useSettingsMenu();\n\n return (\n
\n setIsAnimationFinished(true)}\n >\n {(transition: TransitionStatus) => (\n \n
\n \n {transition !== 'exited' && (\n \n \n \n \n \n )}\n
\n
\n )}\n \n \n );\n};\n\nexport default React.memo(SettingsMenu);\n","import core from '@gin-betting/core';\nimport gamblerSettings, {\n GamblerSettings,\n} from '@gin-betting/gambler-settings';\nimport { omit } from 'lodash';\nimport { MiddlewareAPI } from 'redux';\nimport { TypedEpic } from 'redux-observable';\nimport { REHYDRATE, RehydrateAction } from 'redux-persist';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/concatMap';\nimport 'rxjs/add/operator/filter';\nimport 'rxjs/add/operator/switchMap';\nimport 'rxjs/add/operator/take';\n\nimport { SidebarView } from 'app-constants';\nimport moduleLocator from 'moduleLocator';\nimport UserDevice from 'services/user-device';\nimport { Modules, State } from 'types';\nimport { changeSidebarView } from './actions';\nimport {\n CHANGE_ODD_FORMAT,\n CHANGE_ODDS_STATISTIC,\n DISABLE_ODD_HISTORY,\n ENABLE_ODD_HISTORY,\n NAME,\n SET_ODDS_CHANGE_MODAL_SHOWN,\n UI_GAMBLER_SETTINGS,\n UISettingKey,\n} from './constants';\nimport { selectSidebarView } from './selectors';\nimport { IMapKeyValue } from './types';\n\ntype StreamModule = Modules['stream']['default'];\n\ntype StreamActions = StreamModule['actions'];\ntype UIActions = typeof import('./actions');\n\nconst {\n actions: { changeGamblerSetting: unknownChangeGamblerSetting },\n epics: { makeSyncGamblerSettings },\n} = gamblerSettings;\nconst {\n services: { registerEpic },\n viewport: {\n selectors: { makeViewportSelector },\n },\n} = core;\n\nconst selectIsMedium = makeViewportSelector('lessThanOrEqual', 'medium');\nconst changeGamblerSetting: GamblerSettings.MakeChangeGamblerSetting = unknownChangeGamblerSetting;\n\ntype ChangeGamblerSettingsFn = typeof changeGamblerSetting;\ntype ChangeSidebarView = ReturnType;\ntype ChangeOddFormat = ReturnType;\ntype EnableOddHistory = ReturnType;\ntype DisableOddHistory = ReturnType;\ntype ChangeOddsStatisticView = ReturnType;\ntype SetOddsChangeModalShown = ReturnType;\n\nmoduleLocator.get('betslip').subscribe(betslip => {\n const {\n constants: { ADD_BETSLIP_ODD },\n selectors: { selectBetslipOdds },\n } = betslip;\n\n type BetslipActions = typeof betslip['actions'];\n type AddBetslipOdd = ReturnType;\n\n const setBetslipView: TypedEpic = (\n action$,\n store\n ) =>\n action$\n .ofType(ADD_BETSLIP_ODD)\n .filter(() => !checkEqualSidebarView(SidebarView.betslip, store))\n .map(() => changeSidebarView({ sidebarView: SidebarView.betslip }));\n\n const setBetslipViewByRehydrate: TypedEpic<\n RehydrateAction,\n ChangeSidebarView\n > = (action$, store) =>\n action$\n .ofType(REHYDRATE)\n .filter(() => !checkEqualSidebarView(SidebarView.betslip, store))\n .filter(() => selectBetslipOdds(store.getState()).count() > 0)\n .map(() => changeSidebarView({ sidebarView: SidebarView.betslip }));\n\n const extraEpics: TypedEpic[] = [setBetslipView, setBetslipViewByRehydrate];\n\n extraEpics.forEach(epic => registerEpic(epic));\n});\n\nconst makeSetBetslipByStreamOpen = (\n streamModule: StreamModule\n): TypedEpic<\n ReturnType,\n ReturnType\n> => {\n const {\n constants: { OPEN_FULLSCREEN_STREAM },\n } = streamModule;\n\n return (action$, store) =>\n action$\n .ofType(OPEN_FULLSCREEN_STREAM)\n .filter(() => checkBreakpoint(store))\n .map(() => changeSidebarView({ sidebarView: SidebarView.live }));\n};\n\nconst makeSetBetslipByStreamClosed = (\n streamModule: StreamModule\n): TypedEpic<\n ReturnType,\n ReturnType\n> => {\n const {\n constants: { CLOSE_FULLSCREEN_STREAM },\n } = streamModule;\n\n return (action$, store) =>\n action$\n .ofType(CLOSE_FULLSCREEN_STREAM)\n .filter(\n () =>\n !checkEqualSidebarView(SidebarView.betslip, store) &&\n checkIsBetslip(store) &&\n checkBreakpoint(store)\n )\n .map(() =>\n changeSidebarView({\n sidebarView: UserDevice.getInstance()?.isDeviceMobile()\n ? SidebarView.betslip\n : SidebarView.promo,\n })\n );\n};\n\nmoduleLocator.get('stream').subscribe(streamModule => {\n const setBetslipByStreamOpen = makeSetBetslipByStreamOpen(streamModule);\n const setBetslipByStreamClosed = makeSetBetslipByStreamClosed(streamModule);\n\n const extraEpics: TypedEpic[] = [\n setBetslipByStreamOpen,\n setBetslipByStreamClosed,\n ];\n extraEpics.forEach(epic => registerEpic(epic));\n});\n\nexport const syncEnableOddHistoryGamblerSettings: TypedEpic<\n EnableOddHistory,\n ReturnType\n> = actions$ => {\n return actions$\n .ofType(ENABLE_ODD_HISTORY)\n .map(() => changeGamblerSetting(UISettingKey.SHOW_ODD_HISTORY, true));\n};\n\nexport const syncDisableOddHistoryGamblerSettings: TypedEpic<\n DisableOddHistory,\n ReturnType\n> = actions$ => {\n return actions$\n .ofType(DISABLE_ODD_HISTORY)\n .map(() => changeGamblerSetting(UISettingKey.SHOW_ODD_HISTORY, false));\n};\n\nexport const syncOddStatisticGamblerSettings: TypedEpic<\n ChangeOddsStatisticView,\n ReturnType\n> = actions$ => {\n return actions$\n .ofType(CHANGE_ODDS_STATISTIC)\n .map(action => {\n const { show, statisticView } = action.payload;\n const generatedActions: Array<\n ReturnType\n > = [];\n\n if (show !== undefined) {\n generatedActions.push(\n changeGamblerSetting(UISettingKey.SHOW_ODDS_STATISTIC, show)\n );\n }\n\n if (statisticView !== undefined) {\n generatedActions.push(\n changeGamblerSetting(\n UISettingKey.ODD_STATISTIC_VIEW,\n statisticView\n )\n );\n }\n\n return generatedActions;\n })\n .concatMap(action => action);\n};\n\nexport const syncOddFormatGamblerSettings: TypedEpic<\n ChangeOddFormat,\n ReturnType\n> = actions$ => {\n return actions$\n .ofType(CHANGE_ODD_FORMAT)\n .map(action =>\n changeGamblerSetting(\n UISettingKey.ODD_FORMAT,\n action.payload.oddFormat\n )\n );\n};\n\nexport const syncOddsChangeModalShownGamblerSettings: TypedEpic<\n SetOddsChangeModalShown,\n ReturnType\n> = actions$ => {\n return actions$\n .ofType(SET_ODDS_CHANGE_MODAL_SHOWN)\n .map(action =>\n changeGamblerSetting(\n UISettingKey.ODDS_CHANGE_MODAL_SHOWN,\n action.payload\n )\n );\n};\n\nfunction checkIsBetslip(store: MiddlewareAPI) {\n const state = store.getState();\n const currSidebarView = selectSidebarView(state);\n\n return currSidebarView !== SidebarView.betslip;\n}\n\nfunction checkBreakpoint(store: MiddlewareAPI) {\n const state = store.getState();\n\n const isMedium = selectIsMedium(state, {});\n\n return !isMedium;\n}\n\nfunction checkEqualSidebarView(\n sidebarView: SidebarView,\n store: MiddlewareAPI\n) {\n const state = store.getState();\n const currSidebarView = selectSidebarView(state);\n\n return sidebarView === currSidebarView;\n}\n\nexport const makeSyncGamblerSettingsByPlatform = (\n isMobilePlatform: boolean\n): ReturnType => {\n if (!isMobilePlatform) return makeSyncGamblerSettings(UI_GAMBLER_SETTINGS);\n\n const mobileOptions = omit(\n UI_GAMBLER_SETTINGS[NAME],\n UISettingKey.SHOW_ODD_HISTORY\n );\n\n return makeSyncGamblerSettings({\n [NAME]: mobileOptions,\n });\n};\n","import { App } from '@gin-betting/core';\nimport { persistReducer } from '@gin-betting/persist';\nimport { Record } from 'immutable';\n\nimport { SidebarView } from 'app-constants';\nimport UserDevice from 'services/user-device';\nimport { Actions } from './actions';\nimport {\n CHANGE_FAVORITE_COUNT,\n CHANGE_ODD_FORMAT,\n CHANGE_ODDS_STATISTIC,\n CHANGE_SIDEBAR_VIEW,\n CLOSE_FILTER,\n CLOSE_SIDEBAR,\n DISABLE_ODD_HISTORY,\n ENABLE_ODD_HISTORY,\n OPEN_FILTER,\n OPEN_SIDEBAR,\n SET_ACTIVE_MOBILE_COUNTRY_KEY,\n SET_ODDS_CHANGE_MODAL_SHOWN,\n} from './constants';\nimport { UIState, UIStateShape } from './types';\n\nfunction getInitialState() {\n const UIStateRecord = Record(\n {\n oddFormat: App.OddFormat.Decimal,\n sidebarView: UserDevice.getInstance()?.isDeviceMobile()\n ? SidebarView.betslip\n : SidebarView.promo,\n isSidebarOpen: false,\n streamViewerVisibility: 'visible',\n favoriteCount: {\n upcoming: null,\n outrights: null,\n },\n isOddHistoryEnabled: false,\n oddsStatistic: {\n statisticView: App.OddStatisticView.MARKET,\n show: false,\n },\n isFilterOpened: false,\n activeMobileCountryKey: '',\n isOddsChangeModalShown: false,\n },\n 'UIState'\n );\n\n return new UIStateRecord();\n}\n\nfunction reducer(state = getInitialState(), action: Actions): UIState {\n switch (action.type) {\n case OPEN_SIDEBAR: {\n return state.set('isSidebarOpen', true);\n }\n\n case CLOSE_SIDEBAR: {\n return state.set('isSidebarOpen', false);\n }\n\n case CHANGE_FAVORITE_COUNT: {\n const { count, type } = action.payload;\n\n return state.setIn(['favoriteCount', type], count);\n }\n\n case CHANGE_ODD_FORMAT: {\n const { oddFormat } = action.payload;\n\n return state.set('oddFormat', oddFormat);\n }\n\n case CHANGE_SIDEBAR_VIEW: {\n const { sidebarView } = action.payload;\n\n return state.set('sidebarView', sidebarView);\n }\n\n case ENABLE_ODD_HISTORY: {\n return state.set('isOddHistoryEnabled', true);\n }\n\n case DISABLE_ODD_HISTORY: {\n return state.set('isOddHistoryEnabled', false);\n }\n\n case CHANGE_ODDS_STATISTIC: {\n const { statisticView, show } = action.payload;\n\n const oddsStatistic = {\n statisticView:\n statisticView || state.oddsStatistic.statisticView,\n show: show !== undefined ? show : state.oddsStatistic.show,\n };\n\n return state.set('oddsStatistic', oddsStatistic);\n }\n\n case OPEN_FILTER: {\n return state.set('isFilterOpened', true);\n }\n\n case CLOSE_FILTER: {\n return state.set('isFilterOpened', false);\n }\n\n case SET_ACTIVE_MOBILE_COUNTRY_KEY: {\n return state.set('activeMobileCountryKey', action.payload);\n }\n\n case SET_ODDS_CHANGE_MODAL_SHOWN: {\n return state.set('isOddsChangeModalShown', action.payload);\n }\n\n default:\n return state;\n }\n}\n\nexport { reducer };\n\nexport default persistReducer(\n {\n key: 'ui',\n stateReconciler: (inboundState, _, reducedState) => {\n return Object.keys(inboundState).reduce((persistedState, key) => {\n if (!reducedState.has(key)) return persistedState;\n\n return persistedState.set(key, inboundState[key]);\n }, reducedState);\n },\n blacklist: [\n 'isSidebarOpen',\n 'sidebarView',\n 'favoriteCount',\n 'matchListView',\n 'activeMobileCountryKey',\n 'isOddsChangeModalShown',\n ],\n },\n reducer\n);\n","import * as actions from './actions';\nimport * as components from './components';\nimport * as constants from './constants';\nimport * as epics from './epics';\nimport reducer from './reducer';\nimport * as selectors from './selectors';\nimport * as types from './types';\n\nexport { types as UI };\nexport default { reducer, actions, constants, selectors, components, epics };\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"topBannerMatchInfo__container___2Ec6j\",\"tournament\":\"topBannerMatchInfo__tournament___ldSzk\",\"market-name\":\"topBannerMatchInfo__market-name___3ka0R\",\"is-score\":\"topBannerMatchInfo__is-score___3-aUA\",\"score\":\"topBannerMatchInfo__score___t8S8j\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"topMatch__container___33QkK\"};","import loadable, {\n DefaultComponent,\n LoadableComponent,\n} from '@loadable/component';\n\nconst withLoadable = (\n loadFn: (props: Props) => Promise>\n): LoadableComponent => loadable(loadFn);\n\nexport default withLoadable;\n","import withLoadable from 'hoc/withLoadable';\n\nconst Tournament = /* #__LOADABLE__ */ () =>\n import(/* webpackChunkName: \"tournament-Tournament\" */ './Tournament');\n\nexport const TournamentComponent = withLoadable(Tournament);\n","import * as components from './components';\nimport * as constants from './constants';\n\nexport default {\n components,\n constants,\n};\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { ExtendedRouts } from 'app-constants';\nimport globalMessages from 'messages';\nimport favorite from 'modules/favorite';\n\nconst { FavoriteCount } = favorite.components;\n\nexport const favoriteHomeTabs = [\n {\n title: (\n \n \n\n \n \n ),\n link: ExtendedRouts.FAVORITE_UPCOMING,\n },\n {\n title: (\n \n \n\n \n \n ),\n link: ExtendedRouts.FAVORITE_OUTRIGHTS,\n },\n {\n title: ,\n link: ExtendedRouts.FAVORITE_RESULTS,\n },\n];\n","import React from 'react';\n\nimport { ListHelmet } from 'components';\nimport matchList from 'modules/match-list';\nimport { favoriteHomeTabs } from '../constants';\n\nimport './favoriteList.scss';\n\nconst {\n components: { FavoriteList },\n} = matchList;\n\nconst FavoriteListView: React.FC = () => (\n
\n \n \n
\n);\n\nexport default React.memo(FavoriteListView);\n","import { App, Poller } from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport { SKIP_MATCH_LIST_INITIAL_REQUEST } from 'app-constants';\nimport { usePureSelector, useWithLocation } from 'hooks';\nimport matchList from 'modules/match-list';\nimport { checkSkipPollerConfiguration } from 'utils';\n\nconst {\n actions: { searchMatches },\n selectors: { selectFetchStatus },\n pagination: {\n selectors: { selectIsPollingTurnedOff },\n },\n} = matchList;\n\nconst POLLER_NAME = App.PollerName.Live;\n\ninterface Output {\n fetchStatus: App.FetchStatus;\n pollerOpts: Poller.UsePollerInput;\n}\n\nexport default function useLive(): Output {\n const { location, isSkipInitialRequest } = useWithLocation(l => ({\n location: l,\n isSkipInitialRequest:\n !window.__app.previousLocation &&\n checkSkipPollerConfiguration(\n SKIP_MATCH_LIST_INITIAL_REQUEST[App.Routes.LIVE_LIST]\n ),\n }));\n\n const { fetchStatus, isPollingTurnedOff } = usePureSelector(s =>\n selectProps(s, { location })\n ); // NOTE: selectFetchStatus and selectIsPollingTurnedOff need of location\n\n return {\n fetchStatus,\n pollerOpts: {\n pollerName: POLLER_NAME,\n executableAction: searchMatches,\n skipInitialRequest: isSkipInitialRequest,\n isPollingTurnedOff,\n },\n };\n}\n\nconst selectProps = createStructuredSelector({\n fetchStatus: selectFetchStatus,\n isPollingTurnedOff: selectIsPollingTurnedOff,\n});\n","import React, { memo } from 'react';\n\nimport { MatchListType } from 'app-constants';\nimport matchList from 'modules/match-list';\nimport useLive from './useLive';\n\nconst {\n components: { MatchListContainer },\n} = matchList;\n\nconst Live: React.FC = () => {\n const { fetchStatus, pollerOpts } = useLive();\n\n return (\n \n );\n};\n\nexport default memo(Live);\n","import React from 'react';\n\nimport { AsyncOutrightPage } from 'modules/outright/async';\n\ninterface Props {\n matchId: string;\n}\n\nconst Outright: React.FC = ({ matchId }) => (\n \n);\n\nexport default Outright;\n","import { useContext, useEffect, useMemo } from 'react';\nimport core from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport { SELECTOR_STUB } from 'app-constants';\nimport { Modules, useAsyncModule } from 'async-modules';\nimport { useMemoSelector } from 'hooks';\nimport { BettingReadyIndicatorContext } from 'modules/betting-ready-indicator';\n\nconst {\n viewport: {\n selectors: { selectIsCompact },\n },\n utils: { isFetchFinished },\n} = core;\n\ninterface Output {\n isCompact: boolean;\n}\n\nconst makePropsSelector = (\n filtersModule: Modules['filters']['default'] | null\n) => {\n const selectCategorizerFetchStatus =\n filtersModule?.selectors.selectCategorizerFetchStatus ?? SELECTOR_STUB;\n\n return createStructuredSelector({\n fetchStatus: selectCategorizerFetchStatus,\n isCompact: selectIsCompact,\n });\n};\n\nconst useOutrights = (): Output => {\n const filtersModule = useAsyncModule('filters');\n\n const selectProps = useMemo(() => makePropsSelector(filtersModule), [\n filtersModule,\n ]);\n\n const { isCompact, fetchStatus } = useMemoSelector(selectProps, {}, [\n filtersModule,\n ]);\n\n const readyIndicator = useContext(BettingReadyIndicatorContext);\n\n useEffect(() => {\n if (!fetchStatus) return;\n\n if (isFetchFinished(fetchStatus)) {\n readyIndicator.setReady('hasData');\n }\n }, [fetchStatus, readyIndicator]);\n\n return {\n isCompact,\n };\n};\n\nexport default useOutrights;\n","import React, { Fragment } from 'react';\nimport type { RouteComponentProps } from 'react-router-dom';\n\nimport { ListHelmet } from 'components';\nimport { AsyncOutrightsList } from 'modules/outright/async';\nimport useOutrights from './useOutrights';\n\nimport './outrights.scss';\n\ntype Props = RouteComponentProps;\n\nconst Outrights: React.FC = () => {\n const { isCompact } = useOutrights();\n\n return (\n \n {isCompact &&
}\n \n \n \n );\n};\n\nexport default Outrights;\n","import { App, Poller } from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport { SKIP_MATCH_LIST_INITIAL_REQUEST } from 'app-constants';\nimport { usePureSelector, useWithLocation } from 'hooks';\nimport matchList from 'modules/match-list';\nimport { checkSkipPollerConfiguration } from 'utils';\n\nconst {\n actions: { searchMatches },\n selectors: { selectFetchStatus },\n pagination: {\n selectors: { selectIsPollingTurnedOff },\n },\n} = matchList;\nconst POLLER_NAME = App.PollerName.Prematch;\n\ninterface Output {\n fetchStatus: App.FetchStatus;\n pollerOpts: Poller.UsePollerInput;\n}\n\nexport default function usePrematch(): Output {\n const { location, skipInitialRequest } = useWithLocation(l => ({\n location: l,\n skipInitialRequest:\n !window.__app.previousLocation &&\n checkSkipPollerConfiguration(\n SKIP_MATCH_LIST_INITIAL_REQUEST[App.Routes.PREMATCH]\n ),\n }));\n\n const { fetchStatus, isPollingTurnedOff } = usePureSelector(s =>\n selectProps(s, { location })\n ); // NOTE: selectFetchStatus and selectIsPollingTurnedOff need of location\n\n return {\n fetchStatus,\n pollerOpts: {\n pollerName: POLLER_NAME,\n executableAction: searchMatches,\n skipInitialRequest,\n isPollingTurnedOff,\n },\n };\n}\n\nconst selectProps = createStructuredSelector({\n fetchStatus: selectFetchStatus,\n isPollingTurnedOff: selectIsPollingTurnedOff,\n});\n","import React, { memo } from 'react';\n\nimport { MatchListType } from 'app-constants';\nimport matchList from 'modules/match-list';\nimport usePrematch from './usePrematch';\n\nconst {\n components: { MatchListContainer },\n} = matchList;\n\nconst Prematch: React.FC = () => {\n const { fetchStatus, pollerOpts } = usePrematch();\n\n return (\n \n );\n};\n\nexport default memo(Prematch);\n","import core, { App, Poller } from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport { useMount, usePureSelector, useWithLocation } from 'hooks';\nimport matchList from 'modules/match-list';\nimport { getTimeIntervalByUnit } from 'utils';\n\nconst {\n utils: { getAppliedFilters, extendSearchString },\n} = core;\nconst {\n actions: { searchMatches },\n selectors: { selectFetchStatus },\n pagination: {\n selectors: { selectIsPollingTurnedOff },\n },\n} = matchList;\n\nconst POLLER_NAME = App.PollerName.Results;\n\ninterface Output {\n fetchStatus: App.FetchStatus;\n pollerOpts: Poller.UsePollerInput;\n}\n\nexport default function useResult(): Output {\n const { location, dateFrom } = useWithLocation(l => ({\n location: l,\n dateFrom: !!getAppliedFilters().dateFrom,\n }));\n\n useMount(() => {\n if (dateFrom) return;\n\n extendSearchString(\n 'dateFrom',\n getTimeIntervalByUnit({\n interval: -72,\n unit: 'hour',\n })\n );\n });\n\n const { fetchStatus, isPollingTurnedOff } = usePureSelector(s =>\n selectProps(s, { location })\n ); // NOTE: selectFetchStatus need of location\n\n return {\n fetchStatus,\n pollerOpts: {\n pollerName: POLLER_NAME,\n executableAction: searchMatches,\n isPollingTurnedOff,\n skipInitialRequest: !dateFrom,\n },\n };\n}\n\nconst selectProps = createStructuredSelector({\n fetchStatus: selectFetchStatus,\n isPollingTurnedOff: selectIsPollingTurnedOff,\n});\n","import React, { memo } from 'react';\n\nimport { MatchListType } from 'app-constants';\nimport matchList from 'modules/match-list';\nimport useResults from './useResults';\n\nconst {\n components: { MatchListContainer },\n} = matchList;\n\nconst Results: React.FC = () => {\n const { fetchStatus, pollerOpts } = useResults();\n\n return (\n \n );\n};\n\nexport default memo(Results);\n","import core, { App, Poller } from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport { useMemoSelector, useWithLocation } from 'hooks';\nimport matchList from 'modules/match-list';\nimport { parse } from 'utils';\n\nconst {\n viewport: {\n selectors: { selectIsCompact },\n },\n utils: { getBettingOptions },\n} = core;\nconst {\n actions: { searchMatches },\n selectors: { selectFetchStatus },\n pagination: {\n selectors: { selectIsPollingTurnedOff },\n },\n} = matchList;\n\nconst POLLER_NAME = App.PollerName.Upcoming;\n\ninterface Output {\n shouldRenderMobileTopMatches: boolean;\n fetchStatus: App.FetchStatus;\n pollerOpts: Poller.UsePollerInput;\n}\n\nconst useUpcoming = (): Output => {\n const { isBettingPage, isTop, location } = useWithLocation(l => ({\n isTop: parse(l.search).isTop,\n isBettingPage: getBettingOptions().url.pagePath === '',\n location: l,\n }));\n\n const {\n fetchStatus,\n isPollingTurnedOff,\n isMedium,\n } = useMemoSelector(selectProps, { location }); // NOTE selectIsPollingTurnedOff need of location\n\n const shouldRenderMobileTopMatches = !!isTop && isBettingPage && isMedium;\n\n const isPollingTurnedOffByPlatform =\n !shouldRenderMobileTopMatches && isPollingTurnedOff;\n\n return {\n fetchStatus,\n shouldRenderMobileTopMatches,\n pollerOpts: {\n pollerName: POLLER_NAME,\n executableAction: searchMatches,\n isPollingTurnedOff: isPollingTurnedOffByPlatform,\n },\n };\n};\n\nconst selectProps = createStructuredSelector({\n isPollingTurnedOff: selectIsPollingTurnedOff,\n fetchStatus: selectFetchStatus,\n isMedium: selectIsCompact,\n});\n\nexport default useUpcoming;\n","import React, { Fragment } from 'react';\n\nimport { MatchListType } from 'app-constants';\nimport matchList from 'modules/match-list';\nimport promo from 'modules/promo';\nimport useUpcoming from './useUpcoming';\n\nconst {\n components: { MatchListContainer },\n} = matchList;\nconst {\n components: { MobileTopMatchList },\n} = promo;\n\nconst Upcoming: React.FC = () => {\n const {\n fetchStatus,\n shouldRenderMobileTopMatches,\n pollerOpts,\n } = useUpcoming();\n\n return (\n \n {shouldRenderMobileTopMatches ? (\n \n ) : (\n \n )}\n \n );\n};\n\nexport default Upcoming;\n","import bannersModule, { BannerTypes } from '@gin-betting/banners';\nimport type { GQL } from '@gin-betting/core';\nimport { sortBy } from 'lodash';\nimport { createSelector } from 'reselect';\n\nconst {\n selectors: { makeSelectBannerZonesByAttributes, selectZoneBanners },\n} = bannersModule;\n\nexport type BannersTuples = Array<[string, BannerTypes.BannerItem[]]>;\n\ninterface MakePropsSelectorOutput {\n banners: BannersTuples;\n zones: GQL.BannerZone[];\n}\n\nexport const makePropsSelector = (\n zoneLocation: BannerTypes.BannerZoneLocation\n) => {\n return createSelector(\n makeSelectBannerZonesByAttributes([{ pageLocation: zoneLocation }]),\n selectZoneBanners,\n (zones, bannerZone): MakePropsSelectorOutput => {\n const banners: BannersTuples = [];\n\n const sortedZones = sortBy(\n zones,\n ({ attributes }) => attributes.index\n );\n\n sortedZones.forEach(zone => {\n const bannersConfig = bannerZone.get(zone.id)?.config;\n\n if (bannersConfig) {\n banners.push([zone.id, bannersConfig]);\n }\n });\n\n return {\n zones,\n banners,\n };\n }\n );\n};\n","import { useEffect, useMemo, useRef } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useLocation } from 'react-router';\nimport bannersModule, { BannerTypes } from '@gin-betting/banners';\nimport { BannerZoneSettings } from '@gin-betting/constants';\nimport { difference, find, forEach, map, reduce } from 'lodash';\n\nimport { useMemoSelector } from 'hooks';\nimport { BannersTuples, makePropsSelector } from './selectors';\n\nconst {\n actions: { getBannersData },\n selectors: { makeSelectMissingBannerZoneIds },\n} = bannersModule;\n\ntype ZoneIntervals = { [key: string]: number };\n\ninterface Input {\n zoneLocation: BannerTypes.BannerZoneLocation;\n}\n\ninterface Output {\n zoneIntervals: ZoneIntervals;\n banners: BannersTuples;\n}\n\nconst useBannersCarousel = ({ zoneLocation }: Input): Output => {\n const dispatch = useDispatch();\n const requestedZonesCacheRef = useRef([]);\n const location = useLocation();\n\n const { zones, banners } = useMemoSelector(\n makePropsSelector(zoneLocation),\n { location }\n );\n\n const zoneIds = useMemo(() => map(zones, zone => zone.id), [zones]);\n\n const missingZoneIds: string[] = useMemoSelector(\n makeSelectMissingBannerZoneIds(zoneIds),\n {},\n [zoneIds]\n );\n\n const uniqIds = difference(missingZoneIds, requestedZonesCacheRef.current);\n\n useEffect(() => {\n forEach(uniqIds, zoneId => {\n requestedZonesCacheRef.current.push(zoneId);\n\n dispatch(\n getBannersData({\n zoneId,\n withSportEvent: false,\n })\n );\n });\n }, [zones, dispatch, uniqIds]);\n\n const zoneIntervals: ZoneIntervals = useMemo(\n () =>\n reduce(\n zones,\n (acc: ZoneIntervals, zone) => {\n const interval = find(\n zone.settings,\n ({ name }) => name === BannerZoneSettings.INTERVAL\n );\n\n if (interval) {\n acc[zone.id] = +interval.value;\n }\n\n return acc;\n },\n {}\n ),\n [zones]\n );\n\n return {\n zoneIntervals,\n banners,\n };\n};\n\nexport default useBannersCarousel;\n","import React from 'react';\nimport { BannerTypes } from '@gin-betting/banners';\nimport { get, map } from 'lodash';\n\nimport { Carousel } from 'components';\nimport promo from 'modules/promo';\nimport useBannersCarousel from './useBannersCarousel';\n\nimport './bannerCarousels.scss';\n\nconst {\n components: { Banner },\n} = promo;\n\ninterface Props {\n zoneLocation: BannerTypes.BannerZoneLocation;\n}\n\nconst BannersCarousel: React.FC = ({ zoneLocation }) => {\n const { zoneIntervals, banners } = useBannersCarousel({\n zoneLocation,\n });\n\n if (!banners.length) return null;\n\n return (\n \n {map(banners, ([zoneId, items]) => {\n const delay = get(zoneIntervals, zoneId, undefined);\n\n if (!items.length) return null;\n\n return (\n
\n \n {map(items, (banner, idx) => (\n \n ))}\n \n
\n );\n })}\n
\n );\n};\n\nexport default React.memo(BannersCarousel);\n","import React from 'react';\nimport Scrollbars from 'react-custom-scrollbars';\nimport { BannerZoneLocation } from '@gin-betting/constants';\nimport { keys } from 'lodash';\n\nimport { SidebarView } from 'app-constants';\nimport { Tabs } from 'components';\nimport { AsyncBetList } from 'modules/bets-history/async';\nimport { AsyncBetslipList } from 'modules/betslip/async';\nimport { AsyncSidebarMarketList } from 'modules/match/async';\nimport promo from 'modules/promo';\nimport BannersCarousel from '../BannersCarousel';\n\nimport './sidebar.scss';\n\nconst {\n components: { Banners, TopMatch },\n} = promo;\n\ninterface Props {\n matchIdFullScreen: string | null;\n activeSidebarView: SidebarView;\n changeActiveTabHandler: (sidebarView: SidebarView) => void;\n tabsData: Partial<{ [key in SidebarView]: string }>;\n extraTab?: JSX.Element;\n areSportsAvailable: boolean;\n}\n\nconst { RIGHT_TOP_SPORT_EVENTS, RIGHT_SLIDER, RIGHT } = BannerZoneLocation;\n\nconst Sidebar: React.FC = ({\n tabsData,\n activeSidebarView,\n changeActiveTabHandler,\n matchIdFullScreen,\n extraTab,\n areSportsAvailable,\n}) => {\n return (\n
\n {keys(tabsData).length > 0 && (\n \n )}\n\n
\n {activeSidebarView === SidebarView.betslip && (\n \n )}\n\n {activeSidebarView === SidebarView.bets && }\n\n {activeSidebarView === SidebarView.promo && areSportsAvailable && (\n \n \n \n \n \n )}\n\n {activeSidebarView === SidebarView.live &&\n !!matchIdFullScreen && (\n \n )}\n
\n
\n );\n};\n\nexport default Sidebar;\n","import React from 'react';\nimport { injectIntl, WrappedComponentProps } from 'react-intl';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport { omit } from 'lodash';\nimport { compose } from 'redux';\n\nimport { SELECTOR_STUB, SidebarView } from 'app-constants';\nimport { withStreamModule, WithStreamModuleTypes } from 'hoc';\nimport globalMsgs from 'messages';\nimport promo from 'modules/promo';\nimport ui from 'modules/ui';\nimport UserDevice from 'services/user-device';\nimport { State as AppState } from 'types';\nimport Sidebar from './Sidebar';\n\nconst {\n actions: { changeSidebarView },\n selectors: { selectSidebarView },\n} = ui;\nconst {\n selectors: { selectAreSportsAvailable },\n} = promo;\n\ninterface OwnProps {\n isAuthorized: boolean;\n extraTab?: JSX.Element;\n}\n\ninterface MappedProps {\n activeSidebarView: ReturnType;\n matchIdFullScreen: string | null;\n areSportsAvailable: ReturnType;\n}\n\ninterface MappedActions {\n changeSidebarView: typeof changeSidebarView;\n}\n\ninterface ConnectOwnProps\n extends OwnProps,\n WithStreamModuleTypes.WithStreamModule {}\n\ntype Props = OwnProps & MappedProps & MappedActions & WrappedComponentProps;\n\ntype TabsData = { [key in SidebarView]: string };\n\nclass SidebarContainer extends React.Component {\n tabsData: TabsData = {\n [SidebarView.betslip]: this.props.intl.formatMessage(\n globalMsgs.bettingSlip\n ),\n [SidebarView.bets]: this.props.intl.formatMessage(globalMsgs.myBets),\n [SidebarView.promo]: this.props.intl.formatMessage(globalMsgs.promo),\n [SidebarView.live]: this.props.intl.formatMessage(globalMsgs.live),\n };\n\n hiddenWithoutAuth: [SidebarView.bets] = [SidebarView.bets];\n\n hiddenOnMobile: [SidebarView.promo] = [SidebarView.promo];\n\n hiddenLiveStreamTabs: { isOpen: SidebarView; isClosed: SidebarView } = {\n isOpen: SidebarView.promo,\n isClosed: SidebarView.live,\n };\n\n changeActiveTabHandler = (sidebarView: SidebarView) =>\n this.props.changeSidebarView({ sidebarView });\n\n filterTabsData = (\n isAuthorized: boolean,\n isLiveStreamFullscreen: boolean\n ): Partial => {\n let result: Partial = this.tabsData;\n\n if (!isAuthorized) {\n result = omit(result, this.hiddenWithoutAuth);\n }\n\n if (UserDevice.getInstance()?.isDeviceMobile()) {\n result = omit(result, this.hiddenOnMobile);\n }\n\n return omit(\n result,\n isLiveStreamFullscreen\n ? this.hiddenLiveStreamTabs.isOpen\n : this.hiddenLiveStreamTabs.isClosed\n );\n };\n\n render() {\n const {\n isAuthorized,\n matchIdFullScreen,\n extraTab,\n activeSidebarView,\n areSportsAvailable,\n } = this.props;\n\n const tabsData = this.filterTabsData(isAuthorized, !!matchIdFullScreen);\n\n return React.createElement(Sidebar, {\n matchIdFullScreen,\n activeSidebarView,\n tabsData,\n extraTab,\n changeActiveTabHandler: this.changeActiveTabHandler,\n areSportsAvailable,\n });\n }\n}\n\nconst makeMapStateToProps = (\n state: AppState,\n ownProps: ConnectOwnProps\n): MappedProps => {\n const selectMatchIdFullScreen =\n ownProps.streamModule?.selectors.selectMatchIdFullScreen ??\n SELECTOR_STUB;\n\n const activeSidebarView = selectSidebarView(state);\n const matchIdFullScreen = selectMatchIdFullScreen(state);\n const areSportsAvailable = selectAreSportsAvailable(state);\n\n return {\n activeSidebarView,\n matchIdFullScreen,\n areSportsAvailable,\n };\n};\n\nconst mapDispatchToProps: MappedActions = {\n changeSidebarView,\n};\n\nexport default compose>(\n injectIntl,\n withRouter,\n withStreamModule,\n connect(\n makeMapStateToProps,\n mapDispatchToProps\n )\n)(SidebarContainer);\n","import { useCallback, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport core from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport {\n BettingWidgets,\n CLASS_NAME_OF_DISABLED_SCROLL,\n SELECTOR_STUB,\n} from 'app-constants';\nimport { useAsyncModule } from 'async-modules';\nimport { useCssClassToggleOnDocument, useWidgetSettings } from 'hooks';\nimport ui from 'modules/ui';\nimport UserDevice from 'services/user-device';\nimport { Modules, State } from 'types';\n\nconst {\n utils: { getBettingOptions },\n viewport: {\n selectors: { selectIsMedium },\n },\n} = core;\n\nconst {\n selectors: { selectIsSidebarOpen },\n actions: { toggleSidebar, openSidebar, closeSidebar },\n} = ui;\n\ninterface Output {\n handleToggleSidebar: VoidFn;\n handleCloseSidebar: VoidFn;\n handleOpenSidebar: VoidFn;\n isSidebarOpen: boolean;\n isFullScreen: boolean;\n isMedium: boolean;\n isAuthorized: boolean;\n ignoreOffsetInTheaterMode: boolean;\n}\n\nconst makePropsSelector = (\n streamModule: Modules['stream']['default'] | null\n) => {\n const selectIsFullScreen =\n streamModule?.selectors.selectIsFullScreen ?? SELECTOR_STUB;\n\n return createStructuredSelector({\n isSidebarOpen: selectIsSidebarOpen,\n isFullScreen: selectIsFullScreen,\n isMedium: selectIsMedium,\n });\n};\n\nconst useSidebarToggler = (): Output => {\n const streamModule = useAsyncModule('stream');\n const { ignoreOffsetInTheaterMode } = useWidgetSettings({\n widget: BettingWidgets.STREAM,\n });\n const dispatch = useDispatch();\n const selectProps = useMemo(() => makePropsSelector(streamModule), [\n streamModule,\n ]);\n\n const { isSidebarOpen, isFullScreen, isMedium } = useSelector((s: State) =>\n selectProps(s, {})\n );\n\n useCssClassToggleOnDocument(\n CLASS_NAME_OF_DISABLED_SCROLL,\n isSidebarOpen && Boolean(UserDevice.getInstance()?.isDeviceMobile())\n );\n\n const handleToggleSidebar = useCallback(() => {\n dispatch(toggleSidebar({ isOpen: !isSidebarOpen }));\n }, [dispatch, isSidebarOpen]);\n\n const handleCloseSidebar = useCallback(() => {\n dispatch(closeSidebar());\n }, [dispatch]);\n\n const handleOpenSidebar = useCallback(() => {\n dispatch(openSidebar());\n }, [dispatch]);\n\n const { isAuthorized } = getBettingOptions();\n\n return {\n handleToggleSidebar,\n handleCloseSidebar,\n handleOpenSidebar,\n isSidebarOpen,\n isFullScreen: !!isFullScreen,\n isMedium,\n isAuthorized,\n ignoreOffsetInTheaterMode: Boolean(ignoreOffsetInTheaterMode),\n };\n};\n\nexport default useSidebarToggler;\n","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport cn from 'classnames';\n\nimport { Icon } from 'components';\nimport globalMsgs from 'messages';\nimport { AsyncBetslipBetCount } from 'modules/betslip/async';\nimport { DEFAULT_SPACING } from 'styles/spacing';\nimport { getNumberValueFromPx } from 'utils';\nimport Sidebar from '../Sidebar';\nimport useSidebarToggler from './useSidebarToggler';\n\nimport arrowDownCircle from 'assets/svg/arrow-down-circle.svg';\nimport './sidebarToggler.scss';\n\nconst SidebarToggler: React.FC = () => {\n const {\n handleToggleSidebar,\n isSidebarOpen,\n isFullScreen,\n isAuthorized,\n isMedium,\n ignoreOffsetInTheaterMode,\n } = useSidebarToggler();\n const { formatMessage } = useIntl();\n\n if (isFullScreen && isMedium) return null;\n\n return (\n \n {!isFullScreen && (\n
\n {isSidebarOpen && formatMessage(globalMsgs.hide)}{' '}\n {formatMessage(globalMsgs.bettingSlip)}\n \n \n
\n )}\n\n {(isSidebarOpen || isFullScreen) && (\n \n )}\n
\n );\n};\n\nfunction getDefaultBottomOffsetForTablet(): object | undefined {\n const style = getComputedStyle(document.documentElement);\n const bottomOffset = getNumberValueFromPx(\n style.getPropertyValue('--bottom-offset')\n );\n\n // We should override \"bottomOffset\" for tablet resolution if it equals the default value,\n // because the integrator may not specify correct value for this case (only handles deskop/mobile)\n if (DEFAULT_SPACING.bottomOffset === bottomOffset) {\n return {\n '--bottom-offset': '0px',\n };\n }\n}\n\nexport default React.memo(SidebarToggler);\n","import { RefObject, useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useLocation } from 'react-router';\nimport { App } from '@gin-betting/core';\nimport { createSelector, createStructuredSelector } from 'reselect';\n\nimport { SELECTOR_STUB, SidebarView } from 'app-constants';\nimport { BetslipModule, useAsyncModule } from 'async-modules';\nimport { useOnClickOutside } from 'hooks';\nimport ui from 'modules/ui';\nimport { Modules, State } from 'types';\nimport { formatDecimalOdd } from 'utils';\n\nconst {\n selectors: { selectOddFormat, selectSidebarView, selectIsSidebarOpen },\n actions: { closeSidebar },\n} = ui;\n\ninterface Output {\n betsSize: number;\n totalOdd: ReturnType | null;\n betStatus: App.BetslipStatus;\n shouldHideSidebar: boolean;\n refContainer: RefObject;\n}\n\nconst defaultOutput: Omit = {\n betsSize: 0,\n totalOdd: null,\n betStatus: App.BetslipStatus.INITIAL,\n shouldHideSidebar: true,\n};\n\nconst useSidebarTogglerMob = (): Output => {\n const dispatch = useDispatch();\n const betslipModule = useAsyncModule<'betslip'>('betslip');\n const { pathname } = useLocation();\n\n const refContainer = useRef(null);\n const refs = useMemo(() => [refContainer], []);\n\n const selectBetslipBetInfo = useMemo(\n () =>\n betslipModule ? makePropsSelector(betslipModule) : SELECTOR_STUB,\n [betslipModule]\n );\n\n const selectProps = useMemo(\n () =>\n createStructuredSelector({\n betslipBetId:\n betslipModule?.selectors.selectChosenBetslipBetId ??\n SELECTOR_STUB,\n sidebarView: selectSidebarView,\n isSidebarOpen: selectIsSidebarOpen,\n }),\n [betslipModule]\n );\n\n const {\n betslipBetId,\n sidebarView,\n isSidebarOpen,\n } = useSelector((s: State) => selectProps(s, {}));\n\n const onClose = useCallback(() => {\n dispatch(closeSidebar());\n }, [dispatch]);\n\n useOnClickOutside({ refs, handler: onClose, isOpen: isSidebarOpen });\n\n const props = useSelector((s: State) =>\n selectBetslipBetInfo(s, { betslipBetId })\n );\n\n const shouldHideSidebar =\n sidebarView === SidebarView.betslip &&\n (props\n ? props.betsSize === 0 && props.betslipBetsCount === 1\n : defaultOutput.shouldHideSidebar);\n\n useEffect(() => {\n if (shouldHideSidebar) {\n dispatch(closeSidebar());\n }\n }, [dispatch, shouldHideSidebar]);\n\n useEffect(() => {\n dispatch(closeSidebar());\n }, [dispatch, pathname]);\n\n return {\n ...(props || defaultOutput),\n shouldHideSidebar,\n refContainer,\n };\n};\n\nconst makePropsSelector = (betslipModule: Modules['betslip']['default']) => {\n const {\n selectors: { selectBetslipBetWithStatus, selectBetslipBetTotals },\n } = betslipModule;\n\n const selectBetslipBetWithStatusFinal: BetslipModule['default']['selectors']['selectBetslipBetWithStatus'] = selectBetslipBetWithStatus;\n const selectBetslipBetTotalsFinal: BetslipModule['default']['selectors']['selectBetslipBetTotals'] = selectBetslipBetTotals;\n\n const {\n selectors: { selectBetslipBetIds },\n } = betslipModule;\n\n return createSelector(\n selectBetslipBetWithStatusFinal,\n selectBetslipBetTotalsFinal,\n selectOddFormat,\n selectBetslipBetIds,\n (betslipBet, totals, oddFormat, betslipBetIds) => {\n if (!betslipBet) return null;\n\n const { totalOdd } = totals;\n const { betslipOddIds, status: betStatus } = betslipBet;\n\n return {\n betsSize: betslipOddIds.count(),\n totalOdd: totalOdd\n ? formatDecimalOdd(totalOdd, oddFormat)\n : null,\n betStatus,\n betslipBetsCount: betslipBetIds.count(),\n };\n }\n );\n};\n\nexport default useSidebarTogglerMob;\n","import React, { Fragment, useMemo } from 'react';\nimport { useIntl } from 'react-intl';\nimport cn from 'classnames';\n\nimport { BetCount, BetStatus, Icon } from 'components';\nimport globalMsgs from 'messages';\nimport Sidebar from '../Sidebar';\nimport useSidebarToggler from './useSidebarToggler';\nimport useSidebarTogglerMob from './useSidebarTogglerMob';\n\nimport arrowLeft from 'assets/svg/arrow-left.svg';\nimport './sidebarTogglerMob.scss';\n\nconst SidebarTogglerMob: React.FC = () => {\n const { formatMessage } = useIntl();\n const {\n handleCloseSidebar,\n handleOpenSidebar,\n isSidebarOpen,\n isFullScreen,\n isAuthorized,\n isMedium,\n } = useSidebarToggler();\n const {\n betsSize,\n totalOdd,\n betStatus,\n shouldHideSidebar,\n refContainer,\n } = useSidebarTogglerMob();\n\n const formattedOdd = totalOdd?.component;\n\n const renderCloseBtn = useMemo(\n () => (\n
\n
\n {formatMessage(globalMsgs.hide)}\n
\n \n
\n ),\n [handleCloseSidebar, formatMessage]\n );\n\n const renderBetslipInfo = useMemo(() => {\n if (betsSize === 0) return formatMessage(globalMsgs.bettingSlip);\n\n return (\n
\n \n {formattedOdd && (\n
\n {formatMessage(globalMsgs.totalOdd)} {formattedOdd}\n
\n )}\n
\n );\n }, [formattedOdd, betsSize, formatMessage]);\n\n if ((isFullScreen && isMedium) || shouldHideSidebar) return null;\n\n return (\n \n {isSidebarOpen || (isFullScreen && !isMedium) ? (\n : renderCloseBtn}\n />\n ) : (\n
\n {renderBetslipInfo}\n \n \n
\n )}\n \n );\n};\n\nexport default SidebarTogglerMob;\n","import React from 'react';\nimport cn from 'classnames';\n\nimport { FixedOverlay } from 'components';\nimport { useIsMobile } from 'hooks';\nimport { AsyncQuickBetslip } from 'modules/betslip/async';\nimport SidebarTogglerDesk, { SidebarTogglerMob } from '../SidebarToggler';\n\nimport './footer.scss';\n\nconst Footer: React.FC = () => {\n const isMobile = useIsMobile();\n const SidebarToggler = isMobile ? SidebarTogglerMob : SidebarTogglerDesk;\n\n return (\n \n \n \n {isMobile && }\n \n \n );\n};\n\nexport default Footer;\n","import { useDispatch, useSelector } from 'react-redux';\nimport core from '@gin-betting/core';\nimport { isNull, isUndefined } from 'lodash';\n\nimport { BettingWidgets } from 'app-constants';\nimport { useMount, useWidgetSettings } from 'hooks';\nimport ui from 'modules/ui';\nimport { State } from 'types';\n\nconst {\n viewport: {\n selectors: { makeViewportSelector },\n },\n utils: { getBettingOptions },\n} = core;\n\nconst {\n actions: { toggleSidebar },\n} = ui;\n\ntype Output = {\n parentNode: HTMLElement | null;\n canToggle?: boolean;\n isLarge: boolean;\n isAuthorized: boolean;\n ignoreOffsetInTheaterMode: boolean;\n} | null;\n\nconst selectIsLarge = makeViewportSelector('lessThanOrEqual', 'large');\n\nfunction useBetslipSidebarWrapper(): Output {\n const dispatch = useDispatch();\n const { isAuthorized } = getBettingOptions();\n const isLarge = useSelector((s: State) => selectIsLarge(s, {}));\n const { isOpen, containerElementId, canToggle } = useWidgetSettings({\n widget: BettingWidgets.BETSLIP_SIDEBAR,\n });\n\n const { ignoreOffsetInTheaterMode } = useWidgetSettings({\n widget: BettingWidgets.STREAM,\n });\n\n useMount(() => {\n if (isUndefined(isOpen)) return;\n\n dispatch(toggleSidebar({ isOpen }));\n });\n\n if (isNull(containerElementId)) return null;\n\n const parentNode = containerElementId\n ? document.getElementById(containerElementId)\n : null;\n\n return {\n parentNode,\n canToggle,\n isLarge,\n isAuthorized,\n ignoreOffsetInTheaterMode: Boolean(ignoreOffsetInTheaterMode),\n };\n}\n\nexport default useBetslipSidebarWrapper;\n","import React from 'react';\nimport cn from 'classnames';\n\nimport { Portal } from 'components';\nimport Footer from '../Footer';\nimport Sidebar from '../Sidebar';\nimport SidebarToggler from '../SidebarToggler';\nimport useBetslipSidebarWrapper from './useBetslipSidebarWrapper';\n\nimport './betslipSidebarWrapper.scss';\n\nconst BetslipSidebarWrapper: React.FC = () => {\n const props = useBetslipSidebarWrapper();\n\n if (!props) return null;\n\n const {\n isLarge,\n canToggle,\n parentNode,\n isAuthorized,\n ignoreOffsetInTheaterMode,\n } = props;\n\n const conditionalStyleNames = {\n 'is-offset-ignored-in-theater-mode': ignoreOffsetInTheaterMode,\n };\n\n if (parentNode) {\n return (\n \n
\n {canToggle ? (\n \n ) : (\n \n )}\n
\n
\n );\n }\n\n return (\n
\n {isLarge || canToggle ? (\n
\n ) : (\n \n )}\n
\n );\n};\n\nexport default React.memo(BetslipSidebarWrapper);\n","import React, { RefObject } from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport globalMsg from 'messages';\nimport ui from 'modules/ui';\n\nimport './settingsMobileOverlay.scss';\n\nconst {\n components: { OddFormatSelectMobile, OddsStatisticSelectMobile },\n} = ui;\n\ninterface Props {\n container: RefObject;\n}\n\nconst SettingsMobileOverlay: React.FC = ({ container }) => {\n return (\n
\n
\n \n
\n \n \n
\n );\n};\n\nexport default SettingsMobileOverlay;\n","import { RefObject, useCallback, useMemo, useRef } from 'react';\n\nimport { CLASS_NAME_OF_DISABLED_SCROLL } from 'app-constants';\nimport {\n useCssClassToggleOnDocument,\n useOnClickOutside,\n useToggler,\n} from 'hooks';\n\ninterface Output {\n isOpened: boolean;\n toggleModal: () => void;\n container: RefObject;\n modalContainer: RefObject;\n}\n\nfunction useSettingsButtonMobile(): Output {\n const [isOpened, toggleModal] = useToggler(false);\n const modalContainer = useRef(null);\n const container = useRef(null);\n\n useCssClassToggleOnDocument(CLASS_NAME_OF_DISABLED_SCROLL, isOpened);\n\n const close = useCallback(() => toggleModal(false), [toggleModal]);\n\n const refs = useMemo(() => [container, modalContainer], []);\n\n useOnClickOutside({\n refs,\n handler: close,\n isOpen: isOpened,\n });\n\n return {\n isOpened,\n toggleModal,\n container,\n modalContainer,\n };\n}\n\nexport default useSettingsButtonMobile;\n","import React from 'react';\nimport cn from 'classnames';\n\nimport { Icon, Portal } from 'components';\nimport SettingsMobileOverlay from '../../SettingsMobileOverlay';\nimport useSettingsButtonMobile from './useSettingsButtonMobile';\n\nimport settingsIcon from 'assets/svg/setting-betslip.svg';\nimport './settingsButtonMobile.scss';\n\nconst SettingsButtonMobile = () => {\n const {\n isOpened,\n toggleModal,\n container,\n modalContainer,\n } = useSettingsButtonMobile();\n\n return (\n
\n \n {isOpened && (\n \n \n \n )}\n
\n );\n};\n\nexport default React.memo(SettingsButtonMobile);\n","import React from 'react';\nimport core from '@gin-betting/core';\n\nimport { BettingWidgets } from 'app-constants';\nimport { Widget } from 'components';\nimport { useWidgetSettings } from 'hooks';\nimport SettingsButtonMobile from './SettingsButtonMobile';\n\nimport './headerMobile.scss';\n\nconst { getBettingOptions } = core.utils;\n\nconst HeaderMobile: React.FC = () => {\n const { isAuthorized } = getBettingOptions();\n\n const { isSettingsEnabled } = useWidgetSettings({\n widget: BettingWidgets.MOBILE_HEADER,\n });\n\n if (!isAuthorized) return null;\n\n return (\n \n
\n {isSettingsEnabled && }\n
\n \n );\n};\n\nexport default React.memo(HeaderMobile);\n","import { useSelector } from 'react-redux';\nimport core from '@gin-betting/core';\n\nimport { BettingWidgets } from 'app-constants';\nimport { useWidgetSettings } from 'hooks';\nimport { State } from 'types';\n\ninterface Output {\n isVisible: boolean;\n isStreamPinAvailable: boolean;\n}\n\nconst {\n viewport: {\n selectors: { makeViewportSelector },\n },\n} = core;\n\nconst lessThenOrEqualSelector = makeViewportSelector('lessThanOrEqual');\n\nfunction useLeftSidebar(): Output {\n const { containerElementId } = useWidgetSettings({\n widget: BettingWidgets.CATEGORIZER,\n });\n\n const { pinMinimizedStreamOutOfView } = useWidgetSettings({\n widget: BettingWidgets.STREAM,\n });\n\n const isTablet = useSelector((s: State) => lessThenOrEqualSelector(s, {}))\n .medium;\n\n return {\n isStreamPinAvailable: !!pinMinimizedStreamOutOfView,\n isVisible: containerElementId ? true : !isTablet,\n };\n}\n\nexport default useLeftSidebar;\n","import React from 'react';\nimport StickyBox from 'react-sticky-box';\n\nimport { AsyncCategorizer } from 'modules/filters/async';\nimport { AsyncPersistentStream } from 'modules/stream/async';\nimport { getNumberValueFromPx } from 'utils';\nimport useLeftSidebar from './useLeftSidebar';\n\nimport './leftSidebar.scss';\n\ninterface Props {}\n\nconst LeftSidebar: React.FC = () => {\n const { isVisible, isStreamPinAvailable } = useLeftSidebar();\n\n if (!isVisible) return null;\n\n const style = getComputedStyle(document.documentElement);\n\n const [topOffset, bottomOffset = 0, sidebarBottomOffset = 0] = [\n '--top-offset',\n '--bottom-offset',\n '--s-left-sidebar-bottom-offset',\n ].map(cssVar => getNumberValueFromPx(style.getPropertyValue(cssVar)));\n\n return (\n
\n \n \n \n\n \n
\n );\n};\n\nexport default LeftSidebar;\n","import React from 'react';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { useLocation } from 'react-router';\nimport core, { App } from '@gin-betting/core';\n\nimport { BettingWidgets } from 'app-constants';\nimport { usePureSelector, useWidgetSettings } from 'hooks';\nimport globalMessages from 'messages';\nimport ui from 'modules/ui';\n\nimport './navigation.scss';\n\nconst {\n viewport: {\n selectors: { selectIsCompact },\n },\n} = core;\n\nconst {\n components: { ListNav },\n} = ui;\n\nconst NAVIGATION_TABS: Array<{ title: MessageDescriptor; link: string }> = [\n { title: globalMessages.csport, link: App.Routes.CLASSIC },\n { title: globalMessages.live, link: App.Routes.LIVE_LIST },\n { title: globalMessages.esport, link: App.Routes.ESPORT },\n { title: globalMessages.results, link: App.Routes.RESULTS_LIST },\n { title: globalMessages.outrights, link: App.Routes.OUTRIGHTS_LIST },\n];\n\nconst Navigation: React.FC = () => {\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n\n const { isShowExtraNavigation } = useWidgetSettings({\n widget: BettingWidgets.NAVIGATION,\n });\n\n const isCompact = usePureSelector(state => selectIsCompact(state, {}));\n\n if (!isShowExtraNavigation || isCompact) return null;\n\n const tabs = NAVIGATION_TABS.map(tab => ({\n ...tab,\n title: formatMessage(tab.title),\n isDisabled: tab.link === pathname,\n }));\n\n return (\n
\n \n
\n );\n};\n\nexport default React.memo(Navigation);\n","import { useEffect, useRef } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useLocation } from 'react-router';\nimport core from '@gin-betting/core';\nimport { difference, throttle } from 'lodash';\n\nimport gc from 'services/garbage-collector';\n\nconst {\n utils: { locateReachableMatchIds },\n} = gc;\n\nconst {\n hooks: { useDeepMemo },\n entities: {\n actions: { getOddsStatistic },\n },\n} = core;\n\nconst throttledLocateReachableMatchIds = throttle(locateReachableMatchIds, 300);\n\nconst useOddsStatisticFetcher = (): void => {\n const dispatch = useDispatch();\n const cache = useRef([]);\n\n // NOTE: Don't remove 'useLocation'! Location is used inside 'locateReachableMatchIds' util!\n const { pathname } = useLocation();\n\n useEffect(() => {\n // NOTE: Clear \"cache\" because GC clear \"oddsStatistic\" and \"oddsStatisticMarkets\".\n cache.current = [];\n }, [pathname]);\n\n const reachableMatchIds = useSelector(throttledLocateReachableMatchIds);\n\n const sportEventIds = difference(reachableMatchIds, cache.current);\n const memSportEventIds = useDeepMemo(sportEventIds);\n\n useEffect(() => {\n if (memSportEventIds.length === 0) return;\n\n dispatch(getOddsStatistic(memSportEventIds));\n\n cache.current = cache.current.concat(memSportEventIds);\n }, [dispatch, memSportEventIds]);\n};\n\nexport default useOddsStatisticFetcher;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\n\nimport ui from 'modules/ui';\nimport type { State } from 'types';\nimport useOddsStatisticFetcher from './useOddsStatisticFetcher';\n\nconst {\n selectors: { selectOddsStatisticView },\n} = ui;\n\nconst Fetcher: React.FC = () => {\n useOddsStatisticFetcher();\n\n return null;\n};\n\nconst OddsStatisticFetcher: React.FC = () => {\n const isOddStatisticsEnabled = useSelector(\n (state: State) => selectOddsStatisticView(state).show\n );\n\n return isOddStatisticsEnabled ? : null;\n};\n\nexport default OddsStatisticFetcher;\n","import React from 'react';\nimport loadable from '@loadable/component';\n\nimport type CMSModuleDefault from './index';\n\nexport const loadCMSModule = /* #__LOADABLE__ */ (): Promise<{\n default: typeof CMSModuleDefault;\n}> => import(/* webpackChunkName: \"CMS-module\" */ './index');\n\nconst STUB_COMPONENT: React.FC = () => null;\n\nexport const Header = checkDEV(\n loadable(loadCMSModule, {\n resolveComponent: CMSModule =>\n CMSModule.default.navigation.components.Header,\n })\n);\n\nfunction checkDEV(el: T): T {\n const { host } = window.location;\n const isPreview = host.includes('127.0.0.1') || host.includes('localhost');\n\n return __DEV__ || isPreview ? el : (STUB_COMPONENT as any);\n}\n","import core, { App } from '@gin-betting/core';\n\nimport { LocalRouts } from 'app-constants';\n\nconst {\n utils: { isOneOfPages },\n} = core;\n\nexport const layoutChanger = (): void => {\n const layoutElement: HTMLElement | null = document.querySelector('.layout');\n\n if (layoutElement) {\n layoutElement.style.overflow = 'initial';\n layoutElement.style.minWidth = 'initial';\n }\n\n const ineptWr = document.querySelector('.content-container-wrap');\n const ineptWr1 = document.querySelector(\n '.content-container-wrap .betting__wrapper'\n );\n\n if (ineptWr) {\n ineptWr.className = '';\n }\n\n if (ineptWr1) {\n ineptWr1.className = '';\n }\n};\n\nexport const checkIsBannerCarouselPage = (): boolean =>\n isOneOfPages(\n [App.Routes.UPCOMING_LIST, App.Routes.ESPORT, App.Routes.CLASSIC],\n { exact: true }\n ) ||\n isOneOfPages([\n App.Routes.LIVE_LIST,\n App.Routes.RESULTS_LIST,\n App.Routes.PREMATCH,\n (LocalRouts.FAVORITE_UPCOMING as unknown) as App.Routes,\n (LocalRouts.FAVORITE_OUTRIGHTS as unknown) as App.Routes,\n (LocalRouts.FAVORITE_RESULTS as unknown) as App.Routes,\n ]);\n","import { useContext, useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport banners, { BannerTypes } from '@gin-betting/banners';\nimport core, { App, GQL } from '@gin-betting/core';\nimport { createStructuredSelector } from 'reselect';\n\nimport { CLASS_NAME_UPDATE_COLORS } from 'app-constants';\nimport {\n useCssClassToggleOnDocument,\n useMount,\n usePrevious,\n useWithLocation,\n} from 'hooks';\nimport {\n BettingReadyIndicatorContext,\n initBettingReadyIndicator,\n} from 'modules/betting-ready-indicator';\nimport { AsyncMatch } from 'modules/match/async';\nimport promo from 'modules/promo';\nimport features from 'services/feature-manager';\nimport type { State } from 'types';\nimport { checkIfNewsPage } from 'utils';\nimport { checkIsBannerCarouselPage, layoutChanger } from './utils';\n\nconst {\n entities: {\n actions: { getSports, getMarketTemplates },\n },\n viewport: {\n selectors: { makeViewportSelector, selectIsCompact },\n },\n utils: { getBettingOptions, checkOnRoute, getSportTypeFromLocation },\n constants: { isMobile },\n} = core;\n\nconst {\n selectors: { selectAreSportsAvailable },\n} = promo;\n\nconst {\n actions: { getAvailableBannerZones },\n} = banners;\n\ninterface Output {\n areSportsAvailable: ReturnType;\n isAuthorized: boolean;\n isNewsPage: boolean;\n isBannersCarouselVisible: boolean;\n isOutrightsPage: boolean;\n sportType: App.SportType;\n shouldRenderTopMatches: boolean;\n}\nconst cachedSportTypes = [];\n\nconst useApp = (): Output => {\n const dispatch = useDispatch();\n const readyIndicator = useContext(BettingReadyIndicatorContext);\n const {\n lessThanOrEqual,\n areSportsAvailable,\n isCompact,\n } = useSelector((state: State) => selectProps(state, {}));\n const { isAuthorized } = getBettingOptions();\n const isNewsPage = checkIfNewsPage();\n const {\n sportType,\n isBannersCarouselVisible,\n isOutrightsPage,\n location,\n isMainPage,\n } = useWithLocation(currLocation => ({\n sportType: getSportTypeFromLocation(),\n isBannersCarouselVisible:\n lessThanOrEqual.small && checkIsBannerCarouselPage(),\n isMainPage:\n getBettingOptions().url.pagePath === '' &&\n checkOnRoute(App.Routes.UPCOMING_LIST, { exact: true }),\n isOutrightsPage:\n checkOnRoute(App.Routes.OUTRIGHTS_LIST) &&\n currLocation.search === '',\n location: currLocation,\n }));\n\n const isUpdateColors = features.isActive(features.list.AppUpdateColors);\n\n useCssClassToggleOnDocument(CLASS_NAME_UPDATE_COLORS, isUpdateColors);\n\n useMount(() => {\n layoutChanger();\n });\n\n const previousLocation = usePrevious(location);\n\n useEffect(() => {\n window.__app.previousLocation = previousLocation;\n }, [previousLocation]);\n\n useMount(() => {\n const { sportIds } = getBettingOptions();\n\n dispatch(getSports({ sportIds }));\n\n initBettingReadyIndicator(readyIndicator.initIndicator);\n\n setTimeout(() => {\n AsyncMatch.preload();\n }, 5000);\n\n dispatch(\n getMarketTemplates({\n sportIds,\n marketType: GQL.MarketType.MATCH,\n })\n );\n });\n\n useEffect(() => {\n if (!cachedSportTypes.includes(sportType)) {\n cachedSportTypes.push(sportType);\n dispatch(\n getAvailableBannerZones({\n pageType: sportType,\n platform: isMobile\n ? BannerTypes.BannerZonePlatform.MOBILE\n : BannerTypes.BannerZonePlatform.DESKTOP,\n })\n );\n }\n }, [sportType, dispatch]);\n\n const shouldRenderTopMatches = isMainPage && !isCompact;\n\n return {\n areSportsAvailable,\n isAuthorized,\n isNewsPage,\n isBannersCarouselVisible,\n isOutrightsPage,\n sportType,\n shouldRenderTopMatches,\n };\n};\n\nconst selectProps = createStructuredSelector({\n lessThanOrEqual: makeViewportSelector('lessThanOrEqual'),\n areSportsAvailable: selectAreSportsAvailable,\n isCompact: selectIsCompact,\n});\n\nexport default useApp;\n","import React from 'react';\nimport { BannerZoneLocation } from '@gin-betting/constants';\nimport core from '@gin-betting/core';\n\nimport { BettingWidgets } from 'app-constants';\nimport { Helper, Portal, Widget } from 'components';\nimport { withErrorBoundary } from 'hoc';\nimport {\n AsyncBetslipListSubscription,\n AsyncRestoreBetslipFromURL,\n AsyncRestrictions,\n AsyncSynchronizeBetslipState,\n} from 'modules/betslip/async';\nimport { AsyncRequestFreebet } from 'modules/freebet/async';\nimport { MarketsTabConfigsCtx } from 'modules/match/async';\nimport matchList from 'modules/match-list';\nimport { AsyncOutrightsBanners } from 'modules/outright/async';\nimport promo from 'modules/promo';\nimport ui from 'modules/ui';\nimport GoogleAnalytics from 'services/analytics';\nimport {\n BetslipSidebarWrapper,\n HeaderMobile,\n LeftSidebar,\n Navigation,\n OddsStatisticFetcher,\n} from 'views';\nimport { Header as CMSHeader } from '../cms-mock/async';\nimport useApp from './useApp';\n\nimport './app.scss';\n\nconst {\n hooks: { useSubscription },\n async: {\n constants: { SubscribeOrigin },\n },\n} = core;\n\nconst {\n components: { BannersCarousel, TopMatchList },\n} = promo;\n\nconst {\n components: { SettingsMenu },\n} = ui;\n\nconst {\n components: { MatchListNavigation },\n} = matchList;\n\nconst UserBetSubscription = () => {\n useSubscription({\n variables: {},\n config: {\n batch: false,\n origin: SubscribeOrigin.AppOrigin,\n method: 'onUpdateBet',\n },\n });\n\n return null;\n};\n\nconst App: React.FC = ({ children }) => {\n const {\n areSportsAvailable,\n isAuthorized,\n isNewsPage,\n isBannersCarouselVisible,\n isOutrightsPage,\n sportType,\n shouldRenderTopMatches,\n } = useApp();\n\n if (isNewsPage)\n return (\n
\n
{children}
\n
\n );\n\n return (\n \n \n {isAuthorized && }\n \n \n \n {isAuthorized && }\n \n\n \n \n \n \n \n \n\n \n\n
\n \n \n \n \n\n
\n \n\n {isOutrightsPage && (\n \n )}\n\n {isBannersCarouselVisible && areSportsAvailable && (\n \n )}\n\n {shouldRenderTopMatches && (\n \n )}\n\n \n {children}\n \n
\n \n \n \n
\n
\n );\n};\n\nexport default withErrorBoundary(App);\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Redirect, Switch } from 'react-router-dom';\nimport core, { App, GQL } from '@gin-betting/core';\n\nimport { ACTIVE_MARKET_STATUSES } from 'app-constants';\nimport { State } from 'types';\nimport { getRouteBySportType } from 'utils';\n\nconst {\n entities: {\n selectors: { selectSportBySlug },\n actions: { getMatchBySlug, getTournamentBySlug },\n },\n utils: { getSportTypeBySport, checkOnRoute },\n} = core;\n\ninterface Input {\n slug: string;\n path: string;\n}\n\nconst EntityIdRouteResolver: React.FC = ({ slug, path }) => {\n const dispatch = useDispatch();\n const sport = useSelector((state: State) =>\n selectSportBySlug(state, { slug })\n );\n\n useEffect(() => {\n if (\n checkOnRoute(App.Routes.MATCH) ||\n checkOnRoute(App.Routes.OUTRIGHT) ||\n checkOnRoute(App.Routes.RESULT_MATCH)\n ) {\n dispatch(\n getMatchBySlug({\n slug,\n marketStatuses: getMarketStatus(),\n })\n );\n }\n\n if (checkOnRoute(App.Routes.TOURNAMENT)) {\n dispatch(\n getTournamentBySlug({\n slug,\n })\n );\n }\n }, [dispatch, slug]);\n\n const sportType = getSportTypeBySport(sport);\n const route = getRouteBySportType(sportType);\n\n if (!sportType) return null;\n\n // NOTE: Colon symbol should be encoded so \"path-to-regex\" can handle it\n // https://github.com/ReactTraining/react-router/pull/6691#issuecomment-480460231\n const pathname = `${route}${path}${slug.replace(':', '\\\\:')}`;\n\n return (\n \n \n \n );\n};\n\nfunction getMarketStatus(): GQL.MarketStatus[] {\n return checkOnRoute(App.Routes.RESULT_MATCH)\n ? [GQL.MarketStatus.RESULTED]\n : ACTIVE_MARKET_STATUSES;\n}\n\nexport default EntityIdRouteResolver;\n","import React from 'react';\nimport {\n Redirect,\n Route,\n RouteComponentProps,\n Router,\n Switch,\n} from 'react-router-dom';\nimport core, { App as AppTypes } from '@gin-betting/core';\n\nimport { ExtendedRouts } from 'app-constants';\nimport { ScrollToTop } from 'components';\nimport { AsyncMatchWithErrorBoundary } from 'modules/match/async';\nimport promoModule from 'modules/promo';\nimport tournamentModule from 'modules/tournament';\nimport FavoriteList from 'views/FavoriteList';\nimport Live from 'views/Live';\nimport Outright from 'views/Outright';\nimport Outrights from 'views/Outrights';\nimport Prematch from 'views/Prematch';\nimport Results from 'views/Results';\nimport Upcoming from 'views/Upcoming';\nimport App from '../root/App';\nimport EntityIdResolver from './EntityIdResolver';\nimport EntityIdRouteResolver from './EntityIdRouteResolver';\n\nconst {\n services: { getHistory },\n} = core;\nconst {\n components: { TournamentComponent },\n} = tournamentModule;\nconst {\n components: { FeaturedTournamentPage },\n} = promoModule;\n\nfunction applyBrowserLocationBlocker(history: ReturnType) {\n let currentLocation: string | null = null;\n\n history.block((location, action) => {\n const nextLocation =\n location.pathname + location.search + location.hash;\n\n if (action === 'PUSH') {\n if (currentLocation === nextLocation) {\n return false;\n }\n }\n\n currentLocation = nextLocation;\n });\n}\n\nconst InnerRouts: React.FC = ({\n match: { path },\n}): JSX.Element => {\n return (\n \n \n \n \n \n \n (\n \n {sportEventId => (\n \n )}\n \n )}\n />\n (\n \n )}\n />\n (\n \n )}\n />\n (\n \n {tournamentId => (\n \n )}\n \n )}\n />\n \n \n \n );\n};\n\nexport default function createRoutes(): JSX.Element {\n const history = getHistory();\n applyBrowserLocationBlocker(history);\n\n return (\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}\n","import React, { useEffect, useRef } from 'react';\nimport { useDispatch } from 'react-redux';\nimport core from '@gin-betting/core';\nimport responsiveComponents from '@gin-betting/responsive-components';\nimport cn from 'classnames';\nimport { throttle } from 'lodash';\n\nimport { BreakpointSettings } from 'types';\n\nimport './rootResponse.scss';\n\ninterface Props {\n customBreakpoints?: BreakpointSettings;\n}\n\nconst { useResponsiveContainer } = responsiveComponents;\nconst {\n viewport: {\n actions: { calculateResponsiveState },\n },\n} = core;\n\n// breakpoints should be equal $mq-breakpoints!\nconst breakpoints = {\n ['superExtraSmall']: 360,\n ['extraSmall']: 480,\n ['mediumExtraSmall']: 620,\n ['untilSmall']: 767,\n ['small']: 768,\n ['fromSmall']: 769,\n ['medium']: 1097,\n ['large']: 1348,\n ['great']: 1560,\n ['extralarge']: 1920,\n ['stream-XXS']: 900,\n ['stream-XS']: 1000,\n ['stream-S']: 1097,\n ['stream-M']: 1177,\n ['stream-L']: 1275,\n ['stream-XL']: 1348,\n ['stream-XXL']: 1495,\n ['stream-XXXL']: 1655,\n ['stream-XXXXL']: 1783,\n ['pinned-stream-S']: 1100,\n ['pinned-stream-M']: 1200,\n ['pinned-stream-L']: 1400,\n ['pinned-stream-XL']: 1600,\n};\n\nconst RootResponse: React.FC = ({ children, customBreakpoints }) => {\n const dispatch = useDispatch();\n\n const {\n containerRef,\n currentBreakpoints,\n currentWidth,\n } = useResponsiveContainer({\n breakpoints: { ...breakpoints, ...customBreakpoints },\n });\n\n const throttled = useRef(\n throttle((innerWidth: number | null) => {\n if (!innerWidth) return;\n\n dispatch(calculateResponsiveState({ innerWidth }));\n }, 300)\n );\n\n useEffect(() => {\n throttled.current(currentWidth);\n }, [currentWidth]);\n\n return (\n \n {children}\n \n );\n};\n\nexport default RootResponse;\n","import React from 'react';\n\nimport { usePlatform } from 'hooks';\n\nconst Platform: React.FC = () => {\n usePlatform();\n\n return null;\n};\n\nexport default Platform;\n","import React from 'react';\nimport { hot } from 'react-hot-loader/root';\nimport { IntlProvider } from 'react-intl';\nimport { Provider } from 'react-redux';\nimport BettingReadyIndicatorProvider from '@gin-betting/components/ready-indicator';\nimport core from '@gin-betting/core';\nimport { registerLocale } from 'i18n-iso-countries';\nimport PropTypes from 'prop-types';\nimport { Store } from 'redux';\n\nimport { DEFAULT_BREAKPOINTS } from 'app-constants';\nimport { BettingReadyIndicatorContext } from 'modules/betting-ready-indicator';\nimport configureStore from 'services/configureStore';\nimport localeManager from 'services/locale-manager';\nimport UserDevice from 'services/user-device';\nimport { BreakpointSettings, State } from 'types';\nimport RootResponse from '../RootResponse';\nimport Platform from './Platform';\n\nconst {\n viewport: { makeViewportReducer },\n services: { reducerRegistry },\n utils: { getBettingOptions },\n} = core;\n\n// TODO: remove deprecated context API after \"extendHoc\" stop relying on it\nconst storeShape = PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired,\n});\n\ninterface Props {\n breakpoints?: BreakpointSettings;\n}\n\ntype ChildrenAsFn = (...args: any[]) => React.ReactNode;\n\nclass Root extends React.Component {\n private store: Store;\n\n static childContextTypes = {\n store: storeShape,\n };\n\n constructor(props: Props) {\n super(props);\n\n const breakpoints = {\n ...DEFAULT_BREAKPOINTS,\n ...props.breakpoints,\n };\n\n const mockDevice = UserDevice.getInstance()?.isDeviceMobile()\n ? UserDevice.mockMobileDevice\n : UserDevice.mockDesktopDevice;\n\n reducerRegistry.register(\n 'viewport',\n makeViewportReducer(\n breakpoints,\n document.body.offsetWidth || parseFloat(mockDevice.width),\n mockDevice\n )\n );\n\n const { i18nCountries } = localeManager.extensions;\n\n if (i18nCountries) {\n registerLocale(i18nCountries);\n }\n\n this.store = configureStore();\n }\n\n getChildContext() {\n return { store: this.store };\n }\n\n render() {\n const { locale } = getBettingOptions();\n const reactIntlLocale = localeManager.convert(locale, {\n from: 'cms',\n to: 'reactIntl',\n });\n const { messages } = localeManager.extensions;\n\n const { breakpoints } = this.props;\n const config = {\n store: this.store,\n };\n\n const children =\n typeof this.props.children === 'function'\n ? (this.props.children as ChildrenAsFn)(config)\n : this.props.children;\n\n return (\n \n \n \n \n \n {React.Children.only(children)}\n \n \n \n \n );\n }\n}\n\nexport default hot(Root);\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport core, { App } from '@gin-betting/core';\nimport cssVars from 'css-vars-ponyfill';\nimport {\n forEach,\n isArray,\n isEmpty,\n isObjectLike,\n omit,\n reduce,\n transform,\n values,\n} from 'lodash';\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\n\nimport {\n BettingSettingsKeys,\n BettingWidgets,\n classicIds,\n DARK_THEME,\n DEFAULT_BETTING_SETTINGS,\n DEFAULT_WIDGET_OPTIONS,\n Destination,\n DISABLE_PARTICIPANT_FEATURES_LOCALSTORAGE_KEY,\n esportIds,\n EventType,\n PublicRoutes,\n ROOT_CSS_SCORE,\n ROOT_STYLE_ID_ELEMENT,\n SlugPublicRoutes,\n} from 'app-constants';\nimport {\n DEFAULT_FONT_MAPPING_BY_SUFFIX,\n DEFAULT_POSITION_PROPS,\n IBettingPalette,\n IBettingPinnedStreamPosition,\n IBettingSpacing,\n} from 'styles';\nimport type {\n BettingSettingsOptions,\n BettingWidgetSettings,\n BettingWidgetsOptions,\n BreakpointSettings,\n EventPayloadsByType,\n IBettingAPI,\n IBettingEvents,\n SearchObj,\n} from 'types';\nimport {\n checkValueInObj,\n checkWidgetContainerProvided,\n getPaletteCssVariables,\n getPinnedStreamPositionCssVariables,\n getSpacingCssVariables,\n} from 'utils';\nimport adaptBettingOptions from 'utils/adaptBettingOptions';\nimport createRoutes from '../services/createRoutes';\nimport featureManager from '../services/feature-manager';\nimport { BettingConfigCtx } from './bettingConfigCtx';\nimport Root from './Root';\n\nconst {\n utils: { getBettingOptions, isInnerPage },\n services: { getHistory, BettingAPI: BettingAPICore, stringify },\n constants: { SportType },\n} = core;\n\ninterface BettingCssVariablesMap {\n palette: ReturnType;\n spacing: CssVariables;\n pinnedStreamPosition: CssVariables;\n}\n\nclass BettingAPI\n extends BettingAPICore\n implements IBettingAPI {\n private pathname: string = getHistory().location.pathname;\n private widgets$: BettingWidgetSettings = new BehaviorSubject(\n DEFAULT_WIDGET_OPTIONS\n );\n\n public breakpoints: BreakpointSettings;\n private cssVariablesMap: Partial = {};\n\n bettingEvents$: IBettingEvents = this.bettingEvents$;\n\n constructor() {\n super({\n bettingSettings$: new BehaviorSubject(DEFAULT_BETTING_SETTINGS),\n requiredCallbacks: ['getBanners'],\n fonts: DEFAULT_FONT_MAPPING_BY_SUFFIX,\n });\n this.setupPalette({});\n this.setupSpacing({});\n\n this.cssVariablesMap.pinnedStreamPosition = DEFAULT_POSITION_PROPS;\n\n window.__app.version = __VERSION__;\n window.__app.initialTitle = document.title;\n\n const {\n url: { staticEndpoint },\n } = getBettingOptions();\n\n if (!__DEV__ && staticEndpoint) {\n __webpack_public_path__ = `${staticEndpoint}/`;\n }\n }\n\n setupPalette(palette: Partial): void {\n this.cssVariablesMap.palette = getPaletteCssVariables(palette);\n\n if (this.isInitialized) this.insertCssVariables();\n }\n\n setupSpacing(spacing: Partial): void {\n this.cssVariablesMap.spacing = getSpacingCssVariables(spacing);\n\n if (this.isInitialized) this.insertCssVariables();\n\n if (typeof spacing.topOffset !== 'undefined') {\n this.setupWidget(BettingWidgets.CATEGORIZER, {});\n }\n }\n\n setupPinnedStreamPosition(\n positionVars: Required\n ): void {\n this.cssVariablesMap.pinnedStreamPosition = getPinnedStreamPositionCssVariables(\n positionVars\n );\n\n if (this.isInitialized) this.insertCssVariables();\n }\n\n setupBreakpoints(breakpoints: BreakpointSettings): void {\n const validationError = validateCustomBreakpoints(breakpoints);\n\n if (validationError) {\n console.error(validationError);\n\n return;\n }\n\n this.breakpoints = breakpoints;\n }\n\n setupWidget(\n widget: T,\n options: BettingWidgetsOptions[T]\n ): void {\n const validationError = validateSetupWidget(widget, options);\n\n if (validationError) {\n console.error(validationError);\n\n return;\n }\n\n const widgets = this.widgets$.getValue();\n this.widgets$.next({\n ...widgets,\n [widget]: {\n ...DEFAULT_WIDGET_OPTIONS[widget],\n ...widgets[widget],\n ...options,\n },\n });\n }\n\n updateBettingOptions = (pathname: string): void => {\n const {\n url: { pagePath },\n } = getBettingOptions();\n\n const isBettingPage = pagePath === '';\n\n if (!isBettingPage) return;\n\n const { destination, sportIds } = getRedirectPayloadByPathname(\n pathname\n );\n\n // @ts-ignore bettingOptions is exist on window but we can't show it outside. We extend bettingOptions by renamed name props.\n window.bettingOptions = adaptBettingOptions({\n ...getBettingOptions(),\n selectedSportIds: sportIds,\n });\n\n this.bettingEvents$.dispatch(EventType.Redirect, {\n destination,\n link: '',\n });\n\n if (__DEV__) {\n try {\n localStorage.setItem(\n 'bettingOptions',\n JSON.stringify({\n ...omit(\n JSON.parse(\n localStorage.getItem('bettingOptions') || '{}'\n ),\n ['selectedSportIds', 'sportIds']\n ),\n })\n );\n } catch (e) {\n console.error(e);\n }\n }\n };\n\n setupFeatures(): void {\n const { features, participantFeatures } = getBettingOptions();\n\n if (!features) return;\n\n // NOTE: SSR realted; serializable \"features\" object is passed via network request\n if (typeof features !== 'function') {\n featureManager.setFeatures(features);\n } else {\n featureManager.setFeatures(window.bettingLoader.__getFeatures);\n }\n\n const transformedParticipantFeatures = transform(\n participantFeatures,\n (acc, { feature_name, feature_variant }) => {\n acc[feature_name] = feature_variant;\n },\n {} as { [key: string]: string }\n );\n\n if (\n !localStorage.getItem(DISABLE_PARTICIPANT_FEATURES_LOCALSTORAGE_KEY)\n ) {\n featureManager.setFeatures(transformedParticipantFeatures);\n }\n }\n\n init(): void {\n super.init();\n\n this.insertCssVariables();\n this.setupFeatures();\n\n const initPathname = getHistory().location.pathname;\n\n // TODO: fix for outright page\n if (\n initPathname.includes(App.Routes.OUTRIGHT) ||\n initPathname.includes(App.Routes.OUTRIGHTS_LIST)\n ) {\n this.updateBettingOptions(initPathname);\n }\n\n getHistory().listen(({ pathname }) => {\n if (pathname === this.pathname) return;\n\n this.pathname = pathname;\n\n // TODO: fix for outright page\n if (isInnerPage() && !pathname.includes(App.Routes.OUTRIGHT))\n return;\n\n this.updateBettingOptions(pathname);\n });\n }\n\n renderDOM = (rootEl: HTMLElement): void => {\n ReactDOM.render(\n \n \n {createRoutes}\n \n ,\n rootEl,\n () => {\n measurePageTimings();\n }\n );\n };\n\n private insertCssVariables() {\n const { palette, ...restVars } = this.cssVariablesMap;\n const [cssPalletInString, cssInString] = [\n { palette },\n restVars,\n ].map(varsMap =>\n reduce(\n varsMap,\n (acc, vars) =>\n vars ? acc + convertCssVariablesToString(vars) : acc,\n ''\n )\n ) as Tuple;\n\n const rootStyleHTMLElement = BettingAPI.getRootHTMLStyleElement();\n rootStyleHTMLElement.innerHTML = `${ROOT_CSS_SCORE} {${cssInString}${cssPalletInString}}`;\n document.head.appendChild(rootStyleHTMLElement);\n\n cssVars();\n }\n\n private static getRootHTMLStyleElement(): HTMLStyleElement {\n const existed = document.getElementById(ROOT_STYLE_ID_ELEMENT);\n\n if (existed?.tagName === 'STYLE') return existed as HTMLStyleElement;\n\n const rootHTMLStyleElement = document.createElement('style');\n rootHTMLStyleElement.id = ROOT_STYLE_ID_ELEMENT;\n\n return rootHTMLStyleElement;\n }\n\n public enableAnalytics = (isEnableAnalytics: boolean): void => {\n this.setBettingSetting(\n BettingSettingsKeys.IS_ENABLE_ANALYTICS,\n isEnableAnalytics\n );\n };\n\n /**\n * @deprecated\n */\n public selectTheme = (): void => {\n this.setBettingSetting(BettingSettingsKeys.THEMES, DARK_THEME);\n console.warn(\n '\"selectTheme\" method is deprecated because \"light\" theme is obsoleted'\n );\n };\n\n public changeRoute = (path: string, query?: SearchObj): void => {\n if (!path) return;\n\n if (\n PublicRoutes.includes(path) ||\n SlugPublicRoutes.some(url => path.startsWith(url))\n ) {\n const history = getHistory();\n\n history.push({\n ...history.location,\n pathname: path,\n hash: window.location.hash,\n search: query ? stringify(query) : '',\n });\n } else {\n console.warn(\n 'Invalid route!\\n' +\n ' Please consider using one of the public routes instead.\\n' +\n ' Note: routes that ends with slash require correct \"slug\" to be postfixed by!'\n );\n console.table(\n PublicRoutes.map((r, i) => ({\n ['General routes']: r,\n ['Slug routes']: SlugPublicRoutes[i] || '',\n }))\n );\n }\n };\n}\n\nfunction MainRoot({\n rootEl,\n children,\n}: {\n rootEl: HTMLElement;\n children: JSX.Element;\n}) {\n return rootEl.tagName === 'MAIN' ? children :
{children}
;\n}\n\nfunction convertCssVariablesToString(\n vars: CssVariables | ReturnType\n): string {\n return reduce(vars, (acc, value, prop) => `${acc}${prop}: ${value};`, '');\n}\n\nfunction measurePageTimings(delay: number = 1000): void {\n if (!window.__app || !window.__app.timings) return;\n\n setTimeout(() => {\n const times = window.timing.getTimes();\n const timeParams = [\n 'firstPaintTime',\n 'appcacheTime',\n 'connectTime',\n 'domReadyTime',\n 'initDomTreeTime',\n 'loadEventTime',\n 'loadTime',\n 'requestTime',\n 'redirectTime',\n ];\n\n timeParams.forEach(param => {\n window.__app.timings[param] = times[param];\n });\n }, delay);\n}\n\nfunction validateCustomBreakpoints(\n breakpoints: BreakpointSettings\n): Error | undefined {\n const keyForValidation: Array = ['medium'];\n\n if (typeof breakpoints !== 'object') {\n return new Error(\n `Invalid argument. \"Breakpoints\" argument should be an object`\n );\n }\n\n const errors: string[] = [];\n\n forEach(breakpoints, (value, key) => {\n if (\n !keyForValidation.includes(key as keyof BreakpointSettings) ||\n typeof value !== 'number'\n )\n errors.push(`Invalid argument \"${key}\"`);\n });\n\n if (errors.length > 0) {\n return new Error(`\\n${errors.join('\\n')}`);\n }\n}\n\nfunction validateSetupWidget(\n widget: T,\n options: BettingWidgetsOptions[T]\n): Error | undefined {\n if (!DEFAULT_WIDGET_OPTIONS[widget]) {\n return new Error(`Not supported widget \"${widget}\"`);\n }\n\n if (\n checkWidgetContainerProvided(options) &&\n options.containerElementId !== null &&\n typeof options.containerElementId !== 'string'\n ) {\n return new Error('Invalid argument \"containerElementId\"');\n }\n\n if (widget === BettingWidgets.BETSLIP_SIDEBAR) {\n return validateBetslipSidebarWidgetOptions(\n options as BettingWidgetsOptions[BettingWidgets.BETSLIP_SIDEBAR]\n );\n }\n\n if (widget === BettingWidgets.STREAM) {\n return validateStreamWidgetOptions(\n options as BettingWidgetsOptions[BettingWidgets.STREAM]\n );\n }\n\n if (widget === BettingWidgets.CATEGORIZER) {\n return validateCategorizerWidgetOptions(\n options as BettingWidgetsOptions[BettingWidgets.CATEGORIZER]\n );\n }\n}\n\nfunction validateBetslipSidebarWidgetOptions(\n options: BettingWidgetsOptions[BettingWidgets.BETSLIP_SIDEBAR]\n): Error | undefined {\n if (\n options.canToggle !== undefined &&\n typeof options.canToggle !== 'boolean'\n ) {\n return new Error('Invalid argument \"canToggle\"');\n }\n\n if (options.isOpen !== undefined && typeof options.isOpen !== 'boolean') {\n return new Error('Invalid argument \"isOpen\"');\n }\n}\n\nfunction validateStreamWidgetOptions({\n scrollToFirstStream,\n disableMatchTracker,\n disableTheaterMode,\n pinMinimizedStreamOutOfView,\n}: BettingWidgetsOptions[BettingWidgets.STREAM]): Error | undefined {\n if (\n scrollToFirstStream !== undefined &&\n typeof scrollToFirstStream !== 'boolean'\n ) {\n return new Error('Invalid argument \"scrollToFirstStream\"');\n }\n\n if (\n disableMatchTracker !== undefined &&\n typeof disableMatchTracker !== 'boolean' &&\n !Array.isArray(disableMatchTracker)\n ) {\n return new Error('Invalid argument \"disableMatchTracker\"');\n }\n\n if (\n disableTheaterMode !== undefined &&\n typeof disableTheaterMode !== 'boolean'\n ) {\n return new Error('Invalid argument \"disableTheaterMode\"');\n }\n\n if (\n pinMinimizedStreamOutOfView !== undefined &&\n typeof pinMinimizedStreamOutOfView !== 'boolean'\n ) {\n return new Error('Invalid argument \"pinMinimizedStreamOutOfView\"');\n }\n}\n\nfunction validateCategorizerWidgetOptions({\n sportsOrder,\n}: BettingWidgetsOptions[BettingWidgets.CATEGORIZER]): Error | undefined {\n const CATEGORIZER_ERROR_LABEL = 'CATEGORIZER WIDGET SETUP' as const;\n\n if (\n sportsOrder !== undefined &&\n (isArray(sportsOrder) ||\n !isObjectLike(sportsOrder) ||\n isEmpty(sportsOrder))\n ) {\n return new Error(\n `${CATEGORIZER_ERROR_LABEL}\\n\\nInvalid argument 'sportsOrder'. 'sportsOrder' should be a object with fields.\\n`\n );\n }\n\n const { invalidSportsOrderKeys, invalidSportsOrderValues } = reduce(\n sportsOrder,\n (\n acc: {\n invalidSportsOrderKeys: string[];\n invalidSportsOrderValues: string[];\n },\n value,\n sportType\n ) => {\n if (!checkValueInObj(SportType, sportType)) {\n acc.invalidSportsOrderKeys.push(sportType);\n }\n\n if (!isArray(value)) {\n acc.invalidSportsOrderValues.push(sportType);\n }\n\n return acc;\n },\n { invalidSportsOrderKeys: [], invalidSportsOrderValues: [] }\n );\n\n let errorMsg = '';\n\n if (invalidSportsOrderKeys.length) {\n errorMsg = `Fields: '${invalidSportsOrderKeys.join(\n \"', '\"\n )}' can't be used in 'sportsOrder'. Use only '${values(SportType).join(\n \"', '\"\n )}'.`;\n }\n\n if (invalidSportsOrderValues.length) {\n errorMsg = `${errorMsg}\\nFields: '${invalidSportsOrderValues.join(\n \"', '\"\n )}' have invalid values. Use only 'Array' as a value.`;\n }\n\n if (errorMsg) {\n return new Error(`${CATEGORIZER_ERROR_LABEL}\\n\\n${errorMsg}\\n`);\n }\n}\n\nfunction getRedirectPayloadByPathname(\n pathname: string\n): {\n destination: Destination;\n sportIds: string[];\n} {\n switch (true) {\n case pathname.includes(App.Routes.OUTRIGHTS_LIST):\n case pathname.includes(App.Routes.OUTRIGHT): {\n return {\n destination: Destination.Outright,\n sportIds: [...classicIds, ...esportIds],\n };\n }\n\n case pathname.includes(App.Routes.CLASSIC): {\n return {\n destination: Destination.Sport,\n sportIds: classicIds,\n };\n }\n\n case pathname.includes(App.Routes.ESPORT): {\n return {\n destination: Destination.Esport,\n sportIds: esportIds,\n };\n }\n\n case pathname === App.Routes.LIVE_LIST: {\n return {\n destination: Destination.Live,\n sportIds: [...classicIds, ...esportIds],\n };\n }\n\n case pathname.includes(App.Routes.RESULTS_LIST): {\n return {\n destination: Destination.Results,\n sportIds: [...classicIds, ...esportIds],\n };\n }\n\n default: {\n return {\n destination: Destination.MixSports,\n sportIds: [...classicIds, ...esportIds],\n };\n }\n }\n}\n\nexport default BettingAPI;\n","import type { IBettingAPI } from 'types';\nimport BettingAPI from '../root/BettingAPI';\n\nlet bettingAPI: IBettingAPI | null = null;\n\nexport default function getBettingAPI(): IBettingAPI {\n if (bettingAPI) return bettingAPI;\n\n bettingAPI = new BettingAPI();\n\n return bettingAPI;\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"sportEventRow__container___2gQB0\",\"header\":\"sportEventRow__header___1vVf1\",\"body\":\"sportEventRow__body___3Ywcg\",\"footer\":\"sportEventRow__footer___3SxXr\",\"has-header\":\"sportEventRow__has-header___1Ggkx\",\"line\":\"sportEventRow__line___3ESdj\",\"player\":\"sportEventRow__player___3dJqJ\",\"is-stream-open\":\"sportEventRow__is-stream-open___3wU3W\",\"fadeIn\":\"sportEventRow__fadeIn___3kXPP\",\"has-valid-stream\":\"sportEventRow__has-valid-stream___36qdC\",\"hasHeader\":\"sportEventRow__hasHeader___3SgrQ\",\"is-one-market-view\":\"sportEventRow__is-one-market-view___2izdS\",\"teamsTitle\":\"sportEventRow__teamsTitle___2afmq\",\"markets\":\"sportEventRow__markets___DyCKh\",\"stream\":\"sportEventRow__stream___3mjVG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"teamsTitleColumn__container___Iou-E\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"debugInfo__container___1Z-_b\",\"is-inline-block\":\"debugInfo__is-inline-block___1LPE3\",\"is-relative\":\"debugInfo__is-relative___3iqPQ\",\"text\":\"debugInfo__text___2oXK8\",\"copied\":\"debugInfo__copied___zmy63\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"oddsStatisticSelectMobile__container___La5r-\",\"toggler\":\"oddsStatisticSelectMobile__toggler___2X8IY\",\"toggler-text\":\"oddsStatisticSelectMobile__toggler-text___BdyCk\",\"icon\":\"oddsStatisticSelectMobile__icon___2ct2l\",\"is-selected\":\"oddsStatisticSelectMobile__is-selected___1V2sN\",\"list\":\"oddsStatisticSelectMobile__list___1za8v\",\"option-title\":\"oddsStatisticSelectMobile__option-title___2QYbj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dropdown\":\"oddsStatisticSelect__dropdown___2SFZq\",\"options\":\"oddsStatisticSelect__options___2qHL1\",\"toggler\":\"oddsStatisticSelect__toggler___1dWt1\",\"toggler-text\":\"oddsStatisticSelect__toggler-text___3VvqO\",\"option\":\"oddsStatisticSelect__option___3IeiE\",\"is-selected\":\"oddsStatisticSelect__is-selected___2tbjH\",\"list\":\"oddsStatisticSelect__list___2OsKt\",\"icon\":\"oddsStatisticSelect__icon___kD_3Y\"};","import React from 'react';\n\nimport { useMatchTime } from 'hooks';\n\nimport './matchTime.scss';\n\ninterface Props {\n matchId: string;\n}\n\nconst MatchTime: React.FC = ({ matchId }) => {\n const { currentMatchPart, matchTimeToShow } = useMatchTime({\n matchId,\n });\n\n if (!matchTimeToShow && !currentMatchPart) return null;\n\n return (\n
\n {currentMatchPart && (\n \n {currentMatchPart} \n \n )}\n\n {matchTimeToShow && (\n \n {matchTimeToShow}\n \n )}\n
\n );\n};\n\nexport default MatchTime;\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import loadable from '@loadable/component';\n\nimport { Modules } from '../../types';\n\nexport const loadStreamModule: () => Promise<\n Modules['stream']\n> = /* #__LOADABLE__ */ () =>\n import(/* webpackChunkName: \"stream-module\" */ './index');\n\nexport const AsyncStream = loadable(loadStreamModule, {\n resolveComponent: ({ default: stream }) => stream.components.Stream,\n});\n\nexport const AsyncPersistentStream = loadable(loadStreamModule, {\n resolveComponent: ({ default: stream }) =>\n stream.components.PersistentStream,\n});\n\nexport const AsyncStreamPlayer = loadable(loadStreamModule, {\n resolveComponent: ({ default: stream }) => stream.components.StreamPlayer,\n});\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title-wr\":\"icon__title-wr___1U8nu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"NoResults__container___2kexe\",\"message\":\"NoResults__message___1PIfD\",\"linked-message\":\"NoResults__linked-message___3Opkq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"sidebar__container___2FOFj\",\"content\":\"sidebar__content___2JoUk\"};","import core from '@gin-betting/core';\n\nimport type { ModuleLocator } from 'async-modules';\n\nconst {\n services: { moduleLocator },\n} = core;\n\nexport default moduleLocator as ModuleLocator;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"subscription-overlay\":\"sportEventInViewSubscription__subscription-overlay___12JCV\",\"subscription-debug\":\"sportEventInViewSubscription__subscription-debug___2eoyw\",\"subscription-debug-status\":\"sportEventInViewSubscription__subscription-debug-status___3AnLZ\",\"is-subscribed\":\"sportEventInViewSubscription__is-subscribed___26Q-f\"};","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport LogoResizer from '@gin-betting/components/logo-resizer';\nimport { App } from '@gin-betting/core';\nimport cn from 'classnames';\n\nimport globalMessages from 'messages';\nimport UserDevice from 'services/user-device';\nimport { ParentPath } from 'types';\nimport BackButton from '../BackButton';\nimport SmartLink from '../SmartLink';\n\nimport './eventInfo.scss';\n\ninterface Props {\n hasBackButton: boolean;\n isInverted?: boolean;\n logo: string;\n slug: string;\n name: string;\n date?: string;\n route?: ParentPath;\n description?: string;\n prizePool?: string;\n}\n\nconst EventInfo: React.FC = ({\n hasBackButton,\n prizePool,\n isInverted,\n logo,\n slug,\n date,\n name,\n route,\n description,\n}) => {\n const { formatMessage } = useIntl();\n\n const isMobile = UserDevice.getInstance()?.isDeviceMobile();\n\n return (\n
\n {hasBackButton && !isMobile && }\n\n \n \n {({ ref, url }) => (\n \n )}\n \n\n
\n {date &&

{date}

}\n\n

\n {route ? (\n \n {name}\n \n ) : (\n {name}\n )}\n

\n\n {description && !isMobile && (\n

{description}

\n )}\n
\n\n {prizePool && (\n
\n

\n {formatMessage(globalMessages.prizePool)}\n

\n

{prizePool}

\n
\n )}\n
\n {description && isMobile && (\n

{description}

\n )}\n \n );\n};\n\nexport default React.memo(EventInfo);\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"MarketDefault__container___2UIMz\",\"button\":\"MarketDefault__button___XHLqe\",\"vs\":\"MarketDefault__vs___TdLht\",\"has-three-odds\":\"MarketDefault__has-three-odds___2z_gC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"segmentTab__container___2sHHT\",\"is-active\":\"segmentTab__is-active___2owsh\",\"is-disabled\":\"segmentTab__is-disabled___3GwcJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"sportEventBg__container___3IUoh\",\"image\":\"sportEventBg__image___22n_9\"};","import { useLocation } from 'react-router';\n\nconst useWithLocation = (\n fn: (locations: ReturnType) => T\n): T => {\n const location = useLocation();\n\n return fn(location);\n};\n\nexport default useWithLocation;\n","import core from '@gin-betting/core';\n\nimport useWithLocation from './useWithLocation';\n\nconst {\n utils: { getAppliedFilters },\n} = core;\n\nconst useAppliedFilters = (): ReturnType => {\n return useWithLocation(() => getAppliedFilters());\n};\n\nexport default useAppliedFilters;\n","import core, { App } from '@gin-betting/core';\n\nimport useWithLocation from './useWithLocation';\n\nconst {\n utils: { checkOnRoute },\n} = core;\n\nconst useCheckOnRoute = (\n route: App.Routes,\n options?: { exact: boolean }\n): boolean => {\n return useWithLocation(() => checkOnRoute(route, options));\n};\n\nexport default useCheckOnRoute;\n","import { useCallback, useState } from 'react';\n\ntype ClientNode = HTMLElement | null;\n\nexport default function useClientNode(): [\n ClientNode,\n (node: ClientNode) => void\n] {\n const [node, setNode] = useState(null);\n\n const ref = useCallback((e: ClientNode) => {\n if (e !== null) setNode(e);\n }, []);\n\n return [node, ref];\n}\n","import { MutableRefObject, useEffect, useRef } from 'react';\n\nfunction usePreviousRef(value: T): MutableRefObject {\n const ref = useRef();\n\n useEffect(\n () => () => {\n ref.current = value;\n },\n [value]\n );\n\n return ref;\n}\n\nexport default usePreviousRef;\n","import { useEffect, useRef, useState } from 'react';\nimport { isNumber } from 'lodash';\n\nimport { CompareStatus } from 'app-constants';\nimport usePreviousRef from './usePreviousRef';\n\ninterface Input {\n value: number | undefined | null;\n delay?: number;\n}\n\ninterface Output {\n compareStatus: CompareStatus;\n}\n\nconst useCompare = ({ value, delay = 2200 }: Input): Output => {\n const [compareStatus, setCompareStatus] = useState(\n CompareStatus.Equal\n );\n const delayRef = useRef(delay);\n const prevValueRef = usePreviousRef(value);\n\n useEffect(() => {\n if (!prevValueRef.current || !isNumber(value)) return;\n\n const isGreater = value > prevValueRef.current;\n\n setCompareStatus(\n isGreater ? CompareStatus.Greater : CompareStatus.Smaller\n );\n }, [value, prevValueRef]);\n\n useEffect(() => {\n if (compareStatus === CompareStatus.Equal) return;\n\n const timerId = setTimeout(() => {\n setCompareStatus(CompareStatus.Equal);\n }, delayRef.current);\n\n return () => {\n clearTimeout(timerId);\n };\n }, [compareStatus]);\n\n return { compareStatus };\n};\n\nexport default useCompare;\n","import { useEffect } from 'react';\n\nconst countByClass: { [key: string]: number } = {};\n\nfunction useCssClassToggleOnDocument(cssClass: string, isActive: boolean) {\n useEffect(() => {\n if (!isActive) return;\n\n countByClass[cssClass] = (countByClass[cssClass] || 0) + 1;\n\n document.body.classList.add(cssClass);\n\n return () => {\n let counter = countByClass[cssClass] || 0;\n\n if (counter === 0) return;\n\n countByClass[cssClass] = --counter;\n\n if (counter - 1 > 0) return;\n\n document.body.classList.remove(cssClass);\n };\n }, [cssClass, isActive]);\n}\n\nexport default useCssClassToggleOnDocument;\n","import bettingEvents from '@gin-betting/betting-events';\nimport { BettingConfigCtx } from 'root/bettingConfigCtx';\n\nconst {\n hooks: { makeUseEventHandler },\n} = bettingEvents;\n\nexport default makeUseEventHandler(BettingConfigCtx);\n","import { useCallback, useState } from 'react';\n\nconst useForceUpdate = (): VoidFunction => {\n const [, setUpdate] = useState(0);\n\n return useCallback(() => setUpdate(prevValue => ++prevValue), []);\n};\n\nexport default useForceUpdate;\n","import { useMemo } from 'react';\n\nimport UserDevice from 'services/user-device';\n\nexport default function useIsMobile(): boolean {\n return !!useMemo(() => UserDevice.getInstance()?.isDeviceMobile(), []);\n}\n","import { MutableRefObject, useEffect, useRef } from 'react';\n\nexport default function useIsMountedRef(): MutableRefObject {\n const ref = useRef(true);\n\n useEffect(() => {\n ref.current = true;\n\n return () => {\n ref.current = false;\n };\n });\n\n return ref;\n}\n","import gql from 'graphql-tag';\n\nexport default gql`\n query GetBets($input: BetsInput!) {\n bets(input: $input) {\n stake\n }\n }\n`;\n","import { useCallback, useEffect, useState } from 'react';\nimport core, { API, App, GQL } from '@gin-betting/core';\n\nimport { BET_SETTLED_STATUSES, BET_UNSETTLED_STATUSES } from 'app-constants';\nimport features from 'services/feature-manager';\nimport GET_BETS from './gqlGetBets';\n\ninterface GetBetsQuery {\n bets: Array<{\n stake: string;\n }>;\n}\n\nconst {\n appServiceLocator,\n utils: { getBettingOptions },\n} = core;\nconst LAST_BET_TIMEOUT = 1.5 * 1000;\n\ninterface Output {\n isLoaded: boolean;\n lastBetSum: number | undefined;\n}\n\nconst useLastBetSum = (): Output => {\n const [output, setOutput] = useState({\n lastBetSum: undefined,\n isLoaded: false,\n });\n\n const getLastBet = useCallback(() => {\n const apiClient = appServiceLocator.get('apiClient');\n const variables: GQL.GetBetsQueryVariables = {\n input: {\n limit: 1,\n statuses: [...BET_UNSETTLED_STATUSES, ...BET_SETTLED_STATUSES],\n offset: 0,\n },\n };\n\n Promise.race([\n apiClient.makeRequestWithCustomQuery<\n GetBetsQuery,\n GQL.GetBetsQueryVariables,\n API.Action\n >({\n variables,\n query: GET_BETS as any,\n action: {\n type: 'hooks/GET_BETS',\n payload: {},\n },\n }),\n new Promise<\n API.SuccessResponse>\n >(resolve =>\n setTimeout(resolve, LAST_BET_TIMEOUT, {\n data: { bets: [] } as GQL.GetBetsQuery,\n })\n ),\n ])\n .then(\n ({\n response: {\n data: { bets },\n },\n }) => {\n const [lastBet] = bets;\n\n setOutput({\n isLoaded: true,\n lastBetSum: lastBet ? +lastBet.stake : undefined,\n });\n }\n )\n .catch(error => {\n console.error(error);\n setOutput({\n isLoaded: true,\n lastBetSum: undefined,\n });\n });\n }, []);\n\n useEffect(() => {\n const isSetLastBet = features.isActive(\n features.list.BetslipRememberLastBetSum\n );\n\n if (!isSetLastBet || !getBettingOptions().isAuthorized) {\n setOutput({ isLoaded: true, lastBetSum: undefined });\n\n return;\n }\n\n getLastBet();\n }, [getLastBet]);\n\n return output;\n};\n\nexport default useLastBetSum;\n","import { useSelector } from 'react-redux';\nimport core from '@gin-betting/core';\nimport { Arg2 } from 'tsargs';\n\nimport { State } from 'types';\n\nconst {\n utils: { checkEquality, checkEqualityAndMeasurePerf },\n} = core;\n\nconst isEqual: Arg2 = (a, b) =>\n (__DEV__ ? checkEqualityAndMeasurePerf : checkEquality)(a, b, {\n maxDepth: 2,\n });\n\ntype TypedUseSelectorHook = (\n selector: (state: TState) => TSelected\n) => TSelected;\n\nconst usePureSelector: TypedUseSelectorHook = selector => {\n return useSelector(selector, isEqual);\n};\n\nexport default usePureSelector;\n","import { useMemo } from 'react';\nimport { App } from '@gin-betting/core';\n\nimport { State } from '../types';\nimport usePureSelector from './usePureSelector';\n\nconst useMemoSelector = <\n TSelected,\n TProps,\n TState extends App.BaseState = State\n>(\n selector: (state: TState, input?: TProps) => TSelected,\n input?: TProps,\n dependencies: any[] = []\n) => {\n /* eslint-disable-next-line */\n const selectProps = useMemo(() => selector, dependencies);\n\n return usePureSelector((state: State) =>\n selectProps(state as TState, input)\n );\n};\n\nexport default useMemoSelector;\n","import { useEffect, useState } from 'react';\nimport { Sports } from '@gin-betting/constants';\nimport core, { App } from '@gin-betting/core';\nimport { get, toNumber } from 'lodash';\nimport { createSelector } from 'reselect';\n\nimport { CONFIG_BY_SPORTS } from 'scoreMetaConfig';\nimport {\n selectFilteredScores,\n selectMatchTime,\n selectTimerRunning,\n} from 'selectors';\nimport { convertSecondsToTimeFormat, getMapNameFromMeta } from 'utils';\nimport useMemoSelector from './useMemoSelector';\n\nconst ONE_SECOND = 1000;\nconst TICK_INTERVAL = 1000;\nconst TICK_TIMEOUT = 60 * 1000;\n\ninterface Input {\n matchId: string;\n}\n\ninterface Output {\n currentMatchPart: string | undefined;\n matchTimeToShow: string | null;\n}\n\nconst {\n entities: {\n selectors: { selectMatch },\n },\n} = core;\n\nconst makeSelectProps = () =>\n createSelector(\n selectMatch,\n selectMatchTime,\n selectTimerRunning,\n selectFilteredScores,\n (match, matchTime, timerRunning, { currentMatchPart }) => {\n return {\n sportId: match?.sportId || '',\n shouldShowTime: matchTime !== null,\n numericalMatchTime: toNumber(matchTime) || 0,\n isTimerRunning: timerRunning === '1',\n currentMatchPart,\n };\n }\n );\n\nfunction useMatchTime({ matchId }: Input): Output {\n const {\n numericalMatchTime,\n isTimerRunning,\n currentMatchPart,\n shouldShowTime,\n sportId,\n } = useMemoSelector(makeSelectProps(), { matchId });\n\n const config = get(CONFIG_BY_SPORTS, sportId, undefined);\n\n const isDecrement = config?.isTimeCountdown;\n\n const [time, changeTime] = useState(numericalMatchTime);\n\n useEffect(() => changeTime(numericalMatchTime), [numericalMatchTime]);\n\n useEffect(() => {\n if (!isTimerRunning) return;\n\n const addition = isDecrement ? -TICK_INTERVAL : TICK_INTERVAL;\n\n const timerId = setInterval(() => {\n changeTime(prev => prev + addition);\n }, TICK_INTERVAL);\n\n const tickTimeoutId = setTimeout(\n () => clearInterval(timerId),\n TICK_TIMEOUT\n );\n\n return () => {\n clearInterval(timerId);\n clearTimeout(tickTimeoutId);\n };\n }, [isTimerRunning, isDecrement]);\n\n const finalTime = config?.isTimeAbsolute\n ? Math.abs(time)\n : Math.max(time, 0);\n\n const timeInSeconds = Math.trunc(finalTime / ONE_SECOND);\n\n const matchTimeToShow = config?.isTimeInSeconds\n ? convertSecondsToTimeFormat(timeInSeconds, [60, 1]) // NOTE: other option is Math.ceil,depends on back-office\n : `${Math.trunc((finalTime + 59000) / 60000)}\\``;\n\n return {\n currentMatchPart:\n sportId === Sports.ESPORTS_COUNTER_STRIKE &&\n currentMatchPart?.type === App.MetaTypes.TYPE_MAP\n ? getMapNameFromMeta({\n map: currentMatchPart?.text,\n format: 'long',\n })\n : currentMatchPart?.text,\n matchTimeToShow:\n shouldShowTime && !currentMatchPart?.isTimeDisabled\n ? matchTimeToShow\n : null,\n };\n}\n\nexport default useMatchTime;\n","import { useCallback, useEffect, useState } from 'react';\n\nconst useToggler = (\n isActive: boolean\n): [boolean, (nextValue?: boolean) => void] => {\n const [value, setValue] = useState(isActive);\n\n const toggle = useCallback((nextValue?: boolean) => {\n if (typeof nextValue === 'boolean') {\n setValue(nextValue);\n } else {\n setValue(currentValue => !currentValue);\n }\n }, []);\n\n useEffect(() => {\n setValue(isActive);\n }, [isActive]);\n\n return [value, toggle];\n};\n\nexport default useToggler;\n","import { size, slice } from 'lodash';\n\nimport useToggler from './useToggler';\n\ninterface Input {\n initSize: number;\n items: T[];\n}\n\ninterface Output {\n hasToggleMore: boolean;\n moreCount: number;\n visibleItems: T[];\n toggleShowMore: VoidFunction;\n}\n\nconst useMore = ({\n initSize,\n items,\n}: Input): Output => {\n const allSize = size(items);\n const hasToggle = allSize > initSize;\n\n const [isShowMore, toggleShowMore] = useToggler(false);\n\n const visibleItems = isShowMore ? items : slice(items, 0, initSize);\n const moreCount = allSize - size(visibleItems);\n\n return {\n hasToggleMore: hasToggle,\n moreCount,\n visibleItems,\n toggleShowMore,\n };\n};\n\nexport default useMore;\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { debounce } from 'lodash';\n\ninterface Output {\n showHistory: boolean;\n onMouseLeave: () => void;\n onMouseEnter: () => void;\n}\n\nconst useMouseEventsHandler = (timeout: number = 600): Output => {\n const [showHistory, setShowHistory] = useState(false);\n\n const timer = useRef(0);\n\n const onMouseEnter = useCallback(\n debounce(() => {\n clearTimeout(timer.current);\n timer.current = window.setTimeout(() => {\n setShowHistory(true);\n }, timeout);\n }, 100),\n []\n );\n\n const onMouseLeave = useCallback(\n debounce(() => {\n clearTimeout(timer.current);\n setShowHistory(false);\n }, 100),\n []\n );\n\n useEffect(() => () => clearTimeout(timer.current), []);\n\n return {\n showHistory,\n onMouseLeave,\n onMouseEnter,\n };\n};\n\nexport default useMouseEventsHandler;\n","import { RefObject, useEffect } from 'react';\n\ninterface Input {\n refs: Array>;\n handler: (event: MouseEvent) => void;\n isOpen: boolean;\n}\n\nfunction useOnClickOutside({ refs, handler, isOpen }: Input): void {\n useEffect(\n () => {\n if (!isOpen) return;\n\n const listener = (event: MouseEvent) => {\n // Do nothing if clicking ref's element or descendent elements\n const { target } = event;\n\n if (\n target instanceof Node &&\n refs.some(\n ({ current }) => current && current.contains(target)\n )\n ) {\n return;\n }\n\n handler(event);\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n },\n // Add ref and handler to effect dependencies\n // It's worth noting that because passed in handler is a new ...\n // ... function on every render that will cause this effect ...\n // ... callback/cleanup to run every render. It's not a big deal ...\n // ... but to optimize you can wrap handler in useCallback before ...\n // ... passing it into this hook.\n [refs, handler, isOpen]\n );\n}\n\nexport default useOnClickOutside;\n","import { useEffect } from 'react';\n\nimport { Platform, PLATFORM_BODY_ATTR } from 'app-constants';\nimport UserDevice from 'services/user-device';\n\ninterface Output {\n platform: Platform;\n}\n\nconst usePlatform = (): Output => {\n const platform = UserDevice.getInstance()?.isDeviceMobile()\n ? Platform.MOBILE\n : Platform.DESKTOP;\n\n useEffect(() => {\n document.body.setAttribute(PLATFORM_BODY_ATTR, platform);\n }, [platform]);\n\n return { platform };\n};\n\nexport default usePlatform;\n","import { useEffect, useState } from 'react';\nimport core from '@gin-betting/core';\nimport { Subject } from 'rxjs/Subject';\n\nimport { getMinBet } from 'utils';\n\ninterface Output {\n minStake: number;\n}\n\nconst {\n poller: { getPollerManager },\n} = core;\n\nlet counter = 0;\nlet isFetched = false;\n\nconst subject$ = new Subject();\n\nfunction usePollingMinStake(): Output {\n const [minStake, setMinStake] = useState(0);\n\n useEffect(() => {\n counter += 1;\n\n const { prevMinBet, request } = getMinBet();\n\n if (!prevMinBet && !isFetched) {\n isFetched = true;\n\n request()\n .then(minBet => {\n subject$.next(minBet);\n })\n .catch(err => console.error(err));\n }\n\n setMinStake(prevMinBet);\n\n const subscription = subject$.subscribe(minBet => {\n setMinStake(minBet);\n });\n\n return () => {\n counter -= 1;\n subscription.unsubscribe();\n };\n }, []);\n\n return { minStake };\n}\n\nconst pollInterval$ = getPollerManager().getIntervalObserve();\npollInterval$.subscribe(() => {\n if (!counter) return;\n\n const { request } = getMinBet();\n\n request()\n .then(minBet => {\n subject$.next(minBet);\n })\n .catch(err => console.error(err));\n});\n\nexport default usePollingMinStake;\n","import { useEffect, useRef } from 'react';\n\nfunction usePrevious(value: T) {\n const ref = useRef();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n}\n\nexport default usePrevious;\n","import { getMainSpecifiersBySportId } from '@gin-betting/constants';\nimport core, { View } from '@gin-betting/core';\nimport { OrderedSet } from 'immutable';\nimport { find, head, pick, sortBy } from 'lodash';\nimport { createSelector } from 'reselect';\n\nimport { ACTIVE_MARKET_STATUSES } from 'app-constants';\nimport { selectIsSportEventViewable, selectRouteBySportEvent } from 'selectors';\nimport { ParentPath } from 'types';\nimport { getPromoTypeIdsBySport } from 'utils';\nimport useMemoSelector from './useMemoSelector';\n\ninterface Input {\n matchId: string;\n isPromoMarket?: boolean;\n marketIds?: OrderedSet;\n}\n\nexport const matchPropsToPick = [\n 'id' as const,\n 'marketsCount' as const,\n 'sportId' as const,\n 'tournament' as const,\n 'startTime' as const,\n 'streams' as const,\n 'status' as const,\n 'liveCoverage' as const,\n 'slug' as const,\n 'meta' as const,\n 'type' as const,\n 'markets' as const,\n 'tournament' as const,\n 'competitors' as const,\n];\n\nexport const marketPropsToPick = [\n 'id' as const,\n 'name' as const,\n 'odds' as const,\n 'status' as const,\n];\nexport const tournamentPropsToPick = [\n 'id' as const,\n 'name' as const,\n 'slug' as const,\n];\n\ntype Market =\n | Pick\n | null\n | undefined;\n\ninterface Output {\n match: Pick | null;\n market: Market;\n tournament: Pick<\n View.Tournament,\n typeof tournamentPropsToPick[number]\n > | null;\n competitors: View.CompetitorsValid;\n route: ParentPath;\n hasValidStream: boolean;\n hasValidBetradarId: boolean;\n}\n\nconst {\n entities: {\n selectors: {\n selectMatchCompetitorsValid,\n makeMatchSelector,\n selectMarkets,\n makeTournamentSelector,\n },\n },\n async: {\n constants: { SubscribeOrigin },\n },\n hooks: { useSubscription },\n utils: { splitMarketPath },\n} = core;\n\nfunction usePromoItemContainer({\n matchId,\n isPromoMarket,\n marketIds,\n}: Input): Output {\n const result = useMemoSelector(\n makePropsSelector(),\n { matchId, isPromoMarket },\n [matchId, isPromoMarket]\n );\n\n const { market } = result;\n\n const validMarketIds = getMarketIdsToSubscribe(\n marketIds || OrderedSet(),\n market\n );\n\n useSubscription({\n variables: {\n sportEventId: matchId,\n marketIds: validMarketIds,\n isTopMarkets: false,\n withMarketsCount: false,\n },\n config: {\n skip: validMarketIds.length === 0,\n batch: false,\n origin: SubscribeOrigin.HookUsePromoItemContainer,\n method: 'onUpdateSportEvent',\n },\n });\n\n return result;\n}\n\nconst makePropsSelector = () => {\n const selectMatch = makeMatchSelector({\n propsToPick: matchPropsToPick,\n });\n const selectTournament = makeTournamentSelector({\n propsToPick: tournamentPropsToPick,\n selectTournamentId: createSelector(selectMatch, match =>\n match ? match.tournament : null\n ),\n });\n\n const selectMatchMarkets = createSelector(\n selectMatch,\n selectMarkets,\n (match, markets): View.Market[] => {\n if (!match || !match.markets) return [];\n\n return match.markets\n .map(marketId => markets.get(marketId))\n .filter((m): m is View.Market => !!m);\n }\n );\n\n return createSelector(\n selectMatch,\n selectMatchMarkets,\n selectTournament,\n selectMatchCompetitorsValid,\n selectIsSportEventViewable,\n selectRouteBySportEvent,\n (_, props): boolean | undefined => props.isPromoMarket,\n (\n match,\n markets,\n tournament,\n competitors,\n { hasValidStream, hasValidBetradarId },\n route,\n isPromoMarket\n ) => {\n const primaryMarket = getPrimaryMarket(markets);\n\n return {\n match,\n market: isPromoMarket\n ? findPromoMarketBySport(markets, match?.sportId) ||\n primaryMarket\n : primaryMarket,\n tournament,\n competitors,\n hasValidStream,\n hasValidBetradarId,\n route,\n };\n }\n );\n};\n\nconst getMainSpecifierValue = (\n market: View.Market,\n mainSpecifiers: string[]\n): number | null => {\n const marketMainSpecifier = find(market.specifiers, specifier =>\n mainSpecifiers.includes(specifier.name)\n );\n\n if (marketMainSpecifier?.value) {\n return +marketMainSpecifier.value;\n }\n\n return null;\n};\n\nconst findPromoMarketBySport = (\n markets: View.Market[],\n sportId: string | undefined\n): View.Market | undefined => {\n const typeIds = getPromoTypeIdsBySport(sportId);\n\n if (!typeIds || !sportId) return;\n\n let promoMarket: View.Market | undefined;\n\n typeIds.some(typeId => {\n const marketsWithTypeId = markets.filter(\n m =>\n m.typeId === typeId && ACTIVE_MARKET_STATUSES.includes(m.status)\n );\n\n if (marketsWithTypeId.length === 0) return false;\n\n if (marketsWithTypeId.length === 1) {\n [promoMarket] = marketsWithTypeId;\n\n return true;\n }\n\n const mainSpecifiers = getMainSpecifiersBySportId(sportId);\n\n [promoMarket] = sortBy(marketsWithTypeId, market =>\n getMainSpecifierValue(market, mainSpecifiers)\n );\n\n return true;\n });\n\n return promoMarket;\n};\n\nfunction getMarketIdsToSubscribe(\n marketIds: OrderedSet,\n market: Pick | undefined | null\n): string[] {\n let ids = marketIds;\n\n if (market) {\n ids = ids.add(market.id);\n }\n\n return ids\n .map(id => splitMarketPath(id)?.marketId)\n .filter((v): v is string => !!v)\n .toArray();\n}\n\nconst getPrimaryMarket = (matchMarkets: View.Market[]): Market | null => {\n const market = head(\n sortBy(matchMarkets, m => m.priority).filter(m =>\n ACTIVE_MARKET_STATUSES.includes(m.status)\n )\n );\n\n return market ? pick(market, marketPropsToPick) : null;\n};\n\nexport default usePromoItemContainer;\n","import { useLocation } from 'react-router';\nimport core, { App } from '@gin-betting/core';\n\nconst {\n utils: { getSportTypeFromLocation },\n} = core;\n\nexport default function useSportType(): App.SportType {\n useLocation();\n\n return getSportTypeFromLocation();\n}\n","import { useEffect, useRef } from 'react';\n\nfunction useUnmount(fn: VoidFn) {\n const ref = useRef(() => {\n throw new Error('Cannot call an event handler while rendering.');\n });\n\n // update the ref each render so if it change the newest callback will be invoked\n ref.current = fn;\n\n useEffect(() => () => ref.current(), []);\n}\n\nexport default useUnmount;\n","import { useContext, useEffect, useState } from 'react';\nimport { BettingConfigCtx } from 'root/bettingConfigCtx';\n\nimport { BettingWidgets, BettingWidgetsOptions } from 'types';\n\ninterface Input {\n widget: T;\n}\n\ntype Output = BettingWidgetsOptions[T];\n\nfunction useWidgetSettings({\n widget,\n}: Input): Output {\n const { widgets$ } = useContext(BettingConfigCtx);\n const [widgetOptions, changeWidgetOptions] = useState>(\n widgets$.getValue()[widget]\n );\n\n useEffect(() => {\n const sub = widgets$.subscribe(widgetsOptions =>\n changeWidgetOptions(widgetsOptions[widget])\n );\n\n return () => sub.unsubscribe();\n }, [widgets$, widget]);\n\n return widgetOptions;\n}\n\nexport default useWidgetSettings;\n","import core from '@gin-betting/core';\n\nconst {\n hooks: { useDidUpdate, useMount, useGridEmbedVideoToken },\n} = core;\n\nexport { useDidUpdate, useGridEmbedVideoToken, useMount };\nexport { default as useAppliedFilters } from './useAppliedFilters';\nexport { default as useCheckOnRoute } from './useCheckOnRoute';\nexport { default as useClientNode } from './useClientNode';\nexport { default as useCompare } from './useCompare';\nexport { default as useCssClassToggleOnDocument } from './useCssClassToggleOnDocument';\nexport { default as useEventHandler } from './useEventHandler';\nexport { default as useForceUpdate } from './useForceUpdate';\nexport { default as useIsMobile } from './useIsMobile';\nexport { default as useIsMountedRef } from './useIsMountedRef';\nexport { default as useLastBetSum } from './useLastBetSum';\nexport { default as useMatchTime } from './useMatchTime';\nexport { default as useMemoSelector } from './useMemoSelector';\nexport { default as useMore } from './useMore';\nexport { default as useMouseEventsHandler } from './useMouseEventsHandler';\nexport { default as useOnClickOutside } from './useOnClickOutside';\nexport { default as usePlatform } from './usePlatform';\nexport { default as usePollingMinStake } from './usePollingMinStake';\nexport { default as usePrevious } from './usePrevious';\nexport { default as usePreviousRef } from './usePreviousRef';\nexport { default as usePromoItemContainer } from './usePromoItemContainer';\nexport { default as usePureSelector } from './usePureSelector';\nexport { default as useSportType } from './useSportType';\nexport { default as useToggler } from './useToggler';\nexport { default as useUnmount } from './useUnmount';\nexport { default as useWidgetSettings } from './useWidgetSettings';\nexport { default as useWithLocation } from './useWithLocation';\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"MarketHcp__container___2hFrQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"toggleFavoriteButton__container___31sTe\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"MarketHcpRow__container___3amfb\",\"col\":\"MarketHcpRow__col___Ly-eO\",\"title-col\":\"MarketHcpRow__title-col___2aV8n\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"progress\":\"ProgressLine__progress___XqNd-\",\"rc-progress-line-trail\":\"ProgressLine__rc-progress-line-trail___3VuFi\",\"rc-progress-line-path\":\"ProgressLine__rc-progress-line-path___Y8Abf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"middlePartMatchRow__container___2tJo3\",\"bunch-left\":\"middlePartMatchRow__bunch-left___3KZAo\",\"bunch-right\":\"middlePartMatchRow__bunch-right___3CW7s\",\"middle\":\"middlePartMatchRow__middle___3X_dh\",\"market\":\"middlePartMatchRow__market___3fW-n\",\"team\":\"middlePartMatchRow__team___191jq\"};","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"arrow-down-circle_5b4c6\",\n \"use\": \"arrow-down-circle_5b4c6-usage\",\n \"viewBox\": \"0 0 20 20\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"oddHistory__container___3N2a0\",\"main\":\"oddHistory__main___1fxMk\",\"header\":\"oddHistory__header___sg-Sf\",\"title\":\"oddHistory__title___2sfd3\",\"text\":\"oddHistory__text___38nzz\",\"min-max\":\"oddHistory__min-max___6noAS\",\"graph\":\"oddHistory__graph___1vCiB\",\"graph-block\":\"oddHistory__graph-block___xmEAX\",\"arrow\":\"oddHistory__arrow___3WupU\",\"is-bottom\":\"oddHistory__is-bottom___7wEFn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"streamLink__container___1arEo\",\"is-open\":\"streamLink__is-open___39zxN\",\"icon\":\"streamLink__icon___2_pkn\",\"with-title\":\"streamLink__with-title___1eVsa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"LogoTitle__wrapper___1Gzbf\",\"is-reverse\":\"LogoTitle__is-reverse___7yUU5\",\"name\":\"LogoTitle__name___2LTlu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"freebet-wrapper\":\"upcoming__freebet-wrapper___26mqQ\",\"scrollable-container\":\"upcoming__scrollable-container___F27p9\",\"more-matches-container\":\"upcoming__more-matches-container___3-Qct\",\"more-matches-button\":\"upcoming__more-matches-button___2Uz14\",\"tags-list\":\"upcoming__tags-list___1zTvh\",\"sport-name\":\"upcoming__sport-name___18y5R\",\"news-container\":\"upcoming__news-container___a87gE\"};","import React, { Fragment } from 'react';\nimport { App, View } from '@gin-betting/core';\n\nimport type { OddButtonComponent, ParentPath } from 'types';\nimport CompetitorLogo from '../CompetitorLogo';\nimport DateTime from '../DateTime';\nimport LiveLabel from '../LiveLabel';\nimport MatchTime from '../MatchTime';\nimport PromoMatchDynamicScoreList from '../PromoMatchDynamicScoreList';\nimport PromoMatchOdds from '../PromoMatchOdds';\nimport SmartLink from '../SmartLink';\n\nimport './promoMatchBody.scss';\n\ninterface Props {\n matchId: string;\n sportId: string;\n linkToMatch: string;\n tournament: Pick | null;\n competitors: View.CompetitorsValid;\n oddIds?: string[];\n dateAndTime: string;\n marketName: string;\n isLive: boolean;\n OddButton: OddButtonComponent;\n withMatchLink?: boolean;\n liveLabelVisibility?: 'visible' | 'faded';\n showDynamicScores?: boolean;\n route: ParentPath;\n}\n\nconst PromoMatchBody: React.FC = ({\n matchId,\n linkToMatch,\n oddIds,\n tournament,\n competitors,\n dateAndTime,\n marketName,\n isLive,\n liveLabelVisibility,\n withMatchLink = true,\n OddButton,\n showDynamicScores = false,\n sportId,\n route,\n}) => {\n const CompetitorItemChild = (\n \n \n \n \n {competitors.homeName}\n \n \n\n \n {liveLabelVisibility && (\n \n \n\n {liveLabelVisibility === 'visible' && (\n \n )}\n \n )}\n\n {isLive ? (\n \n ) : (\n \n )}\n \n\n \n \n \n {competitors.awayName}\n \n \n \n );\n\n return (\n
\n {tournament && (\n \n \n {tournament.name}\n \n
\n )}\n\n \n {withMatchLink ? (\n \n {CompetitorItemChild}\n \n ) : (\n CompetitorItemChild\n )}\n \n\n \n {marketName || -}\n \n\n \n \n );\n};\n\nexport default React.memo(PromoMatchBody);\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"icon\":\"oddFormatSelectMobile__icon___1LKcr\",\"is-selected\":\"oddFormatSelectMobile__is-selected___1vr5K\",\"list\":\"oddFormatSelectMobile__list___oVCDq\",\"option-title\":\"oddFormatSelectMobile__option-title___2RBFQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"NavButton__button___c1iCh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"fractional__container___1QNKU\",\"denum-exist\":\"fractional__denum-exist___2kuwF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"teamsTitleRow__container___3CqhZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"tournamentName__container___3p-ro\",\"name\":\"tournamentName__name___efC3D\"};","import { createContext } from 'react';\n\nimport type { IBettingConfigCtx } from 'types';\n\n// NOTE: BettingConfigCtx should not have default value\nexport const BettingConfigCtx = createContext(\n {} as IBettingConfigCtx\n);\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"odd__button___2eiZg\",\"is-disabled\":\"odd__is-disabled___bCpHE\",\"is-selected\":\"odd__is-selected___sIit-\",\"is-label\":\"odd__is-label___1KvlR\",\"is-increasing\":\"odd__is-increasing___3vNFw\",\"arrow-wrapper\":\"odd__arrow-wrapper___1otDI\",\"arrow\":\"odd__arrow___GbbIe\",\"is-decreasing\":\"odd__is-decreasing___c4Lzh\",\"inner\":\"odd__inner___3F_cm\",\"ellipsis\":\"odd__ellipsis___3b4Yk\",\"blinking-arrow\":\"odd__blinking-arrow___1rJ8e\",\"lock\":\"odd__lock___1Vp5L\",\"backlight\":\"odd__backlight___15Tmp\",\"win\":\"odd__win___27TGI\",\"loss\":\"odd__loss___30NKa\",\"title\":\"odd__title___1kZ6V\",\"result\":\"odd__result___1K5vV\"};","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"play-arrow_a9461\",\n \"use\": \"play-arrow_a9461-usage\",\n \"viewBox\": \"0 0 357 357\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import banners from '@gin-betting/banners';\nimport core from '@gin-betting/core';\nimport favoriteMarkets from '@gin-betting/favorite-markets';\nimport { Reducer, ReducersMapObject } from 'redux';\n\nimport { AppStateRecord } from 'app-constants';\nimport favorite from 'modules/favorite';\nimport matchList from 'modules/match-list';\nimport promo from 'modules/promo';\nimport ui from 'modules/ui';\nimport { AsyncStateShape, FullStateShape, State, SyncStateShape } from 'types';\n\nconst {\n entities,\n utils: { logReducerTiming, combineReducers },\n} = core;\n\nconst stubReducer = (state = null) => state;\n\nexport default function createRootReducer(reducers: any): Reducer {\n const appStateShape: ReducersMapObject = logReducerTiming({\n ...getInitialReducers(),\n ...reducers,\n });\n\n return combineReducers(appStateShape, AppStateRecord);\n}\n\nfunction getInitialReducers() {\n const asyncInitialReducers: Record<\n keyof AsyncStateShape,\n typeof stubReducer\n > = {\n viewport: stubReducer,\n betslip: stubReducer,\n filters: stubReducer,\n match: stubReducer,\n freebet: stubReducer,\n stream: stubReducer,\n };\n\n const syncInitialReducers: {\n [K in keyof Omit]: Reducer<\n SyncStateShape[K]\n >;\n } = {\n [entities.constants.NAME]: entities.reducer,\n [ui.constants.NAME]: ui.reducer,\n [favoriteMarkets.constants.NAME]: favoriteMarkets.reducer(),\n [matchList.constants.NAME]: matchList.reducer(),\n [matchList.pagination.constants.NAME]: matchList.paginationReducer(),\n [favorite.constants.NAME]: favorite.reducer,\n [banners.constants.NAME]: banners.reducer,\n [promo.constants.NAME]: promo.reducer,\n };\n\n const initialReducers: {\n [K in keyof FullStateShape]?: Reducer;\n } = {\n ...asyncInitialReducers,\n ...syncInitialReducers,\n };\n\n return initialReducers;\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"betStatus__container___191mD\",\"is-initial\":\"betStatus__is-initial___11j3g\",\"is-processing\":\"betStatus__is-processing___3x02h\",\"is-completed\":\"betStatus__is-completed___3-MID\",\"is-error\":\"betStatus__is-error___nnagz\"};","import core from '@gin-betting/core';\nimport favoriteMarkets from '@gin-betting/favorite-markets';\nimport { persistReducer, persistStore } from '@gin-betting/persist';\nimport Immutable from 'immutable';\nimport { forEach, map, values } from 'lodash';\nimport {\n applyMiddleware,\n compose,\n Middleware,\n MiddlewareAPI,\n Store,\n} from 'redux';\nimport { createEpicMiddleware } from 'redux-observable';\nimport createSentryMiddleware from 'redux-sentry-middleware';\nimport thunk from 'redux-thunk';\n\nimport { matchListRoutes } from 'app-constants';\nimport bannersModule from 'modules/banners';\nimport favorite from 'modules/favorite';\nimport matchList from 'modules/match-list';\nimport promo from 'modules/promo';\nimport ui from 'modules/ui';\nimport createStore from 'services/createStore';\nimport gc from 'services/garbage-collector';\nimport UserDevice from 'services/user-device';\nimport { State } from 'types';\nimport createRootReducer from './createRootReducer';\nimport { bannerDevMiddleware } from './devMiddleware';\n\nconst {\n services: {\n middlewareRegistry,\n reducerRegistry,\n rootEpic,\n registerEpic,\n sentryHub,\n },\n entities,\n viewport: {\n selectors: { selectIsCompact },\n },\n} = core;\n\nconst { middleware: gcMiddleware } = gc;\n\nconst dynamicMiddlewares = ({ getState, dispatch }: MiddlewareAPI) => (\n next: any\n) => (action: any) => {\n const middlewareAPI = {\n getState,\n dispatch: (act: any) => dispatch(act),\n };\n\n // TODO: optimize access to dynamically added middlewares;\n // this occurs on every dispatched action\n const chain = map(values(middlewareRegistry.getEntries()), middleware =>\n middleware(middlewareAPI)\n );\n\n return compose(...chain)(next)(action);\n};\n\nconst persistConfig = {\n key: 'root',\n whitelist: [],\n stateReconciler: false as const,\n debug: true,\n};\n\nexport default function configureStore(): Store {\n let middlewares: Middleware[] = [thunk];\n\n if (__DEV__) {\n const reduxLog = localStorage.getItem('redux-log');\n\n middlewareRegistry.register('devMiddleware', bannerDevMiddleware);\n\n if (reduxLog !== null) {\n import(/* webpackChunkName: \"devtools\" */ 'redux-logger')\n .then(m => {\n const loggerMiddleware = m.createLogger({\n collapsed: true,\n timestamp: false,\n logErrors: true,\n predicate: (getState, action) => {\n if (\n [\n 'async/SUBSCRIBE_TO_UPDATES',\n 'async/UNSUBSCRIBE_TO_UPDATES',\n ].includes(action.type)\n ) {\n return false;\n }\n\n return (\n reduxLog === '*' ||\n action.type.includes(reduxLog)\n );\n },\n });\n\n middlewareRegistry.register('logger', loggerMiddleware);\n })\n .catch(err => console.error(err));\n }\n }\n\n middlewares = middlewares.concat([\n dynamicMiddlewares,\n matchList.pagination.middleware(matchListRoutes),\n matchList.middleware(),\n entities.middleware(),\n core.appServiceLocator.get('apiMiddleware'),\n core.appServiceLocator.get('subscriptionMiddleware'),\n createEpicMiddleware(rootEpic as any),\n gcMiddleware(),\n ]);\n\n middlewares.push(\n createSentryMiddleware(sentryHub as any, {\n stateTransformer: (state: State) => {\n return state.delete('entities');\n },\n })\n );\n\n // @ts-ignore: Ignore window typings to access devtools\n const devToolsExtension = window.__REDUX_DEVTOOLS_EXTENSION__;\n\n const store = createStore(\n persistReducer(\n persistConfig,\n createRootReducer(reducerRegistry.getEntries())\n ),\n compose(\n applyMiddleware(...middlewares),\n devToolsExtension\n ? devToolsExtension({\n maxAge: getDevtoolActionsMaxAge(),\n serialize: {\n immutable: Immutable,\n },\n })\n : (f: any) => f\n ),\n undefined\n );\n\n const { requestLocalSport, ...otherFavoriteEpics } = favorite.epics;\n const { makeSyncGamblerSettingsByPlatform, ...otherUIEpics } = ui.epics;\n const {\n epics: { makeRequestBanners },\n utils: { getBanners },\n } = bannersModule;\n\n // TODO: fix epic type, 'Epic' is not assignable to type 'TypedEpic'\n registerEpic(requestLocalSport as any);\n forEach(otherFavoriteEpics, epic => registerEpic(epic));\n forEach(otherUIEpics, epic => registerEpic(epic));\n forEach(matchList.epics, epic => registerEpic(epic));\n registerEpic(makeRequestBanners(getBanners));\n forEach(promo.epics, epic => registerEpic(epic));\n forEach(favoriteMarkets.epics, epic => registerEpic(epic));\n\n const isCompact = selectIsCompact(store.getState(), {});\n\n registerEpic(\n makeSyncGamblerSettingsByPlatform(\n UserDevice.getInstance()?.isDeviceMobile() || isCompact\n )\n );\n\n const persistor = persistStore(store);\n\n reducerRegistry.onRegistryChange(newReducers => {\n store.replaceReducer(\n persistReducer(persistConfig, createRootReducer(newReducers))\n );\n\n if (\n Object.keys(newReducers).some(\n // NOTE: check strictly for \"false\" value, not just empty\n // @ts-ignore: Custom prop \"_isPersisted\" is missing in lib typings\n name => newReducers[name]?._isPersisted === false\n )\n ) {\n persistor.persist();\n }\n });\n\n enableHotLoader(store);\n\n return store;\n}\n\nfunction enableHotLoader(store: Store) {\n const isDev = typeof __DEV__ === 'string';\n\n if (!isDev) return;\n\n const { hot } = module as any;\n\n if (hot) {\n hot.accept('./createRootReducer', () => {\n // eslint-disable-next-line\n const createNextRootReducer: any = require('./createRootReducer');\n store.replaceReducer(\n persistReducer(persistConfig, createNextRootReducer())\n );\n });\n }\n}\n\nfunction getDevtoolActionsMaxAge() {\n const defaultAge = 100;\n\n try {\n const age = localStorage && localStorage.getItem('devtool-max-age');\n\n return age ? +age : defaultAge;\n } catch (e) {\n return defaultAge;\n }\n}\n"],"sourceRoot":""}