{"version":3,"sources":["redux/teamLeaderboard/types.js","redux/overlay/types.js","util/SuccessMessages.js","redux/playerLeaderboard/types.js","redux/headToHeadTeams/types.js","redux/headToHeadPlayers/types.js","apolloClients/configs/endpointConfigProd.js","App.scss","redux/teamSearch/types.js","appsync-config-public-prod.js","appsync-config-private-prod.js","cognito-config-prod.js","polyfill.js","PrivateRoute.jsx","apolloClients/apolloClient.js","App.js","redux/apollo/actions.js","redux/apollo/types.js","serviceWorker.js","redux/apollo/reducer.js","util/AuthUtil.js","redux/auth/reducer.js","redux/currentMatch/reducer.js","redux/dashboard/reducer.js","redux/tournaments/reducer.js","redux/tournamentFilters/reducer.js","util/LeaderboardUtil.js","redux/teamLeaderboard/reducer.js","redux/modal/reducer.js","redux/playerLeaderboard/reducer.js","redux/todaysWinners/reducer.js","redux/mapVeto/reducer.js","redux/tournament/reducer.js","redux/tournamentPlayers/reducer.js","redux/tournamentTeams/reducer.js","redux/customTournaments/reducer.js","redux/customTournaments/types.js","redux/overlay/reducer.js","util/ObjectUtils.js","graphql/client.js","redux/organization/reducer.js","redux/headToHeadTeams/reducer.js","redux/headToHeadPlayers/reducer.js","redux/exportAsImage/reducer.js","redux/exportAsImage/types.js","redux/teamSearch/reducer.js","redux/root-reducer.js","graphql/requestHelper.js","redux/auth/saga.js","graphql/private/queries.js","graphql/public/queries.js","redux/currentMatch/saga.js","graphql/apollo/componentMutations.js","graphql/apollo/componentTypeMutations.js","graphql/apollo/componentSubscriptions.js","graphql/apollo/componentTypeSubscriptions.js","redux/dashboard/saga.js","redux/notification/saga.js","graphql/apollo/tournamentQueries.js","redux/tournaments/saga.js","redux/tournamentFilters/saga.js","util/ExportAsImageUtil.js","redux/teamLeaderboard/saga.js","redux/playerLeaderboard/saga.js","redux/todaysWinners/saga.js","redux/mapVeto/saga.js","graphql/apollo/tournamentMutations.js","graphql/apollo/tournamentSubscriptions.js","redux/tournament/saga.js","graphql/private/mutations.js","redux/tournamentPlayers/saga.js","redux/tournamentTeams/saga.js","redux/customTournaments/saga.js","graphql/apollo/componentQueries.js","graphql/apollo/componentTypeQueries.js","redux/overlay/saga.js","redux/organization/saga.js","redux/headToHeadTeams/saga.js","redux/headToHeadPlayers/saga.js","redux/teamSearch/saga.js","redux/root-saga.js","redux/store.js","index.js","redux/tournaments/types.js","redux/currentMatch/types.js","redux/todaysWinners/types.js","redux/tournamentPlayers/types.js","redux/tournamentTeams/types.js","redux/tournamentFilters/types.js","redux/notification/types.js","redux/organization/types.js","redux/auth/actions.js","redux/modal/types.js","components/common/background/AppWithBackground.js","components/common/card/Card.jsx","components/common/modal/ConfirmModal.jsx","components/common/date/DateInput.js","components/common/dropdown/Dropdown.jsx","components/common/dropdown/DropdownWithInfo.jsx","components/common/button/IconButton.jsx","components/common/modal/InputModal.jsx","components/common/loading/Loading.jsx","components/common/modal/Modal.jsx","components/common/overlay/Overlay.js","components/common/styling/ShortLine.jsx","components/common/search/TextSearch.jsx","components/common/toast/Toast.jsx","components/common/warnings/VerifiedTO.jsx","redux/tournament/types.js","views/Components/common/base/controller/inputs/CheckBox.jsx","views/Components/common/base/controller/ControllerBase.jsx","components/common/multiselect/Multiselect.jsx","views/Components/common/base/controller/inputs/StatisticsSelect.jsx","views/Components/common/base/controller/inputs/MatchSelect.jsx","views/Components/common/base/controller/inputs/TeamSelect.jsx","views/Components/common/base/controller/inputs/PlayerSelect.jsx","views/Components/pubg/playerStats/controller/PUBGPlayerStatsController.jsx","views/Components/pubg/playerStats/overlay/PUBGPlayerStatsOverlay.jsx","views/Components/pubg/teamStats/controller/PUBGTeamStatsController.jsx","views/Components/pubg/teamStats/overlay/PUBGTeamStatsOverlay.jsx","views/Components/pubg/playerHeadToHead/controller/PUBGPlayerHeadToHeadController.jsx","views/Components/pubg/playerHeadToHead/overlay/default/HeadToHeadHeader.jsx","views/Components/pubg/playerHeadToHead/overlay/default/HeadToHeadBody.jsx","views/Components/pubg/playerHeadToHead/overlay/default/HeadToHeadFooter.jsx","views/Components/pubg/playerHeadToHead/overlay/default/TwireHeadToHeadPlayers.jsx","views/Components/pubg/playerHeadToHead/overlay/psl/HeadToHeadBody.jsx","views/Components/pubg/playerHeadToHead/overlay/psl/HeadToHeadHeader.jsx","views/Components/pubg/playerHeadToHead/overlay/psl/HeadToHeadFooter.jsx","views/Components/pubg/playerHeadToHead/overlay/psl/PslHeadToHeadPlayers.jsx","views/Components/pubg/playerHeadToHead/overlay/pjc/PjcPlayerHeadToHead.jsx","views/Components/pubg/playerHeadToHead/overlay/ryer/HeadToHeadBody.jsx","views/Components/pubg/playerHeadToHead/overlay/ryer/HeadToHeadHeader.jsx","views/Components/pubg/playerHeadToHead/overlay/ryer/HeadToHeadFooter.jsx","views/Components/pubg/playerHeadToHead/overlay/ryer/RyerHeadToHeadPlayer.jsx","views/Components/pubg/playerHeadToHead/overlay/PUBGPlayerHeadToHeadOverlay.jsx","views/Components/pubg/teamHeadToHead/controller/PUBGTeamHeadToHeadController.jsx","views/Components/pubg/teamHeadToHead/overlay/default/HeadToHeadHeader.jsx","views/Components/pubg/teamHeadToHead/overlay/default/HeadToHeadBody.jsx","views/Components/pubg/teamHeadToHead/overlay/default/HeadToHeadFooter.jsx","views/Components/pubg/teamHeadToHead/overlay/default/TwireHeadToHeadTeams.jsx","views/Components/pubg/teamHeadToHead/overlay/psl/HeadToHeadBody.jsx","views/Components/pubg/teamHeadToHead/overlay/psl/HeadToHeadHeader.jsx","views/Components/pubg/teamHeadToHead/overlay/psl/HeadToHeadFooter.jsx","views/Components/pubg/teamHeadToHead/overlay/psl/PslHeadToHeadTeams.jsx","views/Components/pubg/teamHeadToHead/overlay/pjc/PjcTeamHeadToHead.jsx","views/Components/pubg/teamHeadToHead/overlay/pjc21/Team.jsx","views/Components/pubg/teamHeadToHead/overlay/pjc21/Pjc21TeamHeadToHead.jsx","views/Components/pubg/teamHeadToHead/overlay/ryer/HeadToHeadBody.jsx","views/Components/pubg/teamHeadToHead/overlay/ryer/HeadToHeadHeader.jsx","views/Components/pubg/teamHeadToHead/overlay/ryer/HeadToHeadFooter.jsx","views/Components/pubg/teamHeadToHead/overlay/ryer/RyerHeadToHeadTeams.jsx","views/Components/pubg/teamHeadToHead/overlay/PUBGTeamHeadToHeadOverlay.jsx","views/Components/pubg/playerLeaderboard/controller/PUBGPlayerLeaderboardController.jsx","views/Components/pubg/playerLeaderboard/overlay/default/LeaderboardHeader.jsx","views/Components/pubg/playerLeaderboard/overlay/default/LeaderboardPlayer.jsx","views/Components/pubg/playerLeaderboard/overlay/default/LeaderboardFooter.jsx","views/Components/pubg/playerLeaderboard/overlay/default/TwirePlayerLeaderboard.jsx","views/Components/pubg/playerLeaderboard/overlay/psl/LeaderboardHeader.jsx","views/Components/pubg/playerLeaderboard/overlay/psl/LeaderboardPlayer.jsx","views/Components/pubg/playerLeaderboard/overlay/psl/LeaderboardFooter.jsx","views/Components/pubg/playerLeaderboard/overlay/psl/PslPlayerLeaderboard.jsx","views/Components/pubg/playerLeaderboard/overlay/pjc/PjcPlayerLeaderboard.jsx","views/Components/pubg/playerLeaderboard/overlay/pjc21/Pjc21PlayerLeaderboard.jsx","views/Components/pubg/playerLeaderboard/overlay/ryer/LeaderboardPlayer.jsx","views/Components/pubg/playerLeaderboard/overlay/ryer/RyerPlayerLeaderboard.jsx","views/Components/pubg/playerLeaderboard/overlay/PUBGPlayerLeaderboardOverlay.jsx","views/Components/pubg/teamLeaderboard/controller/PUBGTeamLeaderboardController.jsx","views/Components/pubg/teamLeaderboard/overlay/default/LeaderboardHeader.jsx","views/Components/pubg/teamLeaderboard/overlay/default/LeaderboardBody.jsx","views/Components/pubg/teamLeaderboard/overlay/default/LeaderboardFooter.jsx","views/Components/pubg/teamLeaderboard/overlay/default/TwireTeamLeaderboard.jsx","views/Components/pubg/teamLeaderboard/overlay/psl/LeaderboardHeader.jsx","views/Components/pubg/teamLeaderboard/overlay/psl/LeaderboardBody.jsx","views/Components/pubg/teamLeaderboard/overlay/psl/LeaderboardFooter.jsx","views/Components/pubg/teamLeaderboard/overlay/psl/PslTeamLeaderboard.jsx","views/Components/pubg/teamLeaderboard/overlay/pjc/LeaderboardHeader.jsx","util/TeamTranslations.js","views/Components/pubg/teamLeaderboard/overlay/pjc/LeaderboardTeam.jsx","views/Components/pubg/teamLeaderboard/overlay/pjc/PjcTeamLeaderboard.jsx","views/Components/pubg/teamLeaderboard/overlay/ryer/LeaderboardHeader.jsx","views/Components/pubg/teamLeaderboard/overlay/ryer/LeaderboardTeam.jsx","views/Components/pubg/teamLeaderboard/overlay/ryer/LeaderboardFooter.jsx","views/Components/pubg/teamLeaderboard/overlay/ryer/LeaderboardSubHeader.jsx","views/Components/pubg/teamLeaderboard/overlay/ryer/RyerTeamLeaderboard.jsx","views/Components/pubg/teamLeaderboard/overlay/protality/LeaderboardHeader.jsx","views/Components/pubg/teamLeaderboard/overlay/protality/LeaderboardTeam.jsx","views/Components/pubg/teamLeaderboard/overlay/protality/ProtalityTeamLeaderboard.jsx","views/Components/pubg/teamLeaderboard/overlay/PUBGTeamLeaderboardOverlay.jsx","views/Components/common/base/controller/inputs/DataTypeSelect.jsx","views/Components/pubg/liveTeamLeaderboard/controller/PUBGLiveTeamLeaderboardController.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/psl/LeaderboardHeader.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/psl/LeaderboardBody.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/psl/LeaderboardFooter.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/psl/PslLiveTeamLeaderboard.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/ryer/LeaderboardBody.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/ryer/LeaderboardHeader.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/ryer/LeaderboardFooter.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/ryer/RyerLiveTeamLeaderboard.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/esl/EslLiveTeamLeaderboard.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/pjc/LeaderboardHeader.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/pjc/LeaderboardTeam.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/pjc/PjcLiveTeamLeaderboard.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/pjc21/LeaderboardBody.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/pjc21/LeaderboardHeader.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/pjc21/Pjc21LiveTeamLeaderboard.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/dnw/LeaderboardTitle.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/dnw/LeaderboardBody.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/dnw/LeaderboardHeader.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/dnw/DnwLiveTeamLeaderboard.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/being/LeaderboardHeader.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/being/LeaderboardBody.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/being/LeaderboardFooter.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/being/BeingLiveTeamLeaderboard.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/protality/LeaderboardHeader.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/protality/LeaderboardTeam.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/protality/ProtalityLiveTeamLeaderboard.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/default/LeaderboardHeader.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/default/LeaderboardTeam.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/default/LeaderboardFooter.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/default/LeaderboardSubHeader.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/default/DefaultTeamLeaderboard.jsx","views/Components/pubg/liveTeamLeaderboard/overlay/PUBGLiveTeamLeaderboardOverlay.jsx","views/Components/pubg/liveSurvivalLeaderboard/controller/PUBGLiveSurvivalLeaderboardController.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/esl/LeaderboardBody.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/esl/LeaderboardTitle.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/esl/LeaderboardHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/esl/EslLiveSurvivalLeaderboard.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/psl/LeaderboardBody.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/psl/LeaderboardHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/psl/PslLiveTeamLeaderboard.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/pjc/LeaderboardBody.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/pjc/LeaderboardHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/pjc/LeaderboardSubHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/pjc/PjcLiveSurvivalLeaderboard.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/pjc21/LeaderboardBody.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/pjc21/LeaderboardHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/pjc21/Pjc21LiveSurvivalLeaderboard.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/pjc22-1/LeaderboardBody.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/pjc22-1/LeaderboardHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/pjc22-1/Pjc221LiveSurvivalLeaderboard.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/dnw/LeaderboardBody.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/dnw/LeaderboardHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/dnw/DnwLiveSurvivalLeaderboard.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/being/LeaderboardBody.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/being/LeaderboardHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/being/LeaderboardFooter.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/being/BeingLiveSurvivalLeaderboard.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/being2/LeaderboardBody.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/being2/LeaderboardHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/being2/LeaderboardSubHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/being2/BeingLiveSurvivalLeaderboard.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/protality/LeaderboardBody.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/protality/LeaderboardHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/protality/LeaderboardColumnTitle.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/protality/ProtalityLiveSurvivalLeaderboard.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/protality6/LeaderboardBody.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/protality6/LeaderboardHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/protality6/LeaderboardFooter.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/protality6/LeaderboardColumnTitle.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/protality6/ProtalityLiveSurvivalLeaderboard.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/psj/LeaderboardFooter.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/psj/LeaderboardBody.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/psj/LeaderboardHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/psj/LeaderboardSubHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/psj/PsjLiveSurvivalLeaderboard.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/pac/LeaderboardBody.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/pac/LeaderboardHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/pac/LeaderboardSubHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/pac/PacLiveSurvivalLeaderboard.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/predator/LeaderboardBody.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/predator/LeaderboardHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/predator/PredatorLiveSurvivalLeaderboard.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/atl/LeaderboardBody.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/atl/LeaderboardHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/atl/LeaderboardSubHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/atl/LeaderboardFooter.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/atl/PacLiveSurvivalLeaderboard.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/default/LeaderboardBody.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/default/LeaderboardHeader.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/default/LeaderboardFooter.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/default/DefaultLiveSurvivalLeaderboard.jsx","views/Components/pubg/liveSurvivalLeaderboard/overlay/PUBGLiveSurvivalLeaderboardOverlay.jsx","views/Components/pubg/liveMapTeams/controller/PUBGLiveMapTeamsController.jsx","views/Components/pubg/liveMapTeams/overlay/esl/Team.jsx","views/Components/pubg/liveMapTeams/overlay/esl/EslLiveMapTeams.jsx","views/Components/pubg/liveMapTeams/overlay/pjc/Team.jsx","views/Components/pubg/liveMapTeams/overlay/pjc/PjcLiveMapTeams.jsx","views/Components/pubg/liveMapTeams/overlay/being/Team.jsx","views/Components/pubg/liveMapTeams/overlay/being/BeingLiveMapTeams.jsx","views/Components/pubg/liveMapTeams/overlay/being2/Team.jsx","views/Components/pubg/liveMapTeams/overlay/being2/Being2LiveMapTeams.jsx","views/Components/pubg/liveMapTeams/overlay/PUBGLiveMapTeamsOverlay.jsx","views/Components/pubg/liveTeamStats/controller/PUBGLiveTeamStatsController.jsx","views/Components/pubg/liveTeamStats/overlay/esl/TeamStat.jsx","views/Components/pubg/liveTeamStats/overlay/esl/EslLiveTeamStats.jsx","views/Components/pubg/liveTeamStats/overlay/pjc/TeamStat.jsx","views/Components/pubg/liveTeamStats/overlay/pjc/PjcLiveTeamStats.jsx","views/Components/pubg/liveTeamStats/overlay/pjc21/Pjc21LiveTeamStats.jsx","views/Components/pubg/liveTeamStats/overlay/being/TeamStat.jsx","views/Components/pubg/liveTeamStats/overlay/being/BeingLiveTeamStats.jsx","views/Components/pubg/liveTeamStats/overlay/PUBGLiveTeamStatsOverlay.jsx","views/Components/pubg/livePlayerStats/controller/PUBGLivePlayerStatsController.jsx","views/Components/pubg/livePlayerStats/overlay/pjc/PlayerStat.jsx","views/Components/pubg/livePlayerStats/overlay/pjc/PjcLivePlayerStats.jsx","views/Components/pubg/livePlayerStats/overlay/protality/PlayerStat.jsx","views/Components/pubg/livePlayerStats/overlay/protality/ProtalityLivePlayerStats.jsx","views/Components/pubg/livePlayerStats/overlay/PUBGLivePlayerStatsOverlay.jsx","views/Components/pubg/livePlayerKills/controller/PUBGLivePlayerKillsController.jsx","views/Components/pubg/livePlayerKills/overlay/esl/LeaderboardBody.jsx","views/Components/pubg/livePlayerKills/overlay/esl/LeaderboardTitle.jsx","views/Components/pubg/livePlayerKills/overlay/esl/EslLivePlayerKills.jsx","views/Components/pubg/livePlayerKills/overlay/being/LeaderboardPlayer.jsx","views/Components/pubg/livePlayerKills/overlay/being/BeingLivePlayerKillsDamage.jsx","views/Components/pubg/livePlayerKills/overlay/protality/LeaderboardBody.jsx","views/Components/pubg/livePlayerKills/overlay/protality/ProtalityLivePlayerKills.jsx","views/Components/pubg/livePlayerKills/overlay/default/LeaderboardPlayer.jsx","views/Components/pubg/livePlayerKills/overlay/default/DefaultPlayerKills.jsx","views/Components/pubg/livePlayerKills/overlay/PUBGLivePlayerKillsOverlay.jsx","views/Components/pubg/livePlayerKillsDamage/controller/PUBGLivePlayerKillsDamageController.jsx","views/Components/pubg/livePlayerKillsDamage/overlay/esl/LeaderboardBody.jsx","views/Components/pubg/livePlayerKillsDamage/overlay/esl/LeaderboardHeader.jsx","views/Components/pubg/livePlayerKillsDamage/overlay/esl/LeaderboardTitle.jsx","views/Components/pubg/livePlayerKillsDamage/overlay/esl/EslLivePlayerKillsDamage.jsx","views/Components/pubg/livePlayerKillsDamage/overlay/psl/LeaderboardHeader.jsx","views/Components/pubg/livePlayerKillsDamage/overlay/psl/LeaderboardPlayer.jsx","views/Components/pubg/livePlayerKillsDamage/overlay/psl/LeaderboardFooter.jsx","views/Components/pubg/livePlayerKillsDamage/overlay/psl/PslLivePlayerKillsDamage.jsx","views/Components/pubg/livePlayerKillsDamage/overlay/being/LeaderboardPlayer.jsx","views/Components/pubg/livePlayerKillsDamage/overlay/being/BeingLivePlayerKillsDamage.jsx","views/Components/pubg/livePlayerKillsDamage/overlay/protality/LeaderboardBody.jsx","views/Components/pubg/livePlayerKillsDamage/overlay/protality/ProtalityLivePlayerKillsDamage.jsx","views/Components/pubg/livePlayerKillsDamage/overlay/default/LeaderboardPlayer.jsx","views/Components/pubg/livePlayerKillsDamage/overlay/default/DefaultPlayerKillsDamage.jsx","views/Components/pubg/livePlayerKillsDamage/overlay/PUBGLivePlayerKillsDamageOverlay.jsx","views/Components/pubg/liveTeamHeadToHead/controller/PUBGLiveTeamHeadToHeadController.jsx","views/Components/pubg/liveTeamHeadToHead/overlay/esl/EslLiveTeamHeadToHead.jsx","views/Components/pubg/liveTeamHeadToHead/overlay/PUBGLiveTeamHeadToHeadOverlay.jsx","views/Components/pubg/livePlayerLeaderboard/controller/PUBGLivePlayerLeaderboardController.jsx","views/Components/pubg/livePlayerLeaderboard/overlay/esl/EslLivePlayerLeaderboard.jsx","views/Components/pubg/livePlayerLeaderboard/overlay/PUBGLivePlayerLeaderboardOverlay.jsx","views/Components/pubg/currentMatch/controller/PUBGCurrentMatchController.jsx","views/Components/pubg/currentMatch/overlay/default/TwireCurrentMatch.jsx","views/Components/pubg/currentMatch/overlay/PUBGCurrentMatchOverlay.jsx","views/Components/common/base/controller/inputs/TextInput.jsx","views/Components/pubg/todaysWinners/controller/PUBGTodaysWinnersController.jsx","views/Components/pubg/todaysWinners/overlay/default/TodaysWinnersHeader.jsx","views/Components/pubg/todaysWinners/overlay/default/TodaysWinnersBody.jsx","views/Components/pubg/todaysWinners/overlay/default/TodaysWinnersFooter.jsx","views/Components/pubg/todaysWinners/overlay/default/TwireTodaysWinners.jsx","assets/map/mapMapping.js","views/Components/pubg/todaysWinners/overlay/psl/TodaysWinnersHeader.jsx","views/Components/pubg/todaysWinners/overlay/psl/TodaysWinnersBody.jsx","views/Components/pubg/todaysWinners/overlay/psl/TodaysWinnersFooter.jsx","views/Components/pubg/todaysWinners/overlay/psl/PslTodaysWinners.jsx","views/Components/pubg/todaysWinners/overlay/pjc/PjcTodaysWinners.jsx","views/Components/pubg/todaysWinners/overlay/PUBGTodaysWinnersOverlay.jsx","views/Components/pubg/index.js","views/Components/csgo/playerStats/controller/CSGOPlayerStatsController.jsx","views/Components/csgo/playerStats/overlay/elisa/constants.js","views/Components/csgo/playerStats/overlay/elisa/Card/ElisaPlayerStatsCard.jsx","views/Components/csgo/playerStats/overlay/elisa/FullScreen/ElisaPlayerStatsFullScreen.jsx","views/Components/csgo/playerStats/overlay/elisa/FullScreenSponsor/ElisaPlayerStatsFullScreenSponsor.jsx","views/Components/csgo/playerStats/overlay/elisa/ElisaPlayerStats.jsx","views/Components/csgo/playerStats/overlay/CSGOPlayerStatsOverlay.jsx","views/Components/csgo/playerLeaderboard/controller/CSGOPlayerLeaderboardController.jsx","views/Components/csgo/playerLeaderboard/overlay/elisa/ElisaPlayerLeaderboard.jsx","views/Components/csgo/playerLeaderboard/overlay/CSGOPlayerLeaderboardOverlay.jsx","views/Components/csgo/index.js","views/Components/valorant/playerStats/controller/ValorantPlayerStatsController.jsx","views/Components/valorant/playerStats/overlay/onslaughtLeague/PlayerStats.jsx","views/Components/valorant/playerStats/overlay/sdp/PlayerStats.jsx","views/Components/valorant/playerStats/overlay/ValorantPlayerStatsOverlay.jsx","views/Components/valorant/playerLeaderboard/controller/ValorantPlayerLeaderboardController.jsx","views/Components/animations/SlideInAnimation.jsx","views/Components/helpers/Image/index.jsx","views/Components/valorant/playerLeaderboard/overlay/acesEsports/PlayerLeaderboard.jsx","views/Components/valorant/playerLeaderboard/overlay/onslaughtLeague/PlayerLeaderboard.jsx","views/Components/valorant/playerLeaderboard/overlay/sdp/PlayerLeaderboard.jsx","views/Components/valorant/playerLeaderboard/overlay/ValorantPlayerLeaderboardOverlay.jsx","views/Components/valorant/playerHeadToHead/controller/ValorantPlayerHeadToHeadController.jsx","views/Components/valorant/playerHeadToHead/overlay/onslaughtLeague/PlayerHeadToHead.jsx","views/Components/valorant/playerHeadToHead/overlay/sdp/PlayerHeadToHead.jsx","views/Components/valorant/playerHeadToHead/overlay/ValorantPlayerHeadToHeadOverlay.jsx","views/Components/valorant/teamStats/controller/ValorantTeamStatsController.jsx","views/Components/valorant/teamStats/overlay/onslaughtLeague/TeamStats.jsx","views/Components/valorant/teamStats/overlay/ValorantTeamStatsOverlay.jsx","views/Components/valorant/teamHeadToHead/controller/ValorantTeamHeadToHeadController.jsx","views/Components/valorant/teamHeadToHead/overlay/OnslaughtLeague/TeamHeadToHead.jsx","views/Components/valorant/teamHeadToHead/overlay/ValorantTeamHeadToHeadOverlay.jsx","views/Components/valorant/teamLeaderboard/controller/ValorantTeamLeaderboardController.jsx","views/Components/animations/ShowInAnimation.jsx","views/Components/helpers/index.js","views/Components/valorant/teamLeaderboard/overlay/acesEsports/TeamLeaderboard.jsx","views/Components/valorant/teamLeaderboard/overlay/OnslaughtLeague/TeamLeaderboard.jsx","views/Components/valorant/teamLeaderboard/overlay/sdp/TeamLeaderboard.jsx","views/Components/valorant/teamLeaderboard/overlay/ValorantTeamLeaderboardOverlay.jsx","views/Components/valorant/scoreboard/controller/ValorantScoreboardController.jsx","views/Components/valorant/scoreboard/overlay/onslaughtLeague/Scoreboard.jsx","views/Components/valorant/scoreboard/overlay/sdp/Scoreboard.jsx","views/Components/valorant/scoreboard/overlay/ValorantScoreboardOverlay.jsx","views/Components/common/base/controller/inputs/MapSelect.jsx","views/Components/common/base/controller/inputs/RuleSelect.jsx","views/Components/common/base/controller/inputs/TeamSelectWithCopy.jsx","views/Components/common/mapVeto/controller/MapVetoController.jsx","views/Components/common/mapVeto/overlay/onslaughtLeague/MapVeto.jsx","views/Components/common/mapVeto/overlay/MapVetoOverlay.jsx","views/Components/valorant/index.js","views/Components/index.js","util/Games.js","util/CommonUtil.js","redux/notification/actions.js","components/StyledCoreUI/Alert.js","components/StyledCoreUI/App.js","components/StyledCoreUI/AppAside.js","components/StyledCoreUI/AppHeader.js","components/StyledCoreUI/AppNavbarBrand.js","components/StyledCoreUI/AppFooter.js","components/StyledCoreUI/AppBreadcrumb.js","components/StyledCoreUI/AppSidebarNav.js","components/StyledCoreUI/AppSwitch.js","components/StyledCoreUI/Button.js","components/StyledCoreUI/ButtonGroup.js","components/StyledCoreUI/Card.js","components/StyledCoreUI/CardHeader.js","components/StyledCoreUI/DropdownMenu.js","components/StyledCoreUI/FormText.js","components/StyledCoreUI/Input.js","components/StyledCoreUI/InvisibleInput.js","components/StyledCoreUI/InputGroupAddon.js","components/StyledCoreUI/ListGroup.js","components/StyledCoreUI/ListGroupItem.js","components/StyledCoreUI/Modal.js","components/StyledCoreUI/Nav.js","components/StyledCoreUI/Pagination.js","components/StyledCoreUI/Progress.js","components/StyledCoreUI/Select.js","components/StyledCoreUI/Table.js","components/StyledCoreUI/TabContent.js","components/StyledCoreUI/Textarea.js","redux/dashboard/types.js","util/ErrorMessages.js","history.js","redux/mapVeto/actions.js","util/Constants.js","scss/style.scss","redux/dashboard/actions.js","views/Components/constants.js","redux/modal/actions.js","redux/auth/types.js","redux/mapVeto/types.js"],"names":["REQUEST_TEAM_LEADERBOARD","REQUEST_TEAM_LEADERBOARD_PENDING","REQUEST_TEAM_LEADERBOARD_SUCCESS","REQUEST_TEAM_LEADERBOARD_ERROR","REQUEST_TEAM_LEADERBOARD_AS_CSV","ADD_TEAM_LEADERBOARD","REQUEST_OVERLAY_DATA","REQUEST_OVERLAY_DATA_PENDING","REQUEST_OVERLAY_DATA_SUCCESS","REQUEST_OVERLAY_DATA_ERROR","SUBSCRIBE_TO_OVERLAY_DATA","SUBSCRIBE_TO_OVERLAY_DATA_PENDING","SUBSCRIBE_TO_OVERLAY_DATA_SUCCESS","SUBSCRIBE_TO_OVERLAY_DATA_ERROR","SET_RECEIVED_OVERLAY_DATA","URL_COPIED","SAVE_SUCCESS","REQUEST_PLAYER_LEADERBOARD","REQUEST_PLAYER_LEADERBOARD_PENDING","REQUEST_PLAYER_LEADERBOARD_SUCCESS","REQUEST_PLAYER_LEADERBOARD_ERROR","REQUEST_PLAYER_LEADERBOARD_AS_CSV","REQUEST_HEAD_TO_HEAD_TEAMS","REQUEST_HEAD_TO_HEAD_TEAMS_PENDING","REQUEST_HEAD_TO_HEAD_TEAMS_SUCCESS","REQUEST_HEAD_TO_HEAD_TEAMS_ERROR","REQUEST_HEAD_TO_HEAD_TEAMS_AS_CSV","REQUEST_HEAD_TO_HEAD_PLAYERS","REQUEST_HEAD_TO_HEAD_PLAYERS_PENDING","REQUEST_HEAD_TO_HEAD_PLAYERS_SUCCESS","REQUEST_HEAD_TO_HEAD_PLAYERS_ERROR","REQUEST_HEAD_TO_HEAD_PLAYERS_AS_CSV","http","ws","module","exports","REQUEST_TEAM_SEARCH","REQUEST_TEAM_SEARCH_PENDING","REQUEST_TEAM_SEARCH_SUCCESS","REQUEST_TEAM_SEARCH_ERROR","CLEAR_TEAM_SEARCH_STATE","config","awsmobile","window","CustomEvent","event","params","bubbles","cancelable","detail","undefined","evt","document","createEvent","initCustomEvent","prototype","Event","PrivateRoute","endpointConfig","props","Component","component","attributes","useSelector","state","auth","sub","loaded","dispatch","useDispatch","useEffect","requestLoggedInUser","render","to","className","require","default","httpLink","createHttpLink","uri","authedHttpLink","setContext","_","headers","Auth","currentAuthenticatedUser","then","user","authorization","signInUserSession","accessToken","jwtToken","catch","concat","phoenixSocket","PhoenixSocket","token","absintheSocket","AbsintheSocket","websocketLink","createAbsintheSocketLink","link","split","operation","hasSubscription","query","ApolloClient","cache","InMemoryCache","addTypename","defaultOptions","watchQuery","fetchPolicy","errorPolicy","DefaultLayout","React","lazy","Home","Login","Page404","Page500","OverlayBase","MapVetoPanel","TeamLeaderboard","PlayerLeaderboard","TodaysWinners","HeadToHeadTeams","HeadToHeadPlayers","CurrentMatch","App","this","saveApolloClient","apolloClient","client","history","Suspense","fallback","exact","path","name","HEAD_TO_HEAD_TEAM_TYPE","HEAD_TO_HEAD_PLAYER_TYPE","connect","type","payload","Boolean","location","hostname","match","INITIAL_STATE","reducer","action","isTournamentOrganizer","userGroups","includes","AUTH_TOURNAMENT_ORGANIZER_GROUP","username","premium","trial","premiumValidFrom","premiumValidTo","planId","SET_AUTH_USER","UNSET_AUTH_USER","REQUEST_TOURNAMENT_ORGANIZER_TOKEN_SUCCESS","REQUEST_USER_SUBSCRIPTION_SUCCESS","status","validFrom","validTo","currentMatch","REQUEST_CURRENT_MATCH_PENDING","REQUEST_CURRENT_MATCH_ERROR","REQUEST_CURRENT_MATCH_SUCCESS","components","REQUEST_CREATE_COMPONENT_SUCCESS","REQUEST_CREATE_COMPONENTS_BULK_SUCCESS","REQUEST_CHANGE_COMPONENT_SUCCESS","map","c","REQUEST_SHARD_INFO_CHANGE_COMPONENT_SUCCESS","REQUEST_REMOVE_COMPONENT_SUCCESS","filter","REQUEST_REMOVE_ALL_COMPONENT_SUCCESS","SET_COMPONENT_STATE","SET_COMPONENT_DATA","matches","data","teams","availableStatistics","PUBG_GAME","PUBGC_GAME","CSGO_GAME","VALORANT_GAME","REQUEST_ALL_TOURNAMENT_PENDING","REQUEST_ALL_TOURNAMENT_ERROR","REQUEST_ALL_TOURNAMENT_SUCCESS","pubgTournaments","pubgcTournaments","csgoTournaments","valorantTournaments","REQUEST_CREATE_TOURNAMENT_SUCCESS","game","tournamentFiltersLoaded","tournamentFilters","REQUEST_TOURNAMENT_FILTERS_PENDING","REQUEST_TOURNAMENT_FILTERS_SUCCESS","compareTeams","teamA","teamB","totalPointsA","points","kills","totalPointsB","bestMatchPoints","lastKills","lastPoints","leaderboard","matchName","lastMatchName","groupName","overlayDesign","overlayColor","sort","a","b","title","content","opened","onConfirm","OPEN_MODAL","CLOSE_MODAL","todaysWinners","lastMatchNumber","REQUEST_LAST_WINNERS_PENDING","REQUEST_LAST_WINNERS_ERROR","REQUEST_LAST_WINNERS_SUCCESS","winners","teamToken","overlayToken","logs","pickValues","timer","REQUEST_TEAM_READY_SUCCESS","SET_MAP_VETO_DATA","phases","tournamentAwards","tournamentPhases","structureSelected","tournamentMatchSubscription","changeTrackIgnsSubscription","tournamentGroupTeams","REQUEST_TOURNAMENT_PENDING","REQUEST_TOURNAMENT_ERROR","REQUEST_TOURNAMENT_SUCCESS","REQUEST_EDIT_TOURNAMENT_SUCCESS","STAGE_FILTER_TYPE_OVERALL","id","selectedStageFilter","find","f","parentId","length","tournamentWithoutGroups","STAGE_FILTER_TYPE_HIDDEN","REQUEST_CREATE_TOURNAMENT_FILTER_SUCCESS","REQUEST_EDIT_TOURNAMENT_FILTER_SUCCESS","filters","filterIndex","indexOf","push","REQUEST_DELETE_TOURNAMENT_FILTER_SUCCESS","newFilters","REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE_SUCCESS","phaseIndex","REQUEST_DELETE_TOURNAMENT_PHASE_SUCCESS","REQUEST_CHANGE_TRACKED_IGNS_SUCCESS","notUpdatedPhases","p","tournamentFilterId","newPhases","REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH_SUCCESS","REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS_SUCCESS","REQUEST_EDIT_TOURNAMENT_MATCH_SUCCESS","m","REQUEST_TOURNAMENT_LEADERBOARD_SUCCESS","REQUEST_TOURNAMENT_LEADERBOARD_ERROR","REQUEST_ADD_TOURNAMENT_TEAM_SLOTS_SUCCESS","REQUEST_ADD_TOURNAMENT_PRIZE_POOL_SUCCESS","tfs","prizePoolDefinitions","ON_CHANGE_TRACK_IGNS","trackBy","ON_TOURNAMENT_MATCH_RECEIVED","some","gameMatchId","gameCreatedAt","SET_TOURNAMENT_GROUP_TEAMS","ADD_NEW_TOURNAMENT_AWARD","REQUEST_SAVE_TOURNAMENT_AWARD_SUCCESS","REQUEST_SAVE_TOURNAMENT_AWARD_ROW_SUCCESS","index","award","REQUEST_DELETE_TOURNAMENT_AWARD_SUCCESS","CLEAR_TOURNAMENT_STATE","tournamentPlayersLoaded","tournamentPlayers","REQUEST_TOURNAMENT_PLAYERS_PENDING","REQUEST_TOURNAMENT_PLAYERS_SUCCESS","REQUEST_TOURNAMENT_PLAYERS_ERROR","tournamentTeamsLoaded","tournamentTeams","REQUEST_TOURNAMENT_TEAMS_PENDING","REQUEST_TOURNAMENT_TEAMS_SUCCESS","REQUEST_TOURNAMENT_TEAMS_ERROR","opts","show","parseOpts","list","exclude","parsedOpts","JSON","parse","stats","object","lodash","mapValues","v","k","camelCase","publicConfig","privateConfig","users","verified","availableComponents","REQUEST_ORGANIZATION_SUCCESS","leftTeam","rightTeam","left","right","leftPlayer","rightPlayer","combineReducers","apollo","dashboard","tournaments","teamLeaderboard","modal","playerLeaderboard","mapVeto","tournament","customTournaments","overlay","organization","headToHeadTeams","headToHeadPlayers","exportAsImage","teamSearch","publicClient","AWSAppSyncClient","url","aws_appsync_graphqlEndpoint","region","aws_appsync_region","AUTH_TYPE","API_KEY","apiKey","aws_appsync_apiKey","offlineConfig","keyPrefix","disableOffline","privateClient","AMAZON_COGNITO_USER_POOLS","currentSession","idToken","queryRequest","variables","call","gql","mutationRequest","mutation","publicQuery","privateQuery","privateMutation","requestLogin","requestTournamentOrganizerToken","requestUserSubscription","rootSaga","password","put","setAuthUser","displayErrorNotification","AUTH_LOGIN_ERROR","unsetAuthUser","result","tournamentOrganizerToken","REQUEST_USER_SUBSCRIPTION_PENDING","userSubscription","REQUEST_USER_SUBSCRIPTION_ERROR","all","takeLatest","REQUEST_LOGIN","REQUEST_LOGGED_IN_USER","REQUEST_TOURNAMENT_ORGANIZER_TOKEN","REQUEST_USER_SUBSCRIPTION","productionLeaderboard","productionStats","requestCurrentMatch","REQUEST_CURRENT_MATCH","createComponent","createMapVetoComponent","createComponentsBulk","changeComponent","changeMapVetoComponent","changeComponentsShardInfo","removeComponent","removeMapVetoComponent","mapVetoTeamReady","mapVetoMakePick","createComponentMutations","PLAYER_STATS_COMPONENT_TYPE","TEAM_STATS_COMPONENT_TYPE","PLAYER_HEAD_TO_HEAD_COMPONENT_TYPE","TEAM_HEAD_TO_HEAD_COMPONENT_TYPE","PLAYER_LEADERBOARD_COMPONENT_TYPE","TEAM_LEADERBOARD_COMPONENT_TYPE","LIVE_TEAM_LEADERBOARD_COMPONENT_TYPE","LIVE_MAP_TEAMS_COMPONENT_TYPE","LIVE_SURVIVAL_LEADERBOARD_COMPONENT_TYPE","LIVE_TEAM_STATS_COMPONENT_TYPE","LIVE_PLAYER_STATS_COMPONENT_TYPE","LIVE_PLAYER_KILLS_COMPONENT_TYPE","LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_TYPE","LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_TYPE","LIVE_PLAYER_LEADERBOARD_COMPONENT_TYPE","CURRENT_MATCH_COMPONENT_TYPE","TODAYS_WINNERS_COMPONENT_TYPE","SCOREBOARD_COMPONENT_TYPE","MAP_VETO_COMPONENT_TYPE","changeComponentMutations","removeComponentMutations","subscribeToPlayerStats","subscribeToTeamStats","subscribeToPlayerHeadToHead","subscribeToTeamHeadToHead","subscribeToPlayerLeaderboard","subscribeToTeamLeaderboard","subscribeToLiveTeamLeaderboard","subscribeToLiveMapTeams","subscribeToLiveSurvivalStats","subscribeToLiveTeamStats","subscribeToLivePlayerStats","subscribeToLivePlayerKills","subscribeToLivePlayerKillsDamage","subscribeToLiveTeamHeadToHead","subscribeToLivePlayerLeaderboard","subscribeToScoreboard","subscribeToCurrentMatch","subscribeToTodaysWinners","subscribeToMapVeto","subscribeToChangeComponent","overlayDataSubscriptions","changeComponentSubscriptions","requestCreateComponent","requestCreateComponentsBulk","requestChangeComponent","requestChangeComponentWithValidation","requestRemoveComponent","requestRemoveAllComponents","requestShardInfoChangeComponent","REQUEST_CREATE_COMPONENT_PENDING","select","shard","args","Object","keys","REQUEST_CREATE_COMPONENT_ERROR","CREATE_COMPONENT_ERROR","REQUEST_CREATE_COMPONENTS_BULK_PENDING","rc","resultComponent","componentTemplate","mapOptsToState","stateOptsMapping","REQUEST_CREATE_COMPONENTS_BULK_ERROR","REQUEST_CHANGE_COMPONENT_PENDING","componentParameters","getTournamentGroupName","t","shard_info","startsWith","getMatchName","REQUEST_CHANGE_COMPONENT_ERROR","CHANGE_COMPONENT_ERROR","addDefaultValues","every","opt","setComponentState","showEmptyFieldWarning","Promise","resolve","setTimeout","requestChangeComponentAction","changes","SUBSCRIBE_TO_CHANGE_COMPONENT_PENDING","subscribe","next","callback","error","SUBSCRIBE_TO_CHANGE_COMPONENT_SUCCESS","SUBSCRIBE_TO_CHANGE_COMPONENT_ERROR","REQUEST_REMOVE_COMPONENT_PENDING","REQUEST_REMOVE_COMPONENT_ERROR","REMOVE_COMPONENT_ERROR","REQUEST_REMOVE_ALL_COMPONENT_PENDING","REQUEST_REMOVE_ALL_COMPONENT_ERROR","REQUEST_SHARD_INFO_CHANGE_COMPONENT_PENDING","tokens","shardInfo","toLowerCase","REQUEST_SHARD_INFO_CHANGE_COMPONENT_ERROR","REQUEST_CREATE_COMPONENT","REQUEST_CREATE_COMPONENTS_BULK","REQUEST_CHANGE_COMPONENT","REQUEST_CHANGE_COMPONENT_WITH_VALIDATION","takeEvery","SUBSCRIBE_TO_CHANGE_COMPONENT","REQUEST_REMOVE_COMPONENT","REQUEST_REMOVE_ALL_COMPONENT","REQUEST_SHARD_INFO_CHANGE_COMPONENT","optsStateMapping","invert","forEach","key","ESCAPE_FILTERS","filterPhases","substring","i","slice","join","fields","trim","matchId","isInt","DEFAULT_STATE_VALUES","displaySuccess","displayError","displayInfo","toast","success","info","DISPLAY_SUCCESS_NOTIFICATION","DISPLAY_ERROR_NOTIFICATION","DISPLAY_INFO_NOTIFICATION","getTournaments","getTournament","getOrganization","requestAllTournaments","tournamentResult","Array","isArray","games","g","replace","LOADING_ERROR","REQUEST_ALL_TOURNAMENT","requestTournamentFilters","tournamentId","REQUEST_TOURNAMENT_FILTERS_ERROR","REQUEST_TOURNAMENT_FILTERS","convertImgToBase64URL","reject","getImageAsBase64","TWIRE_ASSETS_URL","xhr","XMLHttpRequest","open","Date","getTime","responseType","onerror","onload","reader","FileReader","readAsDataURL","response","onloadend","base64data","statusText","send","requestTeamLeaderboard","requestTeamLeaderboardAsCsv","forExport","getTeamLogo","team","logo","platformLeaderboard","rank","teamName","teamLogo","wins","csv","arrayToCsv","downloadCsv","requestPlayerLeaderboard","requestPlayerLeaderboardAsCsv","platformStats","sortBy","numOfPlayers","roundStats","player","PLAYER_STATISTICS","damageDealt","parseInt","damageTaken","swimDistance","parseFloat","toFixed","walkDistance","rideDistance","requestTodaysWinners","numOfMatches","REQUEST_LAST_WINNERS","requestTeamReady","subscribeToMapVetoData","requestMapVetoPick","REQUEST_TEAM_READY_PENDING","teamReady","REQUEST_TEAM_READY_ERROR","SUBSCRIBE_TO_MAP_VETO_DATA_PENDING","SUBSCRIBE_TO_MAP_VETO_DATA_SUCCESS","SUBSCRIBE_TO_MAP_VETO_DATA_ERROR","REQUEST_MAP_VETO_PICK_PENDING","value","makePick","REQUEST_MAP_VETO_PICK_SUCCESS","setMapVetoData","REQUEST_MAP_VETO_PICK_ERROR","REQUEST_TEAM_READY","SUBSCRIBE_TO_MAP_VETO_DATA","REQUEST_MAP_VETO_PICK","createTournament","editTournament","createTournamentFilter","editTournamentFilter","deleteTournamentFilter","createTournamentPhase","editTournamentPhase","deleteTournamentPhase","changeTrackBy","addTournamentMatch","editTournamentMatch","addTournamentTeamSlots","addTournamentPrizePool","removeTournamentPrizePool","createTournamentAward","editTournamentAward","deleteTournamentAward","createTournamentAwardRow","editTournamentAwardRow","subscribeToTournamentMatch","subscribeToUsernameCheck","requestCreateTournament","requestEditTournament","requestTournament","requestCreateTournamentFilter","requestEditTournamentFilter","requestDeleteTournamentFilter","requestCreateOrEditTournamentPhase","requestDeleteTournamentPhase","requestChangeTrackedIGNs","requestSubscriptionToChangeTrackedIGNs","requestAddTournamentMatch","requestEditTournamentMatch","requestSubscriptionToTournamentMatch","requestTournamentLeaderboard","requestAddTournamentTeamSlots","requestAddTournamentPrizePool","requestRemoveTournamentPrizePool","requestSaveTournamentAward","requestSaveTournamentAwardRow","requestDeleteTournamentAward","REQUEST_CREATE_TOURNAMENT_PENDING","organizationId","eventType","TOURNAMENT_TYPE_TOURNAMENT","Error","displaySuccessNotification","REQUEST_CREATE_TOURNAMENT_ERROR","SAVING_ERROR","REQUEST_EDIT_TOURNAMENT_PENDING","image","additionalInfo","visible","REQUEST_EDIT_TOURNAMENT_ERROR","tournamentById","getAdditionalTournamentInfo","REQUEST_CREATE_TOURNAMENT_FILTER_PENDING","REQUEST_CREATE_TOURNAMENT_FILTER_ERROR","REQUEST_EDIT_TOURNAMENT_FILTER_PENDING","tournamentFilter","REQUEST_EDIT_TOURNAMENT_FILTER_ERROR","REQUEST_DELETE_TOURNAMENT_FILTER_PENDING","REQUEST_DELETE_TOURNAMENT_FILTER_ERROR","REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE_PENDING","existingPhaseForThisGroup","phase","platform","tournamentPhase","REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE_ERROR","graphQLErrors","message","REQUEST_DELETE_TOURNAMENT_PHASE_PENDING","splice","REQUEST_DELETE_TOURNAMENT_PHASE_ERROR","REQUEST_CHANGE_TRACKED_IGNS_PENDING","trackedIGNs","x","REQUEST_CHANGE_TRACKED_IGNS_ERROR","REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS_PENDING","subscription","REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS_ERROR","REQUEST_ADD_TOURNAMENT_MATCH_PENDING","REQUEST_ADD_TOURNAMENT_MATCH_SUCCESS","REQUEST_ADD_TOURNAMENT_MATCH_ERROR","REQUEST_EDIT_TOURNAMENT_MATCH_PENDING","REQUEST_EDIT_TOURNAMENT_MATCH_ERROR","REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH_PENDING","REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH_ERROR","REQUEST_TOURNAMENT_LEADERBOARD_PENDING","REQUEST_ADD_TOURNAMENT_TEAM_SLOTS_PENDING","REQUEST_ADD_TOURNAMENT_TEAM_SLOTS_ERROR","REQUEST_ADD_TOURNAMENT_PRIZE_POOL_PENDING","tournamentPrizePoolDistributions","prize","REQUEST_ADD_TOURNAMENT_PRIZE_POOL_ERROR","REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL_PENDING","REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL_SUCCESS","REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL_ERROR","tournamentAward","description","row","tournamentAwardRow","teamId","playerId","REQUEST_CREATE_TOURNAMENT","REQUEST_EDIT_TOURNAMENT","REQUEST_TOURNAMENT","REQUEST_CREATE_TOURNAMENT_FILTER","REQUEST_EDIT_TOURNAMENT_FILTER","REQUEST_DELETE_TOURNAMENT_FILTER","REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE","REQUEST_DELETE_TOURNAMENT_PHASE","REQUEST_CHANGE_TRACKED_IGNS","REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS","REQUEST_ADD_TOURNAMENT_MATCH","REQUEST_EDIT_TOURNAMENT_MATCH","REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH","REQUEST_TOURNAMENT_LEADERBOARD","REQUEST_ADD_TOURNAMENT_TEAM_SLOTS","REQUEST_ADD_TOURNAMENT_PRIZE_POOL","REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL","REQUEST_SAVE_TOURNAMENT_AWARD","REQUEST_SAVE_TOURNAMENT_AWARD_ROW","REQUEST_DELETE_TOURNAMENT_AWARD","requestTournamentPlayers","playerNamesByTournament","REQUEST_TOURNAMENT_PLAYERS","requestTournamentTeams","teamNamesByTournament","REQUEST_TOURNAMENT_TEAMS","requestAllCustomTournaments","getPlayerStats","getTeamStats","getPlayerHeadToHead","getTeamHeadToHead","getPlayerLeaderboard","getTeamLeaderboard","getLiveTeamLeaderboard","getLiveMapTeams","getLiveSurvivalStats","getLiveTeamStats","getLivePlayerStats","getLivePlayerKills","getLivePlayerKillsDamage","getScoreboard","getLiveTeamHeadToHead","getLivePlayerLeaderboard","getCurrentMatch","getTodaysWinners","getMapVeto","requestOverlayData","subscribeToOverlayData","componentQueries","componentType","overlayData","gameComponents","values","exportOverlay","item","teamNameProperty","exportLogo","requestOrganization","REQUEST_ORGANIZATION_PENDING","REQUEST_ORGANIZATION_ERROR","REQUEST_ORGANIZATION","requestHeadToHeadTeams","requestHeadToHeadTeamsAsCsv","leftId","leftTeamId","rightId","rightTeamId","avgPoints","avgRank","Math","round","requestHeadToHeadPlayers","requestHeadToHeadPlayersAsCsv","leftPlayerId","rightPlayerId","assists","dbnos","fork","notification","sagaMiddleware","createSagaMiddleware","middleware","store","createStore","rootReducer","applyMiddleware","run","awsSettings","Amplify","configure","ReactDOM","getElementById","navigator","serviceWorker","ready","registration","unregister","styled","div","CustomCard","ConfirmModal","dontShowAgain","text","dontShowAgainText","onClose","isOpen","toggle","ModalHeader","ModalBody","Row","Col","xs","ModalFooter","FormGroup","check","style","position","Label","Input","checked","onChange","setState","color","onClick","Datetime","styles","primary","tertiary","secondary","tertiaryDark","StyledDropdownMenu","DropdownMenu","transparent","Dropdown","selectedChoice","defaultChoice","noneChoice","choices","selected","controlled","alignLeft","alignRight","ButtonDropdown","DropdownToggle","caret","DropdownItem","StyledDropdownWrapper","DropdownWithInfo","toolTipText","useState","tooltipOpen","setTooltipOpen","replaceAll","icon","faQuestion","Tooltip","placement","target","FontAwesomeButton","FontAwesomeIcon","disabled","IconButton","tooltip","LoadingImage","img","StyledText","Loading","src","CustomModal","children","tertiaryTransparent","primaryGlow","primaryShadow","width","height","float","TextSearch","handleChange","e","handleOnSubmit","preventDefault","onSubmit","placeholder","CardBody","Form","lg","InputGroup","addonType","WrappedToastContainer","danger","warning","Toast","hideProgressBar","draggable","mapDispatchToProps","label","stateAttribute","SmallShowToggleButton","span","ShowToggleButton","ControllerBase","getOverlayUrl","protocol","host","setComponentData","loading","openModal","onCopy","faCopy","href","rel","faDownload","faMinus","faTimes","Collapse","COMPONENT_STATE_GREEN_BACKGROUND","SelectWrapper","Multiselect","options","selectedValues","selectionLimit","onSelect","onRemove","displayValue","maxStatistics","COMPONENT_STATE_STATS","s","allMatches","htmlFor","COMPONENT_STATE_MATCH","isNaN","COMPONENT_STATE_TEAM","COMPONENT_STATE_LEFT_TEAM","COMPONENT_STATE_RIGHT_TEAM","COMPONENT_STATE_PLAYER","COMPONENT_STATE_LEFT_PLAYER","COMPONENT_STATE_RIGHT_PLAYER","startAt","childPlayerStateAttribute","stateToMergeOnChange","newState","disabledOptionText","parentTeamStateAttribute","players","ign","PUBGPlayerStatsController","md","PUBGPlayerStatsOverlay","PUBGTeamStatsController","PUBGTeamStatsOverlay","PUBGPlayerHeadToHeadController","StyledHeaderRow","rowWidth","primaryLight","HeadToHeadHeader","PlayerWrapper","VsCol","PlayerNames","PlayerLogos","alt","onError","PlayerDetails","StyledLogoCol","marginLeft","HeadToHeadFooter","HeadToHeadWrapper","Wrapper","rowMargin","aelBlue","aelGreen","HeadToHeadBody","Details","margins","pslColor","PoweredByTwire","table","numOfStats","StatsTd","td","PjcPlayerHeadToHead","rowSpan","TableRow","tr","rowNumber","numberOfStats","RyerHeadToHeadPlayer","pubg","PUBGTeamHeadToHeadController","TeamWrapper","TeamNames","TeamLogos","TeamDetails","PjcTeamHeadToHead","TEAM_NAME_MAP","Team","numberForDisplay","selectedSpecificMatch","numberOfMatches","totalPoints","Pjc21TeamHeadToHead","RyerHeadToHeadTeams","PUBGPlayerLeaderboardController","backgroundWidth","LeaderboardHeader","margin","delayShow","delayHide","PlayerRow","ScoreRow","teamLogoSize","padding","LeaderboardPlayer","stat","numberToPlacementSurfix","toUpperCase","Content","LeaderboardWrapper","TwirePlayerLeaderBoard","topPlayers","LeaderboardFooter","TitleWrapper","headerWidth","fontSize","PslPlayerLeaderBoard","StyledTd","PjcPlayerLeaderBoard","colSpan","getPlayerImage","RegExp","teamInitial","PLAYER_CARD_HEIGHT","STATS_NAME_MAP","revives","longestKill","avgTimeSurvived","timeSurvived","heals","flashbangThrow","grenadeThrow","smokebombThrow","molotovThrow","headshotKills","Pjc21PlayerLeaderBoard","console","log","moment","startOf","seconds","format","knocks","stolenKills","killsStolenFromPlayer","killStreaks","boosts","vehicleDestroyed","deaths","RyerPlayerLeaderBoard","PUBGTeamLeaderboardController","StyledHeaderCol","radius","HeaderCol","StyledTeamCol","StyledTeamRow","numberOfTeams","LeaderboardBody","numberOfHalfTeams","firstHalfTeams","secondHalfTeams","TeamCol","totalKills","showBorder","TwireTeamLeaderboard","PslTeamLeaderboard","numberOfRows","side","LeaderboardTeam","teamTranslations","PjcTeamLeaderboard","matchNameSplit","matchNumber","LeaderboardSubHeader","StyledTable","RyerTeamLeaderboard","leftTeamRank","rightTeamRank","lineHeight","ProtalityTeamLeaderboard","CURRENT_MATCH_DATA","OVERALL_DATA","PUBGLiveTeamLeaderboardController","COMPONENT_STATE_OVERALL_STATS","COMPONENT_STATE_SUBSCRIPTION","TeamRow","initialPlayers","initial","from","LeaderboardTable","RyerLiveTeamLeaderboard","HeaderRow","animationDelay","animationOutDelay","EslLiveTeamLeaderboard","overall","parity","previousPosition","Pjc21LiveTeamLeaderboard","TitleTable","startingRank","DnwTeamLeaderboard","WIDTH","BeingTeamLeaderboard","colors","headerText","teamText","rankText","DefaultLiveTeamLeaderboard","PUBGLiveSurvivalLeaderboardController","teamDeath","isTeamDeath","addMissingPlayers","sortByPlayerStatus","currentKills","LeaderboardTitle","EslLiveSurvivalLeaderboard","PslLiveTeamLeaderboard","PjcLiveTeamLeaderboard","top16","DnwLiveTeamLeaderboard","BeingLiveSurvivalLeaderboard","PacLiveTeamLeaderboard","LeaderboardColumnTitle","ProtalityLiveSurvivalLeaderboard","StyledLogo","PsjLiveTeamLeaderboard","DefaultLiveSurvivalLeaderboard","PUBGLiveMapTeamsController","EslLiveMapTeams","playerIndex","PjcLiveMapTeams","corner","BeingLiveMapTeams","PlayerIndicator","EmptyTd","PUBGLiveTeamStatsController","Stat","last","TeamStat","TEAM_MAPPING","EslLiveTeamStats","totalDamage","currentDamage","currentPlacement","longName","Pjc21LiveTeamStats","avgKills","avgDamageDealt","BeingLiveTeamStats","avgKnocks","PlayerStat","PjcLivePlayerStats","killRank","damageRank","nameLength","ProtalityLivePlayerStats","PUBGLivePlayerKillsController","EslLivePlayerKills","BeingPlayerLeaderBoard","Leaderboard","PlayerTable","PictureDiv","TeamDiv","AttributeDiv","TwireDiv","cellspacing","cellpadding","ProtalityLivePlayerKills","DefaultPlayerKills","ProtalityLivePlayerKillsDamage","DefaultPlayerKillsDamage","PUBGLiveTeamHeadToHeadController","EslLiveTeamHeadToHead","PUBGLivePlayerLeaderboardController","EslLivePlayerLeaderBoard","PUBGCurrentMatchController","LastWinnersWrapper","TwireLastWinners","stateField","PUBGTodaysWinnersController","COMPONENT_STATE_MAP_ROTATION","COMPONENT_STATE_START_TIME","COMPONENT_STATE_TIME_BETWEEN_MATCHES","LastWinnersHeader","maps","colWidth","LogoRow","LastWinnersBody","currentMatchNumber","lw","LastWinnersFooter","TwireTodaysWinners","mapRotation","TodaysWinnersHeader","TodaysWinnersBody","TodaysWinnersFooter","nextMap","matchTime","teamNameLength","determineTeamNameSize","PslLastWinners","startTime","timeBetweenMatches","duration","add","utc","asMilliseconds","TodaysWinnersWrapper","Map","PjcTodaysWinners","time","PlayerStats","PLAYER_STATS_COMPONENT_NAME","controller","PlayerStatsController","PlayerStatsOverlay","PLAYER_STATS_COMPONENT_STATE_TO_OPTS_MAPPING","TeamStats","TEAM_STATS_COMPONENT_NAME","TeamStatsController","TeamStatsOverlay","TEAM_STATS_COMPONENT_STATE_TO_OPTS_MAPPING","PlayerHeadToHead","PLAYER_HEAD_TO_HEAD_COMPONENT_NAME","PlayerHeadToHeadController","PlayerHeadToHeadOverlay","PLAYER_HEAD_TO_HEAD_COMPONENT_STATE_TO_OPTS_MAPPING","TeamHeadToHead","TEAM_HEAD_TO_HEAD_COMPONENT_NAME","TeamHeadToHeadController","TeamHeadToHeadOverlay","TEAM_HEAD_TO_HEAD_COMPONENT_STATE_TO_OPTS_MAPPING","PLAYER_LEADERBOARD_COMPONENT_NAME","PlayerLeaderboardController","PlayerLeaderboardOverlay","PLAYER_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING","TEAM_LEADERBOARD_COMPONENT_NAME","TeamLeaderboardController","TeamLeaderboardOverlay","TEAM_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING","LiveTeamLeaderboard","LIVE_TEAM_LEADERBOARD_COMPONENT_NAME","LiveTeamLeaderboardController","LiveTeamLeaderboardOverlay","LIVE_TEAM_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING","LiveSurvivalLeaderboard","LIVE_SURVIVAL_LEADERBOARD_COMPONENT_NAME","LiveSurvivalLeaderboardController","LiveSurvivalLeaderboardOverlay","LIVE_SURVIVAL_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING","LiveMapTeams","LIVE_MAP_TEAMS_COMPONENT_NAME","LiveMapTeamsController","LiveMapTeamsOverlay","LIVE_MAP_TEAMS_COMPONENT_STATE_TO_OPTS_MAPPING","LiveTeamStats","LIVE_TEAM_STATS_COMPONENT_NAME","LiveTeamStatsController","LiveTeamStatsOverlay","LIVE_TEAM_STATS_COMPONENT_STATE_TO_OPTS_MAPPING","LivePlayerStats","LIVE_PLAYER_STATS_COMPONENT_NAME","LivePlayerStatsController","LivePlayerStatsOverlay","LIVE_PLAYER_STATS_COMPONENT_STATE_TO_OPTS_MAPPING","LivePlayerKills","LIVE_PLAYER_KILLS_COMPONENT_NAME","LivePlayerKillsController","LivePlayerKillsOverlay","LIVE_PLAYER_KILLS_COMPONENT_STATE_TO_OPTS_MAPPING","LiveTeamKillsDamage","LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_NAME","LivePlayerKillsDamageController","LivePlayerKillsDamageOverlay","LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_STATE_TO_OPTS_MAPPING","LiveTeamHeadToHead","LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_NAME","LiveTeamHeadToHeadController","LiveTeamHeadToHeadOverlay","LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_STATE_TO_OPTS_MAPPING","LivePlayerLeaderboard","LIVE_PLAYER_LEADERBOARD_COMPONENT_NAME","LivePlayerLeaderboardController","LivePlayerLeaderboardOverlay","LIVE_PLAYER_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING","CURRENT_MATCH_COMPONENT_NAME","CurrentMatchController","CurrentMatchOverlay","CURRENT_MATCH_COMPONENT_STATE_TO_OPTS_MAPPING","TODAYS_WINNERS_COMPONENT_NAME","TodaysWinnersController","TodaysWinnersOverlay","TODAYS_WINNERS_COMPONENT_STATE_TO_OPTS_MAPPING","CSGOPlayerStatsController","COMPONENT_STATE_OVERLAY_TYPE","overlayType","OVERLAY_TYPE_FULL_SCREEN","OVERLAY_TYPE_CARD","OVERLAY_TYPE_MVP","avgArmorLeft","avgBurningTime","avgDmg","avgEquipmentValue","avgFlashedTime","avgHealthLeft","hsKills","hsPercentage","kD","kR","maxDmg","maxEquipmentValue","roundsAceKills","roundsFourKills","roundsThreeKills","totalBurningTime","totalDmg","totalEquipmentValue","totalFlashedTime","ElisaPlayerStatsCard","getCsgoTeamLogo","getCsgoPlayerImage","firstName","lastName","ElisaPlayerStatsFullScreen","ElisaPlayerStatsFullScreenSponsor","ElisaPlayerStats","csgo","CSGOPlayerLeaderboardController","ElisaPlayerLeaderboard","ValorantPlayerStatsController","PlayerStatsTable","StatsRow","valorant","getTeamLogoByGame","sdpPrimary","ValorantPlayerStatsOverlay","ValorantPlayerLeaderboardController","SlideInAnimation","direction","delay","Animation","defaultProps","Image","imageStyle","size","center","maxWidth","display","justifyContent","alignItems","OverflowContainer","FontWrapper","Container","showOnlyMVP","Table","PlayerContainer","BackgroundImage","PlayerTeamImage","PlayerImage","getPlayerImageByGame","MVPTeamImage","MVP","PlayerFooter","PlayerName","PlayerScore","Key","Value","adr","PlayerLeaderboardTable","PlayerNameRow","ValorantPlayerLeaderboardOverlay","ValorantPlayerHeadToHeadController","PlayerHeadToHeadTable","ValorantPlayerHeadToHeadOverlay","ValorantTeamStatsController","TeamStatsTable","ValorantTeamStatsOverlay","ValorantTeamHeadToHeadController","TeamHeadToHeadTable","ValorantTeamHeadToHeadOverlay","ValorantTeamLeaderboardController","ShowInAnimation","getBackgroundColors","numberOfExtraTeams","howManyToDisplayPerPage","ceil","shouldEvenPaginate","tableHeight","LegendRow","TournamentLogo","Legend","gap","page","Cell","textToBottom","half","backgroundColor","getCountryFlag","country","iso","textAlign","uppercase","textToLeft","played","borderLeft","draws","losses","rd","Title","ValorantTeamLeaderboardOverlay","ScoreboardTable","StatsColumn","numOfColumns","TeamHeader","getValorantAgentIcon","characters","score","STATISTICS","kd","firstBloods","firstDeaths","econRating","hsProcentage","esr","plants","defuses","aces","multikills","clutches","ValorantScoreboardOverlay","COMPONENT_STATE_MAPS","availableMaps","availableRules","COMPONENT_STATE_RULE","copyText","InputGroupAddon","MapVetoController","generateTeamLink","RuleSelect","leftToken","rightToken","MAP_VETO_VETO_STATUS","MapPick","getMapByGame","Header","MapPicker","MapSide","mapPick","mapVoter","MAP_VETO_SIDE_COLORS","MAP_VETO_SIDE_MAPPING","MapVetoOverlay","Scoreboard","SCOREBOARD_COMPONENT_NAME","ScoreboardController","ScoreboardOverlay","SCOREBOARD_COMPONENT_STATE_TO_OPTS_MAPPING","MapVeto","MAP_VETO_COMPONENT_NAME","MAP_VETO_COMPONENT_STATE_TO_OPTS_MAPPING","useOnlyShard","skipOnCreateBulk","fixArgs","additionalParameters","pubgComponents","csgoComponents","valorantComponents","setPageTitle","n","isoCode","mapName","playerName","agent","getQueryParamFromUrl","param","URL","searchParams","get","columns","array","el","hiddenElement","createElement","encodeURI","download","click","getAdditionalName","parentAdditionalName","getFilterByAdditionalName","additionalName","acc","currentFilterId","nextFilter","overallFilter","getShardInfo","lastIndexOf","doesFirstStageHaveChildren","firstStage","isFirstStageOverall","numberOfPlayer","getAvailableComponentObjects","filteredComponents","Alert","attrs","background","AppAside","AppHeader","font","AppNavbarBrand","AppFooter","AppBreadcrumb2","AppSidebarNav","AppSwitch","infoDark","Button","ButtonGroup","Card","CardHeader","FormText","ListGroup","borderColor","ListGroupItem","border","Modal","Nav","Pagination","Progress","Select","defaultValue","o","TabContent","textarea","AUTH_LOGOUT_ERROR","createBrowserHistory","pick","TOURNAMENT_TYPE_SCRIM","TOURNAMENT_TYPES","TOURNAMENT_REGIONS","TOURNAMENT_TIERS","killSteals","killsStolenFrom","vehicleDestroys","PUBG_GAME_MODES","PUBG_DEFAULT_GAME_MODE","PUBG_SERVERS","PUBG_DEFAULT_SERVER","PUBGC_PLATFORMS","STAGE_FILTER_TYPE_ALL","STAGE_FILTER_TYPE_MATCH","PUBG_SUPER22_RULESET","PUBG_RULESETS","PUBG_DEFAULT_RULESET","componentsToCreate","stringify","mapStateToOpts","mapAdditionalParameters","requestRemoveAllComponent","OPTS_SUBSCRIPTION","OPTS_OVERALL_STATS","parameters","OPTS_GREEN_BACKGROUND","MAP_VETO_STATUS_PICK_MAP","MAP_VETO_STATUS_BAN_MAP","MAP_VETO_STATUS_PICK_SIDE","MAP_VETO_STATUS_TO_STRING_MAPPING","closeModal"],"mappings":"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","file":"static/js/main.97372cf5.chunk.js","sourcesContent":["// Types of action for requesting team leaderboard\r\nexport const REQUEST_TEAM_LEADERBOARD = 'REQUEST_TEAM_LEADERBOARD';\r\nexport const REQUEST_TEAM_LEADERBOARD_PENDING = 'REQUEST_TEAM_LEADERBOARD_PENDING';\r\nexport const REQUEST_TEAM_LEADERBOARD_SUCCESS = 'REQUEST_TEAM_LEADERBOARD_SUCCESS';\r\nexport const REQUEST_TEAM_LEADERBOARD_ERROR = 'REQUEST_TEAM_LEADERBOARD_ERROR';\r\n// Types of action for requesting team leaderboard as CSV\r\nexport const REQUEST_TEAM_LEADERBOARD_AS_CSV = 'REQUEST_TEAM_LEADERBOARD_AS_CSV';\r\n// Add teams to state\r\nexport const ADD_TEAM_LEADERBOARD = 'ADD_TEAM_LEADERBOARD';","// Action for requesting overlay data\r\nexport const REQUEST_OVERLAY_DATA = 'REQUEST_OVERLAY_DATA';\r\nexport const REQUEST_OVERLAY_DATA_PENDING = 'REQUEST_OVERLAY_DATA_PENDING';\r\nexport const REQUEST_OVERLAY_DATA_SUCCESS = 'REQUEST_OVERLAY_DATA_SUCCESS';\r\nexport const REQUEST_OVERLAY_DATA_ERROR = 'REQUEST_OVERLAY_DATA_ERROR';\r\n// Action for subscribing to overlay data\r\nexport const SUBSCRIBE_TO_OVERLAY_DATA = 'SUBSCRIBE_TO_OVERLAY_DATA';\r\nexport const SUBSCRIBE_TO_OVERLAY_DATA_PENDING = 'SUBSCRIBE_TO_OVERLAY_DATA_PENDING';\r\nexport const SUBSCRIBE_TO_OVERLAY_DATA_SUCCESS = 'SUBSCRIBE_TO_OVERLAY_DATA_SUCCESS';\r\nexport const SUBSCRIBE_TO_OVERLAY_DATA_ERROR = 'SUBSCRIBE_TO_OVERLAY_DATA_ERROR';\r\n// Action for setting received overlay data\r\nexport const SET_RECEIVED_OVERLAY_DATA = 'SET_RECEIVED_OVERLAY_DATA';","// Message for successfully copied URL\r\nexport const URL_COPIED = 'URL Successfully copied.'\r\n\r\n// General save success message\r\nexport const SAVE_SUCCESS = 'Changes saved';","// Types of action for requesting player leaderboard\r\nexport const REQUEST_PLAYER_LEADERBOARD = 'REQUEST_PLAYER_LEADERBOARD';\r\nexport const REQUEST_PLAYER_LEADERBOARD_PENDING = 'REQUEST_PLAYER_LEADERBOARD_PENDING';\r\nexport const REQUEST_PLAYER_LEADERBOARD_SUCCESS = 'REQUEST_PLAYER_LEADERBOARD_SUCCESS';\r\nexport const REQUEST_PLAYER_LEADERBOARD_ERROR = 'REQUEST_PLAYER_LEADERBOARD_ERROR';\r\n// Types of action for requesting player leaderboard as csv\r\nexport const REQUEST_PLAYER_LEADERBOARD_AS_CSV = 'REQUEST_PLAYER_LEADERBOARD_AS_CSV';","// Types of action for requesting player leaderboard\r\nexport const REQUEST_HEAD_TO_HEAD_TEAMS = 'REQUEST_HEAD_TO_HEAD_TEAMS';\r\nexport const REQUEST_HEAD_TO_HEAD_TEAMS_PENDING = 'REQUEST_HEAD_TO_HEAD_TEAMS_PENDING';\r\nexport const REQUEST_HEAD_TO_HEAD_TEAMS_SUCCESS = 'REQUEST_HEAD_TO_HEAD_TEAMS_SUCCESS';\r\nexport const REQUEST_HEAD_TO_HEAD_TEAMS_ERROR = 'REQUEST_HEAD_TO_HEAD_TEAMS_ERROR';\r\n// Types of action for requesting player leaderboard as csv\r\nexport const REQUEST_HEAD_TO_HEAD_TEAMS_AS_CSV = 'REQUEST_HEAD_TO_HEAD_TEAMS_AS_CSV';","// Types of action for requesting head to head players\r\nexport const REQUEST_HEAD_TO_HEAD_PLAYERS = 'REQUEST_HEAD_TO_HEAD_PLAYERS';\r\nexport const REQUEST_HEAD_TO_HEAD_PLAYERS_PENDING = 'REQUEST_HEAD_TO_HEAD_PLAYERS_PENDING';\r\nexport const REQUEST_HEAD_TO_HEAD_PLAYERS_SUCCESS = 'REQUEST_HEAD_TO_HEAD_PLAYERS_SUCCESS';\r\nexport const REQUEST_HEAD_TO_HEAD_PLAYERS_ERROR = 'REQUEST_HEAD_TO_HEAD_PLAYERS_ERROR';\r\n// Types of action for requesting head to head players as csv\r\nexport const REQUEST_HEAD_TO_HEAD_PLAYERS_AS_CSV = 'REQUEST_HEAD_TO_HEAD_PLAYERS_AS_CSV';","export default {\r\n http: 'https://api.twire.gg/graphql',\r\n ws: 'wss://api.twire.gg/socket',\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#F2AA04\",\"primaryLight\":\"#FEC33E\",\"primaryShadow\":\"rgba(239,168,40,0.4)\",\"primaryGlow\":\"#FEC33E\",\"secondary\":\"#fff\",\"tertiary\":\"#1C1D22\",\"tertiaryDark\":\"#161719\",\"tertiaryTransparent\":\"rgba(28,29,34,0.847059)\",\"warning\":\"#F28204\",\"danger\":\"#F4512D\",\"success\":\"#209191\",\"info\":\"#989AA2\",\"infoDark\":\"#5B6073\",\"transparent\":\"rgba(0,0,0,0)\",\"background\":\"#1C1D22\",\"font\":\"#fff\",\"balkanBlue\":\"#0587cd\",\"green303\":\"#0bba93\",\"pslColor\":\"#0064ff\",\"pcsColor\":\"#0185c8\",\"baeColor\":\"#ee2c43\",\"aelBlue\":\"#43dae9\",\"aelGreen\":\"#69fca2\",\"sdpPrimary\":\"#190d38\",\"sdpSecondary\":\"#190d38\"};","// Types of action for searching for team\r\nexport const REQUEST_TEAM_SEARCH = 'REQUEST_TEAM_SEARCH';\r\nexport const REQUEST_TEAM_SEARCH_PENDING = 'REQUEST_TEAM_SEARCH_PENDING';\r\nexport const REQUEST_TEAM_SEARCH_SUCCESS = 'REQUEST_TEAM_SEARCH_SUCCESS';\r\nexport const REQUEST_TEAM_SEARCH_ERROR = 'REQUEST_TEAM_SEARCH_ERROR';\r\n// Types of action for clearing the team search state\r\nexport const CLEAR_TEAM_SEARCH_STATE = 'CLEAR_TEAM_SEARCH_STATE';","// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.\n\nconst config = {\n \"aws_project_region\": \"eu-west-1\",\n \"aws_appsync_graphqlEndpoint\": \"https://tjjkdyimqrb7jjnc6m5rpefjtu.appsync-api.eu-west-1.amazonaws.com/graphql\",\n \"aws_appsync_region\": \"eu-west-1\",\n \"aws_appsync_authenticationType\": \"API_KEY\",\n \"aws_appsync_apiKey\": \"da2-vqpq6wms5ndbvhl2r7kvzbpmfi\",\n};\n\n\nexport default config;","// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.\n\nconst config = {\n \"aws_project_region\": \"eu-west-1\",\n \"aws_appsync_graphqlEndpoint\": \"https://qpyhfrkl6fhjjlqwvac3v23h7i.appsync-api.eu-west-1.amazonaws.com/graphql\",\n \"aws_appsync_region\": \"eu-west-1\",\n \"aws_appsync_authenticationType\": \"AMAZON_COGNITO_USER_POOLS\",\n};\n\n\nexport default config;","// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.\n\nconst awsmobile = {\n \"aws_project_region\": \"eu-west-1\",\n \"Auth\": {\n \"userPoolId\": \"eu-west-1_SMJkwP4IG\",\n \"userPoolWebClientId\": \"1hmv5lem9mce6hr8kic1kreluv\"\n }\n};\n\n\nexport default awsmobile;\n\n","/*\n* required polyfills\n*/\nimport \"core-js\";\nimport 'core-js/features/set/map';\n\n/** IE9, IE10 and IE11 requires all of the following polyfills. **/\n// import 'core-js/es6/symbol'\n// import 'core-js/es6/object'\n// import 'core-js/es6/function'\n// import 'core-js/es6/parse-int'\n// import 'core-js/es6/parse-float'\n// import 'core-js/es6/number'\n// import 'core-js/es6/math'\n// import 'core-js/es6/string'\n// import 'core-js/es6/date'\n// import 'core-js/es6/array'\n// import 'core-js/es6/regexp'\n// import 'core-js/es6/map'\n// import 'core-js/es6/weak-map'\n// import 'core-js/es6/set'\n// import 'core-js/es7/object'\n\n/** IE10 and IE11 requires the following for the Reflect API. */\n// import 'core-js/es6/reflect'\n\n/** Evergreen browsers require these. **/\n// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.\n// import 'core-js/es7/reflect'\n\n// CustomEvent() constructor functionality in IE9, IE10, IE11\n(function () {\n\n if ( typeof window.CustomEvent === \"function\" ) return false\n\n function CustomEvent ( event, params ) {\n params = params || { bubbles: false, cancelable: false, detail: undefined }\n var evt = document.createEvent( 'CustomEvent' )\n evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail )\n return evt\n }\n\n CustomEvent.prototype = window.Event.prototype\n\n window.CustomEvent = CustomEvent\n})()\n","import React, { useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport {\r\n Route,\r\n Redirect,\r\n} from 'react-router-dom';\r\nimport { requestLoggedInUser } from './redux/auth/actions';\r\n\r\nfunction PrivateRoute(props) {\r\n const { component: Component, ...attributes } = props;\r\n const { sub, loaded } = useSelector(state => state.auth);\r\n\r\n const dispatch = useDispatch();\r\n useEffect(() => {\r\n if (!loaded) {\r\n dispatch(requestLoggedInUser());\r\n }\r\n });\r\n\r\n if (!loaded) return
Loading...
\r\n\r\n return (\r\n {\r\n return sub ?\r\n \r\n :\r\n \r\n }}\r\n />\r\n )\r\n}\r\n\r\nexport default PrivateRoute;","import ApolloClient from 'apollo-client';\r\nimport { Auth } from 'aws-amplify';\r\nimport { split } from 'apollo-link';\r\nimport { createHttpLink } from \"apollo-link-http\";\r\nimport { InMemoryCache } from 'apollo-cache-inmemory';\r\nimport { setContext } from \"apollo-link-context\";\r\nimport * as AbsintheSocket from \"@absinthe/socket\";\r\nimport { createAbsintheSocketLink } from \"@absinthe/socket-apollo-link\";\r\nimport { Socket as PhoenixSocket } from \"phoenix\";\r\nimport { hasSubscription } from \"@jumpn/utils-graphql\";\r\n\r\nlet endpointConfig;\r\nif (process.env.REACT_APP_STAGE === 'prod') {\r\n endpointConfig = require('./configs/endpointConfigProd').default;\r\n} else {\r\n endpointConfig = require('./configs/endpointConfig').default;\r\n}\r\n\r\n// Create an HTTP link to the Absinthe server.\r\nconst httpLink = createHttpLink({\r\n uri: endpointConfig.http,\r\n});\r\n\r\n// Use setContext to create a chainable link object that sets\r\n// the token cookie to the Authorization header.\r\nconst authLink = setContext((_, { headers }) => {\r\n // Get the authentication token from the cookie if it exists.\r\n return Auth.currentAuthenticatedUser().then(user => {\r\n // Add the new Authorization header.\r\n return {\r\n headers: {\r\n ...headers,\r\n authorization: `Bearer ${user.signInUserSession.accessToken.jwtToken}`,\r\n },\r\n };\r\n }).catch(() => {\r\n return headers;\r\n });\r\n});\r\n\r\n// Chain the HTTP link and the authorization link.\r\nconst authedHttpLink = authLink.concat(httpLink);\r\n\r\n// Create a standard Phoenix websocket connection. If you need\r\n// to provide additional params, like an authentication token,\r\n// you can configure them in the `params` option.\r\nconst phoenixSocket = new PhoenixSocket(endpointConfig.ws, {\r\n params: () => {\r\n // Get the authentication token from the cookie if it exists.\r\n return Auth.currentAuthenticatedUser().then(user => {\r\n // Add the new Authorization header.\r\n return {\r\n token: `Bearer ${user.signInUserSession.accessToken.jwtToken}`,\r\n };\r\n }).catch(() => {\r\n return {};\r\n });\r\n }\r\n});\r\n\r\n// Wrap the Phoenix socket in an AbsintheSocket.\r\nconst absintheSocket = AbsintheSocket.create(phoenixSocket);\r\n\r\n// Create an Apollo link from the AbsintheSocket instance.\r\nconst websocketLink = createAbsintheSocketLink(absintheSocket);\r\n\r\n// If the query contains a subscription, send it through the\r\n// websocket link. Otherwise, send it through the HTTP link.\r\nconst link = split(\r\n operation => hasSubscription(operation.query),\r\n websocketLink,\r\n authedHttpLink\r\n);\r\n\r\nconst defaultOptions = {\r\n watchQuery: {\r\n fetchPolicy: 'no-cache',\r\n errorPolicy: 'ignore',\r\n },\r\n query: {\r\n fetchPolicy: 'no-cache',\r\n errorPolicy: 'all',\r\n },\r\n}\r\n\r\n// Apollo client\r\nexport default new ApolloClient({\r\n link: link,\r\n cache: new InMemoryCache({\r\n addTypename: false,\r\n }),\r\n defaultOptions: defaultOptions,\r\n});","import React, { Component } from 'react';\r\nimport { Router, Route, Switch } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport { ApolloProvider } from '@apollo/react-hooks';\r\nimport PrivateRoute from './PrivateRoute';\r\nimport history from './history';\r\nimport apolloClient from './apolloClients/apolloClient';\r\nimport './App.scss';\r\nimport { saveApolloClient } from './redux/apollo/actions';\r\nimport { HEAD_TO_HEAD_PLAYER_TYPE, HEAD_TO_HEAD_TEAM_TYPE } from './util/Constants';\r\n\r\nconst loading = () =>
Loading...
;\r\n\r\n// Containers\r\nconst DefaultLayout = React.lazy(() => import('./containers/DefaultLayout'));\r\n\r\n// Pages\r\nconst Home = React.lazy(() => import('./views/Home/Home'));\r\nconst Login = React.lazy(() => import('./views/Pages/Login'));\r\nconst Page404 = React.lazy(() => import('./views/Pages/Page404'));\r\nconst Page500 = React.lazy(() => import('./views/Pages/Page500'));\r\nconst OverlayBase = React.lazy(() => import('./views/Components/common/base/overlay/OverlayBase'));\r\nconst MapVetoPanel = React.lazy(() => import('./views/Components/common/mapVeto/panel/MapVetoPanel'));\r\nconst TeamLeaderboard = React.lazy(() => import('./views/CustomTournamentOverlays/TeamLeaderboard'));\r\nconst PlayerLeaderboard = React.lazy(() => import('./views/CustomTournamentOverlays/PlayerLeaderboard'));\r\nconst TodaysWinners = React.lazy(() => import('./views/CustomTournamentOverlays/TodaysWinners'));\r\nconst HeadToHeadTeams = React.lazy(() => import('./views/CustomTournamentOverlays/HeadToHeadTeams'));\r\nconst HeadToHeadPlayers = React.lazy(() => import('./views/CustomTournamentOverlays/HeadToHeadPlayers'));\r\nconst CurrentMatch = React.lazy(() => import('./views/CustomTournamentOverlays/CurrentMatch'));\r\n\r\nclass App extends Component {\r\n componentDidMount() {\r\n this.props.saveApolloClient(apolloClient);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n } />\r\n } />\r\n } />\r\n } />\r\n } />\r\n } />\r\n } />\r\n } />\r\n } />\r\n } />\r\n } />\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n saveApolloClient: (client) => dispatch(saveApolloClient(client)),\r\n});\r\n\r\nexport default connect(null, mapDispatchToProps)(App);\r\n","import { \r\n SAVE_APOLLO_CLIENT,\r\n} from './types';\r\n\r\n/**\r\n * Action for saving Apollo client\r\n */\r\nexport const saveApolloClient = (client) => ({\r\n type: SAVE_APOLLO_CLIENT,\r\n payload: {\r\n client: client,\r\n }\r\n});","// Saves Apollo Client to state\r\nexport const SAVE_APOLLO_CLIENT = 'SAVE_APOLLO_CLIENT';","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://goo.gl/SC7cgQ'\n );\n });\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log('New content is available; please refresh.');\n\n // Execute callback\n if (config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import { \r\n SAVE_APOLLO_CLIENT,\r\n} from './types';\r\n\r\nconst INITIAL_STATE = {\r\n client: null,\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On Apollo client save\r\n case SAVE_APOLLO_CLIENT:\r\n return {\r\n ...state,\r\n ...action.payload,\r\n };\r\n \r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import { AUTH_TOURNAMENT_ORGANIZER_GROUP } from \"./Constants\";\r\n\r\n/**\r\n * Checks if user has permission to see CG\r\n * \r\n * @param {*} user \r\n */\r\nexport const isTournamentOrganizer = (user) => {\r\n return (user.userGroups || []).includes(AUTH_TOURNAMENT_ORGANIZER_GROUP);\r\n}","import { \r\n SET_AUTH_USER,\r\n UNSET_AUTH_USER,\r\n REQUEST_TOURNAMENT_ORGANIZER_TOKEN_SUCCESS,\r\n REQUEST_USER_SUBSCRIPTION_SUCCESS,\r\n} from './types';\r\nimport { isTournamentOrganizer } from '../../util/AuthUtil';\r\n\r\nconst INITIAL_STATE = {\r\n loaded: false,\r\n username: null,\r\n sub: null,\r\n userGroups: [],\r\n token: null,\r\n isTournamentOrganizer: false,\r\n premium: null,\r\n trial: null,\r\n premiumValidFrom: null,\r\n premiumValidTo: null,\r\n planId: null,\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On set authenticated user\r\n case SET_AUTH_USER:\r\n return {\r\n ...state,\r\n loaded: true,\r\n username: action.payload.username,\r\n sub: action.payload.sub,\r\n userGroups: action.payload.userGroups,\r\n isTournamentOrganizer: isTournamentOrganizer(action.payload),\r\n };\r\n\r\n // On remove authenticated user\r\n case UNSET_AUTH_USER:\r\n return {\r\n loaded: true,\r\n username: null,\r\n sub: null,\r\n userGroups: [],\r\n token: null,\r\n };\r\n\r\n // On tournament organizer token success\r\n case REQUEST_TOURNAMENT_ORGANIZER_TOKEN_SUCCESS:\r\n return {\r\n ...state,\r\n token: action.payload,\r\n };\r\n\r\n // On user subscription received\r\n case REQUEST_USER_SUBSCRIPTION_SUCCESS:\r\n return {\r\n ...state,\r\n premium: action.payload.status,\r\n trial: action.payload.trial,\r\n premiumValidFrom: action.payload.validFrom,\r\n premiumValidTo: action.payload.validTo,\r\n planId: action.payload.planId,\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import { \r\n REQUEST_CURRENT_MATCH_SUCCESS,\r\n REQUEST_CURRENT_MATCH_PENDING,\r\n REQUEST_CURRENT_MATCH_ERROR,\r\n} from './types';\r\n\r\nconst INITIAL_STATE = {\r\n loaded: false,\r\n currentMatch: 0,\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On request last winners pending or error\r\n case REQUEST_CURRENT_MATCH_PENDING:\r\n case REQUEST_CURRENT_MATCH_ERROR:\r\n return INITIAL_STATE;\r\n\r\n // On request last winners success\r\n case REQUEST_CURRENT_MATCH_SUCCESS:\r\n return {\r\n loaded: true,\r\n currentMatch: action.payload,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import { \r\n REQUEST_CREATE_COMPONENT_SUCCESS,\r\n REQUEST_CHANGE_COMPONENT_SUCCESS,\r\n REQUEST_REMOVE_COMPONENT_SUCCESS,\r\n REQUEST_SHARD_INFO_CHANGE_COMPONENT_SUCCESS,\r\n REQUEST_CREATE_COMPONENTS_BULK_SUCCESS,\r\n REQUEST_REMOVE_ALL_COMPONENT_SUCCESS,\r\n SET_COMPONENT_STATE,\r\n SET_COMPONENT_DATA,\r\n} from './types';\r\n\r\nconst INITIAL_STATE = {\r\n components: [],\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On component create\r\n case REQUEST_CREATE_COMPONENT_SUCCESS:\r\n return {\r\n ...state,\r\n components: [...state.components, action.payload],\r\n };\r\n\r\n // On component create bulk\r\n case REQUEST_CREATE_COMPONENTS_BULK_SUCCESS:\r\n return {\r\n ...state,\r\n components: [...state.components, ...action.payload],\r\n };\r\n\r\n // On component chage\r\n case REQUEST_CHANGE_COMPONENT_SUCCESS:\r\n return {\r\n ...state,\r\n components: state.components.map(c => c.token === action.payload.token ? action.payload : c),\r\n };\r\n\r\n // On components shard info change\r\n case REQUEST_SHARD_INFO_CHANGE_COMPONENT_SUCCESS:\r\n return {\r\n ...state,\r\n components: action.payload,\r\n }\r\n \r\n // On component remove\r\n case REQUEST_REMOVE_COMPONENT_SUCCESS:\r\n return {\r\n ...state,\r\n components: state.components.filter(c => c.token !== action.payload),\r\n };\r\n\r\n // On remove all components\r\n case REQUEST_REMOVE_ALL_COMPONENT_SUCCESS:\r\n return {\r\n ...state,\r\n components: [],\r\n }\r\n\r\n // On set component state\r\n case SET_COMPONENT_STATE:\r\n return {\r\n ...state,\r\n components: state.components.map(c =>\r\n c.token === action.payload.component.token ?\r\n { ...c, state: { ...c.state, ...action.payload.state} }\r\n :\r\n c\r\n ),\r\n }\r\n\r\n // On set component data\r\n case SET_COMPONENT_DATA:\r\n return {\r\n ...state,\r\n components: state.components.map(c =>\r\n c.token === action.payload.component.token ?\r\n {\r\n ...c,\r\n matches: action.payload.data.matches,\r\n teams: action.payload.data.teams,\r\n availableStatistics: action.payload.data.availableStatistics,\r\n }\r\n :\r\n c\r\n ),\r\n }\r\n \r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import { \r\n REQUEST_ALL_TOURNAMENT_PENDING,\r\n REQUEST_ALL_TOURNAMENT_ERROR,\r\n REQUEST_ALL_TOURNAMENT_SUCCESS,\r\n} from './types';\r\nimport {\r\n PUBG_GAME,\r\n PUBGC_GAME,\r\n CSGO_GAME,\r\n VALORANT_GAME,\r\n} from '../../util/Games';\r\nimport { REQUEST_CREATE_TOURNAMENT_SUCCESS } from '../tournament/types';\r\n\r\nconst INITIAL_STATE = {\r\n loaded: false,\r\n [PUBG_GAME]: [],\r\n [PUBGC_GAME]: [],\r\n [CSGO_GAME]: [],\r\n [VALORANT_GAME]: [],\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On request all tournament pending or error\r\n case REQUEST_ALL_TOURNAMENT_PENDING:\r\n case REQUEST_ALL_TOURNAMENT_ERROR:\r\n return INITIAL_STATE;\r\n\r\n // On request all tournament success\r\n case REQUEST_ALL_TOURNAMENT_SUCCESS:\r\n return {\r\n ...state,\r\n loaded: true,\r\n [PUBG_GAME]: action.payload.pubgTournaments,\r\n [PUBGC_GAME]: action.payload.pubgcTournaments,\r\n [CSGO_GAME]: action.payload.csgoTournaments,\r\n [VALORANT_GAME]: action.payload.valorantTournaments,\r\n };\r\n\r\n // On tournament create success\r\n case REQUEST_CREATE_TOURNAMENT_SUCCESS:\r\n return {\r\n ...state,\r\n [action.payload.game]: [ action.payload, ...state[action.payload.game] ],\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import {\r\n REQUEST_TOURNAMENT_FILTERS_PENDING,\r\n REQUEST_TOURNAMENT_FILTERS_SUCCESS,\r\n} from './types';\r\n\r\nconst INITIAL_STATE = {\r\n tournamentFiltersLoaded: false,\r\n tournamentFilters: [],\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On request tournament filters pending\r\n case REQUEST_TOURNAMENT_FILTERS_PENDING:\r\n return {\r\n ...state,\r\n tournamentFiltersLoaded: false,\r\n tournamentFilters: [],\r\n }\r\n\r\n // On request tournament filters success\r\n case REQUEST_TOURNAMENT_FILTERS_SUCCESS:\r\n return {\r\n ...state,\r\n tournamentFiltersLoaded: true,\r\n tournamentFilters: action.payload,\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","/**\r\n * Compares teams for team leaderboard\r\n */\r\nexport const compareTeams = (teamA, teamB) => {\r\n const totalPointsA = teamA.points + teamA.kills;\r\n const totalPointsB = teamB.points + teamB.kills;\r\n if (totalPointsA !== totalPointsB) {\r\n return totalPointsA > totalPointsB ? -1 : 1;\r\n } else if (teamA.kills !== teamB.kills) {\r\n return teamA.kills > teamB.kills ? -1 : 1;\r\n } else if (teamA.bestMatchPoints !== teamB.bestMatchPoints) {\r\n return teamA.bestMatchPoints > teamB.bestMatchPoints ? -1 : 1;\r\n } else if (teamA.lastKills !== teamB.lastKills) {\r\n return teamA.lastKills > teamB.lastKills ? -1 : 1;\r\n } else {\r\n return teamA.lastPoints > teamB.lastPoints ? -1 : 1;\r\n }\r\n}","import { \r\n REQUEST_TEAM_LEADERBOARD_PENDING,\r\n REQUEST_TEAM_LEADERBOARD_SUCCESS,\r\n REQUEST_TEAM_LEADERBOARD_ERROR,\r\n ADD_TEAM_LEADERBOARD,\r\n} from './types';\r\nimport { compareTeams } from '../../util/LeaderboardUtil';\r\n\r\nconst INITIAL_STATE = {\r\n loaded: false,\r\n leaderboard: [],\r\n matchName: null,\r\n lastMatchName: null,\r\n groupName: null,\r\n overlayDesign: null,\r\n overlayColor: null,\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On request team leaderboard pending or error\r\n case REQUEST_TEAM_LEADERBOARD_PENDING:\r\n case REQUEST_TEAM_LEADERBOARD_ERROR:\r\n return INITIAL_STATE;\r\n\r\n // On request team leaderboard success\r\n case REQUEST_TEAM_LEADERBOARD_SUCCESS:\r\n return {\r\n loaded: true,\r\n matchName: action.payload.matchName,\r\n lastMatchName: action.payload.lastMatchName,\r\n groupName: action.payload.groupName,\r\n leaderboard: action.payload.leaderboard.sort((a, b) => compareTeams(a, b)),\r\n overlayDesign: action.payload.overlayDesign,\r\n overlayColor: action.payload.overlayColor,\r\n };\r\n\r\n case ADD_TEAM_LEADERBOARD:\r\n return {\r\n loaded: true,\r\n leaderboard: action.payload,\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import { \r\n CLOSE_MODAL,\r\n OPEN_MODAL\r\n} from './types';\r\n\r\nconst INITIAL_STATE = {\r\n title: null,\r\n content: null,\r\n opened: false,\r\n onConfirm: () => {},\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On modal open\r\n case OPEN_MODAL:\r\n return {\r\n ...state,\r\n title: action.payload.title,\r\n content: action.payload.content,\r\n opened: true,\r\n onConfirm: action.payload.onConfirm,\r\n };\r\n\r\n // On modal close\r\n case CLOSE_MODAL:\r\n return INITIAL_STATE;\r\n \r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import { \r\n REQUEST_PLAYER_LEADERBOARD_PENDING,\r\n REQUEST_PLAYER_LEADERBOARD_SUCCESS,\r\n REQUEST_PLAYER_LEADERBOARD_ERROR,\r\n} from './types';\r\n\r\nconst INITIAL_STATE = {\r\n loaded: false,\r\n leaderboard: [],\r\n matchName: null,\r\n lastMatchName: null,\r\n groupName: null,\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On request team leaderboard pending or error\r\n case REQUEST_PLAYER_LEADERBOARD_PENDING:\r\n case REQUEST_PLAYER_LEADERBOARD_ERROR:\r\n return INITIAL_STATE;\r\n\r\n // On request team leaderboard success\r\n case REQUEST_PLAYER_LEADERBOARD_SUCCESS:\r\n return {\r\n loaded: true,\r\n leaderboard: action.payload.leaderboard,\r\n matchName: action.payload.matchName,\r\n lastMatchName: action.payload.lastMatchName,\r\n groupName: action.payload.groupName,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import { \r\n REQUEST_LAST_WINNERS_PENDING,\r\n REQUEST_LAST_WINNERS_SUCCESS,\r\n REQUEST_LAST_WINNERS_ERROR,\r\n} from './types';\r\n\r\nconst INITIAL_STATE = {\r\n loaded: false,\r\n todaysWinners: [],\r\n lastMatchNumber: null,\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On request last winners pending or error\r\n case REQUEST_LAST_WINNERS_PENDING:\r\n case REQUEST_LAST_WINNERS_ERROR:\r\n return INITIAL_STATE;\r\n\r\n // On request last winners success\r\n case REQUEST_LAST_WINNERS_SUCCESS:\r\n return {\r\n loaded: true,\r\n todaysWinners: action.payload.winners,\r\n lastMatchNumber: action.payload.lastMatchNumber,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import { \r\n REQUEST_TEAM_READY_SUCCESS,\r\n SET_MAP_VETO_DATA,\r\n} from './types';\r\n\r\nconst INITIAL_STATE = {\r\n teamToken: null,\r\n overlayToken: null,\r\n status: null,\r\n logs: [],\r\n pickValues: [],\r\n timer: null,\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On team ready success\r\n case REQUEST_TEAM_READY_SUCCESS:\r\n return {\r\n ...state,\r\n ...action.payload,\r\n };\r\n\r\n // On map veto data received\r\n case SET_MAP_VETO_DATA:\r\n return {\r\n ...state,\r\n ...action.payload,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import { STAGE_FILTER_TYPE_HIDDEN, STAGE_FILTER_TYPE_OVERALL } from '../../util/Constants';\r\nimport {\r\n REQUEST_TOURNAMENT_PENDING,\r\n REQUEST_TOURNAMENT_ERROR,\r\n REQUEST_TOURNAMENT_SUCCESS,\r\n REQUEST_EDIT_TOURNAMENT_SUCCESS,\r\n REQUEST_CREATE_TOURNAMENT_FILTER_SUCCESS,\r\n REQUEST_EDIT_TOURNAMENT_FILTER_SUCCESS,\r\n REQUEST_DELETE_TOURNAMENT_FILTER_SUCCESS,\r\n REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE_SUCCESS,\r\n ON_TOURNAMENT_MATCH_RECEIVED,\r\n REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH_SUCCESS,\r\n REQUEST_EDIT_TOURNAMENT_MATCH_SUCCESS,\r\n REQUEST_CHANGE_TRACKED_IGNS_SUCCESS,\r\n REQUEST_TOURNAMENT_LEADERBOARD_SUCCESS,\r\n REQUEST_TOURNAMENT_LEADERBOARD_ERROR,\r\n REQUEST_CREATE_TOURNAMENT_SUCCESS,\r\n ON_CHANGE_TRACK_IGNS,\r\n REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS_SUCCESS,\r\n REQUEST_DELETE_TOURNAMENT_PHASE_SUCCESS,\r\n REQUEST_ADD_TOURNAMENT_TEAM_SLOTS_SUCCESS,\r\n REQUEST_ADD_TOURNAMENT_PRIZE_POOL_SUCCESS,\r\n SET_TOURNAMENT_GROUP_TEAMS,\r\n CLEAR_TOURNAMENT_STATE,\r\n REQUEST_SAVE_TOURNAMENT_AWARD_SUCCESS,\r\n REQUEST_SAVE_TOURNAMENT_AWARD_ROW_SUCCESS,\r\n ADD_NEW_TOURNAMENT_AWARD,\r\n REQUEST_DELETE_TOURNAMENT_AWARD_SUCCESS,\r\n} from './types';\r\n\r\nconst INITIAL_STATE = {\r\n loaded: false,\r\n matches: [],\r\n phases: [],\r\n teams: [],\r\n leaderboard: [],\r\n tournamentAwards: [],\r\n tournamentFilters: [],\r\n tournamentPhases: [],\r\n structureSelected: false,\r\n tournamentMatchSubscription: null,\r\n changeTrackIgnsSubscription: null,\r\n tournamentGroupTeams: [],\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On request all custom tournament pending\r\n case REQUEST_TOURNAMENT_PENDING:\r\n return {\r\n ...state,\r\n loaded: false,\r\n }\r\n\r\n // On request all custom tournament error\r\n case REQUEST_TOURNAMENT_ERROR:\r\n return INITIAL_STATE;\r\n\r\n // On request all custom tournament success\r\n case REQUEST_TOURNAMENT_SUCCESS:\r\n case REQUEST_EDIT_TOURNAMENT_SUCCESS:\r\n action.payload.tournamentFilters.sort((a, b) => a.type === STAGE_FILTER_TYPE_OVERALL ? -1 : b.type === STAGE_FILTER_TYPE_OVERALL ? 1 : a.id > b.id ? -1 : 1);\r\n const selectedStageFilter = (action.payload.tournamentFilters.find(f => !f.parentId) || {});\r\n return {\r\n ...state,\r\n loaded: true,\r\n ...action.payload,\r\n structureSelected: action.payload.tournamentFilters.length || action.payload.tournamentPhases.length,\r\n tournamentWithoutGroups: action.payload.tournamentFilters.length === 1 && action.payload.tournamentFilters[0].type === STAGE_FILTER_TYPE_HIDDEN,\r\n tournamentGroupTeams: [...(selectedStageFilter.teams || [])],\r\n };\r\n\r\n // On tournament create success\r\n case REQUEST_CREATE_TOURNAMENT_SUCCESS:\r\n return {\r\n ...INITIAL_STATE,\r\n ...action.payload,\r\n }\r\n\r\n // On request upsert \r\n case REQUEST_CREATE_TOURNAMENT_FILTER_SUCCESS:\r\n case REQUEST_EDIT_TOURNAMENT_FILTER_SUCCESS:\r\n const filters = state.tournamentFilters;\r\n const filterIndex = filters.indexOf(filters.find(f => f.id === action.payload.id));\r\n if (filterIndex !== -1) {\r\n filters[filterIndex] = action.payload;\r\n } else {\r\n filters.push(action.payload);\r\n }\r\n return {\r\n ...state,\r\n tournamentFilters: [...filters],\r\n tournamentWithoutGroups: filters.length === 1 && filters[0].type === STAGE_FILTER_TYPE_HIDDEN,\r\n };\r\n\r\n // On tournament filter delete success\r\n case REQUEST_DELETE_TOURNAMENT_FILTER_SUCCESS:\r\n const newFilters = [...state.tournamentFilters.filter(f => f.id !== action.payload)];\r\n return {\r\n ...state,\r\n tournamentFilters: newFilters,\r\n }\r\n\r\n // On tournament phase create, edit or success\r\n case REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE_SUCCESS:\r\n const phases = state.tournamentPhases;\r\n const phaseIndex = phases.indexOf(phases.find(f => f.id === action.payload.id));\r\n if (phaseIndex !== -1) {\r\n phases[phaseIndex] = action.payload;\r\n } else {\r\n phases.push(action.payload);\r\n }\r\n return {\r\n ...state,\r\n tournamentPhases: [...phases],\r\n }\r\n \r\n // On tournament phase delete success\r\n case REQUEST_DELETE_TOURNAMENT_PHASE_SUCCESS:\r\n return {\r\n ...state,\r\n tournamentPhases: action.payload,\r\n }\r\n\r\n // On change tracked igns\r\n case REQUEST_CHANGE_TRACKED_IGNS_SUCCESS:\r\n const notUpdatedPhases = state.tournamentPhases.filter(p => p.tournamentFilterId !== action.payload.tournamentFilterId);\r\n return {\r\n ...state,\r\n tournamentPhases: [...notUpdatedPhases, ...action.payload.newPhases],\r\n }\r\n\r\n // On tournament match subscription created\r\n case REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH_SUCCESS:\r\n return {\r\n ...state,\r\n tournamentMatchSubscription: action.payload,\r\n }\r\n\r\n // On change track IGN subscription created\r\n case REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS_SUCCESS:\r\n return {\r\n ...state,\r\n changeTrackIgnsSubscription: action.payload,\r\n }\r\n\r\n // On tournament match edit success\r\n case REQUEST_EDIT_TOURNAMENT_MATCH_SUCCESS:\r\n return {\r\n ...state,\r\n matches: state.matches.map(m => m.id === action.payload.id ? action.payload : m),\r\n }\r\n\r\n // On tournament leaderboard success\r\n case REQUEST_TOURNAMENT_LEADERBOARD_SUCCESS:\r\n return {\r\n ...state,\r\n leaderboard: action.payload,\r\n }\r\n\r\n // On tournament leaderboard error\r\n case REQUEST_TOURNAMENT_LEADERBOARD_ERROR:\r\n return {\r\n ...state,\r\n leaderboard: [],\r\n }\r\n\r\n // On tournament team add success\r\n case REQUEST_ADD_TOURNAMENT_TEAM_SLOTS_SUCCESS:\r\n const tournamentFilters = state.tournamentFilters.map(f => {\r\n if (f.id === action.payload.tournamentFilterId) {\r\n f.teams = action.payload.teams;\r\n }\r\n return f;\r\n });\r\n return {\r\n ...state,\r\n tournamentFilters: tournamentFilters,\r\n tournamentGroupTeams: action.payload.teams,\r\n }\r\n\r\n // On tournament prize pool add success\r\n case REQUEST_ADD_TOURNAMENT_PRIZE_POOL_SUCCESS:\r\n const tfs = state.tournamentFilters.map(f => {\r\n if (f.id === action.payload.tournamentFilterId) {\r\n f.prizePoolDefinitions = action.payload.prizePoolDefinitions;\r\n }\r\n return f;\r\n });\r\n return {\r\n ...state,\r\n tournamentFilters: tfs,\r\n }\r\n\r\n // On track IGNs change received\r\n case ON_CHANGE_TRACK_IGNS:\r\n const newPhases = state.tournamentPhases.map(p => {\r\n if (p.tournamentFilterId === action.payload.tournamentFilterId) {\r\n p.trackBy = action.payload.trackBy;\r\n }\r\n return p;\r\n })\r\n return {\r\n ...state,\r\n tournamentPhases: newPhases,\r\n }\r\n\r\n // On tournament match received\r\n case ON_TOURNAMENT_MATCH_RECEIVED:\r\n if (!state.matches.some(m => m.id === action.payload.id || m.gameMatchId === action.payload.gameMatchId)) {\r\n state.matches.push(action.payload);\r\n state.matches.sort((a, b) => a.gameCreatedAt > b.gameCreatedAt ? -1 : 1);\r\n }\r\n return {\r\n ...state,\r\n matches: state.matches.map(m => m.id === action.payload.id ? action.payload : m),\r\n }\r\n\r\n // Action for setting the current tournament group teams\r\n case SET_TOURNAMENT_GROUP_TEAMS:\r\n return {\r\n ...state,\r\n tournamentGroupTeams: [...action.payload],\r\n }\r\n\r\n // On new award added\r\n case ADD_NEW_TOURNAMENT_AWARD:\r\n return {\r\n ...state,\r\n tournamentAwards: [...state.tournamentAwards, action.payload],\r\n }\r\n\r\n // On tournament award save success\r\n case REQUEST_SAVE_TOURNAMENT_AWARD_SUCCESS:\r\n case REQUEST_SAVE_TOURNAMENT_AWARD_ROW_SUCCESS:\r\n const tournamentAwards = state.tournamentAwards;\r\n tournamentAwards[action.payload.index] = action.payload.award;\r\n return {\r\n ...state,\r\n tournamentAwards: [...tournamentAwards],\r\n }\r\n\r\n // On tournament award delete success\r\n case REQUEST_DELETE_TOURNAMENT_AWARD_SUCCESS:\r\n return {\r\n ...state,\r\n tournamentAwards: [...state.tournamentAwards.filter(p => p.id !== action.payload.id)],\r\n }\r\n\r\n // Action for clearing tournament state\r\n case CLEAR_TOURNAMENT_STATE:\r\n return INITIAL_STATE\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import {\r\n REQUEST_TOURNAMENT_PLAYERS_PENDING,\r\n REQUEST_TOURNAMENT_PLAYERS_SUCCESS,\r\n REQUEST_TOURNAMENT_PLAYERS_ERROR,\r\n} from './types';\r\n\r\nconst INITIAL_STATE = {\r\n tournamentPlayersLoaded: false,\r\n tournamentPlayers: [],\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On request tournament players pending\r\n case REQUEST_TOURNAMENT_PLAYERS_PENDING:\r\n return {\r\n ...state,\r\n tournamentPlayersLoaded: false,\r\n tournamentPlayers: [],\r\n }\r\n\r\n // On request tournament players success\r\n case REQUEST_TOURNAMENT_PLAYERS_SUCCESS:\r\n return {\r\n ...state,\r\n tournamentPlayersLoaded: true,\r\n tournamentPlayers: action.payload,\r\n }\r\n\r\n // On request tournament players success\r\n case REQUEST_TOURNAMENT_PLAYERS_ERROR:\r\n return {\r\n ...state,\r\n tournamentPlayersLoaded: true,\r\n tournamentPlayers: [],\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import {\r\n REQUEST_TOURNAMENT_TEAMS_PENDING,\r\n REQUEST_TOURNAMENT_TEAMS_SUCCESS,\r\n REQUEST_TOURNAMENT_TEAMS_ERROR,\r\n} from './types';\r\n\r\nconst INITIAL_STATE = {\r\n tournamentTeamsLoaded: false,\r\n tournamentTeams: [],\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On request tournament teams pending\r\n case REQUEST_TOURNAMENT_TEAMS_PENDING:\r\n return {\r\n ...state,\r\n tournamentTeamsLoaded: false,\r\n tournamentTeams: [],\r\n }\r\n\r\n // On request tournament teams success\r\n case REQUEST_TOURNAMENT_TEAMS_SUCCESS:\r\n return {\r\n ...state,\r\n tournamentTeamsLoaded: true,\r\n tournamentTeams: action.payload,\r\n }\r\n\r\n // On request tournament teams success\r\n case REQUEST_TOURNAMENT_TEAMS_ERROR:\r\n return {\r\n ...state,\r\n tournamentTeamsLoaded: true,\r\n tournamentTeams: [],\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import { \r\n REQUEST_ALL_CUSTOM_TOURNAMENT_PENDING,\r\n REQUEST_ALL_CUSTOM_TOURNAMENT_ERROR,\r\n REQUEST_ALL_CUSTOM_TOURNAMENT_SUCCESS,\r\n} from './types';\r\nimport { REQUEST_CREATE_TOURNAMENT_SUCCESS } from '../tournament/types';\r\n\r\nconst INITIAL_STATE = {\r\n loaded: false,\r\n pubgTournaments: [],\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On request all custom tournament pending or error\r\n case REQUEST_ALL_CUSTOM_TOURNAMENT_PENDING:\r\n case REQUEST_ALL_CUSTOM_TOURNAMENT_ERROR:\r\n return INITIAL_STATE;\r\n\r\n // On request all custom tournament success\r\n case REQUEST_ALL_CUSTOM_TOURNAMENT_SUCCESS:\r\n return {\r\n ...state,\r\n loaded: true,\r\n ...action.payload,\r\n };\r\n\r\n // On request create custom tournament success\r\n case REQUEST_CREATE_TOURNAMENT_SUCCESS:\r\n return {\r\n ...state,\r\n // TODO: add support for others as well in the future\r\n pubgTournaments: [action.payload, ...state.pubgTournaments],\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","// Types of action for requesting all custom tournament\r\nexport const REQUEST_ALL_CUSTOM_TOURNAMENT = 'REQUEST_ALL_CUSTOM_TOURNAMENT';\r\nexport const REQUEST_ALL_CUSTOM_TOURNAMENT_PENDING = 'REQUEST_ALL_CUSTOM_TOURNAMENT_PENDING';\r\nexport const REQUEST_ALL_CUSTOM_TOURNAMENT_SUCCESS = 'REQUEST_ALL_CUSTOM_TOURNAMENT_SUCCESS';\r\nexport const REQUEST_ALL_CUSTOM_TOURNAMENT_ERROR = 'REQUEST_ALL_CUSTOM_TOURNAMENT_ERROR';","import { \r\n REQUEST_OVERLAY_DATA_SUCCESS,\r\n SET_RECEIVED_OVERLAY_DATA,\r\n} from './types';\r\nimport {\r\n PUBG_GAME,\r\n CSGO_GAME,\r\n VALORANT_GAME,\r\n} from '../../util/Games';\r\nimport { listToCamelCase } from '../../util/ObjectUtils';\r\n\r\nconst INITIAL_STATE = {\r\n loaded: false,\r\n opts: {},\r\n show: false,\r\n [PUBG_GAME]: null,\r\n [CSGO_GAME]: null,\r\n [VALORANT_GAME]: null,\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On stats received\r\n case REQUEST_OVERLAY_DATA_SUCCESS:\r\n case SET_RECEIVED_OVERLAY_DATA:\r\n return {\r\n ...state,\r\n ...action.payload,\r\n loaded: true,\r\n opts: parseOpts(action.payload.opts),\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;\r\n\r\n/**\r\n * Parses opts to JSON and converts all stats to camelcase\r\n * \r\n * @param {*} opts \r\n */\r\nfunction parseOpts(opts) {\r\n let parsedOpts = {};\r\n if (opts) {\r\n parsedOpts = JSON.parse(opts);\r\n parsedOpts.stats = listToCamelCase(parsedOpts.stats || [], ['value']);\r\n }\r\n return parsedOpts;\r\n}","import lodash from 'lodash';\r\n\r\n/**\r\n * Converts object's values to camelcase\r\n * \r\n * @param {*} object \r\n */\r\nexport const objectToCamelCase = (object) => {\r\n return lodash.mapValues(object, (v, k) => lodash.camelCase(v));\r\n}\r\n\r\n/**\r\n * Converts list of objects' values to camelcase\r\n * \r\n * @param {*} list \r\n * @param {*} exclude \r\n */\r\nexport const listToCamelCase = (list, exclude) => {\r\n return list.map(object => lodash.mapValues(object, (v, k) => exclude.includes(k) ? v : lodash.camelCase(v)));\r\n}","import { Auth } from \"aws-amplify\";\r\nimport AWSAppSyncClient, { AUTH_TYPE } from \"aws-appsync\";\r\n\r\nlet publicConfig;\r\nlet privateConfig;\r\nif (process.env.REACT_APP_STAGE === 'prod') {\r\n publicConfig = require('../appsync-config-public-prod');\r\n privateConfig = require('../appsync-config-private-prod');\r\n} else {\r\n publicConfig = require('../appsync-config-public');\r\n privateConfig = require('../appsync-config-private');\r\n}\r\n\r\n// Public Appsync Client\r\nexport const publicClient = new AWSAppSyncClient({\r\n url: publicConfig.default.aws_appsync_graphqlEndpoint,\r\n region: publicConfig.default.aws_appsync_region,\r\n auth: { type: AUTH_TYPE.API_KEY, apiKey: publicConfig.default.aws_appsync_apiKey },\r\n offlineConfig: {\r\n keyPrefix: 'public'\r\n },\r\n disableOffline: true\r\n});\r\n\r\n// Private AppSync client\r\nexport const privateClient = new AWSAppSyncClient({\r\n url: privateConfig.default.aws_appsync_graphqlEndpoint,\r\n region: privateConfig.default.aws_appsync_region,\r\n auth: { type: AUTH_TYPE.AMAZON_COGNITO_USER_POOLS, jwtToken: async () => (await Auth.currentSession()).idToken.jwtToken },\r\n offlineConfig: {\r\n keyPrefix: 'private'\r\n },\r\n disableOffline: true\r\n});","import { \r\n REQUEST_ORGANIZATION_SUCCESS,\r\n} from './types';\r\n\r\nconst INITIAL_STATE = {\r\n id: null,\r\n name: null,\r\n users: [],\r\n verified: false,\r\n availableComponents: [],\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On request logged in organization success\r\n case REQUEST_ORGANIZATION_SUCCESS:\r\n return {\r\n ...state,\r\n ...action.payload,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import { \r\n REQUEST_HEAD_TO_HEAD_TEAMS_SUCCESS,\r\n REQUEST_HEAD_TO_HEAD_TEAMS_PENDING,\r\n REQUEST_HEAD_TO_HEAD_TEAMS_ERROR,\r\n} from './types';\r\n\r\nconst INITIAL_STATE = {\r\n loaded: false,\r\n leftTeam: null,\r\n rightTeam: null,\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On request head to head team pending or error\r\n case REQUEST_HEAD_TO_HEAD_TEAMS_PENDING:\r\n case REQUEST_HEAD_TO_HEAD_TEAMS_ERROR:\r\n return INITIAL_STATE;\r\n\r\n // On request head to head team success\r\n case REQUEST_HEAD_TO_HEAD_TEAMS_SUCCESS:\r\n return {\r\n loaded: true,\r\n leftTeam: action.payload.left,\r\n rightTeam: action.payload.right,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import { \r\n REQUEST_HEAD_TO_HEAD_PLAYERS_SUCCESS,\r\n REQUEST_HEAD_TO_HEAD_PLAYERS_PENDING,\r\n REQUEST_HEAD_TO_HEAD_PLAYERS_ERROR,\r\n} from './types';\r\n\r\nconst INITIAL_STATE = {\r\n loaded: false,\r\n leftPlayer: null,\r\n rightPlayer: null,\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On request head to head player pending or error\r\n case REQUEST_HEAD_TO_HEAD_PLAYERS_PENDING:\r\n case REQUEST_HEAD_TO_HEAD_PLAYERS_ERROR:\r\n return INITIAL_STATE;\r\n\r\n // On request head to head player success\r\n case REQUEST_HEAD_TO_HEAD_PLAYERS_SUCCESS:\r\n return {\r\n loaded: true,\r\n leftPlayer: action.payload.left,\r\n rightPlayer: action.payload.right,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import {\r\n REQUEST_EXPORT_AS_IMAGE_PENDING,\r\n REQUEST_EXPORT_AS_IMAGE_SUCCESS,\r\n REQUEST_EXPORT_AS_IMAGE_ERROR,\r\n} from './types';\r\n\r\nconst INITIAL_STATE = {\r\n loaded: false,\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On request export image pending or error\r\n case REQUEST_EXPORT_AS_IMAGE_PENDING:\r\n case REQUEST_EXPORT_AS_IMAGE_ERROR:\r\n return INITIAL_STATE;\r\n\r\n // On request export image success\r\n case REQUEST_EXPORT_AS_IMAGE_SUCCESS:\r\n return {\r\n loaded: true,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","// Types of action for requesting export component as image\r\nexport const REQUEST_EXPORT_AS_IMAGE = 'REQUEST_EXPORT_AS_IMAGE';\r\nexport const REQUEST_EXPORT_AS_IMAGE_PENDING = 'REQUEST_EXPORT_AS_IMAGE_PENDING';\r\nexport const REQUEST_EXPORT_AS_IMAGE_SUCCESS = 'REQUEST_EXPORT_AS_IMAGE_SUCCESS';\r\nexport const REQUEST_EXPORT_AS_IMAGE_ERROR = 'REQUEST_EXPORT_AS_IMAGE_ERROR';","import {\r\n REQUEST_TEAM_SEARCH_SUCCESS,\r\n REQUEST_TEAM_SEARCH_PENDING,\r\n REQUEST_TEAM_SEARCH_ERROR,\r\n CLEAR_TEAM_SEARCH_STATE,\r\n} from './types';\r\n\r\nconst INITIAL_STATE = {\r\n loaded: false,\r\n teams: [],\r\n}\r\n\r\nconst reducer = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n // On team search success\r\n case REQUEST_TEAM_SEARCH_SUCCESS:\r\n return {\r\n ...state,\r\n loaded: true,\r\n teams: action.payload,\r\n }\r\n\r\n // On team search pending\r\n case REQUEST_TEAM_SEARCH_PENDING:\r\n return {\r\n ...state,\r\n loaded: false,\r\n teams: [],\r\n }\r\n\r\n // On team search error\r\n case REQUEST_TEAM_SEARCH_ERROR:\r\n return {\r\n ...state,\r\n loaded: true,\r\n teams: [],\r\n }\r\n\r\n // On team search error\r\n case CLEAR_TEAM_SEARCH_STATE:\r\n return INITIAL_STATE\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import { combineReducers } from 'redux';\r\n\r\nimport apollo from './apollo/reducer';\r\nimport auth from './auth/reducer';\r\nimport currentMatch from './currentMatch/reducer';\r\nimport dashboard from './dashboard/reducer';\r\nimport tournaments from './tournaments/reducer';\r\nimport tournamentFilters from './tournamentFilters/reducer';\r\nimport teamLeaderboard from './teamLeaderboard/reducer';\r\nimport modal from './modal/reducer';\r\nimport playerLeaderboard from './playerLeaderboard/reducer';\r\nimport todaysWinners from './todaysWinners/reducer';\r\nimport mapVeto from './mapVeto/reducer';\r\nimport tournament from './tournament/reducer';\r\nimport tournamentPlayers from './tournamentPlayers/reducer';\r\nimport tournamentTeams from './tournamentTeams/reducer';\r\nimport customTournaments from './customTournaments/reducer';\r\nimport overlay from './overlay/reducer';\r\nimport organization from './organization/reducer';\r\nimport headToHeadTeams from './headToHeadTeams/reducer';\r\nimport headToHeadPlayers from './headToHeadPlayers/reducer';\r\nimport exportAsImage from './exportAsImage/reducer';\r\nimport teamSearch from './teamSearch/reducer';\r\n\r\nexport default combineReducers({\r\n apollo: apollo,\r\n auth: auth,\r\n currentMatch: currentMatch,\r\n dashboard: dashboard,\r\n tournaments: tournaments,\r\n tournamentFilters: tournamentFilters,\r\n teamLeaderboard: teamLeaderboard,\r\n modal: modal,\r\n playerLeaderboard: playerLeaderboard,\r\n todaysWinners: todaysWinners,\r\n mapVeto: mapVeto,\r\n tournament: tournament,\r\n tournamentPlayers: tournamentPlayers,\r\n tournamentTeams: tournamentTeams,\r\n customTournaments: customTournaments,\r\n overlay: overlay,\r\n organization: organization,\r\n headToHeadTeams: headToHeadTeams,\r\n headToHeadPlayers: headToHeadPlayers,\r\n exportAsImage: exportAsImage,\r\n teamSearch: teamSearch,\r\n});","import { call } from 'redux-saga/effects';\r\nimport gql from \"graphql-tag\";\r\nimport { privateClient, publicClient } from './client';\r\n\r\n/**\r\n * Makes a query request to server (public or private)\r\n * \r\n * @param {*} client public or private client\r\n * @param {*} query query that needs to be executed\r\n * @param {*} variables varaibles\r\n */\r\nconst queryRequest = function* (client, query, variables) {\r\n return yield call([client, 'query'], {\r\n query: gql(query),\r\n fetchPolicy: 'no-cache',\r\n variables: variables\r\n });\r\n}\r\n\r\n/**\r\n * Makes a mutation request to server (public or private)\r\n * \r\n * @param {*} client public or private client\r\n * @param {*} mutation mutation that needs to be executed\r\n * @param {*} variables varaibles\r\n */\r\nconst mutationRequest = function* (client, mutation, variables) {\r\n return yield call([client, 'mutate'], { \r\n mutation: gql(mutation), \r\n variables: variables \r\n });\r\n}\r\n\r\n/**\r\n * Makes a subscription request to server (public or private)\r\n * \r\n * @param {*} client public or private client\r\n * @param {*} subscription subscription that needs to be executed\r\n * @param {*} variables variables\r\n * @param {*} next next function that will be executed when data arrives\r\n * @param {*} error error function that will be executed on error\r\n */\r\nconst subscriptionRequest = function* (client, subscription, variables, next, error) {\r\n const result = yield call([client, 'subscribe'], {\r\n query: gql(subscription),\r\n variables: variables\r\n });\r\n result.subscribe({\r\n next: data => next(data),\r\n error: err => error(err),\r\n });\r\n}\r\n\r\n/**\r\n * Public query helper\r\n * \r\n * @param {*} query query that needs to be executed\r\n * @param {*} variables variables\r\n */\r\nexport const publicQuery = function* (query, variables) {\r\n return yield queryRequest(publicClient, query, variables);\r\n};\r\n\r\n/**\r\n * Private query helper\r\n * \r\n * @param {*} query query that needs to be executed\r\n * @param {*} variables variables\r\n */\r\nexport const privateQuery = function* (query, variables) {\r\n return yield queryRequest(privateClient, query, variables);\r\n};\r\n\r\n/**\r\n * Public mutation helper\r\n * \r\n * @param {*} mutation mutation that needs to be executed\r\n * @param {*} variables variables\r\n */\r\nexport const publicMutation = function* (mutation, variables) {\r\n return yield mutationRequest(publicClient, mutation, variables);\r\n}\r\n\r\n/**\r\n * Private mutation helper\r\n * \r\n * @param {*} mutation mutation that needs to be executed\r\n * @param {*} variables variables\r\n */\r\nexport const privateMutation = function* (mutation, variables) {\r\n return yield mutationRequest(privateClient, mutation, variables);\r\n}\r\n\r\n/**\r\n * Public subscription helper\r\n * \r\n * @param {*} subscription subscription that needs to be executed\r\n * @param {*} variables variables\r\n * @param {*} next next function that will be executed when data arrives\r\n * @param {*} error error function that will be executed on error\r\n */\r\nexport const publicSubscription = function* (subscription, variables, next, error) {\r\n yield subscriptionRequest(publicClient, subscription, variables, next, error);\r\n}\r\n\r\n/**\r\n * Private subscription helper\r\n * \r\n * @param {*} subscription subscription that needs to be executed\r\n * @param {*} variables variables\r\n * @param {*} next next function that will be executed when data arrives\r\n * @param {*} error error function that will be executed on error\r\n */\r\nexport const privateSubscription = function* (subscription, variables, next, error) {\r\n yield subscriptionRequest(privateClient, subscription, variables, next, error);\r\n}","import { all, takeLatest, call, put } from 'redux-saga/effects';\r\nimport { Auth } from 'aws-amplify';\r\nimport { \r\n REQUEST_LOGIN,\r\n REQUEST_LOGGED_IN_USER,\r\n REQUEST_TOURNAMENT_ORGANIZER_TOKEN,\r\n REQUEST_TOURNAMENT_ORGANIZER_TOKEN_SUCCESS,\r\n REQUEST_USER_SUBSCRIPTION,\r\n REQUEST_USER_SUBSCRIPTION_PENDING,\r\n REQUEST_USER_SUBSCRIPTION_SUCCESS,\r\n REQUEST_USER_SUBSCRIPTION_ERROR,\r\n} from './types';\r\nimport { AUTH_LOGIN_ERROR } from '../../util/ErrorMessages';\r\nimport { setAuthUser, unsetAuthUser } from './actions';\r\nimport { displayErrorNotification } from '../notification/actions';\r\nimport { privateQuery } from '../../graphql/requestHelper';\r\nimport { tournamentOrganizerToken, userSubscription } from '../../graphql/private/queries';\r\n\r\n/**\r\n * Makes a request to server to login user\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestLogin(action) {\r\n try {\r\n // Calling the server\r\n const user = yield call([Auth, 'signIn'], { username: action.payload.username, password: action.payload.password });\r\n // Triggering success action\r\n yield put(setAuthUser(user));\r\n } catch (err) {\r\n yield put(displayErrorNotification(AUTH_LOGIN_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Gets logged in user if exists\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestLoggedInUser(action) {\r\n try {\r\n // Calling the server\r\n const user = yield call([Auth, 'currentAuthenticatedUser']);\r\n // Triggering success action\r\n yield put(setAuthUser(user));\r\n } catch (err) {\r\n yield put(unsetAuthUser());\r\n }\r\n}\r\n\r\n/**\r\n * Gets tournament organizer token\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestTournamentOrganizerToken(action) {\r\n try {\r\n // Calling the server\r\n const result = yield privateQuery(tournamentOrganizerToken);\r\n const token = result.data.tournamentOrganizerToken;\r\n // Triggering success action\r\n yield put({ type: REQUEST_TOURNAMENT_ORGANIZER_TOKEN_SUCCESS, payload: token });\r\n } catch (err) {\r\n \r\n }\r\n}\r\n\r\n/**\r\n * Displays success notification\r\n */\r\n function* requestUserSubscription(action) {\r\n try {\r\n yield put({ type: REQUEST_USER_SUBSCRIPTION_PENDING });\r\n // Calling the server\r\n const result = yield privateQuery(userSubscription);\r\n yield put({ type: REQUEST_USER_SUBSCRIPTION_SUCCESS, payload: result.data.userSubscription });\r\n } catch (err) {\r\n yield put({ type: REQUEST_USER_SUBSCRIPTION_ERROR });\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_LOGIN, requestLogin),\r\n takeLatest(REQUEST_LOGGED_IN_USER, requestLoggedInUser),\r\n takeLatest(REQUEST_TOURNAMENT_ORGANIZER_TOKEN, requestTournamentOrganizerToken),\r\n takeLatest(REQUEST_USER_SUBSCRIPTION, requestUserSubscription),\r\n ]);\r\n}","// eslint-disable\r\n// this is an auto generated file. This will be overwritten\r\n\r\nexport const fileByParentFileId = `query FileByParentFileId($parentFileId: Int) {\r\n fileByParentFileId(parentFileId: $parentFileId) {\r\n id\r\n actionType\r\n fileType\r\n filename\r\n createdAt\r\n parentFileId\r\n matchId\r\n }\r\n}\r\n`;\r\nexport const highlightByFileId = `query HighlightByFileId($fileId: Int!) {\r\n highlightByFileId(fileId: $fileId) {\r\n fileId\r\n isPublic\r\n filename\r\n highlights {\r\n time\r\n comment\r\n drawings\r\n sub\r\n username\r\n }\r\n }\r\n}\r\n`;\r\nexport const settings = `query Settings {\r\n settings {\r\n pubgUsernames {\r\n id\r\n pubgUsername\r\n pubgUsernameDone\r\n pubgUsernameError\r\n }\r\n emailNotifications\r\n }\r\n}\r\n`;\r\nexport const tutorial = `query Tutorial($gameId: Int!) {\r\n tutorial(gameId: $gameId) {\r\n name\r\n done\r\n }\r\n}\r\n`;\r\nexport const userSubscription = `query UserSubscription {\r\n userSubscription {\r\n status\r\n trial\r\n validFrom\r\n validTo\r\n planId\r\n }\r\n}\r\n`;\r\nexport const tournamentOrganizerToken = `query TournamentOrganizerToken {\r\n tournamentOrganizerToken\r\n}\r\n`;\r\nexport const liveLeaderboardToken = `query LiveLeaderboardToken($shardInfo: String!) {\r\n liveLeaderboardToken(shardInfo: $shardInfo)\r\n}\r\n`;\r\n","/* eslint-disable */\r\n// this is an auto generated file. This will be overwritten\r\n\r\nexport const matchByUsername = /* GraphQL */ `\r\n query MatchByUsername($username: String!, $page: Int, $game: String!) {\r\n matchByUsername(username: $username, page: $page, game: $game) {\r\n isMember\r\n userMatches {\r\n id\r\n matchId\r\n telemetry\r\n duration\r\n gameMode\r\n shard\r\n map\r\n zoneProjection\r\n rank\r\n dbnos\r\n kills\r\n damageDealt\r\n gameCreatedAt\r\n }\r\n }\r\n }\r\n`;\r\nexport const matchByTournament = /* GraphQL */ `\r\n query MatchByTournament(\r\n $shardInfo: String!\r\n $page: Int\r\n $game: String!\r\n $token: String\r\n ) {\r\n matchByTournament(\r\n shardInfo: $shardInfo\r\n page: $page\r\n game: $game\r\n token: $token\r\n ) {\r\n id\r\n matchId\r\n name\r\n telemetry\r\n duration\r\n gameMode\r\n shard\r\n shardInfo\r\n map\r\n zoneProjection\r\n gameCreatedAt\r\n tournamentName\r\n tournamentLogo\r\n zones\r\n winner\r\n winnerLogo\r\n teams {\r\n id\r\n name\r\n ranking\r\n previousPosition\r\n previousPositionChange\r\n slot\r\n rosterId\r\n logo\r\n }\r\n }\r\n }\r\n`;\r\nexport const matchById = /* GraphQL */ `\r\n query MatchById($id: String!, $game: String!) {\r\n matchById(id: $id, game: $game) {\r\n id\r\n matchId\r\n name\r\n telemetry\r\n duration\r\n gameMode\r\n shard\r\n shardInfo\r\n map\r\n zoneProjection\r\n gameCreatedAt\r\n tournamentName\r\n tournamentLogo\r\n zones\r\n winner\r\n winnerLogo\r\n teams {\r\n id\r\n name\r\n ranking\r\n previousPosition\r\n previousPositionChange\r\n slot\r\n rosterId\r\n logo\r\n }\r\n }\r\n }\r\n`;\r\nexport const tournamentsByEventType = /* GraphQL */ `\r\n query TournamentsByEventType($eventType: String!, $game: String!) {\r\n tournamentsByEventType(eventType: $eventType, game: $game) {\r\n id\r\n friendlyName\r\n shard\r\n eventType\r\n region\r\n imageName\r\n productionReady\r\n lastPlayedOn\r\n overlayDesign\r\n overlayColor\r\n prodTournamentId\r\n tier\r\n startDate\r\n stopDate\r\n prizePool\r\n currentlyActive\r\n tournamentSocials {\r\n id\r\n key\r\n type\r\n value\r\n }\r\n tournamentFilters {\r\n name\r\n value\r\n ruleset\r\n selected\r\n children {\r\n name\r\n value\r\n ruleset\r\n }\r\n }\r\n tournamentPrizePool {\r\n shardInfo\r\n shardName\r\n data {\r\n placement\r\n prize\r\n prizeCoefficient\r\n teamName\r\n teamLogo\r\n }\r\n }\r\n }\r\n }\r\n`;\r\nexport const tournamentInitialData = /* GraphQL */ `\r\n query TournamentInitialData($id: Int!, $game: String!) {\r\n tournamentInitialData(id: $id, game: $game) {\r\n tournament {\r\n id\r\n friendlyName\r\n shard\r\n eventType\r\n region\r\n imageName\r\n productionReady\r\n lastPlayedOn\r\n overlayDesign\r\n overlayColor\r\n prodTournamentId\r\n tier\r\n startDate\r\n stopDate\r\n prizePool\r\n currentlyActive\r\n tournamentSocials {\r\n id\r\n key\r\n type\r\n value\r\n }\r\n tournamentFilters {\r\n name\r\n value\r\n ruleset\r\n selected\r\n children {\r\n name\r\n value\r\n ruleset\r\n }\r\n }\r\n tournamentPrizePool {\r\n shardInfo\r\n shardName\r\n data {\r\n placement\r\n prize\r\n prizeCoefficient\r\n teamName\r\n teamLogo\r\n }\r\n }\r\n }\r\n matches {\r\n id\r\n matchId\r\n name\r\n telemetry\r\n duration\r\n gameMode\r\n shard\r\n shardInfo\r\n map\r\n zoneProjection\r\n gameCreatedAt\r\n tournamentName\r\n tournamentLogo\r\n zones\r\n winner\r\n winnerLogo\r\n teams {\r\n id\r\n name\r\n ranking\r\n previousPosition\r\n previousPositionChange\r\n slot\r\n rosterId\r\n logo\r\n }\r\n }\r\n tournamentFilters {\r\n name\r\n value\r\n ruleset\r\n selected\r\n children {\r\n name\r\n value\r\n ruleset\r\n }\r\n }\r\n }\r\n }\r\n`;\r\nexport const tournamentAll = /* GraphQL */ `\r\n query TournamentAll($game: String!) {\r\n tournamentAll(game: $game) {\r\n id\r\n friendlyName\r\n shard\r\n eventType\r\n region\r\n imageName\r\n productionReady\r\n lastPlayedOn\r\n overlayDesign\r\n overlayColor\r\n prodTournamentId\r\n tier\r\n startDate\r\n stopDate\r\n prizePool\r\n currentlyActive\r\n tournamentSocials {\r\n id\r\n key\r\n type\r\n value\r\n }\r\n tournamentFilters {\r\n name\r\n value\r\n ruleset\r\n selected\r\n children {\r\n name\r\n value\r\n ruleset\r\n }\r\n }\r\n tournamentPrizePool {\r\n shardInfo\r\n shardName\r\n data {\r\n placement\r\n prize\r\n prizeCoefficient\r\n teamName\r\n teamLogo\r\n }\r\n }\r\n }\r\n }\r\n`;\r\nexport const tournamentById = /* GraphQL */ `\r\n query TournamentById($id: Int!, $game: String!) {\r\n tournamentById(id: $id, game: $game) {\r\n id\r\n friendlyName\r\n shard\r\n eventType\r\n region\r\n imageName\r\n productionReady\r\n lastPlayedOn\r\n overlayDesign\r\n overlayColor\r\n prodTournamentId\r\n tier\r\n startDate\r\n stopDate\r\n prizePool\r\n currentlyActive\r\n tournamentSocials {\r\n id\r\n key\r\n type\r\n value\r\n }\r\n tournamentFilters {\r\n name\r\n value\r\n ruleset\r\n selected\r\n children {\r\n name\r\n value\r\n ruleset\r\n }\r\n }\r\n tournamentPrizePool {\r\n shardInfo\r\n shardName\r\n data {\r\n placement\r\n prize\r\n prizeCoefficient\r\n teamName\r\n teamLogo\r\n }\r\n }\r\n }\r\n }\r\n`;\r\nexport const getAdditionalTournamentInfo = /* GraphQL */ `\r\n query GetAdditionalTournamentInfo($game: String!, $token: String!, $tournamentId: Int!) {\r\n getAdditionalTournamentInfo(game: $game, token: $token, tournamentId: $tournamentId) {\r\n image\r\n visible\r\n }\r\n }\r\n`;\r\nexport const searchMatchPlayer = /* GraphQL */ `\r\n query SearchMatchPlayer($matchId: Int!, $game: String!) {\r\n searchMatchPlayer(matchId: $matchId, game: $game) {\r\n id\r\n username\r\n rank\r\n dbnos\r\n assists\r\n damageDealt\r\n damageTaken\r\n revives\r\n kills\r\n killSteals\r\n killsStolenFrom\r\n rideDistance\r\n walkDistance\r\n timeSurvived\r\n killStreaks\r\n deathType\r\n heals\r\n boosts\r\n vehicleDestroys\r\n rosterId\r\n }\r\n }\r\n`;\r\nexport const teamByName = /* GraphQL */ `\r\n query TeamByName($name: String!, $game: String!) {\r\n teamByName(name: $name, game: $game) {\r\n id\r\n name\r\n ranking\r\n previousPosition\r\n previousPositionChange\r\n slot\r\n rosterId\r\n logo\r\n }\r\n }\r\n`;\r\nexport const rotationByTeamId = /* GraphQL */ `\r\n query RotationByTeamId($teamId: Int!, $game: String!) {\r\n rotationByTeamId(teamId: $teamId, game: $game) {\r\n id\r\n gameCreatedAt\r\n map\r\n zones\r\n zoneProjection\r\n movement\r\n landingSpot\r\n planePath\r\n rank\r\n kills\r\n damageDealt\r\n damageTaken\r\n team {\r\n id\r\n name\r\n ranking\r\n previousPosition\r\n previousPositionChange\r\n slot\r\n rosterId\r\n logo\r\n }\r\n matchName\r\n tournamentName\r\n }\r\n }\r\n`;\r\nexport const rotationByTeams = /* GraphQL */ `\r\n query RotationByTeams($rotationRequest: RotationRequest!, $game: String!) {\r\n rotationByTeams(rotationRequest: $rotationRequest, game: $game) {\r\n id\r\n gameCreatedAt\r\n map\r\n zones\r\n zoneProjection\r\n movement\r\n landingSpot\r\n planePath\r\n rank\r\n kills\r\n damageDealt\r\n damageTaken\r\n team {\r\n id\r\n name\r\n ranking\r\n previousPosition\r\n previousPositionChange\r\n slot\r\n rosterId\r\n logo\r\n }\r\n matchName\r\n tournamentName\r\n }\r\n }\r\n`;\r\nexport const subscriptionPlans = /* GraphQL */ `\r\n query SubscriptionPlans {\r\n subscriptionPlans {\r\n name\r\n price\r\n months\r\n provider\r\n planId\r\n region\r\n }\r\n }\r\n`;\r\nexport const tournamentFilters = /* GraphQL */ `\r\n query TournamentFilters($tournamentId: Int!, $game: String!) {\r\n tournamentFilters(tournamentId: $tournamentId, game: $game) {\r\n name\r\n value\r\n ruleset\r\n selected\r\n children {\r\n name\r\n value\r\n ruleset\r\n }\r\n }\r\n }\r\n`;\r\nexport const tournamentStatsFilters = /* GraphQL */ `\r\n query TournamentStatsFilters($shardInfo: String!, $game: String!) {\r\n tournamentStatsFilters(shardInfo: $shardInfo, game: $game) {\r\n maps {\r\n key\r\n value\r\n }\r\n matches {\r\n key\r\n value\r\n }\r\n }\r\n }\r\n`;\r\nexport const teamRanking = /* GraphQL */ `\r\n query TeamRanking($game: String!) {\r\n teamRanking(game: $game) {\r\n teams {\r\n id\r\n name\r\n ranking\r\n previousPosition\r\n previousPositionChange\r\n slot\r\n rosterId\r\n logo\r\n }\r\n updatedAt\r\n }\r\n }\r\n`;\r\nexport const productionLeaderboard = /* GraphQL */ `\r\n query ProductionLeaderboard(\r\n $tournament: String!\r\n $token: String!\r\n $filters: TournamentStatsFilterInput\r\n $game: String!\r\n ) {\r\n productionLeaderboard(\r\n tournament: $tournament\r\n token: $token\r\n filters: $filters\r\n game: $game\r\n ) {\r\n tournamentName\r\n groupName\r\n matchName\r\n lastMatchName\r\n leaderboard {\r\n team\r\n logo\r\n initial\r\n kills\r\n damageDealt\r\n points\r\n totalPoints\r\n wins\r\n bestMatchPoints\r\n bestKillPoints\r\n lastKills\r\n lastPoints\r\n numberOfMatches\r\n lastMatchPlayedAt\r\n previousPosition\r\n previousPositionChange\r\n players\r\n advance\r\n statsPerMatch {\r\n id\r\n name\r\n rank\r\n kills\r\n points\r\n }\r\n }\r\n overlayDesign\r\n overlayColor\r\n prodTournamentId\r\n numberOfMatches\r\n format\r\n }\r\n }\r\n`;\r\nexport const platformLeaderboard = /* GraphQL */ `\r\n query PlatformLeaderboard(\r\n $tournament: String!\r\n $token: String\r\n $filters: TournamentStatsFilterInput\r\n $game: String!\r\n ) {\r\n platformLeaderboard(\r\n tournament: $tournament\r\n token: $token\r\n filters: $filters\r\n game: $game\r\n ) {\r\n tournamentName\r\n groupName\r\n matchName\r\n lastMatchName\r\n leaderboard {\r\n team\r\n logo\r\n initial\r\n kills\r\n damageDealt\r\n points\r\n totalPoints\r\n wins\r\n bestMatchPoints\r\n bestKillPoints\r\n lastKills\r\n lastPoints\r\n numberOfMatches\r\n lastMatchPlayedAt\r\n previousPosition\r\n previousPositionChange\r\n players\r\n advance\r\n statsPerMatch {\r\n id\r\n name\r\n rank\r\n kills\r\n points\r\n }\r\n }\r\n overlayDesign\r\n overlayColor\r\n prodTournamentId\r\n numberOfMatches\r\n format\r\n }\r\n }\r\n`;\r\nexport const productionStats = /* GraphQL */ `\r\n query ProductionStats(\r\n $tournament: String!\r\n $token: String!\r\n $filters: TournamentStatsFilterInput\r\n $game: String!\r\n ) {\r\n productionStats(\r\n tournament: $tournament\r\n token: $token\r\n filters: $filters\r\n game: $game\r\n ) {\r\n tournamentName\r\n groupName\r\n matchName\r\n lastMatchName\r\n leaderboard {\r\n username\r\n teamName\r\n teamLogo\r\n kills\r\n assists\r\n kd\r\n kda\r\n kas\r\n killsKnocks\r\n deaths\r\n diedFirst\r\n diedSecond\r\n diedThird\r\n diedForth\r\n damageDealt\r\n arDamage\r\n dmrDamage\r\n srDamage\r\n smgDamage\r\n shotgunDamage\r\n lmgDamage\r\n pistolDamage\r\n avgDamageDealt\r\n damageTaken\r\n avgDamageTaken\r\n dbnos\r\n knocked\r\n revives\r\n revived\r\n headshotKills\r\n killSteals\r\n killsStolenFrom\r\n swimDistance\r\n walkDistance\r\n rideDistance\r\n longestKill\r\n timeSurvived\r\n avgTimeSurvived\r\n killStreaks\r\n heals\r\n boosts\r\n vehicleDestroys\r\n healthRecovered\r\n grenadePickup\r\n grenadeDrop\r\n grenadeThrow\r\n grenadeDamage\r\n molotovPickup\r\n molotovDrop\r\n molotovThrow\r\n molotovDamage\r\n smokebombPickup\r\n smokebombDrop\r\n smokebombThrow\r\n flashbangPickup\r\n flashbangDrop\r\n flashbangThrow\r\n damageTakenFromBlueZone\r\n damageTakenFromEnemy\r\n damageDealtDamageTaken\r\n numOfMatches\r\n attacker\r\n finisher\r\n utility\r\n survivor\r\n teammate\r\n stealer\r\n twr\r\n }\r\n overlayDesign\r\n overlayColor\r\n prodTournamentId\r\n }\r\n }\r\n`;\r\nexport const platformStats = /* GraphQL */ `\r\n query PlatformStats(\r\n $tournament: String!\r\n $token: String\r\n $filters: TournamentStatsFilterInput\r\n $game: String!\r\n ) {\r\n platformStats(\r\n tournament: $tournament\r\n token: $token\r\n filters: $filters\r\n game: $game\r\n ) {\r\n tournamentName\r\n groupName\r\n matchName\r\n lastMatchName\r\n leaderboard {\r\n username\r\n teamName\r\n teamLogo\r\n kills\r\n assists\r\n kd\r\n kda\r\n kas\r\n killsKnocks\r\n deaths\r\n diedFirst\r\n diedSecond\r\n diedThird\r\n diedForth\r\n damageDealt\r\n arDamage\r\n dmrDamage\r\n srDamage\r\n smgDamage\r\n shotgunDamage\r\n lmgDamage\r\n pistolDamage\r\n avgDamageDealt\r\n damageTaken\r\n avgDamageTaken\r\n dbnos\r\n knocked\r\n revives\r\n revived\r\n headshotKills\r\n killSteals\r\n killsStolenFrom\r\n swimDistance\r\n walkDistance\r\n rideDistance\r\n longestKill\r\n timeSurvived\r\n avgTimeSurvived\r\n killStreaks\r\n heals\r\n boosts\r\n vehicleDestroys\r\n healthRecovered\r\n grenadePickup\r\n grenadeDrop\r\n grenadeThrow\r\n grenadeDamage\r\n molotovPickup\r\n molotovDrop\r\n molotovThrow\r\n molotovDamage\r\n smokebombPickup\r\n smokebombDrop\r\n smokebombThrow\r\n flashbangPickup\r\n flashbangDrop\r\n flashbangThrow\r\n damageTakenFromBlueZone\r\n damageTakenFromEnemy\r\n damageDealtDamageTaken\r\n numOfMatches\r\n attacker\r\n finisher\r\n utility\r\n survivor\r\n teammate\r\n stealer\r\n twr\r\n }\r\n overlayDesign\r\n overlayColor\r\n prodTournamentId\r\n }\r\n }\r\n`;\r\nexport const teamStats = /* GraphQL */ `\r\n query TeamStats(\r\n $shardInfo: String!\r\n $token: String\r\n $filters: TournamentStatsFilterInput\r\n $game: String!\r\n ) {\r\n teamStats(\r\n shardInfo: $shardInfo\r\n token: $token\r\n filters: $filters\r\n game: $game\r\n ) {\r\n tournamentName\r\n groupName\r\n matchName\r\n lastMatchName\r\n teamStats {\r\n teamName\r\n teamLogo\r\n stats {\r\n map\r\n rank\r\n kills\r\n assists\r\n damageDealt\r\n damageTaken\r\n dbnos\r\n revives\r\n headshotKills\r\n killSteals\r\n killsStolenFrom\r\n swimDistance\r\n walkDistance\r\n rideDistance\r\n timeSurvived\r\n killStreaks\r\n heals\r\n boosts\r\n vehicleDestroys\r\n healthRecovered\r\n grenadePickup\r\n grenadeDrop\r\n grenadeThrow\r\n grenadeDamage\r\n molotovPickup\r\n molotovDrop\r\n molotovThrow\r\n molotovDamage\r\n smokebombPickup\r\n smokebombDrop\r\n smokebombThrow\r\n flashbangPickup\r\n flashbangDrop\r\n flashbangThrow\r\n numOfMatches\r\n points\r\n wins\r\n totalPoints\r\n avgTotalPoints\r\n avgPoints\r\n avgRank\r\n avgKills\r\n avgDamageDealt\r\n avgDamageTaken\r\n avgTimeSurvived\r\n }\r\n }\r\n overlayDesign\r\n overlayColor\r\n prodTournamentId\r\n }\r\n }\r\n`;\r\nexport const todaysWinners = /* GraphQL */ `\r\n query TodaysWinners(\r\n $tournament: String!\r\n $numOfMatches: Int!\r\n $token: String\r\n $game: String!\r\n ) {\r\n todaysWinners(\r\n tournament: $tournament\r\n numOfMatches: $numOfMatches\r\n token: $token\r\n game: $game\r\n ) {\r\n tournamentName\r\n groupName\r\n lastMatchNumber\r\n winners {\r\n teamName\r\n matchNumber\r\n map\r\n }\r\n overlayDesign\r\n overlayColor\r\n prodTournamentId\r\n }\r\n }\r\n`;\r\nexport const currentMatch = /* GraphQL */ `\r\n query CurrentMatch($tournament: String!, $game: String!) {\r\n currentMatch(tournament: $tournament, game: $game)\r\n }\r\n`;\r\nexport const teamNamesByTournament = /* GraphQL */ `\r\n query TeamNamesByTournament($tournament: String!, $game: String!) {\r\n teamNamesByTournament(tournament: $tournament, game: $game) {\r\n id\r\n name\r\n ranking\r\n previousPosition\r\n previousPositionChange\r\n slot\r\n rosterId\r\n logo\r\n }\r\n }\r\n`;\r\nexport const playerNamesByTournament = /* GraphQL */ `\r\n query PlayerNamesByTournament($tournament: String!, $game: String!) {\r\n playerNamesByTournament(tournament: $tournament, game: $game) {\r\n id\r\n username\r\n team {\r\n id\r\n name\r\n ranking\r\n previousPosition\r\n previousPositionChange\r\n slot\r\n rosterId\r\n logo\r\n }\r\n }\r\n }\r\n`;\r\nexport const headToHeadTeams = /* GraphQL */ `\r\n query HeadToHeadTeams(\r\n $tournament: String!\r\n $leftId: Int!\r\n $rightId: Int!\r\n $token: String\r\n $game: String!\r\n ) {\r\n headToHeadTeams(\r\n tournament: $tournament\r\n leftId: $leftId\r\n rightId: $rightId\r\n token: $token\r\n game: $game\r\n ) {\r\n left {\r\n name\r\n kills\r\n damageDealt\r\n avgRank\r\n avgPoints\r\n }\r\n right {\r\n name\r\n kills\r\n damageDealt\r\n avgRank\r\n avgPoints\r\n }\r\n overlayDesign\r\n overlayColor\r\n prodTournamentId\r\n }\r\n }\r\n`;\r\nexport const headToHeadPlayers = /* GraphQL */ `\r\n query HeadToHeadPlayers(\r\n $tournament: String!\r\n $leftId: Int!\r\n $rightId: Int!\r\n $token: String\r\n $game: String!\r\n ) {\r\n headToHeadPlayers(\r\n tournament: $tournament\r\n leftId: $leftId\r\n rightId: $rightId\r\n token: $token\r\n game: $game\r\n ) {\r\n left {\r\n username\r\n teamName\r\n kills\r\n damageDealt\r\n assists\r\n dbnos\r\n }\r\n right {\r\n username\r\n teamName\r\n kills\r\n damageDealt\r\n assists\r\n dbnos\r\n }\r\n overlayDesign\r\n overlayColor\r\n prodTournamentId\r\n }\r\n }\r\n`;\r\nexport const getArticles = /* GraphQL */ `\r\n query GetArticles($game: String!, $page: Int) {\r\n getArticles(game: $game, page: $page) {\r\n author\r\n comments {\r\n content\r\n id\r\n insertedAt\r\n parentId\r\n updatedAt\r\n username\r\n }\r\n content\r\n id\r\n insertedAt\r\n summary\r\n summaryImg\r\n title\r\n updatedAt\r\n numberOfComments\r\n }\r\n }\r\n`;\r\nexport const getArticle = /* GraphQL */ `\r\n query GetArticle($game: String!, $articleId: Int!) {\r\n getArticle(game: $game, articleId: $articleId) {\r\n author\r\n comments {\r\n content\r\n id\r\n insertedAt\r\n parentId\r\n updatedAt\r\n username\r\n }\r\n content\r\n id\r\n insertedAt\r\n summary\r\n summaryImg\r\n title\r\n updatedAt\r\n numberOfComments\r\n }\r\n }\r\n`;\r\nexport const getTournaments = /* GraphQL */ `\r\n query GetTournaments(\r\n $game: String!\r\n $type: String!\r\n $timeType: String\r\n $tier: String\r\n $region: String\r\n $page: Int\r\n ) {\r\n getTournaments(\r\n game: $game\r\n type: $type\r\n timeType: $timeType\r\n tier: $tier\r\n region: $region\r\n page: $page\r\n ) {\r\n id\r\n friendlyName\r\n shard\r\n eventType\r\n region\r\n imageName\r\n productionReady\r\n lastPlayedOn\r\n overlayDesign\r\n overlayColor\r\n prodTournamentId\r\n tier\r\n startDate\r\n stopDate\r\n prizePool\r\n currentlyActive\r\n tournamentSocials {\r\n id\r\n key\r\n type\r\n value\r\n }\r\n tournamentFilters {\r\n name\r\n value\r\n ruleset\r\n selected\r\n children {\r\n name\r\n value\r\n ruleset\r\n }\r\n }\r\n tournamentPrizePool {\r\n shardInfo\r\n shardName\r\n data {\r\n placement\r\n prize\r\n prizeCoefficient\r\n teamName\r\n teamLogo\r\n }\r\n }\r\n }\r\n }\r\n`;\r\nexport const getLastestMatches = /* GraphQL */ `\r\n query GetLastestMatches($game: String!, $tournamentId: Int, $page: Int) {\r\n getLastestMatches(game: $game, tournamentId: $tournamentId, page: $page) {\r\n id\r\n matchId\r\n name\r\n telemetry\r\n duration\r\n gameMode\r\n shard\r\n shardInfo\r\n map\r\n zoneProjection\r\n gameCreatedAt\r\n tournamentName\r\n tournamentLogo\r\n zones\r\n winner\r\n winnerLogo\r\n teams {\r\n id\r\n name\r\n ranking\r\n previousPosition\r\n previousPositionChange\r\n slot\r\n rosterId\r\n logo\r\n }\r\n }\r\n }\r\n`;\r\nexport const getFeatured = /* GraphQL */ `\r\n query GetFeatured($game: String!) {\r\n getFeatured(game: $game) {\r\n type\r\n data\r\n }\r\n }\r\n`;\r\nexport const getTournamentPrizeInfo = /* GraphQL */ `\r\n query GetTournamentPrizeInfo($game: String!, $shard: String!) {\r\n getTournamentPrizeInfo(game: $game, shard: $shard) {\r\n shardInfo\r\n shardName\r\n data {\r\n placement\r\n prize\r\n prizeCoefficient\r\n teamName\r\n teamLogo\r\n }\r\n }\r\n }\r\n`;\r\nexport const generalSearch = /* GraphQL */ `\r\n query GeneralSearch($game: String!, $searchString: String!) {\r\n generalSearch(game: $game, searchString: $searchString) {\r\n tournaments {\r\n id\r\n friendlyName\r\n shard\r\n eventType\r\n region\r\n imageName\r\n productionReady\r\n lastPlayedOn\r\n overlayDesign\r\n overlayColor\r\n prodTournamentId\r\n tier\r\n startDate\r\n stopDate\r\n prizePool\r\n currentlyActive\r\n tournamentSocials {\r\n id\r\n key\r\n type\r\n value\r\n }\r\n tournamentFilters {\r\n name\r\n value\r\n ruleset\r\n selected\r\n children {\r\n name\r\n value\r\n ruleset\r\n }\r\n }\r\n tournamentPrizePool {\r\n shardInfo\r\n shardName\r\n data {\r\n placement\r\n prize\r\n prizeCoefficient\r\n teamName\r\n teamLogo\r\n }\r\n }\r\n }\r\n teams {\r\n id\r\n name\r\n ranking\r\n previousPosition\r\n previousPositionChange\r\n slot\r\n rosterId\r\n logo\r\n }\r\n players {\r\n id\r\n username\r\n team {\r\n id\r\n name\r\n ranking\r\n previousPosition\r\n previousPositionChange\r\n slot\r\n rosterId\r\n logo\r\n }\r\n }\r\n news {\r\n author\r\n comments {\r\n content\r\n id\r\n insertedAt\r\n parentId\r\n updatedAt\r\n username\r\n }\r\n content\r\n id\r\n insertedAt\r\n summary\r\n summaryImg\r\n title\r\n updatedAt\r\n numberOfComments\r\n }\r\n }\r\n }\r\n`;\r\n","import { all, takeLatest, put } from 'redux-saga/effects';\r\nimport { \r\n REQUEST_CURRENT_MATCH,\r\n REQUEST_CURRENT_MATCH_ERROR,\r\n REQUEST_CURRENT_MATCH_PENDING,\r\n REQUEST_CURRENT_MATCH_SUCCESS,\r\n} from './types';\r\nimport { currentMatch } from '../../graphql/public/queries';\r\nimport { publicQuery } from '../../graphql/requestHelper';\r\n\r\n/**\r\n * Makes a request to server for last winners\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestCurrentMatch(action) {\r\n yield put({ type: REQUEST_CURRENT_MATCH_PENDING });\r\n try {\r\n // Calling the server\r\n const result = yield publicQuery(currentMatch, { game: action.payload.game, tournament: action.payload.tournament });\r\n yield put({ type: REQUEST_CURRENT_MATCH_SUCCESS, payload: result.data.currentMatch });\r\n } catch (err) {\r\n yield put({ type: REQUEST_CURRENT_MATCH_ERROR });\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_CURRENT_MATCH, requestCurrentMatch),\r\n ]);\r\n}","import gql from 'graphql-tag';\r\n\r\nexport const createComponent = gql`mutation CreateComponent($shard: String!, $args: InputArguments!) {\r\n createComponent(shard: $shard, args: $args) {\r\n token\r\n show\r\n name\r\n opts\r\n args {\r\n type\r\n shard_info\r\n match\r\n game\r\n }\r\n matches {\r\n id\r\n name\r\n startAt\r\n }\r\n teams {\r\n id\r\n name\r\n players {\r\n id\r\n firstName\r\n lastName\r\n ign\r\n }\r\n }\r\n availableStatistics {\r\n key\r\n value\r\n }\r\n }\r\n}`;\r\n\r\nexport const createMapVetoComponent = gql`mutation CreateMapVetoComponent($shard: String!, $args: InputArguments!) {\r\n createMapVetoComponent(shard: $shard, args: $args) {\r\n token\r\n args {\r\n shard_info\r\n match\r\n game\r\n type\r\n }\r\n opts\r\n name\r\n show\r\n availableMaps {\r\n key\r\n value\r\n }\r\n teams {\r\n id\r\n name\r\n }\r\n availableRules {\r\n key\r\n value\r\n }\r\n vetoStatus\r\n logs {\r\n map\r\n type\r\n mapVoter\r\n attackers\r\n defenders\r\n }\r\n leftToken\r\n rightToken\r\n }\r\n}`;\r\n\r\nexport const createComponentsBulk = gql`mutation CreateComponentsBulk($shard: String!, $args: [InputArguments!]!) {\r\n createComponentsBulk(shard: $shard, args: $args) {\r\n token\r\n show\r\n name\r\n opts\r\n args {\r\n type\r\n shard_info\r\n match\r\n game\r\n }\r\n matches {\r\n id\r\n name\r\n startAt\r\n }\r\n teams {\r\n id\r\n name\r\n players {\r\n id\r\n firstName\r\n lastName\r\n ign\r\n }\r\n }\r\n availableStatistics {\r\n key\r\n value\r\n }\r\n }\r\n}`;\r\n\r\nexport const changeComponent = gql`mutation ChangeComponent($token: String!, $name: String, $show: Boolean, $opts: String, $args: InputArguments) {\r\n changeComponent(token: $token, name: $name, show: $show, opts: $opts, args: $args) {\r\n token\r\n name\r\n show\r\n opts\r\n args {\r\n type\r\n shard_info\r\n match\r\n game\r\n }\r\n matches {\r\n id\r\n name\r\n startAt\r\n }\r\n teams {\r\n id\r\n name\r\n players {\r\n id\r\n firstName\r\n lastName\r\n ign\r\n }\r\n }\r\n availableStatistics {\r\n key\r\n value\r\n }\r\n }\r\n}`;\r\n\r\nexport const changeMapVetoComponent = gql`mutation ChangeMapVetoComponent($token: String!, $name: String, $show: Boolean, $opts: String, $vetoStatus: String) {\r\n changeMapVetoComponent(token: $token, name: $name, show: $show, opts: $opts, vetoStatus: $vetoStatus) {\r\n token\r\n args {\r\n shard_info\r\n match\r\n game\r\n type\r\n }\r\n opts\r\n name\r\n show\r\n availableMaps {\r\n key\r\n value\r\n }\r\n teams {\r\n id\r\n name\r\n }\r\n availableRules {\r\n key\r\n value\r\n }\r\n vetoStatus\r\n logs {\r\n map\r\n type\r\n mapVoter\r\n attackers\r\n defenders\r\n }\r\n leftToken\r\n rightToken\r\n }\r\n}`;\r\n\r\nexport const changeComponentsShardInfo = gql`mutation ChangeComponentsShardInfo($tokens: [String!]!, $shardInfo: String!) {\r\n changeComponentsShardInfo(tokens: $tokens, shardInfo: $shardInfo) {\r\n token\r\n name\r\n show\r\n opts\r\n args {\r\n type\r\n shard_info\r\n match\r\n game\r\n }\r\n matches {\r\n id\r\n name\r\n startAt\r\n }\r\n teams {\r\n id\r\n name\r\n players {\r\n id\r\n firstName\r\n lastName\r\n ign\r\n }\r\n }\r\n availableStatistics {\r\n key\r\n value\r\n }\r\n }\r\n}`;\r\n\r\nexport const removeComponent = gql`mutation RemoveComponent($token: String!) {\r\n removeComponent(token: $token)\r\n}`;\r\n\r\nexport const removeMapVetoComponent = gql`mutation RemoveMapVetoComponent($token: String!) {\r\n removeComponent(token: $token)\r\n}`;\r\n\r\nexport const mapVetoTeamReady = gql`mutation TeamReady($token: String!, $overlayToken: String!) {\r\n teamReady(token: $token, overlayToken: $overlayToken) {\r\n token\r\n tokenOverlay\r\n status\r\n pickValues\r\n timer\r\n logs {\r\n map\r\n type\r\n mapVoter\r\n attackers\r\n defenders\r\n }\r\n }\r\n}`;\r\n\r\nexport const mapVetoMakePick = gql`mutation MakePick($token: String!, $overlayToken: String!, $status: String!, $value: String!) {\r\n makePick(token: $token, overlayToken: $overlayToken, status: $status, value: $value) {\r\n token\r\n tokenOverlay\r\n status\r\n pickValues\r\n timer\r\n logs {\r\n map\r\n type\r\n mapVoter\r\n attackers\r\n defenders\r\n }\r\n }\r\n}`;","import {\r\n createComponent,\r\n createMapVetoComponent,\r\n changeComponent,\r\n changeMapVetoComponent,\r\n removeComponent,\r\n removeMapVetoComponent,\r\n} from './componentMutations';\r\nimport {\r\n PLAYER_STATS_COMPONENT_TYPE,\r\n TEAM_STATS_COMPONENT_TYPE,\r\n PLAYER_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n TEAM_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n PLAYER_LEADERBOARD_COMPONENT_TYPE,\r\n TEAM_LEADERBOARD_COMPONENT_TYPE,\r\n LIVE_TEAM_LEADERBOARD_COMPONENT_TYPE,\r\n LIVE_MAP_TEAMS_COMPONENT_TYPE,\r\n LIVE_SURVIVAL_LEADERBOARD_COMPONENT_TYPE,\r\n LIVE_TEAM_STATS_COMPONENT_TYPE,\r\n LIVE_PLAYER_STATS_COMPONENT_TYPE,\r\n LIVE_PLAYER_KILLS_COMPONENT_TYPE,\r\n LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_TYPE,\r\n LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n LIVE_PLAYER_LEADERBOARD_COMPONENT_TYPE,\r\n CURRENT_MATCH_COMPONENT_TYPE,\r\n TODAYS_WINNERS_COMPONENT_TYPE,\r\n SCOREBOARD_COMPONENT_TYPE,\r\n MAP_VETO_COMPONENT_TYPE,\r\n} from '../../views/Components/constants';\r\n\r\nexport const createComponentMutations = {\r\n [PLAYER_STATS_COMPONENT_TYPE]: createComponent,\r\n [TEAM_STATS_COMPONENT_TYPE]: createComponent,\r\n [PLAYER_HEAD_TO_HEAD_COMPONENT_TYPE]: createComponent,\r\n [TEAM_HEAD_TO_HEAD_COMPONENT_TYPE]: createComponent,\r\n [PLAYER_LEADERBOARD_COMPONENT_TYPE]: createComponent,\r\n [TEAM_LEADERBOARD_COMPONENT_TYPE]: createComponent,\r\n [LIVE_TEAM_LEADERBOARD_COMPONENT_TYPE]: createComponent,\r\n [LIVE_MAP_TEAMS_COMPONENT_TYPE]: createComponent,\r\n [LIVE_SURVIVAL_LEADERBOARD_COMPONENT_TYPE]: createComponent,\r\n [LIVE_TEAM_STATS_COMPONENT_TYPE]: createComponent,\r\n [LIVE_PLAYER_STATS_COMPONENT_TYPE]: createComponent,\r\n [LIVE_PLAYER_KILLS_COMPONENT_TYPE]: createComponent,\r\n [LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_TYPE]: createComponent,\r\n [LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_TYPE]: createComponent,\r\n [LIVE_PLAYER_LEADERBOARD_COMPONENT_TYPE]: createComponent,\r\n [CURRENT_MATCH_COMPONENT_TYPE]: createComponent,\r\n [TODAYS_WINNERS_COMPONENT_TYPE]: createComponent,\r\n [SCOREBOARD_COMPONENT_TYPE]: createComponent,\r\n [MAP_VETO_COMPONENT_TYPE]: createMapVetoComponent,\r\n}\r\n\r\nexport const changeComponentMutations = {\r\n [PLAYER_STATS_COMPONENT_TYPE]: changeComponent,\r\n [TEAM_STATS_COMPONENT_TYPE]: changeComponent,\r\n [PLAYER_HEAD_TO_HEAD_COMPONENT_TYPE]: changeComponent,\r\n [TEAM_HEAD_TO_HEAD_COMPONENT_TYPE]: changeComponent,\r\n [PLAYER_LEADERBOARD_COMPONENT_TYPE]: changeComponent,\r\n [TEAM_LEADERBOARD_COMPONENT_TYPE]: changeComponent,\r\n [LIVE_TEAM_LEADERBOARD_COMPONENT_TYPE]: changeComponent,\r\n [LIVE_MAP_TEAMS_COMPONENT_TYPE]: changeComponent,\r\n [LIVE_SURVIVAL_LEADERBOARD_COMPONENT_TYPE]: changeComponent,\r\n [LIVE_TEAM_STATS_COMPONENT_TYPE]: changeComponent,\r\n [LIVE_PLAYER_STATS_COMPONENT_TYPE]: changeComponent,\r\n [LIVE_PLAYER_KILLS_COMPONENT_TYPE]: changeComponent,\r\n [LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_TYPE]: changeComponent,\r\n [LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_TYPE]: changeComponent,\r\n [LIVE_PLAYER_LEADERBOARD_COMPONENT_TYPE]: changeComponent,\r\n [CURRENT_MATCH_COMPONENT_TYPE]: changeComponent,\r\n [TODAYS_WINNERS_COMPONENT_TYPE]: changeComponent,\r\n [SCOREBOARD_COMPONENT_TYPE]: changeComponent,\r\n [MAP_VETO_COMPONENT_TYPE]: changeMapVetoComponent,\r\n}\r\n\r\nexport const removeComponentMutations = {\r\n [PLAYER_STATS_COMPONENT_TYPE]: removeComponent,\r\n [TEAM_STATS_COMPONENT_TYPE]: removeComponent,\r\n [PLAYER_HEAD_TO_HEAD_COMPONENT_TYPE]: removeComponent,\r\n [TEAM_HEAD_TO_HEAD_COMPONENT_TYPE]: removeComponent,\r\n [PLAYER_LEADERBOARD_COMPONENT_TYPE]: removeComponent,\r\n [TEAM_LEADERBOARD_COMPONENT_TYPE]: removeComponent,\r\n [LIVE_TEAM_LEADERBOARD_COMPONENT_TYPE]: removeComponent,\r\n [LIVE_MAP_TEAMS_COMPONENT_TYPE]: removeComponent,\r\n [LIVE_SURVIVAL_LEADERBOARD_COMPONENT_TYPE]: removeComponent,\r\n [LIVE_TEAM_STATS_COMPONENT_TYPE]: removeComponent,\r\n [LIVE_PLAYER_STATS_COMPONENT_TYPE]: removeComponent,\r\n [LIVE_PLAYER_KILLS_COMPONENT_TYPE]: removeComponent,\r\n [LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_TYPE]: removeComponent,\r\n [LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_TYPE]: removeComponent,\r\n [LIVE_PLAYER_LEADERBOARD_COMPONENT_TYPE]: removeComponent,\r\n [CURRENT_MATCH_COMPONENT_TYPE]: removeComponent,\r\n [TODAYS_WINNERS_COMPONENT_TYPE]: removeComponent,\r\n [SCOREBOARD_COMPONENT_TYPE]: removeComponent,\r\n [MAP_VETO_COMPONENT_TYPE]: removeMapVetoComponent,\r\n}","import gql from 'graphql-tag';\r\n\r\nexport const subscribeToPlayerStats = gql`subscription SubscribeToPlayerStats($token: String!) {\r\n subscribeToPlayerStats(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n valorant {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n kills\r\n assists\r\n deaths\r\n esr\r\n firstBloods\r\n firstDeaths\r\n econRating\r\n adr\r\n hsProcentage\r\n plants\r\n defuses\r\n aces\r\n multikills\r\n clutches\r\n kd\r\n characters\r\n country {\r\n name\r\n iso\r\n }\r\n }\r\n pubg {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n country {\r\n name\r\n iso\r\n }\r\n kills\r\n assists\r\n deaths\r\n damageDealt\r\n damageTaken\r\n knocks\r\n revives\r\n headshotKills\r\n stolenKills\r\n killsStolenFromPlayer\r\n swimDistance\r\n walkDistance\r\n rideDistance\r\n longestKill\r\n timeSurvived\r\n killStreaks\r\n heals\r\n boosts\r\n vehicleDestroyed\r\n }\r\n csgo {\r\n assists\r\n avgArmorLeft\r\n avgBurningTime\r\n avgDmg\r\n avgEquipmentValue\r\n avgFlashedTime\r\n avgHealthLeft\r\n deaths\r\n firstName\r\n hsKills\r\n hsPercentage\r\n id\r\n kD\r\n kR\r\n kills\r\n lastName\r\n maxDmg\r\n maxEquipmentValue\r\n name\r\n roundsAceKills\r\n roundsFourKills\r\n roundsThreeKills\r\n teamName\r\n totalBurningTime\r\n totalDmg\r\n totalEquipmentValue\r\n totalFlashedTime\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToTeamStats = gql`subscription SubscribeToTeamStats($token: String!) {\r\n subscribeToTeamStats(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n valorant {\r\n teamName\r\n kills\r\n assists\r\n deaths\r\n esr\r\n firstBloods\r\n firstDeaths\r\n econRating\r\n adr\r\n hsProcentage\r\n plants\r\n defuses\r\n aces\r\n multikills\r\n clutches\r\n kd\r\n country {\r\n name\r\n iso\r\n }\r\n }\r\n pubg {\r\n teamName\r\n country {\r\n name\r\n iso\r\n }\r\n kills\r\n assists\r\n deaths\r\n damageDealt\r\n damageTaken\r\n knocks\r\n revives\r\n headshotKills\r\n stolenKills\r\n killsStolenFromPlayer\r\n swimDistance\r\n walkDistance\r\n rideDistance\r\n longestKill\r\n timeSurvived\r\n killStreaks\r\n heals\r\n boosts\r\n vehicleDestroyed\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToPlayerHeadToHead = gql`subscription SubscribeToPlayerHeadToHead($token: String!) {\r\n subscribeToPlayerHeadToHead(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n left {\r\n valorant {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n kills\r\n assists\r\n deaths\r\n esr\r\n firstBloods\r\n firstDeaths\r\n econRating\r\n adr\r\n hsProcentage\r\n plants\r\n defuses\r\n aces\r\n multikills\r\n clutches\r\n kd\r\n characters\r\n country {\r\n name\r\n iso\r\n }\r\n }\r\n pubg {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n country {\r\n name\r\n iso\r\n }\r\n kills\r\n assists\r\n deaths\r\n damageDealt\r\n damageTaken\r\n knocks\r\n revives\r\n headshotKills\r\n stolenKills\r\n killsStolenFromPlayer\r\n swimDistance\r\n walkDistance\r\n rideDistance\r\n longestKill\r\n timeSurvived\r\n killStreaks\r\n heals\r\n boosts\r\n vehicleDestroyed\r\n }\r\n }\r\n right{\r\n valorant {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n kills\r\n assists\r\n deaths\r\n esr\r\n firstBloods\r\n firstDeaths\r\n econRating\r\n adr\r\n hsProcentage\r\n plants\r\n defuses\r\n aces\r\n multikills\r\n clutches\r\n kd\r\n characters\r\n country {\r\n name\r\n iso\r\n }\r\n }\r\n pubg {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n country {\r\n name\r\n iso\r\n }\r\n kills\r\n assists\r\n deaths\r\n damageDealt\r\n damageTaken\r\n knocks\r\n revives\r\n headshotKills\r\n stolenKills\r\n killsStolenFromPlayer\r\n swimDistance\r\n walkDistance\r\n rideDistance\r\n longestKill\r\n timeSurvived\r\n killStreaks\r\n heals\r\n boosts\r\n vehicleDestroyed\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToTeamHeadToHead = gql`subscription SubscribeToTeamHeadToHead($token: String!) {\r\n subscribeToTeamHeadToHead(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n left {\r\n pubg {\r\n teamName\r\n country {\r\n name\r\n iso\r\n }\r\n kills\r\n assists\r\n deaths\r\n damageDealt\r\n damageTaken\r\n knocks\r\n revives\r\n headshotKills\r\n stolenKills\r\n killsStolenFromPlayer\r\n swimDistance\r\n walkDistance\r\n rideDistance\r\n longestKill\r\n timeSurvived\r\n killStreaks\r\n heals\r\n boosts\r\n vehicleDestroyed\r\n totalPoints\r\n }\r\n }\r\n right{\r\n pubg {\r\n teamName\r\n country {\r\n name\r\n iso\r\n }\r\n kills\r\n assists\r\n deaths\r\n damageDealt\r\n damageTaken\r\n knocks\r\n revives\r\n headshotKills\r\n stolenKills\r\n killsStolenFromPlayer\r\n swimDistance\r\n walkDistance\r\n rideDistance\r\n longestKill\r\n timeSurvived\r\n killStreaks\r\n heals\r\n boosts\r\n vehicleDestroyed\r\n totalPoints\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToPlayerLeaderboard = gql`subscription SubscribeToPlayerLeaderboard($token: String!) {\r\n subscribeToPlayerLeaderboard(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n valorant {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n kills\r\n assists\r\n deaths\r\n esr\r\n firstBloods\r\n firstDeaths\r\n econRating\r\n adr\r\n hsProcentage\r\n plants\r\n defuses\r\n aces\r\n multikills\r\n clutches\r\n kd\r\n characters\r\n country {\r\n name\r\n iso\r\n }\r\n }\r\n pubg {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n country {\r\n name\r\n iso\r\n }\r\n kills\r\n assists\r\n deaths\r\n damageDealt\r\n damageTaken\r\n knocks\r\n revives\r\n headshotKills\r\n stolenKills\r\n killsStolenFromPlayer\r\n swimDistance\r\n walkDistance\r\n rideDistance\r\n longestKill\r\n timeSurvived\r\n killStreaks\r\n heals\r\n boosts\r\n vehicleDestroyed\r\n flashbangThrow\r\n grenadeThrow\r\n smokebombThrow\r\n molotovThrow\r\n avgTimeSurvived\r\n }\r\n csgo {\r\n assists\r\n avgArmorLeft\r\n avgBurningTime\r\n avgDmg\r\n avgEquipmentValue\r\n avgFlashedTime\r\n avgHealthLeft\r\n deaths\r\n firstName\r\n hsKills\r\n hsPercentage\r\n id\r\n kD\r\n kR\r\n kills\r\n lastName\r\n maxDmg\r\n maxEquipmentValue\r\n name\r\n roundsAceKills\r\n roundsFourKills\r\n roundsThreeKills\r\n teamName\r\n totalBurningTime\r\n totalDmg\r\n totalEquipmentValue\r\n totalFlashedTime\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToTeamLeaderboard = gql`subscription SubscribeToTeamLeaderboard($token: String!) {\r\n subscribeToTeamLeaderboard(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n valorant {\r\n teamName\r\n wins\r\n draws\r\n losses\r\n points\r\n killDifference\r\n kills\r\n assists\r\n deaths\r\n esr\r\n firstBloods\r\n firstDeaths\r\n econRating\r\n adr\r\n hsProcentage\r\n plants\r\n defuses\r\n aces\r\n multikills\r\n clutches\r\n kd\r\n rd\r\n played\r\n country {\r\n name\r\n iso\r\n }\r\n }\r\n pubg {\r\n avgAssists\r\n avgDamageDealt\r\n avgKills\r\n avgKnocks\r\n avgPoints\r\n currentKills\r\n currentRank\r\n initial\r\n name\r\n numberOfMatches\r\n players {\r\n damage\r\n kills\r\n ign\r\n status\r\n }\r\n previousKills\r\n previousPosition\r\n previousPositionChange\r\n totalDamage\r\n totalKills\r\n totalPoints\r\n wins\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToLiveTeamLeaderboard = gql`subscription SubscribeToLiveTeamLeaderboard($token: String!) {\r\n subscribeToLiveTeamLeaderboard(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n avgAssists\r\n avgDamageDealt\r\n avgKills\r\n avgKnocks\r\n avgPoints\r\n currentKills\r\n currentRank\r\n initial\r\n name\r\n numberOfMatches\r\n players {\r\n damage\r\n kills\r\n ign\r\n status\r\n }\r\n previousKills\r\n previousPosition\r\n previousPositionChange\r\n totalDamage\r\n totalKills\r\n totalPoints\r\n wins\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToLiveMapTeams = gql`subscription SubscribeToLiveMapTeams($token: String!) {\r\n subscribeToLiveMapTeams(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n initial\r\n totalKills\r\n totalDamage\r\n numberOfMatches\r\n name\r\n players {\r\n damage\r\n kills\r\n ign\r\n status\r\n }\r\n totalPoints\r\n wins\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToLiveSurvivalStats = gql`subscription SubscribeToLiveSurvivalStats($token: String!) {\r\n subscribeToLiveSurvivalStats(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n avgAssists\r\n avgDamageDealt\r\n avgKills\r\n avgKnocks\r\n avgPoints\r\n currentKills\r\n currentRank\r\n initial\r\n name\r\n numberOfMatches\r\n players {\r\n damage\r\n kills\r\n ign\r\n status\r\n }\r\n previousKills\r\n previousPosition\r\n previousPositionChange\r\n totalDamage\r\n totalKills\r\n totalPoints\r\n wins\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToLiveTeamStats = gql`subscription SubscribeToLiveTeamStats($token: String!) {\r\n SubscribeToLiveTeamStats(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n avgAssists\r\n avgDamageDealt\r\n avgKills\r\n avgKnocks\r\n avgPoints\r\n currentPlacement\r\n initial\r\n name\r\n totalDamage\r\n totalKills\r\n totalPoints\r\n wins\r\n timeSurvived\r\n numberOfMatches\r\n currentDamage\r\n currentKills\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToLivePlayerStats = gql`subscription SubscribeToLivePlayerStats($token: String!) {\r\n SubscribeToLivePlayerStats(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n ign\r\n teamName\r\n teamInitial\r\n totalKills\r\n totalDamage\r\n killRank\r\n damageRank\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToLivePlayerKills = gql`subscription SubscribeToLivePlayerKills($token: String!) {\r\n SubscribeToLivePlayerKills(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n ign\r\n totalDamage\r\n totalKills\r\n teamInitial\r\n teamName\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToLivePlayerKillsDamage = gql`subscription SubscribeToLivePlayerKillsDamage($token: String!) {\r\n SubscribeToLivePlayerKillsDamage(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n ign\r\n totalDamage\r\n totalKills\r\n teamInitial\r\n teamName\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToLiveTeamHeadToHead = gql`subscription SubscribeToLiveTeamHeadToHead($token: String!) {\r\n subscribeToLiveTeamHeadToHead(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n left {\r\n pubg {\r\n name\r\n initial\r\n avgAssists\r\n avgDamageDealt\r\n avgKills\r\n avgKnocks\r\n avgPoints\r\n numberOfMatches\r\n players {\r\n damage\r\n ign\r\n kills\r\n status\r\n }\r\n totalDamage\r\n totalKills\r\n totalPoints\r\n wins\r\n }\r\n }\r\n right{\r\n pubg {\r\n name\r\n initial\r\n avgAssists\r\n avgDamageDealt\r\n avgKills\r\n avgKnocks\r\n avgPoints\r\n numberOfMatches\r\n players {\r\n damage\r\n ign\r\n kills\r\n status\r\n }\r\n totalDamage\r\n totalKills\r\n totalPoints\r\n wins\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToLivePlayerLeaderboard = gql`subscription SubscribeToLivePlayerLeaderboard($token: String!) {\r\n subscribeToLivePlayerLeaderboard(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n ign\r\n teamName\r\n teamInitial\r\n damageRank\r\n ign\r\n killRank\r\n teamInitial\r\n teamName\r\n totalDamage\r\n totalKills\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToScoreboard = gql`subscription SubscribeToScoreboard($token: String!) {\r\n subscribeToScoreboard(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n left {\r\n valorant {\r\n teamName\r\n score {\r\n score\r\n wins\r\n draws\r\n losses\r\n }\r\n players {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n kills\r\n assists\r\n deaths\r\n esr\r\n firstBloods\r\n firstDeaths\r\n econRating\r\n adr\r\n hsProcentage\r\n plants\r\n defuses\r\n aces\r\n multikills\r\n clutches\r\n kd\r\n characters\r\n country {\r\n name\r\n iso\r\n }\r\n }\r\n }\r\n }\r\n right{\r\n valorant {\r\n teamName\r\n score {\r\n score\r\n wins\r\n draws\r\n losses\r\n }\r\n players {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n kills\r\n assists\r\n deaths\r\n esr\r\n firstBloods\r\n firstDeaths\r\n econRating\r\n adr\r\n hsProcentage\r\n plants\r\n defuses\r\n aces\r\n multikills\r\n clutches\r\n kd\r\n characters\r\n country {\r\n name\r\n iso\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToCurrentMatch = gql`subscription SubscribeToCurrentMatch($token: String!) {\r\n subscribeToCurrentMatch(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n valorant {\r\n currentMatch\r\n }\r\n pubg {\r\n currentMatch\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToTodaysWinners = gql`subscription SubscribeToTodayWinner($token: String!) {\r\n subscribeToTodayWinner(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n currentMatchNumber\r\n matches {\r\n teamName\r\n map\r\n matchNumber\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToMapVeto = gql`subscription SubscribeToMapVeto($token: String!) {\r\n subscribeToMapVeto(token: $token) {\r\n token\r\n tokenOverlay\r\n status\r\n pickValues\r\n timer\r\n logs {\r\n map\r\n type\r\n mapVoter\r\n attackers\r\n defenders\r\n }\r\n }\r\n}`;\r\n\r\nexport const subscribeToChangeComponent = gql`subscription SubscribeToChangeComponent($token: String!) {\r\n subscribeToChangeComponent(token: $token) {\r\n token\r\n name\r\n show\r\n opts\r\n args {\r\n type\r\n shard_info\r\n match\r\n game\r\n }\r\n matches {\r\n id\r\n name\r\n startAt\r\n }\r\n teams {\r\n id\r\n name\r\n players {\r\n id\r\n firstName\r\n lastName\r\n ign\r\n }\r\n }\r\n availableStatistics {\r\n key\r\n value\r\n }\r\n }\r\n}`;","import {\r\n subscribeToPlayerStats,\r\n subscribeToTeamStats,\r\n subscribeToPlayerHeadToHead,\r\n subscribeToTeamHeadToHead,\r\n subscribeToPlayerLeaderboard,\r\n subscribeToTeamLeaderboard,\r\n subscribeToLiveTeamLeaderboard,\r\n subscribeToLiveMapTeams,\r\n subscribeToLiveSurvivalStats,\r\n subscribeToLiveTeamStats,\r\n subscribeToLivePlayerStats,\r\n subscribeToLivePlayerKills,\r\n subscribeToLivePlayerKillsDamage,\r\n subscribeToLiveTeamHeadToHead,\r\n subscribeToLivePlayerLeaderboard,\r\n subscribeToCurrentMatch,\r\n subscribeToTodaysWinners,\r\n subscribeToScoreboard,\r\n subscribeToMapVeto,\r\n subscribeToChangeComponent,\r\n} from './componentSubscriptions';\r\nimport {\r\n PLAYER_STATS_COMPONENT_TYPE,\r\n TEAM_STATS_COMPONENT_TYPE,\r\n PLAYER_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n TEAM_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n PLAYER_LEADERBOARD_COMPONENT_TYPE,\r\n TEAM_LEADERBOARD_COMPONENT_TYPE,\r\n LIVE_TEAM_LEADERBOARD_COMPONENT_TYPE,\r\n LIVE_MAP_TEAMS_COMPONENT_TYPE,\r\n LIVE_SURVIVAL_LEADERBOARD_COMPONENT_TYPE,\r\n LIVE_TEAM_STATS_COMPONENT_TYPE,\r\n LIVE_PLAYER_STATS_COMPONENT_TYPE,\r\n LIVE_PLAYER_KILLS_COMPONENT_TYPE,\r\n LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_TYPE,\r\n LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n LIVE_PLAYER_LEADERBOARD_COMPONENT_TYPE,\r\n CURRENT_MATCH_COMPONENT_TYPE,\r\n TODAYS_WINNERS_COMPONENT_TYPE,\r\n SCOREBOARD_COMPONENT_TYPE,\r\n MAP_VETO_COMPONENT_TYPE,\r\n} from '../../views/Components/constants';\r\n\r\nexport const overlayDataSubscriptions = {\r\n [PLAYER_STATS_COMPONENT_TYPE]: subscribeToPlayerStats,\r\n [TEAM_STATS_COMPONENT_TYPE]: subscribeToTeamStats,\r\n [PLAYER_HEAD_TO_HEAD_COMPONENT_TYPE]: subscribeToPlayerHeadToHead,\r\n [TEAM_HEAD_TO_HEAD_COMPONENT_TYPE]: subscribeToTeamHeadToHead,\r\n [PLAYER_LEADERBOARD_COMPONENT_TYPE]: subscribeToPlayerLeaderboard,\r\n [TEAM_LEADERBOARD_COMPONENT_TYPE]: subscribeToTeamLeaderboard,\r\n [LIVE_TEAM_LEADERBOARD_COMPONENT_TYPE]: subscribeToLiveTeamLeaderboard,\r\n [LIVE_MAP_TEAMS_COMPONENT_TYPE]: subscribeToLiveMapTeams,\r\n [LIVE_SURVIVAL_LEADERBOARD_COMPONENT_TYPE]: subscribeToLiveSurvivalStats,\r\n [LIVE_TEAM_STATS_COMPONENT_TYPE]: subscribeToLiveTeamStats,\r\n [LIVE_PLAYER_STATS_COMPONENT_TYPE]: subscribeToLivePlayerStats,\r\n [LIVE_PLAYER_KILLS_COMPONENT_TYPE]: subscribeToLivePlayerKills,\r\n [LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_TYPE]: subscribeToLivePlayerKillsDamage,\r\n [LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_TYPE]: subscribeToLiveTeamHeadToHead,\r\n [LIVE_PLAYER_LEADERBOARD_COMPONENT_TYPE]: subscribeToLivePlayerLeaderboard,\r\n [CURRENT_MATCH_COMPONENT_TYPE]: subscribeToCurrentMatch,\r\n [TODAYS_WINNERS_COMPONENT_TYPE]: subscribeToTodaysWinners,\r\n [SCOREBOARD_COMPONENT_TYPE]: subscribeToScoreboard,\r\n [MAP_VETO_COMPONENT_TYPE]: subscribeToMapVeto,\r\n}\r\n\r\nexport const changeComponentSubscriptions = {\r\n [PLAYER_STATS_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [TEAM_STATS_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [PLAYER_HEAD_TO_HEAD_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [TEAM_HEAD_TO_HEAD_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [PLAYER_LEADERBOARD_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [TEAM_LEADERBOARD_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [LIVE_TEAM_LEADERBOARD_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [LIVE_MAP_TEAMS_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [LIVE_SURVIVAL_LEADERBOARD_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [LIVE_TEAM_STATS_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [LIVE_PLAYER_STATS_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [LIVE_PLAYER_KILLS_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [LIVE_PLAYER_LEADERBOARD_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [CURRENT_MATCH_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [TODAYS_WINNERS_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [SCOREBOARD_COMPONENT_TYPE]: subscribeToChangeComponent,\r\n [MAP_VETO_COMPONENT_TYPE]: null,\r\n}","import { all, takeLatest, takeEvery, call, put, select } from 'redux-saga/effects';\r\nimport _ from 'lodash';\r\nimport { \r\n REQUEST_CREATE_COMPONENT,\r\n REQUEST_CREATE_COMPONENT_PENDING,\r\n REQUEST_CREATE_COMPONENT_SUCCESS,\r\n REQUEST_CREATE_COMPONENT_ERROR,\r\n REQUEST_CREATE_COMPONENTS_BULK,\r\n REQUEST_CREATE_COMPONENTS_BULK_PENDING,\r\n REQUEST_CREATE_COMPONENTS_BULK_SUCCESS,\r\n REQUEST_CREATE_COMPONENTS_BULK_ERROR,\r\n REQUEST_CHANGE_COMPONENT,\r\n REQUEST_CHANGE_COMPONENT_PENDING,\r\n REQUEST_CHANGE_COMPONENT_SUCCESS,\r\n REQUEST_CHANGE_COMPONENT_ERROR,\r\n REQUEST_CHANGE_COMPONENT_WITH_VALIDATION,\r\n REQUEST_REMOVE_COMPONENT,\r\n REQUEST_REMOVE_COMPONENT_PENDING,\r\n REQUEST_REMOVE_COMPONENT_SUCCESS,\r\n REQUEST_REMOVE_COMPONENT_ERROR,\r\n REQUEST_SHARD_INFO_CHANGE_COMPONENT,\r\n REQUEST_SHARD_INFO_CHANGE_COMPONENT_PENDING,\r\n REQUEST_SHARD_INFO_CHANGE_COMPONENT_SUCCESS,\r\n REQUEST_SHARD_INFO_CHANGE_COMPONENT_ERROR,\r\n REQUEST_REMOVE_ALL_COMPONENT,\r\n REQUEST_REMOVE_ALL_COMPONENT_PENDING,\r\n REQUEST_REMOVE_ALL_COMPONENT_SUCCESS,\r\n REQUEST_REMOVE_ALL_COMPONENT_ERROR,\r\n SUBSCRIBE_TO_CHANGE_COMPONENT,\r\n SUBSCRIBE_TO_CHANGE_COMPONENT_PENDING,\r\n SUBSCRIBE_TO_CHANGE_COMPONENT_SUCCESS,\r\n SUBSCRIBE_TO_CHANGE_COMPONENT_ERROR,\r\n} from './types';\r\nimport {\r\n createComponentsBulk,\r\n changeComponentsShardInfo,\r\n} from '../../graphql/apollo/componentMutations';\r\nimport { CREATE_COMPONENT_ERROR, CHANGE_COMPONENT_ERROR, REMOVE_COMPONENT_ERROR } from '../../util/ErrorMessages';\r\nimport { DEFAULT_STATE_VALUES } from '../../views/Components/constants';\r\nimport { isInt } from '../../util/CommonUtil';\r\nimport {\r\n createComponentMutations,\r\n changeComponentMutations,\r\n removeComponentMutations,\r\n} from '../../graphql/apollo/componentTypeMutations';\r\nimport {\r\n changeComponentSubscriptions,\r\n} from '../../graphql/apollo/componentTypeSubscriptions';\r\nimport { displayErrorNotification } from '../notification/actions';\r\nimport { setComponentState, requestChangeComponent as requestChangeComponentAction } from './actions';\r\n\r\n/**\r\n * Makes a request to server to create new component\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestCreateComponent(action) {\r\n yield put({ type: REQUEST_CREATE_COMPONENT_PENDING });\r\n try {\r\n // Calling the server\r\n const client = yield select(state => state.apollo.client);\r\n\r\n const result = (yield call([client, 'mutate'], {\r\n mutation: createComponentMutations[action.payload.component.type],\r\n variables: { shard: action.payload.shard, args: action.payload.args }\r\n })).data;\r\n const data = result[Object.keys(result)[0]];\r\n // TODO: fix when endpoint is completed\r\n data.opts = data.opts ? JSON.parse(data.opts) : null;\r\n data.name = data.name ? data.name : action.payload.component.name;\r\n \r\n yield put({ type: REQUEST_CREATE_COMPONENT_SUCCESS, payload: { ...action.payload.component, ...data, state: {} } });\r\n } catch (err) {\r\n yield put({ type: REQUEST_CREATE_COMPONENT_ERROR });\r\n yield put(displayErrorNotification(CREATE_COMPONENT_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to create new component\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestCreateComponentsBulk(action) {\r\n yield put({ type: REQUEST_CREATE_COMPONENTS_BULK_PENDING });\r\n try {\r\n // Calling the server\r\n const client = yield select(state => state.apollo.client);\r\n\r\n const result = (yield call([client, 'mutate'], {\r\n mutation: createComponentsBulk,\r\n variables: { shard: action.payload.shard, args: action.payload.args }\r\n })).data.createComponentsBulk;\r\n \r\n const components = Object.keys(action.payload.components)\r\n .map(k => action.payload.components[k])\r\n .filter(c => result.find(rc => rc.args.type === c.type));\r\n \r\n yield put({ type: REQUEST_CREATE_COMPONENTS_BULK_SUCCESS, payload: result.map(resultComponent => {\r\n const componentTemplate = components.find(c => resultComponent.args.type === c.type);\r\n if (!componentTemplate) return null;\r\n const state = mapOptsToState(JSON.parse(resultComponent.opts || '{}'), componentTemplate.stateOptsMapping);\r\n if (resultComponent.args.match) {\r\n state.match = resultComponent.args.match;\r\n }\r\n return {\r\n ...componentTemplate,\r\n ...resultComponent,\r\n // TODO: fix when endpoint is completed\r\n opts: JSON.parse(resultComponent.opts),\r\n name: resultComponent.name ? resultComponent.name : componentTemplate.name,\r\n state: state,\r\n }\r\n }).filter(c => c)});\r\n } catch (err) {\r\n yield put({ type: REQUEST_CREATE_COMPONENTS_BULK_ERROR });\r\n yield put(displayErrorNotification(CREATE_COMPONENT_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to change component\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestChangeComponent(action) {\r\n yield put({ type: REQUEST_CHANGE_COMPONENT_PENDING });\r\n try {\r\n // Calling the server\r\n const client = yield select(state => state.apollo.client);\r\n const component = action.payload.component;\r\n const tournaments = yield select(state => state.tournaments[component.args.game]);\r\n\r\n const result = (yield call([client, 'mutate'], {\r\n mutation: changeComponentMutations[component.type],\r\n variables: {\r\n token: component.token,\r\n ...action.payload.componentParameters,\r\n }\r\n })).data;\r\n const data = result[Object.keys(result)[0]];\r\n // TODO: fix when endpoint is completed\r\n data.opts = data.opts ? JSON.parse(data.opts) : {};\r\n // TODO: move to server\r\n data.opts.groupName = getTournamentGroupName(tournaments.find(t => component.args.shard_info.startsWith(t.shard)), component.args.shard_info);\r\n data.opts.matchName = getMatchName(component, action.payload.state);\r\n \r\n yield put({ type: REQUEST_CHANGE_COMPONENT_SUCCESS, payload: {\r\n ...action.payload.component,\r\n ...data,\r\n name: component.name,\r\n state: { ...component.state, ...action.payload.state },\r\n } });\r\n } catch (err) {\r\n yield put({ type: REQUEST_CHANGE_COMPONENT_ERROR });\r\n yield put(displayErrorNotification(CHANGE_COMPONENT_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to change component with state validation\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestChangeComponentWithValidation(action) {\r\n const component = action.payload.component;\r\n addDefaultValues(component);\r\n const stateValid = Object.keys(component.stateOptsMapping).every(opt => component.state[opt] !== null && component.state[opt] !== undefined) || !Object.keys(component.stateOptsMapping).length;\r\n if (!stateValid) {\r\n yield put(setComponentState(component, { showEmptyFieldWarning: true }));\r\n yield new Promise(resolve => { setTimeout(resolve, 500); });\r\n yield put(setComponentState(component, { showEmptyFieldWarning: false }));\r\n } else {\r\n yield put(requestChangeComponentAction(component, action.payload.changes));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to change component with state validation\r\n * \r\n * @param {*} action \r\n */\r\nfunction* subscribeToChangeComponent(action) {\r\n if (!changeComponentSubscriptions[action.payload.component.type]) return;\r\n\r\n yield put({ type: SUBSCRIBE_TO_CHANGE_COMPONENT_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n \r\n const result = (yield call([client, 'subscribe'], {\r\n query: changeComponentSubscriptions[action.payload.component.type],\r\n variables: { token: action.payload.component.token },\r\n }));\r\n result.subscribe({\r\n next: (result) => action.payload.callback(result.data[Object.keys(result.data)[0]]),\r\n error: () => {},\r\n });\r\n \r\n yield put({ type: SUBSCRIBE_TO_CHANGE_COMPONENT_SUCCESS });\r\n } catch (err) {\r\n yield put({ type: SUBSCRIBE_TO_CHANGE_COMPONENT_ERROR });\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to remove component\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestRemoveComponent(action) {\r\n yield put({ type: REQUEST_REMOVE_COMPONENT_PENDING });\r\n try {\r\n // Calling the server\r\n const client = yield select(state => state.apollo.client);\r\n\r\n yield call([client, 'mutate'], {\r\n mutation: removeComponentMutations[action.payload.type],\r\n variables: { token: action.payload.token }\r\n });\r\n \r\n yield put({ type: REQUEST_REMOVE_COMPONENT_SUCCESS, payload: action.payload.token});\r\n } catch (err) {\r\n yield put({ type: REQUEST_REMOVE_COMPONENT_ERROR });\r\n yield put(displayErrorNotification(REMOVE_COMPONENT_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to remove component\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestRemoveAllComponents(action) {\r\n yield put({ type: REQUEST_REMOVE_ALL_COMPONENT_PENDING });\r\n try {\r\n // Calling the server\r\n // TODO: remove all the components from server if necessary\r\n \r\n yield put({ type: REQUEST_REMOVE_ALL_COMPONENT_SUCCESS });\r\n } catch (err) {\r\n yield put({ type: REQUEST_REMOVE_ALL_COMPONENT_ERROR });\r\n yield put(displayErrorNotification(REMOVE_COMPONENT_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to change shard\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestShardInfoChangeComponent(action) {\r\n yield put({ type: REQUEST_SHARD_INFO_CHANGE_COMPONENT_PENDING });\r\n try {\r\n // Calling the server\r\n const client = yield select(state => state.apollo.client);\r\n const components = yield select(state => state.dashboard.components);\r\n\r\n const result = (yield call([client, 'mutate'], {\r\n mutation: changeComponentsShardInfo,\r\n variables: {\r\n tokens: components.map(c => c.token),\r\n shardInfo: action.payload,\r\n }\r\n })).data.changeComponentsShardInfo;\r\n\r\n yield put({ type: REQUEST_SHARD_INFO_CHANGE_COMPONENT_SUCCESS, payload: components.map(c => {\r\n const resultComponent = result.find(rc => rc.token === c.token);\r\n const state = mapOptsToState(JSON.parse(resultComponent.opts || '{}'), c.stateOptsMapping);\r\n return {\r\n ...c,\r\n ...resultComponent,\r\n // TODO: fix when endpoint is completed\r\n opts: JSON.parse(resultComponent.opts),\r\n name: resultComponent.name ? resultComponent.name : c.name,\r\n // TODO: fix ugly code\r\n state: {...(resultComponent.args.type.toLowerCase().includes('live') ? state : {})},\r\n }\r\n })});\r\n\r\n } catch (err) {\r\n yield put({ type: REQUEST_SHARD_INFO_CHANGE_COMPONENT_ERROR });\r\n yield put(displayErrorNotification(CHANGE_COMPONENT_ERROR));\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_CREATE_COMPONENT, requestCreateComponent),\r\n takeLatest(REQUEST_CREATE_COMPONENTS_BULK, requestCreateComponentsBulk),\r\n takeLatest(REQUEST_CHANGE_COMPONENT, requestChangeComponent),\r\n takeLatest(REQUEST_CHANGE_COMPONENT_WITH_VALIDATION, requestChangeComponentWithValidation),\r\n takeEvery(SUBSCRIBE_TO_CHANGE_COMPONENT, subscribeToChangeComponent),\r\n takeLatest(REQUEST_REMOVE_COMPONENT, requestRemoveComponent),\r\n takeLatest(REQUEST_REMOVE_ALL_COMPONENT, requestRemoveAllComponents),\r\n takeLatest(REQUEST_SHARD_INFO_CHANGE_COMPONENT, requestShardInfoChangeComponent),\r\n ]);\r\n}\r\n\r\n/**\r\n * Mapps component opts to state according to mapping rules\r\n * \r\n * @param {*} state \r\n * @param {*} stateOptsMapping \r\n */\r\nfunction mapOptsToState(opts, stateOptsMapping) {\r\n const optsStateMapping = _.invert(stateOptsMapping);\r\n const state = {};\r\n Object.keys(opts || {}).forEach(key => {\r\n if (optsStateMapping[key]) {\r\n state[optsStateMapping[key]] = opts[key];\r\n }\r\n });\r\n return state;\r\n}\r\n\r\n/**\r\n * Returns group name\r\n * \r\n * @param {*} tournament \r\n * @param {*} shardInfo \r\n */\r\nfunction getTournamentGroupName(tournament, shardInfo) {\r\n const ESCAPE_FILTERS = ['year', 'season', 'region'];\r\n let groupName = '';\r\n if (tournament.filter) {\r\n const filters = tournament.filter;\r\n const filterPhases = shardInfo.substring(tournament.shard.length + 1).split('-');\r\n filters.forEach((f, i) => {\r\n const filter = i === 0 ? f : f[filterPhases.slice(0, i).join('-')];\r\n if (filter && !ESCAPE_FILTERS.includes(filter.name.toLowerCase())) {\r\n groupName += filter.fields[filterPhases[i]] + ' ';\r\n }\r\n })\r\n }\r\n\r\n return groupName.trim();\r\n}\r\n\r\n/**\r\n * Returns match name\r\n * \r\n * @param {*} component \r\n * @param {*} state \r\n */\r\nfunction getMatchName(component, state) {\r\n const matchId = (state || {}).match;\r\n if (matchId && isInt(matchId)) {\r\n return component.matches.find(m => m.id === matchId).name;\r\n } else if (component.matches && component.matches.length) {\r\n return component.matches[0].name;\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Adds default values to component state if they are missing\r\n * \r\n * @param {*} component \r\n */\r\nfunction addDefaultValues(component) {\r\n Object.keys(component.stateOptsMapping).forEach(opt => {\r\n if (component.state[opt] === null || component.state[opt] === undefined) {\r\n component.state[opt] = DEFAULT_STATE_VALUES[opt];\r\n }\r\n });\r\n}","import { all, takeLatest, call } from 'redux-saga/effects';\r\nimport { toast } from 'react-toastify';\r\nimport { \r\n DISPLAY_SUCCESS_NOTIFICATION,\r\n DISPLAY_ERROR_NOTIFICATION,\r\n DISPLAY_INFO_NOTIFICATION\r\n} from './types';\r\n\r\n/**\r\n * Displays success notification\r\n */\r\nfunction* displaySuccess(action) {\r\n yield call(toast.success, action.payload);\r\n}\r\n\r\n/**\r\n * Displays error notification\r\n */\r\nfunction* displayError(action) {\r\n yield call(toast.error, action.payload);\r\n}\r\n\r\n/**\r\n * Displays info notification\r\n */\r\nfunction* displayInfo(action) {\r\n yield call(toast.info, action.payload);\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(DISPLAY_SUCCESS_NOTIFICATION, displaySuccess),\r\n takeLatest(DISPLAY_ERROR_NOTIFICATION, displayError),\r\n takeLatest(DISPLAY_INFO_NOTIFICATION, displayInfo)\r\n ]);\r\n}","import gql from 'graphql-tag';\r\n\r\nexport const getTournaments = gql`query GetTournaments {\r\n getTournaments {\r\n csgoTournaments {\r\n id\r\n friendlyName\r\n shard\r\n imageName\r\n region\r\n active\r\n filter\r\n }\r\n pubgTournaments {\r\n id\r\n friendlyName\r\n shard\r\n imageName\r\n region\r\n active\r\n filter\r\n }\r\n pubgcTournaments {\r\n id\r\n friendlyName\r\n shard\r\n imageName\r\n region\r\n active\r\n filter\r\n }\r\n valorantTournaments {\r\n id\r\n friendlyName\r\n shard\r\n imageName\r\n region\r\n active\r\n filter\r\n }\r\n }\r\n}`;\r\n\r\nexport const getTournament = gql`query GetTournament($game: String!, $tournament: TournamentInput!) {\r\n getTournament(game: $game, tournament: $tournament) {\r\n active\r\n delay\r\n eventType\r\n startDate\r\n stopDate\r\n tier\r\n prizePool\r\n filter\r\n friendlyName\r\n gameMode\r\n id\r\n imageName\r\n matches {\r\n gameCreatedAt\r\n gameMatchId\r\n gameMode\r\n id\r\n map\r\n name\r\n shard\r\n shardInfo\r\n valid\r\n }\r\n overlayColor\r\n overlayDesign\r\n region\r\n server\r\n pubgTournamentId\r\n shard\r\n tournamentAwards {\r\n columns {\r\n id\r\n sortingIndex\r\n sortingOrder\r\n title\r\n tournamentAwardFilterId\r\n tournamentAwardId\r\n }\r\n description\r\n filters {\r\n id\r\n title\r\n tournamentAwardId\r\n }\r\n id\r\n rows {\r\n id\r\n player {\r\n id\r\n username\r\n }\r\n team {\r\n id\r\n name\r\n }\r\n tournamentAwardColumnId\r\n tournamentAwardFilterId\r\n tournamentAwardId\r\n value\r\n }\r\n title\r\n tournamentId\r\n type\r\n }\r\n tournamentFilters {\r\n id\r\n name\r\n numberOfMatches\r\n parentId\r\n phases {\r\n dateFrom\r\n dateTo\r\n id\r\n tournamentFilterId\r\n tournamentId\r\n trackBy {\r\n status\r\n username\r\n }\r\n }\r\n teams {\r\n id\r\n name\r\n slotNo\r\n }\r\n tournamentId\r\n type\r\n ruleset\r\n value\r\n prizePoolsDefinitons {\r\n id\r\n placement\r\n prize\r\n }\r\n }\r\n tournamentPhases {\r\n dateFrom\r\n dateTo\r\n id\r\n tournamentFilterId\r\n tournamentId\r\n trackBy {\r\n status\r\n username\r\n platform\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nexport const teamSearch = gql`query TeamSearch($game: String!, $team: String!) {\r\n teamSearch(game: $game, team: $team) {\r\n country {\r\n id\r\n iso\r\n name\r\n }\r\n id\r\n name\r\n }\r\n}`;\r\n\r\nexport const getOrganization = gql`query GetOrganization {\r\n getOrganization {\r\n id\r\n name\r\n users {\r\n id\r\n username\r\n }\r\n verified\r\n availableComponents\r\n }\r\n}`;","import { all, takeLatest, put, select, call } from 'redux-saga/effects';\r\nimport { \r\n REQUEST_ALL_TOURNAMENT,\r\n REQUEST_ALL_TOURNAMENT_PENDING,\r\n REQUEST_ALL_TOURNAMENT_ERROR,\r\n REQUEST_ALL_TOURNAMENT_SUCCESS,\r\n} from './types';\r\nimport { LOADING_ERROR } from '../../util/ErrorMessages';\r\nimport games from '../../util/Games';\r\nimport { getTournaments } from '../../graphql/apollo/tournamentQueries';\r\nimport { displayErrorNotification } from '../notification/actions';\r\n\r\n/**\r\n * Makes a request to server for tournament by ID\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestAllTournaments(action) {\r\n yield put({ type: REQUEST_ALL_TOURNAMENT_PENDING });\r\n try {\r\n // Calling the server\r\n const client = yield select(state => state.apollo.client);\r\n\r\n const tournamentResult = yield call([client, 'query'], {\r\n query: getTournaments,\r\n });\r\n\r\n Object.keys(tournamentResult.data.getTournaments).forEach(game => {\r\n if (Array.isArray(tournamentResult.data.getTournaments[game])) {\r\n tournamentResult.data.getTournaments[game].forEach(t => t.game = games.find(g => game.replace('Tournaments', '') === g));\r\n }\r\n });\r\n\r\n yield put({ type: REQUEST_ALL_TOURNAMENT_SUCCESS, payload: tournamentResult.data.getTournaments });\r\n } catch (err) {\r\n yield put({ type: REQUEST_ALL_TOURNAMENT_ERROR });\r\n yield put(displayErrorNotification(LOADING_ERROR));\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_ALL_TOURNAMENT, requestAllTournaments),\r\n ]);\r\n}","import { all, takeLatest, put } from 'redux-saga/effects';\r\nimport { \r\n REQUEST_TOURNAMENT_FILTERS,\r\n REQUEST_TOURNAMENT_FILTERS_PENDING,\r\n REQUEST_TOURNAMENT_FILTERS_SUCCESS,\r\n REQUEST_TOURNAMENT_FILTERS_ERROR,\r\n} from './types';\r\nimport { LOADING_ERROR } from '../../util/ErrorMessages';\r\nimport { tournamentFilters } from '../../graphql/public/queries';\r\nimport { publicQuery } from '../../graphql/requestHelper';\r\nimport { displayErrorNotification } from '../notification/actions';\r\n\r\n/**\r\n * Makes a request to get tournament filters\r\n *\r\n * @param {*} action \r\n */\r\nfunction* requestTournamentFilters(action) {\r\n yield put({ type: REQUEST_TOURNAMENT_FILTERS_PENDING });\r\n try {\r\n const result = (yield publicQuery(tournamentFilters, {\r\n game: action.payload.game,\r\n tournamentId: action.payload.tournamentId,\r\n })).data.tournamentFilters;\r\n\r\n yield put({ type: REQUEST_TOURNAMENT_FILTERS_SUCCESS, payload: result });\r\n } catch (err) {\r\n yield put({ type: REQUEST_TOURNAMENT_FILTERS_ERROR });\r\n yield put(displayErrorNotification(LOADING_ERROR));\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_TOURNAMENT_FILTERS, requestTournamentFilters),\r\n ]);\r\n}","import { TWIRE_ASSETS_URL } from \"./Constants\";\r\n\r\n/**\r\n * Convert an image \r\n * to a base64 url\r\n * @param {String} url \r\n */\r\nexport function convertImgToBase64URL(url) {\r\n return new Promise((resolve, reject) => {\r\n getImageAsBase64(url)\r\n .then(resolve)\r\n .catch(() => {\r\n getImageAsBase64(TWIRE_ASSETS_URL + \"pubg/team-logos/default.png\")\r\n .then(resolve)\r\n .catch(reject);\r\n });\r\n });\r\n}\r\n\r\nfunction getImageAsBase64(url) {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(\"GET\", url + '?_=' + new Date().getTime());\r\n xhr.responseType = \"blob\";\r\n xhr.onerror = function () { reject(\"Network error.\") };\r\n xhr.onload = function () {\r\n if (xhr.status === 200) {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(xhr.response);\r\n reader.onloadend = function () {\r\n var base64data = reader.result;\r\n resolve(base64data);\r\n }\r\n } else {\r\n reject(\"Loading error:\" + xhr.statusText);\r\n }\r\n };\r\n xhr.send();\r\n } catch {\r\n reject();\r\n }\r\n });\r\n}","import { all, takeLatest, put } from 'redux-saga/effects';\r\nimport { \r\n REQUEST_TEAM_LEADERBOARD,\r\n REQUEST_TEAM_LEADERBOARD_PENDING,\r\n REQUEST_TEAM_LEADERBOARD_SUCCESS,\r\n REQUEST_TEAM_LEADERBOARD_ERROR,\r\n REQUEST_TEAM_LEADERBOARD_AS_CSV,\r\n} from './types';\r\nimport {\r\n REQUEST_EXPORT_AS_IMAGE_PENDING,\r\n REQUEST_EXPORT_AS_IMAGE_SUCCESS,\r\n} from '../exportAsImage/types';\r\nimport { productionLeaderboard, platformLeaderboard } from '../../graphql/public/queries';\r\nimport { publicQuery } from '../../graphql/requestHelper';\r\nimport { convertImgToBase64URL } from '../../util/ExportAsImageUtil';\r\nimport { arrayToCsv, downloadCsv, getTeamLogo } from '../../util/CommonUtil';\r\nimport { compareTeams } from '../../util/LeaderboardUtil';\r\nimport { displayErrorNotification } from '../notification/actions';\r\nimport { LOADING_ERROR } from '../../util/ErrorMessages';\r\n\r\n/**\r\n * Makes a request to server for team leaderboard\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestTeamLeaderboard(action) {\r\n yield put({ type: REQUEST_TEAM_LEADERBOARD_PENDING });\r\n yield put({ type: REQUEST_EXPORT_AS_IMAGE_PENDING });\r\n try {\r\n // Calling the server\r\n let result;\r\n if (action.payload.token) {\r\n result = yield publicQuery(productionLeaderboard, {\r\n game: action.payload.game,\r\n tournament: action.payload.tournament,\r\n token: action.payload.token,\r\n });\r\n\r\n // Loading images as base64 if leaderboard will be exported as image\r\n if (action.payload.forExport) {\r\n for (let i = 0; i < result.data.productionLeaderboard.leaderboard.length; i++) {\r\n result.data.productionLeaderboard.leaderboard[i].logo = yield convertImgToBase64URL(getTeamLogo(result.data.productionLeaderboard.leaderboard[i].team));\r\n }\r\n }\r\n\r\n yield put({ type: REQUEST_TEAM_LEADERBOARD_SUCCESS, payload: result.data.productionLeaderboard });\r\n yield put({ type: REQUEST_EXPORT_AS_IMAGE_SUCCESS });\r\n } else {\r\n result = yield publicQuery(platformLeaderboard, {\r\n game: action.payload.game,\r\n tournament: action.payload.tournament,\r\n });\r\n yield put({ type: REQUEST_TEAM_LEADERBOARD_SUCCESS, payload: result.data.platformLeaderboard });\r\n }\r\n } catch (err) {\r\n yield put({ type: REQUEST_TEAM_LEADERBOARD_ERROR });\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server for team leaderboard for CSV export\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestTeamLeaderboardAsCsv(action) {\r\n try {\r\n // Calling the server\r\n const result = yield publicQuery(productionLeaderboard, { tournament: action.payload.tournament, token: action.payload.token });\r\n const leaderboard = result.data.productionLeaderboard.leaderboard.sort((a, b) => compareTeams(a, b)).map((team, i) => {\r\n return {\r\n rank: i + 1,\r\n teamName: team.team,\r\n teamLogo: getTeamLogo(team.team),\r\n wins: team.wins,\r\n points: team.points + team.kills,\r\n kills: team.kills,\r\n };\r\n });\r\n const csv = arrayToCsv({ rank: 'Rank', teamLogo: 'Team Logo', teamName: 'Team Name', wins: 'Wins', kills: 'Kill Points', points: 'Total Points' }, leaderboard);\r\n downloadCsv(csv, `leaderboard`);\r\n } catch (err) {\r\n yield put(displayErrorNotification(LOADING_ERROR));\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_TEAM_LEADERBOARD, requestTeamLeaderboard),\r\n takeLatest(REQUEST_TEAM_LEADERBOARD_AS_CSV, requestTeamLeaderboardAsCsv),\r\n ]);\r\n}","import { all, takeLatest, put } from 'redux-saga/effects';\r\nimport { \r\n REQUEST_PLAYER_LEADERBOARD,\r\n REQUEST_PLAYER_LEADERBOARD_PENDING,\r\n REQUEST_PLAYER_LEADERBOARD_SUCCESS,\r\n REQUEST_PLAYER_LEADERBOARD_ERROR,\r\n REQUEST_PLAYER_LEADERBOARD_AS_CSV,\r\n} from './types';\r\nimport {\r\n REQUEST_EXPORT_AS_IMAGE_PENDING,\r\n REQUEST_EXPORT_AS_IMAGE_SUCCESS,\r\n} from '../exportAsImage/types';\r\nimport { productionStats, platformStats } from '../../graphql/public/queries';\r\nimport { publicQuery } from '../../graphql/requestHelper';\r\nimport { convertImgToBase64URL } from '../../util/ExportAsImageUtil';\r\nimport { arrayToCsv, downloadCsv, getTeamLogo } from '../../util/CommonUtil';\r\nimport { PLAYER_STATISTICS } from '../../util/Constants';\r\nimport { displayErrorNotification } from '../notification/actions';\r\nimport { LOADING_ERROR } from '../../util/ErrorMessages';\r\n\r\n/**\r\n * Makes a request to server for player leaderboard\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestPlayerLeaderboard(action) {\r\n yield put({ type: REQUEST_PLAYER_LEADERBOARD_PENDING });\r\n yield put({ type: REQUEST_EXPORT_AS_IMAGE_PENDING });\r\n try {\r\n // Calling the server\r\n let result;\r\n if (action.payload.token) {\r\n result = (yield publicQuery(productionStats, {\r\n game: action.payload.game,\r\n tournament: action.payload.tournament,\r\n token: action.payload.token,\r\n })).data.productionStats;\r\n } else {\r\n result = (yield publicQuery(platformStats, {\r\n game: action.payload.game,\r\n tournament: action.payload.tournament,\r\n })).data.platformStats;\r\n }\r\n const sortBy = action.payload.sortBy;\r\n const leaderboard = result.leaderboard.sort((a, b) => a[sortBy] > b[sortBy] ? -1 : 1);\r\n for(let i = 0; i < action.payload.numOfPlayers; i++) {\r\n const player = leaderboard[i];\r\n roundStats(player);\r\n\r\n if (action.payload.forExport) {\r\n player.logo = yield convertImgToBase64URL(getTeamLogo(player.teamName));\r\n }\r\n }\r\n yield put({ type: REQUEST_PLAYER_LEADERBOARD_SUCCESS, payload: {\r\n leaderboard: leaderboard,\r\n matchName: result.matchName,\r\n lastMatchName: result.lastMatchName,\r\n groupName: result.groupName,\r\n } });\r\n yield put({ type: REQUEST_EXPORT_AS_IMAGE_SUCCESS });\r\n } catch (err) {\r\n yield put({ type: REQUEST_PLAYER_LEADERBOARD_ERROR });\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server for player leaderboard\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestPlayerLeaderboardAsCsv(action) {\r\n try {\r\n // Calling the server\r\n const result = (yield publicQuery(productionStats, { tournament: action.payload.tournament, token: action.payload.token })).data.productionStats;\r\n const sortBy = action.payload.sortBy;\r\n const leaderboard = result.leaderboard.sort((a, b) => a[sortBy] > b[sortBy] ? -1 : 1);\r\n for(let i = 0; i < action.payload.numOfPlayers; i++) {\r\n const player = leaderboard[i];\r\n player.teamLogo = getTeamLogo(player.teamName);\r\n roundStats(player);\r\n }\r\n roundStats(leaderboard, action.payload.numOfPlayers);\r\n const csv = arrayToCsv({ username: 'Player Name', teamLogo: 'Team Logo', [sortBy]: PLAYER_STATISTICS[sortBy] }, leaderboard.slice(0, action.payload.numOfPlayers));\r\n downloadCsv(csv, `player-stats`);\r\n } catch (err) {\r\n yield put(displayErrorNotification(LOADING_ERROR));\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_PLAYER_LEADERBOARD, requestPlayerLeaderboard),\r\n takeLatest(REQUEST_PLAYER_LEADERBOARD_AS_CSV, requestPlayerLeaderboardAsCsv),\r\n ]);\r\n}\r\n\r\n/**\r\n * Rounds stats for better presentation\r\n * \r\n * @param {*} leaderboard \r\n */\r\nfunction roundStats(player) {\r\n player.damageDealt = parseInt(player.damageDealt);\r\n player.damageTaken = parseInt(player.damageTaken);\r\n player.swimDistance = parseFloat((player.swimDistance / 1000).toFixed(1));\r\n player.walkDistance = parseFloat((player.walkDistance / 1000).toFixed(1));\r\n player.rideDistance = parseFloat((player.rideDistance / 1000).toFixed(1));\r\n}","import { all, takeLatest, put } from 'redux-saga/effects';\r\nimport { \r\n REQUEST_LAST_WINNERS,\r\n REQUEST_LAST_WINNERS_PENDING,\r\n REQUEST_LAST_WINNERS_SUCCESS,\r\n REQUEST_LAST_WINNERS_ERROR,\r\n} from './types';\r\nimport { todaysWinners } from '../../graphql/public/queries';\r\nimport { publicQuery } from '../../graphql/requestHelper';\r\n\r\n/**\r\n * Makes a request to server for last winners\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestTodaysWinners(action) {\r\n yield put({ type: REQUEST_LAST_WINNERS_PENDING });\r\n try {\r\n // Calling the server\r\n const result = yield publicQuery(todaysWinners, {\r\n game: action.payload.game,\r\n tournament: action.payload.tournament,\r\n numOfMatches: action.payload.numOfMatches,\r\n token: action.payload.token,\r\n });\r\n yield put({ type: REQUEST_LAST_WINNERS_SUCCESS, payload: result.data.todaysWinners });\r\n } catch (err) {\r\n yield put({ type: REQUEST_LAST_WINNERS_ERROR });\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_LAST_WINNERS, requestTodaysWinners),\r\n ]);\r\n}","import { all, takeLatest, call, put, select } from 'redux-saga/effects';\r\nimport { \r\n REQUEST_TEAM_READY,\r\n REQUEST_TEAM_READY_PENDING,\r\n REQUEST_TEAM_READY_SUCCESS,\r\n REQUEST_TEAM_READY_ERROR,\r\n SUBSCRIBE_TO_MAP_VETO_DATA,\r\n SUBSCRIBE_TO_MAP_VETO_DATA_PENDING,\r\n SUBSCRIBE_TO_MAP_VETO_DATA_SUCCESS,\r\n SUBSCRIBE_TO_MAP_VETO_DATA_ERROR,\r\n REQUEST_MAP_VETO_PICK,\r\n REQUEST_MAP_VETO_PICK_PENDING,\r\n REQUEST_MAP_VETO_PICK_SUCCESS,\r\n REQUEST_MAP_VETO_PICK_ERROR,\r\n} from './types';\r\nimport { mapVetoTeamReady, mapVetoMakePick } from '../../graphql/apollo/componentMutations';\r\nimport { subscribeToMapVeto } from '../../graphql/apollo/componentSubscriptions';\r\nimport { setMapVetoData } from './actions';\r\n\r\n/**\r\n * Makes a request to server for team ready\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestTeamReady(action) {\r\n yield put({ type: REQUEST_TEAM_READY_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n\r\n const result = (yield call([client, 'query'], {\r\n query: mapVetoTeamReady,\r\n variables: {\r\n token: action.payload.teamToken,\r\n overlayToken: action.payload.overlayToken,\r\n },\r\n })).data.teamReady;\r\n \r\n yield put({ type: REQUEST_TEAM_READY_SUCCESS, payload: {\r\n ...result,\r\n teamToken: action.payload.teamToken,\r\n overlayToken: action.payload.overlayToken,\r\n } });\r\n } catch (err) {\r\n yield put({ type: REQUEST_TEAM_READY_ERROR });\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to subscribe to updates\r\n * \r\n * @param {*} action \r\n */\r\nfunction* subscribeToMapVetoData(action) {\r\n yield put({ type: SUBSCRIBE_TO_MAP_VETO_DATA_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n \r\n const result = (yield call([client, 'subscribe'], {\r\n query: subscribeToMapVeto,\r\n variables: {\r\n token: action.payload.teamToken,\r\n },\r\n }));\r\n result.subscribe({\r\n next: (result) => action.payload.callback(result.data.subscribeToMapVeto),\r\n error: () => {},\r\n });\r\n \r\n yield put({ type: SUBSCRIBE_TO_MAP_VETO_DATA_SUCCESS });\r\n } catch (err) {\r\n yield put({ type: SUBSCRIBE_TO_MAP_VETO_DATA_ERROR });\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to subscribe to updates\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestMapVetoPick(action) {\r\n yield put({ type: REQUEST_MAP_VETO_PICK_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n const { status, teamToken, overlayToken } = yield select(state => state.mapVeto);\r\n\r\n const result = (yield call([client, 'mutate'], {\r\n mutation: mapVetoMakePick,\r\n variables: {\r\n token: teamToken,\r\n overlayToken: overlayToken,\r\n status: status,\r\n value: action.payload,\r\n },\r\n })).data.makePick;\r\n \r\n yield put({ type: REQUEST_MAP_VETO_PICK_SUCCESS });\r\n yield put(setMapVetoData(result));\r\n } catch (err) {\r\n yield put({ type: REQUEST_MAP_VETO_PICK_ERROR });\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_TEAM_READY, requestTeamReady),\r\n takeLatest(SUBSCRIBE_TO_MAP_VETO_DATA, subscribeToMapVetoData),\r\n takeLatest(REQUEST_MAP_VETO_PICK, requestMapVetoPick),\r\n ]);\r\n}","import gql from 'graphql-tag';\r\n\r\nexport const createTournament = gql`mutation CreateTournament($game: String!, $tournament: TournamentInput!) {\r\n createTournament(game: $game, tournament: $tournament) {\r\n active\r\n pubgTournamentId\r\n # components\r\n delay\r\n filter\r\n friendlyName\r\n gameMode\r\n id\r\n imageName\r\n overlayColor\r\n overlayDesign\r\n region\r\n server\r\n shard\r\n tournamentFilters {\r\n id\r\n name\r\n parentId\r\n phases {\r\n dateFrom\r\n dateTo\r\n id\r\n tournamentFilterId\r\n tournamentId\r\n trackBy {\r\n status\r\n username\r\n }\r\n }\r\n teams {\r\n id\r\n name\r\n slotNo\r\n }\r\n tournamentId\r\n type\r\n value\r\n }\r\n tournamentPhases {\r\n dateFrom\r\n dateTo\r\n id\r\n tournamentFilterId\r\n tournamentId\r\n trackBy {\r\n status\r\n username\r\n platform\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nexport const editTournament = gql`mutation EditTournament($game: String!, $tournament: TournamentInput!) {\r\n editTournament(game: $game, tournament: $tournament) {\r\n active\r\n pubgTournamentId\r\n # components\r\n delay\r\n filter\r\n friendlyName\r\n gameMode\r\n id\r\n imageName\r\n overlayColor\r\n overlayDesign\r\n region\r\n server\r\n shard\r\n tournamentFilters {\r\n id\r\n name\r\n parentId\r\n phases {\r\n dateFrom\r\n dateTo\r\n id\r\n tournamentFilterId\r\n tournamentId\r\n trackBy {\r\n status\r\n username\r\n }\r\n }\r\n teams {\r\n id\r\n name\r\n slotNo\r\n }\r\n tournamentId\r\n type\r\n value\r\n }\r\n tournamentPhases {\r\n dateFrom\r\n dateTo\r\n id\r\n tournamentFilterId\r\n tournamentId\r\n trackBy {\r\n status\r\n username\r\n platform\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nexport const createTournamentFilter = gql`mutation CreateTournamentFilter($game: String!, $tournamentFilter: TournamentFilterInput!) {\r\n createTournamentFilter(game: $game, tournamentFilter: $tournamentFilter) {\r\n id\r\n name\r\n parentId\r\n tournamentId\r\n type\r\n ruleset\r\n value\r\n }\r\n}`;\r\n\r\nexport const editTournamentFilter = gql`mutation EditTournamentFilter($game: String!, $tournamentFilter: TournamentFilterInput!) {\r\n editTournamentFilter(game: $game, tournamentFilter: $tournamentFilter) {\r\n id\r\n name\r\n parentId\r\n tournamentId\r\n type\r\n ruleset\r\n value\r\n }\r\n}`;\r\n\r\nexport const deleteTournamentFilter = gql`mutation DeleteTournamentFilter($game: String!, $id: Int!) {\r\n deleteTournamentFilter(game: $game, id: $id)\r\n}`;\r\n\r\nexport const createTournamentPhase = gql`mutation CreateTournamentPhase($game: String!, $tournamentPhase: TournamentPhaseInput!) {\r\n createTournamentPhase(game: $game, tournamentPhase: $tournamentPhase) {\r\n dateFrom\r\n dateTo\r\n id\r\n tournamentFilterId\r\n tournamentId\r\n trackBy {\r\n status\r\n username\r\n }\r\n }\r\n}`;\r\n\r\nexport const editTournamentPhase = gql`mutation EditTournamentPhase($game: String!, $tournamentPhase: TournamentPhaseInput!) {\r\n editTournamentPhase(game: $game, tournamentPhase: $tournamentPhase) {\r\n dateFrom\r\n dateTo\r\n id\r\n tournamentFilterId\r\n tournamentId\r\n trackBy {\r\n status\r\n username\r\n }\r\n }\r\n}`;\r\n\r\nexport const deleteTournamentPhase = gql`mutation DeleteTournamentPhase($game: String!, $id: Int!) {\r\n deleteTournamentPhase(game: $game, id: $id)\r\n}`;\r\n\r\nexport const changeTrackBy = gql`mutation ChangeTrackBy($game: String!, $tournamentFilterId: Int!, $tournamentId: Int!, $trackBy: TrackingObject!) {\r\n changeTrackBy(game: $game, tournamentFilterId: $tournamentFilterId, tournamentId: $tournamentId, trackBy: $trackBy) {\r\n dateFrom\r\n dateTo\r\n id\r\n tournamentFilterId\r\n tournamentId\r\n trackBy {\r\n status\r\n username\r\n platform\r\n }\r\n }\r\n}`;\r\n\r\nexport const addTournamentMatch = gql`mutation AddTournamentMatch($game: String!, $match: MatchInput!) {\r\n addTournamentMatch(game: $game, match: $match) {\r\n gameCreatedAt\r\n gameMatchId\r\n gameMode\r\n id\r\n map\r\n name\r\n shard\r\n shardInfo\r\n valid\r\n }\r\n}`;\r\n\r\nexport const editTournamentMatch = gql`mutation EditTournamentMatch($game: String!, $match: MatchInput!) {\r\n editTournamentMatch(game: $game, match: $match) {\r\n gameCreatedAt\r\n gameMatchId\r\n gameMode\r\n id\r\n map\r\n name\r\n shard\r\n shardInfo\r\n valid\r\n }\r\n}`;\r\n\r\nexport const addTournamentTeamSlots = gql`mutation AddTournamentTeamSlots($game: String!, $teams: TournamentTeamInput!, $tournamentFilterId: Int!, $tournamentId: Int!) {\r\n addTournamentTeamSlots(game: $game, teams: $teams, tournamentFilterId: $tournamentFilterId, tournamentId: $tournamentId) {\r\n id\r\n name\r\n slotNo\r\n }\r\n}`;\r\n\r\nexport const addTournamentPrizePool = gql`mutation AddTournamentPrizePool($game: String!, $tournamentPrizePoolDistributions: TournamentPrizePoolInput!, $tournamentFilterId: Int!, $tournamentId: Int!) {\r\n addTournamentPrizePool(game: $game, tournamentPrizePoolDistributions: $tournamentPrizePoolDistributions, tournamentFilterId: $tournamentFilterId, tournamentId: $tournamentId) {\r\n id\r\n placement\r\n prize\r\n }\r\n}`;\r\n\r\nexport const removeTournamentPrizePool = gql`mutation RemoveTournamentPrizePool($game: String!, $tournamentPrizePoolDistributions: TournamentPrizePoolInput!) {\r\n removeTournamentPrizePool(game: $game, tournamentPrizePoolDistributions: $tournamentPrizePoolDistributions) {\r\n id\r\n placement\r\n prize\r\n }\r\n}`;\r\n\r\nexport const createTournamentAward = gql`mutation CreateTournamentAward($game: String!, $tournamentAward: TournamentAwardInput!) {\r\n createTournamentAward(game: $game, tournamentAward: $tournamentAward) {\r\n description\r\n id\r\n title\r\n tournamentId\r\n type\r\n columns {\r\n id\r\n sortingIndex\r\n sortingOrder\r\n title\r\n tournamentAwardFilterId\r\n tournamentAwardId\r\n }\r\n filters {\r\n id\r\n title\r\n tournamentAwardId\r\n }\r\n rows {\r\n id\r\n player {\r\n id\r\n inGameUsername\r\n }\r\n team {\r\n id\r\n name\r\n }\r\n tournamentAwardColumnId\r\n tournamentAwardFilterId\r\n tournamentAwardId\r\n value\r\n }\r\n }\r\n}`;\r\n\r\nexport const editTournamentAward = gql`mutation EditTournamentAward($game: String!, $tournamentAward: TournamentAwardInput!) {\r\n editTournamentAward(game: $game, tournamentAward: $tournamentAward) {\r\n description\r\n id\r\n title\r\n tournamentId\r\n type\r\n columns {\r\n id\r\n sortingIndex\r\n sortingOrder\r\n title\r\n tournamentAwardFilterId\r\n tournamentAwardId\r\n }\r\n filters {\r\n id\r\n title\r\n tournamentAwardId\r\n }\r\n rows {\r\n id\r\n player {\r\n id\r\n inGameUsername\r\n }\r\n team {\r\n id\r\n name\r\n }\r\n tournamentAwardColumnId\r\n tournamentAwardFilterId\r\n tournamentAwardId\r\n value\r\n }\r\n }\r\n}`;\r\n\r\nexport const deleteTournamentAward = gql`mutation DeleteTournamentAward($game: String!, $tournamentAward: TournamentAwardInput!) {\r\n deleteTournamentAward(game: $game, tournamentAward: $tournamentAward) {\r\n id\r\n }\r\n}`;\r\n\r\nexport const createTournamentAwardRow = gql`mutation CreateTournamentAwardRow($game: String!, $tournamentAwardRow: TournamentAwardRowInput!) {\r\n createTournamentAwardRow(game: $game, tournamentAwardRow: $tournamentAwardRow) {\r\n description\r\n id\r\n title\r\n tournamentId\r\n type\r\n columns {\r\n id\r\n sortingIndex\r\n sortingOrder\r\n title\r\n tournamentAwardFilterId\r\n tournamentAwardId\r\n }\r\n filters {\r\n id\r\n title\r\n tournamentAwardId\r\n }\r\n rows {\r\n id\r\n player {\r\n id\r\n inGameUsername\r\n }\r\n team {\r\n id\r\n name\r\n }\r\n tournamentAwardColumnId\r\n tournamentAwardFilterId\r\n tournamentAwardId\r\n value\r\n }\r\n }\r\n}`;\r\n\r\nexport const editTournamentAwardRow = gql`mutation EditTournamentAwardRow($game: String!, $tournamentAwardRow: TournamentAwardRowInput!) {\r\n editTournamentAwardRow(game: $game, tournamentAwardRow: $tournamentAwardRow) {\r\n description\r\n id\r\n title\r\n tournamentId\r\n type\r\n columns {\r\n id\r\n sortingIndex\r\n sortingOrder\r\n title\r\n tournamentAwardFilterId\r\n tournamentAwardId\r\n }\r\n filters {\r\n id\r\n title\r\n tournamentAwardId\r\n }\r\n rows {\r\n id\r\n player {\r\n id\r\n inGameUsername\r\n }\r\n team {\r\n id\r\n name\r\n }\r\n tournamentAwardColumnId\r\n tournamentAwardFilterId\r\n tournamentAwardId\r\n value\r\n }\r\n }\r\n}`;\r\n\r\nexport const deleteTournamentAwardRow = gql`mutation DeleteTournamentAwardRow($game: String!, $tournamentAwardRow: TournamentAwardRowInput!) {\r\n deleteTournamentAwardRow(game: $game, tournamentAwardRow: $tournamentAwardRow) {\r\n id\r\n }\r\n}`;","import gql from 'graphql-tag';\r\n\r\nexport const subscribeToTournamentMatch = gql`subscription SubscribeToTournamentMatch($shard: String!) {\r\n subscribeToTournamentMatch(shard: $shard) {\r\n gameCreatedAt\r\n gameMatchId\r\n gameMode\r\n id\r\n map\r\n name\r\n shard\r\n shardInfo\r\n valid\r\n }\r\n}`;\r\n\r\nexport const subscribeToUsernameCheck = gql`subscription SubscribeToUsernameCheck($shard: String!) {\r\n subscribeToUsernameCheck(shard: $shard) {\r\n dateFrom\r\n dateTo\r\n id\r\n tournamentFilterId\r\n tournamentId\r\n trackBy {\r\n status\r\n username\r\n }\r\n }\r\n}`;","import { all, takeLatest, put, select, call } from 'redux-saga/effects';\r\nimport { \r\n REQUEST_CREATE_TOURNAMENT,\r\n REQUEST_CREATE_TOURNAMENT_PENDING,\r\n REQUEST_CREATE_TOURNAMENT_ERROR,\r\n REQUEST_CREATE_TOURNAMENT_SUCCESS,\r\n REQUEST_EDIT_TOURNAMENT,\r\n REQUEST_EDIT_TOURNAMENT_PENDING,\r\n REQUEST_EDIT_TOURNAMENT_ERROR,\r\n REQUEST_EDIT_TOURNAMENT_SUCCESS,\r\n REQUEST_TOURNAMENT,\r\n REQUEST_TOURNAMENT_PENDING,\r\n REQUEST_TOURNAMENT_ERROR,\r\n REQUEST_TOURNAMENT_SUCCESS,\r\n REQUEST_CREATE_TOURNAMENT_FILTER,\r\n REQUEST_CREATE_TOURNAMENT_FILTER_SUCCESS,\r\n REQUEST_CREATE_TOURNAMENT_FILTER_PENDING,\r\n REQUEST_CREATE_TOURNAMENT_FILTER_ERROR,\r\n REQUEST_EDIT_TOURNAMENT_FILTER,\r\n REQUEST_EDIT_TOURNAMENT_FILTER_ERROR,\r\n REQUEST_EDIT_TOURNAMENT_FILTER_PENDING,\r\n REQUEST_EDIT_TOURNAMENT_FILTER_SUCCESS,\r\n REQUEST_DELETE_TOURNAMENT_FILTER,\r\n REQUEST_DELETE_TOURNAMENT_FILTER_ERROR,\r\n REQUEST_DELETE_TOURNAMENT_FILTER_PENDING,\r\n REQUEST_DELETE_TOURNAMENT_FILTER_SUCCESS,\r\n REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE,\r\n REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE_ERROR,\r\n REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE_PENDING,\r\n REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE_SUCCESS,\r\n REQUEST_CHANGE_TRACKED_IGNS,\r\n REQUEST_CHANGE_TRACKED_IGNS_ERROR,\r\n REQUEST_CHANGE_TRACKED_IGNS_PENDING,\r\n REQUEST_CHANGE_TRACKED_IGNS_SUCCESS,\r\n REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS,\r\n REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS_ERROR,\r\n REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS_PENDING,\r\n REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS_SUCCESS,\r\n REQUEST_ADD_TOURNAMENT_MATCH,\r\n REQUEST_ADD_TOURNAMENT_MATCH_ERROR,\r\n REQUEST_ADD_TOURNAMENT_MATCH_PENDING,\r\n REQUEST_ADD_TOURNAMENT_MATCH_SUCCESS,\r\n REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH,\r\n REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH_PENDING,\r\n REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH_SUCCESS,\r\n REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH_ERROR,\r\n REQUEST_EDIT_TOURNAMENT_MATCH_PENDING,\r\n REQUEST_EDIT_TOURNAMENT_MATCH_SUCCESS,\r\n REQUEST_EDIT_TOURNAMENT_MATCH_ERROR,\r\n REQUEST_EDIT_TOURNAMENT_MATCH,\r\n REQUEST_TOURNAMENT_LEADERBOARD,\r\n REQUEST_TOURNAMENT_LEADERBOARD_ERROR,\r\n REQUEST_TOURNAMENT_LEADERBOARD_PENDING,\r\n REQUEST_TOURNAMENT_LEADERBOARD_SUCCESS,\r\n REQUEST_DELETE_TOURNAMENT_PHASE_PENDING,\r\n REQUEST_DELETE_TOURNAMENT_PHASE_SUCCESS,\r\n REQUEST_DELETE_TOURNAMENT_PHASE_ERROR,\r\n REQUEST_DELETE_TOURNAMENT_PHASE,\r\n REQUEST_ADD_TOURNAMENT_TEAM_SLOTS_PENDING,\r\n REQUEST_ADD_TOURNAMENT_TEAM_SLOTS_SUCCESS,\r\n REQUEST_ADD_TOURNAMENT_TEAM_SLOTS_ERROR,\r\n REQUEST_ADD_TOURNAMENT_TEAM_SLOTS,\r\n REQUEST_ADD_TOURNAMENT_PRIZE_POOL_PENDING,\r\n REQUEST_ADD_TOURNAMENT_PRIZE_POOL_SUCCESS,\r\n REQUEST_ADD_TOURNAMENT_PRIZE_POOL_ERROR,\r\n REQUEST_ADD_TOURNAMENT_PRIZE_POOL,\r\n REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL_PENDING,\r\n REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL_SUCCESS,\r\n REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL_ERROR,\r\n REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL,\r\n REQUEST_SAVE_TOURNAMENT_AWARD,\r\n REQUEST_SAVE_TOURNAMENT_AWARD_SUCCESS,\r\n REQUEST_SAVE_TOURNAMENT_AWARD_ROW,\r\n REQUEST_SAVE_TOURNAMENT_AWARD_ROW_SUCCESS,\r\n REQUEST_DELETE_TOURNAMENT_AWARD,\r\n REQUEST_DELETE_TOURNAMENT_AWARD_SUCCESS,\r\n} from './types';\r\nimport { LOADING_ERROR, SAVING_ERROR } from '../../util/ErrorMessages';\r\nimport { SAVE_SUCCESS } from '../../util/SuccessMessages';\r\nimport {\r\n addTournamentMatch,\r\n changeTrackBy,\r\n createTournament,\r\n deleteTournamentPhase,\r\n editTournament,\r\n removeTournamentPrizePool,\r\n createTournamentAward,\r\n editTournamentAward,\r\n deleteTournamentAward,\r\n createTournamentAwardRow,\r\n editTournamentAwardRow,\r\n} from '../../graphql/apollo/tournamentMutations';\r\nimport { getTournament } from '../../graphql/apollo/tournamentQueries';\r\nimport {\r\n createTournamentFilter,\r\n editTournamentFilter,\r\n deleteTournamentFilter,\r\n createTournamentPhase,\r\n editTournamentPhase,\r\n editTournamentMatch,\r\n addTournamentTeamSlots,\r\n addTournamentPrizePool,\r\n} from '../../graphql/apollo/tournamentMutations';\r\nimport {\r\n getAdditionalTournamentInfo,\r\n tournamentById,\r\n} from '../../graphql/public/queries';\r\nimport { displayErrorNotification, displaySuccessNotification } from '../notification/actions';\r\nimport { subscribeToTournamentMatch, subscribeToUsernameCheck } from '../../graphql/apollo/tournamentSubscriptions';\r\nimport { privateMutation, publicQuery } from '../../graphql/requestHelper';\r\nimport { productionLeaderboard } from '../../graphql/public/queries';\r\nimport { TOURNAMENT_TYPE_TOURNAMENT } from '../../util/Constants';\r\nimport { saveAdditionalTournamentInfo } from '../../graphql/private/mutations';\r\n\r\n/**\r\n * Makes a request to create tournament\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestCreateTournament(action) {\r\n yield put({ type: REQUEST_CREATE_TOURNAMENT_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n const organizationId = yield select(state => state.organization.id);\r\n\r\n if (action.payload.tournament.eventType === TOURNAMENT_TYPE_TOURNAMENT && organizationId !== 1) {\r\n throw new Error();\r\n }\r\n\r\n const result = (yield call([client, 'mutate'], {\r\n mutation: createTournament,\r\n variables: {\r\n game: action.payload.game,\r\n tournament: action.payload.tournament,\r\n }\r\n })).data.createTournament;\r\n\r\n yield put({ type: REQUEST_CREATE_TOURNAMENT_SUCCESS, payload: { game: action.payload.game, ...result } });\r\n yield put(displaySuccessNotification(SAVE_SUCCESS));\r\n if (action.payload.callback) action.payload.callback(result);\r\n } catch (err) {\r\n yield put({ type: REQUEST_CREATE_TOURNAMENT_ERROR });\r\n yield put(displayErrorNotification(SAVING_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to edit tournament\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestEditTournament(action) {\r\n yield put({ type: REQUEST_EDIT_TOURNAMENT_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n const token = yield select(state => state.auth.token);\r\n const organizationId = yield select(state => state.organization.id);\r\n\r\n const result = (yield call([client, 'mutate'], {\r\n mutation: editTournament,\r\n variables: {\r\n game: action.payload.game,\r\n tournament: action.payload.tournament,\r\n }\r\n })).data.editTournament;\r\n\r\n if (organizationId === 1) {\r\n yield privateMutation(saveAdditionalTournamentInfo, {\r\n game: action.payload.game,\r\n tournamentId: action.payload.tournament.id,\r\n image: action.payload.additionalInfo.image,\r\n visible: action.payload.additionalInfo.visible,\r\n token: token,\r\n });\r\n }\r\n\r\n yield put({ type: REQUEST_EDIT_TOURNAMENT_SUCCESS, payload: result });\r\n yield put(displaySuccessNotification(SAVE_SUCCESS));\r\n } catch (err) {\r\n yield put({ type: REQUEST_EDIT_TOURNAMENT_ERROR });\r\n yield put(displayErrorNotification(SAVING_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server for all my tournaments\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestTournament(action) {\r\n yield put({ type: REQUEST_TOURNAMENT_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n const token = yield select(state => state.auth.token);\r\n const organizationId = yield select(state => state.organization.id);\r\n\r\n const result = (yield call([client, 'query'], {\r\n query: getTournament,\r\n variables: action.payload,\r\n })).data.getTournament;\r\n\r\n const tournament = (yield publicQuery(tournamentById, {\r\n game: action.payload.game,\r\n id: action.payload.tournament.id,\r\n })).data.tournamentById;\r\n\r\n let additionalInfo = {};\r\n\r\n if (organizationId === 1) {\r\n additionalInfo = (yield publicQuery(getAdditionalTournamentInfo, {\r\n game: action.payload.game,\r\n tournamentId: action.payload.tournament.id,\r\n token: token,\r\n })).data.getAdditionalTournamentInfo;\r\n }\r\n\r\n yield put({ type: REQUEST_TOURNAMENT_SUCCESS, payload: {\r\n game: action.payload.game,\r\n filters: tournament.tournamentFilters,\r\n ...additionalInfo,\r\n ...result,\r\n }});\r\n } catch (err) {\r\n yield put({ type: REQUEST_TOURNAMENT_ERROR });\r\n yield put(displayErrorNotification(LOADING_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to create tournament filter\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestCreateTournamentFilter(action) {\r\n yield put({ type: REQUEST_CREATE_TOURNAMENT_FILTER_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n\r\n const result = (yield call([client, 'mutate'], {\r\n mutation: createTournamentFilter,\r\n variables: action.payload,\r\n })).data.createTournamentFilter;\r\n\r\n yield put({ type: REQUEST_CREATE_TOURNAMENT_FILTER_SUCCESS, payload: result });\r\n\r\n if (action.callback) action.callback(result.id);\r\n } catch (err) {\r\n yield put({ type: REQUEST_CREATE_TOURNAMENT_FILTER_ERROR });\r\n yield put(displayErrorNotification(SAVING_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to upsert tournament filter\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestEditTournamentFilter(action) {\r\n yield put({ type: REQUEST_EDIT_TOURNAMENT_FILTER_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n const tournamentFilters = yield select(state => state.tournament.tournamentFilters);\r\n\r\n const filtersToCheck = action.payload.tournamentFilter.parentId ?\r\n tournamentFilters.filter(f => f.parentId === action.payload.tournamentFilter.parentId)\r\n :\r\n tournamentFilters.filter(f => !f.parentId);\r\n if (filtersToCheck.some(f => f.name === action.payload.tournamentFilter.name && f.id !== action.payload.tournamentFilter.id)) {\r\n yield put(displayErrorNotification(\"Name already exists\"));\r\n } else {\r\n const result = (yield call([client, 'mutate'], {\r\n mutation: editTournamentFilter,\r\n variables: action.payload,\r\n })).data.editTournamentFilter;\r\n \r\n if (action.callback) action.callback(result);\r\n \r\n yield put({ type: REQUEST_EDIT_TOURNAMENT_FILTER_SUCCESS, payload: result });\r\n }\r\n } catch (err) {\r\n yield put({ type: REQUEST_EDIT_TOURNAMENT_FILTER_ERROR });\r\n yield put(displayErrorNotification(SAVING_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to delete tournament filter\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestDeleteTournamentFilter(action) {\r\n yield put({ type: REQUEST_DELETE_TOURNAMENT_FILTER_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n\r\n yield call([client, 'mutate'], {\r\n mutation: deleteTournamentFilter,\r\n variables: action.payload,\r\n });\r\n\r\n yield put({ type: REQUEST_DELETE_TOURNAMENT_FILTER_SUCCESS, payload: action.payload.id });\r\n } catch (err) {\r\n yield put({ type: REQUEST_DELETE_TOURNAMENT_FILTER_ERROR });\r\n yield put(displayErrorNotification(SAVING_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to create or edit tournament phase\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestCreateOrEditTournamentPhase(action) {\r\n yield put({ type: REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n const tournamentPhases = yield select(state => state.tournament.tournamentPhases);\r\n\r\n // Getting tracking players from already existing phase and assigning them to create object\r\n const existingPhaseForThisGroup = tournamentPhases.find(p => p.id && p.tournamentFilterId === action.payload.phase.tournamentFilterId);\r\n action.payload.phase.trackBy = existingPhaseForThisGroup ? existingPhaseForThisGroup.trackBy.map(p => { return { username: p.username, platform: p.platform } }) : null;\r\n\r\n const result = (yield call([client, 'mutate'], {\r\n mutation: action.payload.phase.id ? editTournamentPhase : createTournamentPhase,\r\n variables: { game: action.payload.game, tournamentPhase: action.payload.phase },\r\n })).data[action.payload.phase.id ? 'editTournamentPhase' : 'createTournamentPhase'];\r\n\r\n yield put({ type: REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE_SUCCESS, payload: result });\r\n yield put(displaySuccessNotification(SAVE_SUCCESS));\r\n } catch (err) {\r\n yield put({ type: REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE_ERROR });\r\n yield put(displayErrorNotification(err.graphQLErrors.length ? err.graphQLErrors[0].message : SAVING_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to delete tournament phase\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestDeleteTournamentPhase(action) {\r\n yield put({ type: REQUEST_DELETE_TOURNAMENT_PHASE_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n const tournamentPhases = yield select(state => state.tournament.tournamentPhases);\r\n\r\n yield call([client, 'mutate'], {\r\n mutation: deleteTournamentPhase,\r\n variables: { game: action.payload.game, id: action.payload.id },\r\n });\r\n\r\n tournamentPhases.splice(action.payload.index, 1);\r\n\r\n yield put({ type: REQUEST_DELETE_TOURNAMENT_PHASE_SUCCESS, payload: [...tournamentPhases] });\r\n } catch (err) {\r\n yield put({ type: REQUEST_DELETE_TOURNAMENT_PHASE_ERROR });\r\n yield put(displayErrorNotification(SAVING_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to change tracked IGNs on phases that have give tournamentFilterId\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestChangeTrackedIGNs(action) {\r\n yield put({ type: REQUEST_CHANGE_TRACKED_IGNS_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n\r\n const result = (yield call([client, 'mutate'], {\r\n mutation: changeTrackBy,\r\n variables: { \r\n game: action.payload.game, \r\n tournamentFilterId: action.payload.tournamentFilterId,\r\n tournamentId: action.payload.tournamentId,\r\n trackBy: action.payload.trackedIGNs,\r\n },\r\n })).data.changeTrackBy;\r\n\r\n yield put({ type: REQUEST_CHANGE_TRACKED_IGNS_SUCCESS, payload: { newPhases: result.filter(x => x), tournamentFilterId: action.payload.tournamentFilterId }});\r\n yield put(displaySuccessNotification(SAVE_SUCCESS));\r\n } catch (err) {\r\n yield put({ type: REQUEST_CHANGE_TRACKED_IGNS_ERROR });\r\n yield put(displayErrorNotification(SAVING_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to subscribe to tournament matches\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestSubscriptionToChangeTrackedIGNs(action) {\r\n yield put({ type: REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n \r\n const result = (yield call([client, 'subscribe'], {\r\n query: subscribeToUsernameCheck,\r\n variables: { shard: action.payload.shard },\r\n }));\r\n \r\n const subscription = result.subscribe({\r\n next: (result) => action.payload.callback(result.data.subscribeToUsernameCheck),\r\n error: () => {},\r\n });\r\n \r\n yield put({ type: REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS_SUCCESS, payload: subscription });\r\n } catch (err) {\r\n yield put({ type: REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS_ERROR });\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to add match to the tournament\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestAddTournamentMatch(action) {\r\n yield put({ type: REQUEST_ADD_TOURNAMENT_MATCH_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n\r\n yield call([client, 'mutate'], {\r\n mutation: addTournamentMatch,\r\n variables: action.payload,\r\n });\r\n\r\n yield put({ type: REQUEST_ADD_TOURNAMENT_MATCH_SUCCESS });\r\n } catch (err) {\r\n yield put({ type: REQUEST_ADD_TOURNAMENT_MATCH_ERROR });\r\n yield put(displayErrorNotification(SAVING_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to edit tournament match\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestEditTournamentMatch(action) {\r\n yield put({ type: REQUEST_EDIT_TOURNAMENT_MATCH_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n\r\n const result = (yield call([client, 'mutate'], {\r\n mutation: editTournamentMatch,\r\n variables: action.payload,\r\n })).data.editTournamentMatch;\r\n\r\n yield put({ type: REQUEST_EDIT_TOURNAMENT_MATCH_SUCCESS, payload: result });\r\n } catch (err) {\r\n yield put({ type: REQUEST_EDIT_TOURNAMENT_MATCH_ERROR });\r\n yield put(displayErrorNotification(SAVING_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to subscribe to tournament matches\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestSubscriptionToTournamentMatch(action) {\r\n yield put({ type: REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n \r\n const result = (yield call([client, 'subscribe'], {\r\n query: subscribeToTournamentMatch,\r\n variables: { shard: action.payload.shard },\r\n }));\r\n \r\n const subscription = result.subscribe({\r\n next: (result) => action.payload.callback(result.data.subscribeToTournamentMatch),\r\n error: () => {},\r\n });\r\n \r\n yield put({ type: REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH_SUCCESS, payload: subscription });\r\n } catch (err) {\r\n yield put({ type: REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH_ERROR });\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to get the tournament leaderboard\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestTournamentLeaderboard(action) {\r\n yield put({ type: REQUEST_TOURNAMENT_LEADERBOARD_PENDING });\r\n try {\r\n const token = yield select(state => state.auth.token);\r\n const result = (yield publicQuery(productionLeaderboard, {\r\n game: action.payload.game,\r\n tournament: action.payload.shardInfo,\r\n token: token,\r\n })).data.productionLeaderboard.leaderboard;\r\n \r\n yield put({ type: REQUEST_TOURNAMENT_LEADERBOARD_SUCCESS, payload: result });\r\n } catch (err) {\r\n yield put({ type: REQUEST_TOURNAMENT_LEADERBOARD_ERROR });\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to get the tournament leaderboard\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestAddTournamentTeamSlots(action) {\r\n yield put({ type: REQUEST_ADD_TOURNAMENT_TEAM_SLOTS_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n\r\n const result = (yield call([client, 'mutate'], {\r\n mutation: addTournamentTeamSlots,\r\n variables: action.payload,\r\n })).data.addTournamentTeamSlots;\r\n \r\n yield put({ type: REQUEST_ADD_TOURNAMENT_TEAM_SLOTS_SUCCESS, payload: { teams: result, tournamentFilterId: action.payload.tournamentFilterId }});\r\n yield put(displaySuccessNotification(SAVE_SUCCESS));\r\n } catch (err) {\r\n yield put({ type: REQUEST_ADD_TOURNAMENT_TEAM_SLOTS_ERROR });\r\n yield put(displayErrorNotification(err.graphQLErrors.length ? err.graphQLErrors[0].message : SAVING_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to add prize pool definitions\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestAddTournamentPrizePool(action) {\r\n yield put({ type: REQUEST_ADD_TOURNAMENT_PRIZE_POOL_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n action.payload.tournamentPrizePoolDistributions.forEach(p => p.prize = parseInt(p.prize));\r\n\r\n const result = (yield call([client, 'mutate'], {\r\n mutation: addTournamentPrizePool,\r\n variables: action.payload,\r\n })).data.addTournamentPrizePool;\r\n \r\n yield put({ type: REQUEST_ADD_TOURNAMENT_PRIZE_POOL_SUCCESS, payload: { prizePoolDefinitions: result, tournamentFilterId: action.payload.tournamentFilterId }});\r\n yield put(displaySuccessNotification(SAVE_SUCCESS));\r\n } catch (err) {\r\n yield put({ type: REQUEST_ADD_TOURNAMENT_PRIZE_POOL_ERROR });\r\n yield put(displayErrorNotification(err.graphQLErrors.length ? err.graphQLErrors[0].message : SAVING_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to add prize pool definitions\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestRemoveTournamentPrizePool(action) {\r\n yield put({ type: REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n action.payload.tournamentPrizePoolDistributions.prize = parseInt(action.payload.tournamentPrizePoolDistributions.prize);\r\n\r\n yield call([client, 'mutate'], {\r\n mutation: removeTournamentPrizePool,\r\n variables: action.payload,\r\n });\r\n \r\n yield put({ type: REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL_SUCCESS });\r\n yield put(displaySuccessNotification(SAVE_SUCCESS));\r\n if (action.callback) {\r\n action.callback();\r\n }\r\n } catch (err) {\r\n yield put({ type: REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL_ERROR });\r\n yield put(displayErrorNotification(err.graphQLErrors.length ? err.graphQLErrors[0].message : SAVING_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to add award\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestSaveTournamentAward(action) {\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n\r\n const result = (yield call([client, 'mutate'], {\r\n mutation: action.payload.award.id ? editTournamentAward : createTournamentAward,\r\n variables: {\r\n game: action.payload.game,\r\n tournamentAward: {\r\n id: action.payload.award.id,\r\n title: action.payload.award.title,\r\n tournamentId: action.payload.award.tournamentId,\r\n description: action.payload.award.description,\r\n type: action.payload.award.type,\r\n },\r\n },\r\n })).data[action.payload.award.id ? 'editTournamentAward' : 'createTournamentAward'];\r\n \r\n yield put({ type: REQUEST_SAVE_TOURNAMENT_AWARD_SUCCESS, payload: {award: result, index: action.payload.index} });\r\n yield put(displaySuccessNotification(SAVE_SUCCESS));\r\n if (action.callback) {\r\n action.callback();\r\n }\r\n } catch (err) {\r\n yield put(displayErrorNotification(err.graphQLErrors && err.graphQLErrors.length ? err.graphQLErrors[0].message : SAVING_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to add award column\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestSaveTournamentAwardRow(action) {\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n\r\n const result = (yield call([client, 'mutate'], {\r\n mutation: action.payload.row.id ? editTournamentAwardRow : createTournamentAwardRow,\r\n variables: {\r\n game: action.payload.game,\r\n tournamentAwardRow: {\r\n ...action.payload.row,\r\n id: action.payload.row.id || null,\r\n teamId: action.payload.row.teamId || null,\r\n playerId: action.payload.row.playerId || null,\r\n },\r\n },\r\n })).data[action.payload.row.id ? 'editTournamentAwardRow' : 'createTournamentAwardRow'];\r\n \r\n yield put({ type: REQUEST_SAVE_TOURNAMENT_AWARD_ROW_SUCCESS, payload: result });\r\n yield put(displaySuccessNotification(SAVE_SUCCESS));\r\n if (action.callback) {\r\n action.callback();\r\n }\r\n } catch (err) {\r\n yield put(displayErrorNotification(err.graphQLErrors && err.graphQLErrors.length ? err.graphQLErrors[0].message : SAVING_ERROR));\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to remove award\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestDeleteTournamentAward(action) {\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n\r\n yield call([client, 'mutate'], {\r\n mutation: deleteTournamentAward,\r\n variables: {\r\n game: action.payload.game,\r\n tournamentAward: {\r\n id: action.payload.award.id,\r\n type: action.payload.award.type,\r\n title: action.payload.award.title,\r\n tournamentId: action.payload.award.tournamentId,\r\n },\r\n },\r\n });\r\n \r\n yield put({ type: REQUEST_DELETE_TOURNAMENT_AWARD_SUCCESS, payload: action.payload.award });\r\n yield put(displaySuccessNotification(SAVE_SUCCESS));\r\n if (action.callback) {\r\n action.callback();\r\n }\r\n } catch (err) {\r\n yield put(displayErrorNotification(err.graphQLErrors && err.graphQLErrors.length ? err.graphQLErrors[0].message : SAVING_ERROR));\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_CREATE_TOURNAMENT, requestCreateTournament),\r\n takeLatest(REQUEST_EDIT_TOURNAMENT, requestEditTournament),\r\n takeLatest(REQUEST_TOURNAMENT, requestTournament),\r\n takeLatest(REQUEST_CREATE_TOURNAMENT_FILTER, requestCreateTournamentFilter),\r\n takeLatest(REQUEST_EDIT_TOURNAMENT_FILTER, requestEditTournamentFilter),\r\n takeLatest(REQUEST_DELETE_TOURNAMENT_FILTER, requestDeleteTournamentFilter),\r\n takeLatest(REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE, requestCreateOrEditTournamentPhase),\r\n takeLatest(REQUEST_DELETE_TOURNAMENT_PHASE, requestDeleteTournamentPhase),\r\n takeLatest(REQUEST_CHANGE_TRACKED_IGNS, requestChangeTrackedIGNs),\r\n takeLatest(REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS, requestSubscriptionToChangeTrackedIGNs),\r\n takeLatest(REQUEST_ADD_TOURNAMENT_MATCH, requestAddTournamentMatch),\r\n takeLatest(REQUEST_EDIT_TOURNAMENT_MATCH, requestEditTournamentMatch),\r\n takeLatest(REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH, requestSubscriptionToTournamentMatch),\r\n takeLatest(REQUEST_TOURNAMENT_LEADERBOARD, requestTournamentLeaderboard),\r\n takeLatest(REQUEST_ADD_TOURNAMENT_TEAM_SLOTS, requestAddTournamentTeamSlots),\r\n takeLatest(REQUEST_ADD_TOURNAMENT_PRIZE_POOL, requestAddTournamentPrizePool),\r\n takeLatest(REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL, requestRemoveTournamentPrizePool),\r\n takeLatest(REQUEST_SAVE_TOURNAMENT_AWARD, requestSaveTournamentAward),\r\n takeLatest(REQUEST_SAVE_TOURNAMENT_AWARD_ROW, requestSaveTournamentAwardRow),\r\n takeLatest(REQUEST_DELETE_TOURNAMENT_AWARD, requestDeleteTournamentAward),\r\n ]);\r\n}","// eslint-disable\r\n// this is an auto generated file. This will be overwritten\r\n\r\nexport const saveFile = `mutation SaveFile($file: FileInput, $game: String!) {\r\n saveFile(file: $file, game: $game)\r\n}\r\n`;\r\nexport const saveHighlights = `mutation SaveHighlights($fileId: Int!, $highlights: [HighlightInput!]!) {\r\n saveHighlights(fileId: $fileId, highlights: $highlights) {\r\n fileId\r\n isPublic\r\n filename\r\n highlights {\r\n time\r\n comment\r\n drawings\r\n sub\r\n username\r\n }\r\n }\r\n}\r\n`;\r\nexport const savePubgUsername = `mutation SavePubgUsername($pubgUsername: String, $pubgUsernameId: Int) {\r\n savePubgUsername(\r\n pubgUsername: $pubgUsername\r\n pubgUsernameId: $pubgUsernameId\r\n ) {\r\n id\r\n pubgUsername\r\n pubgUsernameDone\r\n pubgUsernameError\r\n }\r\n}\r\n`;\r\nexport const saveEmailNotifications = `mutation SaveEmailNotifications($emailNotifications: Boolean!) {\r\n saveEmailNotifications(emailNotifications: $emailNotifications)\r\n}\r\n`;\r\nexport const renameFile = `mutation RenameFile($fileId: Int!, $filename: String!) {\r\n renameFile(fileId: $fileId, filename: $filename)\r\n}\r\n`;\r\nexport const deleteFile = `mutation DeleteFile($fileId: Int!) {\r\n deleteFile(fileId: $fileId)\r\n}\r\n`;\r\nexport const tutorialDone = `mutation TutorialDone($done: Boolean!, $name: String!, $gameId: Int!) {\r\n tutorialDone(done: $done, name: $name, gameId: $gameId)\r\n}\r\n`;\r\nexport const savePayment = `mutation SavePayment($subscriptionId: String!) {\r\n savePayment(subscriptionId: $subscriptionId)\r\n}\r\n`;\r\nexport const makeFilePublic = `mutation MakeFilePublic($fileId: Int!) {\r\n makeFilePublic(fileId: $fileId)\r\n}\r\n`;\r\nexport const collaboration = `mutation Collaboration($fileId: Int!, $collaborationInput: AWSJSON!) {\r\n collaboration(fileId: $fileId, collaborationInput: $collaborationInput) {\r\n fileId\r\n settings\r\n }\r\n}\r\n`;\r\nexport const usePromoCode = `mutation UsePromoCode($code: String!) {\r\n usePromoCode(code: $code)\r\n}\r\n`;\r\nexport const updateTournamentTeamName = `mutation UpdateTournamentTeamName(\r\n $tournamentId: Int!\r\n $igns: [String!]!\r\n $teamName: String!\r\n) {\r\n updateTournamentTeamName(\r\n tournamentId: $tournamentId\r\n igns: $igns\r\n teamName: $teamName\r\n )\r\n}\r\n`;\r\nexport const saveAdditionalTournamentInfo = `mutation SaveAdditionalTournamentInfo(\r\n $game: String!\r\n $token: String!\r\n $tournamentId: Int!\r\n $image: String!\r\n $visible: Boolean!\r\n) {\r\n saveAdditionalTournamentInfo(\r\n game: $game\r\n token: $token\r\n tournamentId: $tournamentId\r\n image: $image\r\n visible: $visible\r\n )\r\n}\r\n`;\r\n","import { all, takeLatest, put } from 'redux-saga/effects';\r\nimport { \r\n REQUEST_TOURNAMENT_PLAYERS,\r\n REQUEST_TOURNAMENT_PLAYERS_PENDING,\r\n REQUEST_TOURNAMENT_PLAYERS_SUCCESS,\r\n REQUEST_TOURNAMENT_PLAYERS_ERROR,\r\n} from './types';\r\nimport { LOADING_ERROR } from '../../util/ErrorMessages';\r\nimport { playerNamesByTournament } from '../../graphql/public/queries';\r\nimport { publicQuery } from '../../graphql/requestHelper';\r\nimport { displayErrorNotification } from '../notification/actions';\r\n\r\n/**\r\n * Makes a request to get tournament players\r\n *\r\n * @param {*} action \r\n */\r\nfunction* requestTournamentPlayers(action) {\r\n yield put({ type: REQUEST_TOURNAMENT_PLAYERS_PENDING });\r\n try {\r\n const result = (yield publicQuery(playerNamesByTournament, {\r\n game: action.payload.game,\r\n tournament: action.payload.shard,\r\n })).data.playerNamesByTournament;\r\n\r\n yield put({ type: REQUEST_TOURNAMENT_PLAYERS_SUCCESS, payload: result });\r\n } catch (err) {\r\n yield put({ type: REQUEST_TOURNAMENT_PLAYERS_ERROR });\r\n yield put(displayErrorNotification(LOADING_ERROR));\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_TOURNAMENT_PLAYERS, requestTournamentPlayers),\r\n ]);\r\n}","import { all, takeLatest, put } from 'redux-saga/effects';\r\nimport { \r\n REQUEST_TOURNAMENT_TEAMS,\r\n REQUEST_TOURNAMENT_TEAMS_PENDING,\r\n REQUEST_TOURNAMENT_TEAMS_SUCCESS,\r\n REQUEST_TOURNAMENT_TEAMS_ERROR,\r\n} from './types';\r\nimport { LOADING_ERROR } from '../../util/ErrorMessages';\r\nimport { teamNamesByTournament } from '../../graphql/public/queries';\r\nimport { publicQuery } from '../../graphql/requestHelper';\r\nimport { displayErrorNotification } from '../notification/actions';\r\n\r\n/**\r\n * Makes a request to get tournament teams\r\n *\r\n * @param {*} action \r\n */\r\nfunction* requestTournamentTeams(action) {\r\n yield put({ type: REQUEST_TOURNAMENT_TEAMS_PENDING });\r\n try {\r\n const result = (yield publicQuery(teamNamesByTournament, {\r\n game: action.payload.game,\r\n tournament: action.payload.shard,\r\n })).data.teamNamesByTournament;\r\n\r\n yield put({ type: REQUEST_TOURNAMENT_TEAMS_SUCCESS, payload: result });\r\n } catch (err) {\r\n yield put({ type: REQUEST_TOURNAMENT_TEAMS_ERROR });\r\n yield put(displayErrorNotification(LOADING_ERROR));\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_TOURNAMENT_TEAMS, requestTournamentTeams),\r\n ]);\r\n}","import { all, takeLatest, put, call, select } from 'redux-saga/effects';\r\nimport { \r\n REQUEST_ALL_CUSTOM_TOURNAMENT,\r\n REQUEST_ALL_CUSTOM_TOURNAMENT_PENDING,\r\n REQUEST_ALL_CUSTOM_TOURNAMENT_ERROR,\r\n REQUEST_ALL_CUSTOM_TOURNAMENT_SUCCESS,\r\n} from './types';\r\nimport { LOADING_ERROR } from '../../util/ErrorMessages';\r\nimport { getTournaments } from '../../graphql/apollo/tournamentQueries';\r\nimport { displayErrorNotification } from '../notification/actions';\r\n\r\n/**\r\n * Makes a request to server for all my tournaments\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestAllCustomTournaments(action) {\r\n yield put({ type: REQUEST_ALL_CUSTOM_TOURNAMENT_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n\r\n const result = (yield call([client, 'query'], {\r\n query: getTournaments,\r\n })).data;\r\n\r\n yield put({ type: REQUEST_ALL_CUSTOM_TOURNAMENT_SUCCESS, payload: result });\r\n } catch (err) {\r\n yield put({ type: REQUEST_ALL_CUSTOM_TOURNAMENT_ERROR });\r\n yield put(displayErrorNotification(LOADING_ERROR));\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_ALL_CUSTOM_TOURNAMENT, requestAllCustomTournaments),\r\n ]);\r\n}","import gql from 'graphql-tag';\r\n\r\nexport const getPlayerStats = gql`query GetPlayerStats($token: String!) {\r\n getPlayerStats(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n valorant {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n kills\r\n assists\r\n deaths\r\n esr\r\n firstBloods\r\n firstDeaths\r\n econRating\r\n adr\r\n hsProcentage\r\n plants\r\n defuses\r\n aces\r\n multikills\r\n clutches\r\n kd\r\n characters\r\n country {\r\n name\r\n iso\r\n }\r\n }\r\n pubg {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n country {\r\n name\r\n iso\r\n }\r\n kills\r\n assists\r\n deaths\r\n damageDealt\r\n damageTaken\r\n knocks\r\n revives\r\n headshotKills\r\n stolenKills\r\n killsStolenFromPlayer\r\n swimDistance\r\n walkDistance\r\n rideDistance\r\n longestKill\r\n timeSurvived\r\n killStreaks\r\n heals\r\n boosts\r\n vehicleDestroyed\r\n }\r\n csgo {\r\n assists\r\n avgArmorLeft\r\n avgBurningTime\r\n avgDmg\r\n avgEquipmentValue\r\n avgFlashedTime\r\n avgHealthLeft\r\n deaths\r\n firstName\r\n hsKills\r\n hsPercentage\r\n id\r\n kD\r\n kR\r\n kills\r\n lastName\r\n maxDmg\r\n maxEquipmentValue\r\n name\r\n roundsAceKills\r\n roundsFourKills\r\n roundsThreeKills\r\n teamName\r\n totalBurningTime\r\n totalDmg\r\n totalEquipmentValue\r\n totalFlashedTime\r\n }\r\n }\r\n}`;\r\n\r\nexport const getTeamStats = gql`query GetTeamStats($token: String!) {\r\n getTeamStats(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n valorant {\r\n teamName\r\n kills\r\n assists\r\n deaths\r\n esr\r\n firstBloods\r\n firstDeaths\r\n econRating\r\n adr\r\n hsProcentage\r\n plants\r\n defuses\r\n aces\r\n multikills\r\n clutches\r\n kd\r\n country {\r\n name\r\n iso\r\n }\r\n }\r\n pubg {\r\n teamName\r\n country {\r\n name\r\n iso\r\n }\r\n kills\r\n assists\r\n deaths\r\n damageDealt\r\n damageTaken\r\n knocks\r\n revives\r\n headshotKills\r\n stolenKills\r\n killsStolenFromPlayer\r\n swimDistance\r\n walkDistance\r\n rideDistance\r\n longestKill\r\n timeSurvived\r\n killStreaks\r\n heals\r\n boosts\r\n vehicleDestroyed\r\n }\r\n }\r\n}`;\r\n\r\nexport const getPlayerHeadToHead = gql`query GetPlayerHeadToHead($token: String!) {\r\n getPlayerHeadToHead(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n left {\r\n valorant {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n kills\r\n assists\r\n deaths\r\n esr\r\n firstBloods\r\n firstDeaths\r\n econRating\r\n adr\r\n hsProcentage\r\n plants\r\n defuses\r\n aces\r\n multikills\r\n clutches\r\n kd\r\n characters\r\n country {\r\n name\r\n iso\r\n }\r\n }\r\n pubg {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n country {\r\n name\r\n iso\r\n }\r\n kills\r\n assists\r\n deaths\r\n damageDealt\r\n damageTaken\r\n knocks\r\n revives\r\n headshotKills\r\n stolenKills\r\n killsStolenFromPlayer\r\n swimDistance\r\n walkDistance\r\n rideDistance\r\n longestKill\r\n timeSurvived\r\n killStreaks\r\n heals\r\n boosts\r\n vehicleDestroyed\r\n }\r\n }\r\n right{\r\n valorant {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n kills\r\n assists\r\n deaths\r\n esr\r\n firstBloods\r\n firstDeaths\r\n econRating\r\n adr\r\n hsProcentage\r\n plants\r\n defuses\r\n aces\r\n multikills\r\n clutches\r\n kd\r\n characters\r\n country {\r\n name\r\n iso\r\n }\r\n }\r\n pubg {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n country {\r\n name\r\n iso\r\n }\r\n kills\r\n assists\r\n deaths\r\n damageDealt\r\n damageTaken\r\n knocks\r\n revives\r\n headshotKills\r\n stolenKills\r\n killsStolenFromPlayer\r\n swimDistance\r\n walkDistance\r\n rideDistance\r\n longestKill\r\n timeSurvived\r\n killStreaks\r\n heals\r\n boosts\r\n vehicleDestroyed\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nexport const getTeamHeadToHead = gql`query GetTeamHeadToHead($token: String!) {\r\n getTeamHeadToHead(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n left {\r\n pubg {\r\n teamName\r\n country {\r\n name\r\n iso\r\n }\r\n kills\r\n assists\r\n deaths\r\n damageDealt\r\n damageTaken\r\n knocks\r\n revives\r\n headshotKills\r\n stolenKills\r\n killsStolenFromPlayer\r\n swimDistance\r\n walkDistance\r\n rideDistance\r\n longestKill\r\n timeSurvived\r\n killStreaks\r\n heals\r\n boosts\r\n vehicleDestroyed\r\n totalPoints\r\n }\r\n }\r\n right{\r\n pubg {\r\n teamName\r\n country {\r\n name\r\n iso\r\n }\r\n kills\r\n assists\r\n deaths\r\n damageDealt\r\n damageTaken\r\n knocks\r\n revives\r\n headshotKills\r\n stolenKills\r\n killsStolenFromPlayer\r\n swimDistance\r\n walkDistance\r\n rideDistance\r\n longestKill\r\n timeSurvived\r\n killStreaks\r\n heals\r\n boosts\r\n vehicleDestroyed\r\n totalPoints\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nexport const getPlayerLeaderboard = gql`query GetPlayerLeaderboard($token: String!) {\r\n getPlayerLeaderboard(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n valorant {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n kills\r\n assists\r\n deaths\r\n esr\r\n firstBloods\r\n firstDeaths\r\n econRating\r\n adr\r\n hsProcentage\r\n plants\r\n defuses\r\n aces\r\n multikills\r\n clutches\r\n kd\r\n characters\r\n country {\r\n name\r\n iso\r\n }\r\n }\r\n pubg {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n country {\r\n name\r\n iso\r\n }\r\n kills\r\n assists\r\n deaths\r\n damageDealt\r\n damageTaken\r\n knocks\r\n revives\r\n headshotKills\r\n stolenKills\r\n killsStolenFromPlayer\r\n swimDistance\r\n walkDistance\r\n rideDistance\r\n longestKill\r\n timeSurvived\r\n killStreaks\r\n heals\r\n boosts\r\n vehicleDestroyed\r\n avgTimeSurvived\r\n flashbangThrow\r\n grenadeThrow\r\n smokebombThrow\r\n molotovThrow\r\n avgTimeSurvived\r\n }\r\n csgo {\r\n assists\r\n avgArmorLeft\r\n avgBurningTime\r\n avgDmg\r\n avgEquipmentValue\r\n avgFlashedTime\r\n avgHealthLeft\r\n deaths\r\n firstName\r\n hsKills\r\n hsPercentage\r\n id\r\n kD\r\n kR\r\n kills\r\n lastName\r\n maxDmg\r\n maxEquipmentValue\r\n name\r\n roundsAceKills\r\n roundsFourKills\r\n roundsThreeKills\r\n teamName\r\n totalBurningTime\r\n totalDmg\r\n totalEquipmentValue\r\n totalFlashedTime\r\n }\r\n }\r\n}`;\r\n\r\nexport const getTeamLeaderboard = gql`query GetTeamLeaderboard($token: String!) {\r\n getTeamLeaderboard(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n valorant {\r\n teamName\r\n wins\r\n draws\r\n losses\r\n points\r\n killDifference\r\n kills\r\n assists\r\n deaths\r\n esr\r\n firstBloods\r\n firstDeaths\r\n econRating\r\n adr\r\n hsProcentage\r\n plants\r\n defuses\r\n aces\r\n multikills\r\n clutches\r\n kd\r\n rd\r\n played\r\n country {\r\n name\r\n iso\r\n }\r\n }\r\n pubg {\r\n avgAssists\r\n avgDamageDealt\r\n avgKills\r\n avgKnocks\r\n avgPoints\r\n currentKills\r\n currentRank\r\n initial\r\n name\r\n numberOfMatches\r\n players {\r\n damage\r\n kills\r\n ign\r\n status\r\n }\r\n previousKills\r\n previousPosition\r\n previousPositionChange\r\n totalDamage\r\n totalKills\r\n totalPoints\r\n wins\r\n }\r\n }\r\n}`;\r\n\r\nexport const getLiveTeamLeaderboard = gql`query GetLiveTeamLeaderboard($token: String!) {\r\n getLiveTeamLeaderboard(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n avgAssists\r\n avgDamageDealt\r\n avgKills\r\n avgKnocks\r\n avgPoints\r\n currentKills\r\n currentRank\r\n initial\r\n name\r\n numberOfMatches\r\n players {\r\n damage\r\n kills\r\n ign\r\n status\r\n }\r\n previousKills\r\n previousPosition\r\n previousPositionChange\r\n totalDamage\r\n totalKills\r\n totalPoints\r\n wins\r\n }\r\n }\r\n}`;\r\n\r\nexport const getLiveMapTeams = gql`query GetLiveMapTeams($token: String!) {\r\n getLiveMapTeams(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n initial\r\n totalKills\r\n totalDamage\r\n numberOfMatches\r\n name\r\n players {\r\n damage\r\n kills\r\n ign\r\n status\r\n }\r\n totalPoints\r\n wins\r\n }\r\n }\r\n}`;\r\n\r\nexport const getLiveSurvivalStats = gql`query GetLiveSurvivalStats($token: String!) {\r\n getLiveSurvivalStats(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n avgAssists\r\n avgDamageDealt\r\n avgKills\r\n avgKnocks\r\n avgPoints\r\n currentKills\r\n currentRank\r\n initial\r\n name\r\n numberOfMatches\r\n players {\r\n damage\r\n kills\r\n ign\r\n status\r\n }\r\n previousKills\r\n previousPosition\r\n previousPositionChange\r\n totalDamage\r\n totalKills\r\n totalPoints\r\n wins\r\n }\r\n }\r\n}`;\r\n\r\nexport const getLiveTeamStats = gql`query GetLiveTeamStats($token: String!) {\r\n GetLiveTeamStats(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n avgAssists\r\n avgDamageDealt\r\n avgKills\r\n avgKnocks\r\n avgPoints\r\n currentPlacement\r\n initial\r\n name\r\n totalDamage\r\n totalKills\r\n totalPoints\r\n wins\r\n timeSurvived\r\n numberOfMatches\r\n currentDamage\r\n currentKills\r\n }\r\n }\r\n}`;\r\n\r\nexport const getLivePlayerStats = gql`query GetLivePlayerStats($token: String!) {\r\n GetLivePlayerStats(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n ign\r\n teamName\r\n teamInitial\r\n totalKills\r\n totalDamage\r\n killRank\r\n damageRank\r\n }\r\n }\r\n}`;\r\n\r\nexport const getLivePlayerKills = gql`query GetLivePlayerKills($token: String!) {\r\n GetLivePlayerKills(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n ign\r\n totalDamage\r\n totalKills\r\n teamInitial\r\n teamName\r\n }\r\n }\r\n}`;\r\n\r\nexport const getLivePlayerKillsDamage = gql`query GetLivePlayerKillsDamage($token: String!) {\r\n GetLivePlayerKillsDamage(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n ign\r\n totalDamage\r\n totalKills\r\n teamInitial\r\n teamName\r\n }\r\n }\r\n}`;\r\n\r\nexport const getScoreboard = gql`query GetScoreboard($token: String!) {\r\n getScoreboard(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n left {\r\n valorant {\r\n teamName\r\n score {\r\n score\r\n wins\r\n draws\r\n losses\r\n }\r\n players {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n kills\r\n assists\r\n deaths\r\n esr\r\n firstBloods\r\n firstDeaths\r\n econRating\r\n adr\r\n hsProcentage\r\n plants\r\n defuses\r\n aces\r\n multikills\r\n clutches\r\n kd\r\n characters\r\n country {\r\n name\r\n iso\r\n }\r\n }\r\n }\r\n }\r\n right{\r\n valorant {\r\n teamName\r\n score {\r\n score\r\n wins\r\n draws\r\n losses\r\n }\r\n players {\r\n firstName\r\n lastName\r\n ign\r\n teamName\r\n kills\r\n assists\r\n deaths\r\n esr\r\n firstBloods\r\n firstDeaths\r\n econRating\r\n adr\r\n hsProcentage\r\n plants\r\n defuses\r\n aces\r\n multikills\r\n clutches\r\n kd\r\n characters\r\n country {\r\n name\r\n iso\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nexport const getLiveTeamHeadToHead = gql`query GetLiveTeamHeadToHead($token: String!) {\r\n getLiveTeamHeadToHead(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n left {\r\n pubg {\r\n name\r\n initial\r\n avgAssists\r\n avgDamageDealt\r\n avgKills\r\n avgKnocks\r\n avgPoints\r\n numberOfMatches\r\n players {\r\n damage\r\n ign\r\n kills\r\n status\r\n }\r\n totalDamage\r\n totalKills\r\n totalPoints\r\n wins\r\n }\r\n }\r\n right{\r\n pubg {\r\n name\r\n initial\r\n avgAssists\r\n avgDamageDealt\r\n avgKills\r\n avgKnocks\r\n avgPoints\r\n numberOfMatches\r\n players {\r\n damage\r\n ign\r\n kills\r\n status\r\n }\r\n totalDamage\r\n totalKills\r\n totalPoints\r\n wins\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nexport const getLivePlayerLeaderboard = gql`query GetLivePlayerLeaderboard($token: String!) {\r\n getLivePlayerLeaderboard(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n ign\r\n teamName\r\n teamInitial\r\n damageRank\r\n ign\r\n killRank\r\n teamInitial\r\n teamName\r\n totalDamage\r\n totalKills\r\n }\r\n }\r\n}`;\r\n\r\nexport const getCurrentMatch = gql`query GetCurrentMatch($token: String!) {\r\n getCurrentMatch(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n valorant {\r\n currentMatch\r\n }\r\n pubg {\r\n currentMatch\r\n }\r\n }\r\n}`;\r\n\r\nexport const getTodaysWinners = gql`query GetTodayWinner($token: String!) {\r\n getTodayWinner(token: $token) {\r\n show\r\n opts\r\n tournament {\r\n friendlyName\r\n overlayColor\r\n overlayDesign\r\n }\r\n pubg {\r\n currentMatchNumber\r\n matches {\r\n teamName\r\n map\r\n matchNumber\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nexport const getMapVeto = gql`query GetMapVeto($token: String!, $overlayToken: String!) {\r\n getMapVeto(token: $token, overlayToken: $overlayToken) {\r\n token\r\n tokenOverlay\r\n status\r\n pickValues\r\n timer\r\n logs {\r\n map\r\n type\r\n mapVoter\r\n attackers\r\n defenders\r\n }\r\n }\r\n}`;","import {\r\n getPlayerStats,\r\n getTeamStats,\r\n getPlayerHeadToHead,\r\n getTeamHeadToHead,\r\n getPlayerLeaderboard,\r\n getTeamLeaderboard,\r\n getLiveTeamLeaderboard,\r\n getLiveMapTeams,\r\n getLiveSurvivalStats,\r\n getLiveTeamStats,\r\n getLivePlayerStats,\r\n getLivePlayerKills,\r\n getLivePlayerKillsDamage,\r\n getLiveTeamHeadToHead,\r\n getLivePlayerLeaderboard,\r\n getCurrentMatch,\r\n getTodaysWinners,\r\n getScoreboard,\r\n getMapVeto,\r\n} from './componentQueries';\r\nimport {\r\n PLAYER_STATS_COMPONENT_TYPE,\r\n TEAM_STATS_COMPONENT_TYPE,\r\n PLAYER_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n TEAM_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n PLAYER_LEADERBOARD_COMPONENT_TYPE,\r\n TEAM_LEADERBOARD_COMPONENT_TYPE,\r\n LIVE_TEAM_LEADERBOARD_COMPONENT_TYPE,\r\n LIVE_MAP_TEAMS_COMPONENT_TYPE,\r\n LIVE_SURVIVAL_LEADERBOARD_COMPONENT_TYPE,\r\n LIVE_TEAM_STATS_COMPONENT_TYPE,\r\n LIVE_PLAYER_STATS_COMPONENT_TYPE,\r\n LIVE_PLAYER_KILLS_COMPONENT_TYPE,\r\n LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_TYPE,\r\n LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n LIVE_PLAYER_LEADERBOARD_COMPONENT_TYPE,\r\n CURRENT_MATCH_COMPONENT_TYPE,\r\n TODAYS_WINNERS_COMPONENT_TYPE,\r\n SCOREBOARD_COMPONENT_TYPE,\r\n MAP_VETO_COMPONENT_TYPE,\r\n} from '../../views/Components/constants';\r\n\r\nexport default {\r\n [PLAYER_STATS_COMPONENT_TYPE]: getPlayerStats,\r\n [TEAM_STATS_COMPONENT_TYPE]: getTeamStats,\r\n [PLAYER_HEAD_TO_HEAD_COMPONENT_TYPE]: getPlayerHeadToHead,\r\n [TEAM_HEAD_TO_HEAD_COMPONENT_TYPE]: getTeamHeadToHead,\r\n [PLAYER_LEADERBOARD_COMPONENT_TYPE]: getPlayerLeaderboard,\r\n [TEAM_LEADERBOARD_COMPONENT_TYPE]: getTeamLeaderboard,\r\n [LIVE_TEAM_LEADERBOARD_COMPONENT_TYPE]: getLiveTeamLeaderboard,\r\n [LIVE_MAP_TEAMS_COMPONENT_TYPE]: getLiveMapTeams,\r\n [LIVE_SURVIVAL_LEADERBOARD_COMPONENT_TYPE]: getLiveSurvivalStats,\r\n [LIVE_TEAM_STATS_COMPONENT_TYPE]: getLiveTeamStats,\r\n [LIVE_PLAYER_STATS_COMPONENT_TYPE]: getLivePlayerStats,\r\n [LIVE_PLAYER_KILLS_COMPONENT_TYPE]: getLivePlayerKills,\r\n [LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_TYPE]: getLivePlayerKillsDamage,\r\n [LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_TYPE]: getLiveTeamHeadToHead,\r\n [LIVE_PLAYER_LEADERBOARD_COMPONENT_TYPE]: getLivePlayerLeaderboard,\r\n [CURRENT_MATCH_COMPONENT_TYPE]: getCurrentMatch,\r\n [TODAYS_WINNERS_COMPONENT_TYPE]: getTodaysWinners,\r\n [SCOREBOARD_COMPONENT_TYPE]: getScoreboard,\r\n [MAP_VETO_COMPONENT_TYPE]: getMapVeto,\r\n}","import { all, takeLatest, call, put, select } from 'redux-saga/effects';\r\nimport { \r\n REQUEST_OVERLAY_DATA,\r\n REQUEST_OVERLAY_DATA_PENDING,\r\n REQUEST_OVERLAY_DATA_SUCCESS,\r\n REQUEST_OVERLAY_DATA_ERROR,\r\n SUBSCRIBE_TO_OVERLAY_DATA,\r\n SUBSCRIBE_TO_OVERLAY_DATA_PENDING,\r\n SUBSCRIBE_TO_OVERLAY_DATA_SUCCESS,\r\n SUBSCRIBE_TO_OVERLAY_DATA_ERROR,\r\n} from './types';\r\nimport componentQueries from '../../graphql/apollo/componentTypeQueries';\r\nimport { MAP_VETO_COMPONENT_TYPE } from '../../views/Components/constants';\r\nimport { overlayDataSubscriptions } from '../../graphql/apollo/componentTypeSubscriptions';\r\nimport components from '../../views/Components';\r\nimport { getTeamLogo } from '../../util/CommonUtil';\r\nimport { convertImgToBase64URL } from '../../util/ExportAsImageUtil';\r\n\r\n/**\r\n * Makes a request to server to get the overlay data\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestOverlayData(action) {\r\n yield put({ type: REQUEST_OVERLAY_DATA_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n\r\n const result = (yield call([client, 'query'], {\r\n query: componentQueries[action.payload.componentType],\r\n // TODO: ugly ugly code! fix it!\r\n variables: action.payload.componentType === MAP_VETO_COMPONENT_TYPE ? \r\n { token: action.payload.token, overlayToken: action.payload.token }\r\n :\r\n { token: action.payload.token },\r\n })).data;\r\n const overlayData = result ? result[Object.keys(result)[0]] : null;\r\n\r\n const gameComponents = components[action.payload.game];\r\n const component = Object.values(gameComponents).find(c => c.type === action.payload.componentType);\r\n if (action.payload.exportOverlay && component.exportOverlay) {\r\n for(let i = 0; i < overlayData[action.payload.game].length; i++) {\r\n const item = overlayData[action.payload.game][i];\r\n const teamName = item[component.exportOverlay.teamNameProperty];\r\n item.exportLogo = yield convertImgToBase64URL(getTeamLogo(teamName));\r\n }\r\n }\r\n \r\n yield put({ type: REQUEST_OVERLAY_DATA_SUCCESS, payload: overlayData });\r\n } catch (err) {\r\n yield put({ type: REQUEST_OVERLAY_DATA_ERROR });\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server to subscribe to overlay data\r\n * \r\n * @param {*} action \r\n */\r\nfunction* subscribeToOverlayData(action) {\r\n yield put({ type: SUBSCRIBE_TO_OVERLAY_DATA_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n \r\n const result = (yield call([client, 'subscribe'], {\r\n query: overlayDataSubscriptions[action.payload.componentType],\r\n variables: { token: action.payload.token },\r\n }));\r\n result.subscribe({\r\n next: (result) => action.payload.callback(result.data[Object.keys(result.data)[0]]),\r\n error: () => {},\r\n });\r\n \r\n yield put({ type: SUBSCRIBE_TO_OVERLAY_DATA_SUCCESS });\r\n } catch (err) {\r\n yield put({ type: SUBSCRIBE_TO_OVERLAY_DATA_ERROR });\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_OVERLAY_DATA, requestOverlayData),\r\n takeLatest(SUBSCRIBE_TO_OVERLAY_DATA, subscribeToOverlayData),\r\n ]);\r\n}","import { all, takeLatest, put, select, call } from 'redux-saga/effects';\r\nimport { \r\n REQUEST_ORGANIZATION,\r\n REQUEST_ORGANIZATION_ERROR,\r\n REQUEST_ORGANIZATION_PENDING,\r\n REQUEST_ORGANIZATION_SUCCESS,\r\n} from './types';\r\nimport { LOADING_ERROR } from '../../util/ErrorMessages';\r\nimport { getOrganization } from '../../graphql/apollo/tournamentQueries';\r\nimport { displayErrorNotification } from '../notification/actions';\r\n\r\n/**\r\n * Makes a request to server for logged in organization\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestOrganization(action) {\r\n yield put({ type: REQUEST_ORGANIZATION_PENDING });\r\n try {\r\n // Calling the server\r\n const client = yield select(state => state.apollo.client);\r\n\r\n const result = (yield call([client, 'query'], {\r\n query: getOrganization,\r\n })).data.getOrganization;\r\n\r\n const availableComponents = result.availableComponents ? result.availableComponents.split(',') : [];\r\n yield put({ type: REQUEST_ORGANIZATION_SUCCESS, payload: { ...result, availableComponents: availableComponents }});\r\n } catch (err) {\r\n yield put({ type: REQUEST_ORGANIZATION_ERROR });\r\n yield put(displayErrorNotification(LOADING_ERROR));\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_ORGANIZATION, requestOrganization),\r\n ]);\r\n}","import { all, takeLatest, put } from 'redux-saga/effects';\r\nimport { \r\n REQUEST_HEAD_TO_HEAD_TEAMS,\r\n REQUEST_HEAD_TO_HEAD_TEAMS_SUCCESS,\r\n REQUEST_HEAD_TO_HEAD_TEAMS_PENDING,\r\n REQUEST_HEAD_TO_HEAD_TEAMS_ERROR,\r\n REQUEST_HEAD_TO_HEAD_TEAMS_AS_CSV,\r\n} from './types';\r\nimport {\r\n REQUEST_EXPORT_AS_IMAGE_PENDING,\r\n REQUEST_EXPORT_AS_IMAGE_SUCCESS,\r\n} from '../exportAsImage/types';\r\nimport { headToHeadTeams } from '../../graphql/public/queries';\r\nimport { publicQuery } from '../../graphql/requestHelper';\r\nimport { convertImgToBase64URL } from '../../util/ExportAsImageUtil';\r\nimport { arrayToCsv, downloadCsv, getTeamLogo } from '../../util/CommonUtil';\r\nimport { PLAYER_STATISTICS } from '../../util/Constants';\r\nimport { displayErrorNotification } from '../notification/actions';\r\nimport { LOADING_ERROR } from '../../util/ErrorMessages';\r\n\r\n/**\r\n * Makes a request to server for head to head teams\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestHeadToHeadTeams(action) {\r\n yield put({ type: REQUEST_HEAD_TO_HEAD_TEAMS_PENDING });\r\n yield put({ type: REQUEST_EXPORT_AS_IMAGE_PENDING });\r\n try {\r\n // Calling the server\r\n const result = yield publicQuery(headToHeadTeams, {\r\n game: action.payload.game,\r\n tournament: action.payload.tournament, \r\n leftId: action.payload.leftTeamId, \r\n rightId: action.payload.rightTeamId, \r\n token: action.payload.token, \r\n });\r\n\r\n if (action.payload.forExport) {\r\n result.data.headToHeadTeams.left.logo = yield convertImgToBase64URL(getTeamLogo(result.data.headToHeadTeams.left.name));\r\n result.data.headToHeadTeams.right.logo = yield convertImgToBase64URL(getTeamLogo(result.data.headToHeadTeams.right.name));\r\n }\r\n\r\n yield put({ type: REQUEST_HEAD_TO_HEAD_TEAMS_SUCCESS, payload: result.data.headToHeadTeams });\r\n yield put({ type: REQUEST_EXPORT_AS_IMAGE_SUCCESS });\r\n } catch (err) {\r\n yield put({ type: REQUEST_HEAD_TO_HEAD_TEAMS_ERROR });\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server for head to head teams\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestHeadToHeadTeamsAsCsv(action) {\r\n try {\r\n // Calling the server\r\n const result = (yield publicQuery(headToHeadTeams, {\r\n tournament: action.payload.tournament, \r\n leftId: action.payload.leftTeamId, \r\n rightId: action.payload.rightTeamId, \r\n token: action.payload.token\r\n })).data.headToHeadTeams;\r\n roundStats(result.left);\r\n roundStats(result.right);\r\n result.left.teamLogo = getTeamLogo(result.left.name);\r\n result.right.teamLogo = getTeamLogo(result.right.name);\r\n const csv = arrayToCsv({\r\n name: 'Team Name',\r\n teamLogo: 'Team Logo',\r\n kills: PLAYER_STATISTICS.kills,\r\n avgPoints: 'Avg Points',\r\n avgRank: 'Avg Rank',\r\n }, [result.left, result.right]);\r\n downloadCsv(csv, `head-to-head-teams`);\r\n } catch (err) {\r\n yield put(displayErrorNotification(LOADING_ERROR));\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_HEAD_TO_HEAD_TEAMS, requestHeadToHeadTeams),\r\n takeLatest(REQUEST_HEAD_TO_HEAD_TEAMS_AS_CSV, requestHeadToHeadTeamsAsCsv),\r\n ]);\r\n}\r\n\r\n/**\r\n * Rounds stats for better presentation\r\n * \r\n * @param {*} leaderboard \r\n */\r\nfunction roundStats(team) {\r\n team.avgPoints = Math.round(team.avgPoints);\r\n team.avgRank = Math.round(team.avgRank);\r\n}","import { all, takeLatest, put } from 'redux-saga/effects';\r\nimport { \r\n REQUEST_HEAD_TO_HEAD_PLAYERS,\r\n REQUEST_HEAD_TO_HEAD_PLAYERS_SUCCESS,\r\n REQUEST_HEAD_TO_HEAD_PLAYERS_PENDING,\r\n REQUEST_HEAD_TO_HEAD_PLAYERS_ERROR,\r\n REQUEST_HEAD_TO_HEAD_PLAYERS_AS_CSV,\r\n} from './types';\r\nimport {\r\n REQUEST_EXPORT_AS_IMAGE_PENDING,\r\n REQUEST_EXPORT_AS_IMAGE_SUCCESS,\r\n} from '../exportAsImage/types';\r\nimport { headToHeadPlayers } from '../../graphql/public/queries';\r\nimport { publicQuery } from '../../graphql/requestHelper';\r\nimport { convertImgToBase64URL } from '../../util/ExportAsImageUtil';\r\nimport { arrayToCsv, downloadCsv, getTeamLogo } from '../../util/CommonUtil';\r\nimport { PLAYER_STATISTICS } from '../../util/Constants';\r\nimport { displayErrorNotification } from '../notification/actions';\r\nimport { LOADING_ERROR } from '../../util/ErrorMessages';\r\n\r\n/**\r\n * Makes a request to server for head to head players\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestHeadToHeadPlayers(action) {\r\n yield put({ type: REQUEST_HEAD_TO_HEAD_PLAYERS_PENDING });\r\n yield put({ type: REQUEST_EXPORT_AS_IMAGE_PENDING });\r\n try {\r\n // Calling the server\r\n const result = yield publicQuery(headToHeadPlayers, {\r\n game: action.payload.game,\r\n tournament: action.payload.tournament, \r\n leftId: action.payload.leftPlayerId, \r\n rightId: action.payload.rightPlayerId, \r\n token: action.payload.token, \r\n });\r\n\r\n if (action.payload.forExport) {\r\n result.data.headToHeadPlayers.left.logo = yield convertImgToBase64URL(getTeamLogo(result.data.headToHeadPlayers.left.teamName));\r\n result.data.headToHeadPlayers.right.logo = yield convertImgToBase64URL(getTeamLogo(result.data.headToHeadPlayers.right.teamName));\r\n }\r\n\r\n yield put({ type: REQUEST_HEAD_TO_HEAD_PLAYERS_SUCCESS, payload: result.data.headToHeadPlayers });\r\n yield put({ type: REQUEST_EXPORT_AS_IMAGE_SUCCESS });\r\n } catch (err) {\r\n yield put({ type: REQUEST_HEAD_TO_HEAD_PLAYERS_ERROR });\r\n }\r\n}\r\n\r\n/**\r\n * Makes a request to server for head to head players\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestHeadToHeadPlayersAsCsv(action) {\r\n try {\r\n // Calling the server\r\n const result = (yield publicQuery(headToHeadPlayers, {\r\n tournament: action.payload.tournament, \r\n leftId: action.payload.leftPlayerId, \r\n rightId: action.payload.rightPlayerId, \r\n token: action.payload.token\r\n })).data.headToHeadPlayers;\r\n roundStats(result.left);\r\n roundStats(result.right);\r\n result.left.teamLogo = getTeamLogo(result.left.teamName);\r\n result.right.teamLogo = getTeamLogo(result.right.teamName);\r\n const csv = arrayToCsv({\r\n username: 'Player Name',\r\n teamName: 'Team Name',\r\n teamLogo: 'Team Logo',\r\n kills: PLAYER_STATISTICS.kills,\r\n assists: PLAYER_STATISTICS.assists,\r\n damageDealt: PLAYER_STATISTICS.damageDealt,\r\n dbnos: PLAYER_STATISTICS.dbnos,\r\n }, [result.left, result.right]);\r\n downloadCsv(csv, `head-to-head-players`);\r\n } catch (err) {\r\n yield put(displayErrorNotification(LOADING_ERROR));\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_HEAD_TO_HEAD_PLAYERS, requestHeadToHeadPlayers),\r\n takeLatest(REQUEST_HEAD_TO_HEAD_PLAYERS_AS_CSV, requestHeadToHeadPlayersAsCsv),\r\n ]);\r\n}\r\n\r\n/**\r\n * Rounds stats for better presentation\r\n * \r\n * @param {*} leaderboard \r\n */\r\nfunction roundStats(player) {\r\n player.damageDealt = Math.round(player.damageDealt);\r\n}","import { all, takeLatest, put, select, call } from 'redux-saga/effects';\r\nimport { \r\n REQUEST_TEAM_SEARCH,\r\n REQUEST_TEAM_SEARCH_ERROR,\r\n REQUEST_TEAM_SEARCH_SUCCESS,\r\n REQUEST_TEAM_SEARCH_PENDING,\r\n} from './types';\r\nimport { LOADING_ERROR } from '../../util/ErrorMessages';\r\nimport { teamSearch } from '../../graphql/apollo/tournamentQueries';\r\nimport { displayErrorNotification } from '../notification/actions';\r\n\r\n/**\r\n * Makes a request to server for all my tournaments\r\n * \r\n * @param {*} action \r\n */\r\nfunction* requestTournament(action) {\r\n yield put({ type: REQUEST_TEAM_SEARCH_PENDING });\r\n try {\r\n const client = yield select(state => state.apollo.client);\r\n\r\n const result = (yield call([client, 'query'], {\r\n query: teamSearch,\r\n variables: action.payload,\r\n })).data.teamSearch;\r\n\r\n yield put({ type: REQUEST_TEAM_SEARCH_SUCCESS, payload: result });\r\n } catch (err) {\r\n yield put({ type: REQUEST_TEAM_SEARCH_ERROR });\r\n yield put(displayErrorNotification(LOADING_ERROR));\r\n }\r\n}\r\n\r\n// The exported watcher\r\nexport default function* rootSaga() {\r\n yield all([\r\n takeLatest(REQUEST_TEAM_SEARCH, requestTournament),\r\n ]);\r\n}","import { all, fork } from 'redux-saga/effects';\r\n\r\nimport auth from './auth/saga';\r\nimport currentMatch from './currentMatch/saga';\r\nimport dashboard from './dashboard/saga';\r\nimport notification from './notification/saga';\r\nimport tournaments from './tournaments/saga';\r\nimport tournamentFilters from './tournamentFilters/saga';\r\nimport teamLeaderboard from './teamLeaderboard/saga';\r\nimport playerLeaderboard from './playerLeaderboard/saga';\r\nimport todaysWinners from './todaysWinners/saga';\r\nimport mapVeto from './mapVeto/saga';\r\nimport tournament from './tournament/saga';\r\nimport tournamentPlayers from './tournamentPlayers/saga';\r\nimport tournamentTeams from './tournamentTeams/saga';\r\nimport customTournaments from './customTournaments/saga';\r\nimport overlay from './overlay/saga';\r\nimport organization from './organization/saga';\r\nimport headToHeadTeams from './headToHeadTeams/saga';\r\nimport headToHeadPlayers from './headToHeadPlayers/saga';\r\nimport teamSearch from './teamSearch/saga';\r\n\r\n// The root saga\r\nfunction* rootSaga() {\r\n // Add all active sagas here to combine them\r\n yield all([\r\n fork(auth),\r\n fork(currentMatch),\r\n fork(dashboard),\r\n fork(notification),\r\n fork(tournaments),\r\n fork(tournamentFilters),\r\n fork(teamLeaderboard),\r\n fork(playerLeaderboard),\r\n fork(todaysWinners),\r\n fork(mapVeto),\r\n fork(tournament),\r\n fork(tournamentPlayers),\r\n fork(tournamentTeams),\r\n fork(customTournaments),\r\n fork(overlay),\r\n fork(organization),\r\n fork(headToHeadTeams),\r\n fork(headToHeadPlayers),\r\n fork(teamSearch),\r\n ]);\r\n}\r\n\r\nexport default rootSaga;","import { createStore, applyMiddleware } from 'redux';\nimport logger from 'redux-logger';\nimport createSagaMiddleware from 'redux-saga';\n\nimport rootReducer from './root-reducer';\nimport rootSaga from './root-saga';\n\nconst sagaMiddleware = createSagaMiddleware();\nconst middleware = process.env.NODE_ENV === 'production' ? [sagaMiddleware] : [sagaMiddleware, logger];\n\nconst store = createStore(rootReducer, applyMiddleware(...middleware));\nsagaMiddleware.run(rootSaga);\n\nexport default { store };","import 'react-app-polyfill/ie9'; // For IE 9-11 support\r\nimport 'react-app-polyfill/stable';\r\n// import 'react-app-polyfill/ie11'; // For IE 11 support\r\nimport './polyfill'\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport Amplify from 'aws-amplify';\r\nimport { Provider } from 'react-redux';\r\nimport store from './redux/store';\r\n\r\nlet awsSettings;\r\nif (process.env.REACT_APP_STAGE === 'prod') {\r\n awsSettings = require('./cognito-config-prod');\r\n} else {\r\n awsSettings = require('./cognito-config');\r\n}\r\n\r\nAmplify.configure(awsSettings.default);\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: http://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n","// Types of action for requesting all tournament\r\nexport const REQUEST_ALL_TOURNAMENT = 'REQUEST_ALL_TOURNAMENT';\r\nexport const REQUEST_ALL_TOURNAMENT_PENDING = 'REQUEST_ALL_TOURNAMENT_PENDING';\r\nexport const REQUEST_ALL_TOURNAMENT_SUCCESS = 'REQUEST_ALL_TOURNAMENT_SUCCESS';\r\nexport const REQUEST_ALL_TOURNAMENT_ERROR = 'REQUEST_ALL_TOURNAMENT_ERROR';","// Types of action for requesting current match\r\nexport const REQUEST_CURRENT_MATCH = 'REQUEST_CURRENT_MATCH';\r\nexport const REQUEST_CURRENT_MATCH_PENDING = 'REQUEST_CURRENT_MATCH_PENDING';\r\nexport const REQUEST_CURRENT_MATCH_SUCCESS = 'REQUEST_CURRENT_MATCH_SUCCESS';\r\nexport const REQUEST_CURRENT_MATCH_ERROR = 'REQUEST_CURRENT_MATCH_ERROR';","// Types of action for requesting last winners\r\nexport const REQUEST_LAST_WINNERS = 'REQUEST_LAST_WINNERS';\r\nexport const REQUEST_LAST_WINNERS_PENDING = 'REQUEST_LAST_WINNERS_PENDING';\r\nexport const REQUEST_LAST_WINNERS_SUCCESS = 'REQUEST_LAST_WINNERS_SUCCESS';\r\nexport const REQUEST_LAST_WINNERS_ERROR = 'REQUEST_LAST_WINNERS_ERROR';","// Types of action for requesting tournament players\r\nexport const REQUEST_TOURNAMENT_PLAYERS = 'REQUEST_TOURNAMENT_PLAYERS';\r\nexport const REQUEST_TOURNAMENT_PLAYERS_PENDING = 'REQUEST_TOURNAMENT_PLAYERS_PENDING';\r\nexport const REQUEST_TOURNAMENT_PLAYERS_SUCCESS = 'REQUEST_TOURNAMENT_PLAYERS_SUCCESS';\r\nexport const REQUEST_TOURNAMENT_PLAYERS_ERROR = 'REQUEST_TOURNAMENT_PLAYERS_ERROR';","// Types of action for requesting tournament teams\r\nexport const REQUEST_TOURNAMENT_TEAMS = 'REQUEST_TOURNAMENT_TEAMS';\r\nexport const REQUEST_TOURNAMENT_TEAMS_PENDING = 'REQUEST_TOURNAMENT_TEAMS_PENDING';\r\nexport const REQUEST_TOURNAMENT_TEAMS_SUCCESS = 'REQUEST_TOURNAMENT_TEAMS_SUCCESS';\r\nexport const REQUEST_TOURNAMENT_TEAMS_ERROR = 'REQUEST_TOURNAMENT_TEAMS_ERROR';","// Types of action for requesting tournament filters\r\nexport const REQUEST_TOURNAMENT_FILTERS = 'REQUEST_TOURNAMENT_FILTERS';\r\nexport const REQUEST_TOURNAMENT_FILTERS_PENDING = 'REQUEST_TOURNAMENT_FILTERS_PENDING';\r\nexport const REQUEST_TOURNAMENT_FILTERS_SUCCESS = 'REQUEST_TOURNAMENT_FILTERS_SUCCESS';\r\nexport const REQUEST_TOURNAMENT_FILTERS_ERROR = 'REQUEST_TOURNAMENT_FILTERS_ERROR';","// Notification action types\r\nexport const DISPLAY_SUCCESS_NOTIFICATION = 'DISPLAY_SUCCESS_NOTIFICATION';\r\nexport const DISPLAY_ERROR_NOTIFICATION = 'DISPLAY_ERROR_NOTIFICATION';\r\nexport const DISPLAY_INFO_NOTIFICATION = 'DISPLAY_INFO_NOTIFICATION';","// Types of action for requesting logged in organization\r\nexport const REQUEST_ORGANIZATION = 'REQUEST_ORGANIZATION';\r\nexport const REQUEST_ORGANIZATION_PENDING = 'REQUEST_ORGANIZATION_PENDING';\r\nexport const REQUEST_ORGANIZATION_SUCCESS = 'REQUEST_ORGANIZATION_SUCCESS';\r\nexport const REQUEST_ORGANIZATION_ERROR = 'REQUEST_ORGANIZATION_ERROR';","import { \r\n SET_AUTH_USER,\r\n UNSET_AUTH_USER,\r\n REQUEST_LOGIN,\r\n REQUEST_LOGGED_IN_USER,\r\n REQUEST_TOURNAMENT_ORGANIZER_TOKEN,\r\n REQUEST_USER_SUBSCRIPTION,\r\n} from './types';\r\n\r\n/**\r\n * Action for setting authenticated user\r\n */\r\nexport const setAuthUser = (user) => ({\r\n type: SET_AUTH_USER,\r\n payload: {\r\n username: user.username,\r\n sub: user.attributes.sub,\r\n userGroups: user.signInUserSession.idToken.payload['cognito:groups'],\r\n }\r\n});\r\n\r\n/**\r\n * Action for setting authenticated user\r\n */\r\nexport const unsetAuthUser = () => ({\r\n type: UNSET_AUTH_USER,\r\n});\r\n\r\n/**\r\n * Action for login request\r\n * \r\n * @param {*} username user's username\r\n * @param {*} password user's password\r\n */\r\nexport const requestLogin = (username, password) => ({\r\n type: REQUEST_LOGIN,\r\n payload: {\r\n username: username,\r\n password: password,\r\n }\r\n});\r\n\r\n/**\r\n * Requests logged in user if exists\r\n */\r\nexport const requestLoggedInUser = () => ({\r\n type: REQUEST_LOGGED_IN_USER,\r\n});\r\n\r\n/**\r\n * Requests tournament organizer token\r\n */\r\nexport const requestTournamentOrganizerToken = () => ({\r\n type: REQUEST_TOURNAMENT_ORGANIZER_TOKEN,\r\n});\r\n\r\n/**\r\n * Action for getting user subscription\r\n */\r\nexport const requestUserSubscription = () => ({\r\n type: REQUEST_USER_SUBSCRIPTION,\r\n});","// Action for opening modal\r\nexport const OPEN_MODAL = 'OPEN_MODAL';\r\n// Action for closing modal\r\nexport const CLOSE_MODAL = 'CLOSE_MODAL';","import styled from 'styled-components';\r\n\r\nexport default styled.div`\r\n background-image: url(${ props => props.image ? props.image : '/assets/img/pages/backgrounds/bg-first-screen.jpg' });\r\n background-size: cover;\r\n background-attachment: scroll;\r\n background-repeat: no-repeat;\r\n background-position: 50% 0px;\r\n`;","import React from 'react';\r\nimport { CardBody } from 'reactstrap';\r\nimport {\r\n Card,\r\n CardHeader,\r\n} from '../../StyledCoreUI';\r\n\r\nfunction CustomCard(props) {\r\n return (\r\n \r\n \r\n {props.title}\r\n \r\n \r\n {props.children}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default CustomCard;","import React, { Component } from 'react';\r\nimport {\r\n Col,\r\n FormGroup,\r\n Input,\r\n Label,\r\n ModalBody, \r\n ModalFooter, \r\n ModalHeader,\r\n Row\r\n} from 'reactstrap';\r\nimport {\r\n Button,\r\n Modal\r\n} from '../../StyledCoreUI';\r\n\r\nclass ConfirmModal extends Component {\r\n state = {\r\n dontShowAgain: false\r\n };\r\n\r\n render() {\r\n const { title, text, dontShowAgainText, onClose, onConfirm } = this.props;\r\n const { dontShowAgain } = this.state;\r\n\r\n return (\r\n onClose(dontShowAgain)} className={this.props.className}>\r\n { title }\r\n \r\n \r\n \r\n

{ text }

\r\n \r\n
\r\n
\r\n \r\n \r\n {\r\n dontShowAgainText ?\r\n \r\n :\r\n null\r\n }\r\n \r\n {' '}\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ConfirmModal;","import styled from 'styled-components';\r\nimport styles from '../../../scss/style.scss';\r\nimport Datetime from 'react-datetime';\r\n\r\nexport default styled(Datetime)`\r\n .rdtPicker {\r\n display: none;\r\n }\r\n\r\n .rdtActive {\r\n background: ${styles.primary};\r\n }\r\n\r\n .rdtOld, .rdtNew {\r\n opacity: 0.3;\r\n }\r\n\r\n .rdtTimeToggle {\r\n background: ${styles.primary};\r\n }\r\n\r\n input, input:focus {\r\n background: ${styles.tertiary};\r\n color: ${styles.secondary};\r\n border: none;\r\n }\r\n\r\n &.rdtOpen {\r\n .rdtPicker {\r\n display: block;\r\n position: absolute;\r\n background: ${styles.tertiaryDark};\r\n border: 1px solid ${styles.primary};\r\n border-radius: 5px;\r\n padding: 15px;\r\n z-index: 10;\r\n\r\n table {\r\n text-align: center;\r\n }\r\n\r\n td, th {\r\n height: 40px;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background: ${styles.tertiary};\r\n }\r\n }\r\n\r\n td {\r\n width: 40px;\r\n }\r\n }\r\n\r\n .rdtTime td {\r\n width: 100px;\r\n }\r\n .rdtCounters > div {\r\n float: left;\r\n margin-right: 10px;\r\n }\r\n }\r\n`;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../scss/style.scss';\r\nimport {\r\n ButtonDropdown,\r\n DropdownItem,\r\n DropdownToggle,\r\n} from 'reactstrap';\r\nimport { \r\n Button,\r\n DropdownMenu,\r\n} from '../../StyledCoreUI';\r\n\r\nconst StyledDropdownMenu = styled(DropdownMenu)`\r\n max-height: 300px;\r\n overflow-y: scroll;\r\n overflow-x: hidden;\r\n \r\n &::-webkit-scrollbar-track {\r\n -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);\r\n background-color: ${styles.transparent};\r\n border-radius: 10px;\r\n }\r\n\r\n &::-webkit-scrollbar {\r\n width: 6px;\r\n background-color: ${styles.transparent};\r\n }\r\n\r\n &::-webkit-scrollbar-thumb {\r\n border-radius: 10px;\r\n background-color: #aaa;\r\n }\r\n`;\r\n\r\nclass Dropdown extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isOpen: false,\r\n selectedChoice: this.props.defaultChoice,\r\n noneChoice: this.props.noneChoice,\r\n }\r\n }\r\n\r\n render() {\r\n const { isOpen, selectedChoice, noneChoice } = this.state;\r\n const { onChange, choices, selected, controlled, alignLeft, alignRight } = this.props;\r\n \r\n return (\r\n { this.setState({ isOpen: !isOpen }); }} {...this.props}>\r\n \r\n \r\n \r\n {\r\n noneChoice ?\r\n {\r\n onChange('', noneChoice);\r\n this.setState({ selectedChoice: null });\r\n }}>\r\n { noneChoice }\r\n \r\n :\r\n null\r\n }\r\n {\r\n Object.keys(choices).sort((a, b) => parseInt(a) > parseInt(b) ? -1 : 1).map(id => {\r\n return (\r\n {\r\n onChange(id, choices[id]);\r\n if (!controlled) {\r\n this.setState({ selectedChoice: id });\r\n }\r\n }}>\r\n { choices[id] }\r\n \r\n )\r\n })\r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Dropdown;","import React, { useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faQuestion } from '@fortawesome/free-solid-svg-icons';\r\nimport {\r\n Col,\r\n Row,\r\n Tooltip,\r\n} from 'reactstrap';\r\nimport {\r\n Dropdown,\r\n} from '..';\r\n\r\nconst StyledDropdownWrapper = styled(Col)`\r\n div button {\r\n text-transform: uppercase;\r\n }\r\n`;\r\n\r\nfunction DropdownWithInfo(props) {\r\n const { title, value, choices, defaultChoice, toolTipText, onChange } = props;\r\n const [ tooltipOpen, setTooltipOpen ] = useState(false);\r\n\r\n return (\r\n \r\n \r\n { title }:\r\n \r\n \r\n {\r\n onChange(i);\r\n }}\r\n alignLeft={true}\r\n />\r\n {\r\n toolTipText ?\r\n <>\r\n \r\n setTooltipOpen(!tooltipOpen)}\r\n >\r\n { toolTipText }\r\n \r\n \r\n :\r\n null\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nexport default DropdownWithInfo;","import React, { Component } from 'react';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../scss/style.scss';\r\nimport { Tooltip } from 'reactstrap';\r\n\r\nconst FontAwesomeButton = styled(FontAwesomeIcon)`\r\n color: ${ props => props.color ? styles[props.color] : '#FFFFFF' }${ props => props.disabled ? '60' : '' };\r\n margin: 0 0.25em;\r\n ${ props => props.disabled ? '' : 'cursor: pointer;' }\r\n\r\n ${ props => props.disabled ? '' : `&:hover { color: ${styles.info}; }` }\r\n`;\r\n\r\nclass IconButton extends Component {\r\n state = {\r\n tooltipOpen: false,\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {\r\n this.props.tooltip ?\r\n this.setState({tooltipOpen: !this.state.tooltipOpen})}\r\n >\r\n { this.props.tooltip }\r\n \r\n :\r\n null\r\n } \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default IconButton;","import React, { Component } from 'react';\r\nimport {\r\n Col,\r\n Form,\r\n FormGroup, \r\n Label,\r\n ModalBody, \r\n ModalFooter, \r\n ModalHeader,\r\n Row\r\n} from 'reactstrap';\r\nimport {\r\n Button,\r\n Input, \r\n Modal\r\n} from '../../StyledCoreUI';\r\n\r\nclass InputModal extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n value: ''\r\n }\r\n }\r\n\r\n /**\r\n * Handles form submit\r\n * It closes modal and continues the required action\r\n */\r\n handleFormSubmit = (e) => {\r\n e.preventDefault();\r\n this.props.onConfirm(this.state.value);\r\n this.setState({ value: '' });\r\n }\r\n\r\n /**\r\n * Handles any form change\r\n */\r\n handleChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.value });\r\n }\r\n\r\n render() {\r\n const { title, value, placeholder, label = this.props.placeholder, onClose } = this.props;\r\n\r\n return (\r\n \r\n { title }\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n {' '}\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default InputModal;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styles from '../../../scss/style.scss';\r\n\r\nconst LoadingImage = styled.img`\r\n max-width: 75px;\r\n`;\r\n\r\nconst StyledText = styled.p`\r\n color: ${styles.secondary};\r\n`;\r\n\r\nclass Loading extends Component {\r\n render() {\r\n const { text } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n { text ? text : 'Loading...' }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Loading;","import React, { Component } from 'react';\r\nimport {\r\n ModalBody, \r\n ModalFooter, \r\n ModalHeader,\r\n} from 'reactstrap';\r\nimport {\r\n Button,\r\n Modal,\r\n} from '../../StyledCoreUI';\r\n\r\nclass CustomModal extends Component {\r\n render() {\r\n const { title, children, onClose, onConfirm, style } = this.props;\r\n\r\n return (\r\n \r\n { title }\r\n \r\n { children }\r\n \r\n \r\n {\r\n onConfirm ?\r\n \r\n :\r\n null\r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default CustomModal;","import styles from '../../../scss/style.scss';\r\nimport styled from 'styled-components';\r\n\r\nexport default styled.div`\r\n position: fixed;\r\n width: 100%;\r\n height: 100%;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background-color: ${styles.tertiaryTransparent};\r\n`;","import styled from 'styled-components';\r\nimport styles from '../../../scss/style.scss';\r\n\r\n/**\r\n * Short line colored in orange gradied\r\n */\r\nexport default styled.div`\r\n margin: 0 auto;\r\n background-image: -moz-linear-gradient( -180deg, ${styles.primaryGlow} 1%, ${styles.primary} 60%);\r\n background-image: -webkit-linear-gradient( -180deg, ${styles.primaryGlow} 1%, ${styles.primary} 60%);\r\n background-image: -ms-linear-gradient( -180deg, ${styles.primaryGlow} 1%, ${styles.primary} 60%);\r\n box-shadow: 0px 0px 22px 0px ${styles.primaryShadow};\r\n width: ${props => props.width ? props.width : '60px'};\r\n height: ${props => props.height ? props.height : '4px'};\r\n margin-bottom: 25px;\r\n ${props => props.float ? 'float: ' + props.float + ';': ''}\r\n`;","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { \r\n CardBody,\r\n Col,\r\n Form,\r\n FormGroup,\r\n InputGroup,\r\n Row\r\n} from 'reactstrap';\r\nimport {\r\n Button,\r\n Card,\r\n CardHeader,\r\n Input,\r\n InputGroupAddon\r\n} from '../../StyledCoreUI';\r\n\r\nclass TextSearch extends Component {\r\n state = {\r\n value: ''\r\n };\r\n\r\n /**\r\n * Handles any input changes\r\n */\r\n handleChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.value });\r\n if (this.props.onChange) {\r\n this.props.onChange(e.target.value);\r\n }\r\n }\r\n\r\n /**\r\n * Handles form submit\r\n */\r\n handleOnSubmit = (e) => {\r\n e.preventDefault();\r\n this.props.onSubmit(this.state.value);\r\n }\r\n\r\n render() {\r\n const { title, placeholder } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n { title }\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nTextSearch.propTypes = {\r\n title: PropTypes.string,\r\n placeholder: PropTypes.string,\r\n onSubmit: PropTypes.func\r\n};\r\n\r\nexport default TextSearch;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport { ToastContainer } from 'react-toastify';\r\nimport styles from '../../../scss/style.scss';\r\n\r\nconst WrappedToastContainer = styled.div`\r\n .Toastify__toast-container {}\r\n .Toastify__toast {\r\n background: ${styles.primary};\r\n }\r\n .Toastify__toast--error {\r\n background: ${styles.danger};\r\n }\r\n .Toastify__toast--warning {\r\n background: ${styles.warning};\r\n }\r\n .Toastify__toast--success {\r\n background: ${styles.success};\r\n }\r\n .Toastify__toast-body {}\r\n .Toastify__progress-bar {}\r\n`;\r\n\r\nclass Toast extends Component {\r\n render() {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Toast;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport {\r\n Col,\r\n Row,\r\n} from 'reactstrap';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';\r\nimport { Alert, Button } from '../../StyledCoreUI';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst TextContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n\r\n p {\r\n margin: 0;\r\n }\r\n`;\r\n\r\nfunction VerifiedTO(props) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n

Your turnaments will be visible only with direct link on twire.gg since you are not verified tournament organizers.

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default VerifiedTO;","// Types of action for creating custom tournament\r\nexport const REQUEST_CREATE_TOURNAMENT = 'REQUEST_CREATE_TOURNAMENT';\r\nexport const REQUEST_CREATE_TOURNAMENT_PENDING = 'REQUEST_CREATE_TOURNAMENT_PENDING';\r\nexport const REQUEST_CREATE_TOURNAMENT_SUCCESS = 'REQUEST_CREATE_TOURNAMENT_SUCCESS';\r\nexport const REQUEST_CREATE_TOURNAMENT_ERROR = 'REQUEST_CREATE_TOURNAMENT_ERROR';\r\n// Types of action for editing custom tournament\r\nexport const REQUEST_EDIT_TOURNAMENT = 'REQUEST_EDIT_TOURNAMENT';\r\nexport const REQUEST_EDIT_TOURNAMENT_PENDING = 'REQUEST_EDIT_TOURNAMENT_PENDING';\r\nexport const REQUEST_EDIT_TOURNAMENT_SUCCESS = 'REQUEST_EDIT_TOURNAMENT_SUCCESS';\r\nexport const REQUEST_EDIT_TOURNAMENT_ERROR = 'REQUEST_EDIT_TOURNAMENT_ERROR';\r\n// Types of action for requesting custom tournament\r\nexport const REQUEST_TOURNAMENT = 'REQUEST_TOURNAMENT';\r\nexport const REQUEST_TOURNAMENT_PENDING = 'REQUEST_TOURNAMENT_PENDING';\r\nexport const REQUEST_TOURNAMENT_SUCCESS = 'REQUEST_TOURNAMENT_SUCCESS';\r\nexport const REQUEST_TOURNAMENT_ERROR = 'REQUEST_TOURNAMENT_ERROR';\r\n// Types of action requesting creation of tournament filter\r\nexport const REQUEST_CREATE_TOURNAMENT_FILTER = 'REQUEST_CREATE_TOURNAMENT_FILTER';\r\nexport const REQUEST_CREATE_TOURNAMENT_FILTER_PENDING = 'REQUEST_CREATE_TOURNAMENT_FILTER_PENDING';\r\nexport const REQUEST_CREATE_TOURNAMENT_FILTER_SUCCESS = 'REQUEST_CREATE_TOURNAMENT_FILTER_SUCCESS';\r\nexport const REQUEST_CREATE_TOURNAMENT_FILTER_ERROR = 'REQUEST_CREATE_TOURNAMENT_FILTER_ERROR';\r\n// Types of action requesting upsert of tournament filter\r\nexport const REQUEST_EDIT_TOURNAMENT_FILTER = 'REQUEST_EDIT_TOURNAMENT_FILTER';\r\nexport const REQUEST_EDIT_TOURNAMENT_FILTER_PENDING = 'REQUEST_EDIT_TOURNAMENT_FILTER_PENDING';\r\nexport const REQUEST_EDIT_TOURNAMENT_FILTER_SUCCESS = 'REQUEST_EDIT_TOURNAMENT_FILTER_SUCCESS';\r\nexport const REQUEST_EDIT_TOURNAMENT_FILTER_ERROR = 'REQUEST_EDIT_TOURNAMENT_FILTER_ERROR';\r\n// Types of action requesting deletion of tournament filter\r\nexport const REQUEST_DELETE_TOURNAMENT_FILTER = 'REQUEST_DELETE_TOURNAMENT_FILTER';\r\nexport const REQUEST_DELETE_TOURNAMENT_FILTER_PENDING = 'REQUEST_DELETE_TOURNAMENT_FILTER_PENDING';\r\nexport const REQUEST_DELETE_TOURNAMENT_FILTER_SUCCESS = 'REQUEST_DELETE_TOURNAMENT_FILTER_SUCCESS';\r\nexport const REQUEST_DELETE_TOURNAMENT_FILTER_ERROR = 'REQUEST_DELETE_TOURNAMENT_FILTER_ERROR';\r\n// Types of action requesting creation or edit of tournament phase\r\nexport const REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE = 'REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE';\r\nexport const REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE_PENDING = 'REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE_PENDING';\r\nexport const REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE_SUCCESS = 'REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE_SUCCESS';\r\nexport const REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE_ERROR = 'REQUEST_CREATE_OR_EDIT_TOURNAMENT_PHASE_ERROR';\r\n// Types of action requesting deletion of tournament phase\r\nexport const REQUEST_DELETE_TOURNAMENT_PHASE = 'REQUEST_DELETE_TOURNAMENT_PHASE';\r\nexport const REQUEST_DELETE_TOURNAMENT_PHASE_PENDING = 'REQUEST_DELETE_TOURNAMENT_PHASE_PENDING';\r\nexport const REQUEST_DELETE_TOURNAMENT_PHASE_SUCCESS = 'REQUEST_DELETE_TOURNAMENT_PHASE_SUCCESS';\r\nexport const REQUEST_DELETE_TOURNAMENT_PHASE_ERROR = 'REQUEST_DELETE_TOURNAMENT_PHASE_ERROR';\r\n// Types of action requesting change of trached IGNs on phases\r\nexport const REQUEST_CHANGE_TRACKED_IGNS = 'REQUEST_CHANGE_TRACKED_IGNS';\r\nexport const REQUEST_CHANGE_TRACKED_IGNS_PENDING = 'REQUEST_CHANGE_TRACKED_IGNS_PENDING';\r\nexport const REQUEST_CHANGE_TRACKED_IGNS_SUCCESS = 'REQUEST_CHANGE_TRACKED_IGNS_SUCCESS';\r\nexport const REQUEST_CHANGE_TRACKED_IGNS_ERROR = 'REQUEST_CHANGE_TRACKED_IGNS_ERROR';\r\n// Types of action requesting subscription for IGN changes\r\nexport const REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS = 'REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS';\r\nexport const REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS_PENDING = 'REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS_PENDING';\r\nexport const REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS_SUCCESS = 'REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS_SUCCESS';\r\nexport const REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS_ERROR = 'REQUEST_SUBSCRIPTION_TO_CHANGE_TRACKED_IGNS_ERROR';\r\n// Types of action requesting addition of the match to tournament\r\nexport const REQUEST_ADD_TOURNAMENT_MATCH = 'REQUEST_ADD_TOURNAMENT_MATCH';\r\nexport const REQUEST_ADD_TOURNAMENT_MATCH_PENDING = 'REQUEST_ADD_TOURNAMENT_MATCH_PENDING';\r\nexport const REQUEST_ADD_TOURNAMENT_MATCH_SUCCESS = 'REQUEST_ADD_TOURNAMENT_MATCH_SUCCESS';\r\nexport const REQUEST_ADD_TOURNAMENT_MATCH_ERROR = 'REQUEST_ADD_TOURNAMENT_MATCH_ERROR';\r\n// Types of action for requesting edit of the tournament match\r\nexport const REQUEST_EDIT_TOURNAMENT_MATCH = 'REQUEST_EDIT_TOURNAMENT_MATCH';\r\nexport const REQUEST_EDIT_TOURNAMENT_MATCH_PENDING = 'REQUEST_EDIT_TOURNAMENT_MATCH_PENDING';\r\nexport const REQUEST_EDIT_TOURNAMENT_MATCH_SUCCESS = 'REQUEST_EDIT_TOURNAMENT_MATCH_SUCCESS';\r\nexport const REQUEST_EDIT_TOURNAMENT_MATCH_ERROR = 'REQUEST_EDIT_TOURNAMENT_MATCH_ERROR';\r\n// Types of action requesting subscription to tournament matches\r\nexport const REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH = 'REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH';\r\nexport const REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH_PENDING = 'REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH_PENDING';\r\nexport const REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH_SUCCESS = 'REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH_SUCCESS';\r\nexport const REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH_ERROR = 'REQUEST_SUBSCRIPTION_TO_TOURNAMENT_MATCH_ERROR';\r\n// Types of action requesting tournament leaderboard\r\nexport const REQUEST_TOURNAMENT_LEADERBOARD = 'REQUEST_TOURNAMENT_LEADERBOARD';\r\nexport const REQUEST_TOURNAMENT_LEADERBOARD_PENDING = 'REQUEST_TOURNAMENT_LEADERBOARD_PENDING';\r\nexport const REQUEST_TOURNAMENT_LEADERBOARD_SUCCESS = 'REQUEST_TOURNAMENT_LEADERBOARD_SUCCESS';\r\nexport const REQUEST_TOURNAMENT_LEADERBOARD_ERROR = 'REQUEST_TOURNAMENT_LEADERBOARD_ERROR';\r\n// Types of action requesting addition of team solts\r\nexport const REQUEST_ADD_TOURNAMENT_TEAM_SLOTS = 'REQUEST_ADD_TOURNAMENT_TEAM_SLOTS';\r\nexport const REQUEST_ADD_TOURNAMENT_TEAM_SLOTS_PENDING = 'REQUEST_ADD_TOURNAMENT_TEAM_SLOTS_PENDING';\r\nexport const REQUEST_ADD_TOURNAMENT_TEAM_SLOTS_SUCCESS = 'REQUEST_ADD_TOURNAMENT_TEAM_SLOTS_SUCCESS';\r\nexport const REQUEST_ADD_TOURNAMENT_TEAM_SLOTS_ERROR = 'REQUEST_ADD_TOURNAMENT_TEAM_SLOTS_ERROR';\r\n// Types of action requesting addition of prize pools\r\nexport const REQUEST_ADD_TOURNAMENT_PRIZE_POOL = 'REQUEST_ADD_TOURNAMENT_PRIZE_POOL';\r\nexport const REQUEST_ADD_TOURNAMENT_PRIZE_POOL_PENDING = 'REQUEST_ADD_TOURNAMENT_PRIZE_POOL_PENDING';\r\nexport const REQUEST_ADD_TOURNAMENT_PRIZE_POOL_SUCCESS = 'REQUEST_ADD_TOURNAMENT_PRIZE_POOL_SUCCESS';\r\nexport const REQUEST_ADD_TOURNAMENT_PRIZE_POOL_ERROR = 'REQUEST_ADD_TOURNAMENT_PRIZE_POOL_ERROR';\r\n// Types of action requesting removal of prize pools\r\nexport const REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL = 'REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL';\r\nexport const REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL_PENDING = 'REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL_PENDING';\r\nexport const REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL_SUCCESS = 'REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL_SUCCESS';\r\nexport const REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL_ERROR = 'REQUEST_REMOVE_TOURNAMENT_PRIZE_POOL_ERROR';\r\n// Types of action requesting saving of award\r\nexport const REQUEST_SAVE_TOURNAMENT_AWARD = 'REQUEST_ADD_TOURNAMENT_AWARD';\r\nexport const REQUEST_SAVE_TOURNAMENT_AWARD_PENDING = 'REQUEST_ADD_TOURNAMENT_AWARD_PENDING';\r\nexport const REQUEST_SAVE_TOURNAMENT_AWARD_SUCCESS = 'REQUEST_ADD_TOURNAMENT_AWARD_SUCCESS';\r\nexport const REQUEST_SAVE_TOURNAMENT_AWARD_ERROR = 'REQUEST_ADD_TOURNAMENT_AWARD_ERROR';\r\n// Action for adding new award\r\nexport const ADD_NEW_TOURNAMENT_AWARD = 'ADD_NEW_TOURNAMENT_AWARD';\r\n// Types of action requesting delete of award\r\nexport const REQUEST_DELETE_TOURNAMENT_AWARD = 'REQUEST_DELETE_TOURNAMENT_AWARD';\r\nexport const REQUEST_DELETE_TOURNAMENT_AWARD_PENDING = 'REQUEST_DELETE_TOURNAMENT_AWARD_PENDING';\r\nexport const REQUEST_DELETE_TOURNAMENT_AWARD_SUCCESS = 'REQUEST_DELETE_TOURNAMENT_AWARD_SUCCESS';\r\nexport const REQUEST_DELETE_TOURNAMENT_AWARD_ERROR = 'REQUEST_DELETE_TOURNAMENT_AWARD_ERROR';\r\n// Types of action requesting saving of award row\r\nexport const REQUEST_SAVE_TOURNAMENT_AWARD_ROW = 'REQUEST_SAVE_TOURNAMENT_AWARD_ROW';\r\nexport const REQUEST_SAVE_TOURNAMENT_AWARD_ROW_PENDING = 'REQUEST_SAVE_TOURNAMENT_AWARD_ROW_PENDING';\r\nexport const REQUEST_SAVE_TOURNAMENT_AWARD_ROW_SUCCESS = 'REQUEST_SAVE_TOURNAMENT_AWARD_ROW_SUCCESS';\r\nexport const REQUEST_SAVE_TOURNAMENT_AWARD_ROW_ERROR = 'REQUEST_SAVE_TOURNAMENT_AWARD_ROW_ERROR';\r\n// Types of action for receiving track IGNs change\r\nexport const ON_CHANGE_TRACK_IGNS = 'ON_CHANGE_TRACK_IGNS';\r\n// Types of action for receiving tournament match\r\nexport const ON_TOURNAMENT_MATCH_RECEIVED = 'ON_TOURNAMENT_MATCH_RECEIVED';\r\n// Action for setting the current tournament group teams\r\nexport const SET_TOURNAMENT_GROUP_TEAMS = 'SET_TOURNAMENT_GROUP_TEAMS';\r\n// Action for clearing tournament state\r\nexport const CLEAR_TOURNAMENT_STATE = 'CLEAR_TOURNAMENT_STATE';","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Col, FormGroup, Label, Row } from 'reactstrap';\r\nimport { requestChangeComponent } from '../../../../../../redux/dashboard/actions';\r\nimport { AppSwitch } from '../../../../../../components/StyledCoreUI';\r\n\r\nfunction CheckBox(props) {\r\n const { component, label, stateAttribute, requestChangeComponent } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n requestChangeComponent(component, { state: {\r\n [stateAttribute]: !component.state[stateAttribute],\r\n }})}\r\n />\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n requestChangeComponent,\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(CheckBox);\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../scss/style.scss';\r\nimport { CardBody, Col, Collapse, Row } from 'reactstrap';\r\nimport { Card, CardHeader } from '../../../../../components/StyledCoreUI';\r\nimport { IconButton } from '../../../../../components/common';\r\nimport { faTimes, faMinus, faCopy, faDownload } from '@fortawesome/free-solid-svg-icons';\r\nimport {\r\n requestChangeComponentWithValidation,\r\n requestRemoveComponent,\r\n setComponentState,\r\n setComponentData,\r\n subscribeToChangeComponent,\r\n} from '../../../../../redux/dashboard/actions';\r\nimport { openModal } from '../../../../../redux/modal/actions';\r\nimport { displaySuccessNotification } from '../../../../../redux/notification/actions';\r\nimport CheckBox from './inputs/CheckBox';\r\nimport { COMPONENT_STATE_GREEN_BACKGROUND } from '../../../constants';\r\n\r\nconst SmallShowToggleButton = styled.span`\r\n display: block;\r\n width: 10px;\r\n height: 10px;\r\n background-color: rgb(226,0,0);\r\n box-shadow: inset 0px 1px 0px 0px rgba(250,250,250,0.5),\r\n 0px 0px 3px 2px rgba(226,0,0,0.5);\r\n border-radius: 4px;\r\n float: left;\r\n margin-top: 5px;\r\n cursor: pointer;\r\n \r\n transition: background-color 350ms, box-shadow 700ms;\r\n -o-transition: background-color 350ms, box-shadow 700ms;\r\n -moz-transition: background-color 350ms, box-shadow 700ms;\r\n -webkit-transition: background-color 350ms, box-shadow 700ms;\r\n\r\n &.show {\r\n box-shadow: inset 0px 1px 0px 0px rgba(250,250,250,0.5), 0px 0px 3px 2px rgba(135,187,83,0.5);\r\n background-color: rgb(135,187,83);\r\n }\r\n`;\r\n\r\nconst ShowToggleButton = styled.div`\r\n &.overlay-toggle-button {\r\n cursor: pointer;\r\n margin: 15px auto;\r\n width: 75px;\r\n height: 95px;\r\n position: relative;\r\n text-align: center;\r\n }\r\n :active, :focus {\r\n outline: 0;\r\n }\r\n\r\n &.overlay-toggle-button a {\r\n font-family: \"FontAwesome\";\r\n color: rgb(37,37,37);\r\n text-shadow: 0px 1px 1px rgba(250,250,250,0.1);\r\n font-size: 15pt;\r\n display: block;\r\n position: relative;\r\n text-decoration: none;\r\n background-color: rgb(83,87,93);\r\n box-shadow: 0px 3px 0px 0px rgb(34,34,34), /* 1st Shadow */\r\n 0px 7px 10px 0px rgb(17,17,17), /* 1nd Shadow */\r\n inset 0px 1px 1px 0px rgba(250, 250, 250, .2), /* 3rd Shadow */\r\n inset 0px -12px 35px 0px rgba(0, 0, 0, .5); /* 4th Shadow */\r\n width: 70px;\r\n height: 70px;\r\n border: 0;\r\n border-radius: 35px;\r\n text-align: center;\r\n line-height: 75px;\r\n -webkit-touch-callout: none; /* iOS Safari */\r\n -webkit-user-select: none; /* Safari */\r\n -khtml-user-select: none; /* Konqueror HTML */\r\n -moz-user-select: none; /* Old versions of Firefox */\r\n -ms-user-select: none; /* Internet Explorer/Edge */\r\n user-select: none;\r\n }\r\n\r\n &.overlay-toggle-button a:before {\r\n content: \"\";\r\n width: 80px;\r\n height: 80px;\r\n display: block;\r\n z-index: -2;\r\n position: absolute;\r\n background-color: rgb(26,27,29);\r\n left: -5px;\r\n top: -2px;\r\n border-radius: 40px;\r\n box-shadow: 0px 1px 0px 0px rgba(250,250,250,0.1), \r\n inset 0px 1px 2px rgba(0, 0, 0, 0.5);\r\n }\r\n\r\n &.overlay-toggle-button a + span {\r\n display: block;\r\n width: 8px;\r\n height: 8px;\r\n background-color: rgb(226,0,0);\r\n box-shadow: inset 0px 1px 0px 0px rgba(250,250,250,0.5),\r\n 0px 0px 3px 2px rgba(226,0,0,0.5);\r\n border-radius: 4px;\r\n clear: both;\r\n position: absolute;\r\n bottom: 0;\r\n left: 42%;\r\n transition: background-color 350ms, box-shadow 700ms;\r\n -o-transition: background-color 350ms, box-shadow 700ms;\r\n -moz-transition: background-color 350ms, box-shadow 700ms;\r\n -webkit-transition: background-color 350ms, box-shadow 700ms;\r\n }\r\n\r\n &.overlay-toggle-button a:active {\r\n box-shadow: 0px 0px 0px 0px rgb(34,34,34), /* 1st Shadow */\r\n 0px 3px 7px 0px rgb(17,17,17), /* 2nd Shadow */\r\n inset 0px 1px 1px 0px rgba(250, 250, 250, .2), /* 3rd Shadow */\r\n inset 0px -10px 35px 5px rgba(0, 0, 0, .5); /* 4th Shadow */\r\n background-color: rgb(83,87,93);\r\n top: 3px;\r\n }\r\n\r\n &.overlay-toggle-button a:target {\r\n box-shadow: 0px 0px 0px 0px rgb(34,34,34),\r\n 0px 3px 7px 0px rgb(17,17,17), \r\n inset 0px 1px 1px 0px rgba(250, 250, 250, .2), \r\n inset 0px -10px 35px 5px rgba(0, 0, 0, .5);\r\n background-color: rgb(83,87,93);\r\n top: 3px;\r\n color: #fff;\r\n text-shadow: 0px 0px 3px rgb(250,250,250);\r\n }\r\n\r\n &.overlay-toggle-button a:active:before, &.overlay-toggle-button a:target:before {\r\n top: -5px;\r\n background-color: rgb(26,27,29);\r\n box-shadow: 0px 1px 0px 0px rgba(250,250,250,0.1), \r\n inset 0px 1px 2px rgba(0, 0, 0, 0.5);\r\n }\r\n\r\n &.overlay-toggle-button a.show {\r\n box-shadow: 0px 0px 0px 0px rgb(34,34,34), 0px 3px 7px 0px rgb(17,17,17), inset 0px 1px 1px 0px rgba(250, 250, 250, .2), inset 0px -10px 35px 5px rgba(0, 0, 0, .5);\r\n background-color: rgb(83,87,93);\r\n top: 3px;\r\n color: #fff;\r\n text-shadow: 0px 0px 3px rgb(250,250,250);\r\n }\r\n\r\n &.overlay-toggle-button a.show + span {\r\n box-shadow: inset 0px 1px 0px 0px rgba(250,250,250,0.5), 0px 0px 3px 2px rgba(135,187,83,0.5);\r\n background-color: rgb(135,187,83);\r\n }\r\n\r\n &.overlay-toggle-button a.loading + span {\r\n box-shadow: inset 0px 1px 0px 0px rgba(250,250,250,0.5), 0px 0px 3px 2px rgba(135,187,83,0.5);\r\n background-color: rgb(187, 138, 83);\r\n }\r\n`;\r\n\r\nclass ControllerBase extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n opened: true,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const { component, subscribeToChangeComponent, setComponentData } = this.props;\r\n subscribeToChangeComponent(component, data => setComponentData(component, data));\r\n }\r\n\r\n getOverlayUrl = (game, componentType, shard, token) => {\r\n return `${window.location.protocol}//${window.location.host}/overlay/${game}/${componentType}/${shard}/${token}`;\r\n }\r\n\r\n render() {\r\n const { opened } = this.state;\r\n const { component, shard, game, loading, children, requestRemoveComponent, openModal, requestChangeComponentWithValidation } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n { component.name }\r\n {\r\n !opened ?\r\n requestChangeComponentWithValidation(component, { show: !component.show })}\r\n />\r\n :\r\n null\r\n }\r\n \r\n \r\n this.props.displaySuccessNotification('Link Copied')}\r\n >\r\n \r\n \r\n {\r\n component.exportOverlay ?\r\n \r\n \r\n \r\n :\r\n null\r\n }\r\n this.setState({ opened: !opened })}\r\n />\r\n openModal('Remove Component', `Are you sure you want to remove ${component.name}?`, () => requestRemoveComponent(component))}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n { children }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n requestChangeComponentWithValidation(component, { show: !component.show })}\r\n >\r\n SHOW\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n requestChangeComponentWithValidation,\r\n requestRemoveComponent,\r\n subscribeToChangeComponent,\r\n openModal,\r\n displaySuccessNotification,\r\n setComponentState,\r\n setComponentData,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ControllerBase);\r\n","import React, { Component } from 'react';\r\nimport { Multiselect as ReactMultiSelect } from 'multiselect-react-dropdown';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../scss/style.scss';\r\n\r\nconst SelectWrapper = styled.div`\r\n #multiselectContainerReact div {\r\n background: ${props => props.color ? props.color : styles.tertiary} !important;\r\n border-color: ${props => props.warning ? styles.primary : (props.color ? props.color : styles.tertiary)} !important;\r\n color: ${styles.secondary};\r\n\r\n &:focus {\r\n background: ${props => props.color ? props.color : styles.tertiary};\r\n color: ${styles.secondary};\r\n }\r\n\r\n #search_input::placeholder {\r\n color: #fff;\r\n }\r\n\r\n span, li:hover, li.highlight {\r\n background: ${styles.primary}\r\n }\r\n }\r\n`;\r\n\r\nclass Multiselect extends Component {\r\n\r\n render() {\r\n const { options, selectedValues, selectionLimit, onSelect, onRemove, color, displayValue, warning } = this.props;\r\n \r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Multiselect;","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { FormGroup, Label } from 'reactstrap';\r\nimport { requestChangeComponent } from '../../../../../../redux/dashboard/actions';\r\nimport { COMPONENT_STATE_STATS } from '../../../../constants';\r\nimport Multiselect from '../../../../../../components/common/multiselect/Multiselect';\r\n\r\nfunction StatisticsSelect(props) {\r\n const { component, requestChangeComponent } = props;\r\n\r\n return (\r\n \r\n \r\n requestChangeComponent(component, { state: { [COMPONENT_STATE_STATS]: s } })}\r\n onRemove={s => requestChangeComponent(component, { state: { [COMPONENT_STATE_STATS]: s.length ? s : null } })}\r\n color={styles.tertiaryDark}\r\n displayValue='value'\r\n warning={!component.state[COMPONENT_STATE_STATS] && component.state.showEmptyFieldWarning}\r\n />\r\n \r\n );\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n requestChangeComponent,\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(StatisticsSelect);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { FormGroup, Label } from 'reactstrap';\r\nimport { requestChangeComponent } from '../../../../../../redux/dashboard/actions';\r\nimport { COMPONENT_STATE_LEFT_PLAYER, COMPONENT_STATE_LEFT_TEAM, COMPONENT_STATE_MATCH, COMPONENT_STATE_PLAYER, COMPONENT_STATE_RIGHT_PLAYER, COMPONENT_STATE_RIGHT_TEAM, COMPONENT_STATE_TEAM } from '../../../../constants';\r\nimport { Select } from '../../../../../../components/StyledCoreUI';\r\n\r\nfunction MatchSelect(props) {\r\n const { component, allMatches = true, requestChangeComponent } = props;\r\n\r\n const options = [];\r\n if (allMatches) options.push({ key: component.args.shard_info, value: 'ALL' });\r\n // if (lastMatch) options.push({ key: -1, value: 'LAST MATCH' });\r\n\r\n return (\r\n \r\n \r\n requestChangeComponent(component, {\r\n state: {\r\n [COMPONENT_STATE_MATCH]: isNaN(id) ? id : parseInt(id),\r\n [COMPONENT_STATE_TEAM]: null,\r\n [COMPONENT_STATE_LEFT_TEAM]: null,\r\n [COMPONENT_STATE_RIGHT_TEAM]: null,\r\n [COMPONENT_STATE_PLAYER]: null,\r\n [COMPONENT_STATE_LEFT_PLAYER]: null,\r\n [COMPONENT_STATE_RIGHT_PLAYER]: null,\r\n },\r\n args: isNaN(id) ? { [COMPONENT_STATE_MATCH]: null } : { [COMPONENT_STATE_MATCH]: parseInt(id) },\r\n })}\r\n options={[\r\n ...options,\r\n ...component.matches.sort((a, b) => a.startAt > b.startAt ? -1 : 1).map(m => {\r\n return { key: m.id, value: m.name };\r\n })\r\n ]}\r\n warning={!(component.state[COMPONENT_STATE_MATCH] || component.args.shard_info) && component.state.showEmptyFieldWarning}\r\n />\r\n \r\n );\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n requestChangeComponent,\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(MatchSelect);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { FormGroup, Label } from 'reactstrap';\r\nimport { requestChangeComponent } from '../../../../../../redux/dashboard/actions';\r\nimport { Select } from '../../../../../../components/StyledCoreUI';\r\n\r\nfunction TeamSelect(props) {\r\n const { component, label, stateAttribute, childPlayerStateAttribute, stateToMergeOnChange, requestChangeComponent } = props;\r\n\r\n return (\r\n \r\n \r\n {\r\n const newState = {\r\n ...stateToMergeOnChange,\r\n [stateAttribute]: parseInt(id),\r\n };\r\n if (childPlayerStateAttribute) {\r\n newState[childPlayerStateAttribute] = null;\r\n }\r\n requestChangeComponent(component, { state: newState});\r\n }}\r\n disabledOptionText='-- select team --'\r\n options={component.teams.map(t => {\r\n return { key: t.id, value: t.name };\r\n })}\r\n warning={!component.state[stateAttribute] && component.state.showEmptyFieldWarning}\r\n />\r\n \r\n );\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n requestChangeComponent,\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(TeamSelect);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { FormGroup, Label } from 'reactstrap';\r\nimport { requestChangeComponent } from '../../../../../../redux/dashboard/actions';\r\nimport { Select } from '../../../../../../components/StyledCoreUI';\r\nimport { isInt } from '../../../../../../util/CommonUtil';\r\n\r\nfunction PlayerSelect(props) {\r\n const { component, label, stateAttribute, parentTeamStateAttribute, requestChangeComponent, playerId } = props;\r\n\r\n return (\r\n \r\n \r\n {\r\n requestChangeComponent(component, { state: { [stateAttribute]: (isInt(id) && parseInt(id)) || id } })}\r\n }\r\n disabledOptionText='-- select player --'\r\n options={\r\n component.state[parentTeamStateAttribute] ?\r\n (component.teams.find(t => t.id === component.state[parentTeamStateAttribute]) || { players: [] }).players.map(p => {\r\n return { key: p[playerId || 'id'], value: p.ign };\r\n })\r\n :\r\n []\r\n }\r\n warning={!component.state[stateAttribute] && component.state.showEmptyFieldWarning}\r\n />\r\n \r\n );\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n requestChangeComponent,\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(PlayerSelect);\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport StatisticsSelect from '../../../common/base/controller/inputs/StatisticsSelect';\r\nimport MatchSelect from '../../../common/base/controller/inputs/MatchSelect';\r\nimport TeamSelect from '../../../common/base/controller/inputs/TeamSelect';\r\nimport PlayerSelect from '../../../common/base/controller/inputs/PlayerSelect';\r\nimport { COMPONENT_STATE_PLAYER, COMPONENT_STATE_TEAM } from '../../../constants';\r\nimport { PUBG_GAME } from '../../../../../util/Games';\r\n\r\nclass PUBGPlayerStatsController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PUBGPlayerStatsController;\r\n","import React from 'react';\r\n\r\nconst PUBGPlayerStatsOverlay = (props) => {\r\n return (\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default PUBGPlayerStatsOverlay;\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport StatisticsSelect from '../../../common/base/controller/inputs/StatisticsSelect';\r\nimport MatchSelect from '../../../common/base/controller/inputs/MatchSelect';\r\nimport TeamSelect from '../../../common/base/controller/inputs/TeamSelect';\r\nimport { COMPONENT_STATE_TEAM } from '../../../constants';\r\nimport { PUBG_GAME } from '../../../../../util/Games';\r\n\r\nclass PUBGTeamStatsController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PUBGTeamStatsController;\r\n","import React from 'react';\r\n\r\nconst PUBGTeamStatsOverlay = (props) => {\r\n return (\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default PUBGTeamStatsOverlay;\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport StatisticsSelect from '../../../common/base/controller/inputs/StatisticsSelect';\r\nimport MatchSelect from '../../../common/base/controller/inputs/MatchSelect';\r\nimport TeamSelect from '../../../common/base/controller/inputs/TeamSelect';\r\nimport PlayerSelect from '../../../common/base/controller/inputs/PlayerSelect';\r\nimport {\r\n COMPONENT_STATE_LEFT_PLAYER,\r\n COMPONENT_STATE_LEFT_TEAM,\r\n COMPONENT_STATE_RIGHT_PLAYER,\r\n COMPONENT_STATE_RIGHT_TEAM,\r\n} from '../../../constants';\r\nimport { PUBG_GAME } from '../../../../../util/Games';\r\n\r\nclass PUBGPlayerHeadToHeadController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PUBGPlayerHeadToHeadController;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst StyledHeaderRow = styled.div`\r\n width: ${props => props.rowWidth}px;\r\n background: ${props => styles[props.shard + 'Color'] ? styles[props.shard + 'Color'] : styles.primaryLight};\r\n color: #FFF;\r\n border-top-left-radius: 25px;\r\n border-top-right-radius: 25px;\r\n\r\n span {\r\n font-size: 20px;\r\n font-weight: 600;\r\n line-height: 40px;\r\n text-transform: uppercase;\r\n }\r\n`;\r\n\r\nfunction HeadToHeadHeader(props) {\r\n\r\n return (\r\n \r\n Head To Head\r\n \r\n );\r\n}\r\n\r\nexport default HeadToHeadHeader;","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\nimport { TWIRE_ASSETS_URL } from '../../../../../../util/Constants';\r\n\r\nconst PlayerWrapper = styled(Row)`\r\n background: ${styles.tertiary};\r\n text-transform: uppercase;\r\n\r\n img {\r\n height: 220px;\r\n }\r\n\r\n h1 {\r\n font-size: 70px;\r\n }\r\n\r\n h4 {\r\n font-size: 30px;\r\n }\r\n\r\n span {\r\n color: ${styles.info};\r\n font-size: 20px;\r\n }\r\n`;\r\n\r\nconst VsCol = styled(Col)`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n`;\r\n\r\nfunction HeadToHeadBody(props) {\r\n const { left, right, stats } = props;\r\n\r\n const PlayerNames = ({ leftPlayer, rightPlayer }) => {\r\n return (\r\n \r\n \r\n

{leftPlayer.username}

\r\n \r\n \r\n

{rightPlayer.username}

\r\n \r\n
\r\n );\r\n }\r\n\r\n const PlayerLogos = ({ leftPlayer, rightPlayer }) => {\r\n return (\r\n \r\n \r\n \r\n \r\n e.target.src = TWIRE_ASSETS_URL + \"pubg/team-logos/default.png\"}\r\n />\r\n \r\n \r\n \r\n \r\n

VS

\r\n
\r\n \r\n \r\n \r\n e.target.src = TWIRE_ASSETS_URL + \"pubg/team-logos/default.png\"}\r\n />\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n const PlayerDetails = ({ leftPlayer, rightPlayer, stats }) => {\r\n\r\n return (\r\n \r\n \r\n {\r\n (stats || []).map(s => {\r\n return (\r\n \r\n \r\n

{Math.round(leftPlayer[s.key])}

\r\n \r\n \r\n {s.value}\r\n \r\n \r\n

{Math.round(rightPlayer[s.key])}

\r\n \r\n
\r\n );\r\n })\r\n }\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n leftPlayer: state.headToHeadPlayers.leftPlayer,\r\n rightPlayer: state.headToHeadPlayers.rightPlayer,\r\n});\r\n\r\nexport default connect(mapStateToProps)(HeadToHeadBody);","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst width = 300;\r\n\r\nconst StyledLogoCol = styled.div`\r\n background: ${styles.tertiary};\r\n border-bottom-left-radius: 25px;\r\n border-bottom-right-radius: 25px;\r\n width: ${width}px;\r\n margin-left: ${props => props.marginLeft}px;\r\n\r\n img {\r\n height: 45px;\r\n margin-bottom: 5px;\r\n }\r\n`;\r\n\r\nfunction HeadToHeadFooter(props) {\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default HeadToHeadFooter;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport HeadToHeadHeader from './HeadToHeadHeader';\r\nimport HeadToHeadBody from './HeadToHeadBody';\r\nimport HeadToHeadFooter from './HeadToHeadFooter';\r\n\r\nconst width = 900;\r\nconst height = 700;\r\n\r\nconst HeadToHeadWrapper = styled.div`\r\n width: ${props => props.rowWidth}px;\r\n overflow: hidden;\r\n font-family: 'muli';\r\n\r\n &.head-to-head-show {\r\n display: block;\r\n height: 0;\r\n animation: fadeIn 0.6s ease 0s forwards, slideDown 1s ease 0.3s forwards;\r\n \r\n @keyframes slideDown {\r\n from {height: 0;}\r\n to {height: ${height}px;}\r\n }\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {}\r\n }\r\n }\r\n\r\n &.head-to-head-hide {\r\n height: ${height}px;\r\n animation: slideUp 1s ease 0s forwards, fadeOut 0.3s ease .8s forwards;\r\n \r\n @keyframes slideUp {\r\n from {height: ${height}px;}\r\n to {height: 0;}\r\n }\r\n \r\n @keyframes fadeOut {\r\n from {}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n &.no-animation {\r\n height: ${height}px;\r\n }\r\n`;\r\n\r\nclass HeadToHeadPlayers extends Component {\r\n\r\n render() {\r\n const { loaded, left, right, opts, show, shard, exportAsImage } = this.props;\r\n\r\n return (\r\n loaded ?\r\n \r\n \r\n \r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default HeadToHeadPlayers;\r\n","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst mainLogoSize = 200;\r\n\r\nconst Wrapper = styled(Row)`\r\n text-transform: uppercase;\r\n font-family: 'agency_fb';\r\n text-transform: uppercase;\r\n background-repeat: no-repeat;\r\n\r\n p {\r\n margin: 0;\r\n padding: 0;\r\n }\r\n\r\n .main-image {\r\n width: ${ mainLogoSize }px;\r\n }\r\n\r\n .logos-wrapper {\r\n padding: 10px;\r\n background: #3e3e3e;\r\n }\r\n\r\n .team-logo {\r\n height: 130px;\r\n bottom: 0;\r\n filter: drop-shadow(0px 0px 8px #000000);\r\n position: absolute;\r\n z-index: 5;\r\n\r\n &.right {\r\n right: 50px;\r\n }\r\n &.left {\r\n left: 20px;\r\n }\r\n }\r\n\r\n .head-to-head-body {\r\n width: ${props => props.rowWidth - 2 * props.rowMargin}px;\r\n padding: 5px 15px;\r\n font-size: 20px;\r\n\r\n .main-name {\r\n font-size: 40px;\r\n margin-bottom: 15px;\r\n }\r\n\r\n .details-team-name {\r\n font-size: 25px;\r\n margin-bottom: -15px;\r\n\r\n &.left {\r\n color: ${styles.aelBlue};\r\n }\r\n &.right {\r\n color: ${styles.aelGreen};\r\n }\r\n }\r\n }\r\n\r\n .details-wrapper {\r\n color: ${styles.secondary};\r\n font-size: 35px;\r\n }\r\n\r\n .detail {\r\n padding: 10px;\r\n background: #3e3e3e;\r\n }\r\n`;\r\n\r\nconst VsCol = styled(Col)`\r\n display: flex;\r\n justify-content: center;\r\n font-size: 100px;\r\n\r\n p {\r\n text-shadow: none !important;\r\n }\r\n`;\r\n\r\nfunction HeadToHeadBody(props) {\r\n const { left, right } = props;\r\n\r\n const Details = ({left, right}) => {\r\n return (\r\n \r\n \r\n {\r\n props.stats.map(s => {\r\n return (\r\n \r\n \r\n

{left[s.key]}

\r\n \r\n \r\n { s.value }\r\n \r\n \r\n

{right[s.key]}

\r\n \r\n
\r\n );\r\n })\r\n }\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n { left.ign }\r\n \r\n \r\n { right.ign }\r\n \r\n \r\n \r\n \r\n \"team e.target.src = getTeamLogo('default')}\r\n />\r\n \r\n \r\n \r\n \r\n

VS

\r\n
\r\n \r\n \r\n \r\n \"team e.target.src = getTeamLogo('default')}\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nexport default HeadToHeadBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { Row, Col } from 'reactstrap';\r\n\r\nconst Wrapper = styled.div`\r\n text-transform: uppercase;\r\n font-family: 'agency_fb';\r\n width: ${props => props.rowWidth}px;\r\n margin-top: 35px;\r\n background: ${styles.pslColor};\r\n height: 180px;\r\n\r\n &.head-to-head-header-show {\r\n display: block;\r\n width: 0px;\r\n animation: headerSlideDown 0.5s ease 0.2s forwards;\r\n \r\n @keyframes headerSlideDown {\r\n from {width: 0px;}\r\n to {width: ${props => props.rowWidth}px;}\r\n }\r\n\r\n p {\r\n opacity: 0;\r\n animation: headerFadeIn 0.6s ease 0.6s forwards;\r\n \r\n @keyframes headerFadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n }\r\n\r\n &.head-to-head-header-hide {\r\n width: ${props => props.rowWidth}px;\r\n animation: headerSlideUp 0.5s ease 1s forwards;\r\n \r\n @keyframes headerSlideUp {\r\n from {width: ${props => props.rowWidth}px;}\r\n to {width: 0px;}\r\n }\r\n\r\n p {\r\n opacity: 1;\r\n animation: headerFadeOut 0.6s ease 0.6s forwards;\r\n \r\n @keyframes headerFadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n }\r\n\r\n p {\r\n padding: 0;\r\n margin: 0;\r\n }\r\n\r\n img {\r\n height: 250px;\r\n position: absolute;\r\n top: 0;\r\n z-index: 100;\r\n }\r\n\r\n .row {\r\n padding-top: 15px;\r\n padding-bottom: 15px;\r\n }\r\n\r\n .next-match {\r\n vertical-align: middle;\r\n font-size: 35px;\r\n letter-spacing: 8px;\r\n filter: drop-shadow(0px 0px 4px #00000040);\r\n line-height: 1;\r\n margin-left: 5px;\r\n }\r\n\r\n .next-map {\r\n vertical-align: middle;\r\n font-size: 130px;\r\n text-transform: uppercase;\r\n filter: drop-shadow(0px 0px 4px #00000080);\r\n line-height: 1;\r\n }\r\n`;\r\n\r\nfunction HeadToHeadHeader(props) {\r\n const { rowWidth, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n

Players

\r\n

Head To head

\r\n \r\n
\r\n \r\n );\r\n}\r\n\r\nexport default HeadToHeadHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst height = 50;\r\n\r\nconst Wrapper = styled.div`\r\n width: ${ props => props.rowWidth / 3 }px;\r\n margin-left: ${ props => props.rowWidth / 3 }px;\r\n overflow: hidden;\r\n background: #3e3e3e;\r\n\r\n img {\r\n margin-top: 2px;\r\n height: 45px;\r\n }\r\n\r\n &.footer-show {\r\n height: 0;\r\n animation: open-footer .75s ease 1s forwards;\r\n\r\n @keyframes open-footer {\r\n from {height: 0;}\r\n to {height: ${height}px;}s\r\n }\r\n }\r\n\r\n &.footer-hide {\r\n height: ${height}px;\r\n animation: close-footer .75s ease-in 0s forwards;\r\n\r\n @keyframes close-footer {\r\n from {height: ${height}px;}\r\n to {height: 0px;}\r\n }\r\n }\r\n`;\r\n\r\nfunction PoweredByTwire(props) {\r\n const { rowWidth, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default PoweredByTwire;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport HeadToHeadBody from './HeadToHeadBody';\r\nimport HeadToHeadHeader from './HeadToHeadHeader';\r\nimport HeadToHeadFooter from './HeadToHeadFooter';\r\n\r\nconst width = 900;\r\nconst margins = 0;\r\n\r\nconst HeadToHeadWrapper = styled.div`\r\n width: ${props => props.rowWidth}px;\r\n overflow: hidden;\r\n\r\n &.head-to-head-show {\r\n display: block;\r\n height: 220px;\r\n animation: fadeIn 0.6s ease 0s forwards, slideDown 1s ease 0.7s forwards;\r\n \r\n @keyframes slideDown {\r\n from {height: 220px;}\r\n to {height: calc(100vh);}\r\n }\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {}\r\n }\r\n }\r\n\r\n &.head-to-head-hide {\r\n height: calc(100vh);\r\n animation: slideUp 1s ease 0s forwards, fadeOut 0.3s ease 1.4s forwards;\r\n \r\n @keyframes slideUp {\r\n from {height: calc(100vh);}\r\n to {height: 220px;}\r\n }\r\n \r\n @keyframes fadeOut {\r\n from {}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nclass HeadToHeadPlayers extends Component {\r\n\r\n render() {\r\n const { loaded, left, right, opts, show } = this.props;\r\n\r\n if (!loaded || !left || !right) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default HeadToHeadPlayers;\r\n","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst WIDTH = 1400;\r\nconst HORIZONTAL_SPACING = 10;\r\n\r\nconst HeadToHeadWrapper = styled.table`\r\n font-family: machine, noto-bold;\r\n font-size: 33px;\r\n\r\n border-collapse:separate;\r\n border-spacing: ${HORIZONTAL_SPACING}px;\r\n width: ${WIDTH}px;\r\n height: 1px;\r\n\r\n table {\r\n width: 100%;\r\n height: 100%;\r\n\r\n td:first-child, td:last-child {\r\n width: 25%;\r\n }\r\n }\r\n\r\n span {\r\n position: relative;\r\n }\r\n\r\n td { \r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n &.team-logo-td {\r\n background-image: url('/assets/img/pjc/head-to-head-background.png');\r\n background-attachment: fixed;\r\n background-position: 0px 0px;\r\n background-repeat: no-repeat;\r\n\r\n width: 25%;\r\n padding: 20px;\r\n height: 400px;\r\n\r\n img {\r\n height: 220px;\r\n }\r\n }\r\n }\r\n\r\n &.component-show {\r\n .team-logo-td {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease ${props => props.numOfStats * 0.2}s forwards;\r\n \r\n @keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.component-hide {\r\n .team-logo-td {\r\n opacity: 1;\r\n animation: fadeOut 0.6s ease 0s forwards;\r\n \r\n @keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n to {\r\n opacity: 0;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst StatsTd = styled.td`\r\n background-image: url('/assets/img/pjc/head-to-head-background.png');\r\n background-attachment: fixed;\r\n background-position: 0px 0px;\r\n background-repeat: no-repeat;\r\n\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease ${props => props.index/5}s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: -100px;\r\n animation: slideUp 0.3s ease ${props => props.index/5}s forwards;\r\n\r\n @keyframes slideUp {\r\n from {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n to {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.component-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.6s ease ${props => 1 - props.index/5 - 0.2}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n to {\r\n opacity: 0;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: 0px;\r\n animation: slideDown 0.3s ease ${props => 1 - props.index/5 - 0.2}s forwards;\r\n\r\n @keyframes slideDown {\r\n from {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n to {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nclass PjcPlayerHeadToHead extends Component {\r\n\r\n render() {\r\n const { loaded, left, right, opts, show } = this.props;\r\n\r\n if (!loaded || !left || !right) return null;\r\n\r\n return (\r\n \r\n \r\n {\r\n (opts.stats || []).map((s, i) => {\r\n return (\r\n \r\n {\r\n i === 0 ?\r\n \r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n

{ left.ign }

\r\n \r\n :\r\n null\r\n }\r\n \r\n \r\n \r\n \r\n \r\n { parseInt(left[s.key]) }\r\n \r\n \r\n { s.value }\r\n \r\n \r\n { parseInt(right[s.key]) }\r\n \r\n \r\n \r\n
\r\n \r\n {\r\n i === 0 ?\r\n \r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n

{ right.ign }

\r\n \r\n :\r\n null\r\n }\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PjcPlayerHeadToHead;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst Wrapper = styled.div`\r\n font-size: 35px;\r\n\r\n table {\r\n border-collapse:separate;\r\n border-spacing: 0px 10px;\r\n }\r\n\r\n td {\r\n height: 65px;\r\n position: relative;\r\n\r\n img {\r\n height: 180px;\r\n \r\n &:first-child {\r\n z-index: -1;\r\n position: absolute;\r\n filter: blur(15px);\r\n }\r\n }\r\n }\r\n\r\n .stats-value {\r\n width: 100px;\r\n background: #ff8317;\r\n }\r\n\r\n .stats-name {\r\n padding: 0;\r\n width: 500px;\r\n\r\n div {\r\n background: #404040;\r\n position: relative;\r\n overflow: hidden;\r\n }\r\n }\r\n\r\n .stats {\r\n font-size: 50px;\r\n }\r\n`;\r\n\r\nconst TableRow = styled.tr`\r\n &.component-show {\r\n transform: rotate3d(1, 0, 0, 90deg);\r\n animation: \r\n rotateIn 0.5s ease ${props => ((props.rowNumber > 5 ? props.rowNumber - 5 : props.rowNumber)) * 0.3}s forwards,\r\n fadeIn 1s ease ${props => ((props.rowNumber > 5 ? props.rowNumber - 5 : props.rowNumber)) * 0.3}s forwards;\r\n\r\n .team-logo {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease ${props => (props.numberOfStats + 1) * 0.3}s forwards;\r\n }\r\n\r\n @keyframes rotateIn {\r\n from {transform: rotate3d(1, 0, 0, 90deg);}\r\n to {transform: rotate3d(1, 0, 0, 0deg);}\r\n }\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n animation: \r\n rotateOut 0.5s ease ${props => ((props.rowNumber > 5 ? props.rowNumber - 5 : props.rowNumber) + 1) * 0.3}s forwards,\r\n fadeOut 1s ease ${props => ((props.rowNumber > 5 ? props.rowNumber - 5 : props.rowNumber) + 1) * 0.3}s forwards;\r\n\r\n .team-logo {\r\n animation: fadeOut 0.3s ease 0s forwards;\r\n }\r\n\r\n @keyframes rotateOut {\r\n from {transform: rotate3d(1, 0, 0, 0deg);}\r\n to {transform: rotate3d(1, 0, 0, 90deg);}\r\n }\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nfunction HeadToHeadBody(props) {\r\n const { left, right, opts,show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {\r\n (opts.stats || []).map((s, i) => {\r\n return (\r\n \r\n {\r\n i === 0 ?\r\n \r\n :\r\n null\r\n }\r\n \r\n \r\n \r\n {\r\n i === 0 ?\r\n \r\n :\r\n null\r\n }\r\n \r\n );\r\n })\r\n }\r\n \r\n
\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n

{ left.ign }

\r\n
{ parseInt(left[s.key]) }\r\n
\r\n { s.value }\r\n
\r\n
{ parseInt(right[s.key]) }\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n

{ right.ign }

\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default HeadToHeadBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n &.component-show {\r\n animation: fadeIn 0.3s ease 0s forwards;\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n animation: fadeOut 0.3s ease ${props => (props.numberOfStats + 1) * 0.3}s forwards;\r\n \r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nfunction HeadToHeadHeader(props) {\r\n const { show, numberOfStats } = props;\r\n\r\n return (\r\n \r\n \r\n

Player Head To Head

\r\n \r\n \r\n );\r\n}\r\n\r\nexport default HeadToHeadHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease ${props => (props.numberOfStats + 2) * 0.3}s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n animation: fadeOut 0.3s ease ${props => (props.numberOfStats + 2) * 0.3}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nfunction HeadToHeadFooter(props) {\r\n const { show, numberOfStats } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default HeadToHeadFooter;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport HeadToHeadBody from './HeadToHeadBody';\r\nimport HeadToHeadHeader from './HeadToHeadHeader';\r\nimport HeadToHeadFooter from './HeadToHeadFooter';\r\n\r\nconst HeadToHeadWrapper = styled.table`\r\n font-family: 'agency_fb';\r\n text-align: center; \r\n vertical-align: middle;\r\n text-transform: uppercase;\r\n border-collapse:separate;\r\n border-spacing: 10px 10px;\r\n\r\n h1 {\r\n font-size: 70px;\r\n }\r\n`;\r\n\r\nclass RyerHeadToHeadPlayer extends Component {\r\n\r\n render() {\r\n const { loaded, left, right, opts, show } = this.props;\r\n\r\n if (!loaded || !left || !right) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default RyerHeadToHeadPlayer;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport Default from './default/TwireHeadToHeadPlayers';\r\nimport PSL from './psl/PslHeadToHeadPlayers';\r\nimport PJC from './pjc/PjcPlayerHeadToHead';\r\nimport RYER from './ryer/RyerHeadToHeadPlayer';\r\n\r\nconst PUBGPlayerHeadToHeadOverlay = (props) => {\r\n const { shard, overlayDesign } = props;\r\n\r\n return (\r\n overlayDesign === 'psl' || shard.includes('psl') ? \r\n \r\n :\r\n shard.includes('ryer') ? \r\n \r\n :\r\n shard.includes('test-pjc21') || shard.includes('pjc') ? \r\n \r\n :\r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n left: state.overlay.left ? state.overlay.left.pubg : {},\r\n right: state.overlay.right ? state.overlay.right.pubg : {},\r\n overlayDesign: (state.overlay.tournament || {}).overlayDesign,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n loaded: state.overlay.loaded,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PUBGPlayerHeadToHeadOverlay);","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport StatisticsSelect from '../../../common/base/controller/inputs/StatisticsSelect';\r\nimport MatchSelect from '../../../common/base/controller/inputs/MatchSelect';\r\nimport TeamSelect from '../../../common/base/controller/inputs/TeamSelect';\r\nimport { COMPONENT_STATE_LEFT_TEAM, COMPONENT_STATE_RIGHT_TEAM } from '../../../constants';\r\nimport { PUBG_GAME } from '../../../../../util/Games';\r\n\r\nclass PUBGTeamHeadToHeadController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PUBGTeamHeadToHeadController;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst StyledHeaderRow = styled.div`\r\n width: ${props => props.rowWidth}px;\r\n background: ${props => styles[props.tournament + 'Color'] ? styles[props.tournament + 'Color'] : styles.primaryLight};\r\n color: #FFF;\r\n border-top-left-radius: 25px;\r\n border-top-right-radius: 25px;\r\n\r\n span {\r\n font-size: 20px;\r\n font-weight: 600;\r\n line-height: 40px;\r\n text-transform: uppercase;\r\n }\r\n`;\r\n\r\nfunction HeadToHeadHeader(props) {\r\n\r\n return (\r\n \r\n Head To Head\r\n \r\n );\r\n}\r\n\r\nexport default HeadToHeadHeader;","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamWrapper = styled(Row)`\r\n background: ${styles.tertiary};\r\n text-transform: uppercase;\r\n\r\n img {\r\n height: 220px;\r\n }\r\n\r\n h1 {\r\n font-size: 70px;\r\n }\r\n\r\n h4 {\r\n font-size: 30px;\r\n }\r\n\r\n span {\r\n color: ${styles.info};\r\n font-size: 20px;\r\n }\r\n`;\r\n\r\nconst VsCol = styled(Col)`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n`;\r\n\r\nfunction HeadToHeadBody(props) {\r\n const { left, right, stats } = props;\r\n\r\n const TeamNames = ({leftTeam, rightTeam}) => {\r\n return (\r\n \r\n \r\n

{leftTeam.teamName}

\r\n \r\n \r\n

{rightTeam.teamName}

\r\n \r\n
\r\n );\r\n }\r\n\r\n const TeamLogos = ({leftTeam, rightTeam}) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \"team e.target.src = getTeamLogo('default.png')}\r\n />\r\n \r\n \r\n \r\n \r\n

VS

\r\n
\r\n \r\n \r\n \r\n \"team e.target.src = getTeamLogo('default.png')}\r\n />\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n const TeamDetails = ({leftTeam, rightTeam, stats}) => {\r\n\r\n return (\r\n \r\n \r\n {\r\n (stats || []).map(s => {\r\n return (\r\n \r\n \r\n

{Math.round(leftTeam[s.key])}

\r\n \r\n \r\n {s.value}\r\n \r\n \r\n

{Math.round(rightTeam[s.key])}

\r\n \r\n
\r\n );\r\n })\r\n }\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default HeadToHeadBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst width = 300;\r\n\r\nconst StyledLogoCol = styled.div`\r\n background: ${styles.tertiary};\r\n border-bottom-left-radius: 25px;\r\n border-bottom-right-radius: 25px;\r\n width: ${width}px;\r\n margin-left: ${props => props.marginLeft}px;\r\n\r\n img {\r\n height: 45px;\r\n margin-bottom: 5px;\r\n }\r\n`;\r\n\r\nfunction HeadToHeadFooter(props) {\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default HeadToHeadFooter;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport HeadToHeadHeader from './HeadToHeadHeader';\r\nimport HeadToHeadBody from './HeadToHeadBody';\r\nimport HeadToHeadFooter from './HeadToHeadFooter';\r\n\r\nconst width = 900;\r\nconst height = 700;\r\n\r\nconst HeadToHeadWrapper = styled.div`\r\n width: ${props => props.rowWidth}px;\r\n overflow: hidden;\r\n font-family: 'muli';\r\n\r\n &.head-to-head-show {\r\n display: block;\r\n height: 0;\r\n animation: fadeIn 0.6s ease 0s forwards, slideDown 1s ease 0.3s forwards;\r\n \r\n @keyframes slideDown {\r\n from {height: 0;}\r\n to {height: ${height}px;}\r\n }\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {}\r\n }\r\n }\r\n\r\n &.head-to-head-hide {\r\n height: ${height}px;\r\n animation: slideUp 1s ease 0s forwards, fadeOut 0.3s ease .8s forwards;\r\n \r\n @keyframes slideUp {\r\n from {height: ${height}px;}\r\n to {height: 0;}\r\n }\r\n \r\n @keyframes fadeOut {\r\n from {}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n &.no-animation {\r\n height: ${height}px;\r\n }\r\n`;\r\n\r\nclass HeadToHeadTeams extends Component {\r\n\r\n render() {\r\n const { loaded, left, right, opts, show, shard, exportAsImage } = this.props;\r\n\r\n return (\r\n loaded ?\r\n \r\n \r\n \r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default HeadToHeadTeams;\r\n","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst mainLogoSize = 200;\r\n\r\nconst Wrapper = styled(Row)`\r\n text-transform: uppercase;\r\n font-family: 'agency_fb';\r\n text-transform: uppercase;\r\n background-repeat: no-repeat;\r\n\r\n p {\r\n margin: 0;\r\n padding: 0;\r\n }\r\n\r\n .main-image {\r\n width: ${ mainLogoSize }px;\r\n }\r\n\r\n .logos-wrapper {\r\n padding: 10px;\r\n background: #3e3e3e;\r\n }\r\n\r\n .team-logo {\r\n height: 130px;\r\n bottom: 0;\r\n filter: drop-shadow(0px 0px 8px #000000);\r\n position: absolute;\r\n z-index: 5;\r\n\r\n &.right {\r\n right: 50px;\r\n }\r\n &.left {\r\n left: 20px;\r\n }\r\n }\r\n\r\n .head-to-head-body {\r\n width: ${props => props.rowWidth - 2 * props.rowMargin}px;\r\n padding: 5px 15px;\r\n font-size: 20px;\r\n\r\n .main-name {\r\n font-size: 40px;\r\n margin-bottom: 15px;\r\n }\r\n\r\n .details-team-name {\r\n font-size: 25px;\r\n margin-bottom: -15px;\r\n\r\n &.left {\r\n color: ${styles.aelBlue};\r\n }\r\n &.right {\r\n color: ${styles.aelGreen};\r\n }\r\n }\r\n }\r\n\r\n .details-wrapper {\r\n color: ${styles.secondary};\r\n font-size: 35px;\r\n }\r\n\r\n .detail {\r\n padding: 10px;\r\n background: #3e3e3e;\r\n }\r\n`;\r\n\r\nconst VsCol = styled(Col)`\r\n display: flex;\r\n justify-content: center;\r\n font-size: 100px;\r\n\r\n p {\r\n text-shadow: none !important;\r\n }\r\n`;\r\n\r\nfunction HeadToHeadBody(props) {\r\n const { left, right } = props;\r\n\r\n const Details = ({left, right}) => {\r\n return (\r\n \r\n \r\n {\r\n props.stats.map(s => {\r\n return (\r\n \r\n \r\n

{left[s.key]}

\r\n \r\n \r\n { s.value }\r\n \r\n \r\n

{right[s.key]}

\r\n \r\n
\r\n );\r\n })\r\n }\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n { left.teamName }\r\n \r\n \r\n { right.teamName }\r\n \r\n \r\n \r\n \r\n \"team e.target.src = getTeamLogo('default')}\r\n />\r\n \r\n \r\n \r\n \r\n

VS

\r\n
\r\n \r\n \r\n \r\n \"team e.target.src = getTeamLogo('default')}\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nexport default HeadToHeadBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { Row, Col } from 'reactstrap';\r\n\r\nconst Wrapper = styled.div`\r\n text-transform: uppercase;\r\n font-family: 'agency_fb';\r\n width: ${props => props.rowWidth}px;\r\n margin-top: 35px;\r\n background: ${styles.pslColor};\r\n height: 180px;\r\n\r\n &.head-to-head-header-show {\r\n display: block;\r\n width: 0px;\r\n animation: headerSlideDown 0.5s ease 0.2s forwards;\r\n \r\n @keyframes headerSlideDown {\r\n from {width: 0px;}\r\n to {width: ${props => props.rowWidth}px;}\r\n }\r\n\r\n p {\r\n opacity: 0;\r\n animation: headerFadeIn 0.6s ease 0.6s forwards;\r\n \r\n @keyframes headerFadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n }\r\n\r\n &.head-to-head-header-hide {\r\n width: ${props => props.rowWidth}px;\r\n animation: headerSlideUp 0.5s ease 1s forwards;\r\n \r\n @keyframes headerSlideUp {\r\n from {width: ${props => props.rowWidth}px;}\r\n to {width: 0px;}\r\n }\r\n\r\n p {\r\n opacity: 1;\r\n animation: headerFadeOut 0.6s ease 0.6s forwards;\r\n \r\n @keyframes headerFadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n }\r\n\r\n p {\r\n padding: 0;\r\n margin: 0;\r\n }\r\n\r\n img {\r\n height: 250px;\r\n position: absolute;\r\n top: 0;\r\n z-index: 100;\r\n }\r\n\r\n .row {\r\n padding-top: 15px;\r\n padding-bottom: 15px;\r\n }\r\n\r\n .next-match {\r\n vertical-align: middle;\r\n font-size: 35px;\r\n letter-spacing: 8px;\r\n filter: drop-shadow(0px 0px 4px #00000040);\r\n line-height: 1;\r\n margin-left: 5px;\r\n }\r\n\r\n .next-map {\r\n vertical-align: middle;\r\n font-size: 130px;\r\n text-transform: uppercase;\r\n filter: drop-shadow(0px 0px 4px #00000080);\r\n line-height: 1;\r\n }\r\n`;\r\n\r\nfunction HeadToHeadHeader(props) {\r\n const { rowWidth, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n

Teams

\r\n

Head To head

\r\n \r\n
\r\n \r\n );\r\n}\r\n\r\nexport default HeadToHeadHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst height = 50;\r\n\r\nconst Wrapper = styled.div`\r\n width: ${ props => props.rowWidth / 3 }px;\r\n margin-left: ${ props => props.rowWidth / 3 }px;\r\n overflow: hidden;\r\n background: #3e3e3e;\r\n\r\n img {\r\n margin-top: 2px;\r\n height: 45px;\r\n }\r\n\r\n &.footer-show {\r\n height: 0;\r\n animation: open-footer .75s ease 1s forwards;\r\n\r\n @keyframes open-footer {\r\n from {height: 0;}\r\n to {height: ${height}px;}s\r\n }\r\n }\r\n\r\n &.footer-hide {\r\n height: ${height}px;\r\n animation: close-footer .75s ease-in 0s forwards;\r\n\r\n @keyframes close-footer {\r\n from {height: ${height}px;}\r\n to {height: 0px;}\r\n }\r\n }\r\n`;\r\n\r\nfunction PoweredByTwire(props) {\r\n const { rowWidth, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default PoweredByTwire;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport HeadToHeadBody from './HeadToHeadBody';\r\nimport HeadToHeadHeader from './HeadToHeadHeader';\r\nimport HeadToHeadFooter from './HeadToHeadFooter';\r\n\r\nconst width = 900;\r\nconst margins = 0;\r\n\r\nconst HeadToHeadWrapper = styled.div`\r\n width: ${props => props.rowWidth}px;\r\n overflow: hidden;\r\n\r\n &.head-to-head-show {\r\n display: block;\r\n height: 220px;\r\n animation: fadeIn 0.6s ease 0s forwards, slideDown 1s ease 0.7s forwards;\r\n \r\n @keyframes slideDown {\r\n from {height: 220px;}\r\n to {height: calc(100vh);}\r\n }\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {}\r\n }\r\n }\r\n\r\n &.head-to-head-hide {\r\n height: calc(100vh);\r\n animation: slideUp 1s ease 0s forwards, fadeOut 0.3s ease 1.5s forwards;\r\n \r\n @keyframes slideUp {\r\n from {height: calc(100vh);}\r\n to {height: 220px;}\r\n }\r\n \r\n @keyframes fadeOut {\r\n from {}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nclass HeadToHeadTeams extends Component {\r\n\r\n render() {\r\n const { loaded, left, right, opts, show } = this.props;\r\n\r\n if (!loaded) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default HeadToHeadTeams;\r\n","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst WIDTH = 1400;\r\nconst HORIZONTAL_SPACING = 10;\r\n\r\nconst HeadToHeadWrapper = styled.table`\r\n font-family: machine, noto-bold;\r\n font-size: 33px;\r\n\r\n border-collapse:separate;\r\n border-spacing: ${HORIZONTAL_SPACING}px;\r\n width: ${WIDTH}px;\r\n height: 1px;\r\n\r\n table {\r\n width: 100%;\r\n height: 100%;\r\n\r\n td:first-child, td:last-child {\r\n width: 25%;\r\n }\r\n }\r\n\r\n span {\r\n position: relative;\r\n }\r\n\r\n td { \r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n &.team-logo-td {\r\n background-image: url('/assets/img/pjc/head-to-head-background.png');\r\n background-attachment: fixed;\r\n background-position: 0px 0px;\r\n background-repeat: no-repeat;\r\n\r\n width: 25%;\r\n padding: 20px;\r\n height: 400px;\r\n\r\n img {\r\n height: 220px;\r\n }\r\n }\r\n }\r\n\r\n &.component-show {\r\n .team-logo-td {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease ${props => props.numOfStats * 0.2}s forwards;\r\n \r\n @keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.component-hide {\r\n .team-logo-td {\r\n opacity: 1;\r\n animation: fadeOut 0.6s ease 0s forwards;\r\n \r\n @keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n to {\r\n opacity: 0;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst StatsTd = styled.td`\r\n background-image: url('/assets/img/pjc/head-to-head-background.png');\r\n background-attachment: fixed;\r\n background-position: 0px 0px;\r\n background-repeat: no-repeat;\r\n\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease ${props => props.index/5}s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: -100px;\r\n animation: slideUp 0.3s ease ${props => props.index/5}s forwards;\r\n\r\n @keyframes slideUp {\r\n from {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n to {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.component-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.6s ease ${props => 1 - props.index/5 - 0.2}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n to {\r\n opacity: 0;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: 0px;\r\n animation: slideDown 0.3s ease ${props => 1 - props.index/5 - 0.2}s forwards;\r\n\r\n @keyframes slideDown {\r\n from {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n to {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nclass PjcTeamHeadToHead extends Component {\r\n\r\n render() {\r\n const { loaded, left, right, opts, show } = this.props;\r\n\r\n if (!loaded || !left || !right) return null;\r\n\r\n return (\r\n \r\n \r\n {\r\n (opts.stats || []).map((s, i) => {\r\n return (\r\n \r\n {\r\n i === 0 ?\r\n \r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n

{ left.teamName }

\r\n \r\n :\r\n null\r\n }\r\n \r\n \r\n \r\n \r\n \r\n { parseInt(left[s.key]) }\r\n \r\n \r\n { s.value }\r\n \r\n \r\n { parseInt(right[s.key]) }\r\n \r\n \r\n \r\n
\r\n \r\n {\r\n i === 0 ?\r\n \r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n

{ right.teamName }

\r\n \r\n :\r\n null\r\n }\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PjcTeamHeadToHead;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo, numberForDisplay } from '../../../../../../util/CommonUtil';\r\n\r\nconst WIDTH = 909;\r\nconst HEIGHT = 431;\r\n\r\nconst Wrapper = styled.div`\r\n .overlay {\r\n position: fixed;\r\n top: 568px;\r\n left: ${props => props.marginLeft}px;\r\n width: ${WIDTH}px;\r\n height: ${HEIGHT}px;\r\n\r\n display: flex;\r\n flex-wrap: wrap;\r\n \r\n font-family: noto-black;\r\n font-size: 48px;\r\n line-height: 48px;\r\n overflow: hidden;\r\n\r\n .small-font {\r\n font-size: 20px;\r\n line-height: 20px;\r\n margin-bottom: 0;\r\n\r\n span {\r\n border-bottom: 2px solid red;\r\n }\r\n }\r\n\r\n .left-side, .right-side {\r\n display: flex;\r\n flex-wrap: wrap;\r\n }\r\n\r\n .right-side {\r\n width: 524px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n\r\n >div.team-name {\r\n width: 100%;\r\n height: 175px;\r\n }\r\n\r\n >div {\r\n width: 50%;\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-items: center;\r\n\r\n p {\r\n width: 100%;\r\n }\r\n }\r\n\r\n .team-kills, .team-damage, .team-points {\r\n margin-bottom 45px;\r\n }\r\n }\r\n\r\n .left-side {\r\n width: 385px;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n\r\n background: url(/assets/img/pjc21/team-head-to-head-background.png);\r\n border-bottom: 2px solid red;\r\n\r\n &.bc-show {\r\n height: 0px;\r\n animation: slideUp 0.3s ease 0.1s forwards,\r\n fadeIn 0.1s ease 0s forwards;\r\n \r\n @keyframes slideUp {\r\n from {height: 0px;}\r\n to {height: ${HEIGHT}px;}\r\n }\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n \r\n &.bc-hide {\r\n height: ${HEIGHT}px;\r\n animation: slideDown 0.3s ease 0s forwards,\r\n fadeOut 0.1s ease 0.3s forwards;\r\n \r\n @keyframes slideDown {\r\n from {height: ${HEIGHT}px;}\r\n to {height: 0px;}\r\n }\r\n \r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst TEAM_NAME_MAP = {\r\n 'Zeta Division': 'ZETA DIVISION',\r\n 'Matsui Gaming Club': '松井GAMING CLUB'\r\n}\r\n\r\nfunction Team(props) {\r\n const { show, team, marginLeft, opts } = props;\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n
\r\n
\r\n
\r\n
\r\n

{ TEAM_NAME_MAP[team.teamName] || team.teamName }

\r\n
\r\n
\r\n

AVERAGE KILLS

\r\n

{ numberForDisplay(team.kills / (opts.selectedSpecificMatch ? 1 : opts.numberOfMatches)) }

\r\n
\r\n
\r\n

AVERAGE DAMAGE

\r\n

{ numberForDisplay(team.damageDealt / (opts.selectedSpecificMatch ? 1 : opts.numberOfMatches)) }

\r\n
\r\n
\r\n

POINT

\r\n

{ team.totalPoints || 0 }

\r\n
\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default Team;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport Team from './Team';\r\n\r\nconst HeadToHeadWrapper = styled.table`\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 1920px;\r\n height: 1080px;\r\n`;\r\n\r\nclass Pjc21TeamHeadToHead extends Component {\r\n\r\n render() {\r\n const { loaded, left, right, show } = this.props;\r\n\r\n if (!loaded || !left || !right) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Pjc21TeamHeadToHead;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst Wrapper = styled.div`\r\n font-size: 35px;\r\n\r\n table {\r\n border-collapse:separate;\r\n border-spacing: 0px 10px;\r\n }\r\n\r\n td {\r\n height: 65px;\r\n position: relative;\r\n\r\n img {\r\n height: 180px;\r\n \r\n &:first-child {\r\n z-index: -1;\r\n position: absolute;\r\n filter: blur(15px);\r\n }\r\n }\r\n }\r\n\r\n .stats-value {\r\n width: 100px;\r\n background: #ff8317;\r\n }\r\n\r\n .stats-name {\r\n padding: 0;\r\n width: 500px;\r\n\r\n div {\r\n background: #404040;\r\n position: relative;\r\n overflow: hidden;\r\n }\r\n }\r\n\r\n .stats {\r\n font-size: 50px;\r\n }\r\n`;\r\n\r\nconst TableRow = styled.tr`\r\n &.component-show {\r\n transform: rotate3d(1, 0, 0, 90deg);\r\n animation: \r\n rotateIn 0.5s ease ${props => ((props.rowNumber > 5 ? props.rowNumber - 5 : props.rowNumber)) * 0.3}s forwards,\r\n fadeIn 1s ease ${props => ((props.rowNumber > 5 ? props.rowNumber - 5 : props.rowNumber)) * 0.3}s forwards;\r\n\r\n .team-logo {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease ${props => (props.numberOfStats + 1) * 0.3}s forwards;\r\n }\r\n\r\n @keyframes rotateIn {\r\n from {transform: rotate3d(1, 0, 0, 90deg);}\r\n to {transform: rotate3d(1, 0, 0, 0deg);}\r\n }\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n animation: \r\n rotateOut 0.5s ease ${props => ((props.rowNumber > 5 ? props.rowNumber - 5 : props.rowNumber) + 1) * 0.3}s forwards,\r\n fadeOut 1s ease ${props => ((props.rowNumber > 5 ? props.rowNumber - 5 : props.rowNumber) + 1) * 0.3}s forwards;\r\n\r\n .team-logo {\r\n animation: fadeOut 0.3s ease 0s forwards;\r\n }\r\n\r\n @keyframes rotateOut {\r\n from {transform: rotate3d(1, 0, 0, 0deg);}\r\n to {transform: rotate3d(1, 0, 0, 90deg);}\r\n }\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nfunction HeadToHeadBody(props) {\r\n const { left, right, opts,show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {\r\n (opts.stats || []).map((s, i) => {\r\n return (\r\n \r\n {\r\n i === 0 ?\r\n \r\n :\r\n null\r\n }\r\n \r\n \r\n \r\n {\r\n i === 0 ?\r\n \r\n :\r\n null\r\n }\r\n \r\n );\r\n })\r\n }\r\n \r\n
\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n

{ left.teamName }

\r\n
{ parseInt(left[s.key]) }\r\n
\r\n { s.value }\r\n
\r\n
{ parseInt(right[s.key]) }\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n

{ right.teamName }

\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default HeadToHeadBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n &.component-show {\r\n animation: fadeIn 0.3s ease 0s forwards;\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n animation: fadeOut 0.3s ease ${props => (props.numberOfStats + 1) * 0.3}s forwards;\r\n \r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nfunction HeadToHeadHeader(props) {\r\n const { show, numberOfStats } = props;\r\n\r\n return (\r\n \r\n \r\n

Team Head To Head

\r\n \r\n \r\n );\r\n}\r\n\r\nexport default HeadToHeadHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease ${props => (props.numberOfStats + 2) * 0.3}s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n animation: fadeOut 0.3s ease ${props => (props.numberOfStats + 2) * 0.3}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nfunction HeadToHeadFooter(props) {\r\n const { show, numberOfStats } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default HeadToHeadFooter;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport HeadToHeadBody from './HeadToHeadBody';\r\nimport HeadToHeadHeader from './HeadToHeadHeader';\r\nimport HeadToHeadFooter from './HeadToHeadFooter';\r\n\r\nconst HeadToHeadWrapper = styled.table`\r\n font-family: 'agency_fb';\r\n text-align: center; \r\n vertical-align: middle;\r\n text-transform: uppercase;\r\n border-collapse:separate;\r\n border-spacing: 10px 10px;\r\n\r\n h1 {\r\n font-size: 70px;\r\n }\r\n`;\r\n\r\nclass RyerHeadToHeadTeams extends Component {\r\n\r\n render() {\r\n const { loaded, left, right, opts, show } = this.props;\r\n\r\n if (!loaded || !left || !right) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default RyerHeadToHeadTeams;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport Default from './default/TwireHeadToHeadTeams';\r\nimport PSL from './psl/PslHeadToHeadTeams';\r\nimport PJC from './pjc/PjcTeamHeadToHead';\r\nimport PJC21 from '../../teamHeadToHead/overlay/pjc21/Pjc21TeamHeadToHead';\r\nimport RYER from './ryer/RyerHeadToHeadTeams';\r\n\r\nconst PUBGTeamHeadToHeadOverlay = (props) => {\r\n const { shard, overlayDesign } = props;\r\n\r\n return (\r\n overlayDesign === 'psl' || shard.includes('psl') ? \r\n \r\n :\r\n shard.includes('ryer') ? \r\n \r\n :\r\n overlayDesign === 'pjc' ? \r\n \r\n :\r\n overlayDesign === 'pjc21' ?\r\n \r\n :\r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n left: state.overlay.left ? state.overlay.left.pubg : {},\r\n right: state.overlay.right ? state.overlay.right.pubg : {},\r\n overlayDesign: (state.overlay.tournament || {}).overlayDesign,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n loaded: state.overlay.loaded,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PUBGTeamHeadToHeadOverlay);","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport StatisticsSelect from '../../../common/base/controller/inputs/StatisticsSelect';\r\nimport { PUBG_GAME } from '../../../../../util/Games';\r\nimport MatchSelect from '../../../common/base/controller/inputs/MatchSelect';\r\n\r\nclass PUBGPlayerLeaderboardController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PUBGPlayerLeaderboardController;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst margin = 0;\r\n\r\nconst Wrapper = styled.div`\r\n overflow: hidden;\r\n width: ${props => props.backgroundWidth - margin}px;\r\n &.header-show {\r\n width: 0;\r\n animation: open 0.5s ease 0s forwards;\r\n \r\n @keyframes open {\r\n from {width: 0;}\r\n to {width: ${props => props.backgroundWidth - margin}px;}\r\n }\r\n }\r\n\r\n &.header-hide {\r\n width: ${props => props.backgroundWidth - margin}px;\r\n animation: close 0.5s ease 2s forwards;\r\n \r\n @keyframes close {\r\n from {width: ${props => props.backgroundWidth - margin}px;}\r\n to {width: 0;}\r\n }\r\n }\r\n\r\n &.no-animation {\r\n width: ${props => props.backgroundWidth - margin}px;\r\n }\r\n\r\n background: ${props => styles[props.shard + 'Color'] ? styles[props.shard + 'Color'] : styles.primaryLight};\r\n border-top-left-radius: 25px;\r\n border-top-right-radius: 25px;\r\n\r\n h2 {\r\n margin-top: 5px;\r\n text-transform: uppercase;\r\n color: #FFF;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n const { backgroundWidth, show, shard, exportAsImage } = props;\r\n\r\n return (\r\n \r\n

{props.title}

\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { TWIRE_ASSETS_URL } from '../../../../../../util/Constants';\r\nimport { getTeamLogo, numberToPlacementSurfix } from '../../../../../../util/CommonUtil';\r\n\r\nconst teamLogoSize = 220;\r\nconst padding = 50;\r\nconst height = 392;\r\n\r\nconst Wrapper = styled.div`\r\n width: ${props => props.backgroundWidth}px;\r\n margin-right: ${props => props.margin}px;\r\n float: left;\r\n overflow: hidden;\r\n\r\n &.player-show {\r\n height: 0;\r\n animation: open-player .75s ease ${props => props.delayShow * 0.3 + 0.2}s forwards;\r\n\r\n @keyframes open-player {\r\n from {height: 0;}\r\n to {height: ${height}px;}\r\n }\r\n }\r\n\r\n &.player-hide {\r\n height: ${height}px;\r\n animation: close-player .75s ease ${props => props.delayHide * 0.3 + 0.8}s forwards;\r\n\r\n @keyframes close-player {\r\n from {height: ${height}px;}\r\n to {height: 0px;}\r\n }\r\n }\r\n\r\n &.no-animation {\r\n height: ${height}px;\r\n }\r\n`;\r\n\r\nconst PlayerRow = styled(Row)`\r\n font-size: 25px;\r\n line-height: 30px;\r\n background: ${styles.tertiary};\r\n font-weight: 600;\r\n color: ${styles.secondary};\r\n border-top: 1px solid ${props => styles[props.shard + 'Color'] ? styles[props.shard + 'Color'] : styles.primary};\r\n padding: 15px;\r\n\r\n .player-name {\r\n text-overflow: ellipsis;\r\n overflow: hidden; \r\n white-space: nowrap;\r\n }\r\n`;\r\n\r\nconst ScoreRow = styled(Row)`\r\n height: ${teamLogoSize + padding}px;\r\n font-size: 75px;\r\n line-height: ${teamLogoSize + padding}px;\r\n background: ${styles.tertiary};\r\n font-weight: 600;\r\n color: ${styles.secondary};\r\n\r\n img {\r\n height: ${teamLogoSize}px;\r\n position: absolute;\r\n left: ${props => (props.backgroundWidth - teamLogoSize) / 2}px;\r\n top: ${padding / 2}px;\r\n transform: rotate(30deg);\r\n opacity: 0.3;\r\n z-index: 5;\r\n }\r\n\r\n span {\r\n position: relative;\r\n z-index: 10;\r\n }\r\n`;\r\n\r\nfunction LeaderboardPlayer(props) {\r\n const { rank, player, stat, backgroundWidth, numOfPlayers, show, shard, exportAsImage } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n {rank + numberToPlacementSurfix(rank)}\r\n \r\n \r\n \r\n \r\n e.target.src = TWIRE_ASSETS_URL + \"pubg/team-logos/default.png\"}\r\n />\r\n {player[stat]}\r\n \r\n \r\n \r\n \r\n {player.ign.toUpperCase()}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardPlayer;","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst height = 50;\r\n\r\nconst Wrapper = styled.div`\r\n width: ${props => props.backgroundWidth}px;\r\n overflow: hidden;\r\n &.footer-show {\r\n height: 0;\r\n animation: open-footer .75s ease 1.8s forwards;\r\n\r\n @keyframes open-footer {\r\n from {height: 0;}\r\n to {height: ${height}px;}\r\n }\r\n }\r\n\r\n &.footer-hide {\r\n height: ${height}px;\r\n animation: close-footer .75s ease 0s forwards;\r\n\r\n @keyframes close-footer {\r\n from {height: ${height}px;}\r\n to {height: 0px;}\r\n }\r\n }\r\n\r\n &.no-animation {\r\n height: ${height}px;\r\n }\r\n`;\r\n\r\nconst Content = styled(Col)`\r\n background: ${styles.tertiary};\r\n border-bottom-left-radius: 25px;\r\n border-bottom-right-radius: 25px;\r\n padding: 5px 0;\r\n\r\n img {\r\n height: 38px;\r\n }\r\n`;\r\n\r\nfunction PoweredByTwire(props) {\r\n const { backgroundWidth, show, exportAsImage } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \"twire\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default PoweredByTwire;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardPlayer from './LeaderboardPlayer';\r\nimport LeaderboardFooter from './LeaderboardFooter';\r\n\r\nconst playerWidth = 300;\r\nconst playerMargin = 0;\r\n\r\nconst LeaderboardWrapper = styled.div`\r\n margin: 15px 30px;\r\n width: ${props => props.backgroundWidth}px;\r\n font-family: 'muli';\r\n`;\r\n\r\nclass TwirePlayerLeaderBoard extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.numOfPlayers = 5;\r\n }\r\n\r\n render() {\r\n const { loaded, leaderboard, show, shard, opts, exportAsImage } = this.props;\r\n const stat = opts.stats ? opts.stats[0] : {};\r\n const topPlayers = leaderboard.slice(0, this.numOfPlayers);\r\n const width = playerWidth * topPlayers.length + playerMargin * (topPlayers.length - 1);\r\n\r\n return (\r\n loaded && topPlayers.length ?\r\n \r\n \r\n {\r\n topPlayers.map((p, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default TwirePlayerLeaderBoard;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst IMAGE_WRAPPER_WIDTH = 230;\r\n\r\nconst TitleWrapper = styled.div`\r\n text-transform: uppercase;\r\n width: ${props => props.headerWidth}px;\r\n margin-left: ${props => (props.rowWidth - props.headerWidth) / 2}px;\r\n margin-top: 35px;\r\n margin-bottom: 35px !important;\r\n background: ${styles.pslColor};\r\n height: 180px;\r\n\r\n p {\r\n padding: 0;\r\n margin: 0;\r\n }\r\n\r\n &.title-header-show {\r\n display: block;\r\n width: 0px;\r\n animation: headerSlideDown 0.5s ease 0.2s forwards;\r\n\r\n @keyframes headerSlideDown {\r\n from {width: 0px;}\r\n to {width: ${props => props.headerWidth}px;}\r\n }\r\n\r\n p {\r\n opacity: 0;\r\n animation: headerFadeIn 0.6s ease 0.7s forwards;\r\n\r\n @keyframes headerFadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n img {\r\n opacity: 0;\r\n animation: headerFadeInImg 0.3s ease 0s forwards;\r\n\r\n @keyframes headerFadeInImg {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n }\r\n\r\n &.title-header-hide {\r\n width: ${props => props.headerWidth}px;\r\n animation: headerSlideUp 0.5s ease 2.7s forwards;\r\n\r\n @keyframes headerSlideUp {\r\n from {width: ${props => props.headerWidth}px;}\r\n to {width: 0px;}\r\n }\r\n\r\n p {\r\n opacity: 1;\r\n animation: headerFadeOut 0.6s ease 2.2s forwards;\r\n\r\n @keyframes headerFadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n img {\r\n opacity: 1;\r\n animation: headerFadeOutImg 0.3s ease 3s forwards;\r\n\r\n @keyframes headerFadeOutImg {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n }\r\n\r\n img {\r\n height: 250px;\r\n position: absolute;\r\n top: 0px;\r\n }\r\n\r\n .image-wrapper {\r\n max-width: ${IMAGE_WRAPPER_WIDTH}px !important;\r\n width: ${IMAGE_WRAPPER_WIDTH}px !important;\r\n }\r\n\r\n .title-wrapper {\r\n width: ${props => props.headerWidth - IMAGE_WRAPPER_WIDTH}px !important;\r\n max-width: ${props => props.headerWidth - IMAGE_WRAPPER_WIDTH}px !important;\r\n }\r\n\r\n .image-wrapper, .title-wrapper {\r\n float: left;\r\n height: 180px;\r\n padding-top: 15px;\r\n padding-bottom: 15px;\r\n }\r\n\r\n .subtitle {\r\n vertical-align: middle;\r\n font-size: 35px;\r\n letter-spacing: 8px;\r\n filter: drop-shadow(0px 0px 4px #00000040);\r\n line-height: 1;\r\n margin-left: 5px;\r\n }\r\n\r\n .title {\r\n vertical-align: middle;\r\n font-size: 130px;\r\n text-transform: uppercase;\r\n filter: drop-shadow(0px 0px 4px #00000080);\r\n line-height: 1;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n const { rowWidth, headerWidth, show } = props;\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n

{props.groupName && props.groupName !== 'undefined' ? props.groupName : 'Lower Bracket'}

\r\n

Top Kills & Damage

\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst height = 450;\r\n\r\nconst Wrapper = styled.div`\r\n width: ${props => props.rowWidth}px;\r\n margin-right: ${props => props.margin}px;\r\n float: left;\r\n overflow: hidden;\r\n\r\n &.player-show {\r\n height: 0;\r\n animation: open-player .75s ease ${ props => props.delayShow * 0.3 + 0.5 }s forwards;\r\n\r\n @keyframes open-player {\r\n from {height: 0;}\r\n to {height: ${height}px;}\r\n }\r\n }\r\n\r\n &.player-hide {\r\n height: ${height}px;\r\n animation: close-player .75s ease ${ props => props.delayHide * 0.3 + 0.8 }s forwards;\r\n\r\n @keyframes close-player {\r\n from {height: ${height}px;}\r\n to {height: 0px;}\r\n }\r\n }\r\n`;\r\n\r\nconst PlayerRow = styled(Row)`\r\n margin-top: 5px;\r\n font-size: ${props => props.fontSize}px;\r\n line-height: ${props => props.fontSize}px;\r\n background: #3e3e3e;\r\n font-weight: 600;\r\n color: ${props => props.color ? props.color : styles.secondary};\r\n padding: 10px;\r\n`;\r\n\r\nconst ScoreRow = styled(Row)`\r\n padding: 10px;\r\n height: ${props => props.fontSize + 20}px;\r\n font-size: ${props => props.fontSize}px;\r\n line-height: ${props => props.fontSize}px;\r\n background: #3e3e3e;\r\n font-weight: 600;\r\n color: ${props => props.color ? props.color : styles.secondary};\r\n overflow: hidden;\r\n\r\n img {\r\n height: 200px;\r\n position: absolute;\r\n left: ${props => (props.rowWidth - 200) / 2}px;\r\n top: -35px;\r\n opacity: 0.2;\r\n z-index: 5;\r\n }\r\n\r\n span {\r\n position: relative;\r\n z-index: 10;\r\n\r\n span {\r\n font-size: 50px;\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardPlayer(props) {\r\n const { rank, player, rowWidth, margin, numOfPlayers, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n {rank}.\r\n \r\n \r\n \r\n \r\n { player.ign.toUpperCase() }\r\n \r\n \r\n \r\n \r\n e.target.src = getTeamLogo('default')}\r\n className=\"mr-3\"\r\n />\r\n { player.kills } K\r\n \r\n \r\n \r\n \r\n { parseInt(player.damageDealt) } D\r\n \r\n \r\n \r\n \r\n { parseInt(player.damageDealt / player.kills) } D/K\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardPlayer;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst height = 50;\r\n\r\nconst Wrapper = styled.div`\r\n width: ${ props => props.rowWidth / 5 }px;\r\n margin-left: ${ props => 2 * props.rowWidth / 5 }px;\r\n overflow: hidden;\r\n background: #3e3e3e;\r\n\r\n img {\r\n margin-top: 2px;\r\n height: 45px;\r\n }\r\n\r\n &.footer-show {\r\n height: 0;\r\n animation: open-footer .75s ease 2.6s forwards;\r\n\r\n @keyframes open-footer {\r\n from {height: 0;}\r\n to {height: ${height}px;}s\r\n }\r\n }\r\n\r\n &.footer-hide {\r\n height: ${height}px;\r\n animation: close-footer .75s ease-in 0s forwards;\r\n\r\n @keyframes close-footer {\r\n from {height: ${height}px;}\r\n to {height: 0px;}\r\n }\r\n }\r\n`;\r\n\r\nfunction PoweredByTwire(props) {\r\n const { rowWidth, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default PoweredByTwire;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardPlayer from './LeaderboardPlayer';\r\nimport LeaderboardFooter from './LeaderboardFooter';\r\n\r\nconst playerWidth = 350;\r\nconst playerMargin = 10;\r\n\r\nconst LeaderboardWrapper = styled.div`\r\n margin: 15px 30px;\r\n width: ${props => props.rowWidth}px;\r\n font-family: 'agency_fb';\r\n`;\r\n\r\nclass PslPlayerLeaderBoard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, opts } = this.props;\r\n\r\n if (!loaded) return null;\r\n\r\n const stat = opts.stats ? opts.stats[0] : {};\r\n const topPlayers = leaderboard.slice(0, 5);\r\n const width = playerWidth * topPlayers.length + playerMargin * (topPlayers.length - 1);\r\n\r\n return (\r\n topPlayers.length ?\r\n \r\n \r\n {\r\n topPlayers.map((p, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default PslPlayerLeaderBoard;\r\n","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport { getPlayerImage, getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst WIDTH = 1800;\r\nconst HORIZONTAL_SPACING = 5;\r\n\r\nconst LeaderboardWrapper = styled.table`\r\n font-family: machine;\r\n font-size: 35px;\r\n\r\n border-collapse:separate; \r\n border-spacing: ${HORIZONTAL_SPACING}px;\r\n width: ${WIDTH}px;\r\n\r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n h1 {\r\n font-size: 75px;\r\n }\r\n\r\n p {\r\n margin: 0;\r\n padding: 0;\r\n font-size: 50px;\r\n position: relative;\r\n }\r\n\r\n td {\r\n background-image: url('/assets/img/pjc/player-leaderboard-background.png');\r\n background-attachment: fixed;\r\n background-position: 0px 0px;\r\n background-repeat: no-repeat;\r\n overflow: hidden;\r\n }\r\n\r\n tr:first-child td {\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease 0s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: -100px;\r\n animation: slideUp 0.3s ease 0s forwards;\r\n\r\n @keyframes slideUp {\r\n from {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n to {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.component-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.6s ease ${5 * 0.2}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n to {\r\n opacity: 0;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: 0px;\r\n animation: slideDown 0.3s ease ${5 * 0.2}s forwards;\r\n\r\n @keyframes slideDown {\r\n from {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n to {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst StyledTd = styled.td`\r\n span {\r\n position: relative;\r\n }\r\n\r\n .images {\r\n padding: 20px;\r\n height: 220px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n position: relative;\r\n\r\n .player-image {\r\n height: 220px;\r\n }\r\n\r\n .team-image {\r\n position: absolute;\r\n bottom: -20px;\r\n right: 50px;\r\n height: 100px;\r\n }\r\n }\r\n\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease ${props => props.index/5 + 0.2}s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: -100px;\r\n animation: slideUp 0.3s ease ${props => props.index/5 + 0.2}s forwards;\r\n\r\n @keyframes slideUp {\r\n from {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n to {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.component-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.6s ease ${props => 1 - props.index/5 - 0.2}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n to {\r\n opacity: 0;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: 0px;\r\n animation: slideDown 0.3s ease ${props => 1 - props.index/5 - 0.2}s forwards;\r\n\r\n @keyframes slideDown {\r\n from {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n to {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nclass PjcPlayerLeaderBoard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, opts, exportOverlay } = this.props;\r\n\r\n if (!loaded) return null;\r\n\r\n const stat = opts.stats ? opts.stats[0] : {};\r\n const topPlayers = leaderboard.slice(0, 5);\r\n\r\n return (\r\n topPlayers.length ?\r\n \r\n \r\n \r\n \r\n

{ stat.value }

\r\n \r\n \r\n \r\n {\r\n topPlayers.map((p, i) => {\r\n return (\r\n \r\n { i+1 }.\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n {\r\n topPlayers.map((p, i) => {\r\n return (\r\n \r\n
\r\n e.target.src = getPlayerImage('default')}\r\n alt=\"player\"\r\n />\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team-logo\"\r\n />\r\n
\r\n

{ p[stat.key] }

\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n {\r\n topPlayers.map((p, i) => {\r\n return (\r\n \r\n { p.ign.replace(new RegExp(`${p.teamInitial}_`, 'ig'), '').toUpperCase() }\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default PjcPlayerLeaderBoard;\r\n","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport { getPlayerImage } from '../../../../../../util/CommonUtil';\r\nimport moment from 'moment';\r\n\r\nconst PLAYER_CARD_WIDTH = 344;\r\nconst PLAYER_CARD_HEIGHT = 435;\r\n\r\nconst Wrapper = styled.div`\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 1920px;\r\n height: 1080px;\r\n\r\n .overlay {\r\n width: 100%;\r\n height: ${PLAYER_CARD_HEIGHT}px;\r\n padding: 0 72px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-items: end;\r\n justify-content: space-around;\r\n \r\n position: fixed;\r\n top: 263px;\r\n \r\n font-family: machine;\r\n\r\n .player-card {\r\n width: ${PLAYER_CARD_WIDTH}px;\r\n background: url(/assets/img/pjc21/player-leaderboard-background.png);\r\n\r\n img {\r\n position: absolute;\r\n width: ${PLAYER_CARD_WIDTH}px;\r\n bottom: 0;\r\n }\r\n\r\n .fade {\r\n position: absolute;\r\n width: ${PLAYER_CARD_WIDTH}px;\r\n bottom: 0;\r\n height: 250px;\r\n z-index: 5;\r\n background: linear-gradient(0deg, rgba(0,0,0,1) 0%, rgba(0,0,0,0) 100%);\r\n }\r\n }\r\n\r\n .player-wrapper {\r\n position: relative;\r\n z-index: 10;\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-items: stretch;\r\n\r\n >div {\r\n height: ${PLAYER_CARD_HEIGHT/2}px;\r\n }\r\n\r\n div {\r\n width: 100%;\r\n }\r\n\r\n .player-rank {\r\n font-size: 105px;\r\n line-height: 120px;\r\n padding-left: 20px;\r\n }\r\n\r\n .player-info {\r\n padding-left: 20px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-items: end;\r\n\r\n .player-stats {\r\n height: 78px;\r\n font-size: 78px;\r\n line-height: 78px;\r\n margin-bottom: 20px;\r\n\r\n .stat {\r\n border-bottom: 2px solid #ff0000;\r\n }\r\n\r\n .stat-name {\r\n font-size: 42px;\r\n line-height: 42px;\r\n }\r\n }\r\n\r\n .player-name {\r\n font-family: noto-black;\r\n height: 38px;\r\n font-size: 38px;\r\n line-height: 38px;\r\n margin-bottom: 20px;\r\n overflow-x: clip;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n\r\n span {\r\n vertical-align: text-top;\r\n }\r\n }\r\n }\r\n }\r\n \r\n &.bc-show .player-card {\r\n height: 0px;\r\n animation: slideUp 0.3s ease 0s forwards;\r\n \r\n @keyframes slideUp {\r\n from {height: 0px;}\r\n to {height: ${PLAYER_CARD_HEIGHT}px;}\r\n }\r\n\r\n .player-wrapper, img, .fade {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease 0.4s forwards;\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n }\r\n \r\n &.bc-hide .player-card {\r\n height: ${PLAYER_CARD_HEIGHT}px;\r\n animation: slideDown 0.3s ease 0.3s forwards;\r\n \r\n @keyframes slideDown {\r\n from {height: ${PLAYER_CARD_HEIGHT}px;}\r\n to {height: 0px;}\r\n }\r\n\r\n .player-wrapper, img, .fade {\r\n opacity: 1;\r\n animation: fadeOut 0.3s ease 0s forwards;\r\n \r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst STATS_NAME_MAP = {\r\n kills: 'kills',\r\n damageDealt: 'damage',\r\n damageTaken: 'dmg taken',\r\n revives: 'revives',\r\n longestKill: 'long. kill',\r\n avgTimeSurvived: 'avg time',\r\n timeSurvived: 'time sur.',\r\n heals: 'heals',\r\n flashbangThrow: 'flashbangs',\r\n grenadeThrow: 'grenades',\r\n smokebombThrow: 'smokes',\r\n molotovThrow: 'molotovs',\r\n headshotKills: 'hs kills',\r\n}\r\n\r\nclass Pjc21PlayerLeaderBoard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, opts } = this.props;\r\n\r\n if (!loaded) return null;\r\n\r\n const stat = opts.stats ? opts.stats[0] : {};\r\n const topPlayers = leaderboard.slice(0, 5);\r\n console.log(stat)\r\n\r\n return (\r\n topPlayers.length ?\r\n \r\n
\r\n {\r\n topPlayers.map((p, i) => {\r\n return (\r\n \r\n e.target.src = '/assets/img/pjc21/player-leaderboard-default.png'}\r\n alt=\"player\"\r\n />\r\n
\r\n
\r\n
{ i + 1 }
\r\n
\r\n
\r\n
\r\n { \r\n stat.key === 'avgTimeSurvived' || stat.key === 'timeSurvived' ?\r\n moment().startOf('day')\r\n .seconds(p[stat.key])\r\n .format('mm:ss')\r\n :\r\n Math.round(p[stat.key])\r\n }{ STATS_NAME_MAP[stat.key] || stat.value }\r\n
\r\n
\r\n { p.ign.split(\"_\").slice(1).join(\"_\") }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n })\r\n }\r\n
\r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default Pjc21PlayerLeaderBoard;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst Wrapper = styled.div`\r\n font-size: 35px;\r\n .team-logo-main {\r\n height: 400px;\r\n\r\n img {\r\n height: 220px;\r\n }\r\n }\r\n\r\n &.component-show table tbody {\r\n .team-logo-main, .stats {\r\n transform: rotate3d(1, 0, 0, 90deg);\r\n animation: \r\n rotateIn 0.5s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards,\r\n fadeIn 1s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards;\r\n }\r\n\r\n tr:nth-child(2) {\r\n transform: rotate3d(1, 0, 0, 90deg);\r\n animation: \r\n rotateIn 0.5s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards,\r\n fadeIn 1s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards;\r\n }\r\n\r\n @keyframes rotateIn {\r\n from {transform: rotate3d(1, 0, 0, 90deg);}\r\n to {transform: rotate3d(1, 0, 0, 0deg);}\r\n }\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide table tbody {\r\n .team-logo-main, .stats {\r\n animation: \r\n rotateOut 0.5s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards,\r\n fadeOut 1s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards;\r\n }\r\n\r\n tr:nth-child(2) {\r\n transform: rotate3d(1, 0, 0, 0deg);\r\n animation: \r\n rotateOut 0.5s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards,\r\n fadeOut 1s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards;\r\n }\r\n\r\n @keyframes rotateOut {\r\n from {transform: rotate3d(1, 0, 0, 0deg);}\r\n to {transform: rotate3d(1, 0, 0, 90deg);}\r\n }\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n td {\r\n height: 65px;\r\n }\r\n\r\n .rank {\r\n width: 65px;\r\n background: #ff8317;\r\n }\r\n\r\n .team-logo {\r\n padding: 0;\r\n width: 315px;\r\n\r\n div {\r\n background: #404040;\r\n padding-right: 15px;\r\n padding-left: 80px;\r\n position: relative;\r\n overflow: hidden;\r\n \r\n img {\r\n height: 70px;\r\n position: absolute;\r\n top: -10px;\r\n left: 10px;\r\n transform: rotate(30deg);\r\n \r\n &:first-child {\r\n filter: blur(15px);\r\n }\r\n }\r\n }\r\n }\r\n\r\n .stats {\r\n font-size: 50px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardPlayer(props) {\r\n const { player, rank, stat, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n
{ rank }\r\n
\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n \"team e.target.src = getTeamLogo('default')}\r\n />\r\n { player.ign }\r\n
\r\n
\r\n
{ player[stat.key] }
\r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardPlayer;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardPlayer from './LeaderboardPlayer';\r\n\r\nconst PLAYER_STATISTICS = {\r\n kills: 'Top Kills',\r\n assists: 'Top Assists',\r\n damageDealt: 'Top Damage',\r\n damageTaken: 'Top Damage Taken',\r\n knocks: 'Knock Stats',\r\n revives: 'Revive Stats',\r\n headshotKills: 'Headshot Kills',\r\n stolenKills: 'Stolen Kills',\r\n killsStolenFromPlayer: 'Kills Lost',\r\n swimDistance: 'Swim Distance',\r\n walkDistance: 'Walk Distance',\r\n rideDistance: 'Ride Distance',\r\n longestKill: 'Longest Kill',\r\n timeSurvived: 'Time Survived',\r\n killStreaks: 'Kill Streaks',\r\n heals: 'Heal Stats',\r\n boosts: 'Boost Stats',\r\n vehicleDestroyed: 'Vehicles Destroyed',\r\n deaths: 'Deaths Stats',\r\n}\r\n\r\nconst LeaderboardWrapper = styled.table`\r\n font-family: 'agency_fb';\r\n text-align: center; \r\n vertical-align: middle;\r\n text-transform: uppercase;\r\n border-collapse:separate;\r\n border-spacing: 10px 10px;\r\n\r\n h1 {\r\n font-size: 70px;\r\n }\r\n\r\n &.component-show {\r\n .header, .footer {\r\n animation: fadeIn 0.3s ease 0s forwards;\r\n }\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n .header, .footer {\r\n animation: fadeOut 0.3s ease 0s forwards;\r\n }\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nclass RyerPlayerLeaderBoard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, opts } = this.props;\r\n\r\n if (!loaded) return null;\r\n\r\n const stat = opts.stats ? opts.stats[0] : {};\r\n const topPlayers = leaderboard.slice(0, 5);\r\n\r\n return (\r\n topPlayers.length ?\r\n \r\n \r\n \r\n \r\n

{ PLAYER_STATISTICS[stat.key] }

\r\n \r\n \r\n \r\n {\r\n topPlayers.map((p, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default RyerPlayerLeaderBoard;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport Default from './default/TwirePlayerLeaderboard';\r\nimport PSL from './psl/PslPlayerLeaderboard';\r\nimport PJC from './pjc/PjcPlayerLeaderboard';\r\nimport PJC21 from './pjc21/Pjc21PlayerLeaderboard';\r\nimport RYER from './ryer/RyerPlayerLeaderboard';\r\n\r\nconst PUBGPlayerLeaderboardOverlay = (props) => {\r\n const { shard, overlayDesign } = props;\r\n\r\n return (\r\n shard.includes('psl') || overlayDesign === 'psl' ? \r\n \r\n :\r\n shard.includes('ryer') ? \r\n \r\n :\r\n overlayDesign === 'pjc' ? \r\n \r\n :\r\n overlayDesign === 'pjc21' ? \r\n \r\n :\r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n leaderboard: state.overlay.pubg || [],\r\n overlayDesign: (state.overlay.tournament || {}).overlayDesign,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n loaded: state.overlay.loaded,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PUBGPlayerLeaderboardOverlay);","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport MatchSelect from '../../../common/base/controller/inputs/MatchSelect';\r\nimport { PUBG_GAME } from '../../../../../util/Games';\r\n\r\nclass PUBGTeamLeaderboardController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PUBGTeamLeaderboardController;\r\n","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst StyledHeaderCol = styled.div`\r\n width: 760px;\r\n background: ${props => styles[props.shard + 'Color'] ? styles[props.shard + 'Color'] : styles.primaryLight};\r\n padding: 5px 25px;\r\n color: #FFF;\r\n border-top-${props => props.radius}-radius: 25px;\r\n\r\n span {\r\n font-size: 20px;\r\n font-weight: 600;\r\n line-height: 40px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n const HeaderCol = ({ radius }) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n #\r\n \r\n \r\n \r\n \r\n TEAM\r\n \r\n \r\n \r\n \r\n KILLS\r\n \r\n \r\n TOTAL\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst StyledTeamCol = styled.div`\r\n width: 760px;\r\n padding: 0 15px;\r\n color: #FFFFFF;\r\n\r\n img {\r\n height: 40px;\r\n }\r\n`;\r\n\r\nconst StyledTeamRow = styled(Row)`\r\n background: ${styles.tertiary};\r\n padding: ${props => props.numberOfTeams > 20 ? '5px 5px' : '10px 10px'};\r\n border-top-${props => props.radius}-radius: 25px;\r\n border-bottom-${props => props.radius}-radius: 25px;\r\n\r\n span {\r\n text-transform: uppercase;\r\n line-height: 40px;\r\n font-size: 20px;\r\n font-weight: 600;\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { leaderboard } = props;\r\n if (leaderboard.length % 2 !== 0) leaderboard.push({ team: '-', kills: '-', points: '' });\r\n const numberOfHalfTeams = leaderboard.length/2;\r\n const firstHalfTeams = leaderboard.slice(0, numberOfHalfTeams);\r\n const secondHalfTeams = leaderboard.slice(numberOfHalfTeams, leaderboard.length);\r\n\r\n const TeamCol = (team, rank, radius) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {rank}\r\n \r\n \r\n \"team e.target.src = getTeamLogo('default')}\r\n />\r\n \r\n \r\n \r\n \r\n {team.name}\r\n \r\n \r\n \r\n \r\n {team.totalKills < 0 ? 0 : team.totalKills}\r\n \r\n \r\n {team.totalPoints}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {\r\n firstHalfTeams.map((team, i) => {\r\n return team.name ? TeamCol(team, i + 1) : null;\r\n })\r\n }\r\n \r\n \r\n {\r\n secondHalfTeams.map((team, i) => {\r\n return team.name ? TeamCol(team, i + numberOfHalfTeams + 1) : null;\r\n })\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst StyledLogoCol = styled(Col)`\r\n margin: 0px 20px 0 calc(41.666666% - 10px);\r\n background: ${styles.tertiary};\r\n border-bottom-left-radius: 25px;\r\n border-bottom-right-radius: 25px;\r\n\r\n img {\r\n height: 45px;\r\n margin-bottom: 5px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardFooter(props) {\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardFooter;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardFooter from './LeaderboardFooter';\r\n\r\nconst LeaderboardWrapper = styled.div`\r\n width: 1600px;\r\n padding: 15px;\r\n overflow: hidden;\r\n font-family: 'muli';\r\n\r\n &.leaderboard-show {\r\n display: block;\r\n height: 0;\r\n animation: fadeIn 0.6s ease 0s forwards, slideDown 1s ease 0.3s forwards;\r\n \r\n @keyframes slideDown {\r\n from {height: 0;}\r\n to {height: ${props => props.height}px;}\r\n }\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {}\r\n }\r\n }\r\n\r\n &.leaderboard-hide {\r\n height: ${props => props.height}px;\r\n animation: slideUp 1s ease 0s forwards, fadeOut 0.3s ease .8s forwards;\r\n \r\n @keyframes slideUp {\r\n from {height: ${props => props.height}px;}\r\n to {height: 0;}\r\n }\r\n \r\n @keyframes fadeOut {\r\n from {}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n &.no-animation {\r\n height: ${props => props.height}px;\r\n }\r\n`;\r\n\r\nclass TwireTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, shard, exportAsImage } = this.props;\r\n\r\n return (\r\n loaded ?\r\n \r\n \r\n \r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default TwireTeamLeaderboard;\r\n","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst TitleWrapper = styled.div`\r\n font-family: 'agency_fb';\r\n text-transform: uppercase;\r\n width: ${ props => props.rowWidth / 2 }px;\r\n margin-left: ${ props => props.rowWidth / 4 }px;\r\n margin-top: 35px;\r\n margin-bottom: 35px !important;\r\n background: ${ styles.pslColor };\r\n height: 180px;\r\n\r\n p {\r\n padding: 0;\r\n margin: 0;\r\n }\r\n\r\n &.title-header-show {\r\n display: block;\r\n width: 0px;\r\n animation: headerSlideDown 0.5s ease 0.2s forwards;\r\n\r\n @keyframes headerSlideDown {\r\n from {width: 0px;}\r\n to {width: ${ props => props.rowWidth / 2 }px;}\r\n }\r\n\r\n p {\r\n opacity: 0;\r\n animation: headerFadeIn 0.6s ease 0.6s forwards;\r\n\r\n @keyframes headerFadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n img {\r\n opacity: 0;\r\n animation: headerFadeInImg 0.3s ease 0s forwards;\r\n\r\n @keyframes headerFadeInImg {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n }\r\n\r\n &.title-header-hide {\r\n width: ${ props => props.rowWidth / 2 }px;\r\n animation: headerSlideUp 0.5s ease 1s forwards;\r\n\r\n @keyframes headerSlideUp {\r\n from {width: ${ props => props.rowWidth / 2 }px;}\r\n to {width: 0px;}\r\n }\r\n\r\n p {\r\n opacity: 1;\r\n animation: headerFadeOut 0.6s ease 0.5s forwards;\r\n\r\n @keyframes headerFadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n img {\r\n opacity: 1;\r\n animation: headerFadeOutImg 0.3s ease 1.3s forwards;\r\n\r\n @keyframes headerFadeOutImg {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n }\r\n\r\n img {\r\n height: 250px;\r\n position: absolute;\r\n top: 0px;\r\n }\r\n\r\n .row {\r\n padding-top: 15px;\r\n padding-bottom: 15px;\r\n }\r\n\r\n .subtitle {\r\n vertical-align: middle;\r\n font-size: 35px;\r\n letter-spacing: 8px;\r\n filter: drop-shadow(0px 0px 4px #00000040);\r\n line-height: 1;\r\n margin-left: 5px;\r\n }\r\n\r\n .title {\r\n vertical-align: middle;\r\n font-size: 130px;\r\n text-transform: uppercase;\r\n filter: drop-shadow(0px 0px 4px #00000080);\r\n line-height: 1;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n <>\r\n \r\n {`PSL\r\n \r\n \r\n \r\n \r\n

{ props.matchName ? props.matchName : props.groupName }

\r\n

Standings

\r\n \r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst StyledHeaderCol = styled.div`\r\n width: 775px;\r\n background: ${ styles.pslColor };\r\n margin: 0 20px;\r\n padding: 5px 20px;\r\n\r\n span {\r\n font-size: 33px;\r\n font-weight: 600;\r\n line-height: 40px;\r\n }\r\n`;\r\n\r\nconst StyledTeamCol = styled.div`\r\n width: 775px;\r\n padding: 0 15px;\r\n margin: 0 20px;\r\n color: #FFFFFF;\r\n\r\n img {\r\n height: 40px;\r\n }\r\n`;\r\n\r\nconst StyledTeamRow = styled(Row)`\r\n background: #3e3e3e;\r\n padding: 5px 10px;\r\n margin-top: 5px;\r\n margin-bottom: 5px;\r\n\r\n span {\r\n text-transform: uppercase;\r\n line-height: 40px;\r\n font-size: 33px;\r\n font-weight: 600;\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { leaderboard } = props;\r\n const firstHalfTeams = leaderboard.slice(0, 8);\r\n const secondHalfTeams = leaderboard.slice(8, leaderboard.length);\r\n \r\n const HeaderCol = () => {\r\n return (\r\n \r\n \r\n \r\n #\r\n \r\n \r\n \r\n \r\n \r\n TEAM\r\n \r\n \r\n KILLS\r\n \r\n \r\n TOTAL\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n const TeamCol = (team, rank) => {\r\n return (\r\n \r\n \r\n {rank}\r\n \r\n \r\n \"team e.target.src = getTeamLogo('default')}\r\n />\r\n \r\n \r\n {team.name}\r\n \r\n \r\n {team.totalKills}\r\n \r\n \r\n {team.totalPoints}\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n firstHalfTeams.map((team, i) => {\r\n return TeamCol(team, i + 1);\r\n })\r\n }\r\n \r\n \r\n {\r\n secondHalfTeams.map((team, i) => {\r\n return TeamCol(team, i + 9);\r\n })\r\n }\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.div`\r\n width: ${ props => props.rowWidth / 5 }px;\r\n margin-left: ${ props => 2 * props.rowWidth / 5 }px;\r\n overflow: hidden;\r\n background: #3e3e3e;\r\n\r\n img {\r\n margin-top: 2px;\r\n height: 45px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardFooter(props) {\r\n const { rowWidth, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardFooter;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardFooter from './LeaderboardFooter';\r\n\r\nconst width = 1600;\r\n\r\nconst LeaderboardWrapper = styled.div`\r\n width: ${width}px;\r\n overflow: hidden;\r\n font-family: 'agency_fb';\r\n\r\n &.leaderboard-show {\r\n display: block;\r\n height: 0;\r\n animation: fadeIn 1s ease 0s forwards, slideDown 1.5s ease 0.6s forwards;\r\n \r\n @keyframes slideDown {\r\n from {height: 0;}\r\n to {height: calc(100vh);}\r\n }\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {}\r\n }\r\n }\r\n\r\n &.leaderboard-hide {\r\n height: calc(100vh);\r\n animation: slideUp 1s ease 0s forwards, fadeOut 0.3s ease 0.8s forwards;\r\n \r\n @keyframes slideUp {\r\n from {height: calc(100vh);}\r\n to {height: 0;}\r\n }\r\n \r\n @keyframes fadeOut {\r\n from {}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nclass PslTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, opts, show } = this.props;\r\n\r\n if (!loaded) return null;\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PslTeamLeaderboard;\r\n","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst TeamWrapper = styled.table`\r\n span {\r\n position: relative;\r\n }\r\n\r\n td {\r\n overflow: hidden;\r\n }\r\n\r\n td.title-left-td {\r\n font-size: 38px;\r\n padding-left: 18px;\r\n }\r\n\r\n td.title-right-td {\r\n font-size: 38px;\r\n padding-right: 30px;\r\n }\r\n\r\n .spacing {\r\n width: 14px;\r\n }\r\n\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease 0s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n span {\r\n bottom: -100px;\r\n animation: slideUp 0.3s ease 0s forwards;\r\n \r\n @keyframes slideUp {\r\n from {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n to {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.component-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.6s ease ${props => props.numberOfRows * 0.1 + 0.3}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n to {\r\n opacity: 0;\r\n }\r\n }\r\n\r\n span {\r\n bottom: 0px;\r\n animation: slideDown 0.3s ease ${props => props.numberOfRows * 0.1 + 0.3}s forwards;\r\n \r\n @keyframes slideDown {\r\n from {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n to {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .noto-font {\r\n font-family: 'noto-bold';\r\n }\r\n`;\r\n\r\nclass LeaderboardHeader extends Component {\r\n render() {\r\n const { opts, show, numberOfRows, exportOverlay } = this.props;\r\n const { selectedSpecificMatch, numberOfMatches } = opts;\r\n\r\n return (\r\n \r\n \r\n \r\n PUBG JAPAN CHALLENGE\r\n Grand Final Match { selectedSpecificMatch ? numberOfMatches-30 || 1 : `1-${numberOfMatches-30 || 1}` }\r\n \r\n \r\n RANK\r\n TEAM\r\n WWCD\r\n KILLS\r\n \r\n RANK\r\n TEAM\r\n WWCD\r\n KILLS\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LeaderboardHeader;\r\n","export default {\r\n 'HYAKUSYOU': '百姓',\r\n 'NBNBGaming': 'NBNBゲーミング',\r\n 'PIYOPIYO TEIKOKU': 'ぴよぴよ帝国',\r\n 'Irohanipopeto Samurai Gaming': 'いろはにぽぺと侍ゲーミング',\r\n 'Matsui Gaming Club': '松井Gaming Club',\r\n 'Team YOJIGONJI': 'Teamよじごんじ',\r\n};","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\nimport teamTranslations from '../../../../../../util/TeamTranslations';\r\n\r\nconst TeamWrapper = styled.table`\r\n &#team-tr-${props => props.index}{\r\n background-image: url('/assets/img/pjc/leaderboard-background.png');\r\n background-attachment: initial;\r\n background-position: ${props => props.side === 'right' ? -900 : 0}px ${props => -(props.index + 1) * 82 - 130}px;\r\n background-repeat: no-repeat;\r\n }\r\n\r\n span {\r\n position: relative;\r\n }\r\n\r\n td {\r\n overflow: hidden;\r\n }\r\n\r\n td.td-team {\r\n img {\r\n height: 65px;\r\n margin-top: 5px;\r\n }\r\n }\r\n\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease ${props => props.index/10 + 0.1}s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: -100px;\r\n animation: slideUp 0.3s ease ${props => props.index/10 + 0.1}s forwards;\r\n \r\n @keyframes slideUp {\r\n from {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n to {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.component-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.6s ease ${props => 1 - props.index/10}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n to {\r\n opacity: 0;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: 0px;\r\n animation: slideDown 0.3s ease ${props => 1 - props.index/10}s forwards;\r\n \r\n @keyframes slideDown {\r\n from {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n to {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nclass LeaderboardTeam extends Component {\r\n render() {\r\n const { team, rank, index, show, exportOverlay, side } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n { rank }.\r\n
\r\n \r\n \r\n
\r\n e.target.src = getTeamLogo('default')} alt=\"team logo\"\r\n />\r\n { teamTranslations[team.name] ? teamTranslations[team.name] : team.name }\r\n
\r\n \r\n \r\n
\r\n { team.wins }\r\n
\r\n \r\n \r\n
\r\n { team.totalKills }\r\n
\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LeaderboardTeam;\r\n","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardTeam from './LeaderboardTeam';\r\n\r\nconst WIDTH = 1800;\r\nconst NUM_OF_HORIZONTAL_SPACING = 3;\r\nconst HORIZONTAL_SPACING = 5;\r\n\r\nconst LeaderboardWrapper = styled.table`\r\n font-family: machine, noto-bold;\r\n font-size: 33px;\r\n\r\n border-collapse:separate; \r\n border-spacing: ${HORIZONTAL_SPACING}px;\r\n width: ${WIDTH}px;\r\n\r\n tr.team-tr > td {\r\n width: ${(WIDTH - NUM_OF_HORIZONTAL_SPACING * HORIZONTAL_SPACING) / 2}px;\r\n }\r\n\r\n table {\r\n background-image: url('/assets/img/pjc/leaderboard-background.png');\r\n background-attachment: fixed;\r\n background-position: 0px -70px;\r\n background-repeat: no-repeat;\r\n\r\n height: 75px;\r\n width: 100%;\r\n\r\n &.header-table {\r\n height: 120px;\r\n }\r\n\r\n td {\r\n padding: 0;\r\n margin: 0;\r\n }\r\n\r\n td.td-team {\r\n width: 55%;\r\n }\r\n\r\n td.th-team {\r\n font-size: 28px;\r\n width: ${(WIDTH - NUM_OF_HORIZONTAL_SPACING * (HORIZONTAL_SPACING - 1)) * 0.26}px;\r\n }\r\n\r\n td.td-rank, td.td-wins, td.td-kills, td.td-pts {\r\n width: 10%;\r\n }\r\n\r\n td.th-rank, td.th-kills, td.th-pts {\r\n font-size: 28px;\r\n width: ${(WIDTH - NUM_OF_HORIZONTAL_SPACING * (HORIZONTAL_SPACING - 1)) * 0.045}px;\r\n }\r\n\r\n td.th-wins {\r\n font-size: 28px;\r\n width: ${(WIDTH - NUM_OF_HORIZONTAL_SPACING * (HORIZONTAL_SPACING - 1)) * 0.05}px;\r\n }\r\n }\r\n`;\r\n\r\nclass PjcTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, opts, show, exportOverlay } = this.props;\r\n if (leaderboard.length % 2 !== 0) leaderboard.push({ name: '', totalKills: '', totalPoints: '' });\r\n // const numberOfHalfTeams = leaderboard.length / 2;\r\n const numberOfHalfTeams = 8;\r\n // const firstHalfTeams = leaderboard.slice(0, numberOfHalfTeams);\r\n const firstHalfTeams = leaderboard.slice(0, 8);\r\n // const secondHalfTeams = leaderboard.slice(numberOfHalfTeams, leaderboard.length);\r\n const secondHalfTeams = leaderboard.slice(8, 16);\r\n console.log(firstHalfTeams)\r\n console.log(secondHalfTeams)\r\n\r\n if (!loaded) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n [...new Array(numberOfHalfTeams).keys()].map(i => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PjcTeamLeaderboard;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.div`\r\n text-transform: uppercase;\r\n \r\n &.component-show {\r\n animation: fadeIn 0.3s ease 0s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n animation: fadeOut 0.3s ease 0s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n table {\r\n width: 100%;\r\n\r\n td {\r\n width: 50%;\r\n }\r\n }\r\n\r\n .title {\r\n font-size: 90px;\r\n }\r\n\r\n .group-title p {\r\n font-size: 50px;\r\n line-height: 50px;\r\n }\r\n\r\n .match-title p {\r\n font-size: 35px;\r\n line-height: 35px;\r\n margin-top: -30px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n const { show, opts, exportOverlay } = props;\r\n const matchNameSplit = (opts.matchName || '').split('Match');\r\n const matchNumber = matchNameSplit.length > 1 ? matchNameSplit[1].replaceAll(' ', '') : null;\r\n const groupName = matchNumber ? parseInt(matchNumber / 6) + (matchNumber % 6 === 0 ? 0 : 1) : null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Leaderboard

{ groupName ? `Day ${groupName}` : '' }

{ matchNumber ? `Match ${matchNumber}` : '' }

\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst Wrapper = styled.div`\r\n font-size: 40px;\r\n text-transform: uppercase;\r\n\r\n table {\r\n tr {\r\n &.component-show {\r\n transform: rotate3d(1, 0, 0, 90deg);\r\n animation: \r\n rotateIn 0.5s ease ${props => ((props.rank > 8 ? props.rank - 8 : props.rank)) * 0.1}s forwards,\r\n fadeIn 1s ease ${props => ((props.rank > 8 ? props.rank - 8 : props.rank)) * 0.1}s forwards;\r\n \r\n @keyframes rotateIn {\r\n from {transform: rotate3d(1, 0, 0, 90deg);}\r\n to {transform: rotate3d(1, 0, 0, 0deg);}\r\n }\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n transform: rotate3d(1, 0, 0, 0deg);\r\n animation: \r\n rotateOut 0.5s ease ${props => ((props.rank > 8 ? props.rank - 8 : props.rank)) * 0.1}s forwards,\r\n fadeOut 1s ease ${props => ((props.rank > 8 ? props.rank - 8 : props.rank)) * 0.1}s forwards;\r\n \r\n @keyframes rotateOut {\r\n from {transform: rotate3d(1, 0, 0, 0deg);}\r\n to {transform: rotate3d(1, 0, 0, 90deg);}\r\n }\r\n \r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n }\r\n\r\n td {\r\n height: 70px;\r\n }\r\n }\r\n\r\n .team, .kills, .points {\r\n padding: 0;\r\n\r\n div {\r\n background: #404040;\r\n }\r\n }\r\n\r\n .team {\r\n width: 470px;\r\n\r\n div {\r\n padding-left: 130px;\r\n position: relative;\r\n overflow: hidden;\r\n\r\n img {\r\n height: 100px;\r\n position: absolute;\r\n top: -20px;\r\n left: 10px;\r\n transform: rotate(30deg);\r\n\r\n &:first-child {\r\n filter: blur(15px);\r\n }\r\n }\r\n }\r\n }\r\n\r\n .rank {\r\n width: 70px;\r\n background: #ff8317;\r\n }\r\n \r\n .kills, .points {\r\n width: 100px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardTeam(props) {\r\n const { team, rank, show, exportOverlay } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{ rank }\r\n
\r\n \"team e.target.src = getTeamLogo('default')}\r\n />\r\n \"team e.target.src = getTeamLogo('default')}\r\n />\r\n { team.team }\r\n
\r\n
\r\n
{ team.kills }
\r\n
\r\n
{ team.totalPoints }
\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardTeam;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.td`\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease 1.1s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n animation: fadeOut 0.3s ease 1s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardFooter(props) {\r\n const { show, exportOverlay } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardFooter;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.div`\r\n font-size: 25px;\r\n text-transform: uppercase;\r\n\r\n table {\r\n tr {\r\n &.component-show {\r\n animation: fadeIn 0.3s ease 0s forwards;\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n animation: fadeOut 0.3s ease 0s forwards;\r\n \r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n }\r\n }\r\n\r\n .team, .kills, .points {\r\n padding: 0;\r\n }\r\n\r\n .team {\r\n width: 470px;\r\n }\r\n\r\n .rank {\r\n width: 70px;\r\n }\r\n \r\n .kills, .points {\r\n width: 100px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardSubHeader(props) {\r\n const { show, exportOverlay } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
KILLS
\r\n
\r\n
PTS
\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardSubHeader;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardTeam from './LeaderboardTeam';\r\nimport LeaderboardFooter from './LeaderboardFooter';\r\nimport LeaderboardSubHeader from './LeaderboardSubHeader';\r\n\r\nconst StyledTable = styled.table`\r\n font-family: agency_fb;\r\n \r\n border-collapse:separate;\r\n border-spacing: 30px 10px;\r\n`;\r\n\r\nclass RyerTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, opts, show, exportOverlay } = this.props;\r\n const firstHalfTeams = leaderboard.slice(0, 8);\r\n const secondHalfTeams = leaderboard.slice(8, leaderboard.length);\r\n\r\n if (!loaded) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n firstHalfTeams.map((_, i) => {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n })\r\n }\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default RyerTeamLeaderboard;\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\n\r\nconst TeamWrapper = styled.table`\r\n color: #f2a12b;\r\n\r\n span {\r\n position: relative;\r\n }\r\n\r\n td {\r\n overflow: hidden;\r\n }\r\n\r\n td.title-left-td {\r\n color: #d8d9d9;\r\n font-size: 38px;\r\n padding-left: 18px;\r\n position: relative;\r\n ${props => props.selectedSpecificMatch ? 'padding-bottom: 60px;' : ''}\r\n\r\n img {\r\n margin-left: 170px;\r\n margin-bottom: 10px;\r\n }\r\n\r\n .number-of-matches {\r\n position: absolute;\r\n top: 220px;\r\n left: 30px;\r\n font-size: 65px;\r\n }\r\n }\r\n\r\n td.title-right-td {\r\n color: #d8d9d9;\r\n ${props => props.selectedSpecificMatch ? 'padding-bottom: 60px;' : ''}\r\n\r\n .match-title {\r\n width: ${props => props.selectedSpecificMatch ? 420 : 620}px;\r\n font-size: 60px;\r\n font-family: 'Druk-Medium';\r\n letter-spacing: 3px;\r\n text-transform: uppercase;\r\n \r\n span {\r\n background: #00000080;\r\n padding: 10px 30px;\r\n }\r\n\r\n div {\r\n margin-left: 150px;\r\n width: 420px;\r\n height: 96px;\r\n line-height: 77px;\r\n background: #00000080;\r\n padding: 10px 30px;\r\n }\r\n\r\n &.first-match-title {\r\n padding-bottom: 5px;\r\n }\r\n }\r\n \r\n .powered-by-twire {\r\n font-size: 20px;\r\n letter-spacing: 6px;\r\n\r\n .row {\r\n width: 150px;\r\n margin: 0;\r\n padding: 0;\r\n margin-left: 5px;\r\n height: 48px;\r\n background: #00000080;\r\n\r\n .col {\r\n padding: 0;\r\n }\r\n\r\n p {\r\n margin: 0px 0 0;\r\n padding: 0;\r\n }\r\n }\r\n\r\n img {\r\n height: 65px;\r\n margin-top: -18px;\r\n }\r\n }\r\n }\r\n\r\n table {\r\n height: 120px;\r\n }\r\n\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease 0s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n span {\r\n bottom: -100px;\r\n animation: slideUp 0.3s ease 0s forwards;\r\n \r\n @keyframes slideUp {\r\n from {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n to {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.component-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.6s ease ${props => 1.1}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n to {\r\n opacity: 0;\r\n }\r\n }\r\n\r\n span {\r\n bottom: 0px;\r\n animation: slideDown 0.3s ease ${props => 1.1}s forwards;\r\n \r\n @keyframes slideDown {\r\n from {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n to {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nclass LeaderboardHeader extends Component {\r\n render() {\r\n const { show, numberOfRows, exportOverlay, opts } = this.props;\r\n const { numberOfMatches } = opts;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n numberOfRows <= 8 ?\r\n \r\n MAÇ {numberOfMatches}/20\r\n \r\n :\r\n null\r\n }\r\n \r\n \r\n \r\n \r\n {\r\n numberOfRows <= 8 ?\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

POWERED BY

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n

POWERED BY

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n
\r\n
Final AŞAMASI
\r\n
\r\n
Gün 4 Sıralaması
\r\n
\r\n \r\n \r\n
\r\n GRUP AŞAMASI GENEL SIRALAMA\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n #\r\n {\r\n numberOfRows > 8 ?\r\n O. Maç\r\n :\r\n null\r\n }\r\n TAKIM\r\n SIRALAMA P.\r\n KILL P.\r\n TOPLAM P.\r\n \r\n #\r\n {\r\n numberOfRows > 8 ?\r\n O. Maç\r\n :\r\n null\r\n }\r\n TAKIM\r\n SIRALAMA P.\r\n KILL P.\r\n TOPLAM P.\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LeaderboardHeader;\r\n","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst TeamWrapper = styled.table`\r\n span {\r\n position: relative;\r\n }\r\n\r\n td {\r\n overflow: hidden;\r\n ${props => props.index % 2 === 0 ? 'background: #00000080;' : ''}\r\n\r\n &.spacing {\r\n background: transparent !important;\r\n }\r\n }\r\n\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease ${props => props.index/props.numberOfRows + 0.1}s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: -100px;\r\n animation: slideUp 0.3s ease ${props => props.index/props.numberOfRows + 0.1}s forwards;\r\n \r\n @keyframes slideUp {\r\n from {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n to {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.component-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.6s ease ${props => 1 - props.index/props.numberOfRows}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n to {\r\n opacity: 0;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: 0px;\r\n animation: slideDown 0.3s ease ${props => 1 - props.index/10}s forwards;\r\n \r\n @keyframes slideDown {\r\n from {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n to {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nclass LeaderboardTeam extends Component {\r\n render() {\r\n const { leftTeam, leftTeamRank, rightTeam, rightTeamRank, index, numberOfRows, show, exportOverlay, side } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n { leftTeamRank }.\r\n
\r\n \r\n {\r\n numberOfRows > 8 ?\r\n \r\n
\r\n { leftTeam.numberOfMatches }\r\n
\r\n \r\n :\r\n null\r\n }\r\n \r\n
\r\n { leftTeam.name }\r\n
\r\n \r\n \r\n
\r\n { leftTeam.totalPoints - leftTeam.totalKills }\r\n
\r\n \r\n \r\n
\r\n { leftTeam.totalKills }\r\n
\r\n \r\n \r\n
\r\n { leftTeam.totalPoints }\r\n
\r\n \r\n \r\n \r\n
\r\n { rightTeamRank }.\r\n
\r\n \r\n {\r\n numberOfRows > 8 ?\r\n \r\n
\r\n { rightTeam.numberOfMatches }\r\n
\r\n \r\n :\r\n null\r\n }\r\n \r\n
\r\n { rightTeam.name }\r\n
\r\n \r\n \r\n
\r\n { rightTeam.totalPoints - rightTeam.totalKills }\r\n
\r\n \r\n \r\n
\r\n { rightTeam.totalKills }\r\n
\r\n \r\n \r\n
\r\n { rightTeam.totalPoints }\r\n
\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LeaderboardTeam;\r\n","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardTeam from './LeaderboardTeam';\r\n\r\nconst WIDTH = 1796;\r\n\r\nconst LeaderboardWrapper = styled.div`\r\n width: 1920px;\r\n height: 1080px;\r\n padding-top: 95px;\r\n\r\n table {\r\n // background: gray;\r\n font-family: 'Tungsten-Semibold';\r\n text-transform: uppercase;\r\n font-size: 33px;\r\n line-height: ${props => props.lineHeight}px;\r\n margin: 0 auto;\r\n \r\n width: ${WIDTH}px;\r\n \r\n table {\r\n width: 100%;\r\n \r\n &.header-table {\r\n height: 120px;\r\n }\r\n \r\n td {\r\n padding: 0;\r\n margin: 0;\r\n }\r\n \r\n td.th-rank, td.th-match, td.th-team, td.th-placement-points, td.th-kill-points, td.th-total-points {\r\n font-size: 40px;\r\n line-height: 45px;\r\n }\r\n \r\n td.spacing {\r\n width: 50px;\r\n }\r\n \r\n .rank {\r\n width: 75px;\r\n }\r\n\r\n .match {\r\n width: 80px;\r\n }\r\n \r\n .team {\r\n width: 300px;\r\n }\r\n \r\n .placement-points {\r\n width: 140px;\r\n }\r\n \r\n .kill-points {\r\n width: 140px;\r\n }\r\n \r\n .total-points {\r\n width: 140px;\r\n }\r\n }\r\n }\r\n`;\r\n\r\nclass ProtalityTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, opts, show, exportOverlay } = this.props;\r\n if (leaderboard.length % 2 !== 0) leaderboard.push({ name: '', totalKills: '', totalPoints: '' });\r\n const numberOfHalfTeams = leaderboard.length / 2;\r\n const firstHalfTeams = leaderboard.slice(0, numberOfHalfTeams);\r\n const secondHalfTeams = leaderboard.slice(numberOfHalfTeams, leaderboard.length);\r\n\r\n if (!loaded) return null;\r\n\r\n return (\r\n 16 ? 38 : 55}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {\r\n [...new Array(numberOfHalfTeams).keys()].map(i => {\r\n return (\r\n \r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ProtalityTeamLeaderboard;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport Default from './default/TwireTeamLeaderboard';\r\nimport PSL from './psl/PslTeamLeaderboard';\r\nimport PJC from './pjc/PjcTeamLeaderboard';\r\nimport RYER from './ryer/RyerTeamLeaderboard';\r\nimport Protality from './protality/ProtalityTeamLeaderboard';\r\n\r\nconst PUBGTeamLeaderboardOverlay = (props) => {\r\n const { shard, overlayDesign } = props;\r\n\r\n return (\r\n shard.includes('psl') || overlayDesign === 'psl' ? \r\n \r\n :\r\n shard.includes('ryer') ? \r\n \r\n :\r\n overlayDesign === 'protality' ? \r\n \r\n :\r\n overlayDesign === 'pjc' || shard.includes('test-pjc21') || shard.includes('pjc') ? \r\n \r\n :\r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n leaderboard: state.overlay.pubg || [],\r\n overlayDesign: (state.overlay.tournament || {}).overlayDesign,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n loaded: state.overlay.loaded,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PUBGTeamLeaderboardOverlay);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { FormGroup, Label } from 'reactstrap';\r\nimport { requestChangeComponent } from '../../../../../../redux/dashboard/actions';\r\nimport { Select } from '../../../../../../components/StyledCoreUI';\r\nimport { CURRENT_MATCH_DATA, OVERALL_DATA } from '../../../../constants';\r\n\r\nconst options = [\r\n {\r\n key: CURRENT_MATCH_DATA,\r\n value: 'Current Match Data'\r\n },\r\n {\r\n key: OVERALL_DATA,\r\n value: 'Overall Data'\r\n },\r\n];\r\n\r\nfunction DataTypeSelect(props) {\r\n const { component, stateAttribute, requestChangeComponent } = props;\r\n\r\n return (\r\n \r\n \r\n requestChangeComponent(component, { state: { [stateAttribute]: key === OVERALL_DATA } })}\r\n disabledOptionText='-- select data type --'\r\n options={options}\r\n // warning={!component.state[stateAttribute] && component.state.showEmptyFieldWarning}\r\n />\r\n \r\n );\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n requestChangeComponent,\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(DataTypeSelect);\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport { PUBG_GAME } from '../../../../../util/Games';\r\nimport CheckBox from '../../../common/base/controller/inputs/CheckBox';\r\nimport { COMPONENT_STATE_OVERALL_STATS, COMPONENT_STATE_SUBSCRIPTION } from '../../../constants';\r\nimport DataTypeSelect from '../../../common/base/controller/inputs/DataTypeSelect';\r\n\r\nclass PUBGLiveTeamLeaderboardController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PUBGLiveTeamLeaderboardController;\r\n","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst TitleWrapper = styled.div`\r\n font-family: 'agency_fb';\r\n text-transform: uppercase;\r\n width: ${props => props.rowWidth / 2}px;\r\n margin-left: ${props => props.rowWidth / 4}px;\r\n margin-top: 35px;\r\n margin-bottom: 35px !important;\r\n background: ${styles.pslColor};\r\n height: 180px;\r\n\r\n p {\r\n padding: 0;\r\n margin: 0;\r\n }\r\n\r\n &.title-header-show {\r\n display: block;\r\n width: 0px;\r\n animation: headerSlideDown 0.5s ease 0.2s forwards;\r\n\r\n @keyframes headerSlideDown {\r\n from {width: 0px;}\r\n to {width: ${props => props.rowWidth / 2}px;}\r\n }\r\n\r\n p {\r\n opacity: 0;\r\n animation: headerFadeIn 0.6s ease 0.6s forwards;\r\n\r\n @keyframes headerFadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n img {\r\n opacity: 0;\r\n animation: headerFadeInImg 0.3s ease 0s forwards;\r\n\r\n @keyframes headerFadeInImg {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n }\r\n\r\n &.title-header-hide {\r\n width: ${props => props.rowWidth / 2}px;\r\n animation: headerSlideUp 0.5s ease 1s forwards;\r\n\r\n @keyframes headerSlideUp {\r\n from {width: ${props => props.rowWidth / 2}px;}\r\n to {width: 0px;}\r\n }\r\n\r\n p {\r\n opacity: 1;\r\n animation: headerFadeOut 0.6s ease 0.5s forwards;\r\n\r\n @keyframes headerFadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n img {\r\n opacity: 1;\r\n animation: headerFadeOutImg 0.3s ease 1.3s forwards;\r\n\r\n @keyframes headerFadeOutImg {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n }\r\n\r\n img {\r\n height: 250px;\r\n position: absolute;\r\n top: 0px;\r\n }\r\n\r\n .row {\r\n padding-top: 15px;\r\n padding-bottom: 15px;\r\n }\r\n\r\n .subtitle {\r\n vertical-align: middle;\r\n font-size: 35px;\r\n letter-spacing: 8px;\r\n filter: drop-shadow(0px 0px 4px #00000040);\r\n line-height: 1;\r\n margin-left: 5px;\r\n }\r\n\r\n .title {\r\n vertical-align: middle;\r\n font-size: 130px;\r\n text-transform: uppercase;\r\n filter: drop-shadow(0px 0px 4px #00000080);\r\n line-height: 1;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n

{props.groupName && props.groupName !== 'undefined' ? props.groupName : 'Lower Bracket'}

\r\n

Standings

\r\n \r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst StyledHeaderCol = styled.div`\r\n width: 775px;\r\n background: ${ styles.pslColor };\r\n margin: 0 20px;\r\n padding: 5px 20px;\r\n\r\n span {\r\n font-size: 33px;\r\n font-weight: 600;\r\n line-height: 40px;\r\n }\r\n`;\r\n\r\nconst StyledTeamCol = styled.div`\r\n width: 775px;\r\n padding: 0 15px;\r\n margin: 0 20px;\r\n color: #FFFFFF;\r\n\r\n img {\r\n height: 40px;\r\n }\r\n`;\r\n\r\nconst StyledTeamRow = styled(Row)`\r\n background: #3e3e3e;\r\n padding: 5px 10px;\r\n margin-top: 5px;\r\n margin-bottom: 5px;\r\n\r\n span {\r\n text-transform: uppercase;\r\n line-height: 40px;\r\n font-size: 33px;\r\n font-weight: 600;\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { leaderboard } = props;\r\n const firstHalfTeams = leaderboard.slice(0, 8);\r\n const secondHalfTeams = leaderboard.slice(8, leaderboard.length);\r\n \r\n const HeaderCol = () => {\r\n return (\r\n \r\n \r\n \r\n #\r\n \r\n \r\n \r\n \r\n \r\n TEAM\r\n \r\n \r\n KILLS\r\n \r\n \r\n TOTAL\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n const TeamCol = (team, rank) => {\r\n return (\r\n \r\n \r\n {rank}\r\n \r\n \r\n \"team e.target.src = getTeamLogo('default')}\r\n />\r\n \r\n \r\n {team.name}\r\n \r\n \r\n {team.totalKills}\r\n \r\n \r\n {team.totalPoints}\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n firstHalfTeams.map((team, i) => {\r\n return TeamCol(team, i + 1);\r\n })\r\n }\r\n \r\n \r\n {\r\n secondHalfTeams.map((team, i) => {\r\n return TeamCol(team, i + 9);\r\n })\r\n }\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.div`\r\n width: ${ props => props.rowWidth / 5 }px;\r\n margin-left: ${ props => 2 * props.rowWidth / 5 }px;\r\n overflow: hidden;\r\n background: #3e3e3e;\r\n\r\n img {\r\n margin-top: 2px;\r\n height: 45px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardFooter(props) {\r\n const { rowWidth, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardFooter;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardFooter from './LeaderboardFooter';\r\n\r\nconst width = 1600;\r\n\r\nconst LeaderboardWrapper = styled.div`\r\n width: ${width}px;\r\n overflow: hidden;\r\n font-family: 'agency_fb';\r\n\r\n &.leaderboard-show {\r\n display: block;\r\n height: 0;\r\n animation: fadeIn 1s ease 0s forwards, slideDown 1.5s ease 0.6s forwards;\r\n \r\n @keyframes slideDown {\r\n from {height: 0;}\r\n to {height: calc(100vh);}\r\n }\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {}\r\n }\r\n }\r\n\r\n &.leaderboard-hide {\r\n height: calc(100vh);\r\n animation: slideUp 1s ease 0s forwards, fadeOut 0.3s ease 0.8s forwards;\r\n \r\n @keyframes slideUp {\r\n from {height: calc(100vh);}\r\n to {height: 0;}\r\n }\r\n \r\n @keyframes fadeOut {\r\n from {}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nclass PslTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, opts, show } = this.props;\r\n\r\n if (!loaded) return null;\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PslTeamLeaderboard;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst TeamRow = styled.tr`\r\n text-transform: uppercase;\r\n\r\n &.team-death {\r\n opacity: 0.7;\r\n }\r\n\r\n td {\r\n padding: 1px;\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n background: ${styles.tertiary}CC;\r\n color: ${styles.secondary}AA;\r\n\r\n img {\r\n height: 20px !important;\r\n }\r\n }\r\n\r\n .team-rank {\r\n width: 30px !important;\r\n color: ${styles.secondary};\r\n background: ${styles.tertiary};\r\n }\r\n\r\n .team-points {\r\n width: 45px !important;\r\n color: ${styles.secondary};\r\n }\r\n\r\n .team-initial {\r\n padding-left: 7px;\r\n width: 60px !important;\r\n }\r\n\r\n .team-alive {\r\n padding: 0 6px;\r\n td {\r\n background: none;\r\n padding: 3px 2px;\r\n div {\r\n width: 3px;\r\n height: 17px;\r\n }\r\n }\r\n\r\n .alive {\r\n background: #ff8317;\r\n }\r\n .death {\r\n background: #60606090;\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { team, rank } = props;\r\n\r\n return (\r\n = team.initialPlayers ? 'team-death' : ''}>\r\n \r\n { rank }\r\n \r\n { team.initial }\r\n { team.points }\r\n \r\n \r\n \r\n \r\n {\r\n Array.from(Array(4).keys()).map(i => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n
team.deaths ? 'alive' : 'death'}>
\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n td {\r\n background: #ff8317;\r\n text-transform: uppercase;\r\n padding: 1px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n Leaderboard\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n img {\r\n width: 100px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardFooter(props) {\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardFooter;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardFooter from './LeaderboardFooter';\r\n\r\nconst LeaderboardTable = styled.table`\r\n border-collapse:separate; \r\n border-spacing: 0 2px;\r\n\r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n font-family: agency_fb;\r\n font-size: 1.4em;\r\n\r\n &.bc-show {\r\n margin-left: -210;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -210px;}\r\n to {margin-left: 40px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 10;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 10px;}\r\n to {margin-left: -210px;}\r\n }\r\n }\r\n`;\r\n\r\nclass RyerLiveTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show } = this.props;\r\n\r\n return (\r\n loaded ?\r\n \r\n \r\n \r\n {\r\n leaderboard.map((t, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default RyerLiveTeamLeaderboard;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst TEAM_ROW_ANIMATION_DELAY = 0.1;\r\nconst TEAM_ROW_TEXT_ANIMATION_DELAY = 0.3;\r\nconst WIDTH = 1368;\r\nconst TEAM_ROW_WIDTH = 664;\r\n\r\nconst Wrapper = styled.div`\r\n font-family: 'ESL Legend';\r\n position: fixed;\r\n left: 472px;\r\n top: 60px;\r\n width: ${WIDTH}px;\r\n height: 859px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: space-between;\r\n\r\n > div {\r\n width: ${TEAM_ROW_WIDTH}px;\r\n }\r\n\r\n p {\r\n margin: 0;\r\n padding: 0;\r\n }\r\n\r\n div.header {\r\n width: ${WIDTH}px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n\r\n div.header div {\r\n width: ${WIDTH}px;\r\n height: 140px;\r\n background-image: linear-gradient(135deg, transparent 2.3%, #1d1d1b 2.3%, #1d1d1b 100%);\r\n float: right;\r\n // Remove if subtitle is needed\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n h1 {\r\n font-weight: 600;\r\n margin: 0;\r\n font-size: 80px;\r\n line-height: 85px;\r\n }\r\n p {\r\n font-family: 'Calps Sans';\r\n font-size: 40px;\r\n line-height: 45px;\r\n }\r\n }\r\n\r\n div.column-header {\r\n div.column-wrapper {\r\n font-weight: 600;\r\n color: #000; \r\n font-size: 21px;\r\n line-height: 21px;\r\n }\r\n }\r\n\r\n div.team-row {\r\n div.column-wrapper {\r\n font-family: 'Calps Sans';\r\n font-size: 40px;\r\n line-height: 40px;\r\n }\r\n }\r\n\r\n div.column-wrapper {\r\n display: flex;\r\n flex-wrap: nowrap;\r\n align-items: center;\r\n float: right;\r\n\r\n p {\r\n margin: 0;\r\n padding: 0;\r\n }\r\n\r\n &.even {\r\n height: 75px;\r\n background: #1d1d1d;\r\n }\r\n\r\n &.odd {\r\n height: 75px;\r\n background: #323230;\r\n }\r\n\r\n div.arrow-column {\r\n width: 38px;\r\n\r\n img {\r\n margin-top: -5px;\r\n }\r\n }\r\n\r\n div.rank-column {\r\n width: 30px;\r\n\r\n &.single-match {\r\n width: 68px;\r\n }\r\n }\r\n\r\n div.logo-column {\r\n width: 65px;\r\n\r\n img {\r\n width: 45px;\r\n }\r\n }\r\n\r\n div.team-column {\r\n // width: 70%;\r\n width: 303px;\r\n }\r\n \r\n div.stat-column {\r\n // width: 15%;\r\n width: 114px;\r\n }\r\n }\r\n\r\n div.header-spacing {\r\n height: 67px;\r\n }\r\n\r\n div.column-header {\r\n height: 52px;\r\n }\r\n\r\n div.team-row {\r\n height: 75px;\r\n }\r\n \r\n &.bc-show {\r\n div.header div {\r\n width: 0;\r\n animation: slideInHeader 0.2s ease 0s forwards;\r\n \r\n @keyframes slideInHeader {\r\n from {width: 0px;}\r\n to {width: ${WIDTH}px;}\r\n }\r\n\r\n p, h1 {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease 0.2s forwards;\r\n }\r\n }\r\n }\r\n \r\n &.bc-hide {\r\n div.header div {\r\n width: ${WIDTH}px;\r\n animation: slideOut 0.2s ease 0.3s forwards;\r\n\r\n p, h1 {\r\n opacity: 0;\r\n animation: fadeOut 0.3s ease 0s forwards;\r\n }\r\n \r\n @keyframes slideOut {\r\n from {width: ${WIDTH}px;}\r\n to {width: 0px;}\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst HeaderRow = styled.div`\r\n &.bc-show {\r\n .column-wrapper div p {\r\n margin-top: 52px;\r\n opacity: 0;\r\n animation: textFlyUp 0.3s ease ${props => props.animationDelay * TEAM_ROW_ANIMATION_DELAY}s forwards,\r\n fadeIn 0.01s ease ${props => props.animationDelay * TEAM_ROW_ANIMATION_DELAY}s forwards;\r\n \r\n @keyframes textFlyUp {\r\n from {margin-top: 52px;}\r\n to {margin-top: 0px;}\r\n }\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n .column-wrapper div {\r\n animation: fadeOut 0.2s ease ${props => props.animationOutDelay}s forwards,\r\n textFlyOut 0.5s ease ${props => props.animationOutDelay}s forwards;\r\n }\r\n }\r\n`;\r\n\r\nconst TeamRow = styled.div`\r\n &.bc-show {\r\n .column-wrapper {\r\n width: 0;\r\n animation: slideIn 0.3s ease ${props => props.animationDelay * TEAM_ROW_ANIMATION_DELAY}s forwards;\r\n \r\n @keyframes slideIn {\r\n from {width: 0px;}\r\n to {width: ${TEAM_ROW_WIDTH}px;}\r\n }\r\n\r\n div {\r\n opacity: 0;\r\n animation: fadeIn 0.5s ease ${props => props.animationDelay * TEAM_ROW_ANIMATION_DELAY + TEAM_ROW_TEXT_ANIMATION_DELAY}s forwards;\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n\r\n &.text-fly-in p {\r\n margin-left: 100px;\r\n animation: textFlyIn 0.2s ease ${props => props.animationDelay * TEAM_ROW_ANIMATION_DELAY + TEAM_ROW_TEXT_ANIMATION_DELAY}s forwards;\r\n }\r\n\r\n &.text-fly-in.team-column p {\r\n margin-left: 200px;\r\n animation: textFlyIn 0.2s ease ${props => props.animationDelay * TEAM_ROW_ANIMATION_DELAY + TEAM_ROW_TEXT_ANIMATION_DELAY}s forwards;\r\n }\r\n \r\n @keyframes textFlyIn {\r\n from {margin-left: 100px;}\r\n to {margin-left: 0;}\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n .column-wrapper {\r\n width: ${TEAM_ROW_WIDTH}px;\r\n\r\n animation: fadeOut 0.5s ease ${props => props.animationDelay * TEAM_ROW_ANIMATION_DELAY/4}s forwards,\r\n textFlyOut 0.5s ease ${props => props.animationDelay * TEAM_ROW_ANIMATION_DELAY/4}s forwards;\r\n \r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n \r\n @keyframes textFlyOut {\r\n from {margin-right: 0;}\r\n to {margin-right: 2000px;}\r\n }\r\n }\r\n\r\n div {\r\n opacity: 1;\r\n }\r\n }\r\n`;\r\n\r\nclass EslLiveTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, opts } = this.props;\r\n const numberOfHalfTeams = leaderboard.length / 2;\r\n const firstHalfTeams = leaderboard.slice(0, numberOfHalfTeams);\r\n const secondHalfTeams = leaderboard.slice(numberOfHalfTeams, leaderboard.length);\r\n\r\n return (\r\n loaded ?\r\n \r\n
\r\n
\r\n

{ opts.overall ? 'Overall Standings' : 'Match Standings' }

\r\n {/*

{ opts.overall ? opts.groupName : `Match 1-${ opts.numberOfMatches }` }

*/}\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n

Team

\r\n
{ opts.overall ?

Chicken
Dinner

: null }
\r\n

Total
Kills

\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n

Team

\r\n
{ opts.overall ?

Chicken
Dinner

: null }
\r\n

Total
Kills

\r\n
\r\n \r\n\r\n {\r\n firstHalfTeams.map((_, i) => {\r\n const parity = i % 2 === 0 ? 'even' : 'odd';\r\n const leftTeam = firstHalfTeams[i];\r\n const rightTeam = secondHalfTeams[i];\r\n return (\r\n <>\r\n \r\n
\r\n {\r\n opts.overall ?\r\n
\r\n \r\n
\r\n :\r\n null\r\n }\r\n
{ i + 1 }
\r\n
\r\n e.target.src = getTeamLogo('pubg_logo_masters-04')}\r\n alt=\"team logo\"\r\n />\r\n
\r\n

{ leftTeam.name }

\r\n

{ opts.overall ? leftTeam.wins : '' }

\r\n

{ leftTeam.totalKills }

\r\n
\r\n \r\n \r\n
\r\n {\r\n opts.overall ?\r\n
\r\n \r\n
\r\n :\r\n null\r\n }\r\n
{ i + 1 + numberOfHalfTeams }
\r\n
\r\n e.target.src = getTeamLogo('pubg_logo_masters-04')}\r\n alt=\"team logo\"\r\n />\r\n
\r\n

{ rightTeam.name }

\r\n

{ opts.overall ? rightTeam.wins : '' }

\r\n

{ rightTeam.totalKills }

\r\n
\r\n \r\n \r\n );\r\n })\r\n }\r\n
\r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default EslLiveTeamLeaderboard;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst TeamWrapper = styled.table`\r\n span {\r\n position: relative;\r\n }\r\n\r\n td {\r\n overflow: hidden;\r\n }\r\n\r\n td.title-left-td {\r\n font-size: 38px;\r\n padding-left: 18px;\r\n }\r\n\r\n td.title-right-td {\r\n font-size: 38px;\r\n padding-right: 30px;\r\n }\r\n\r\n .spacing {\r\n width: 14px;\r\n }\r\n\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease 0s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n span {\r\n bottom: -100px;\r\n animation: slideUp 0.3s ease 0s forwards;\r\n \r\n @keyframes slideUp {\r\n from {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n to {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.component-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.6s ease ${props => props.numberOfRows * 0.1 + 0.3}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n to {\r\n opacity: 0;\r\n }\r\n }\r\n\r\n span {\r\n bottom: 0px;\r\n animation: slideDown 0.3s ease ${props => props.numberOfRows * 0.1 + 0.3}s forwards;\r\n \r\n @keyframes slideDown {\r\n from {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n to {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .noto-font {\r\n font-family: 'noto-bold';\r\n }\r\n`;\r\n\r\nclass LeaderboardHeader extends Component {\r\n render() {\r\n const { opts, show, numberOfRows, exportOverlay } = this.props;\r\n const { numberOfMatches, selectedSpecificMatch } = opts;\r\n\r\n return (\r\n \r\n \r\n \r\n PUBG JAPAN CHALLENGE\r\n Grand Final Match { selectedSpecificMatch ? numberOfMatches-30 || 1 : `1-${numberOfMatches-30 || 1}` }\r\n \r\n \r\n RANK\r\n TEAM\r\n WWCD\r\n KILLS\r\n \r\n RANK\r\n TEAM\r\n WWCD\r\n KILLS\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LeaderboardHeader;\r\n","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\nimport teamTranslations from '../../../../../../util/TeamTranslations';\r\n\r\nconst TeamWrapper = styled.table`\r\n &#team-tr-${props => props.index}{\r\n background-image: url('/assets/img/pjc/leaderboard-background.png');\r\n background-attachment: initial;\r\n background-position: ${props => props.side === 'right' ? -900 : 0}px ${props => -(props.index + 1) * 82 - 130}px;\r\n background-repeat: no-repeat;\r\n }\r\n\r\n span {\r\n position: relative;\r\n }\r\n\r\n td {\r\n overflow: hidden;\r\n }\r\n\r\n td.td-team {\r\n img {\r\n height: 65px;\r\n margin-top: 5px;\r\n }\r\n }\r\n\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease ${props => props.index/10 + 0.1}s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: -100px;\r\n animation: slideUp 0.3s ease ${props => props.index/10 + 0.1}s forwards;\r\n \r\n @keyframes slideUp {\r\n from {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n to {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.component-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.6s ease ${props => 1 - props.index/10}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n to {\r\n opacity: 0;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: 0px;\r\n animation: slideDown 0.3s ease ${props => 1 - props.index/10}s forwards;\r\n \r\n @keyframes slideDown {\r\n from {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n to {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nclass LeaderboardTeam extends Component {\r\n render() {\r\n const { team, rank, index, show, exportOverlay, side } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n { rank }.\r\n
\r\n \r\n \r\n
\r\n e.target.src = getTeamLogo('default')} alt=\"team logo\"\r\n />\r\n { teamTranslations[team.name] ? teamTranslations[team.name] : team.name }\r\n
\r\n \r\n \r\n
\r\n { team.wins }\r\n
\r\n \r\n \r\n
\r\n { team.totalKills }\r\n
\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LeaderboardTeam;\r\n","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardTeam from './LeaderboardTeam';\r\n\r\nconst WIDTH = 1800;\r\nconst NUM_OF_HORIZONTAL_SPACING = 3;\r\nconst HORIZONTAL_SPACING = 5;\r\n\r\nconst LeaderboardWrapper = styled.table`\r\n font-family: machine, noto-bold;\r\n font-size: 33px;\r\n\r\n border-collapse:separate; \r\n border-spacing: ${HORIZONTAL_SPACING}px;\r\n width: ${WIDTH}px;\r\n\r\n tr.team-tr > td {\r\n width: ${(WIDTH - NUM_OF_HORIZONTAL_SPACING * HORIZONTAL_SPACING) / 2}px;\r\n }\r\n\r\n table {\r\n background-image: url('/assets/img/pjc/leaderboard-background.png');\r\n background-attachment: fixed;\r\n background-position: 0px -70px;\r\n background-repeat: no-repeat;\r\n\r\n height: 75px;\r\n width: 100%;\r\n\r\n &.header-table {\r\n height: 120px;\r\n }\r\n\r\n td {\r\n padding: 0;\r\n margin: 0;\r\n }\r\n\r\n td.td-team {\r\n width: 55%;\r\n }\r\n\r\n td.th-team {\r\n font-size: 28px;\r\n width: ${(WIDTH - NUM_OF_HORIZONTAL_SPACING * (HORIZONTAL_SPACING - 1)) * 0.26}px;\r\n }\r\n\r\n td.td-rank, td.td-wins, td.td-kills, td.td-pts {\r\n width: 10%;\r\n }\r\n\r\n td.th-rank, td.th-kills, td.th-pts {\r\n font-size: 28px;\r\n width: ${(WIDTH - NUM_OF_HORIZONTAL_SPACING * (HORIZONTAL_SPACING - 1)) * 0.045}px;\r\n }\r\n\r\n td.th-wins {\r\n font-size: 28px;\r\n width: ${(WIDTH - NUM_OF_HORIZONTAL_SPACING * (HORIZONTAL_SPACING - 1)) * 0.05}px;\r\n }\r\n }\r\n`;\r\n\r\nclass PjcTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, opts, show, exportOverlay } = this.props;\r\n if (leaderboard.length % 2 !== 0) leaderboard.push({ name: '', totalKills: '', totalPoints: '' });\r\n // const numberOfHalfTeams = leaderboard.length / 2;\r\n const numberOfHalfTeams = 8;\r\n // const firstHalfTeams = leaderboard.slice(0, numberOfHalfTeams);\r\n const firstHalfTeams = leaderboard.slice(0, 8);\r\n // const secondHalfTeams = leaderboard.slice(numberOfHalfTeams, leaderboard.length);\r\n const secondHalfTeams = leaderboard.slice(8, 16);\r\n\r\n if (!loaded) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n [...new Array(numberOfHalfTeams).keys()].map(i => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PjcTeamLeaderboard;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamRow = styled.div`\r\n text-transform: uppercase;\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n font-size: 46px;\r\n line-height: 46px;\r\n width: 50%;\r\n height: 73px;\r\n margin-bottom: 5px;\r\n\r\n margin-bottom: 2px;\r\n\r\n .td-rank {\r\n width: 14%;\r\n }\r\n\r\n .td-kills, .td-points {\r\n width: 10%;\r\n }\r\n\r\n .td-team {\r\n width: 60%;\r\n font-family: noto-black;\r\n font-size: 35px;\r\n line-height: 35px;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n\r\n span {\r\n vertical-align: text-top;\r\n }\r\n }\r\n\r\n .td-image {\r\n width: 6%;\r\n\r\n img {\r\n width: 90%;\r\n margin-top: -5px;\r\n }\r\n }\r\n`;\r\n\r\nconst TEAM_NAME_MAP = {\r\n 'Zeta Division': 'ZETA DIVISION',\r\n 'Matsui Gaming Club': '松井GAMING CLUB'\r\n}\r\n\r\nfunction LeaderboardBody(props) {\r\n const { team, rank } = props;\r\n\r\n return (\r\n \r\n
\r\n { rank }.\r\n
\r\n
\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n
\r\n
{ TEAM_NAME_MAP[team.name] || team.name }
\r\n
{ team.totalKills }
\r\n
{ team.totalPoints }
\r\n
\r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst HeaderRow = styled.div`\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n height: 80px;\r\n margin-bottom: 17px;\r\n width: 100%;\r\n font-size: 26px;\r\n line-height: 26px;\r\n\r\n .td-rank {\r\n width: 7%;\r\n }\r\n\r\n .td-kills, .td-points {\r\n width: 5%;\r\n }\r\n\r\n .td-team {\r\n width: 30%;\r\n }\r\n\r\n .td-image {\r\n width: 3%;\r\n }\r\n\r\n .title {\r\n width: 100%;\r\n font-size: 42px;\r\n line-height: 42px;\r\n height: 33px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n margin-bottom: 10px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n
MATCH { props.overall ? '1-' : '' }{ props.numberOfMatches }
\r\n
RANK
\r\n
\r\n
TEAM
\r\n
KILLS
\r\n
POINT
\r\n
RANK
\r\n
\r\n
TEAM
\r\n
KILLS
\r\n
POINT
\r\n
\r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst Wrapper = styled.div`\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 1920px;\r\n height: 1080px;\r\n // background: url(/assets/img/pjc21/leaderboard-background.png);\r\n\r\n .overlay {\r\n position: fixed;\r\n top: 340px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n \r\n color: ${styles.secondary};\r\n \r\n font-family: machine;\r\n \r\n &.bc-show {\r\n opacity: 0;\r\n animation: fade-in 0.4s ease 0s forwards;\r\n\r\n @keyframes fade-in {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n \r\n &.bc-hide {\r\n opacity: 1;\r\n animation: fade-out 0.4s ease 0s forwards;\r\n \r\n @keyframes fade-out {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n }\r\n`;\r\n\r\nclass Pjc21LiveTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, opts } = this.props;\r\n const left = leaderboard.slice(0, 8);\r\n const right = leaderboard.slice(8, 16);\r\n\r\n return (\r\n loaded ?\r\n \r\n
\r\n \r\n {\r\n left.map((_, i) => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n })\r\n }\r\n
\r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default Pjc21LiveTeamLeaderboard;","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\n\r\nconst TitleTable = styled.table`\r\n width: ${props => props.rowWidth}px;\r\n\r\n .headline {\r\n width: ${props => props.overall ? '577px' : '610px'};\r\n color: #000;\r\n font-size: 80px;\r\n padding: 0;\r\n vertical-align: top;\r\n\r\n div {\r\n background: #FFF;\r\n height: 90px;\r\n\r\n p {\r\n margin: 0;\r\n padding: 0px 14px 10px;\r\n line-height: 80px;\r\n white-space: nowrap;\r\n }\r\n }\r\n }\r\n\r\n .match-title {\r\n padding: 20px;\r\n width: ${props => props.rowWidth / 2 - 577}px;\r\n\r\n div {\r\n p {\r\n padding: 0;\r\n margin: 0;\r\n border-top: 2px solid #ffa900;\r\n width: fit-content;\r\n }\r\n }\r\n }\r\n\r\n .tournament-logo {\r\n width: ${props => props.rowWidth / 2}px;\r\n vertical-align: top;\r\n }\r\n\r\n &.component-show {\r\n .headline {\r\n div {\r\n width: 0;\r\n animation: slideIn 0.3s ease 0s forwards;\r\n\r\n p {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease 0.5s forwards;\r\n }\r\n }\r\n }\r\n\r\n .match-title, .tournament-logo {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease 0.5s forwards;\r\n }\r\n\r\n @keyframes slideIn {\r\n from {width: 0px;}\r\n to {width: ${props => props.overall ? '577px' : '610px'};}\r\n }\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n .headline {\r\n div {\r\n animation: slideOut 0.3s ease 0.3s forwards;\r\n\r\n p {\r\n animation: fadeOut 0.3s ease 0s forwards;\r\n }\r\n }\r\n }\r\n\r\n .match-title, .tournament-logo {\r\n animation: fadeOut 0.3s ease 0s forwards;\r\n }\r\n \r\n\r\n @keyframes slideOut {\r\n from {width: ${props => props.overall ? '577px' : '610px'};}\r\n to {width: 0px;}\r\n }\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardTitle(props) {\r\n const { rowWidth, numberOfMatches, show, exportOverlay, overall } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n

{ overall ? 'Total' : 'Match' } Result

\r\n
\r\n \r\n \r\n
\r\n

Final{ ` // Match ${numberOfMatches}` }

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n matchName: state.teamLeaderboard.matchName,\r\n lastMatchName: state.teamLeaderboard.lastMatchName,\r\n groupName: state.teamLeaderboard.groupName,\r\n});\r\n\r\nexport default connect(mapStateToProps)(LeaderboardTitle);","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.table`\r\n width: ${props => props.rowWidth}px;\r\n font-size: 28px;\r\n`;\r\n\r\nconst TeamRow = styled.tr`\r\n background: #1f1f1f;\r\n\r\n &.component-show {\r\n transform: rotate3d(1, 0, 0, 90deg);\r\n animation: \r\n rotateIn 0.5s ease ${props => ((props.rank > 8 ? props.rank - 8 : props.rank)) * 0.1 + 0.3}s forwards,\r\n fadeIn 1s ease ${props => ((props.rank > 8 ? props.rank - 8 : props.rank)) * 0.1 + 0.3}s forwards;\r\n\r\n @keyframes rotateIn {\r\n from {transform: rotate3d(1, 0, 0, 90deg);}\r\n to {transform: rotate3d(1, 0, 0, 0deg);}\r\n }\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n transform: rotate3d(1, 0, 0, 0deg);\r\n animation: \r\n rotateOut 0.5s ease ${props => ((props.rank > 8 ? props.rank - 8 : props.rank)) * 0.1}s forwards,\r\n fadeOut 1s ease ${props => ((props.rank > 8 ? props.rank - 8 : props.rank)) * 0.1}s forwards;\r\n\r\n @keyframes rotateOut {\r\n from {transform: rotate3d(1, 0, 0, 0deg);}\r\n to {transform: rotate3d(1, 0, 0, 90deg);}\r\n }\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { teams, rowWidth, startingRank, show, exportOverlay } = props;\r\n\r\n return (\r\n \r\n \r\n {\r\n teams.map((t, i) => {\r\n return (\r\n \r\n #{ startingRank + i }\r\n { t.name }\r\n { t.wins }\r\n { t.totalKills }\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.table`\r\n width: ${props => props.rowWidth / 2}px;\r\n\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease 0.3s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n animation: fadeOut 0.3s ease 0s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nconst HeaderRow = styled.tr`\r\n td {\r\n padding: 15px;\r\n background: #ffa900;\r\n border-bottom: 5px solid #00000000;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n const { rowWidth, show, exportOverlay } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n Rank\r\n Team\r\n WWCD\r\n Kill\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardTitle from './LeaderboardTitle';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\n\r\nconst WIDTH = 1682;\r\nconst HEIGHT = 897;\r\n\r\nconst LeaderboardWrapper = styled.table`\r\n width: ${WIDTH}px;\r\n height: ${HEIGHT}px;\r\n font-family: Purista-Medium;\r\n text-transform: uppercase;\r\n font-size: 25px;\r\n border-collapse: separate; \r\n border-spacing: 10px 0;\r\n \r\n .text-bold {\r\n font-family: Purista-Bold;\r\n }\r\n \r\n .text-semibold {\r\n font-family: Purista-SemiBold;\r\n }\r\n \r\n .text-semibold-italic {\r\n font-family: Purista-SemiBoldItalic;\r\n }\r\n \r\n .td-rank, .td-wins, .td-kills {\r\n width: 120px;\r\n }\r\n\r\n .td-team {\r\n 481px;\r\n }\r\n\r\n .tr-title tr {\r\n height: 150px;\r\n }\r\n\r\n .tr-header tr {\r\n height: 90px;\r\n }\r\n\r\n .tr-body tr {\r\n height: 77px;\r\n }\r\n\r\n .twire-logo img {\r\n margin-top: 10px;\r\n height: 50px;\r\n background: #1f1f1f;\r\n }\r\n\r\n &.component-show .twire-logo img {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease 1.4s forwards;\r\n }\r\n\r\n &.component-hide .twire-logo img {\r\n animation: fadeOut 0.3s ease 1.0s forwards;\r\n }\r\n`;\r\n\r\nclass DnwTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, opts, show, exportOverlay } = this.props;\r\n if (leaderboard.length % 2 !== 0) leaderboard.push({ team: '', kills: '', points: '' });\r\n const numberOfHalfTeams = leaderboard.length / 2;\r\n const firstHalfTeams = leaderboard.slice(0, numberOfHalfTeams);\r\n const secondHalfTeams = leaderboard.slice(numberOfHalfTeams, leaderboard.length);\r\n\r\n if (!loaded) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default DnwTeamLeaderboard;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst TitleWrapper = styled.div`\r\n width: ${ props => props.rowWidth / 2 }px;\r\n margin-left: ${ props => props.rowWidth / 4 }px;\r\n margin-bottom: 25px !important;\r\n\r\n &.title-header-show {\r\n img {\r\n opacity: 0;\r\n animation: headerFadeInImg 0.4s ease 0s forwards;\r\n\r\n @keyframes headerFadeInImg {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n }\r\n\r\n &.title-header-hide {\r\n img {\r\n opacity: 1;\r\n animation: headerFadeOutImg 0.3s ease 1.1s forwards;\r\n\r\n @keyframes headerFadeOutImg {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n <>\r\n \r\n {`PSL\r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst StyledHeaderCol = styled.div`\r\n width: 910px;\r\n background: #ff0050;\r\n margin: 0 20px !important;\r\n padding: 5px 20px;\r\n color: #000000;\r\n\r\n span {\r\n font-size: 33px;\r\n line-height: 47px;\r\n font-weight: 600;\r\n }\r\n`;\r\n\r\nconst StyledTeamCol = styled.div`\r\n width: 910px;\r\n padding: 0 15px;\r\n margin: 0 20px !important;\r\n color: #FFFFFF;\r\n\r\n img {\r\n height: 40px;\r\n }\r\n`;\r\n\r\nconst StyledTeamRow = styled(Row)`\r\n background: #000000;\r\n padding: 5px 10px;\r\n margin: -7px;\r\n margin-top: 5px !important;\r\n margin-bottom: 5px !important;\r\n border: 1px solid #ff0050;\r\n\r\n span {\r\n text-transform: uppercase;\r\n line-height: 45px;\r\n font-size: 30px;\r\n font-weight: 600;\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { leaderboard } = props;\r\n const firstHalfTeams = leaderboard.slice(0, 8);\r\n const secondHalfTeams = leaderboard.slice(8, leaderboard.length);\r\n \r\n const HeaderCol = () => {\r\n return (\r\n \r\n \r\n \r\n #\r\n \r\n \r\n \r\n \r\n \r\n TEAM\r\n \r\n \r\n KILLS\r\n \r\n \r\n TOTAL\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n const TeamCol = (team, rank) => {\r\n return (\r\n \r\n \r\n {rank}\r\n \r\n \r\n \"team e.target.src = getTeamLogo('default')}\r\n />\r\n \r\n \r\n {team.name}\r\n \r\n \r\n {team.totalKills}\r\n \r\n \r\n {team.totalPoints}\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n firstHalfTeams.map((team, i) => {\r\n return TeamCol(team, i + 1);\r\n })\r\n }\r\n \r\n \r\n {\r\n secondHalfTeams.map((team, i) => {\r\n return TeamCol(team, i + 9);\r\n })\r\n }\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.div`\r\n width: ${ props => props.rowWidth / 5.5 }px;\r\n margin-left: ${ props => 2 * props.rowWidth / 4.93 }px;\r\n overflow: hidden;\r\n background: #000000;\r\n border: 1px solid #ff0050;\r\n\r\n img {\r\n margin-top: 2px;\r\n height: 45px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardFooter(props) {\r\n const { rowWidth, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardFooter;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardFooter from './LeaderboardFooter';\r\n\r\nconst width = 1920;\r\n\r\nconst LeaderboardWrapper = styled.div`\r\n width: ${width}px;\r\n overflow: hidden;\r\n font-family: 'CenturyGothicBold';\r\n background: url('/assets/img/being/live_team_leaderboard_background.png');\r\n background-repeat: no-repeat;\r\n background-position: 60px 25px;\r\n \r\n .font-sony {\r\n font-family: 'SonySketchEF';\r\n font-size: 45px;\r\n line-height: 45px;\r\n }\r\n\r\n &.leaderboard-show {\r\n display: block;\r\n height: 0;\r\n animation: fadeIn 1s ease 0s forwards, slideDown 1.5s ease 0.6s forwards;\r\n \r\n @keyframes slideDown {\r\n from {height: 0;}\r\n to {height: calc(100vh);}\r\n }\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {}\r\n }\r\n }\r\n\r\n &.leaderboard-hide {\r\n height: calc(100vh);\r\n animation: slideUp 1s ease 0s forwards, fadeOut 0.3s ease 0.8s forwards;\r\n \r\n @keyframes slideUp {\r\n from {height: calc(100vh);}\r\n to {height: 0;}\r\n }\r\n \r\n @keyframes fadeOut {\r\n from {}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n .row {\r\n margin: 0;\r\n }\r\n`;\r\n\r\nclass BeingTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, opts, show } = this.props;\r\n\r\n if (!loaded) return null;\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default BeingTeamLeaderboard;\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\n\r\nconst TeamWrapper = styled.table`\r\n color: #f2a12b;\r\n\r\n span {\r\n position: relative;\r\n }\r\n\r\n td {\r\n overflow: hidden;\r\n }\r\n\r\n td.title-left-td {\r\n color: #d8d9d9;\r\n font-size: 38px;\r\n padding-left: 18px;\r\n position: relative;\r\n ${props => props.selectedSpecificMatch ? 'padding-bottom: 60px;' : ''}\r\n\r\n img {\r\n margin-left: 170px;\r\n margin-bottom: 10px;\r\n }\r\n\r\n .number-of-matches {\r\n position: absolute;\r\n top: 220px;\r\n left: 30px;\r\n font-size: 65px;\r\n }\r\n }\r\n\r\n td.title-right-td {\r\n color: #d8d9d9;\r\n ${props => props.selectedSpecificMatch ? 'padding-bottom: 60px;' : ''}\r\n\r\n .match-title {\r\n width: ${props => props.selectedSpecificMatch ? 420 : 620}px;\r\n font-size: 60px;\r\n font-family: 'Druk-Medium';\r\n letter-spacing: 3px;\r\n text-transform: uppercase;\r\n \r\n span {\r\n background: #00000080;\r\n padding: 10px 30px;\r\n }\r\n\r\n div {\r\n margin-left: 150px;\r\n width: 420px;\r\n height: 96px;\r\n line-height: 77px;\r\n background: #00000080;\r\n padding: 10px 30px;\r\n }\r\n\r\n &.first-match-title {\r\n padding-bottom: 5px;\r\n }\r\n }\r\n \r\n .powered-by-twire {\r\n font-size: 20px;\r\n letter-spacing: 6px;\r\n\r\n .row {\r\n width: 150px;\r\n margin: 0;\r\n padding: 0;\r\n margin-left: 5px;\r\n height: 48px;\r\n background: #00000080;\r\n\r\n .col {\r\n padding: 0;\r\n }\r\n\r\n p {\r\n margin: 0px 0 0;\r\n padding: 0;\r\n }\r\n }\r\n\r\n img {\r\n height: 65px;\r\n margin-top: -18px;\r\n }\r\n }\r\n }\r\n\r\n table {\r\n height: 120px;\r\n }\r\n\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease 0s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n span {\r\n bottom: -100px;\r\n animation: slideUp 0.3s ease 0s forwards;\r\n \r\n @keyframes slideUp {\r\n from {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n to {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.component-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.6s ease ${props => 1.1}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n to {\r\n opacity: 0;\r\n }\r\n }\r\n\r\n span {\r\n bottom: 0px;\r\n animation: slideDown 0.3s ease ${props => 1.1}s forwards;\r\n \r\n @keyframes slideDown {\r\n from {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n to {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nclass LeaderboardHeader extends Component {\r\n render() {\r\n const { show, numberOfRows, exportOverlay, opts } = this.props;\r\n const { numberOfMatches } = opts;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n numberOfRows <= 8 ?\r\n \r\n MAÇ {numberOfMatches}/20\r\n \r\n :\r\n null\r\n }\r\n \r\n \r\n \r\n \r\n {\r\n numberOfRows <= 8 ?\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

POWERED BY

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n

POWERED BY

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n
\r\n
Final AŞAMASI
\r\n
\r\n
Gün 4 Sıralaması
\r\n
\r\n \r\n \r\n
\r\n GRUP AŞAMASI GENEL SIRALAMA\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n #\r\n {\r\n numberOfRows > 8 ?\r\n O. Maç\r\n :\r\n null\r\n }\r\n TAKIM\r\n SIRALAMA P.\r\n KILL P.\r\n TOPLAM P.\r\n \r\n #\r\n {\r\n numberOfRows > 8 ?\r\n O. Maç\r\n :\r\n null\r\n }\r\n TAKIM\r\n SIRALAMA P.\r\n KILL P.\r\n TOPLAM P.\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LeaderboardHeader;\r\n","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst TeamWrapper = styled.table`\r\n span {\r\n position: relative;\r\n }\r\n\r\n td {\r\n overflow: hidden;\r\n ${props => props.index % 2 === 0 ? 'background: #00000080;' : ''}\r\n\r\n &.spacing {\r\n background: transparent !important;\r\n }\r\n }\r\n\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease ${props => props.index/props.numberOfRows + 0.1}s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: -100px;\r\n animation: slideUp 0.3s ease ${props => props.index/props.numberOfRows + 0.1}s forwards;\r\n \r\n @keyframes slideUp {\r\n from {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n to {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.component-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.6s ease ${props => 1 - props.index/props.numberOfRows}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n to {\r\n opacity: 0;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: 0px;\r\n animation: slideDown 0.3s ease ${props => 1 - props.index/10}s forwards;\r\n \r\n @keyframes slideDown {\r\n from {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n to {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nclass LeaderboardTeam extends Component {\r\n render() {\r\n const { leftTeam, leftTeamRank, rightTeam, rightTeamRank, index, numberOfRows, show, exportOverlay, side } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n { leftTeamRank }.\r\n
\r\n \r\n {\r\n numberOfRows > 8 ?\r\n \r\n
\r\n { leftTeam.numberOfMatches }\r\n
\r\n \r\n :\r\n null\r\n }\r\n \r\n
\r\n { leftTeam.name }\r\n
\r\n \r\n \r\n
\r\n { leftTeam.totalPoints - leftTeam.totalKills }\r\n
\r\n \r\n \r\n
\r\n { leftTeam.totalKills }\r\n
\r\n \r\n \r\n
\r\n { leftTeam.totalPoints }\r\n
\r\n \r\n \r\n \r\n
\r\n { rightTeamRank }.\r\n
\r\n \r\n {\r\n numberOfRows > 8 ?\r\n \r\n
\r\n { rightTeam.numberOfMatches }\r\n
\r\n \r\n :\r\n null\r\n }\r\n \r\n
\r\n { rightTeam.name }\r\n
\r\n \r\n \r\n
\r\n { rightTeam.totalPoints - rightTeam.totalKills }\r\n
\r\n \r\n \r\n
\r\n { rightTeam.totalKills }\r\n
\r\n \r\n \r\n
\r\n { rightTeam.totalPoints }\r\n
\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LeaderboardTeam;\r\n","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardTeam from './LeaderboardTeam';\r\n\r\nconst WIDTH = 1796;\r\n\r\nconst LeaderboardWrapper = styled.div`\r\n width: 1920px;\r\n height: 1080px;\r\n padding-top: 95px;\r\n\r\n table {\r\n // background: gray;\r\n font-family: 'Tungsten-Semibold';\r\n text-transform: uppercase;\r\n font-size: 33px;\r\n line-height: ${props => props.lineHeight}px;\r\n margin: 0 auto;\r\n \r\n width: ${WIDTH}px;\r\n \r\n table {\r\n width: 100%;\r\n \r\n &.header-table {\r\n height: 120px;\r\n }\r\n \r\n td {\r\n padding: 0;\r\n margin: 0;\r\n }\r\n \r\n td.th-rank, td.th-match, td.th-team, td.th-placement-points, td.th-kill-points, td.th-total-points {\r\n font-size: 40px;\r\n line-height: 45px;\r\n }\r\n \r\n td.spacing {\r\n width: 50px;\r\n }\r\n \r\n .rank {\r\n width: 75px;\r\n }\r\n\r\n .match {\r\n width: 80px;\r\n }\r\n \r\n .team {\r\n width: 300px;\r\n }\r\n \r\n .placement-points {\r\n width: 140px;\r\n }\r\n \r\n .kill-points {\r\n width: 140px;\r\n }\r\n \r\n .total-points {\r\n width: 140px;\r\n }\r\n }\r\n }\r\n`;\r\n\r\nclass ProtalityTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, opts, show, exportOverlay } = this.props;\r\n if (leaderboard.length % 2 !== 0) leaderboard.push({ name: '', totalKills: '', totalPoints: '' });\r\n const numberOfHalfTeams = leaderboard.length / 2;\r\n const firstHalfTeams = leaderboard.slice(0, numberOfHalfTeams);\r\n const secondHalfTeams = leaderboard.slice(numberOfHalfTeams, leaderboard.length);\r\n\r\n if (!loaded) return null;\r\n\r\n return (\r\n 16 ? 38 : 55}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {\r\n [...new Array(numberOfHalfTeams).keys()].map(i => {\r\n return (\r\n \r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ProtalityTeamLeaderboard;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.div`\r\n text-transform: uppercase;\r\n color: ${ props => props.colors && props.colors.headerText ? props.colors.headerText : '#FFF'};\r\n \r\n &.component-show {\r\n animation: fadeIn 0.3s ease 0s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n animation: fadeOut 0.3s ease 0s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n table {\r\n width: 100%;\r\n\r\n td {\r\n width: 50%;\r\n }\r\n }\r\n\r\n .title {\r\n font-size: 90px;\r\n }\r\n\r\n .group-title p {\r\n font-size: 50px;\r\n line-height: 50px;\r\n }\r\n\r\n .match-title p {\r\n font-size: 35px;\r\n line-height: 35px;\r\n margin-top: -30px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n const { show, opts, overlayColor, exportOverlay } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Leaderboard

{ opts.groupName ? `${opts.groupName}` : '' }

{`Match ${opts.numberOfMatches}`}

\r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst Wrapper = styled.div`\r\n font-size: 40px;\r\n text-transform: uppercase;\r\n\r\n table {\r\n tr {\r\n &.component-show {\r\n transform: rotate3d(1, 0, 0, 90deg);\r\n animation: \r\n rotateIn 0.5s ease ${props => ((props.rank > props.numberOfHalfTeams ? props.rank - props.numberOfHalfTeams : props.rank)) * 0.1}s forwards,\r\n fadeIn 1s ease ${props => ((props.rank > props.numberOfHalfTeams ? props.rank - props.numberOfHalfTeams : props.rank)) * 0.1}s forwards;\r\n \r\n @keyframes rotateIn {\r\n from {transform: rotate3d(1, 0, 0, 90deg);}\r\n to {transform: rotate3d(1, 0, 0, 0deg);}\r\n }\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n transform: rotate3d(1, 0, 0, 0deg);\r\n animation: \r\n rotateOut 0.5s ease ${props => ((props.rank > props.numberOfHalfTeams ? props.rank - props.numberOfHalfTeams : props.rank)) * 0.1}s forwards,\r\n fadeOut 1s ease ${props => ((props.rank > props.numberOfHalfTeams ? props.rank - props.numberOfHalfTeams : props.rank)) * 0.1}s forwards;\r\n \r\n @keyframes rotateOut {\r\n from {transform: rotate3d(1, 0, 0, 0deg);}\r\n to {transform: rotate3d(1, 0, 0, 90deg);}\r\n }\r\n \r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n }\r\n\r\n td {\r\n height: 70px;\r\n }\r\n }\r\n\r\n .team, .kills, .points {\r\n padding: 0;\r\n white-space: nowrap;\r\n color: ${ props => props.colors && props.colors.teamText ? props.colors.teamText : '#FFF'};\r\n\r\n div {\r\n background: ${ props => props.colors && props.colors.secondary ? props.colors.secondary : '#404040'};\r\n }\r\n }\r\n\r\n .team {\r\n width: 470px;\r\n\r\n div {\r\n padding-left: 130px;\r\n position: relative;\r\n overflow: hidden;\r\n\r\n img {\r\n height: 100px;\r\n position: absolute;\r\n top: -20px;\r\n left: 10px;\r\n transform: rotate(30deg);\r\n\r\n &:first-child {\r\n filter: blur(15px);\r\n }\r\n }\r\n }\r\n }\r\n\r\n .rank {\r\n width: 70px;\r\n background: ${ props => props.colors && props.colors.primary ? props.colors.primary : '#FFF'};\r\n color: ${ props => props.colors && props.colors.rankText ? props.colors.rankText : '#000'};\r\n }\r\n \r\n .kills, .points {\r\n width: 100px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardTeam(props) {\r\n const { team, rank, show, overlayColor, exportOverlay, numberOfHalfTeams } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{ rank }\r\n
\r\n \"team e.target.src = getTeamLogo('default')}\r\n />\r\n \"team e.target.src = getTeamLogo('default')}\r\n />\r\n { team.name }\r\n
\r\n
\r\n
{ team.totalKills }
\r\n
\r\n
{ team.totalPoints }
\r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardTeam;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.td`\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease 1.1s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n animation: fadeOut 0.3s ease 1s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardFooter(props) {\r\n const { show, exportOverlay } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardFooter;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.div`\r\n font-size: 25px;\r\n text-transform: uppercase;\r\n color: ${ props => props.colors && props.colors.headerText ? props.colors.headerText : '#FFF'};\r\n\r\n table {\r\n tr {\r\n &.component-show {\r\n animation: fadeIn 0.3s ease 0s forwards;\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n animation: fadeOut 0.3s ease 0s forwards;\r\n \r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n }\r\n }\r\n\r\n .team, .kills, .points {\r\n padding: 0;\r\n }\r\n\r\n .team {\r\n width: 470px;\r\n }\r\n\r\n .rank {\r\n width: 70px;\r\n }\r\n \r\n .kills, .points {\r\n width: 100px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardSubHeader(props) {\r\n const { show, overlayColor, exportOverlay } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
KILLS
\r\n
\r\n
PTS
\r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardSubHeader;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardTeam from './LeaderboardTeam';\r\nimport LeaderboardFooter from './LeaderboardFooter';\r\nimport LeaderboardSubHeader from './LeaderboardSubHeader';\r\n\r\nconst StyledTable = styled.table`\r\n font-family: agency_fb;\r\n \r\n border-collapse:separate;\r\n border-spacing: 30px 10px;\r\n`;\r\n\r\nclass DefaultLiveTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, opts, show, overlayColor, exportOverlay } = this.props;\r\n if (leaderboard.length % 2 !== 0) leaderboard.push({ name: '-', totalKills: '-', totalPoints: '-' });\r\n const numberOfHalfTeams = leaderboard.length / 2;\r\n const firstHalfTeams = leaderboard.slice(0, numberOfHalfTeams);\r\n const secondHalfTeams = leaderboard.slice(numberOfHalfTeams, leaderboard.length);\r\n console.log(this.props)\r\n\r\n if (!loaded) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n firstHalfTeams.map((_, i) => {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n })\r\n }\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default DefaultLiveTeamLeaderboard;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport PSL from './psl/PslLiveTeamLeaderboard';\r\nimport RYER from './ryer/RyerLiveTeamLeaderboard';\r\nimport ESL from './esl/EslLiveTeamLeaderboard';\r\nimport PJC from './pjc/PjcLiveTeamLeaderboard';\r\nimport PJC21 from './pjc21/Pjc21LiveTeamLeaderboard';\r\nimport DNW from './dnw/DnwLiveTeamLeaderboard';\r\nimport Being from './being/BeingLiveTeamLeaderboard';\r\nimport Protality from './protality/ProtalityLiveTeamLeaderboard';\r\nimport Default from './default/DefaultTeamLeaderboard';\r\n\r\nconst PUBGLiveTeamLeaderboardOverlay = (props) => {\r\n const { shard, overlayDesign } = props;\r\n\r\n return (\r\n overlayDesign === 'psl' ? \r\n \r\n :\r\n shard.includes('ryer') ? \r\n \r\n :\r\n overlayDesign === 'pjc' ? \r\n \r\n :\r\n overlayDesign === 'pjc21' ? \r\n \r\n :\r\n overlayDesign === 'dnw' ? \r\n \r\n :\r\n overlayDesign === 'esl' ? \r\n \r\n :\r\n overlayDesign === 'being' ? \r\n \r\n :\r\n overlayDesign === 'protality' ? \r\n \r\n :\r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n leaderboard: state.overlay.pubg || [],\r\n overlayDesign: (state.overlay.tournament || {}).overlayDesign,\r\n overlayColor: (state.overlay.tournament || {}).overlayColor,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n loaded: state.overlay.loaded,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PUBGLiveTeamLeaderboardOverlay);\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport { PUBG_GAME } from '../../../../../util/Games';\r\nimport CheckBox from '../../../common/base/controller/inputs/CheckBox';\r\nimport { COMPONENT_STATE_OVERALL_STATS, COMPONENT_STATE_SUBSCRIPTION } from '../../../constants';\r\nimport DataTypeSelect from '../../../common/base/controller/inputs/DataTypeSelect';\r\n\r\nclass PUBGLiveSurvivalLeaderboardController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PUBGLiveSurvivalLeaderboardController;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { addMissingPlayers, isTeamDeath, sortByPlayerStatus } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamRow = styled.tr`\r\n text-transform: uppercase;\r\n background: rgba(0, 0, 0, 0.5);\r\n\r\n &.team-death {\r\n color: rgba(255, 255, 255, 0.2);\r\n }\r\n\r\n &.dark-bg td {\r\n background: rgba(0, 0, 0, 0.2);\r\n }\r\n\r\n td {\r\n padding: 0;\r\n font-family: 'ESL Legend';\r\n font-weight: 600;\r\n text-align: center;\r\n vertical-align: middle;\r\n height: 30px;\r\n font-size: 22px;\r\n line-height: 22px;\r\n }\r\n\r\n .team-death {\r\n table {\r\n display: none;\r\n }\r\n }\r\n\r\n .team-initial {\r\n width: 44px;\r\n }\r\n\r\n .team-players {\r\n width: 42px;\r\n }\r\n\r\n .team-wins {\r\n width: 38px;\r\n }\r\n\r\n .team-kills {\r\n text-align: right;\r\n width: 64px;\r\n padding-right: 12px;\r\n }\r\n\r\n .team-rank {\r\n text-align: right;\r\n width: 32px;\r\n }\r\n\r\n .team-alive {\r\n table {\r\n margin: 0 auto;\r\n }\r\n\r\n td {\r\n background: none;\r\n padding: 3px 2px;\r\n div {\r\n width: 4px;\r\n height: 22px;\r\n }\r\n }\r\n\r\n .alive {\r\n background: #ffff08;\r\n }\r\n .knocked {\r\n background: #6bff36;\r\n }\r\n .death {\r\n background: #000000;\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { team, rank } = props;\r\n const teamDeath = isTeamDeath(team);\r\n addMissingPlayers(team.players);\r\n\r\n return (\r\n \r\n { `#${rank}` }\r\n { team.initial }\r\n \r\n \r\n \r\n \r\n {\r\n team.players.sort(sortByPlayerStatus).map(i => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n { team.wins }\r\n { team.totalKills } ({ team.currentKills })\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n td:first-child {\r\n background: url('/assets/img/esl/IG_04_WWCD_Live_Status_Header.png');\r\n text-transform: uppercase;\r\n font-family: 'ESL Legend';\r\n font-weight: 600;\r\n width: 220px;\r\n height: 50px;\r\n font-size: 25px;\r\n line-height: 25px;\r\n color: #000;\r\n\r\n text-align: center;\r\n vertical-align: middle;\r\n }\r\n`;\r\n\r\nfunction LeaderboardTitle(props) {\r\n return (\r\n \r\n Leaderboard\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardTitle;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n background: rgba(0, 0, 0, 0.5);\r\n\r\n td {\r\n background: rgba(0, 0, 0, 0.5);\r\n background-repeat: no-repeat;\r\n text-transform: uppercase;\r\n font-family: 'ESL Legend';\r\n font-weight: 300;\r\n height: 40px;\r\n font-size: 22px;\r\n line-height: 22px;\r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n &.th-kills {\r\n padding-right: 12px;\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n const { overall } = props;\r\n\r\n return (\r\n \r\n \r\n Team\r\n Alive\r\n \r\n \r\n \r\n Kills\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardTitle from './LeaderboardTitle';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\n\r\nconst LeaderboardTable = styled.table`\r\n &.bc-show {\r\n margin-left: -250px;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -250px;}\r\n to {margin-left: 32px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 32px;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 32px;}\r\n to {margin-left: -250px;}\r\n }\r\n }\r\n`;\r\n\r\nclass EslLiveSurvivalLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, opts } = this.props;\r\n // if (leaderboard.length < 16) {\r\n // Array.from(Array(16-leaderboard.length).keys())\r\n // .forEach(() => leaderboard.push({ \r\n // name: 'None', \r\n // initial: 'None', \r\n // totalKills: 0, \r\n // totalPoints: 0, \r\n // numberOfMatches: 0, \r\n // players: new Array(4).map(() => { return { status: 'death' } }) \r\n // }));\r\n // }\r\n\r\n return (\r\n loaded ?\r\n \r\n \r\n \r\n \r\n {\r\n leaderboard.map((t, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default EslLiveSurvivalLeaderboard;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { isTeamDeath, sortByPlayerStatus } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamRow = styled.tr`\r\n text-transform: uppercase;\r\n\r\n &.team-death {\r\n opacity: 0.7;\r\n }\r\n\r\n td {\r\n padding: 1px;\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n background: ${styles.tertiary}EE;\r\n color: ${styles.secondary}DD;\r\n\r\n img {\r\n height: 20px !important;\r\n }\r\n }\r\n\r\n .team-rank {\r\n width: 25px !important;\r\n }\r\n\r\n .team-logo, .team-points {\r\n width: 30px !important;\r\n }\r\n\r\n .team-initial, .team-alive {\r\n width: 40px !important;\r\n }\r\n\r\n .team-alive {\r\n padding: 0 6px;\r\n td {\r\n background: none;\r\n padding: 3px 2px;\r\n div {\r\n width: 3px;\r\n height: 20px;\r\n }\r\n }\r\n\r\n .alive {\r\n background: ${styles.success};\r\n }\r\n .death {\r\n background: #60606090;\r\n }\r\n .knocked {\r\n background: ${styles.danger};\r\n }\r\n }\r\n\r\n .team-points {\r\n color: ${styles.primary};\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { team, rank } = props;\r\n\r\n return (\r\n \r\n \r\n { rank }\r\n \r\n { team.initial }\r\n \r\n \r\n \r\n \r\n {\r\n team.players.sort(sortByPlayerStatus).map(i => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n { team.totalPoints }\r\n
\r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst HeaderRow = styled.tr`\r\n background: ${styles.primary};\r\n\r\n td {\r\n color: ${styles.tertiary};\r\n text-transform: uppercase;\r\n padding: 1px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n Leaderboard\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\n\r\nconst LeaderboardTable = styled.table`\r\n border-collapse:separate; \r\n border-spacing: 0 2px;\r\n\r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n font-family: agency_fb;\r\n font-size: 1.4em;\r\n\r\n &.bc-show {\r\n margin-left: -200;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -200px;}\r\n to {margin-left: 40px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 10;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 10px;}\r\n to {margin-left: -200px;}\r\n }\r\n }\r\n`;\r\n\r\nclass PslLiveTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show } = this.props;\r\n\r\n return (\r\n loaded ?\r\n \r\n \r\n \r\n {\r\n leaderboard.map((t, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default PslLiveTeamLeaderboard;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { isTeamDeath, sortByPlayerStatus } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamRow = styled.tr`\r\n text-transform: uppercase;\r\n\r\n &.team-death {\r\n opacity: 0.7;\r\n }\r\n\r\n td {\r\n padding: 1px;\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n background: ${styles.tertiary}EE;\r\n color: ${styles.secondary}DD;\r\n\r\n img {\r\n height: 20px !important;\r\n }\r\n }\r\n\r\n .team-rank {\r\n width: 25px !important;\r\n }\r\n\r\n .team-logo, .team-points {\r\n width: 30px !important;\r\n }\r\n\r\n .team-initial, .team-alive {\r\n width: 40px !important;\r\n }\r\n\r\n .team-alive {\r\n padding: 0 6px;\r\n td {\r\n background: none;\r\n padding: 3px 2px;\r\n div {\r\n width: 3px;\r\n height: 20px;\r\n }\r\n }\r\n\r\n .alive {\r\n background: ${styles.success};\r\n }\r\n .death {\r\n background: #60606090;\r\n }\r\n .knocked {\r\n background: ${styles.danger};\r\n }\r\n }\r\n\r\n .team-points {\r\n color: #ff8a8f;\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { team, rank, overall } = props;\r\n\r\n return (\r\n \r\n \r\n { rank }\r\n \r\n { team.initial }\r\n \r\n \r\n \r\n \r\n {\r\n team.players.sort(sortByPlayerStatus).map(i => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {\r\n overall ?\r\n { team.wins }\r\n :\r\n null\r\n }\r\n { team.totalKills }\r\n
\r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst HeaderRow = styled.tr`\r\n background: #b4353b;\r\n\r\n td {\r\n color: ${styles.secondary};\r\n text-transform: uppercase;\r\n padding: 1px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n Leaderboard\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst HeaderRow = styled.tr`\r\n background: ${styles.tertiary}EE;\r\n\r\n td {\r\n color: ${styles.secondary};\r\n text-transform: uppercase;\r\n padding: 1px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n \r\n TEAM\r\n ALIVE\r\n {\r\n props.overall ?\r\n WWCD\r\n :\r\n null\r\n }\r\n KILLS\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardSubHeader from './LeaderboardSubHeader';\r\n\r\nconst LeaderboardTable = styled.table`\r\n border-collapse:separate; \r\n border-spacing: 0 2px;\r\n width: ${ props => props.overall ? 200 : 150 }px;\r\n\r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n font-family: agency_fb;\r\n font-size: 1.4em;\r\n\r\n &.bc-show {\r\n margin-left: -200;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -200px;}\r\n to {margin-left: 40px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 10;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 10px;}\r\n to {margin-left: -200px;}\r\n }\r\n }\r\n`;\r\n\r\nclass PjcLiveTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, opts } = this.props;\r\n const top16 = leaderboard.slice(0, 16);\r\n\r\n return (\r\n loaded ?\r\n \r\n \r\n \r\n \r\n {\r\n top16.map((t, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default PjcLiveTeamLeaderboard;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { isTeamDeath, sortByPlayerStatus } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamRow = styled.div`\r\n text-transform: uppercase;\r\n width: ${props => props.width}px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n font-size: 22px;\r\n line-height: 22px;\r\n\r\n margin-bottom: 2px;\r\n\r\n .td {\r\n width: ${props => props.width/5}px;\r\n height: 35px;\r\n background: #0a0a0a;\r\n align-items: center;\r\n display: flex;\r\n }\r\n\r\n .team-rank {\r\n color: #fe942c;\r\n padding-right: 12px;\r\n padding-left: 12px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: end;\r\n text-align: right !important;\r\n\r\n p {\r\n width: 100%;\r\n margin: 0;\r\n padding: 0;\r\n }\r\n }\r\n\r\n .team-points {\r\n justify-content: center;\r\n }\r\n\r\n .team-alive {\r\n padding: 0 6px;\r\n td {\r\n background: none;\r\n padding: 3px 2px;\r\n div {\r\n width: 4px;\r\n height: 20px;\r\n }\r\n }\r\n\r\n .alive {\r\n background: #fe942c;\r\n }\r\n .death {\r\n background: #484848;\r\n }\r\n .knocked {\r\n background: #ff0000;\r\n }\r\n }\r\n\r\n .team-death {\r\n background: #6f6f6f !important;\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { team, rank, width } = props;\r\n\r\n return (\r\n \r\n
\r\n

{ rank }

\r\n
\r\n
{ team.initial }
\r\n
\r\n \r\n \r\n \r\n {\r\n team.players.sort(sortByPlayerStatus).map(i => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
{ team.totalKills }
\r\n
{ team.totalPoints }
\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst HeaderRow = styled.div`\r\n width: ${props => props.width}px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n background: url(/assets/img/pjc21/live-survivel-leaderboard-header.png);\r\n max-height: 57px;\r\n margin-bottom: 2px;\r\n\r\n .header {\r\n width: ${props => props.width}px;\r\n font-size: 24px;\r\n line-height: 24px;\r\n height: 33px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n .sub-header {\r\n width: ${props => props.width/5}px;\r\n font-size: 18px;\r\n line-height: 18px;\r\n height: 24px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n &.text-left {\r\n justify-content: start;\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n
Leaderboard
\r\n
\r\n
TEAM
\r\n
ALIVE
\r\n
KILLS
\r\n
POINT
\r\n
\r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst WIDTH = 244;\r\n\r\nconst Wrapper = styled.div`\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 1920px;\r\n height: 1080px;\r\n\r\n .overlay {\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n width: ${WIDTH}px;\r\n \r\n position: fixed;\r\n left: 35px;\r\n top: 142px;\r\n \r\n color: ${styles.secondary};\r\n \r\n font-family: machine;\r\n \r\n &.bc-show {\r\n left: -300px;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {left: -300px;}\r\n to {left: 35px;}\r\n }\r\n }\r\n \r\n &.bc-hide {\r\n left: 35px;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {left: 35px;}\r\n to {left: -300px;}\r\n }\r\n }\r\n }\r\n`;\r\n\r\nclass Pjc21LiveTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show } = this.props;\r\n const top16 = leaderboard.slice(0, 16);\r\n // top16[0].players = [{status: 'alive'}, {status: 'alive'}, {status: 'knocked'}, {status: 'death'}];\r\n\r\n return (\r\n loaded ?\r\n \r\n
\r\n \r\n {\r\n top16.map((t, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n
\r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default Pjc21LiveTeamLeaderboard;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { isTeamDeath, sortByPlayerStatus } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamRow = styled.div`\r\n text-transform: uppercase;\r\n width: ${props => props.width}px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n font-size: 22px;\r\n line-height: 22px;\r\n background: url('/assets/img/pjc22_1/team-background.png');\r\n\r\n\r\n .td {\r\n width: ${props => props.width/5}px;\r\n height: 37px;\r\n align-items: center;\r\n display: flex;\r\n }\r\n\r\n .team-rank {\r\n color: #f29f00;\r\n padding-right: 12px;\r\n padding-left: 12px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: end;\r\n text-align: right !important;\r\n\r\n p {\r\n width: 100%;\r\n margin: 0;\r\n padding: 0;\r\n }\r\n }\r\n\r\n .team-points {\r\n justify-content: center;\r\n }\r\n\r\n .team-alive {\r\n padding: 0 6px;\r\n td {\r\n background: none;\r\n padding: 3px 2px;\r\n div {\r\n width: 4px;\r\n height: 20px;\r\n }\r\n }\r\n\r\n .alive {\r\n background: #f29f00;\r\n }\r\n .death {\r\n background: #48484840;\r\n }\r\n .knocked {\r\n background: #d50001;\r\n }\r\n }\r\n\r\n &.team-death {\r\n background: #939393;\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { team, rank, width } = props;\r\n\r\n return (\r\n \r\n
\r\n

{ rank }

\r\n
\r\n
{ team.initial }
\r\n
\r\n \r\n \r\n \r\n {\r\n team.players.sort(sortByPlayerStatus).map(i => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
{ team.totalKills }
\r\n
{ team.totalPoints }
\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst HeaderRow = styled.div`\r\n width: ${props => props.width}px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n background: url(/assets/img/pjc22_1/header-background.png);\r\n max-height: 60px;\r\n\r\n .header {\r\n width: ${props => props.width}px;\r\n font-size: 24px;\r\n line-height: 24px;\r\n height: 33px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n .sub-header {\r\n width: ${props => props.width/5}px;\r\n font-size: 18px;\r\n line-height: 18px;\r\n height: 24px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n &.text-left {\r\n justify-content: start;\r\n }\r\n }\r\n\r\n .underline {\r\n text-decoration: underline;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n
Leaderboard
\r\n
\r\n
TEAM
\r\n
ALIVE
\r\n
KILL
\r\n
POINT
\r\n
\r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\n\r\nconst WIDTH = 245;\r\n\r\nconst Wrapper = styled.div`\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 1920px;\r\n height: 1080px;\r\n\r\n .overlay {\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n width: ${WIDTH}px;\r\n \r\n position: fixed;\r\n left: 35px;\r\n top: 142px;\r\n \r\n color: #000;\r\n \r\n font-family: machine;\r\n \r\n &.bc-show {\r\n left: -300px;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {left: -300px;}\r\n to {left: 35px;}\r\n }\r\n }\r\n \r\n &.bc-hide {\r\n left: 35px;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {left: 35px;}\r\n to {left: -300px;}\r\n }\r\n }\r\n }\r\n`;\r\n\r\nclass Pjc21LiveTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show } = this.props;\r\n const top16 = leaderboard.slice(0, 16);\r\n // top16[0].players = [{status: 'alive'}, {status: 'alive'}, {status: 'knocked'}, {status: 'death'}];\r\n\r\n return (\r\n loaded ?\r\n \r\n
\r\n \r\n {\r\n top16.map((t, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n
\r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default Pjc21LiveTeamLeaderboard;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { isTeamDeath, sortByPlayerStatus } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamRow = styled.tr`\r\n text-transform: uppercase;\r\n\r\n &.team-death {\r\n opacity: 0.7;\r\n }\r\n\r\n td {\r\n padding: 1px;\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n background: ${styles.tertiary}EE;\r\n color: ${styles.secondary}DD;\r\n\r\n img {\r\n height: 20px !important;\r\n }\r\n }\r\n\r\n .team-rank {\r\n width: 25px !important;\r\n }\r\n\r\n .team-logo, .team-points {\r\n width: 30px !important;\r\n }\r\n\r\n .team-initial, .team-alive {\r\n width: 40px !important;\r\n }\r\n\r\n .team-alive {\r\n padding: 0 6px;\r\n td {\r\n background: none;\r\n padding: 3px 2px;\r\n div {\r\n width: 3px;\r\n height: 20px;\r\n }\r\n }\r\n\r\n .alive {\r\n background: #00C12B;\r\n }\r\n .death {\r\n background: #60606090;\r\n }\r\n .knocked {\r\n background: #FF1300;\r\n }\r\n }\r\n\r\n .team-wins, .team-kills {\r\n color: #ffa900;\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { team, rank } = props;\r\n\r\n return (\r\n \r\n \r\n { rank }\r\n \r\n { team.initial }\r\n \r\n \r\n \r\n \r\n {\r\n team.players.sort(sortByPlayerStatus).map(i => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n { team.wins }\r\n { team.totalKills }\r\n
\r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst HeaderRow = styled.tr`\r\n background: #ffa900;\r\n font-family: Purista-Bold;\r\n\r\n td {\r\n color: ${styles.tertiary};\r\n text-transform: uppercase;\r\n padding: 1px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n Leaderboard\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\n\r\nconst LeaderboardTable = styled.table`\r\n border-collapse:separate; \r\n border-spacing: 0 2px;\r\n\r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n font-family: Purista-Medium;\r\n font-size: 1.4em;\r\n\r\n &.bc-show {\r\n margin-left: -200;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -200px;}\r\n to {margin-left: 40px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 10;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 10px;}\r\n to {margin-left: -200px;}\r\n }\r\n }\r\n\r\n .tr-header {\r\n font-family: Purista-Bold;\r\n background: ${styles.tertiary}EE;\r\n }\r\n`;\r\n\r\nclass DnwLiveTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show } = this.props;\r\n\r\n return (\r\n loaded ?\r\n \r\n \r\n \r\n \r\n #\r\n TEAM\r\n \r\n W\r\n K\r\n \r\n {\r\n leaderboard.map((t, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default DnwLiveTeamLeaderboard;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { isTeamDeath, sortByPlayerStatus } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamRow = styled.tr`\r\n text-transform: uppercase;\r\n\r\n &.team-death {\r\n opacity: 0.7;\r\n }\r\n\r\n td {\r\n padding: 1px;\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n background: ${styles.tertiary}CC;\r\n color: ${styles.secondary}AA;\r\n\r\n img {\r\n height: 20px !important;\r\n }\r\n }\r\n\r\n .team-rank {\r\n width: 30px !important;\r\n color: ${styles.secondary};\r\n background: ${styles.tertiary};\r\n border: 1px solid #ff0050;\r\n }\r\n\r\n .team-points {\r\n width: 45px !important;\r\n color: ${styles.secondary};\r\n }\r\n\r\n .team-initial {\r\n padding-left: 7px;\r\n width: 60px !important;\r\n }\r\n\r\n .team-alive {\r\n padding: 0 6px;\r\n td {\r\n background: none;\r\n padding: 3px 2px;\r\n div {\r\n width: 3px;\r\n height: 17px;\r\n }\r\n }\r\n\r\n .alive {\r\n background: #04fdb3;\r\n }\r\n .knocked {\r\n background: #ff0050;\r\n }\r\n .death {\r\n background: #60606090;\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { team, rank } = props;\r\n const teamDeath = isTeamDeath(team);\r\n\r\n return (\r\n \r\n \r\n { rank }\r\n \r\n { team.initial }\r\n { team.totalPoints }\r\n \r\n \r\n \r\n \r\n {\r\n team.players.sort(sortByPlayerStatus).map(i => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n color: #000;\r\n \r\n td {\r\n background: #ff0050;\r\n text-transform: uppercase;\r\n padding: 1px;\r\n font-family: 'SonySketchEF';\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n Leaderboard\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n img {\r\n width: 100px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardFooter(props) {\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardFooter;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardFooter from './LeaderboardFooter';\r\n\r\nconst LeaderboardTable = styled.table`\r\n border-collapse:separate; \r\n border-spacing: 0 2px;\r\n\r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n font-family: 'CenturyGothicBold';\r\n font-size: 1.4em;\r\n\r\n &.bc-show {\r\n margin-left: -210;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -210px;}\r\n to {margin-left: 40px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 10;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 10px;}\r\n to {margin-left: -210px;}\r\n }\r\n }\r\n`;\r\n\r\nclass BeingLiveSurvivalLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, overlayColor } = this.props;\r\n\r\n return (\r\n loaded ?\r\n \r\n \r\n \r\n {\r\n leaderboard.map((t, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default BeingLiveSurvivalLeaderboard;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo, isTeamDeath, sortByPlayerStatus } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamRow = styled.tr`\r\n text-transform: uppercase;\r\n width: 297px !important;\r\n max-height: 30px !important;\r\n\r\n &:nth-child(even) {\r\n background: rgba(0, 0, 0, 0.2);\r\n }\r\n\r\n &.border-top {\r\n border-top: 1px solid #00ffae !important;\r\n }\r\n\r\n &.border-bottom {\r\n border-bottom: 1px solid #00ffae !important;\r\n }\r\n\r\n &.border-side {\r\n border-right: 1px solid #00ffae !important;\r\n }\r\n\r\n &.team-death span {\r\n opacity: 0.5;\r\n }\r\n\r\n &.team-death table {\r\n opacity: 0;\r\n }\r\n\r\n td {\r\n max-height: 30px;\r\n padding: 1.25px;\r\n padding-top: 1.67px;\r\n\r\n img {\r\n height: 20px !important;\r\n margin-top: -2px;\r\n }\r\n }\r\n\r\n td.team-rank {\r\n min-width: 50px !important;\r\n background: rgba(0, 0, 0, 0.5);\r\n }\r\n\r\n td.team-logo {\r\n min-width: 30px !important;\r\n }\r\n\r\n td.team-initial {\r\n min-width: 35px !important;\r\n }\r\n\r\n td.team-blank {\r\n min-width: 7px !important;\r\n }\r\n\r\n td.team-alive {\r\n min-width: 50px !important;\r\n }\r\n\r\n td.team-points {\r\n min-width: 58px !important;\r\n }\r\n\r\n td.team-kills {\r\n min-width: 58px !important;\r\n }\r\n\r\n .team-alive {\r\n padding: 0 10px;\r\n td {\r\n background: none;\r\n padding: 3px 2px;\r\n div {\r\n width: 3px;\r\n height: 20px;\r\n }\r\n }\r\n\r\n .alive {\r\n background: #eff923;\r\n }\r\n .death {\r\n background: #000000;\r\n }\r\n .knocked {\r\n background: #00ffae;\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { team, rank } = props;\r\n\r\n return (\r\n \r\n #{ rank }\r\n \r\n e.target.src = getTeamLogo('default')}\r\n alt='team-logo'\r\n />\r\n \r\n { team.initial }\r\n \r\n \r\n \r\n \r\n \r\n {\r\n team.players.sort(sortByPlayerStatus).map(i => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n { team.totalPoints }\r\n { team.currentKills }\r\n
\r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst HeaderRow = styled.tr`\r\n background: url('/assets/img/being2/header.png');\r\n font-family: 'BarlowCondensed-Light';\r\n color: #000;\r\n font-size: 22px;\r\n\r\n td {\r\n width: 298px !important;\r\n height: 49px !important;\r\n\r\n letter-spacing: 8px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n LEADERBOARD\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst HeaderRow = styled.tr`\r\n background: rgba(0, 0, 0, 0.5);\r\n width: 297px !important;\r\n\r\n td {\r\n color: ${styles.secondary};\r\n text-transform: uppercase;\r\n padding: 7.25px 4.53px;\r\n\r\n &:first-child {\r\n background: rgba(0, 0, 0, 0.5);\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n RANK\r\n \r\n TEAM\r\n \r\n ALIVE\r\n POINTS\r\n KILLS\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardSubHeader from './LeaderboardSubHeader';\r\n\r\nconst LeaderboardTable = styled.table`\r\n background: rgba(0, 0, 0, 0.7);\r\n margin-top: 140px;\r\n width: 297px !important;\r\n\r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n font-family: 'BarlowCondensed-Regular';\r\n font-size: 18px;\r\n\r\n &.bc-show {\r\n margin-left: -300px;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -300px;}\r\n to {margin-left: 32px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 32px;\r\n animation: slideLeft 0.3s ease 0.2s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 10px;}\r\n to {margin-left: -300px;}\r\n }\r\n }\r\n`;\r\n\r\nconst Qualified = styled.div`\r\n position: fixed;\r\n background: #00ffae;\r\n\r\n width: 23px;\r\n height: 121px;\r\n top: 231px;\r\n left: 9px;\r\n\r\n p {\r\n font-family: 'BarlowCondensed-Regular';\r\n color: #000;\r\n text-transform: uppercase;\r\n padding: 0;\r\n margin: 0;\r\n margin-top: 7px;\r\n margin-left: 3px;\r\n writing-mode: vertical-rl;\r\n text-orientation: upright;\r\n font-size: 10px;\r\n }\r\n\r\n &.bc-show {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease 0.3s forwards;\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.2s ease 0s forwards;\r\n \r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nclass PacLiveTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, opts } = this.props;\r\n const top16 = leaderboard.slice(0, 16);\r\n\r\n return (\r\n loaded ?\r\n <>\r\n \r\n \r\n \r\n \r\n {\r\n top16.map((t, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default PacLiveTeamLeaderboard;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { isTeamDeath, sortByPlayerStatus } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamRow = styled.tr`\r\n text-transform: uppercase;\r\n line-height: 1.15em;\r\n\r\n &.team-death {\r\n opacity: 0.7;\r\n\r\n td {\r\n color: ${styles.secondary}A0; \r\n }\r\n }\r\n\r\n td {\r\n padding: 1px;\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n background: rgba(0, 0, 0, 0.8);\r\n color: ${styles.secondary};\r\n\r\n img {\r\n height: 20px !important;\r\n }\r\n }\r\n\r\n .team-rank, .team-matches {\r\n width: 45px !important;\r\n }\r\n\r\n .team-points {\r\n width: 60px !important;\r\n }\r\n\r\n .team-initial {\r\n padding-left: 7px;\r\n width: 50px !important;\r\n }\r\n\r\n .team-alive {\r\n table {\r\n margin: 0 auto;\r\n }\r\n\r\n padding: 0 6px;\r\n td {\r\n background: none;\r\n padding: 3px 1px;\r\n div {\r\n width: 7px;\r\n height: 14px;\r\n }\r\n }\r\n\r\n .alive {\r\n background: #eea12f;\r\n }\r\n .knocked {\r\n background: #e42e00;\r\n }\r\n .death {\r\n background: #00000000;\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { team, rank } = props;\r\n const teamDeath = isTeamDeath(team);\r\n\r\n return (\r\n \r\n \r\n { rank }\r\n \r\n \r\n { team.numberOfMatches }\r\n \r\n { team.initial }\r\n \r\n \r\n \r\n \r\n {\r\n team.players.sort(sortByPlayerStatus).map(i => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n { team.totalPoints - team.totalKills }+{ team.totalKills }\r\n
\r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n td {\r\n height: 37px;\r\n background: url('/assets/img/protality/survival-leaderboard-background-top.png');\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n background: rgba(0, 0, 0, 0.8);\r\n text-transform: uppercase;\r\n`;\r\n\r\nfunction LeaderboardColumnTitle(props) {\r\n\r\n return (\r\n \r\n SIRA\r\n O. Maç\r\n TAKIM\r\n OYUNCU\r\n PUAN\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardColumnTitle;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\n// import LeaderboardFooter from './LeaderboardFooter';\r\nimport LeaderboardColumnTitle from './LeaderboardColumnTitle';\r\n// import LeaderboardTwireFooter from './LeaderboardTwireFooter';\r\n\r\nconst LeaderboardTable = styled.table`\r\n width: 250px;\r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n font-family: 'BebasNeue Regular';\r\n font-size: 1.4em;\r\n\r\n &.bc-show {\r\n margin-left: -260px;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -260px;}\r\n to {margin-left: 40px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 10;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 10px;}\r\n to {margin-left: -260px;}\r\n }\r\n }\r\n`;\r\n\r\nclass ProtalityLiveSurvivalLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, overlayColor } = this.props;\r\n\r\n return (\r\n loaded ?\r\n \r\n \r\n \r\n {\r\n leaderboard.map((t, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n {/* */}\r\n {/* */}\r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default ProtalityLiveSurvivalLeaderboard;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { isTeamDeath, sortByPlayerStatus } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamRow = styled.tr`\r\n text-transform: uppercase;\r\n line-height: 1.15em;\r\n width: 224px;\r\n height: 34px;\r\n\r\n td {\r\n padding: 1px;\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n background: url('/assets/img/protality6/team-background.png');\r\n color: ${styles.secondary};\r\n\r\n img {\r\n height: 20px !important;\r\n }\r\n }\r\n\r\n .team-rank, .team-matches {\r\n width: 45px !important;\r\n }\r\n\r\n .team-points {\r\n width: 60px !important;\r\n }\r\n\r\n .team-initial {\r\n padding-left: 7px;\r\n width: 50px !important;\r\n }\r\n\r\n .team-alive {\r\n table {\r\n margin: 0 auto;\r\n }\r\n\r\n padding: 0 6px;\r\n td {\r\n background: none;\r\n padding: 3px 1px;\r\n div {\r\n width: 7px;\r\n height: 14px;\r\n }\r\n }\r\n\r\n .alive {\r\n background: #eea12f;\r\n }\r\n .knocked {\r\n background: #ff142e;\r\n }\r\n .death {\r\n background: #00000000;\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { team, rank } = props;\r\n const teamDeath = isTeamDeath(team);\r\n\r\n return (\r\n \r\n \r\n { rank }\r\n \r\n { team.initial }\r\n \r\n \r\n \r\n \r\n {\r\n team.players.sort(sortByPlayerStatus).map(i => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n { team.totalPoints - team.totalKills }+{ team.totalKills }\r\n
\r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n td {\r\n height: 37px;\r\n width: 224px;\r\n background: url('/assets/img/protality6/header.png');\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\ntd {\r\n height: 82px;\r\n width: 224px;\r\n background: url('/assets/img/protality6/footer.png');\r\n}\r\n`;\r\n\r\nfunction LeaderboardFooter(props) {\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardFooter;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n background: url('/assets/img/protality6/sub-header.png');\r\n text-transform: uppercase;\r\n`;\r\n\r\nfunction LeaderboardColumnTitle(props) {\r\n\r\n return (\r\n \r\n SIRA\r\n TAKIM\r\n OYUNCU\r\n PUAN\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardColumnTitle;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardFooter from './LeaderboardFooter';\r\nimport LeaderboardColumnTitle from './LeaderboardColumnTitle';\r\n\r\nconst LeaderboardTable = styled.table`\r\n width: 224px;\r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n font-family: 'BebasNeue Regular';\r\n font-size: 1.4em;\r\n\r\n &.bc-show {\r\n margin-left: -260px;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -260px;}\r\n to {margin-left: 40px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 10;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 10px;}\r\n to {margin-left: -260px;}\r\n }\r\n }\r\n`;\r\n\r\nclass ProtalityLiveSurvivalLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, overlayColor } = this.props;\r\n\r\n return (\r\n loaded ?\r\n \r\n \r\n \r\n {\r\n leaderboard.map((t, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n {/* */}\r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default ProtalityLiveSurvivalLeaderboard;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst StyledLogo = styled.img`\r\n height: 22px;\r\n margin-top: 5px;\r\n`;\r\n\r\nfunction LeaderboardFooter(props) {\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardFooter;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { isTeamDeath, sortByPlayerStatus } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamRow = styled.tr`\r\n text-transform: uppercase;\r\n\r\n &.team-death {\r\n opacity: 0.7;\r\n }\r\n\r\n td {\r\n padding: 1px;\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n background: #FFFFFFEE;\r\n color: #000;\r\n\r\n img {\r\n height: 20px !important;\r\n }\r\n }\r\n\r\n .team-rank {\r\n width: 25px !important;\r\n }\r\n\r\n .team-logo, .team-points {\r\n width: 35px !important;\r\n }\r\n\r\n .team-initial, .team-alive {\r\n width: 40px !important;\r\n }\r\n\r\n .team-alive {\r\n padding: 0 6px;\r\n td {\r\n background: none;\r\n padding: 3px 2px;\r\n div {\r\n width: 3px;\r\n height: 20px;\r\n }\r\n }\r\n\r\n .alive {\r\n background: #222682;\r\n }\r\n .death {\r\n background: #60606090;\r\n }\r\n .knocked {\r\n background: ${styles.danger};\r\n }\r\n }\r\n\r\n .team-points {\r\n color: #222682;\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { team, rank, overall } = props;\r\n\r\n return (\r\n \r\n \r\n { rank }\r\n \r\n { team.initial }\r\n \r\n \r\n \r\n \r\n {\r\n team.players.sort(sortByPlayerStatus).map(i => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {\r\n overall ?\r\n { team.wins }\r\n :\r\n null\r\n }\r\n { team.totalKills }\r\n
\r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst HeaderRow = styled.tr`\r\n background: #222682;\r\n\r\n td {\r\n color: ${styles.secondary};\r\n text-transform: uppercase;\r\n padding: 1px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n Leaderboard\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst HeaderRow = styled.tr`\r\n background: ${styles.tertiary}EE;\r\n\r\n td {\r\n color: ${styles.secondary};\r\n text-transform: uppercase;\r\n padding: 1px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n \r\n TEAM\r\n ALIVE\r\n {\r\n props.overall ?\r\n WWCD\r\n :\r\n null\r\n }\r\n KILLS\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardFooter from './LeaderboardFooter';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardSubHeader from './LeaderboardSubHeader';\r\n\r\nconst LeaderboardTable = styled.table`\r\n border-collapse:separate; \r\n border-spacing: 0 2px;\r\n width: ${ props => props.overall ? 220 : 170 }px;\r\n\r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n font-family: agency_fb;\r\n font-size: 1.4em;\r\n\r\n &.bc-show {\r\n margin-left: -230px;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -230px;}\r\n to {margin-left: 40px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 10;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 10px;}\r\n to {margin-left: -230px;}\r\n }\r\n }\r\n`;\r\n\r\nclass PsjLiveTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, opts } = this.props;\r\n const top16 = leaderboard.slice(0, 16).sort((a, b) => {\r\n if (a.wins !== b.wins) {\r\n return a.wins > b.wins ? -1 : 1;\r\n } else if (a.totalKills !== b.totalKills) {\r\n return a.totalKills > b.totalKills ? -1 : 1;\r\n }\r\n return 0;\r\n })\r\n\r\n return (\r\n loaded ?\r\n \r\n \r\n \r\n \r\n {\r\n top16.map((t, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default PsjLiveTeamLeaderboard;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { isTeamDeath, sortByPlayerStatus } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamRow = styled.tr`\r\n text-transform: uppercase;\r\n\r\n &.team-death {\r\n opacity: 0.7;\r\n }\r\n\r\n td {\r\n padding: 1px;\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n background: white;\r\n color: black;\r\n\r\n img {\r\n height: 20px !important;\r\n }\r\n }\r\n\r\n .team-rank {\r\n width: 25px !important;\r\n }\r\n\r\n .team-logo, .team-points {\r\n width: 30px !important;\r\n }\r\n\r\n .team-initial, .team-alive {\r\n width: 40px !important;\r\n }\r\n\r\n .team-alive {\r\n padding: 0 6px;\r\n td {\r\n background: none;\r\n padding: 3px 2px;\r\n div {\r\n width: 3px;\r\n height: 20px;\r\n }\r\n }\r\n\r\n .alive {\r\n background: #242484;\r\n }\r\n .death {\r\n background: #60606090;\r\n }\r\n .knocked {\r\n background: ${styles.danger};\r\n }\r\n }\r\n\r\n .team-points {\r\n color: #242484;\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { team, rank, overall } = props;\r\n\r\n return (\r\n \r\n \r\n { rank }\r\n \r\n { team.initial }\r\n \r\n \r\n \r\n \r\n {\r\n team.players.sort(sortByPlayerStatus).map(i => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n { team.totalKills }\r\n {\r\n overall ?\r\n { team.totalPoints }\r\n :\r\n null\r\n }\r\n
\r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst HeaderRow = styled.tr`\r\n background: #242484;\r\n\r\n td {\r\n color: ${styles.secondary};\r\n text-transform: uppercase;\r\n padding: 1px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n Leaderboard\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst HeaderRow = styled.tr`\r\n background: ${styles.tertiary}EE;\r\n\r\n td {\r\n color: ${styles.secondary};\r\n text-transform: uppercase;\r\n padding: 1px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n \r\n TEAM\r\n ALIVE\r\n KILLS\r\n {\r\n props.overall ?\r\n PTS\r\n :\r\n null\r\n }\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardSubHeader from './LeaderboardSubHeader';\r\n\r\nconst LeaderboardTable = styled.table`\r\n border-collapse:separate; \r\n border-spacing: 0 2px;\r\n width: ${ props => props.overall ? 200 : 150 }px;\r\n\r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n font-family: agency_fb;\r\n font-size: 1.4em;\r\n\r\n &.bc-show {\r\n margin-left: -200;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -200px;}\r\n to {margin-left: 40px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 10;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 10px;}\r\n to {margin-left: -200px;}\r\n }\r\n }\r\n`;\r\n\r\nclass PacLiveTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, opts } = this.props;\r\n const top16 = leaderboard.slice(0, 16);\r\n\r\n return (\r\n loaded ?\r\n \r\n \r\n \r\n \r\n {\r\n top16.map((t, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default PacLiveTeamLeaderboard;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { isTeamDeath, sortByPlayerStatus } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamRow = styled.div`\r\n text-transform: uppercase;\r\n width: ${props => props.width}px;\r\n height: 41px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n font-size: 16px;\r\n line-height: 16px;\r\n background: url('/assets/img/predator/body.png');\r\n color: white;\r\n\r\n margin-top: ${props => props.rank === 1 ? '0' : '-2'}px;\r\n\r\n\r\n .td {\r\n width: ${props => props.width/5}px;\r\n height: 37px;\r\n align-items: center;\r\n display: flex;\r\n }\r\n\r\n .team-rank {\r\n color: #00b4ff;\r\n padding-right: 12px;\r\n padding-left: 12px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: end;\r\n text-align: right !important;\r\n font-family: Predator-Regular;\r\n }\r\n\r\n .team-initial {\r\n padding: 0 3px;\r\n width: 48px;\r\n }\r\n\r\n p {\r\n width: 100%;\r\n margin: 0;\r\n padding: 0;\r\n margin-top: 5px;\r\n }\r\n\r\n .team-points {\r\n justify-content: center;\r\n text-align: center;\r\n }\r\n\r\n .team-alive {\r\n padding: 0 12px;\r\n td {\r\n background: none;\r\n padding: 3px 2px;\r\n div {\r\n width: 4px;\r\n height: 25px;\r\n margin-top: 5px;\r\n }\r\n }\r\n\r\n .alive {\r\n background: #00b4ff;\r\n }\r\n .death {\r\n background: #646464;\r\n }\r\n .knocked {\r\n background: #e60046;\r\n }\r\n }\r\n\r\n .team-death-overlay {\r\n position: absolute;\r\n width: 242px;\r\n height: 38px;\r\n opacity: 0.8;\r\n background: url('/assets/img/predator/out-overlay.png');\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { team, rank, width } = props;\r\n\r\n return (\r\n \r\n {\r\n isTeamDeath(team) ?\r\n
\r\n :\r\n null\r\n }\r\n
\r\n

#{ rank }

\r\n
\r\n

{ team.initial }

\r\n
\r\n \r\n \r\n \r\n {\r\n team.players.sort(sortByPlayerStatus).map(i => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n

{ team.totalKills }

\r\n

{ team.totalPoints }

\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst HeaderRow = styled.div`\r\n width: ${props => props.width}px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n background: url(/assets/img/predator/header.png);\r\n background-position: -5px -6px;\r\n max-height: 60px;\r\n\r\n .header {\r\n width: ${props => props.width}px;\r\n font-size: 20px;\r\n line-height: 20px;\r\n height: 33px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: white;\r\n font-family: Predator-Regular;\r\n }\r\n\r\n .sub-header {\r\n width: ${props => props.width/5}px;\r\n font-size: 12px;\r\n line-height: 18px;\r\n height: 24px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: -webkit-linear-gradient(right, #1eff96 85%, #00b4ff 100%);\r\n -webkit-background-clip: text;\r\n -webkit-text-fill-color: transparent;\r\n background-position: center;\r\n background-attachment: fixed;\r\n font-family: Predator-Regular;\r\n\r\n &.text-left {\r\n justify-content: start;\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n
LEADERBOARD
\r\n
\r\n
TEAM
\r\n
ALIVE
\r\n
KILLS
\r\n
TOTAL
\r\n
\r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\n\r\nconst WIDTH = 247;\r\n\r\nconst Wrapper = styled.div`\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 1920px;\r\n height: 1080px;\r\n\r\n .overlay {\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n width: ${WIDTH}px;\r\n height: 667px;\r\n \r\n position: fixed;\r\n left: 35px;\r\n top: 142px;\r\n \r\n color: #000;\r\n \r\n font-family: Predator-Bold;\r\n \r\n &.bc-show {\r\n left: -300px;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {left: -300px;}\r\n to {left: 35px;}\r\n }\r\n }\r\n \r\n &.bc-hide {\r\n left: 35px;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {left: 35px;}\r\n to {left: -300px;}\r\n }\r\n }\r\n }\r\n`;\r\n\r\nclass Pjc21LiveTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show } = this.props;\r\n const top16 = leaderboard.slice(0, 16);\r\n // top16[0].players = [{status: 'alive'}, {status: 'alive'}, {status: 'knocked'}, {status: 'death'}];\r\n\r\n return (\r\n loaded ?\r\n \r\n
\r\n \r\n {\r\n top16.map((t, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n
\r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default Pjc21LiveTeamLeaderboard;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { isTeamDeath, sortByPlayerStatus } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamRow = styled.tr`\r\n text-transform: uppercase;\r\n\r\n &.team-death {\r\n opacity: 0.7;\r\n }\r\n\r\n td {\r\n padding: 1px;\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n background: white;\r\n color: black;\r\n\r\n img {\r\n height: 20px !important;\r\n }\r\n }\r\n\r\n .team-rank {\r\n width: 25px !important;\r\n }\r\n\r\n .team-logo, .team-points {\r\n width: 30px !important;\r\n }\r\n\r\n .team-initial, .team-alive {\r\n width: 40px !important;\r\n }\r\n\r\n .team-alive {\r\n padding: 0 6px;\r\n td {\r\n background: none;\r\n padding: 3px 2px;\r\n div {\r\n width: 3px;\r\n height: 20px;\r\n }\r\n }\r\n\r\n .alive {\r\n background: #000;\r\n }\r\n .death {\r\n background: #60606090;\r\n }\r\n .knocked {\r\n background: ${styles.danger};\r\n }\r\n }\r\n\r\n .team-points {\r\n color: #242484;\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { team, rank, overall } = props;\r\n\r\n return (\r\n \r\n \r\n { rank }\r\n \r\n { team.initial }\r\n \r\n \r\n \r\n \r\n {\r\n team.players.sort(sortByPlayerStatus).map(i => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n { team.totalPoints - team.totalKills }\r\n {\r\n overall ?\r\n { team.totalPoints }\r\n :\r\n null\r\n }\r\n
\r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst HeaderRow = styled.tr`\r\n background: #AA3333;\r\n\r\n td {\r\n color: ${styles.secondary};\r\n text-transform: uppercase;\r\n padding: 1px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n Leaderboard\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst HeaderRow = styled.tr`\r\n background: #000;\r\n\r\n td {\r\n color: ${styles.secondary};\r\n text-transform: uppercase;\r\n padding: 1px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n \r\n TEAM\r\n ALIVE\r\n PP\r\n {\r\n props.overall ?\r\n PTS\r\n :\r\n null\r\n }\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst StyledLogo = styled.img`\r\n height: 22px;\r\n margin-top: 5px;\r\n`;\r\n\r\nfunction LeaderboardFooter(props) {\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardFooter;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardSubHeader from './LeaderboardSubHeader';\r\nimport LeaderboardFooter from './LeaderboardFooter';\r\n\r\nconst LeaderboardTable = styled.table`\r\n border-collapse:separate; \r\n border-spacing: 0 2px;\r\n width: ${ props => props.overall ? 200 : 150 }px;\r\n\r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n font-family: agency_fb;\r\n font-size: 1.4em;\r\n\r\n &.bc-show {\r\n margin-left: -200;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -200px;}\r\n to {margin-left: 40px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 10;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 10px;}\r\n to {margin-left: -200px;}\r\n }\r\n }\r\n`;\r\n\r\nclass PacLiveTeamLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, opts } = this.props;\r\n const top16 = leaderboard.slice(0, 16);\r\n\r\n return (\r\n loaded ?\r\n \r\n \r\n \r\n \r\n {\r\n top16.map((t, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default PacLiveTeamLeaderboard;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { isTeamDeath, sortByPlayerStatus } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamRow = styled.tr`\r\n text-transform: uppercase;\r\n\r\n &.team-death {\r\n opacity: 0.7;\r\n }\r\n\r\n td {\r\n padding: 1px;\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n background: ${styles.tertiary}CC;\r\n color: ${styles.secondary}AA;\r\n\r\n img {\r\n height: 20px !important;\r\n }\r\n }\r\n\r\n .team-rank {\r\n width: 30px !important;\r\n color: ${styles.secondary};\r\n background: ${styles.tertiary};\r\n }\r\n\r\n .team-points {\r\n width: 45px !important;\r\n color: ${styles.secondary};\r\n }\r\n\r\n .team-initial {\r\n padding-left: 7px;\r\n width: 60px !important;\r\n }\r\n\r\n .team-alive {\r\n padding: 0 6px;\r\n td {\r\n background: none;\r\n padding: 3px 2px;\r\n div {\r\n width: 3px;\r\n height: 17px;\r\n }\r\n }\r\n\r\n .alive {\r\n background: ${styles.success};\r\n }\r\n .knocked {\r\n background: ${styles.danger};\r\n }\r\n .death {\r\n background: #60606090;\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { team, rank } = props;\r\n const teamDeath = isTeamDeath(team);\r\n\r\n return (\r\n \r\n \r\n { rank }\r\n \r\n { team.initial }\r\n { team.totalPoints }\r\n \r\n \r\n \r\n \r\n {\r\n team.players.sort(sortByPlayerStatus).map(i => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n color: ${ props => props.colors && props.colors.rankText ? props.colors.rankText : '#000'};\r\n \r\n td {\r\n background: ${ props => props.colors && props.colors.primary ? props.colors.primary : '#FFF'};\r\n text-transform: uppercase;\r\n padding: 1px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n\r\n return (\r\n \r\n Leaderboard\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n img {\r\n width: 100px;\r\n }\r\n`;\r\n\r\nfunction LeaderboardFooter(props) {\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardFooter;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardFooter from './LeaderboardFooter';\r\n\r\nconst LeaderboardTable = styled.table`\r\n border-collapse:separate; \r\n border-spacing: 0 2px;\r\n\r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n font-family: agency_fb;\r\n font-size: 1.4em;\r\n\r\n &.bc-show {\r\n margin-left: -210;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -210px;}\r\n to {margin-left: 40px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 10;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 10px;}\r\n to {margin-left: -210px;}\r\n }\r\n }\r\n`;\r\n\r\nclass DefaultLiveSurvivalLeaderboard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, overlayColor } = this.props;\r\n\r\n return (\r\n loaded ?\r\n \r\n \r\n \r\n {\r\n leaderboard.map((t, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default DefaultLiveSurvivalLeaderboard;","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport ESL from './esl/EslLiveSurvivalLeaderboard';\r\nimport PSL from './psl/PslLiveTeamLeaderboard';\r\nimport PJC from './pjc/PjcLiveSurvivalLeaderboard';\r\nimport PJC21 from './pjc21/Pjc21LiveSurvivalLeaderboard';\r\nimport PJC221 from './pjc22-1/Pjc221LiveSurvivalLeaderboard';\r\nimport DNW from './dnw/DnwLiveSurvivalLeaderboard';\r\nimport Being from './being/BeingLiveSurvivalLeaderboard';\r\nimport Being2 from './being2/BeingLiveSurvivalLeaderboard';\r\nimport Protality from './protality/ProtalityLiveSurvivalLeaderboard';\r\nimport Protality6 from './protality6/ProtalityLiveSurvivalLeaderboard';\r\nimport PSJ from './psj/PsjLiveSurvivalLeaderboard';\r\nimport PAC from './pac/PacLiveSurvivalLeaderboard';\r\nimport Predator from './predator/PredatorLiveSurvivalLeaderboard';\r\nimport Atlantic from './atl/PacLiveSurvivalLeaderboard';\r\nimport Default from './default/DefaultLiveSurvivalLeaderboard';\r\n\r\nconst PUBGLiveSurvivalLeaderboardOverlay = (props) => {\r\n const { overlayDesign } = props;\r\n // if (props.leaderboard.length) {\r\n // props.leaderboard[0].players = [ { status: 'alive' }, { status: 'alive' }, { status: 'knocked' }, { status: 'death' } ]\r\n // props.leaderboard[1].players = [ { status: 'alive' }, { status: 'alive' }, { status: 'death' }, { status: 'death' } ]\r\n // props.leaderboard[2].players = [ { status: 'alive' }, { status: 'knocked' }, { status: 'knocked' }, { status: 'death' } ]\r\n // props.leaderboard[3].players = [ { status: 'alive' }, { status: 'death' }, { status: 'knocked' }, { status: 'death' } ]\r\n // props.leaderboard[4].players = [ { status: 'alive' }, { status: 'death' }, { status: 'knocked' }, { status: 'death' } ]\r\n // props.leaderboard[5].players = [ { status: 'alive' }, { status: 'knocked' }, { status: 'knocked' }, { status: 'death' } ]\r\n // props.leaderboard[6].players = [ { status: 'alive' }, { status: 'knocked' }, { status: 'knocked' }, { status: 'death' } ]\r\n // props.leaderboard[7].players = [ { status: 'death' }, { status: 'death' }, { status: 'death' }, { status: 'death' } ]\r\n // props.leaderboard[8].players = [ { status: 'death' }, { status: 'death' }, { status: 'death' }, { status: 'death' } ]\r\n // props.leaderboard[9].players = [ { status: 'death' }, { status: 'death' }, { status: 'death' }, { status: 'death' } ]\r\n // props.leaderboard[10].players = [ { status: 'death' }, { status: 'death' }, { status: 'death' }, { status: 'death' } ]\r\n // props.leaderboard[11].players = [ { status: 'death' }, { status: 'death' }, { status: 'death' }, { status: 'death' } ]\r\n // props.leaderboard[12].players = [ { status: 'death' }, { status: 'death' }, { status: 'death' }, { status: 'death' } ]\r\n // props.leaderboard[13].players = [ { status: 'death' }, { status: 'death' }, { status: 'death' }, { status: 'death' } ]\r\n // props.leaderboard[14].players = [ { status: 'death' }, { status: 'death' }, { status: 'death' }, { status: 'death' } ]\r\n // props.leaderboard[15].players = [ { status: 'death' }, { status: 'death' }, { status: 'death' }, { status: 'death' } ]\r\n // }\r\n\r\n return (\r\n overlayDesign === 'psl' ?\r\n \r\n :\r\n overlayDesign === 'pjc' ?\r\n \r\n :\r\n overlayDesign === 'pjc21' ?\r\n \r\n :\r\n overlayDesign === 'pjc22-1' ?\r\n \r\n :\r\n overlayDesign === 'dnw' ?\r\n \r\n :\r\n overlayDesign === 'esl' ?\r\n \r\n :\r\n overlayDesign === 'being' ?\r\n \r\n :\r\n overlayDesign === 'being2' ?\r\n \r\n :\r\n overlayDesign === 'protality6' ?\r\n \r\n :\r\n overlayDesign === 'protality' ?\r\n \r\n :\r\n overlayDesign === 'psj' ?\r\n \r\n :\r\n overlayDesign === 'pac' ?\r\n \r\n :\r\n overlayDesign === 'predator' ?\r\n \r\n :\r\n overlayDesign === 'atl' ?\r\n \r\n :\r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n leaderboard: state.overlay.pubg || [],\r\n overlayDesign: (state.overlay.tournament || {}).overlayDesign,\r\n overlayColor: (state.overlay.tournament || {}).overlayColor,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n loaded: state.overlay.loaded,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PUBGLiveSurvivalLeaderboardOverlay);\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport { PUBG_GAME } from '../../../../../util/Games';\r\nimport CheckBox from '../../../common/base/controller/inputs/CheckBox';\r\nimport { COMPONENT_STATE_SUBSCRIPTION } from '../../../constants';\r\n\r\nclass PUBGLiveMapTeamsController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PUBGLiveMapTeamsController;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { addMissingPlayers, getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst Wrapper = styled.table`\r\n width: 420px;\r\n position: fixed;\r\n top: ${props => props.index * 135}px;\r\n text-align: center;\r\n vertical-align: middle;\r\n height: 135px;\r\n border-bottom: 1px solid black;\r\n\r\n &.bc-show {\r\n left: ${props => props.side === 'left' ? '-420' : '1920'}px;\r\n animation: slideIn${props => props.side} 0.5s ease 0s forwards;\r\n \r\n @keyframes slideIn${props => props.side} {\r\n from {left: ${props => props.side === 'left' ? '-420' : '1920'}px;}\r\n to {left: ${props => props.side === 'left' ? '0' : '1500'}px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n left: ${props => props.side === 'left' ? '0' : '1500'}px;\r\n animation: slideOut${props => props.side} 0.5s ease 0s forwards;\r\n \r\n @keyframes slideOut${props => props.side} {\r\n from {left: ${props => props.side === 'left' ? '0' : '1500'}px;}\r\n to {left: ${props => props.side === 'left' ? '-420' : '1920'}px;}\r\n }\r\n }\r\n \r\n td.team-logo {\r\n border-bottom: 1px solid white;\r\n width: 140px;\r\n background: #000;\r\n\r\n img {\r\n height: 100px;\r\n }\r\n }\r\n\r\n tr.team-alive {\r\n font-family: 'Calps Sans';\r\n font-weight: 400;\r\n font-size: 26px;\r\n line-height: 26px;\r\n \r\n td.player-name {\r\n text-align: ${props => props.side};\r\n padding: 0 15px;\r\n width: 280px;\r\n background: #ffff08;\r\n color: #000;\r\n\r\n &.player-death {\r\n background: #e4e4e4;\r\n\r\n span {\r\n opacity: 0.3;\r\n }\r\n }\r\n }\r\n }\r\n\r\n tr.team-death {\r\n font-family: 'ESL Legend';\r\n font-weight: 600;\r\n font-size: 60px;\r\n\r\n td.team-eliminated {\r\n width: 280px;\r\n color: #000;\r\n background: #e4e4e4;\r\n }\r\n }\r\n`;\r\n\r\nfunction Team(props) {\r\n const { team, index, side, show } = props;\r\n const teamDeath = team.players.every(p => p.status === 'death');\r\n addMissingPlayers(team.players);\r\n\r\n return (\r\n \r\n {\r\n teamDeath ?\r\n \r\n {\r\n side === 'left' ?\r\n \r\n e.target.src = getTeamLogo('pubg_logo_masters-04')}\r\n alt=\"team-logo\"\r\n />\r\n \r\n :\r\n null\r\n }\r\n ELIMINATED\r\n {\r\n side === 'right' ?\r\n \r\n e.target.src = getTeamLogo('pubg_logo_masters-04')}\r\n alt=\"team-logo\"\r\n />\r\n \r\n :\r\n null\r\n }\r\n \r\n :\r\n team.players.map((p, i) => {\r\n return (\r\n \r\n {\r\n i === 0 && side === 'left' ?\r\n \r\n e.target.src = getTeamLogo('pubg_logo_masters-04')}\r\n alt=\"team-logo\"\r\n />\r\n \r\n :\r\n null\r\n }\r\n { p.ign }\r\n {\r\n i === 0 && side === 'right' ?\r\n \r\n e.target.src = getTeamLogo('pubg_logo_masters-04')}\r\n alt=\"team-logo\"\r\n />\r\n \r\n :\r\n null\r\n }\r\n \r\n );\r\n })\r\n }\r\n \r\n );\r\n}\r\n\r\nexport default Team;","import React, { Component } from 'react';\r\nimport Team from './Team';\r\n\r\nclass EslLiveMapTeams extends Component {\r\n render() {\r\n const { loaded, teams, show } = this.props;\r\n if (teams.length < 16) Array.from(Array(16-teams.length)).forEach(() => teams.push({ name: '', players: [{ status: 'death' }] }));\r\n\r\n return (\r\n loaded ?\r\n teams.map((t, i) => {\r\n return (\r\n 7 ? i - 8 : i}\r\n side={i < 8 ? 'left' : 'right'}\r\n />\r\n );\r\n })\r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default EslLiveMapTeams;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { addMissingPlayers, getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst Wrapper = styled.table`\r\n font-family: machine, noto-bold;\r\n position: fixed;\r\n top: ${props => props.index * 135}px;\r\n text-align: center;\r\n vertical-align: middle;\r\n height: 135px;\r\n\r\n &.bc-show {\r\n left: ${props => props.side === 'left' ? '-420' : '1920'}px;\r\n animation: slideIn${props => props.side} 0.5s ease 0s forwards;\r\n \r\n @keyframes slideIn${props => props.side} {\r\n from {left: ${props => props.side === 'left' ? '-420' : '1920'}px;}\r\n to {left: ${props => props.side === 'left' ? '0' : '1500'}px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n left: ${props => props.side === 'left' ? '0' : '1500'}px;\r\n animation: slideOut${props => props.side} 0.5s ease 0s forwards;\r\n \r\n @keyframes slideOut${props => props.side} {\r\n from {left: ${props => props.side === 'left' ? '0' : '1500'}px;}\r\n to {left: ${props => props.side === 'left' ? '-420' : '1920'}px;}\r\n }\r\n }\r\n \r\n td.team-logo {\r\n border-bottom: 1px solid white;\r\n width: 140px;\r\n background: #020202;\r\n\r\n img {\r\n height: 100px;\r\n }\r\n }\r\n\r\n tr.team-alive {\r\n font-weight: 400;\r\n font-size: 26px;\r\n line-height: 26px;\r\n \r\n td.player-name {\r\n text-align: ${props => props.side};\r\n padding: 0 15px;\r\n width: 280px;\r\n color: #FFF;\r\n\r\n &.player-death {\r\n color: #FFF;\r\n background: #60606090;\r\n\r\n span {\r\n opacity: 0.3;\r\n }\r\n }\r\n\r\n &.player-knocked {\r\n color: #FFF;\r\n background: #682833;\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst PlayerRow = styled.td`\r\n background-image: url('/assets/img/pjc/team-map.png');\r\n background-attachment: initial;\r\n background-position-x: ${props => props.side === 'left' ? -100 : -1500}px;\r\n background-position-y: -${props => props.index * 135 + props.playerIndex * (135/4)}px;\r\n background-repeat: no-repeat;\r\n`;\r\n\r\nfunction Team(props) {\r\n const { team, index, side, show } = props;\r\n addMissingPlayers(team.players);\r\n\r\n return (\r\n \r\n {\r\n team.players.map((p, i) => {\r\n return (\r\n \r\n {\r\n i === 0 && side === 'left' ?\r\n \r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team-logo\"\r\n />\r\n \r\n :\r\n null\r\n }\r\n { p.ign }\r\n {\r\n i === 0 && side === 'right' ?\r\n \r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team-logo\"\r\n />\r\n \r\n :\r\n null\r\n }\r\n \r\n );\r\n })\r\n }\r\n \r\n );\r\n}\r\n\r\nexport default Team;","import React, { Component } from 'react';\r\nimport Team from './Team';\r\n\r\nclass PjcLiveMapTeams extends Component {\r\n render() {\r\n const { loaded, teams, show } = this.props;\r\n if (teams.length < 16) Array.from(Array(16-teams.length)).forEach(() => teams.push({ name: '', players: []}));\r\n\r\n return (\r\n loaded || teams.length ?\r\n teams.map((t, i) => {\r\n return (\r\n 7 ? i - 8 : i}\r\n side={i < 8 ? 'left' : 'right'}\r\n />\r\n );\r\n })\r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default PjcLiveMapTeams;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { addMissingPlayers, getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst Wrapper = styled.table`\r\n position: fixed;\r\n top: ${props => props.index * 135}px;\r\n text-align: center;\r\n vertical-align: middle;\r\n height: 135px;\r\n width: 420px;\r\n background: url('/assets/img/being/live_team_map_${props => props.corner}_background.png');\r\n\r\n &.bc-show {\r\n left: ${props => props.side === 'left' ? '-420' : '1920'}px;\r\n animation: slideIn${props => props.side} 0.5s ease 0s forwards;\r\n \r\n @keyframes slideIn${props => props.side} {\r\n from {left: ${props => props.side === 'left' ? '-420' : '1920'}px;}\r\n to {left: ${props => props.side === 'left' ? '0' : '1500'}px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n left: ${props => props.side === 'left' ? '0' : '1500'}px;\r\n animation: slideOut${props => props.side} 0.5s ease 0s forwards;\r\n \r\n @keyframes slideOut${props => props.side} {\r\n from {left: ${props => props.side === 'left' ? '0' : '1500'}px;}\r\n to {left: ${props => props.side === 'left' ? '-420' : '1920'}px;}\r\n }\r\n }\r\n\r\n .team-logo {\r\n height: 110px;\r\n position: absolute;\r\n top: 12px;\r\n ${props => props.side}: 17px;\r\n }\r\n\r\n .eliminated {\r\n color: #ff0050;\r\n font-family: 'CenturyGothicBold';\r\n font-size: 40px;\r\n position: absolute;\r\n top: 35px;\r\n ${props => props.side}: 165px;\r\n text-shadow: 0 0 20px #ff0050;\r\n }\r\n\r\n .players {\r\n color: #fff;\r\n font-family: 'CenturyGothicBold';\r\n font-size: 18px;\r\n line-height: 25px;\r\n position: absolute;\r\n top: 13px;\r\n ${props => props.side}: 165px;\r\n\r\n .death {\r\n color: #808080;\r\n }\r\n\r\n .knocked {\r\n color: #ff0050;\r\n }\r\n }\r\n`;\r\n\r\nfunction Team(props) {\r\n const { team, index, side, show } = props;\r\n const teamDeath = team.players.every(p => p.status === 'death');\r\n addMissingPlayers(team.players);\r\n\r\n const corner = `${side}_${ index % 8 < 4 ? 'top' : 'bottom' }`;\r\n\r\n return (\r\n \r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team-logo\"\r\n />\r\n {\r\n teamDeath ?\r\n

ELIMINATED

\r\n :\r\n \r\n \r\n {\r\n team.players.map(p => {\r\n return (\r\n \r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n
{ p.ign }
\r\n }\r\n \r\n );\r\n}\r\n\r\nexport default Team;","import React, { Component } from 'react';\r\nimport Team from './Team';\r\n\r\nclass BeingLiveMapTeams extends Component {\r\n render() {\r\n const { loaded, teams, show } = this.props;\r\n if (teams.length < 16) Array.from(Array(16-teams.length)).forEach(() => teams.push({ name: '', players: [{ status: 'death' }] }));\r\n\r\n return (\r\n loaded ?\r\n teams.map((t, i) => {\r\n return (\r\n 7 ? i - 8 : i}\r\n side={i < 8 ? 'left' : 'right'}\r\n />\r\n );\r\n })\r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default BeingLiveMapTeams;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { addMissingPlayers, getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst Wrapper = styled.table`\r\n width: 420px;\r\n position: fixed;\r\n top: ${props => props.index * 135}px;\r\n text-align: center;\r\n vertical-align: middle;\r\n height: 135px;\r\n border: 1px solid #808080;\r\n background: rgba(0, 0, 0, 0.93);\r\n\r\n &::after {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n filter: blur(5px);\r\n z-index: -1;\r\n box-shadow: inset 0 8px 0 5px rgba(0, 0, 0, 0.5);\r\n }\r\n\r\n &.bc-show {\r\n left: ${props => props.side === 'left' ? '-420' : '1920'}px;\r\n animation: slideIn${props => props.side} 0.5s ease 0s forwards;\r\n \r\n @keyframes slideIn${props => props.side} {\r\n from {left: ${props => props.side === 'left' ? '-420' : '1920'}px;}\r\n to {left: ${props => props.side === 'left' ? '0' : '1500'}px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n left: ${props => props.side === 'left' ? '0' : '1500'}px;\r\n animation: slideOut${props => props.side} 0.5s ease 0s forwards;\r\n \r\n @keyframes slideOut${props => props.side} {\r\n from {left: ${props => props.side === 'left' ? '0' : '1500'}px;}\r\n to {left: ${props => props.side === 'left' ? '-420' : '1920'}px;}\r\n }\r\n }\r\n \r\n td.team-logo {\r\n width: 140px;\r\n\r\n img {\r\n height: 100px;\r\n }\r\n }\r\n\r\n tr.team-alive {\r\n font-family: 'BarlowCondensed-Light';\r\n font-size: 20px;\r\n line-height: 26px;\r\n \r\n td.player-name {\r\n text-align: ${props => props.side === 'left' ? 'right' : 'left'};\r\n padding: 0 8px;\r\n width: 265px;\r\n color: #fff;\r\n\r\n &.player-death {\r\n opacity: 0.5;\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst PlayerIndicator = styled.td`\r\n div {\r\n min-width: 4px;\r\n max-width: 4px;\r\n height: 19px;\r\n ${props => props.color ? `background: ${props.color};` : ''}\r\n }\r\n`;\r\n\r\nconst EmptyTd = styled.td`\r\n min-widht: 11px;\r\n`;\r\n\r\nfunction Team(props) {\r\n const { team, index, side, show } = props;\r\n addMissingPlayers(team.players);\r\n\r\n return (\r\n \r\n {\r\n team.players.map((p, i) => {\r\n return (\r\n \r\n {\r\n i === 0 && side === 'left' ?\r\n \r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team-logo\"\r\n />\r\n \r\n :\r\n null\r\n }\r\n {\r\n side === 'right' ?\r\n <>\r\n \r\n \r\n
\r\n \r\n \r\n :\r\n null\r\n }\r\n { p.ign }\r\n {\r\n side === 'left' ?\r\n <>\r\n \r\n
\r\n \r\n \r\n \r\n :\r\n null\r\n }\r\n {\r\n i === 0 && side === 'right' ?\r\n \r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team-logo\"\r\n />\r\n \r\n :\r\n null\r\n }\r\n \r\n );\r\n })\r\n }\r\n \r\n );\r\n}\r\n\r\nexport default Team;","import React, { Component } from 'react';\r\nimport Team from './Team';\r\n\r\nclass EslLiveMapTeams extends Component {\r\n render() {\r\n const { loaded, teams, show } = this.props;\r\n if (teams.length < 16) Array.from(Array(16-teams.length)).forEach(() => teams.push({ name: '', players: [{ status: 'death' }] }));\r\n\r\n return (\r\n loaded ?\r\n teams.map((t, i) => {\r\n return (\r\n 7 ? i - 8 : i}\r\n side={i < 8 ? 'left' : 'right'}\r\n />\r\n );\r\n })\r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default EslLiveMapTeams;","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport ESL from './esl/EslLiveMapTeams';\r\nimport PJC from './pjc/PjcLiveMapTeams';\r\nimport Being from './being/BeingLiveMapTeams';\r\nimport Being2 from './being2/Being2LiveMapTeams';\r\n\r\nconst PUBGLiveMapTeamsOverlay = (props) => {\r\n const { overlayDesign } = props;\r\n props.teams.sort((a, b) => a.name > b.name ? 1 : -1);\r\n // if (props.teams.length) {\r\n // console.log(props.teams);\r\n // for (const t of props.teams) {\r\n // for (let i = 0; i < 4; i++) {\r\n // t.players.push({\r\n // ign: \"Test IGN\",\r\n // status: Math.random() > 0.5 ? 'alive' : Math.random() > 0.5 ? 'knocked' : 'death'\r\n // })\r\n // }\r\n // }\r\n // }\r\n // console.log(props.teams)\r\n\r\n return (\r\n overlayDesign === 'pjc' ?\r\n \r\n :\r\n overlayDesign === 'esl' ?\r\n \r\n :\r\n overlayDesign === 'being' ?\r\n \r\n :\r\n overlayDesign === 'being2' ?\r\n \r\n :\r\n null\r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n teams: state.overlay.pubg || [],\r\n overlayDesign: (state.overlay.tournament || {}).overlayDesign,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n loaded: state.overlay.loaded,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PUBGLiveMapTeamsOverlay);\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport CheckBox from '../../../common/base/controller/inputs/CheckBox';\r\nimport TeamSelect from '../../../common/base/controller/inputs/TeamSelect';\r\nimport { COMPONENT_STATE_SUBSCRIPTION, COMPONENT_STATE_TEAM } from '../../../constants';\r\nimport { PUBG_GAME } from '../../../../../util/Games';\r\n\r\nclass PUBGLiveTeamStatsController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PUBGLiveTeamStatsController;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Stat = styled.table`\r\n width: 100%;\r\n background: #1d1d1b;\r\n ${props => props.last ? 'margin-bottom: 25px;' : ''}\r\n\r\n td {\r\n padding: 5px 10px;\r\n }\r\n\r\n .stat-name {\r\n font-size: 22px;\r\n line-height: 20px;\r\n font-weight: 400;\r\n width: 60%;\r\n }\r\n\r\n .stat-value {\r\n font-size: 40px;\r\n line-height: 40px;\r\n width: 40%;\r\n }\r\n`;\r\n\r\nfunction TeamStat(props) {\r\n const { name, value, last } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n { name }\r\n \r\n \r\n { value }\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default TeamStat;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo, numberForDisplay } from '../../../../../../util/CommonUtil';\r\nimport TeamStat from './TeamStat';\r\nimport moment from 'moment';\r\n\r\nconst TEAM_MAPPING = {\r\n \"Toxic Players (RUS)\": \"Toxic Players\",\r\n \"BigBossLayf\": \"BBL Esports\",\r\n \"Natus Vincere\": \"NAVI\",\r\n \"Orgless (EU)\": \"Orgless\",\r\n}\r\n\r\nconst LeaderboardTable = styled.table`\r\n background: url('/assets/img/esl/IG_10_In_Game_Stats_Team_Stats_Background.png');\r\n background-repeat: no-repeat;\r\n width: 220px;\r\n height: 571px;\r\n font-family: 'ESL Legend';\r\n font-weight: 600;\r\n border-collapse: separate;\r\n\r\n &.bc-show {\r\n margin-left: -240px;\r\n animation: slideRight 0.3s ease 0.5s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -240px;}\r\n to {margin-left: 32px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 32px;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 32px;}\r\n to {margin-left: -240px;}\r\n }\r\n }\r\n\r\n td {\r\n &.team-logo {\r\n padding: 30px 20px 0px;\r\n height: 190px;\r\n\r\n div {\r\n background: #1d1d1b;\r\n height: 180px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n margin-bottom: -10px;\r\n }\r\n\r\n img {\r\n height: 150px;\r\n }\r\n }\r\n\r\n &.team-name {\r\n padding: 10px 20px 0px;\r\n color: #000;\r\n font-size: 40px;\r\n line-height: 36px;\r\n height: 80px;\r\n vertical-align: initial;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n max-width: 215px;\r\n }\r\n\r\n &.team-stats {\r\n padding: 0px 20px 0px;\r\n height: 50px;\r\n }\r\n }\r\n`;\r\n\r\nclass EslLiveTeamStats extends Component {\r\n render() {\r\n const { team, show } = this.props;\r\n\r\n return (\r\n team ?\r\n \r\n \r\n \r\n \r\n
\r\n e.target.src = getTeamLogo('pubg_logo_masters-04')}\r\n alt=\"team-logo\"\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n { TEAM_MAPPING[team.name] ? TEAM_MAPPING[team.name] : team.name }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default EslLiveTeamStats;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Stat = styled.table`\r\n width: 100%;\r\n ${props => props.last ? 'margin-bottom: 25px;' : ''}\r\n\r\n td {\r\n padding: 5px 10px;\r\n }\r\n\r\n .stat-name {\r\n font-size: 22px;\r\n line-height: 20px;\r\n font-weight: 400;\r\n width: 60%;\r\n }\r\n\r\n .stat-value {\r\n font-size: 40px;\r\n line-height: 40px;\r\n width: 40%;\r\n }\r\n`;\r\n\r\nfunction TeamStat(props) {\r\n const { name, value, last } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n { name }\r\n \r\n \r\n \r\n \r\n { value }\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default TeamStat;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo, numberForDisplay } from '../../../../../../util/CommonUtil';\r\nimport TeamStat from './TeamStat';\r\n\r\nconst LeaderboardTable = styled.table`\r\n background: url('/assets/img/pjc/team-stats.png');\r\n width: 265px;\r\n height: 571px;\r\n font-family: machine, noto-bold;\r\n font-weight: 600;\r\n border-collapse: separate;\r\n\r\n &.bc-show {\r\n margin-left: -280px;\r\n animation: slideRight 0.3s ease 0.5s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -280px;}\r\n to {margin-left: 32px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 32px;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 32px;}\r\n to {margin-left: -280px;}\r\n }\r\n }\r\n\r\n td {\r\n width: 130px;\r\n\r\n &.team-logo {\r\n padding: 0px 0px 0px;\r\n height: 150px;\r\n\r\n div {\r\n height: 150px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n\r\n img {\r\n height: 150px;\r\n }\r\n }\r\n\r\n &.team-name {\r\n padding: 35px 0px 0px;\r\n color: #FFF;\r\n font-size: 40px;\r\n line-height: 36px;\r\n height: 80px;\r\n vertical-align: initial;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n }\r\n\r\n &.team-stats {\r\n padding: 0px 10px 0px;\r\n height: 50px;\r\n }\r\n }\r\n`;\r\n\r\nclass EslLiveTeamStats extends Component {\r\n render() {\r\n const { team, show } = this.props;\r\n\r\n return (\r\n team ?\r\n \r\n \r\n \r\n \r\n { team.name }\r\n \r\n \r\n \r\n \r\n
\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team-logo\"\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default EslLiveTeamStats;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo, numberForDisplay } from '../../../../../../util/CommonUtil';\r\n\r\nconst WIDTH = 358;\r\nconst HEIGHT = 806;\r\n\r\nconst Wrapper = styled.div`\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 1920px;\r\n height: 1080px;\r\n\r\n .overlay {\r\n width: ${WIDTH}px;\r\n height: ${HEIGHT}px;\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n overflow: hidden;\r\n\r\n font-family: noto-black;\r\n\r\n position: fixed;\r\n top: 135px;\r\n left: 43px;\r\n\r\n border-top: 2px solid red;\r\n border-bottom: 2px solid red;\r\n background: url('/assets/img/pjc21/team-stats-background.png');\r\n\r\n >div {\r\n width: 290px;\r\n\r\n font-size: 45px;\r\n line-height: 45px;\r\n\r\n .small-font {\r\n font-size: 20px;\r\n line-height: 20px;\r\n margin-bottom: 10px;\r\n\r\n span {\r\n border-bottom: 2px solid red;\r\n }\r\n }\r\n }\r\n\r\n .team-logo {\r\n height: 290px;\r\n padding: 40px 0px;\r\n display: flex;\r\n justify-content: center;\r\n border-bottom: 2px solid red;\r\n }\r\n\r\n .team-name {\r\n height: 136px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n\r\n p {\r\n vertical-align: text-top;\r\n }\r\n\r\n ${props => props.longName ? 'font-size: 40px;' : ''}\r\n ${props => props.longName ? 'line-height: 40px;' : ''}\r\n }\r\n\r\n .team-kills, .team-damage, .team-points {\r\n margin-bottom: 35px;\r\n }\r\n \r\n &.bc-show {\r\n height: 0px;\r\n animation: slideUp 0.3s ease 0.1s forwards,\r\n fadeIn 0.1s ease 0s forwards;\r\n \r\n @keyframes slideUp {\r\n from {height: 0px;}\r\n to {height: ${HEIGHT}px;}\r\n }\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n \r\n &.bc-hide {\r\n height: ${HEIGHT}px;\r\n animation: slideDown 0.3s ease 0s forwards,\r\n fadeOut 0.1s ease 0.3s forwards;\r\n \r\n @keyframes slideDown {\r\n from {height: ${HEIGHT}px;}\r\n to {height: 0px;}\r\n }\r\n \r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst TEAM_NAME_MAP = {\r\n 'Zeta Division': 'ZETA DIVISION',\r\n 'Matsui Gaming Club': '松井GAMING CLUB'\r\n}\r\n\r\nclass Pjc21LiveTeamStats extends Component {\r\n render() {\r\n const { team, show } = this.props;\r\n\r\n return (\r\n team ?\r\n 10}>\r\n
\r\n
\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n
\r\n
\r\n

{ TEAM_NAME_MAP[team.name] || team.name }

\r\n
\r\n
\r\n

AVERAGE KILLS

\r\n

{ numberForDisplay(team.avgKills) }

\r\n
\r\n
\r\n

AVERAGE DAMAGE

\r\n

{ numberForDisplay(team.avgDamageDealt) }

\r\n
\r\n
\r\n

POINT

\r\n

{ team.totalPoints }

\r\n
\r\n
\r\n
\r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default Pjc21LiveTeamStats;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Stat = styled.table`\r\n width: 100%;\r\n background: #1d1d1b;\r\n ${props => props.last ? 'margin-bottom: 25px;' : ''}\r\n\r\n td {\r\n padding: 5px 10px;\r\n }\r\n\r\n .stat-name {\r\n font-size: 22px;\r\n line-height: 20px;\r\n font-weight: 400;\r\n width: 60%;\r\n }\r\n\r\n .stat-value {\r\n font-size: 40px;\r\n line-height: 40px;\r\n width: 40%;\r\n }\r\n`;\r\n\r\nfunction TeamStat(props) {\r\n const { name, value, last } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n { name }\r\n \r\n \r\n { value }\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default TeamStat;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo, numberForDisplay } from '../../../../../../util/CommonUtil';\r\nimport TeamStat from './TeamStat';\r\n\r\nconst LeaderboardTable = styled.table`\r\n background: url('/assets/img/being/live_team_stats_background.png');\r\n background-repeat: no-repeat;\r\n width: 220px;\r\n height: 571px;\r\n font-family: 'CenturyGothicBold';\r\n border-collapse: separate;\r\n position: fixed;\r\n right: 0;\r\n\r\n &.bc-show {\r\n margin-right: -240px;\r\n animation: slideRight 0.3s ease 0.5s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-right: -240px;}\r\n to {margin-right: 32px;}\r\n }\r\n \r\n .twire-logo-wrapper {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease 1.0s forwards;\r\n }\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-right: 32px;\r\n animation: slideLeft 0.3s ease 0.5s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-right: 32px;}\r\n to {margin-right: -240px;}\r\n }\r\n \r\n .twire-logo-wrapper {\r\n opacity: 1;\r\n animation: fadeOut 0.3s ease 0s forwards;\r\n }\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n td {\r\n &.team-logo {\r\n padding: 30px 20px 0px;\r\n height: 190px;\r\n\r\n div {\r\n background: url('/assets/img/being/live_team_stats_logo_background.png');\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n height: 180px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n margin-bottom: -10px;\r\n }\r\n\r\n img {\r\n height: 145px;\r\n }\r\n }\r\n\r\n &.team-name {\r\n padding: 10px 20px 0px;\r\n color: #FFF;\r\n font-family: 'SonySketchEF';\r\n font-size: 40px;\r\n line-height: 36px;\r\n height: 80px;\r\n vertical-align: initial;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n max-width: 215px;\r\n }\r\n\r\n &.team-stats {\r\n padding: 0px 20px 0px;\r\n height: 50px;\r\n }\r\n }\r\n\r\n .twire-logo-wrapper {\r\n position: absolute;\r\n width: 220px;\r\n right: 0px;\r\n\r\n img {\r\n margin-top: 15px;\r\n width: 125px;\r\n }\r\n }\r\n`;\r\n\r\nclass BeingLiveTeamStats extends Component {\r\n render() {\r\n const { team, show } = this.props;\r\n\r\n return (\r\n team ?\r\n \r\n \r\n \r\n \r\n
\r\n e.target.src = getTeamLogo('being-default')}\r\n alt=\"team-logo\"\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n { team.name }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default BeingLiveTeamStats;","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport ESL from './esl/EslLiveTeamStats';\r\nimport PJC from './pjc/PjcLiveTeamStats';\r\nimport PJC21 from './pjc21/Pjc21LiveTeamStats';\r\nimport Being from './being/BeingLiveTeamStats';\r\n\r\nconst PUBGLiveTeamStatsOverlay = (props) => {\r\n const { overlayDesign } = props;\r\n\r\n return (\r\n overlayDesign === 'pjc' ?\r\n \r\n :\r\n overlayDesign === 'pjc21' ?\r\n \r\n :\r\n overlayDesign === 'esl' ?\r\n \r\n :\r\n overlayDesign === 'being' ?\r\n \r\n :\r\n null\r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n team: state.overlay.pubg || {},\r\n overlayDesign: (state.overlay.tournament || {}).overlayDesign,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n loaded: state.overlay.loaded,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PUBGLiveTeamStatsOverlay);\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport CheckBox from '../../../common/base/controller/inputs/CheckBox';\r\nimport TeamSelect from '../../../common/base/controller/inputs/TeamSelect';\r\nimport PlayerSelect from '../../../common/base/controller/inputs/PlayerSelect';\r\nimport { COMPONENT_STATE_PLAYER, COMPONENT_STATE_SUBSCRIPTION, COMPONENT_STATE_TEAM } from '../../../constants';\r\nimport { PUBG_GAME } from '../../../../../util/Games';\r\n\r\nclass PUBGLiveTeamStatsController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PUBGLiveTeamStatsController;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Stat = styled.table`\r\n width: 100%;\r\n ${props => props.last ? 'margin-bottom: 25px;' : ''}\r\n\r\n td {\r\n padding: 5px 10px;\r\n }\r\n\r\n .stat-name {\r\n font-size: 22px;\r\n line-height: 20px;\r\n font-weight: 400;\r\n width: 60%;\r\n }\r\n\r\n .stat-value {\r\n font-size: 40px;\r\n line-height: 40px;\r\n width: 40%;\r\n }\r\n`;\r\n\r\nfunction PlayerStat(props) {\r\n const { name, value, last } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n { name }\r\n \r\n \r\n \r\n \r\n { value }\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default PlayerStat;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport { getPlayerImage, getTeamLogo, numberForDisplay } from '../../../../../../util/CommonUtil';\r\nimport PlayerStat from './PlayerStat';\r\n\r\nconst LeaderboardTable = styled.table`\r\n background: url('/assets/img/pjc/team-stats.png');\r\n width: 265px;\r\n height: 571px;\r\n font-family: machine, noto-bold;\r\n font-weight: 600;\r\n border-collapse: separate;\r\n\r\n &.bc-show {\r\n margin-left: -280px;\r\n animation: slideRight 0.3s ease 0.5s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -280px;}\r\n to {margin-left: 32px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 32px;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 32px;}\r\n to {margin-left: -280px;}\r\n }\r\n }\r\n\r\n td {\r\n width: 130px;\r\n\r\n &.images {\r\n padding: 0px 0px 0px;\r\n height: 220px;\r\n\r\n div {\r\n height: 220px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n position: relative;\r\n\r\n .player-image {\r\n height: 220px;\r\n }\r\n\r\n .team-image {\r\n position: absolute;\r\n bottom: -20px;\r\n right: 20px;\r\n height: 100px;\r\n }\r\n }\r\n }\r\n\r\n &.player-name {\r\n padding: 35px 0px 0px;\r\n color: #FFF;\r\n font-size: 40px;\r\n line-height: 36px;\r\n height: 80px;\r\n vertical-align: initial;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n }\r\n\r\n &.player-stats {\r\n padding: 0px 10px 0px;\r\n height: 50px;\r\n }\r\n }\r\n`;\r\n\r\nclass PjcLivePlayerStats extends Component {\r\n render() {\r\n const { player, show } = this.props;\r\n\r\n return (\r\n player && player.ign ?\r\n \r\n \r\n \r\n \r\n { player.ign.replace(new RegExp(`${player.teamInitial}_`, 'ig'), '').toUpperCase() }\r\n \r\n \r\n \r\n \r\n
\r\n e.target.src = getPlayerImage('default')}\r\n alt=\"player\"\r\n />\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team-logo\"\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default PjcLivePlayerStats;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Stat = styled.table`\r\n width: 100%;\r\n ${props => props.last ? 'margin-bottom: 25px;' : ''}\r\n font-family: 'Druk-SuperItalic';\r\n\r\n td {\r\n padding: 5px 10px;\r\n }\r\n\r\n .stat-name {\r\n font-size: 22px;\r\n line-height: 20px;\r\n font-weight: 400;\r\n width: 60%;\r\n }\r\n\r\n .stat-value {\r\n color: #000;\r\n font-size: 45px;\r\n line-height: 40px;\r\n width: 40%;\r\n }\r\n`;\r\n\r\nfunction PlayerStat(props) {\r\n const { name, value, last } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{ name }

\r\n \r\n \r\n \r\n \r\n

{ value }

\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default PlayerStat;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport { getPlayerImage, getTeamLogo, numberForDisplay } from '../../../../../../util/CommonUtil';\r\nimport PlayerStat from './PlayerStat';\r\n\r\nconst LeaderboardTable = styled.table`\r\n background: url('/assets/img/protality/player-stats-background.png');\r\n width: 265px;\r\n height: 571px;\r\n font-family: machine, noto-bold;\r\n font-weight: 600;\r\n border-collapse: separate;\r\n text-transform: uppercase;\r\n\r\n &.bc-show {\r\n margin-left: -280px;\r\n animation: slideRight 0.3s ease 0.5s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -280px;}\r\n to {margin-left: 32px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 32px;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 32px;}\r\n to {margin-left: -280px;}\r\n }\r\n }\r\n\r\n td {\r\n width: 130px;\r\n\r\n &.images {\r\n padding: 0px 0px 0px;\r\n height: 220px;\r\n\r\n div {\r\n margin-top: -52px;\r\n height: 200px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n position: relative;\r\n\r\n .player-image {\r\n height: 220px;\r\n }\r\n\r\n .team-image {\r\n position: absolute;\r\n bottom: -20px;\r\n right: 20px;\r\n height: 100px;\r\n }\r\n }\r\n }\r\n\r\n &.player-name {\r\n vertical-align: initial;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n\r\n p {\r\n margin: 0;\r\n }\r\n\r\n .name {\r\n font-family: 'DrukTextWide-BoldItalic';\r\n padding: 40px 0px 0px;\r\n color: #000;\r\n font-size: ${ props => props.nameLength > 10 ? 20 : props.nameLength > 9 ? 23 : 28 }px;\r\n line-height: 55px;\r\n height: 80px;\r\n }\r\n\r\n .initial {\r\n font-family: 'DrukWide-BoldItalic';\r\n font-size: 20px;\r\n\r\n }\r\n }\r\n\r\n &.player-stats {\r\n padding: 0px 10px 0px;\r\n height: 100px;\r\n\r\n p {\r\n margin: 0;\r\n }\r\n }\r\n }\r\n`;\r\n\r\nclass ProtalityLivePlayerStats extends Component {\r\n render() {\r\n const { player, show } = this.props;\r\n\r\n return (\r\n player && player.ign ?\r\n \r\n \r\n \r\n \r\n

{ player.ign.replace(new RegExp(`${player.teamInitial}_`, 'ig'), '').toUpperCase() }

\r\n

{ (player.teamInitial || '').toUpperCase() }

\r\n \r\n \r\n \r\n \r\n
\r\n e.target.src = getPlayerImage('default')}\r\n alt=\"player\"\r\n />\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team-logo\"\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default ProtalityLivePlayerStats;","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport PJC from './pjc/PjcLivePlayerStats';\r\nimport Protality from './protality/ProtalityLivePlayerStats';\r\n\r\nconst PUBGLiveTeamStatsOverlay = (props) => {\r\n const { overlayDesign } = props;\r\n\r\n return (\r\n overlayDesign === 'pjc' ?\r\n \r\n :\r\n overlayDesign === 'protality' ?\r\n \r\n :\r\n null\r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n player: state.overlay.pubg || {},\r\n overlayDesign: (state.overlay.tournament || {}).overlayDesign,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n loaded: state.overlay.loaded,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PUBGLiveTeamStatsOverlay);\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport { PUBG_GAME } from '../../../../../util/Games';\r\nimport CheckBox from '../../../common/base/controller/inputs/CheckBox';\r\nimport { COMPONENT_STATE_SUBSCRIPTION } from '../../../constants';\r\n\r\nclass PUBGLivePlayerKillsController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PUBGLivePlayerKillsController;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst TEAM_MAPPING = {\r\n \"Toxic Players (RUS)\": \"Toxic Players\",\r\n \"BigBossLayf\": \"BBL Esports\",\r\n \"Natus Vincere\": \"NAVI\",\r\n \"Orgless (EU)\": \"Orgless\",\r\n}\r\n\r\nconst TeamRow = styled.tr`\r\n text-transform: uppercase;\r\n background: rgba(0, 0, 0, 0.5);\r\n\r\n &.dark-bg td {\r\n background: rgba(0, 0, 0, 0.2);\r\n }\r\n\r\n table {\r\n width: 218px;\r\n\r\n td {\r\n font-family: 'ESL Legend';\r\n font-weight: 600;\r\n height: 30px;\r\n font-size: 22px;\r\n line-height: 22px;\r\n\r\n &.player-ign, &.player-total-kills {\r\n font-size: 30px;\r\n line-height: 36px;\r\n }\r\n \r\n &.player-total-kills {\r\n padding-right: 10px;\r\n width: 30px;\r\n }\r\n\r\n &.player-ign {\r\n padding-left: 10px;\r\n padding-top: 12px;\r\n max-width: 175px;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n }\r\n\r\n &.player-team {\r\n padding-left: 10px;\r\n font-size: 22px;\r\n line-height: 22px;\r\n padding-bottom: 15px;\r\n max-width: 175px;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n\r\n img {\r\n height: 20px;\r\n margin-top: -5px;\r\n margin-right: 5px;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { player, rank } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n { player.ign.replace(new RegExp(`${player.teamInitial}_`, 'ig'), '') }\r\n \r\n \r\n { player.totalKills }\r\n \r\n \r\n \r\n \r\n \r\n e.target.src = getTeamLogo('pubg_logo_masters-04')}\r\n alt=\"team-logo\"\r\n />\r\n { TEAM_MAPPING[player.teamName] ? TEAM_MAPPING[player.teamName] : player.teamName }\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n td:first-child {\r\n background: url('/assets/img/esl/IG_09_In_Game_Stats_Kills.png');\r\n background-repeat: no-repeat;\r\n text-transform: uppercase;\r\n font-family: 'ESL Legend';\r\n font-weight: 600;\r\n width: 220px;\r\n height: 49px;\r\n font-size: 25px;\r\n line-height: 25px;\r\n color: #000;\r\n\r\n text-align: center;\r\n vertical-align: middle;\r\n }\r\n`;\r\n\r\nfunction LeaderboardTitle(props) {\r\n return (\r\n \r\n Total Kills\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardTitle;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardTitle from './LeaderboardTitle';\r\n\r\nconst LeaderboardTable = styled.table`\r\n &.bc-show {\r\n margin-left: -250px;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -250px;}\r\n to {margin-left: 32px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 32px;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 32px;}\r\n to {margin-left: -250px;}\r\n }\r\n }\r\n`;\r\n\r\nclass EslLivePlayerKills extends Component {\r\n render() {\r\n const { loaded, players, show } = this.props;\r\n if (players.length < 6) Array.from(Array(6-players.length)).forEach(() => players.push({ ign: 'None', teamName: '', teamInitial: 'None', totalKills: 0 }));\r\n\r\n return (\r\n loaded || players.length ?\r\n \r\n \r\n \r\n {\r\n players.slice(0, 6).map((p, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default EslLivePlayerKills;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst Wrapper = styled.table`\r\n overflow: hidden;\r\n min-height: 422px;\r\n\r\n >tr td {\r\n padding: 10px;\r\n }\r\n\r\n tr:first-child td {\r\n padding-bottom: 40px;\r\n\r\n img {\r\n width: 220px;\r\n }\r\n }\r\n\r\n tr:nth-child(2) td {\r\n div {\r\n height: 73px;\r\n background: url('/assets/img/being/live_player_kills_damage_player_name_background.png');\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n\r\n img {\r\n width: 73px;\r\n }\r\n }\r\n }\r\n\r\n table {\r\n td {\r\n padding: 0;\r\n height: 73px;\r\n font-size: 31px;\r\n text-transform: uppercase;\r\n position: relative;\r\n\r\n &:first-child {\r\n padding-left: 8px;\r\n max-width: 73px;\r\n\r\n p {\r\n position: absolute;\r\n font-size: 40px;\r\n top: 5px;\r\n left: 34px;\r\n }\r\n }\r\n\r\n &:nth-child(2) {\r\n width: 310px !important;\r\n }\r\n }\r\n }\r\n\r\n .stats-value {\r\n font-family: 'CenturyGothicBold';\r\n font-size: 45px;\r\n\r\n p {\r\n background: -webkit-linear-gradient(#FFF 45%, #404040 100%);\r\n -webkit-background-clip: text;\r\n -webkit-text-fill-color: transparent;\r\n -webkit-text-stroke-width: 0.7px;\r\n -webkit-text-stroke-color: white;\r\n filter: drop-shadow(0px 0px 5px #000);\r\n }\r\n }\r\n\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease ${props => props.delayShow * 0.3}s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n \r\n .team-logo {\r\n animation: slideUp 0.3s ease ${props => props.delayShow * 0.3}s forwards;\r\n\r\n @keyframes slideUp {\r\n from {margin-bottom: -200px;}\r\n to {margin-bottom: 0;}\r\n }\r\n }\r\n }\r\n\r\n &.component-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.3s ease ${props => props.delayShow * 0.3}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n \r\n .team-logo {\r\n animation: slideDown 0.3s ease ${props => props.delayShow * 0.3}s forwards;\r\n\r\n @keyframes slideDown {\r\n from {margin-bottom: 0;}\r\n to {margin-bottom: -200px;}\r\n }\r\n }\r\n }\r\n \r\n`;\r\n\r\nfunction LeaderboardPlayer(props) {\r\n const { rank, player, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n e.target.src = getTeamLogo(\"default\")}\r\n />\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n

{ rank }

\r\n
\r\n { player.ign }\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n

{ player.totalKills }

\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardPlayer;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardPlayer from './LeaderboardPlayer';\r\n\r\nconst LeaderboardWrapper = styled.div`\r\n width: 1920px;\r\n height: 765px;\r\n font-family: 'SonySketchEF';\r\n background: url('/assets/img/being/live_player_kills_background.png');\r\n\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease 0s forwards;\r\n \r\n .twire-logo {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease 0s forwards;\r\n }\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.3s ease 2s forwards;\r\n \r\n .twire-logo {\r\n opacity: 1;\r\n animation: fadeOut 0.3s ease 2s forwards;\r\n }\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n .wrapper-table {\r\n position: relative;\r\n top: 220px;\r\n\r\n .w-384 {\r\n width: 384px;\r\n }\r\n }\r\n\r\n .twire-logo {\r\n margin-top: 40px;\r\n }\r\n`;\r\n\r\nclass BeingPlayerLeaderBoard extends Component {\r\n render() {\r\n const { loaded, players, show } = this.props;\r\n\r\n if (!loaded) return null;\r\n\r\n const topPlayers = players.slice(0, 5);\r\n\r\n return (\r\n topPlayers.length ?\r\n \r\n \r\n \r\n \r\n {\r\n topPlayers.map((p, i) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default BeingPlayerLeaderBoard;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { getPlayerImage, getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst Leaderboard = styled.table`\r\n color: #000;\r\n width: 1775px;\r\n border-collapse: collapse;\r\n padding: 0;\r\n \r\n td {\r\n border-collapse: collapse;\r\n padding: 0;\r\n }\r\n\r\n table {\r\n margin: 0 auto;\r\n }\r\n`;\r\n\r\nconst PlayerTable = styled.table`\r\n background: url('/assets/img/protality/player-leaderboard.background.png');\r\n background-repeat: no-repeat;\r\n overflow: hidden;\r\n\r\n .team-logo {\r\n position: absolute;\r\n z-index: 1;\r\n top: 10px;\r\n left: 10px;\r\n width: 65px;\r\n }\r\n\r\n &.leaderboard-show {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease ${props => 0.3 * (props.index + 1)}s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n\r\n .player-image {\r\n position: relative;\r\n z-index: 10;\r\n width: 250px;\r\n margin-top: 250px;\r\n animation: slideIn 0.6s ease ${props => 0.3 * (props.index + 1) + 0.3}s forwards;\r\n\r\n @keyframes slideIn {\r\n from {margin-top: 250px;}\r\n to {margin-top: 0;}\r\n }\r\n }\r\n\r\n .player-score {\r\n margin-top: 150px;\r\n animation: slideSideIn 0.6s ease ${props => 0.3 * (props.index + 1) + 0.3}s forwards;\r\n\r\n @keyframes slideSideIn {\r\n from {margin-top: 150px;}\r\n to {margin-top: 0px;}\r\n }\r\n }\r\n }\r\n\r\n &.leaderboard-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.3s ease ${props => 0.3 * (props.index + 1) + 0.3}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n\r\n .player-image {\r\n position: relative;\r\n z-index: 10;\r\n width: 250px;\r\n margin-top: 0px;\r\n animation: slideOut 0.6s ease ${props => 0.3 * props.index}s forwards;\r\n\r\n @keyframes slideOut {\r\n from {margin-top: 0px;}\r\n to {margin-top: 250px;}\r\n }\r\n }\r\n\r\n .player-score {\r\n margin-top: 0px;\r\n animation: slideSideOut 0.6s ease ${props => 0.3 * props.index}s forwards;\r\n\r\n @keyframes slideSideOut {\r\n from {margin-top: 0px;}\r\n to {margin-top: 150px;}\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst PictureDiv = styled.div`\r\n width: 250px;\r\n height: 250px;\r\n overflow: hidden;\r\n position: relative;\r\n overflow: hidden;\r\n`;\r\n\r\nconst TeamDiv = styled.div`\r\n text-transform: uppercase;\r\n font-size: 25px;\r\n margin-top: -7px;\r\n text-overflow: ellipsis;\r\n overflow: hidden; \r\n white-space: nowrap;\r\n font-family: 'DrukText-BoldItalic';\r\n letter-spacing: 3px;\r\n\r\n img {\r\n height: 50px;\r\n margin: 10px;\r\n }\r\n\r\n .player-score {\r\n font-size: 73px;\r\n font-family: 'DrukTextWide-BoldItalic';\r\n margin-top: 13px;\r\n line-height: 1em;\r\n color: #000;\r\n }\r\n\r\n &.bottom {\r\n height: 70px;\r\n overflow: hidden;\r\n border-bottom-left-radius: 3px;\r\n border-bottom-right-radius: 3px;\r\n }\r\n`;\r\n\r\nconst AttributeDiv = styled.div`\r\n text-transform: uppercase;\r\n font-family: 'DrukWide-SuperItalic';\r\n font-size: 27px;\r\n margin-top: -3px;\r\n`;\r\n\r\nconst TwireDiv = styled.div`\r\n background: #00000000;\r\n border-radius: 3px;\r\n width: 250px;\r\n margin: 0 auto;\r\n\r\n img {\r\n height: 35px;\r\n }\r\n\r\n &.leaderboard-show {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease 1.8s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.leaderboard-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.3s ease 1.8s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { show, leaderboard } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n {\r\n leaderboard.map((p, i) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team\"\r\n />\r\n e.target.src = getPlayerImage('default')}\r\n alt=\"player\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n { p.ign.replace(/^[A-Za-z0-9]{0,4}_/g, '') }\r\n \r\n \r\n \r\n \r\n \r\n \r\n ÖLDÜRME\r\n \r\n \r\n \r\n \r\n \r\n \r\n

{ parseInt(p.totalKills) }

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\n\r\nconst LeaderboardWrapper = styled.div`\r\n width: 1775px;\r\n font-family: 'osl5-2';\r\n color: #FFFFFF;\r\n`;\r\n\r\nclass ProtalityLivePlayerKills extends Component {\r\n render() {\r\n const { loaded, players, show } = this.props;\r\n\r\n if (!loaded) return null;\r\n const leaderboard = players.slice(0, 5);\r\n\r\n return (\r\n leaderboard.length ?\r\n \r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default ProtalityLivePlayerKills;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst Wrapper = styled.div`\r\n font-size: 35px;\r\n .team-logo-main {\r\n height: 400px;\r\n\r\n img {\r\n height: 220px;\r\n }\r\n }\r\n\r\n &.component-show table tbody {\r\n .team-logo-main, .stats {\r\n transform: rotate3d(1, 0, 0, 90deg);\r\n animation: \r\n rotateIn 0.5s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards,\r\n fadeIn 1s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards;\r\n }\r\n\r\n tr:nth-child(2) {\r\n transform: rotate3d(1, 0, 0, 90deg);\r\n animation: \r\n rotateIn 0.5s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards,\r\n fadeIn 1s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards;\r\n }\r\n\r\n @keyframes rotateIn {\r\n from {transform: rotate3d(1, 0, 0, 90deg);}\r\n to {transform: rotate3d(1, 0, 0, 0deg);}\r\n }\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide table tbody {\r\n .team-logo-main, .stats {\r\n animation: \r\n rotateOut 0.5s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards,\r\n fadeOut 1s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards;\r\n }\r\n\r\n tr:nth-child(2) {\r\n transform: rotate3d(1, 0, 0, 0deg);\r\n animation: \r\n rotateOut 0.5s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards,\r\n fadeOut 1s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards;\r\n }\r\n\r\n @keyframes rotateOut {\r\n from {transform: rotate3d(1, 0, 0, 0deg);}\r\n to {transform: rotate3d(1, 0, 0, 90deg);}\r\n }\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n td {\r\n height: 65px;\r\n }\r\n\r\n .rank {\r\n width: 65px;\r\n background: ${ props => props.colors && props.colors.primary ? props.colors.primary : '#FFF'};\r\n color: ${ props => props.colors && props.colors.rankText ? props.colors.rankText : '#000'};\r\n }\r\n\r\n .team-logo {\r\n padding: 0;\r\n width: 315px;\r\n color: ${ props => props.colors && props.colors.teamText ? props.colors.teamText : '#FFF'};\r\n\r\n div {\r\n background: ${ props => props.colors && props.colors.secondary ? props.colors.secondary : '#404040'};\r\n padding-right: 15px;\r\n padding-left: 80px;\r\n position: relative;\r\n overflow: hidden;\r\n \r\n img {\r\n height: 70px;\r\n position: absolute;\r\n top: -10px;\r\n left: 10px;\r\n transform: rotate(30deg);\r\n \r\n &:first-child {\r\n filter: blur(15px);\r\n }\r\n }\r\n }\r\n }\r\n\r\n .stats {\r\n font-size: 50px;\r\n color: ${ props => props.colors && props.colors.headerText ? props.colors.headerText : '#FFF'};\r\n }\r\n`;\r\n\r\nfunction LeaderboardPlayer(props) {\r\n const { player, rank, show, overlayColor } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n
{ rank }\r\n
\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n \"team e.target.src = getTeamLogo('default')}\r\n />\r\n { player.ign }\r\n
\r\n
\r\n
{ player.totalKills }
\r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardPlayer;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardPlayer from './LeaderboardPlayer';\r\n\r\nconst LeaderboardWrapper = styled.table`\r\n font-family: 'agency_fb';\r\n text-align: center; \r\n vertical-align: middle;\r\n text-transform: uppercase;\r\n border-collapse:separate;\r\n border-spacing: 10px 10px;\r\n\r\n .header {\r\n color: ${ props => props.colors && props.colors.headerText ? props.colors.headerText : '#FFF'};\r\n }\r\n\r\n h1 {\r\n font-size: 70px;\r\n }\r\n\r\n &.component-show {\r\n .header, .footer {\r\n animation: fadeIn 0.3s ease 0s forwards;\r\n }\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n .header, .footer {\r\n animation: fadeOut 0.3s ease 0s forwards;\r\n }\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nclass DefaultPlayerKills extends Component {\r\n render() {\r\n const { loaded, players, show, overlayColor } = this.props;\r\n\r\n if (!loaded) return null;\r\n\r\n const topPlayers = players.slice(0, 5);\r\n\r\n return (\r\n topPlayers.length ?\r\n \r\n \r\n \r\n \r\n

Kills

\r\n \r\n \r\n \r\n {\r\n topPlayers.map((p, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default DefaultPlayerKills;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport ESL from './esl/EslLivePlayerKills';\r\nimport Being from './being/BeingLivePlayerKillsDamage';\r\nimport Protality from './protality/ProtalityLivePlayerKills';\r\nimport Default from './default/DefaultPlayerKills';\r\n\r\nconst PUBGLivePlayerKillsOverlay = (props) => {\r\n const { overlayDesign } = props;\r\n\r\n return (\r\n overlayDesign === 'esl' ? \r\n \r\n :\r\n overlayDesign === 'being' ? \r\n \r\n :\r\n overlayDesign === 'protality' ? \r\n \r\n :\r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n players: state.overlay.pubg || [],\r\n overlayDesign: (state.overlay.tournament || {}).overlayDesign,\r\n overlayColor: (state.overlay.tournament || {}).overlayColor,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n loaded: state.overlay.loaded,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PUBGLivePlayerKillsOverlay);\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport { PUBG_GAME } from '../../../../../util/Games';\r\nimport CheckBox from '../../../common/base/controller/inputs/CheckBox';\r\nimport { COMPONENT_STATE_SUBSCRIPTION } from '../../../constants';\r\n\r\nclass PUBGLivePlayerKillsController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PUBGLivePlayerKillsController;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst TeamRow = styled.tr`\r\n text-transform: uppercase;\r\n background: rgba(0, 0, 0, 0.5);\r\n\r\n &.dark-bg td {\r\n background: rgba(0, 0, 0, 0.2);\r\n }\r\n padding-right: 10px;\r\n\r\n td {\r\n font-family: 'ESL Legend';\r\n font-weight: 600;\r\n height: 30px;\r\n font-size: 22px;\r\n line-height: 22px;\r\n\r\n &.player-ign {\r\n font-size: 30px;\r\n line-height: 36px;\r\n padding-left: 10px;\r\n padding-top: 3px;\r\n padding-bottom: 9px;\r\n max-width: 218px;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n }\r\n\r\n &.player-team, &.player-stat {\r\n font-size: 22px;\r\n line-height: 22px;\r\n padding-bottom: 9px;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n }\r\n\r\n &.player-team {\r\n padding-left: 10px;\r\n }\r\n\r\n &.player-stat {\r\n width: 50px;\r\n }\r\n\r\n &:last-child {\r\n padding-right: 10px;\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { player, rank } = props;\r\n\r\n return (\r\n <>\r\n \r\n \r\n { player.ign.replace(new RegExp(`${player.teamInitial}_`, 'ig'), '') }\r\n \r\n \r\n \r\n \r\n { player.teamInitial }\r\n \r\n \r\n { player.totalKills }\r\n \r\n \r\n { parseInt(player.totalDamage) }\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n background: rgba(0, 0, 0, 0.5);\r\n\r\n td {\r\n background: rgba(0, 0, 0, 0.5);\r\n background-repeat: no-repeat;\r\n text-transform: uppercase;\r\n font-family: 'ESL Legend';\r\n font-weight: 400;\r\n height: 43px;\r\n font-size: 16px;\r\n line-height: 16px;\r\n text-align: center;\r\n vertical-align: bottom;\r\n padding-bottom: 9px;\r\n\r\n &:last-child {\r\n padding-right: 10px;\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n return (\r\n \r\n \r\n Kill\r\n Damage\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Wrapper = styled.tr`\r\n td:first-child {\r\n background: url('/assets/img/esl/IG_07_In_Game_Stats_Team_Total_Damage_Done.png');\r\n background-repeat: no-repeat;\r\n text-transform: uppercase;\r\n font-family: 'ESL Legend';\r\n font-weight: 600;\r\n width: 220px;\r\n height: 49px;\r\n font-size: 25px;\r\n line-height: 25px;\r\n color: #000;\r\n\r\n text-align: center;\r\n vertical-align: middle;\r\n }\r\n`;\r\n\r\nfunction LeaderboardTitle(props) {\r\n return (\r\n \r\n Overall Leaderboard\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardTitle;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardTitle from './LeaderboardTitle';\r\n\r\nconst LeaderboardTable = styled.table`\r\n &.bc-show {\r\n margin-left: -250px;\r\n animation: slideRight 0.3s ease 0s forwards;\r\n \r\n @keyframes slideRight {\r\n from {margin-left: -250px;}\r\n to {margin-left: 32px;}\r\n }\r\n }\r\n\r\n &.bc-hide {\r\n margin-left: 32px;\r\n animation: slideLeft 0.3s ease 0s forwards;\r\n \r\n @keyframes slideLeft {\r\n from {margin-left: 32px;}\r\n to {margin-left: -250px;}\r\n }\r\n }\r\n`;\r\n\r\nclass EslLivePlayerKills extends Component {\r\n render() {\r\n const { loaded, players, show } = this.props;\r\n if (players.length < 6) Array.from(Array(6-players.length)).forEach(() => players.push({ ign: 'None', teamInitial: 'None', totalKills: 0, totalDamage: 0 }));\r\n\r\n return (\r\n loaded ?\r\n \r\n \r\n \r\n \r\n {\r\n players.slice(0, 6).map((p, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default EslLivePlayerKills;","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst IMAGE_WRAPPER_WIDTH = 230;\r\n\r\nconst TitleWrapper = styled.div`\r\n text-transform: uppercase;\r\n width: ${props => props.headerWidth}px;\r\n margin-left: ${props => (props.rowWidth - props.headerWidth) / 2}px;\r\n margin-top: 35px;\r\n margin-bottom: 35px !important;\r\n background: ${styles.pslColor};\r\n height: 180px;\r\n\r\n p {\r\n padding: 0;\r\n margin: 0;\r\n }\r\n\r\n &.title-header-show {\r\n display: block;\r\n width: 0px;\r\n animation: headerSlideDown 0.5s ease 0.2s forwards;\r\n\r\n @keyframes headerSlideDown {\r\n from {width: 0px;}\r\n to {width: ${props => props.headerWidth}px;}\r\n }\r\n\r\n p {\r\n opacity: 0;\r\n animation: headerFadeIn 0.6s ease 0.7s forwards;\r\n\r\n @keyframes headerFadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n img {\r\n opacity: 0;\r\n animation: headerFadeInImg 0.3s ease 0s forwards;\r\n\r\n @keyframes headerFadeInImg {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n }\r\n\r\n &.title-header-hide {\r\n width: ${props => props.headerWidth}px;\r\n animation: headerSlideUp 0.5s ease 2.7s forwards;\r\n\r\n @keyframes headerSlideUp {\r\n from {width: ${props => props.headerWidth}px;}\r\n to {width: 0px;}\r\n }\r\n\r\n p {\r\n opacity: 1;\r\n animation: headerFadeOut 0.6s ease 2.2s forwards;\r\n\r\n @keyframes headerFadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n img {\r\n opacity: 1;\r\n animation: headerFadeOutImg 0.3s ease 3s forwards;\r\n\r\n @keyframes headerFadeOutImg {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n }\r\n\r\n img {\r\n height: 250px;\r\n position: absolute;\r\n top: 0px;\r\n }\r\n\r\n .image-wrapper {\r\n max-width: ${IMAGE_WRAPPER_WIDTH}px !important;\r\n width: ${IMAGE_WRAPPER_WIDTH}px !important;\r\n }\r\n\r\n .title-wrapper {\r\n width: ${props => props.headerWidth - IMAGE_WRAPPER_WIDTH}px !important;\r\n max-width: ${props => props.headerWidth - IMAGE_WRAPPER_WIDTH}px !important;\r\n }\r\n\r\n .image-wrapper, .title-wrapper {\r\n float: left;\r\n height: 180px;\r\n padding-top: 15px;\r\n padding-bottom: 15px;\r\n }\r\n\r\n .subtitle {\r\n vertical-align: middle;\r\n font-size: 35px;\r\n letter-spacing: 8px;\r\n filter: drop-shadow(0px 0px 4px #00000040);\r\n line-height: 1;\r\n margin-left: 5px;\r\n }\r\n\r\n .title {\r\n vertical-align: middle;\r\n font-size: 130px;\r\n text-transform: uppercase;\r\n filter: drop-shadow(0px 0px 4px #00000080);\r\n line-height: 1;\r\n }\r\n`;\r\n\r\nfunction LeaderboardHeader(props) {\r\n const { rowWidth, headerWidth, show } = props;\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n

{props.groupName && props.groupName !== 'undefined' ? props.groupName : 'Lower Bracket'}

\r\n

Top Kills & Damage

\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardHeader;","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst height = 450;\r\n\r\nconst Wrapper = styled.div`\r\n width: ${props => props.rowWidth}px;\r\n margin-right: ${props => props.margin}px;\r\n float: left;\r\n overflow: hidden;\r\n\r\n &.player-show {\r\n height: 0;\r\n animation: open-player .75s ease ${ props => props.delayShow * 0.3 + 0.5 }s forwards;\r\n\r\n @keyframes open-player {\r\n from {height: 0;}\r\n to {height: ${height}px;}\r\n }\r\n }\r\n\r\n &.player-hide {\r\n height: ${height}px;\r\n animation: close-player .75s ease ${ props => props.delayHide * 0.3 + 0.8 }s forwards;\r\n\r\n @keyframes close-player {\r\n from {height: ${height}px;}\r\n to {height: 0px;}\r\n }\r\n }\r\n`;\r\n\r\nconst PlayerRow = styled(Row)`\r\n margin-top: 5px;\r\n font-size: ${props => props.fontSize}px;\r\n line-height: ${props => props.fontSize}px;\r\n background: #3e3e3e;\r\n font-weight: 600;\r\n color: ${props => props.color ? props.color : styles.secondary};\r\n padding: 10px;\r\n`;\r\n\r\nconst ScoreRow = styled(Row)`\r\n padding: 10px;\r\n height: ${props => props.fontSize + 20}px;\r\n font-size: ${props => props.fontSize}px;\r\n line-height: ${props => props.fontSize}px;\r\n background: #3e3e3e;\r\n font-weight: 600;\r\n color: ${props => props.color ? props.color : styles.secondary};\r\n overflow: hidden;\r\n\r\n img {\r\n height: 200px;\r\n position: absolute;\r\n left: ${props => (props.rowWidth - 200) / 2}px;\r\n top: -35px;\r\n opacity: 0.2;\r\n z-index: 5;\r\n }\r\n\r\n span {\r\n position: relative;\r\n z-index: 10;\r\n\r\n span {\r\n font-size: 50px;\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardPlayer(props) {\r\n const { rank, player, rowWidth, margin, numOfPlayers, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n {rank}.\r\n \r\n \r\n \r\n \r\n { player.ign.replace(new RegExp(`${player.teamInitial}_`, 'ig'), '').toUpperCase() }\r\n \r\n \r\n \r\n \r\n e.target.src = getTeamLogo('default')}\r\n className=\"mr-3\"\r\n />\r\n { player.totalKills } K\r\n \r\n \r\n \r\n \r\n { parseInt(player.totalDamage) } D\r\n \r\n \r\n \r\n \r\n { parseInt(player.totalDamage / player.totalKills) } D/K\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardPlayer;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst height = 50;\r\n\r\nconst Wrapper = styled.div`\r\n width: ${ props => props.rowWidth / 5 }px;\r\n margin-left: ${ props => 2 * props.rowWidth / 5 }px;\r\n overflow: hidden;\r\n background: #3e3e3e;\r\n\r\n img {\r\n margin-top: 2px;\r\n height: 45px;\r\n }\r\n\r\n &.footer-show {\r\n height: 0;\r\n animation: open-footer .75s ease 2.6s forwards;\r\n\r\n @keyframes open-footer {\r\n from {height: 0;}\r\n to {height: ${height}px;}s\r\n }\r\n }\r\n\r\n &.footer-hide {\r\n height: ${height}px;\r\n animation: close-footer .75s ease-in 0s forwards;\r\n\r\n @keyframes close-footer {\r\n from {height: ${height}px;}\r\n to {height: 0px;}\r\n }\r\n }\r\n`;\r\n\r\nfunction PoweredByTwire(props) {\r\n const { rowWidth, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default PoweredByTwire;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardHeader from './LeaderboardHeader';\r\nimport LeaderboardPlayer from './LeaderboardPlayer';\r\nimport LeaderboardFooter from './LeaderboardFooter';\r\n\r\nconst playerWidth = 350;\r\nconst playerMargin = 10;\r\n\r\nconst LeaderboardWrapper = styled.div`\r\n margin: 15px 30px;\r\n width: ${props => props.rowWidth}px;\r\n font-family: 'agency_fb';\r\n`;\r\n\r\nclass PslPlayerLeaderBoard extends Component {\r\n render() {\r\n const { loaded, players, show, opts } = this.props;\r\n\r\n if (!loaded) return null;\r\n\r\n const stat = opts.stats ? opts.stats[0] : {};\r\n const topPlayers = players.slice(0, 5);\r\n const width = playerWidth * topPlayers.length + playerMargin * (topPlayers.length - 1);\r\n\r\n return (\r\n topPlayers.length ?\r\n \r\n \r\n {\r\n topPlayers.map((p, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default PslPlayerLeaderBoard;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst Wrapper = styled.table`\r\n overflow: hidden;\r\n min-height: 422px;\r\n\r\n >tr td {\r\n padding: 10px;\r\n }\r\n\r\n tr:first-child td {\r\n padding-bottom: 40px;\r\n\r\n img {\r\n width: 220px;\r\n }\r\n }\r\n\r\n tr:nth-child(2) td {\r\n div {\r\n height: 73px;\r\n background: url('/assets/img/being/live_player_kills_damage_player_name_background.png');\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n\r\n img {\r\n width: 73px;\r\n }\r\n }\r\n }\r\n\r\n table {\r\n td {\r\n padding: 0;\r\n height: 73px;\r\n font-size: 31px;\r\n text-transform: uppercase;\r\n position: relative;\r\n\r\n &:first-child {\r\n padding-left: 8px;\r\n max-width: 73px;\r\n\r\n p {\r\n position: absolute;\r\n font-size: 40px;\r\n top: 5px;\r\n left: 34px;\r\n }\r\n }\r\n\r\n &:nth-child(2) {\r\n width: 310px !important;\r\n }\r\n }\r\n }\r\n\r\n .stats-value {\r\n font-family: 'CenturyGothicBold';\r\n font-size: 45px;\r\n\r\n p {\r\n background: -webkit-linear-gradient(#FFF 45%, #404040 100%);\r\n -webkit-background-clip: text;\r\n -webkit-text-fill-color: transparent;\r\n -webkit-text-stroke-width: 0.7px;\r\n -webkit-text-stroke-color: white;\r\n filter: drop-shadow(0px 0px 5px #000);\r\n }\r\n }\r\n\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease ${props => props.delayShow * 0.3}s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n \r\n .team-logo {\r\n animation: slideUp 0.3s ease ${props => props.delayShow * 0.3}s forwards;\r\n\r\n @keyframes slideUp {\r\n from {margin-bottom: -200px;}\r\n to {margin-bottom: 0;}\r\n }\r\n }\r\n }\r\n\r\n &.component-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.3s ease ${props => props.delayShow * 0.3}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n \r\n .team-logo {\r\n animation: slideDown 0.3s ease ${props => props.delayShow * 0.3}s forwards;\r\n\r\n @keyframes slideDown {\r\n from {margin-bottom: 0;}\r\n to {margin-bottom: -200px;}\r\n }\r\n }\r\n }\r\n \r\n`;\r\n\r\nfunction LeaderboardPlayer(props) {\r\n const { rank, player, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n e.target.src = getTeamLogo(\"default\")}\r\n />\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n

{ rank }

\r\n
\r\n { player.ign }\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n

{ player.totalKills } / { Math.round(player.totalDamage) }

\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardPlayer;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardPlayer from './LeaderboardPlayer';\r\n\r\nconst LeaderboardWrapper = styled.div`\r\n width: 1920px;\r\n height: 765px;\r\n font-family: 'SonySketchEF';\r\n background: url('/assets/img/being/live_player_kills_damage_background.png');\r\n\r\n &.component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease 0s forwards;\r\n \r\n .twire-logo {\r\n opacity: 0;\r\n animation: fadeIn 0.3s ease 0s forwards;\r\n }\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.3s ease 2s forwards;\r\n \r\n .twire-logo {\r\n opacity: 1;\r\n animation: fadeOut 0.3s ease 2s forwards;\r\n }\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n .wrapper-table {\r\n position: relative;\r\n top: 220px;\r\n\r\n .w-384 {\r\n width: 384px;\r\n }\r\n }\r\n\r\n .twire-logo {\r\n margin-top: 40px;\r\n }\r\n`;\r\n\r\nclass BeingPlayerLeaderBoard extends Component {\r\n render() {\r\n const { loaded, players, show } = this.props;\r\n\r\n if (!loaded) return null;\r\n\r\n const topPlayers = players.slice(0, 5);\r\n\r\n return (\r\n topPlayers.length ?\r\n \r\n \r\n \r\n \r\n {\r\n topPlayers.map((p, i) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default BeingPlayerLeaderBoard;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { getPlayerImage, getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst Leaderboard = styled.table`\r\n color: #000;\r\n width: 1775px;\r\n border-collapse: collapse;\r\n padding: 0;\r\n \r\n td {\r\n border-collapse: collapse;\r\n padding: 0;\r\n }\r\n\r\n table {\r\n margin: 0 auto;\r\n }\r\n`;\r\n\r\nconst PlayerTable = styled.table`\r\n background: url('/assets/img/protality/player-leaderboard.background.png');\r\n background-repeat: no-repeat;\r\n overflow: hidden;\r\n\r\n .team-logo {\r\n position: absolute;\r\n z-index: 1;\r\n top: 10px;\r\n left: 10px;\r\n width: 65px;\r\n }\r\n\r\n &.leaderboard-show {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease ${props => 0.3 * (props.index + 1)}s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n\r\n .player-image {\r\n position: relative;\r\n z-index: 10;\r\n width: 250px;\r\n margin-top: 250px;\r\n animation: slideIn 0.6s ease ${props => 0.3 * (props.index + 1) + 0.3}s forwards;\r\n\r\n @keyframes slideIn {\r\n from {margin-top: 250px;}\r\n to {margin-top: 0;}\r\n }\r\n }\r\n\r\n .player-score {\r\n margin-top: 150px;\r\n animation: slideSideIn 0.6s ease ${props => 0.3 * (props.index + 1) + 0.3}s forwards;\r\n\r\n @keyframes slideSideIn {\r\n from {margin-top: 150px;}\r\n to {margin-top: 0px;}\r\n }\r\n }\r\n }\r\n\r\n &.leaderboard-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.3s ease ${props => 0.3 * (props.index + 1) + 0.3}s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n\r\n .player-image {\r\n position: relative;\r\n z-index: 10;\r\n width: 250px;\r\n margin-top: 0px;\r\n animation: slideOut 0.6s ease ${props => 0.3 * props.index}s forwards;\r\n\r\n @keyframes slideOut {\r\n from {margin-top: 0px;}\r\n to {margin-top: 250px;}\r\n }\r\n }\r\n\r\n .player-score {\r\n margin-top: 0px;\r\n animation: slideSideOut 0.6s ease ${props => 0.3 * props.index}s forwards;\r\n\r\n @keyframes slideSideOut {\r\n from {margin-top: 0px;}\r\n to {margin-top: 150px;}\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst PictureDiv = styled.div`\r\n width: 250px;\r\n height: 250px;\r\n overflow: hidden;\r\n position: relative;\r\n overflow: hidden;\r\n`;\r\n\r\nconst TeamDiv = styled.div`\r\n text-transform: uppercase;\r\n font-size: 25px;\r\n margin-top: -7px;\r\n text-overflow: ellipsis;\r\n overflow: hidden; \r\n white-space: nowrap;\r\n font-family: 'DrukText-BoldItalic';\r\n letter-spacing: 3px;\r\n\r\n img {\r\n height: 50px;\r\n margin: 10px;\r\n }\r\n\r\n .player-score {\r\n font-size: 60px;\r\n font-family: 'DrukTextWide-BoldItalic';\r\n margin-top: 20px;\r\n line-height: 75px;\r\n color: #000;\r\n }\r\n\r\n &.bottom {\r\n height: 70px;\r\n overflow: hidden;\r\n border-bottom-left-radius: 3px;\r\n border-bottom-right-radius: 3px;\r\n }\r\n`;\r\n\r\nconst AttributeDiv = styled.div`\r\n text-transform: uppercase;\r\n font-family: 'DrukWide-SuperItalic';\r\n font-size: 27px;\r\n margin-top: -3px;\r\n`;\r\n\r\nconst TwireDiv = styled.div`\r\n background: #00000000;\r\n border-radius: 3px;\r\n width: 250px;\r\n margin: 0 auto;\r\n\r\n img {\r\n height: 35px;\r\n }\r\n\r\n &.leaderboard-show {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease 1.8s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.leaderboard-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.3s ease 1.8s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nfunction LeaderboardBody(props) {\r\n const { show, leaderboard } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n {\r\n leaderboard.map((p, i) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team\"\r\n />\r\n e.target.src = getPlayerImage('default')}\r\n alt=\"player\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n { p.ign.replace(/^[A-Za-z0-9]{0,4}_/g, '') }\r\n \r\n \r\n \r\n \r\n \r\n \r\n HASAR\r\n \r\n \r\n \r\n \r\n \r\n \r\n

{ parseInt(p.totalDamage) }

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardBody;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardBody from './LeaderboardBody';\r\n\r\nconst LeaderboardWrapper = styled.div`\r\n width: 1775px;\r\n font-family: 'osl5-2';\r\n color: #FFFFFF;\r\n`;\r\n\r\nclass ProtalityLivePlayerKillsDamage extends Component {\r\n render() {\r\n const { loaded, players, show } = this.props;\r\n\r\n if (!loaded) return null;\r\n const leaderboard = players.slice(0, 5);\r\n\r\n return (\r\n leaderboard.length ?\r\n \r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default ProtalityLivePlayerKillsDamage;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\n\r\nconst Wrapper = styled.div`\r\n font-size: 35px;\r\n .team-logo-main {\r\n height: 400px;\r\n\r\n img {\r\n height: 220px;\r\n }\r\n }\r\n\r\n &.component-show table tbody {\r\n .team-logo-main, .stats {\r\n transform: rotate3d(1, 0, 0, 90deg);\r\n animation: \r\n rotateIn 0.5s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards,\r\n fadeIn 1s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards;\r\n }\r\n\r\n tr:nth-child(2) {\r\n transform: rotate3d(1, 0, 0, 90deg);\r\n animation: \r\n rotateIn 0.5s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards,\r\n fadeIn 1s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards;\r\n }\r\n\r\n @keyframes rotateIn {\r\n from {transform: rotate3d(1, 0, 0, 90deg);}\r\n to {transform: rotate3d(1, 0, 0, 0deg);}\r\n }\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide table tbody {\r\n .team-logo-main, .stats {\r\n animation: \r\n rotateOut 0.5s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards,\r\n fadeOut 1s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards;\r\n }\r\n\r\n tr:nth-child(2) {\r\n transform: rotate3d(1, 0, 0, 0deg);\r\n animation: \r\n rotateOut 0.5s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards,\r\n fadeOut 1s ease ${props => ((props.rank > 5 ? props.rank - 5 : props.rank)) * 0.3}s forwards;\r\n }\r\n\r\n @keyframes rotateOut {\r\n from {transform: rotate3d(1, 0, 0, 0deg);}\r\n to {transform: rotate3d(1, 0, 0, 90deg);}\r\n }\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n td {\r\n height: 65px;\r\n }\r\n\r\n .rank {\r\n width: 65px;\r\n background: ${ props => props.colors && props.colors.primary ? props.colors.primary : '#FFF'};\r\n color: ${ props => props.colors && props.colors.rankText ? props.colors.rankText : '#000'};\r\n }\r\n\r\n .team-logo {\r\n padding: 0;\r\n width: 315px;\r\n color: ${ props => props.colors && props.colors.teamText ? props.colors.teamText : '#FFF'};\r\n\r\n div {\r\n background: ${ props => props.colors && props.colors.secondary ? props.colors.secondary : '#404040'};\r\n padding-right: 15px;\r\n padding-left: 80px;\r\n position: relative;\r\n overflow: hidden;\r\n \r\n img {\r\n height: 70px;\r\n position: absolute;\r\n top: -10px;\r\n left: 10px;\r\n transform: rotate(30deg);\r\n \r\n &:first-child {\r\n filter: blur(15px);\r\n }\r\n }\r\n }\r\n }\r\n\r\n .stats {\r\n font-size: 50px;\r\n color: ${ props => props.colors && props.colors.headerText ? props.colors.headerText : '#FFF'};\r\n }\r\n`;\r\n\r\nfunction LeaderboardPlayer(props) {\r\n const { player, rank, show, overlayColor } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n
{ rank }\r\n
\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n \"team e.target.src = getTeamLogo('default')}\r\n />\r\n { player.ign }\r\n
\r\n
\r\n
{ player.totalKills } / { Math.round(player.totalDamage) }
\r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nexport default LeaderboardPlayer;","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport LeaderboardPlayer from './LeaderboardPlayer';\r\n\r\nconst LeaderboardWrapper = styled.table`\r\n font-family: 'agency_fb';\r\n text-align: center; \r\n vertical-align: middle;\r\n text-transform: uppercase;\r\n border-collapse:separate;\r\n border-spacing: 10px 10px;\r\n\r\n .header {\r\n color: ${ props => props.colors && props.colors.headerText ? props.colors.headerText : '#FFF'};\r\n }\r\n\r\n h1 {\r\n font-size: 70px;\r\n }\r\n\r\n &.component-show {\r\n .header, .footer {\r\n animation: fadeIn 0.3s ease 0s forwards;\r\n }\r\n\r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.component-hide {\r\n .header, .footer {\r\n animation: fadeOut 0.3s ease 0s forwards;\r\n }\r\n\r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n`;\r\n\r\nclass DefaultPlayerKillsDamage extends Component {\r\n render() {\r\n const { loaded, players, show, overlayColor } = this.props;\r\n\r\n if (!loaded) return null;\r\n\r\n const topPlayers = players.slice(0, 5);\r\n\r\n return (\r\n topPlayers.length ?\r\n \r\n \r\n \r\n \r\n

Kills & Damage

\r\n \r\n \r\n \r\n {\r\n topPlayers.map((p, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default DefaultPlayerKillsDamage;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport ESL from './esl/EslLivePlayerKillsDamage';\r\nimport PSL from './psl/PslLivePlayerKillsDamage';\r\nimport Being from './being/BeingLivePlayerKillsDamage';\r\nimport Protality from './protality/ProtalityLivePlayerKillsDamage';\r\nimport Default from './default/DefaultPlayerKillsDamage';\r\n\r\nconst PUBGLivePlayerKillsOverlay = (props) => {\r\n const { shard, overlayDesign } = props;\r\n props.players.sort((a, b) => a.totalKills > b.totalKills ? -1 : 1);\r\n\r\n return (\r\n overlayDesign === 'psl' || shard.includes('psl') ? \r\n \r\n :\r\n overlayDesign === 'esl' ? \r\n \r\n :\r\n overlayDesign === 'being' ? \r\n \r\n :\r\n overlayDesign === 'protality' ? \r\n \r\n :\r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n players: state.overlay.pubg || [],\r\n overlayDesign: (state.overlay.tournament || {}).overlayDesign,\r\n overlayColor: (state.overlay.tournament || {}).overlayColor,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n loaded: state.overlay.loaded,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PUBGLivePlayerKillsOverlay);\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport MatchSelect from '../../../common/base/controller/inputs/MatchSelect';\r\nimport TeamSelect from '../../../common/base/controller/inputs/TeamSelect';\r\nimport CheckBox from '../../../common/base/controller/inputs/CheckBox';\r\nimport { COMPONENT_STATE_LEFT_TEAM, COMPONENT_STATE_RIGHT_TEAM, COMPONENT_STATE_SUBSCRIPTION } from '../../../constants';\r\nimport { PUBG_GAME } from '../../../../../util/Games';\r\n\r\nclass PUBGLiveTeamHeadToHeadController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PUBGLiveTeamHeadToHeadController;\r\n","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst HeadToHeadWrapper = styled.table`\r\n &.bc-show {\r\n }\r\n\r\n &.bc-hide {\r\n }\r\n`;\r\n\r\nclass EslLiveTeamHeadToHead extends Component {\r\n\r\n render() {\r\n const { loaded, left, right, show } = this.props;\r\n\r\n if (!loaded || !left || !right) return null;\r\n console.log(left)\r\n console.log(right)\r\n\r\n return (\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default EslLiveTeamHeadToHead;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport ESL from './esl/EslLiveTeamHeadToHead';\r\nconst PUBGLiveTeamHeadToHeadOverlay = (props) => {\r\n const { overlayDesign } = props;\r\n\r\n return (\r\n overlayDesign === 'esl' ?\r\n \r\n :\r\n null\r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n left: state.overlay.left ? state.overlay.left.pubg : {},\r\n right: state.overlay.right ? state.overlay.right.pubg : {},\r\n overlayDesign: (state.overlay.tournament || {}).overlayDesign,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n loaded: state.overlay.loaded,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PUBGLiveTeamHeadToHeadOverlay);","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport StatisticsSelect from '../../../common/base/controller/inputs/StatisticsSelect';\r\nimport CheckBox from '../../../common/base/controller/inputs/CheckBox';\r\nimport { PUBG_GAME } from '../../../../../util/Games';\r\nimport MatchSelect from '../../../common/base/controller/inputs/MatchSelect';\r\nimport { COMPONENT_STATE_SUBSCRIPTION } from '../../../constants';\r\n\r\nclass PUBGLivePlayerLeaderboardController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n // TODO: remove when actual statistics will be available\r\n component.availableStatistics = [\r\n {key: \"kills\", value: \"kills\"},\r\n {key: \"damage_dealt\", value: \"damage dealt\"},\r\n ]\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PUBGLivePlayerLeaderboardController;\r\n","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst LeaderboardWrapper = styled.div``;\r\n\r\nclass EslLivePlayerLeaderBoard extends Component {\r\n render() {\r\n const { loaded, leaderboard, show, opts } = this.props;\r\n\r\n if (!loaded) return null;\r\n\r\n const stat = opts.stats ? opts.stats[0] : {};\r\n const topPlayers = leaderboard.slice(0, 5);\r\n\r\n return (\r\n topPlayers.length ?\r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default EslLivePlayerLeaderBoard;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport ESL from './esl/EslLivePlayerLeaderboard';\r\n\r\nconst PUBGLivePlayerLeaderboardOverlay = (props) => {\r\n const { shard, overlayDesign } = props;\r\n\r\n return (\r\n overlayDesign === 'esl' ? \r\n \r\n :\r\n null\r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n leaderboard: state.overlay.pubg || [],\r\n overlayDesign: (state.overlay.tournament || {}).overlayDesign,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n loaded: state.overlay.loaded,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PUBGLivePlayerLeaderboardOverlay);","import React, { Component } from 'react';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport { PUBG_GAME } from '../../../../../util/Games';\r\n\r\nclass PUBGCurrentMatchController extends Component {\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PUBGCurrentMatchController;\r\n","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst width = 200;\r\nconst height = 50;\r\nconst leftSideWidth = 15;\r\n\r\nconst LastWinnersWrapper = styled.table`\r\n width: ${width}px;\r\n height: ${height}px;\r\n overflow: hidden;\r\n text-align: center;\r\n vertical-align: middle;\r\n font-size: 2em;\r\n margin: 5px;\r\n color: ${props => props.colors ? (props.colors.text || styles.secondary) : styles.secondary};\r\n\r\n &.bc-show tr {\r\n animation: fadeIn 0.6s ease 0s forwards;\r\n \r\n @keyframes fadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n &.bc-hide tr {\r\n animation: fadeOut 0.6s ease 0s forwards;\r\n \r\n @keyframes fadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n tr td:first-child {\r\n background: ${props => props.colors ? (props.colors.primary || styles.primary) : styles.primaryLight};\r\n border-top-left-radius: 7px;\r\n border-bottom-left-radius: 7px;\r\n width: ${leftSideWidth}px;\r\n }\r\n\r\n tr td:last-child {\r\n background: ${props => props.colors ? (props.colors.secondary || styles.tertiary) : styles.tertiary};\r\n border-top-right-radius: 7px;\r\n border-bottom-right-radius: 7px;\r\n }\r\n`;\r\n\r\nclass TwireLastWinners extends Component {\r\n render() {\r\n const { loaded, currentMatch, show, shard, overlayColor } = this.props;\r\n\r\n return (\r\n loaded ?\r\n \r\n \r\n \r\n \r\n Match { currentMatch }\r\n \r\n \r\n \r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default TwireLastWinners;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport Default from './default/TwireCurrentMatch';\r\n\r\nconst PUBGCurrentMatchOverlay = (props) => {\r\n const { shard } = props;\r\n\r\n return (\r\n shard.includes('psl') ? \r\n \r\n :\r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n currentMatch: state.overlay.pubg ? state.overlay.pubg.currentMatch : null,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n loaded: state.overlay.loaded,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PUBGCurrentMatchOverlay);\r\n","import React, { useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { FormGroup, Label } from 'reactstrap';\r\nimport { requestChangeComponent } from '../../../../../../redux/dashboard/actions';\r\nimport { Input } from '../../../../../../components/StyledCoreUI';\r\n\r\nfunction TextInput(props) {\r\n const { component, requestChangeComponent, label, placeholder, type, stateField } = props;\r\n\r\n useEffect(() => {\r\n requestChangeComponent(component, { state: { [stateField]: component.opts ? component.opts[stateField] : null } });\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n requestChangeComponent(component, { state: { [stateField]: e.target.value } })}\r\n color={styles.tertiaryDark}\r\n warning={!component.state[stateField] && component.state.showEmptyFieldWarning}\r\n />\r\n \r\n );\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n requestChangeComponent,\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(TextInput);\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport TextInput from '../../../common/base/controller/inputs/TextInput';\r\nimport { COMPONENT_STATE_MAP_ROTATION, COMPONENT_STATE_START_TIME, COMPONENT_STATE_TIME_BETWEEN_MATCHES } from '../../../constants';\r\nimport { PUBG_GAME } from '../../../../../util/Games';\r\n\r\nclass PUBGTodaysWinnersController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PUBGTodaysWinnersController;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst margin = 0;\r\n\r\nconst Wrapper = styled.div`\r\n overflow: hidden;\r\n width: ${props => props.rowWidth - margin}px;\r\n &.header-show {\r\n width: 0;\r\n animation: open 0.5s ease 0s forwards;\r\n \r\n @keyframes open {\r\n from {width: 0;}\r\n to {width: ${props => props.rowWidth - margin}px;}\r\n }\r\n }\r\n\r\n &.header-hide {\r\n width: ${props => props.rowWidth - margin}px;\r\n animation: close 0.5s ease 2s forwards;\r\n \r\n @keyframes close {\r\n from {width: ${props => props.rowWidth - margin}px;}\r\n to {width: 0;}\r\n }\r\n }\r\n\r\n background: ${props => styles[props.shard + 'Color'] ? styles[props.shard + 'Color'] : styles.primaryLight};\r\n border-top-left-radius: 25px;\r\n border-top-right-radius: 25px;\r\n\r\n h2 {\r\n font-weight: 600;\r\n margin-top: 5px;\r\n text-transform: uppercase;\r\n white-space: nowrap;\r\n color: #FFF;\r\n }\r\n`;\r\n\r\nfunction LastWinnersHeader(props) {\r\n const { rowWidth, show } = props;\r\n\r\n return (\r\n \r\n

Today's Winners

\r\n \r\n );\r\n}\r\n\r\nexport default LastWinnersHeader;","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { getTeamLogo, numberToPlacementSurfix } from '../../../../../../util/CommonUtil';\r\n\r\nconst teamLogoSize = 220;\r\nconst padding = 20;\r\nconst height = 390;\r\n\r\nconst maps = {\r\n m: 'Miramar',\r\n v: 'Vikendi',\r\n e: 'Erangel',\r\n s: 'Sanhok',\r\n}\r\n\r\nconst Wrapper = styled.div`\r\n width: ${props => props.colWidth}px;\r\n margin-right: ${props => props.margin}px;\r\n float: left;\r\n overflow: hidden;\r\n text-transform: uppercase;\r\n\r\n &.team-show {\r\n height: 0;\r\n animation: open-team .75s ease ${ props => props.delayShow * 0.3 + 0.2 }s forwards;\r\n\r\n @keyframes open-team {\r\n from {height: 0;}\r\n to {height: ${height}px;}\r\n }\r\n }\r\n\r\n &.team-hide {\r\n height: ${height}px;\r\n animation: close-team .75s ease ${ props => props.delayHide * 0.3 }s forwards;\r\n\r\n @keyframes close-team {\r\n from {height: ${height}px;}\r\n to {height: 0px;}\r\n }\r\n }\r\n\r\n .empty {\r\n opacity: .3;\r\n }\r\n`;\r\n\r\nconst TeamRow = styled(Row)`\r\n font-size: 30px;\r\n line-height: 30px;\r\n background: ${styles.tertiary};\r\n font-weight: 600;\r\n color: ${styles.secondary};\r\n border-top: 1px solid ${styles.primary};\r\n padding: 12px;\r\n\r\n span {\r\n font-size: 20px;\r\n }\r\n`;\r\n\r\nconst LogoRow = styled(Row)`\r\n background: ${styles.tertiary};\r\n font-weight: 600;\r\n color: ${styles.secondary};\r\n\r\n img {\r\n height: ${teamLogoSize}px;\r\n margin: ${padding}px 0;\r\n z-index: 5;\r\n }\r\n\r\n span {\r\n position: relative;\r\n z-index: 10;\r\n }\r\n`;\r\n\r\nfunction LastWinnersBody(props) {\r\n const { index, matches, colWidth, numOfMatches, map, show } = props;\r\n let { currentMatchNumber } = props;\r\n matches.forEach(lw => {\r\n if (lw.teamName) {\r\n currentMatchNumber--;\r\n }\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n

{index + currentMatchNumber}{ numberToPlacementSurfix(index + currentMatchNumber) } match

\r\n
{ matches[index] ? 'Winner' : '-' }
\r\n \r\n \r\n \"team e.target.src = getTeamLogo('default')}\r\n />\r\n \r\n \r\n \r\n \r\n { matches[index] ? matches[index].teamName : maps[map] }\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LastWinnersBody;","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\n\r\nconst height = 50;\r\n\r\nconst Wrapper = styled.div`\r\n width: ${props => props.rowWidth}px;\r\n overflow: hidden;\r\n &.footer-show {\r\n height: 0;\r\n animation: open-footer .75s ease 1.8s forwards;\r\n\r\n @keyframes open-footer {\r\n from {height: 0;}\r\n to {height: ${height}px;}\r\n }\r\n }\r\n\r\n &.footer-hide {\r\n height: ${height}px;\r\n animation: close-footer .75s ease 0s forwards;\r\n\r\n @keyframes close-footer {\r\n from {height: ${height}px;}\r\n to {height: 0px;}\r\n }\r\n }\r\n`;\r\n\r\nconst Content = styled(Col)`\r\n background: ${styles.tertiary};\r\n border-bottom-left-radius: 25px;\r\n border-bottom-right-radius: 25px;\r\n padding: 5px 0;\r\n\r\n img {\r\n height: 38px;\r\n }\r\n`;\r\n\r\nfunction LastWinnersFooter(props) {\r\n const { rowWidth, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \"twire\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LastWinnersFooter;","import React, { Component } from 'react';\r\nimport TodaysWinnersHeader from './TodaysWinnersHeader';\r\nimport TodaysWinnersBody from './TodaysWinnersBody';\r\nimport TodaysWinnersFooter from './TodaysWinnersFooter';\r\n\r\nconst width = 1600;\r\n\r\nclass TwireTodaysWinners extends Component {\r\n render() {\r\n const { loaded, currentMatchNumber, matches, mapRotation, show, shard } = this.props;\r\n const numOfMatches = (mapRotation || '').length;\r\n\r\n return (\r\n loaded ?\r\n
\r\n \r\n {\r\n Array.from(Array(numOfMatches).keys()).map(i => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n \r\n
\r\n :\r\n null\r\n );\r\n }\r\n}\r\n\r\nexport default TwireTodaysWinners;\r\n","export default {\r\n m: 'Miramar',\r\n v: 'Vikendi',\r\n e: 'Erangel',\r\n s: 'Sanhok',\r\n}","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport maps from '../../../../../../assets/map/mapMapping';\r\nimport { Row, Col } from 'reactstrap';\r\n\r\nconst Wrapper = styled.div`\r\n text-transform: uppercase;\r\n width: ${ props => props.rowWidth / 2 }px;\r\n margin-left: ${ props => props.rowWidth / 4 }px;\r\n margin-top: 35px;\r\n margin-bottom: 35px !important;\r\n background: ${ styles.pslColor };\r\n color: #000000;\r\n height: 180px;\r\n\r\n &.head-to-head-header-show {\r\n display: block;\r\n width: 0px;\r\n animation: headerSlideDown 0.5s ease 0.2s forwards;\r\n \r\n @keyframes headerSlideDown {\r\n from {width: 0px;}\r\n to {width: ${ props => props.rowWidth / 2 }px;}\r\n }\r\n\r\n p {\r\n opacity: 0;\r\n animation: headerFadeIn 0.6s ease 0.6s forwards;\r\n \r\n @keyframes headerFadeIn {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n\r\n img {\r\n opacity: 0;\r\n animation: headerFadeInImg 0.3s ease 0s forwards;\r\n \r\n @keyframes headerFadeInImg {\r\n from {opacity: 0;}\r\n to {opacity: 1;}\r\n }\r\n }\r\n }\r\n\r\n &.head-to-head-header-hide {\r\n width: ${ props => props.rowWidth / 2 }px;\r\n animation: headerSlideUp 0.5s ease 3s forwards;\r\n \r\n @keyframes headerSlideUp {\r\n from {width: ${ props => props.rowWidth / 2 }px;}\r\n to {width: 0px;}\r\n }\r\n\r\n p {\r\n opacity: 1;\r\n animation: headerFadeOut 0.6s ease 2.5s forwards;\r\n \r\n @keyframes headerFadeOut {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n\r\n img {\r\n opacity: 1;\r\n animation: headerFadeOutImg 0.3s ease 3.3s forwards;\r\n \r\n @keyframes headerFadeOutImg {\r\n from {opacity: 1;}\r\n to {opacity: 0;}\r\n }\r\n }\r\n }\r\n\r\n img {\r\n height: 250px;\r\n position: absolute;\r\n top: -0px;\r\n }\r\n\r\n .row {\r\n padding-top: 15px;\r\n padding-bottom: 15px;\r\n }\r\n\r\n .next-match {\r\n vertical-align: middle;\r\n font-size: 35px;\r\n letter-spacing: 8px;\r\n filter: drop-shadow(0px 0px 4px #00000040);\r\n line-height: 1;\r\n margin-left: 5px;\r\n }\r\n\r\n .next-map {\r\n vertical-align: middle;\r\n font-size: 130px;\r\n text-transform: uppercase;\r\n filter: drop-shadow(0px 0px 4px #00000080);\r\n line-height: 1;\r\n }\r\n`;\r\n\r\nfunction LastWinnersHeader(props) {\r\n const { rowWidth, show, nextMap } = props;\r\n\r\n return (\r\n \r\n {`PSL\r\n \r\n \r\n \r\n \r\n

{ maps[nextMap] ? 'Next Match' : 'Today\\'s' }

\r\n

{ maps[nextMap] ? maps[nextMap] : 'WINNERS' }

\r\n \r\n
\r\n \r\n );\r\n}\r\n\r\nexport default LastWinnersHeader;","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\nimport maps from '../../../../../../assets/map/mapMapping';\r\n\r\nconst teamLogoSize = 220;\r\nconst padding = 20;\r\nconst height = 450;\r\nconst margin = 12;\r\n\r\nconst Wrapper = styled.div`\r\n width: ${props => props.colWidth - margin}px;\r\n margin-right: ${margin/2}px;\r\n margin-left: ${margin/2}px;\r\n float: left;\r\n overflow: hidden;\r\n text-transform: uppercase;\r\n\r\n &.team-show {\r\n height: 0;\r\n animation: open-team .75s ease ${ props => props.delayShow * 0.3 + 0.6 }s forwards;\r\n\r\n @keyframes open-team {\r\n from {height: 0;}\r\n to {height: ${height}px;}\r\n }\r\n }\r\n\r\n &.team-hide {\r\n height: ${height}px;\r\n animation: close-team .75s ease ${ props => props.delayHide * 0.3 + 0.8 }s forwards;\r\n\r\n @keyframes close-team {\r\n from {height: ${height}px;}\r\n to {height: 0px;}\r\n }\r\n }\r\n\r\n .empty {\r\n opacity: .3;\r\n }\r\n\r\n .map-row {\r\n font-size: 38px;\r\n background: ${ styles.pslColor };\r\n }\r\n`;\r\n\r\nconst TeamRow = styled(Row)`\r\n background: rgb(26,125,162);\r\n background: #3e3e3e;\r\n color: ${styles.secondary};\r\n padding: 10px;\r\n\r\n .match-name {\r\n font-size: 22px;\r\n font-weight: 200;\r\n line-height: 22px;\r\n }\r\n\r\n .match-winner {\r\n font-size: 35px;\r\n line-height: 55px;\r\n }\r\n`;\r\n\r\nconst LogoRow = styled(Row)`\r\n background: url(/assets/img/ael/${props => maps[props.map].toLowerCase()}.png);\r\n background-repeat: no-repeat;\r\n background-size: cover;\r\n font-weight: 600;\r\n height: 258px;\r\n color: ${styles.secondary};\r\n\r\n img {\r\n height: ${teamLogoSize}px;\r\n margin: ${padding}px ${props => (props.colWidth - teamLogoSize) / 2}px;\r\n z-index: 5;\r\n position: absolute;\r\n left: 7px;\r\n }\r\n\r\n span {\r\n position: relative;\r\n z-index: 10;\r\n }\r\n\r\n .overlay {\r\n background: rgba(0, 0, 0, 0.6);\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n`;\r\n\r\nfunction LastWinnersBody(props) {\r\n const { index, matches, colWidth, numOfMatches, map, matchTime, show } = props;\r\n let { currentMatchNumber } = props;\r\n matches.forEach(lw => {\r\n if (lw.teamName) {\r\n currentMatchNumber--;\r\n }\r\n });\r\n \r\n const determineTeamNameSize = () => {\r\n if (matches[index] && matches[index].teamName) {\r\n const teamNameLength = matches[index].teamName.length;\r\n if (teamNameLength > 10) {\r\n return 'small';\r\n } else if (teamNameLength > 13) {\r\n return 'x-small';\r\n } else if (teamNameLength > 16) {\r\n return 'xx-small';\r\n }\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n

{ maps[map] }

\r\n \r\n
\r\n \r\n \r\n {\r\n matches[index] && matches[index].teamName ?\r\n <>\r\n
\r\n \"team e.target.src = getTeamLogo('default')}\r\n />\r\n \r\n :\r\n null\r\n }\r\n \r\n \r\n \r\n \r\n

{ matches[index] && matches[index].teamName ? 'Winner' : `Match ${ index + currentMatchNumber }`}

\r\n \r\n \r\n

\r\n { matches[index] && matches[index].teamName ? matches[index].teamName : matchTime }\r\n

\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LastWinnersBody;","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst height = 50;\r\n\r\nconst Wrapper = styled.div`\r\n width: ${ props => props.rowWidth / 5 }px;\r\n margin-left: ${ props => 2 * props.rowWidth / 5 }px;\r\n overflow: hidden;\r\n background: #3e3e3e;\r\n\r\n img {\r\n margin-top: 2px;\r\n height: 45px;\r\n }\r\n\r\n &.footer-show {\r\n height: 0;\r\n animation: open-footer .75s ease 2.6s forwards;\r\n\r\n @keyframes open-footer {\r\n from {height: 0;}\r\n to {height: ${height}px;}s\r\n }\r\n }\r\n\r\n &.footer-hide {\r\n height: ${height}px;\r\n animation: close-footer .75s ease-in 0s forwards;\r\n\r\n @keyframes close-footer {\r\n from {height: ${height}px;}\r\n to {height: 0px;}\r\n }\r\n }\r\n`;\r\n\r\nfunction PoweredByTwire(props) {\r\n const { rowWidth, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default PoweredByTwire;","import React, { Component } from 'react';\r\nimport moment from 'moment';\r\nimport styled from 'styled-components';\r\nimport TodaysWinnersHeader from './TodaysWinnersHeader';\r\nimport TodaysWinnersBody from './TodaysWinnersBody';\r\nimport TodaysWinnersFooter from './TodaysWinnersFooter';\r\n\r\nconst width = 1800;\r\n\r\nconst LastWinnersWrapper = styled.div`\r\n width: ${width}px;\r\n overflow: hidden;\r\n font-family: 'agency_fb';\r\n\r\n p {\r\n padding: 0;\r\n margin: 0;\r\n }\r\n`;\r\n\r\nclass PslLastWinners extends Component {\r\n render() {\r\n const { loaded, currentMatchNumber, matches, mapRotation, startTime, timeBetweenMatches, show } = this.props;\r\n\r\n if (!loaded) return null;\r\n\r\n const numOfMatches = (mapRotation || '').length;\r\n const nextMap = mapRotation[matches.length];\r\n\r\n return (\r\n \r\n \r\n {\r\n Array.from(Array(numOfMatches).keys()).map(i => {\r\n let matchTime = moment.duration(startTime);\r\n Array.from(Array(i).keys()).forEach(() => {\r\n matchTime = matchTime.add(timeBetweenMatches);\r\n });\r\n return (\r\n \r\n )\r\n })\r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PslLastWinners;\r\n","import React, { Component } from 'react';\r\nimport styled from 'styled-components';\r\nimport maps from '../../../../../../assets/map/mapMapping';\r\nimport { getTeamLogo } from '../../../../../../util/CommonUtil';\r\nimport teamTranslations from '../../../../../../util/TeamTranslations';\r\n\r\nconst WIDTH = 1800;\r\nconst HORIZONTAL_SPACING = 5;\r\n\r\nconst TodaysWinnersWrapper = styled.table`\r\n font-family: machine;\r\n font-size: 35px;\r\n\r\n border-collapse:separate; \r\n border-spacing: ${HORIZONTAL_SPACING}px;\r\n width: ${WIDTH}px;\r\n\r\n text-align: center;\r\n vertical-align: middle;\r\n\r\n p {\r\n padding: 0;\r\n margin: 0;\r\n }\r\n\r\n .background-td {\r\n background-image: url('/assets/img/pjc/todays-winners-background.png');\r\n background-attachment: fixed;\r\n background-position: 0px 0px;\r\n background-repeat: no-repeat;\r\n overflow: hidden;\r\n }\r\n\r\n .map-overlay {\r\n position: relative;\r\n height: 400px;\r\n width: 354px;\r\n top: 0;\r\n left: 0;\r\n background: #18141b80;\r\n }\r\n\r\n .component-show {\r\n opacity: 0;\r\n animation: fadeIn 0.6s ease 0.2s forwards;\r\n\r\n @keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: -100px;\r\n animation: slideUp 0.3s ease 0.2s forwards;\r\n \r\n @keyframes slideUp {\r\n from {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n to {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n span {\r\n position: relative;\r\n }\r\n\r\n .component-hide {\r\n opacity: 1;\r\n animation: fadeOut 0.6s ease 0s forwards;\r\n\r\n @keyframes fadeOut {\r\n from {\r\n opacity: 1;\r\n }\r\n to {\r\n opacity: 0;\r\n }\r\n }\r\n\r\n p, span {\r\n bottom: 0px;\r\n animation: slideDown 0.3s ease 0s forwards;\r\n \r\n @keyframes slideDown {\r\n from {\r\n opacity: 1;\r\n bottom: 0px;\r\n }\r\n to {\r\n opacity: 0;\r\n bottom: -100px;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst Map = styled.td`\r\n background: url('/assets/img/maps/${props => maps[props.map]}.png');\r\n height: 400px;\r\n width: 354px;\r\n background-size: cover;\r\n background-repeat: no-repeat;\r\n position: relative;\r\n\r\n img {\r\n position: absolute;\r\n width: 220px;\r\n left: 67px;\r\n top: 90px;\r\n }\r\n`;\r\n\r\nclass PjcTodaysWinners extends Component {\r\n render() {\r\n const { loaded, matches, show } = this.props;\r\n\r\n if (!loaded) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n {\r\n matches.map(m => {\r\n return (\r\n { m.time }\r\n );\r\n })\r\n }\r\n \r\n \r\n {\r\n matches.map(m => {\r\n return (\r\n \r\n {\r\n m.teamName ?\r\n
\r\n :\r\n null\r\n }\r\n {\r\n m.teamName ?\r\n e.target.src = getTeamLogo('default')}\r\n alt=\"team logo\"\r\n />\r\n :\r\n null\r\n }\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n {\r\n matches.map(m => {\r\n return (\r\n \r\n { (teamTranslations[m.teamName] ? teamTranslations[m.teamName] : m.teamName) || maps[m.map] }\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PjcTodaysWinners;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport moment from 'moment';\r\nimport Default from './default/TwireTodaysWinners';\r\nimport PSL from './psl/PslTodaysWinners';\r\nimport PJC from './pjc/PjcTodaysWinners';\r\n\r\nconst PUBGTodaysWinnersOverlay = (props) => {\r\n const { shard, mapRotation, startTime, timeBetweenMatches } = props;\r\n const numOfMatches = (mapRotation || '').length;\r\n\r\n [...new Array(numOfMatches).keys()].forEach(i => {\r\n // Calculating match numbers\r\n if (!props.matches[i]) {\r\n props.matches.push({ matchNumber: props.currentMatchNumber + i });\r\n }\r\n props.matches[i].map = mapRotation.substring(i, i + 1);\r\n\r\n // Calculating times of each match\r\n let matchTime = moment.duration(startTime);\r\n [...new Array(i).keys()].forEach(() => {\r\n matchTime = matchTime.add(timeBetweenMatches);\r\n });\r\n props.matches[i].time = moment.utc(matchTime.asMilliseconds()).format(\"HH:mm\");\r\n });\r\n\r\n return (\r\n shard.includes('psl') ? \r\n \r\n :\r\n shard.includes('test-pjc21') || shard.includes('pjc') ? \r\n \r\n :\r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n currentMatchNumber: state.overlay.pubg ? state.overlay.pubg.currentMatchNumber : 1,\r\n matches: state.overlay.pubg ? state.overlay.pubg.matches : [],\r\n ...(state.overlay.opts || {}),\r\n show: state.overlay.show,\r\n loaded: state.overlay.loaded,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PUBGTodaysWinnersOverlay);\r\n","import {\r\n // Component Names\r\n PLAYER_STATS_COMPONENT_NAME,\r\n PLAYER_LEADERBOARD_COMPONENT_NAME,\r\n PLAYER_HEAD_TO_HEAD_COMPONENT_NAME,\r\n TEAM_STATS_COMPONENT_NAME,\r\n TEAM_LEADERBOARD_COMPONENT_NAME,\r\n LIVE_TEAM_LEADERBOARD_COMPONENT_NAME,\r\n LIVE_SURVIVAL_LEADERBOARD_COMPONENT_NAME,\r\n LIVE_MAP_TEAMS_COMPONENT_NAME,\r\n LIVE_TEAM_STATS_COMPONENT_NAME,\r\n LIVE_PLAYER_STATS_COMPONENT_NAME,\r\n LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_NAME,\r\n LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_NAME,\r\n LIVE_PLAYER_LEADERBOARD_COMPONENT_NAME,\r\n TEAM_HEAD_TO_HEAD_COMPONENT_NAME,\r\n CURRENT_MATCH_COMPONENT_NAME,\r\n TODAYS_WINNERS_COMPONENT_NAME,\r\n // Component Types\r\n PLAYER_STATS_COMPONENT_TYPE,\r\n PLAYER_LEADERBOARD_COMPONENT_TYPE,\r\n PLAYER_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n TEAM_STATS_COMPONENT_TYPE,\r\n TEAM_LEADERBOARD_COMPONENT_TYPE,\r\n LIVE_TEAM_LEADERBOARD_COMPONENT_TYPE,\r\n LIVE_SURVIVAL_LEADERBOARD_COMPONENT_TYPE,\r\n LIVE_MAP_TEAMS_COMPONENT_TYPE,\r\n LIVE_TEAM_STATS_COMPONENT_TYPE,\r\n LIVE_PLAYER_STATS_COMPONENT_TYPE,\r\n LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_TYPE,\r\n LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n LIVE_PLAYER_LEADERBOARD_COMPONENT_TYPE,\r\n TEAM_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n CURRENT_MATCH_COMPONENT_TYPE,\r\n TODAYS_WINNERS_COMPONENT_TYPE,\r\n // State to opts mappings\r\n PLAYER_STATS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n PLAYER_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n PLAYER_HEAD_TO_HEAD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n TEAM_STATS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n TEAM_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n LIVE_TEAM_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n LIVE_SURVIVAL_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n LIVE_MAP_TEAMS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n LIVE_TEAM_STATS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n LIVE_PLAYER_STATS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n LIVE_PLAYER_KILLS_COMPONENT_NAME,\r\n LIVE_PLAYER_KILLS_COMPONENT_TYPE,\r\n LIVE_PLAYER_KILLS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n LIVE_PLAYER_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n TEAM_HEAD_TO_HEAD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n CURRENT_MATCH_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n TODAYS_WINNERS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n} from '../constants';\r\n\r\nimport PlayerStatsController from './playerStats/controller/PUBGPlayerStatsController';\r\nimport PlayerStatsOverlay from './playerStats/overlay/PUBGPlayerStatsOverlay';\r\nimport TeamStatsController from './teamStats/controller/PUBGTeamStatsController';\r\nimport TeamStatsOverlay from './teamStats/overlay/PUBGTeamStatsOverlay';\r\nimport PlayerHeadToHeadController from './playerHeadToHead/controller/PUBGPlayerHeadToHeadController';\r\nimport PlayerHeadToHeadOverlay from './playerHeadToHead/overlay/PUBGPlayerHeadToHeadOverlay';\r\nimport TeamHeadToHeadController from './teamHeadToHead/controller/PUBGTeamHeadToHeadController';\r\nimport TeamHeadToHeadOverlay from './teamHeadToHead/overlay/PUBGTeamHeadToHeadOverlay';\r\nimport PlayerLeaderboardController from './playerLeaderboard/controller/PUBGPlayerLeaderboardController';\r\nimport PlayerLeaderboardOverlay from './playerLeaderboard/overlay/PUBGPlayerLeaderboardOverlay';\r\nimport TeamLeaderboardController from './teamLeaderboard/controller/PUBGTeamLeaderboardController';\r\nimport TeamLeaderboardOverlay from './teamLeaderboard/overlay/PUBGTeamLeaderboardOverlay';\r\nimport LiveTeamLeaderboardController from './liveTeamLeaderboard/controller/PUBGLiveTeamLeaderboardController';\r\nimport LiveTeamLeaderboardOverlay from './liveTeamLeaderboard/overlay/PUBGLiveTeamLeaderboardOverlay';\r\nimport LiveSurvivalLeaderboardController from './liveSurvivalLeaderboard/controller/PUBGLiveSurvivalLeaderboardController';\r\nimport LiveSurvivalLeaderboardOverlay from './liveSurvivalLeaderboard/overlay/PUBGLiveSurvivalLeaderboardOverlay';\r\nimport LiveMapTeamsController from './liveMapTeams/controller/PUBGLiveMapTeamsController';\r\nimport LiveMapTeamsOverlay from './liveMapTeams/overlay/PUBGLiveMapTeamsOverlay';\r\nimport LiveTeamStatsController from './liveTeamStats/controller/PUBGLiveTeamStatsController';\r\nimport LiveTeamStatsOverlay from './liveTeamStats/overlay/PUBGLiveTeamStatsOverlay';\r\nimport LivePlayerStatsController from './livePlayerStats/controller/PUBGLivePlayerStatsController';\r\nimport LivePlayerStatsOverlay from './livePlayerStats/overlay/PUBGLivePlayerStatsOverlay';\r\nimport LivePlayerKillsController from './livePlayerKills/controller/PUBGLivePlayerKillsController';\r\nimport LivePlayerKillsOverlay from './livePlayerKills/overlay/PUBGLivePlayerKillsOverlay';\r\nimport LivePlayerKillsDamageController from './livePlayerKillsDamage/controller/PUBGLivePlayerKillsDamageController';\r\nimport LivePlayerKillsDamageOverlay from './livePlayerKillsDamage/overlay/PUBGLivePlayerKillsDamageOverlay';\r\nimport LiveTeamHeadToHeadController from './liveTeamHeadToHead/controller/PUBGLiveTeamHeadToHeadController';\r\nimport LiveTeamHeadToHeadOverlay from './liveTeamHeadToHead/overlay/PUBGLiveTeamHeadToHeadOverlay';\r\nimport LivePlayerLeaderboardController from './livePlayerLeaderboard/controller/PUBGLivePlayerLeaderboardController';\r\nimport LivePlayerLeaderboardOverlay from './livePlayerLeaderboard/overlay/PUBGLivePlayerLeaderboardOverlay';\r\nimport CurrentMatchController from './currentMatch/controller/PUBGCurrentMatchController';\r\nimport CurrentMatchOverlay from './currentMatch/overlay/PUBGCurrentMatchOverlay';\r\nimport TodaysWinnersController from './todaysWinners/controller/PUBGTodaysWinnersController';\r\nimport TodaysWinnersOverlay from './todaysWinners/overlay/PUBGTodaysWinnersOverlay';\r\n\r\nexport default {\r\n PlayerStats: {\r\n width: 4,\r\n name: PLAYER_STATS_COMPONENT_NAME,\r\n type: PLAYER_STATS_COMPONENT_TYPE,\r\n controller: PlayerStatsController,\r\n overlay: PlayerStatsOverlay,\r\n maxStatistics: 5,\r\n stateOptsMapping: PLAYER_STATS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n TeamStats: {\r\n width: 4,\r\n name: TEAM_STATS_COMPONENT_NAME,\r\n type: TEAM_STATS_COMPONENT_TYPE,\r\n controller: TeamStatsController,\r\n overlay: TeamStatsOverlay,\r\n maxStatistics: 5,\r\n stateOptsMapping: TEAM_STATS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n PlayerHeadToHead: {\r\n width: 4,\r\n name: PLAYER_HEAD_TO_HEAD_COMPONENT_NAME,\r\n type: PLAYER_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n controller: PlayerHeadToHeadController,\r\n overlay: PlayerHeadToHeadOverlay,\r\n maxStatistics: 4,\r\n stateOptsMapping: PLAYER_HEAD_TO_HEAD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n TeamHeadToHead: {\r\n width: 4,\r\n name: TEAM_HEAD_TO_HEAD_COMPONENT_NAME,\r\n type: TEAM_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n controller: TeamHeadToHeadController,\r\n overlay: TeamHeadToHeadOverlay,\r\n maxStatistics: 4,\r\n stateOptsMapping: TEAM_HEAD_TO_HEAD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n PlayerLeaderboard: {\r\n width: 4,\r\n name: PLAYER_LEADERBOARD_COMPONENT_NAME,\r\n type: PLAYER_LEADERBOARD_COMPONENT_TYPE,\r\n controller: PlayerLeaderboardController,\r\n overlay: PlayerLeaderboardOverlay,\r\n maxStatistics: 1,\r\n stateOptsMapping: PLAYER_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n exportOverlay: {\r\n width: 1800,\r\n height: 700,\r\n teamNameProperty: 'teamName',\r\n },\r\n },\r\n TeamLeaderboard: {\r\n width: 4,\r\n name: TEAM_LEADERBOARD_COMPONENT_NAME,\r\n type: TEAM_LEADERBOARD_COMPONENT_TYPE,\r\n controller: TeamLeaderboardController,\r\n overlay: TeamLeaderboardOverlay,\r\n maxStatistics: null,\r\n stateOptsMapping: TEAM_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n exportOverlay: {\r\n width: 1800,\r\n height: 800,\r\n teamNameProperty: 'team',\r\n },\r\n },\r\n LiveTeamLeaderboard: {\r\n width: 4,\r\n name: LIVE_TEAM_LEADERBOARD_COMPONENT_NAME,\r\n type: LIVE_TEAM_LEADERBOARD_COMPONENT_TYPE,\r\n controller: LiveTeamLeaderboardController,\r\n overlay: LiveTeamLeaderboardOverlay,\r\n maxStatistics: null,\r\n stateOptsMapping: LIVE_TEAM_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n LiveSurvivalLeaderboard: {\r\n width: 4,\r\n name: LIVE_SURVIVAL_LEADERBOARD_COMPONENT_NAME,\r\n type: LIVE_SURVIVAL_LEADERBOARD_COMPONENT_TYPE,\r\n controller: LiveSurvivalLeaderboardController,\r\n overlay: LiveSurvivalLeaderboardOverlay,\r\n maxStatistics: null,\r\n stateOptsMapping: LIVE_SURVIVAL_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n LiveMapTeams: {\r\n width: 4,\r\n name: LIVE_MAP_TEAMS_COMPONENT_NAME,\r\n type: LIVE_MAP_TEAMS_COMPONENT_TYPE,\r\n controller: LiveMapTeamsController,\r\n overlay: LiveMapTeamsOverlay,\r\n maxStatistics: null,\r\n stateOptsMapping: LIVE_MAP_TEAMS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n LiveTeamStats: {\r\n width: 4,\r\n name: LIVE_TEAM_STATS_COMPONENT_NAME,\r\n type: LIVE_TEAM_STATS_COMPONENT_TYPE,\r\n controller: LiveTeamStatsController,\r\n overlay: LiveTeamStatsOverlay,\r\n maxStatistics: null,\r\n stateOptsMapping: LIVE_TEAM_STATS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n LivePlayerStats: {\r\n width: 4,\r\n name: LIVE_PLAYER_STATS_COMPONENT_NAME,\r\n type: LIVE_PLAYER_STATS_COMPONENT_TYPE,\r\n controller: LivePlayerStatsController,\r\n overlay: LivePlayerStatsOverlay,\r\n maxStatistics: null,\r\n stateOptsMapping: LIVE_PLAYER_STATS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n LivePlayerKills: {\r\n width: 4,\r\n name: LIVE_PLAYER_KILLS_COMPONENT_NAME,\r\n type: LIVE_PLAYER_KILLS_COMPONENT_TYPE,\r\n controller: LivePlayerKillsController,\r\n overlay: LivePlayerKillsOverlay,\r\n maxStatistics: null,\r\n stateOptsMapping: LIVE_PLAYER_KILLS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n LiveTeamKillsDamage: {\r\n width: 4,\r\n name: LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_NAME,\r\n type: LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_TYPE,\r\n controller: LivePlayerKillsDamageController,\r\n overlay: LivePlayerKillsDamageOverlay,\r\n maxStatistics: null,\r\n stateOptsMapping: LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n LiveTeamHeadToHead: {\r\n width: 4,\r\n name: LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_NAME,\r\n type: LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n controller: LiveTeamHeadToHeadController,\r\n overlay: LiveTeamHeadToHeadOverlay,\r\n maxStatistics: 4,\r\n stateOptsMapping: LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n LivePlayerLeaderboard: {\r\n width: 4,\r\n name: LIVE_PLAYER_LEADERBOARD_COMPONENT_NAME,\r\n type: LIVE_PLAYER_LEADERBOARD_COMPONENT_TYPE,\r\n controller: LivePlayerLeaderboardController,\r\n overlay: LivePlayerLeaderboardOverlay,\r\n maxStatistics: 1,\r\n stateOptsMapping: LIVE_PLAYER_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n CurrentMatch: {\r\n width: 4,\r\n name: CURRENT_MATCH_COMPONENT_NAME,\r\n type: CURRENT_MATCH_COMPONENT_TYPE,\r\n controller: CurrentMatchController,\r\n overlay: CurrentMatchOverlay,\r\n maxStatistics: null,\r\n stateOptsMapping: CURRENT_MATCH_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n TodaysWinners: {\r\n width: 4,\r\n name: TODAYS_WINNERS_COMPONENT_NAME,\r\n type: TODAYS_WINNERS_COMPONENT_TYPE,\r\n controller: TodaysWinnersController,\r\n overlay: TodaysWinnersOverlay,\r\n maxStatistics: null,\r\n stateOptsMapping: TODAYS_WINNERS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n};","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Col, Row } from 'reactstrap';\r\nimport styles from '../../../../../scss/style.scss';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport { CSGO_GAME } from '../../../../../util/Games';\r\nimport TeamSelect from '../../../common/base/controller/inputs/TeamSelect';\r\nimport {\r\n COMPONENT_STATE_OVERLAY_TYPE,\r\n COMPONENT_STATE_PLAYER,\r\n COMPONENT_STATE_TEAM,\r\n OVERLAY_TYPE_CARD,\r\n OVERLAY_TYPE_FULL_SCREEN,\r\n OVERLAY_TYPE_MVP,\r\n} from '../../../constants';\r\nimport PlayerSelect from '../../../common/base/controller/inputs/PlayerSelect';\r\nimport StatisticsSelect from '../../../common/base/controller/inputs/StatisticsSelect';\r\nimport MatchSelect from '../../../common/base/controller/inputs/MatchSelect';\r\nimport { FormGroup, Label } from 'reactstrap';\r\nimport { Select } from '../../../../../components/StyledCoreUI';\r\nimport { requestChangeComponent } from '../../../../../redux/dashboard/actions';\r\n\r\nclass CSGOPlayerStatsController extends Component {\r\n render() {\r\n const { component, requestChangeComponent } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n requestChangeComponent(component, { state: { [COMPONENT_STATE_OVERLAY_TYPE]: type }})}\r\n disabledOptionText='-- select overlay type --'\r\n options={[\r\n {\r\n key: OVERLAY_TYPE_FULL_SCREEN,\r\n value: 'Full Screen',\r\n },\r\n {\r\n key: OVERLAY_TYPE_CARD,\r\n value: 'Card',\r\n },\r\n {\r\n key: OVERLAY_TYPE_MVP,\r\n value: 'MVP',\r\n },\r\n ]}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n requestChangeComponent,\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(CSGOPlayerStatsController);\r\n","export const STATS_NAME_MAP = {\r\n assists: 'assists',\r\n avgArmorLeft: 'avg armor left',\r\n avgBurningTime: 'avg burning',\r\n avgDmg: 'adr',\r\n avgEquipmentValue: 'avg equip. value',\r\n avgFlashedTime: 'avg flashed time',\r\n avgHealthLeft: 'avg health left',\r\n deaths: 'deaths',\r\n hsKills: 'hs kills',\r\n hsPercentage: 'hs%',\r\n kD: 'kd',\r\n kR: 'kr',\r\n kills: 'kills',\r\n maxDmg: 'most damage',\r\n maxEquipmentValue: 'max equip. value',\r\n roundsAceKills: 'aces',\r\n roundsFourKills: 'quads',\r\n roundsThreeKills: 'triples',\r\n totalBurningTime: 'burning time',\r\n totalDmg: 'damage',\r\n totalEquipmentValue: 'equip. value',\r\n totalFlashedTime: 'flashed time',\r\n}","import React, { Component } from 'react';\r\nimport { getCsgoPlayerImage, getCsgoTeamLogo } from '../../../../../../../util/CommonUtil';\r\nimport { STATS_NAME_MAP } from '../constants';\r\n\r\nimport './ElisaPlayerStatsCard.scss';\r\n\r\nclass ElisaPlayerStatsCard extends Component {\r\n render() {\r\n const { show, player, opts } = this.props;\r\n\r\n return (\r\n
\r\n
\r\n e.target.src = getCsgoTeamLogo('default')}\r\n alt=\"team-logo\"\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n opts.stats.slice(1, 3).map(s => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n
\r\n e.target.src = getCsgoPlayerImage('default')}\r\n alt=\"player\"\r\n />\r\n
\r\n

{player.firstName} {player.lastName}

\r\n

{player.name}

\r\n
\r\n
\r\n

{STATS_NAME_MAP[opts.stats[0].key]}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{\r\n opts.stats[0].key === 'hsPercentage' ? \r\n `${Math.round(player[opts.stats[0].key] * 100)} %`\r\n :\r\n Math.round(player[opts.stats[0].key])\r\n }

\r\n
\r\n
\r\n
\r\n

{ STATS_NAME_MAP[s.key] }

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{\r\n s.key === 'hsPercentage' ?\r\n `${Math.round(parseFloat(player[s.key]) * 100)} %`\r\n :\r\n s.key === 'kD' || s.key === 'kR' ?\r\n `${player[s.key]}`\r\n :\r\n Math.round(player[s.key])\r\n }

\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ElisaPlayerStatsCard;","import React, { Component } from 'react';\r\nimport { getCsgoPlayerImage, getCsgoTeamLogo } from '../../../../../../../util/CommonUtil';\r\nimport { STATS_NAME_MAP } from '../constants';\r\n\r\nimport './ElisaPlayerStatsFullScreen.scss';\r\n\r\nclass ElisaPlayerStatsFullScreen extends Component {\r\n render() {\r\n const { show, player, opts } = this.props;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n e.target.src = getCsgoPlayerImage('default')}\r\n alt=\"player\"\r\n />\r\n
\r\n
\r\n
\r\n
\r\n e.target.src = getCsgoTeamLogo('default')}\r\n alt=\"team-logo\"\r\n />\r\n { player.teamName }\r\n
\r\n
\r\n

{ player.firstName } { player.name } { player.lastName }

\r\n
\r\n
\r\n
\r\n {\r\n opts.stats.map((s, i) => {\r\n return (\r\n

{STATS_NAME_MAP[s.key]}

\r\n );\r\n })\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {\r\n opts.stats.map((s, i) => {\r\n return (\r\n
\r\n

{\r\n s.key === 'hsPercentage' ?\r\n `${Math.round(parseFloat(player[s.key]) * 100)} %`\r\n :\r\n s.key === 'kD' || s.key === 'kR' ?\r\n `${player[s.key]}`\r\n :\r\n Math.round(player[s.key])}

\r\n
\r\n );\r\n })\r\n }\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ElisaPlayerStatsFullScreen;","import React, { Component } from 'react';\r\nimport { getCsgoPlayerImage, getCsgoTeamLogo } from '../../../../../../../util/CommonUtil';\r\nimport { STATS_NAME_MAP } from '../constants';\r\n\r\nimport './ElisaPlayerStatsFullScreenSponsor.scss';\r\n\r\nclass ElisaPlayerStatsFullScreenSponsor extends Component {\r\n render() {\r\n const { show, player, opts } = this.props;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n e.target.src = getCsgoPlayerImage('default')}\r\n alt=\"player\"\r\n />\r\n
\r\n
\r\n
\r\n
\r\n COOLBET MVP\r\n
\r\n
\r\n

{ player.firstName } { player.name } { player.lastName }

\r\n
\r\n
\r\n e.target.src = getCsgoTeamLogo('default')}\r\n alt=\"team-logo\"\r\n />\r\n { player.teamName }\r\n
\r\n
\r\n
\r\n {\r\n opts.stats.map((s, i) => {\r\n return (\r\n

{STATS_NAME_MAP[s.key]}

\r\n );\r\n })\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {\r\n opts.stats.map((s, i) => {\r\n return (\r\n
\r\n

{\r\n s.key === 'hsPercentage' ?\r\n `${Math.round(parseFloat(player[s.key]) * 100)} %`\r\n :\r\n s.key === 'kD' || s.key === 'kR' ?\r\n `${player[s.key]}`\r\n :\r\n Math.round(player[s.key])}

\r\n
\r\n );\r\n })\r\n }\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ElisaPlayerStatsFullScreenSponsor;","import React, { Component } from 'react';\r\nimport { OVERLAY_TYPE_CARD, OVERLAY_TYPE_FULL_SCREEN } from '../../../../constants';\r\nimport ElisaPlayerStatsCard from './Card/ElisaPlayerStatsCard';\r\nimport ElisaPlayerStatsFullScreen from './FullScreen/ElisaPlayerStatsFullScreen';\r\nimport ElisaPlayerStatsFullScreenSponsor from './FullScreenSponsor/ElisaPlayerStatsFullScreenSponsor';\r\n\r\nclass ElisaPlayerStats extends Component {\r\n render() {\r\n const { opts } = this.props;\r\n\r\n return (\r\n opts.overlayType && opts.overlayType === OVERLAY_TYPE_CARD ?\r\n \r\n :\r\n opts.overlayType && opts.overlayType === OVERLAY_TYPE_FULL_SCREEN ?\r\n \r\n :\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ElisaPlayerStats;","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport ElisaPlayerStats from './elisa/ElisaPlayerStats';\r\n\r\nconst CSGOPlayerStatsOverlay = (props) => {\r\n const { overlayDesign } = props;\r\n\r\n return (\r\n overlayDesign === 'elisa' ?\r\n \r\n :\r\n
\r\n No Design\r\n
\r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n player: state.overlay.csgo || {},\r\n overlayDesign: (state.overlay.tournament || {}).overlayDesign,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n loaded: state.overlay.loaded,\r\n});\r\n\r\nexport default connect(mapStateToProps)(CSGOPlayerStatsOverlay);\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport { CSGO_GAME } from '../../../../../util/Games';\r\nimport StatisticsSelect from '../../../common/base/controller/inputs/StatisticsSelect';\r\nimport MatchSelect from '../../../common/base/controller/inputs/MatchSelect';\r\nimport { requestChangeComponent } from '../../../../../redux/dashboard/actions';\r\n\r\nclass CSGOPlayerLeaderboardController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n requestChangeComponent,\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(CSGOPlayerLeaderboardController);\r\n","import React, { Component } from 'react';\r\nimport { getCsgoPlayerImage, getCsgoTeamLogo } from '../../../../../../util/CommonUtil';\r\nimport { STATS_NAME_MAP } from '../../../playerStats/overlay/elisa/constants';\r\n\r\nimport './ElisaPlayerLeaderboard.scss';\r\n\r\nclass ElisaPlayerLeaderboard extends Component {\r\n render() {\r\n const { show, leaderboard, opts } = this.props;\r\n const player = leaderboard.slice(0, 5);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n player.map((_, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n {\r\n player.map(p => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n {\r\n player.map(p => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{ STATS_NAME_MAP[opts.stats[0].key] }

\r\n
\r\n

{ i + 1 }.

\r\n
\r\n e.target.src = getCsgoPlayerImage('default')}\r\n alt=\"player\"\r\n />\r\n
\r\n
\r\n

{\r\n opts.stats[0].key === 'hsPercentage' ? \r\n `${Math.round(p[opts.stats[0].key] * 100)} %`\r\n :\r\n opts.stats[0].key === 'kD' || opts.stats[0].key === 'kR' ?\r\n p[opts.stats[0].key]\r\n :\r\n Math.round(p[opts.stats[0].key])\r\n }

\r\n
\r\n
\r\n
\r\n
\r\n e.target.src = getCsgoTeamLogo('default')}\r\n alt=\"team-logo\"\r\n />\r\n { p.name }\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ElisaPlayerLeaderboard;","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport ElisaPlayerLeaderboard from './elisa/ElisaPlayerLeaderboard';\r\n\r\nconst CSGOPlayerLeaderboardOverlay = (props) => {\r\n const { overlayDesign } = props;\r\n\r\n return (\r\n overlayDesign === 'elisa' ?\r\n \r\n :\r\n
\r\n No Design\r\n
\r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n leaderboard: state.overlay.csgo || {},\r\n overlayDesign: (state.overlay.tournament || {}).overlayDesign,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n loaded: state.overlay.loaded,\r\n});\r\n\r\nexport default connect(mapStateToProps)(CSGOPlayerLeaderboardOverlay);\r\n","import {\r\n // Component Names\r\n PLAYER_STATS_COMPONENT_NAME,\r\n PLAYER_LEADERBOARD_COMPONENT_NAME,\r\n // Component Types\r\n PLAYER_STATS_COMPONENT_TYPE,\r\n PLAYER_LEADERBOARD_COMPONENT_TYPE,\r\n // State to opts mappings\r\n PLAYER_STATS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n PLAYER_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n} from '../constants';\r\n\r\n\r\nimport PlayerStatsController from './playerStats/controller/CSGOPlayerStatsController';\r\nimport PlayerStatsOverlay from './playerStats/overlay/CSGOPlayerStatsOverlay';\r\nimport PlayerLeaderboardController from './playerLeaderboard/controller/CSGOPlayerLeaderboardController';\r\nimport PlayerLeaderboardOverlay from './playerLeaderboard/overlay/CSGOPlayerLeaderboardOverlay';\r\n\r\nexport default {\r\n PlayerStats: {\r\n width: 4,\r\n name: PLAYER_STATS_COMPONENT_NAME,\r\n type: PLAYER_STATS_COMPONENT_TYPE,\r\n controller: PlayerStatsController,\r\n overlay: PlayerStatsOverlay,\r\n maxStatistics: 5,\r\n stateOptsMapping: PLAYER_STATS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n PlayerLeaderboard: {\r\n width: 4,\r\n name: PLAYER_LEADERBOARD_COMPONENT_NAME,\r\n type: PLAYER_LEADERBOARD_COMPONENT_TYPE,\r\n controller: PlayerLeaderboardController,\r\n overlay: PlayerLeaderboardOverlay,\r\n maxStatistics: 1,\r\n stateOptsMapping: PLAYER_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n};","import React from 'react'\r\nimport { Col, Row } from 'reactstrap'\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase'\r\nimport StatisticsSelect from '../../../common/base/controller/inputs/StatisticsSelect'\r\nimport MatchSelect from '../../../common/base/controller/inputs/MatchSelect'\r\nimport TeamSelect from '../../../common/base/controller/inputs/TeamSelect'\r\nimport PlayerSelect from '../../../common/base/controller/inputs/PlayerSelect'\r\nimport {\r\n COMPONENT_STATE_PLAYER,\r\n COMPONENT_STATE_TEAM,\r\n} from '../../../constants'\r\nimport { VALORANT_GAME } from '../../../../../util/Games'\r\n\r\nconst ValorantPlayerStatsController = (props) => {\r\n const { component } = props\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ValorantPlayerStatsController\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogoByGame, numberForDisplay } from '../../../../../../util/CommonUtil';\r\n\r\nconst PlayerStatsTable = styled.table`\r\n font-family: teko-regular;\r\n text-transform: uppercase;\r\n\r\n td {\r\n text-align: center; \r\n vertical-align: middle;\r\n width: 300px;\r\n padding: 8px 30px;\r\n }\r\n\r\n transition: opacity 0.5s ease-out;\r\n transition-delay: 0.5s;\r\n\r\n &.cg-show {\r\n opacity: 1;\r\n }\r\n\r\n &.cg-hide {\r\n opacity: 0;\r\n }\r\n`;\r\n\r\nconst TeamLogos = styled.tr`\r\n img {\r\n height: 150px;\r\n }\r\n`;\r\n\r\nconst HeaderRow = styled.tr`\r\n font-family: teko-bold;\r\n background: #5848f1;\r\n font-size: 2.3rem;\r\n`;\r\n\r\nconst StatsRow = styled.tr`\r\n background: rgba(0,0,0,.80);\r\n font-size: 2rem;\r\n`;\r\n\r\nfunction PlayerStats(props) {\r\n const { player, opts, game, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n e.target.src = getTeamLogoByGame(game)}\r\n />\r\n \r\n \r\n \r\n \r\n {player.ign}\r\n \r\n \r\n {\r\n (opts.stats || []).map(s => {\r\n return (\r\n \r\n \r\n {s.value}\r\n \r\n \r\n {numberForDisplay(player[s.key])}\r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n player: state.overlay.valorant || {},\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PlayerStats);","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { getTeamLogoByGame, numberForDisplay } from '../../../../../../util/CommonUtil';\r\n\r\nconst PlayerStatsTable = styled.table`\r\n font-family: sdp;\r\n text-transform: uppercase;\r\n\r\n td {\r\n text-align: center; \r\n vertical-align: middle;\r\n width: 500px;\r\n padding: 8px 30px;\r\n }\r\n\r\n transition: opacity 0.5s ease-out;\r\n transition-delay: 0.5s;\r\n\r\n &.cg-show {\r\n opacity: 1;\r\n }\r\n\r\n &.cg-hide {\r\n opacity: 0;\r\n }\r\n`;\r\n\r\nconst TeamLogos = styled.tr`\r\n img {\r\n height: 150px;\r\n }\r\n`;\r\n\r\nconst HeaderRow = styled.tr`\r\n font-family: sdp;\r\n background: ${styles.sdpPrimary};\r\n font-size: 2.3rem;\r\n`;\r\n\r\nconst StatsRow = styled.tr`\r\n background: rgba(0,0,0,.80);\r\n font-size: 2rem;\r\n`;\r\n\r\nfunction PlayerStats(props) {\r\n const { player, opts, game, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n e.target.src = getTeamLogoByGame(game)}\r\n />\r\n \r\n \r\n \r\n \r\n {player.ign}\r\n \r\n \r\n {\r\n (opts.stats || []).map(s => {\r\n return (\r\n \r\n \r\n {s.value}\r\n \r\n \r\n {numberForDisplay(player[s.key])}\r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n player: state.overlay.valorant || {},\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PlayerStats);","import React from 'react'\r\nimport OSL from './onslaughtLeague/PlayerStats'\r\nimport SDP from './sdp/PlayerStats'\r\n\r\nconst ValorantPlayerStatsOverlay = (props) => {\r\n const { shard } = props;\r\n\r\n return (\r\n shard.includes('sdp') ? \r\n \r\n :\r\n shard.includes('ol') ? \r\n \r\n :\r\n null\r\n );\r\n}\r\n\r\nexport default ValorantPlayerStatsOverlay\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport StatisticsSelect from '../../../common/base/controller/inputs/StatisticsSelect';\r\nimport { VALORANT_GAME } from '../../../../../util/Games';\r\nimport MatchSelect from '../../../common/base/controller/inputs/MatchSelect';\r\n\r\nclass ValorantPlayerLeaderboardController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ValorantPlayerLeaderboardController;\r\n","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport PropTypes from 'prop-types'\r\n\r\nexport const SlideInAnimation = ({ children, show, direction, delay }) => {\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nSlideInAnimation.defaultProps = {\r\n delay: 0,\r\n direction: 'left',\r\n}\r\n\r\nSlideInAnimation.propTypes = {\r\n show: PropTypes.bool.isRequired,\r\n direction: PropTypes.string,\r\n delay: PropTypes.number,\r\n children: PropTypes.object,\r\n}\r\n\r\nconst Animation = styled.span`\r\n transform: ${({ direction, show }) => {\r\n if (!show) {\r\n return null\r\n }\r\n return `translateX(${direction === 'left' ? '-200vw' : '200vw'})`\r\n }};\r\n\r\n animation-name: animation-${({ show, direction }) => {\r\n return show ? `in-${direction}` : `out-${direction}`\r\n }};\r\n animation-delay: ${({ delay }) => delay}s;\r\n animation-duration: 1.25s;\r\n animation-fill-mode: forwards;\r\n animation-timing-function: cubic-bezier(0.96, 0.05, 0.14, 0.92);\r\n\r\n @keyframes animation-in-left {\r\n 0% {\r\n transform: translateX(-200vw);\r\n }\r\n 100% {\r\n transform: translateX(0);\r\n }\r\n }\r\n\r\n @keyframes animation-out-left {\r\n 0% {\r\n transform: translateX(0);\r\n }\r\n 100% {\r\n transform: translateX(-200vw);\r\n }\r\n }\r\n @keyframes animation-in-right {\r\n 0% {\r\n transform: translateX(200vw);\r\n }\r\n 100% {\r\n transform: translateX(0);\r\n }\r\n }\r\n\r\n @keyframes animation-out-right {\r\n 0% {\r\n transform: translateX(0);\r\n }\r\n 100% {\r\n transform: translateX(200vw);\r\n }\r\n }\r\n`\r\n","import React from 'react'\r\nimport './style.scss'\r\n\r\nexport const Image = ({\r\n style,\r\n imageStyle,\r\n src,\r\n size = 'normal',\r\n onError = null,\r\n center = false,\r\n}) => {\r\n switch (size) {\r\n case 'gigantic':\r\n imageStyle = { maxWidth: '18rem', ...imageStyle }\r\n break\r\n case 'giant':\r\n imageStyle = { maxWidth: '15rem', ...imageStyle }\r\n break\r\n case 'largest':\r\n imageStyle = { maxWidth: '13rem', ...imageStyle }\r\n break\r\n case 'large':\r\n imageStyle = { maxWidth: '8rem', ...imageStyle }\r\n break\r\n case 'small':\r\n imageStyle = { maxWidth: '6rem', ...imageStyle }\r\n break\r\n case 'smallest':\r\n imageStyle = { maxWidth: '5rem', ...imageStyle }\r\n break\r\n case 'tiny':\r\n imageStyle = { maxWidth: '3rem', ...imageStyle }\r\n break\r\n default:\r\n break\r\n }\r\n\r\n if (center) {\r\n style = {\r\n ...style,\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n }\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n )\r\n}\r\n","import React from 'react'\r\nimport { connect } from 'react-redux'\r\nimport styled from 'styled-components'\r\nimport { getPlayerImageByGame, getTeamLogoByGame, numberForDisplay } from '../../../../../../util/CommonUtil'\r\nimport { SlideInAnimation } from '../../../../animations/SlideInAnimation'\r\nimport { Image } from '../../../../helpers/Image'\r\n\r\nfunction PlayerLeaderboard({ show, players, game }) {\r\n const showOnlyMVP = true;\r\n\r\n // playerStats.adr = Math.round((parseFloat(num) + Number.EPSILON) * 100) / 100\r\n\r\n const leaderboard = players.slice(0, 1)\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {leaderboard.map((player, i) => (\r\n \r\n \r\n \r\n \r\n \r\n {showOnlyMVP ? (\r\n \r\n (e.target.src = getPlayerImageByGame(game, 'default'))\r\n }\r\n imageStyle={{\r\n width: 'auto',\r\n maxWidth: 'inherit',\r\n height: '450px'\r\n }}\r\n />\r\n ) : (\r\n \r\n (e.target.src = getPlayerImageByGame(game, 'default'))\r\n }\r\n size={'largest'}\r\n />\r\n )}\r\n {showOnlyMVP ? (\r\n \r\n \r\n (e.target.src = getTeamLogoByGame(game, 'default'))\r\n }\r\n size={'smallest'}\r\n />\r\n \r\n ) : (\r\n \r\n \r\n (e.target.src = getTeamLogoByGame(game, 'default'))\r\n }\r\n size={'largest'}\r\n />\r\n \r\n )}\r\n \r\n {showOnlyMVP ? (\r\n MVP\r\n ) : (\r\n {i + 1}.\r\n )}\r\n \r\n \r\n {player.ign}\r\n \r\n Kills\r\n { player.kills }\r\n \r\n \r\n Assists\r\n { player.assists }\r\n \r\n \r\n Damage\r\n { numberForDisplay(player.adr) }\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n players: state.overlay.valorant || [],\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PlayerLeaderboard);\r\n\r\nconst OverflowContainer = styled.div`\r\n overflow: hidden;\r\n background-color: transparent;\r\n`\r\n\r\nconst FontWrapper = styled.div`\r\n font-family: IntegralCD-Regular;\r\n font-size: 1.3rem;\r\n color: black;\r\n font-weight: 400;\r\n text-transform: uppercase;\r\n text-align: center;\r\n`\r\n\r\nconst Container = styled.div`\r\n${({showOnlyMVP}) => showOnlyMVP ? `` : `\r\nheight: 100vh;\r\ndisplay: flex;\r\nflex-direction: column;\r\njustify-content: center;\r\nalign-items: stretch;`}\r\n`\r\n\r\nconst Table = styled.div`\r\n ${({showOnlyMVP}) => showOnlyMVP ? `\r\n position: relative;\r\n display: flex;\r\n justify-content: left;\r\n align-items: center;\r\n ` : `\r\n position: relative;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 100%;`}\r\n`\r\n\r\nconst PlayerContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: stretch;\r\n\r\n ${({showOnlyMVP}) => !showOnlyMVP && `margin: 1.2rem;`}\r\n\r\n min-width: 10rem;\r\n\r\n background: linear-gradient(to bottom, #ffffff, #ed1c24);\r\n`\r\n\r\nconst PlayerTeamImage = styled.div`\r\n position: relative;\r\n flex: 5;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: stretch;\r\n\r\n ${({ showOnlyMVP }) => {\r\n if (showOnlyMVP) {\r\n return `height: 40rem;\r\n min-width: 25rem;`\r\n }\r\n }}\r\n`\r\n\r\nconst PlayerFooter = styled.div`\r\n flex: 2;\r\n padding-left: 2rem;\r\n padding-right: 2rem;\r\n padding-bottom: 1.3rem;\r\n\r\n background: linear-gradient(to bottom, #ed1c24, #a50006);\r\n`\r\n\r\nconst PlayerImage = styled.div`\r\n position: relative;\r\n`\r\n\r\nconst BackgroundImage = styled.div`\r\n background-image: url(\"/assets/img/aces/squares_mvp.png\");\r\n background-position: center;\r\n background-repeat: no-repeat;\r\n`\r\n\r\nconst MVPTeamImage = styled.div`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n transform: translate(7%, 7%);\r\n`\r\n\r\nconst TeamImage = styled.div`\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n\r\n z-index: -10;\r\n`\r\n\r\nconst PlayerScore = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n\r\n width: 100%;\r\n text-align: end;\r\n font-size: 1.3rem;\r\n\r\n line-height: 22px;\r\n`\r\n\r\nconst Key = styled.div`\r\n text-align: start;\r\n font-weight: 100;\r\n`\r\n\r\nconst Value = styled.div`\r\n color: white;\r\n text-align: end;\r\n font-weight: 500;\r\n`\r\n\r\nconst PlayerNumber = styled.div`\r\n color: red;\r\n\r\n position: absolute;\r\n left: 0;\r\n bottom: 0;\r\n z-index: 100;\r\n font-size: 5.8rem;\r\n transform: translate(0.3rem, 18.1%);\r\n`\r\n\r\nconst PlayerName = styled.div`\r\n font-weight: 900;\r\n font-size: 2rem;\r\n border-bottom: 1px solid black;\r\n padding: 0.35rem 0;\r\n padding-bottom: 0.55rem;\r\n margin-bottom: 0.55rem;\r\n\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n`\r\n\r\nconst MVP = styled.div`\r\n font-family: IntegralCD-Demi-Bold-Oblique;\r\n color: red;\r\n font-weight: 700;\r\n font-size: 1.8rem;\r\n font-style: italic;\r\n\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n z-index: 100;\r\n transform: translate(-20%, 20%);\r\n`\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogoByGame, numberForDisplay } from '../../../../../../util/CommonUtil';\r\n\r\nconst PlayerLeaderboardTable = styled.table`\r\n font-family: teko-regular;\r\n text-transform: uppercase;\r\n\r\n td {\r\n text-align: center; \r\n vertical-align: middle;\r\n width: 300px;\r\n max-width: 300px;\r\n padding: 8px;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n overflow: hidden; \r\n }\r\n\r\n transition: opacity 0.5s ease-out;\r\n transition-delay: 0.5s;\r\n\r\n &.cg-show {\r\n opacity: 1;\r\n }\r\n\r\n &.cg-hide {\r\n opacity: 0;\r\n }\r\n`;\r\n\r\nconst TeamLogos = styled.tr`\r\n img {\r\n height: 150px;\r\n }\r\n`;\r\n\r\nconst HeaderRow = styled.tr`\r\n font-family: teko-bold;\r\n font-size: 2.5rem;\r\n`;\r\n\r\nconst PlayerNameRow = styled.tr`\r\n font-family: teko-bold;\r\n background: #5848f1;\r\n font-size: 2.3rem;\r\n`;\r\n\r\nconst StatsRow = styled.tr`\r\n background: rgba(0,0,0,.80);\r\n font-size: 2rem;\r\n`;\r\n\r\nfunction PlayerLeaderboard(props) {\r\n const { players, opts, game, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {opts.stats ? opts.stats[0].value : ''}\r\n \r\n \r\n \r\n {\r\n players.slice(0, 5).map(player => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n e.target.src = getTeamLogoByGame(game)}\r\n />\r\n \r\n \r\n \r\n \r\n {player.ign}\r\n \r\n \r\n \r\n \r\n {numberForDisplay(player[opts.stats[0].key])}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }) \r\n }\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n players: state.overlay.valorant || [],\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PlayerLeaderboard);","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { getTeamLogoByGame, numberForDisplay } from '../../../../../../util/CommonUtil';\r\n\r\nconst PlayerLeaderboardTable = styled.table`\r\n font-family: sdp;\r\n text-transform: uppercase;\r\n\r\n td {\r\n text-align: center; \r\n vertical-align: middle;\r\n width: 350px;\r\n max-width: 350px;\r\n padding: 8px;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n overflow: hidden; \r\n }\r\n\r\n transition: opacity 0.5s ease-out;\r\n transition-delay: 0.5s;\r\n\r\n &.cg-show {\r\n opacity: 1;\r\n }\r\n\r\n &.cg-hide {\r\n opacity: 0;\r\n }\r\n`;\r\n\r\nconst TeamLogos = styled.tr`\r\n img {\r\n height: 150px;\r\n }\r\n`;\r\n\r\nconst HeaderRow = styled.tr`\r\n font-family: sdp;\r\n font-size: 2.5rem;\r\n`;\r\n\r\nconst PlayerNameRow = styled.tr`\r\n font-family: sdp;\r\n background: ${styles.sdpPrimary};\r\n font-size: 2.3rem;\r\n`;\r\n\r\nconst StatsRow = styled.tr`\r\n background: rgba(0,0,0,.80);\r\n font-size: 2rem;\r\n`;\r\n\r\nfunction PlayerLeaderboard(props) {\r\n const { players, opts, game, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {opts.stats ? opts.stats[0].value : ''}\r\n \r\n \r\n \r\n {\r\n players.slice(0, 5).map(player => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n e.target.src = getTeamLogoByGame(game)}\r\n />\r\n \r\n \r\n \r\n \r\n {player.ign}\r\n \r\n \r\n \r\n \r\n {numberForDisplay(player[opts.stats[0].key])}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }) \r\n }\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n players: state.overlay.valorant || [],\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PlayerLeaderboard);","import React from 'react'\r\nimport AEL from './acesEsports/PlayerLeaderboard'\r\nimport OSL from './onslaughtLeague/PlayerLeaderboard'\r\nimport SDP from './sdp/PlayerLeaderboard'\r\n\r\nconst ValorantPlayerLeaderboardOverlay = (props) => {\r\n const { shard } = props;\r\n\r\n return (\r\n shard.includes('ael-conq') || shard.includes('test-att') ? \r\n \r\n :\r\n shard.includes('ol') ? \r\n \r\n :\r\n shard.includes('sdp') ? \r\n \r\n :\r\n null\r\n );\r\n}\r\n\r\nexport default ValorantPlayerLeaderboardOverlay\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport StatisticsSelect from '../../../common/base/controller/inputs/StatisticsSelect';\r\nimport MatchSelect from '../../../common/base/controller/inputs/MatchSelect';\r\nimport TeamSelect from '../../../common/base/controller/inputs/TeamSelect';\r\nimport PlayerSelect from '../../../common/base/controller/inputs/PlayerSelect';\r\nimport {\r\n COMPONENT_STATE_LEFT_PLAYER,\r\n COMPONENT_STATE_LEFT_TEAM,\r\n COMPONENT_STATE_RIGHT_PLAYER,\r\n COMPONENT_STATE_RIGHT_TEAM,\r\n} from '../../../constants';\r\nimport { VALORANT_GAME } from '../../../../../util/Games';\r\n\r\nclass ValorantPlayerHeadToHeadController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ValorantPlayerHeadToHeadController;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogoByGame, numberForDisplay } from '../../../../../../util/CommonUtil';\r\n\r\nconst PlayerHeadToHeadTable = styled.table`\r\n font-family: teko-regular;\r\n text-transform: uppercase;\r\n\r\n td {\r\n text-align: center; \r\n vertical-align: middle;\r\n width: 300px;\r\n padding: 8px;\r\n }\r\n\r\n transition: opacity 0.5s ease-out;\r\n transition-delay: 0.5s;\r\n\r\n &.cg-show {\r\n opacity: 1;\r\n }\r\n\r\n &.cg-hide {\r\n opacity: 0;\r\n }\r\n`;\r\n\r\nconst TeamLogos = styled.tr`\r\n img {\r\n height: 150px;\r\n }\r\n`;\r\n\r\nconst HeaderRow = styled.tr`\r\n font-family: teko-bold;\r\n background: #5848f1;\r\n font-size: 2.3rem;\r\n`;\r\n\r\nconst StatsRow = styled.tr`\r\n background: rgba(0,0,0,.80);\r\n font-size: 2rem;\r\n`;\r\n\r\nfunction PlayerHeadToHead(props) {\r\n const { left, right, opts, game, show } = props;\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n e.target.src = getTeamLogoByGame(game)}\r\n />\r\n \r\n \r\n \r\n e.target.src = getTeamLogoByGame(game)}\r\n />\r\n \r\n \r\n \r\n \r\n {left.ign}\r\n \r\n \r\n VS\r\n \r\n \r\n {right.ign}\r\n \r\n \r\n {\r\n (opts.stats || []).map(s => {\r\n return (\r\n \r\n \r\n {numberForDisplay(left[s.key])}\r\n \r\n \r\n {s.value}\r\n \r\n \r\n {numberForDisplay(right[s.key])}\r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n left: state.overlay.left ? state.overlay.left.valorant : {},\r\n right: state.overlay.right ? state.overlay.right.valorant : {},\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PlayerHeadToHead);","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { getTeamLogoByGame, numberForDisplay } from '../../../../../../util/CommonUtil';\r\n\r\nconst PlayerHeadToHeadTable = styled.table`\r\n font-family: sdp;\r\n text-transform: uppercase;\r\n\r\n td {\r\n text-align: center; \r\n vertical-align: middle;\r\n width: 500px;\r\n padding: 8px;\r\n }\r\n\r\n transition: opacity 0.5s ease-out;\r\n transition-delay: 0.5s;\r\n\r\n &.cg-show {\r\n opacity: 1;\r\n }\r\n\r\n &.cg-hide {\r\n opacity: 0;\r\n }\r\n`;\r\n\r\nconst TeamLogos = styled.tr`\r\n img {\r\n height: 150px;\r\n }\r\n`;\r\n\r\nconst HeaderRow = styled.tr`\r\n font-family: sdp;\r\n background: ${styles.sdpPrimary};\r\n font-size: 2.3rem;\r\n`;\r\n\r\nconst StatsRow = styled.tr`\r\n background: rgba(0,0,0,.80);\r\n font-size: 2rem;\r\n`;\r\n\r\nfunction PlayerHeadToHead(props) {\r\n const { left, right, opts, game, show } = props;\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n e.target.src = getTeamLogoByGame(game)}\r\n />\r\n \r\n \r\n \r\n e.target.src = getTeamLogoByGame(game)}\r\n />\r\n \r\n \r\n \r\n \r\n {left.ign}\r\n \r\n \r\n VS\r\n \r\n \r\n {right.ign}\r\n \r\n \r\n {\r\n (opts.stats || []).map(s => {\r\n return (\r\n \r\n \r\n {numberForDisplay(left[s.key])}\r\n \r\n \r\n {s.value}\r\n \r\n \r\n {numberForDisplay(right[s.key])}\r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n left: state.overlay.left ? state.overlay.left.valorant : {},\r\n right: state.overlay.right ? state.overlay.right.valorant : {},\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n});\r\n\r\nexport default connect(mapStateToProps)(PlayerHeadToHead);","import React from 'react';\r\nimport OSL from './onslaughtLeague/PlayerHeadToHead';\r\nimport SDP from './sdp/PlayerHeadToHead';\r\n\r\nconst ValorantPlayerHeadToHeadOverlay = (props) => {\r\n const { shard } = props;\r\n\r\n return (\r\n shard.includes('sdp') ? \r\n \r\n :\r\n shard.includes('ol') ? \r\n \r\n :\r\n null\r\n );\r\n}\r\n\r\nexport default ValorantPlayerHeadToHeadOverlay;\r\n","import React from 'react'\r\nimport { Col, Row } from 'reactstrap'\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase'\r\nimport StatisticsSelect from '../../../common/base/controller/inputs/StatisticsSelect'\r\nimport MatchSelect from '../../../common/base/controller/inputs/MatchSelect'\r\nimport TeamSelect from '../../../common/base/controller/inputs/TeamSelect'\r\nimport {\r\n COMPONENT_STATE_TEAM,\r\n} from '../../../constants'\r\nimport { VALORANT_GAME } from '../../../../../util/Games'\r\n\r\nconst ValorantTeamStatsController = (props) => {\r\n const { component } = props\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ValorantTeamStatsController\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogoByGame, numberForDisplay } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamStatsTable = styled.table`\r\n font-family: teko-regular;\r\n text-transform: uppercase;\r\n\r\n td {\r\n text-align: center; \r\n vertical-align: middle;\r\n width: 300px;\r\n padding: 8px 30px;\r\n }\r\n\r\n transition: opacity 0.5s ease-out;\r\n transition-delay: 0.5s;\r\n\r\n &.cg-show {\r\n opacity: 1;\r\n }\r\n\r\n &.cg-hide {\r\n opacity: 0;\r\n }\r\n`;\r\n\r\nconst TeamLogos = styled.tr`\r\n img {\r\n height: 150px;\r\n }\r\n`;\r\n\r\nconst HeaderRow = styled.tr`\r\n font-family: teko-bold;\r\n background: #5848f1;\r\n font-size: 2.3rem;\r\n`;\r\n\r\nconst StatsRow = styled.tr`\r\n background: rgba(0,0,0,.80);\r\n font-size: 2rem;\r\n`;\r\n\r\nfunction TeamStats(props) {\r\n const { team, opts, game, show } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n e.target.src = getTeamLogoByGame(game)}\r\n />\r\n \r\n \r\n \r\n \r\n {team.teamName}\r\n \r\n \r\n {\r\n (opts.stats || []).map(s => {\r\n return (\r\n \r\n \r\n {s.value}\r\n \r\n \r\n {numberForDisplay(team[s.key])}\r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n team: state.overlay.valorant || {},\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n});\r\n\r\nexport default connect(mapStateToProps)(TeamStats);","import React from 'react';\r\nimport OnslaughtLeaguePlayerStats from './onslaughtLeague/TeamStats';\r\n\r\nconst ValorantTeamStatsOverlay = (props) => {\r\n const { shard } = props;\r\n\r\n return (\r\n shard.includes('fs') ? \r\n \r\n :\r\n shard.includes('ol') ? \r\n \r\n :\r\n null\r\n );\r\n}\r\n\r\nexport default ValorantTeamStatsOverlay;\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport StatisticsSelect from '../../../common/base/controller/inputs/StatisticsSelect';\r\nimport MatchSelect from '../../../common/base/controller/inputs/MatchSelect';\r\nimport TeamSelect from '../../../common/base/controller/inputs/TeamSelect';\r\nimport { COMPONENT_STATE_LEFT_TEAM, COMPONENT_STATE_RIGHT_TEAM } from '../../../constants';\r\nimport { VALORANT_GAME } from '../../../../../util/Games';\r\n\r\nclass ValorantTeamHeadToHeadController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ValorantTeamHeadToHeadController;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogoByGame, numberForDisplay } from '../../../../../../util/CommonUtil';\r\n\r\nconst TeamHeadToHeadTable = styled.table`\r\n font-family: teko-regular;\r\n text-transform: uppercase;\r\n\r\n td {\r\n text-align: center; \r\n vertical-align: middle;\r\n width: 300px;\r\n padding: 8px;\r\n }\r\n\r\n transition: opacity 0.5s ease-out;\r\n transition-delay: 0.5s;\r\n\r\n &.cg-show {\r\n opacity: 1;\r\n }\r\n\r\n &.cg-hide {\r\n opacity: 0;\r\n }\r\n`;\r\n\r\nconst TeamLogos = styled.tr`\r\n img {\r\n height: 150px;\r\n }\r\n`;\r\n\r\nconst HeaderRow = styled.tr`\r\n font-family: teko-bold;\r\n background: #5848f1;\r\n font-size: 2.3rem;\r\n`;\r\n\r\nconst StatsRow = styled.tr`\r\n background: rgba(0,0,0,.80);\r\n font-size: 2rem;\r\n`;\r\n\r\nfunction TeamHeadToHead(props) {\r\n const { left, right, opts, game, show } = props;\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n e.target.src = getTeamLogoByGame(game)}\r\n />\r\n \r\n \r\n \r\n e.target.src = getTeamLogoByGame(game)}\r\n />\r\n \r\n \r\n \r\n \r\n {left.teamName}\r\n \r\n \r\n VS\r\n \r\n \r\n {right.teamName}\r\n \r\n \r\n {\r\n (opts.stats || []).map(s => {\r\n return (\r\n \r\n \r\n {numberForDisplay(left[s.key])}\r\n \r\n \r\n {s.value}\r\n \r\n \r\n {numberForDisplay(right[s.key])}\r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n left: state.overlay.left ? state.overlay.left.valorant : {},\r\n right: state.overlay.right ? state.overlay.right.valorant : {},\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n});\r\n\r\nexport default connect(mapStateToProps)(TeamHeadToHead);","import React from 'react';\r\nimport OnslaughtTeamHeadToHead from './OnslaughtLeague/TeamHeadToHead';\r\n\r\nconst ValorantTeamHeadToHeadOverlay = (props) => {\r\n const { shard } = props;\r\n\r\n return (\r\n shard.includes('fs') ? \r\n \r\n :\r\n shard.includes('ol') ? \r\n \r\n :\r\n null\r\n );\r\n}\r\n\r\nexport default ValorantTeamHeadToHeadOverlay\r\n","import React, { Component } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport MatchSelect from '../../../common/base/controller/inputs/MatchSelect';\r\nimport { VALORANT_GAME } from '../../../../../util/Games';\r\n\r\nclass ValorantTeamLeaderboardController extends Component {\r\n render() {\r\n const { component } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ValorantTeamLeaderboardController;\r\n","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport PropTypes from 'prop-types'\r\n\r\nexport const ShowInAnimation = ({ children, show, direction, delay }) => {\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nShowInAnimation.defaultProps = {\r\n delay: 0,\r\n direction: 'left',\r\n}\r\n\r\nShowInAnimation.propTypes = {\r\n show: PropTypes.bool.isRequired,\r\n direction: PropTypes.string,\r\n delay: PropTypes.number,\r\n children: PropTypes.object,\r\n}\r\n\r\nconst Animation = styled.div`\r\n ${({ show }) => {\r\n if (!show) {\r\n return null\r\n }\r\n return `opacity: 0`\r\n }};\r\n\r\n animation-name: animation-${({ show, direction }) => {\r\n return show ? `in` : `out`\r\n }};\r\n animation-delay: ${({ delay }) => delay}s;\r\n animation-duration: 1.25s;\r\n animation-fill-mode: forwards;\r\n\r\n @keyframes animation-in {\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n @keyframes animation-out {\r\n 0% {\r\n opacity: 1;\r\n }\r\n 100% {\r\n opacity: 0;\r\n }\r\n }\r\n`\r\n","export const getBackgroundColors = (i) => {\r\n switch (i) {\r\n case 0:\r\n return 'white'\r\n case 1:\r\n return '#ececec'\r\n case 2:\r\n return '#cccccc'\r\n default:\r\n return '#bbbbbb'\r\n }\r\n}\r\n","import React from 'react'\r\nimport { connect } from 'react-redux'\r\nimport styled from 'styled-components'\r\nimport { getCountryFlag, getTeamLogoByGame } from '../../../../../../util/CommonUtil'\r\nimport { ShowInAnimation } from '../../../../animations/ShowInAnimation'\r\nimport { SlideInAnimation } from '../../../../animations/SlideInAnimation'\r\nimport { getBackgroundColors } from '../../../../helpers'\r\nimport { Image } from '../../../../helpers/Image'\r\nimport { VALORANT_GAME } from '../../../../../../util/Games'\r\n\r\nfunction TeamLeaderboard({ show, teamLeaderboard }) {\r\n // Set up the table here\r\n const STANDARD_TEAM_SIZE = 16\r\n const HOW_MANY_PAGES = 1 // If pagination is needed: Math.ceil(teamLeaderboard.length / 8)\r\n const RANK_COL_LEN = 3\r\n const FLAG_COL_LEN = 6\r\n const LOGO_COL_LEN = 6\r\n const TEAM_COL_LEN = 25\r\n const PLAYED_COL_LEN = 5\r\n const WINS_COL_LEN = 5\r\n const DRAWS_COL_LEN = 5\r\n const LOSE_COL_LEN = 5\r\n const KD_COL_LEN = 5\r\n const POINTS_COL_LEN = 5\r\n const GAP_BETWEEN_PAGES = 1\r\n\r\n const numberOfExtraTeams =\r\n teamLeaderboard.length - STANDARD_TEAM_SIZE > 0 &&\r\n teamLeaderboard.length - STANDARD_TEAM_SIZE\r\n\r\n const howManyToDisplayPerPage = Math.ceil(\r\n teamLeaderboard.length / HOW_MANY_PAGES,\r\n )\r\n\r\n const shouldEvenPaginate =\r\n teamLeaderboard.length - howManyToDisplayPerPage > 0\r\n\r\n const mainContainerWidth =\r\n (RANK_COL_LEN +\r\n FLAG_COL_LEN +\r\n LOGO_COL_LEN +\r\n TEAM_COL_LEN +\r\n PLAYED_COL_LEN +\r\n WINS_COL_LEN +\r\n DRAWS_COL_LEN +\r\n LOSE_COL_LEN +\r\n KD_COL_LEN +\r\n POINTS_COL_LEN) *\r\n HOW_MANY_PAGES\r\n const tableHeight = howManyToDisplayPerPage * 4 + numberOfExtraTeams * 4\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {[...Array(HOW_MANY_PAGES)].map((e, i) => (\r\n \r\n \r\n  \r\n \r\n \r\n  \r\n \r\n \r\n  \r\n \r\n \r\n  \r\n \r\n \r\n P\r\n \r\n \r\n W\r\n \r\n \r\n D\r\n \r\n \r\n L\r\n \r\n \r\n RD\r\n \r\n \r\n Pts\r\n \r\n \r\n ))}\r\n \r\n \r\n {teamLeaderboard.map((team, i) => {\r\n const page = Math.ceil((i + 1) / howManyToDisplayPerPage)\r\n const half = Math.ceil(teamLeaderboard.length / 2) === i + 1\r\n\r\n return (\r\n \r\n \r\n #{i + 1}\r\n \r\n \r\n (e.target.src = getCountryFlag('si'))\r\n }\r\n />\r\n \r\n \r\n \r\n (e.target.src = getTeamLogoByGame(VALORANT_GAME, 'default'))\r\n }\r\n />\r\n \r\n \r\n {team.teamName}\r\n \r\n {team.played}\r\n {team.wins}\r\n \r\n {team.draws}\r\n \r\n \r\n {team.losses}\r\n \r\n \r\n {team.rd || 0}\r\n \r\n \r\n {team.points}\r\n \r\n \r\n \r\n )\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n teamLeaderboard: state.overlay.valorant || [],\r\n show: state.overlay.show,\r\n});\r\n\r\nexport default connect(mapStateToProps)(TeamLeaderboard);\r\n\r\n\r\nconst OverflowContainer = styled.div`\r\n overflow: hidden;\r\n background-color: transparent;\r\n`\r\n\r\nconst FontWrapper = styled.div`\r\n font-size: 1.7rem;\r\n color: black;\r\n font-weight: 500;\r\n text-align: center;\r\n`\r\n\r\nconst Container = styled.div`\r\n width: ${({ width }) => width}rem;\r\n`\r\n\r\nconst TournamentLogo = styled.div`\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n`\r\n\r\nconst LegendRow = styled.div`\r\n position: relative;\r\n width: 100%;\r\n background-color: #ed1c24;\r\n height: 6rem;\r\n\r\n display: flex;\r\n justify-content: space-around;\r\n align-items: flex-end;\r\n padding-bottom: 0.2rem;\r\n\r\n background-image: url(\"/assets/img/aces/squares.png\");\r\n background-position: left;\r\n background-repeat: no-repeat;\r\n`\r\n\r\nconst Legend = styled.div`\r\n display: flex;\r\n margin${({ page, gap, shouldEvenPaginate }) => {\r\n if (shouldEvenPaginate) {\r\n return page % 2 === 0 ? `-right:${gap}rem` : `-left:${gap}rem`\r\n }\r\n }};\r\n font-weight: 900;\r\n font-size: 1.6rem;\r\n`\r\n\r\nconst Cell = styled.div`\r\n width: ${({ width }) => width}rem;\r\n ${({ color }) => color && `color: ${color};`}\r\n\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n\r\n text-transform: ${({ uppercase }) => uppercase && 'uppercase'};\r\n\r\n border-left: ${({ borderLeft }) => borderLeft && '1px solid red'};\r\n\r\n display: flex;\r\n justify-content: ${({ textToLeft }) => (textToLeft ? 'start' : 'center')};\r\n align-items: ${({ textToBottom }) => (textToBottom ? 'flex-end' : 'center')};\r\n`\r\n\r\nconst Table = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n flex-wrap: wrap;\r\n align-items: stretch;\r\n\r\n width: 100%;\r\n height: ${({ height }) => height}rem;\r\n`\r\n\r\nconst Team = styled.div`\r\n height: 4rem;\r\n display: flex;\r\n justify-content: center;\r\n align-items: stretch;\r\n\r\n margin${({ page, gap, shouldEvenPaginate }) => {\r\n if (shouldEvenPaginate) {\r\n return page % 2 === 0 ? `-left:${gap}rem` : `-right:${gap}rem`\r\n }\r\n }};\r\n\r\n background-color: ${({ backgroundColor }) => backgroundColor};\r\n border-bottom: ${({ half }) => half && '2px solid #ed1c24'};\r\n`\r\n","import React from 'react'\r\nimport { connect } from 'react-redux'\r\nimport styled from 'styled-components'\r\nimport { ShowInAnimation } from '../../../../animations/ShowInAnimation'\r\n\r\nconst TEAM_PADDING = 3\r\n\r\nfunction TeamLeaderboard(props) {\r\n const { show, teamLeaderboard } = props;\r\n\r\n if (!teamLeaderboard || !teamLeaderboard.length) return null;\r\n\r\n // Set up the table here\r\n const STANDARD_TEAM_SIZE = 4\r\n const HOW_MANY_PAGES = 1 // If pagination is needed: Math.ceil(teamLeaderboard.length / 8)\r\n const TEAM_COL_LEN = 25\r\n const WINS_COL_LEN = 3\r\n const DASH_COL = 1\r\n const LOSE_COL_LEN = 3\r\n const GAP_BETWEEN_PAGES = 1\r\n\r\n const numberOfExtraTeams =\r\n teamLeaderboard.length - STANDARD_TEAM_SIZE > 0 &&\r\n teamLeaderboard.length - STANDARD_TEAM_SIZE\r\n\r\n const howManyToDisplayPerPage = Math.ceil(\r\n teamLeaderboard.length / HOW_MANY_PAGES,\r\n )\r\n\r\n const shouldEvenPaginate =\r\n teamLeaderboard.length - howManyToDisplayPerPage > 0\r\n\r\n const mainContainerWidth =\r\n (TEAM_COL_LEN + WINS_COL_LEN + LOSE_COL_LEN + DASH_COL + TEAM_PADDING * 2) *\r\n HOW_MANY_PAGES\r\n\r\n const tableHeight = howManyToDisplayPerPage * 6 + numberOfExtraTeams * 6\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Group A\r\n \r\n {teamLeaderboard.map((team, i) => {\r\n const page = Math.ceil((i + 1) / howManyToDisplayPerPage)\r\n const half = Math.ceil(teamLeaderboard.length / 2) === i + 1\r\n return (\r\n \r\n \r\n {team.teamName}\r\n \r\n {team.wins}\r\n -\r\n \r\n {team.losses}\r\n \r\n \r\n )\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n teamLeaderboard: state.overlay.valorant,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n});\r\n\r\nexport default connect(mapStateToProps)(TeamLeaderboard);\r\n\r\nconst OverflowContainer = styled.div`\r\n overflow: hidden;\r\n background-color: transparent;\r\n`\r\n\r\nconst FontWrapper = styled.div`\r\n font-size: 1.7rem;\r\n color: white;\r\n font-weight: 500;\r\n text-align: center;\r\n text-transform: uppercase;\r\n`\r\n\r\nconst Container = styled.div`\r\n width: ${({ width }) => width}rem;\r\n`\r\n\r\nconst Cell = styled.div`\r\n width: ${({ width }) => width}rem;\r\n ${({ color }) => color && `color: ${color};`}\r\n\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n\r\n font-family: teko-regular;\r\n\r\n text-transform: ${({ uppercase }) => uppercase && 'uppercase'};\r\n\r\n display: flex;\r\n justify-content: ${({ textToLeft }) => (textToLeft ? 'start' : 'center')};\r\n align-items: ${({ textToBottom }) => (textToBottom ? 'flex-end' : 'center')};\r\n`\r\n\r\nconst Table = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n flex-wrap: wrap;\r\n align-items: stretch;\r\n\r\n width: 100%;\r\n height: ${({ height }) => height}rem;\r\n`\r\n\r\nconst Team = styled.div`\r\n height: 6rem;\r\n display: flex;\r\n justify-content: center;\r\n align-items: stretch;\r\n\r\n font-family: teko-regular;\r\n font-size: 2.5rem;\r\n letter-spacing: 2px;\r\n\r\n padding: 0 ${TEAM_PADDING};\r\n\r\n margin${({ page, gap, shouldEvenPaginate }) => {\r\n if (shouldEvenPaginate) {\r\n return page % 2 === 0 ? `-left:${gap}rem` : `-right:${gap}rem`\r\n }\r\n }};\r\n\r\n background-color: ${({ backgroundColor }) => backgroundColor};\r\n`\r\n\r\nconst Title = styled.div`\r\n width: 100%;\r\n font-size: 4rem;\r\n\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n background-color: #1a3ffb;\r\n padding: 1 ${TEAM_PADDING};\r\n\r\n font-family: teko-semibold;\r\n letter-spacing: 1px;\r\n`\r\n","import React from 'react'\r\nimport { connect } from 'react-redux'\r\nimport styled from 'styled-components'\r\nimport styles from '../../../../../../scss/style.scss'\r\n\r\nconst TEAM_PADDING = 3\r\n\r\nconst OverflowContainer = styled.div`\r\n overflow: hidden;\r\n background-color: transparent;\r\n\r\n transition: opacity 0.5s ease-out;\r\n transition-delay: 0.5s;\r\n\r\n &.cg-show {\r\n opacity: 1;\r\n }\r\n\r\n &.cg-hide {\r\n opacity: 0;\r\n }\r\n`\r\n\r\nconst FontWrapper = styled.div`\r\n font-size: 1.7rem;\r\n color: white;\r\n font-weight: 500;\r\n text-align: center;\r\n text-transform: uppercase;\r\n`\r\n\r\nconst Container = styled.div`\r\n width: ${({ width }) => width}rem;\r\n`\r\n\r\nconst Cell = styled.div`\r\n width: ${({ width }) => width}rem;\r\n ${({ color }) => color && `color: ${color};`}\r\n\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n\r\n font-family: sdp;\r\n\r\n text-transform: ${({ uppercase }) => uppercase && 'uppercase'};\r\n\r\n display: flex;\r\n justify-content: ${({ textToLeft }) => (textToLeft ? 'start' : 'center')};\r\n align-items: ${({ textToBottom }) => (textToBottom ? 'flex-end' : 'center')};\r\n`\r\n\r\nconst Table = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n flex-wrap: wrap;\r\n align-items: stretch;\r\n\r\n width: 100%;\r\n height: ${({ height }) => height}rem;\r\n`\r\n\r\nconst Team = styled.div`\r\n height: 6rem;\r\n display: flex;\r\n justify-content: center;\r\n align-items: stretch;\r\n\r\n font-family: sdp;\r\n font-size: 2.5rem;\r\n letter-spacing: 2px;\r\n\r\n padding: 0 ${TEAM_PADDING};\r\n\r\n margin${({ page, gap, shouldEvenPaginate }) => {\r\n if (shouldEvenPaginate) {\r\n return page % 2 === 0 ? `-left:${gap}rem` : `-right:${gap}rem`\r\n }\r\n }};\r\n\r\n background-color: ${({ backgroundColor }) => backgroundColor};\r\n`\r\n\r\nconst Title = styled.div`\r\n width: 100%;\r\n font-size: 4rem;\r\n\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n background-color: ${styles.sdpPrimary};\r\n padding: 1 ${TEAM_PADDING};\r\n\r\n font-family: sdp;\r\n`\r\n\r\nfunction TeamLeaderboard(props) {\r\n const { show, teamLeaderboard } = props;\r\n\r\n if (!teamLeaderboard || !teamLeaderboard.length) return null;\r\n\r\n // Set up the table here\r\n const STANDARD_TEAM_SIZE = 4\r\n const HOW_MANY_PAGES = 1 // If pagination is needed: Math.ceil(teamLeaderboard.length / 8)\r\n const TEAM_COL_LEN = 40\r\n const WINS_COL_LEN = 3\r\n const DASH_COL = 1\r\n const LOSE_COL_LEN = 3\r\n const GAP_BETWEEN_PAGES = 1\r\n\r\n const numberOfExtraTeams =\r\n teamLeaderboard.length - STANDARD_TEAM_SIZE > 0 &&\r\n teamLeaderboard.length - STANDARD_TEAM_SIZE\r\n\r\n const howManyToDisplayPerPage = Math.ceil(\r\n teamLeaderboard.length / HOW_MANY_PAGES,\r\n )\r\n\r\n const shouldEvenPaginate =\r\n teamLeaderboard.length - howManyToDisplayPerPage > 0\r\n\r\n const mainContainerWidth =\r\n (TEAM_COL_LEN + WINS_COL_LEN + LOSE_COL_LEN + DASH_COL + TEAM_PADDING * 2) *\r\n HOW_MANY_PAGES\r\n\r\n const tableHeight = howManyToDisplayPerPage * 6 + numberOfExtraTeams * 6\r\n\r\n return (\r\n \r\n \r\n \r\n LESTVICA\r\n \r\n {teamLeaderboard.map((team, i) => {\r\n const page = Math.ceil((i + 1) / howManyToDisplayPerPage)\r\n const half = Math.ceil(teamLeaderboard.length / 2) === i + 1\r\n return (\r\n \r\n \r\n {team.teamName}\r\n \r\n {team.wins}\r\n -\r\n \r\n {team.losses}\r\n \r\n \r\n )\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n teamLeaderboard: state.overlay.valorant,\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n});\r\n\r\nexport default connect(mapStateToProps)(TeamLeaderboard);","import React from 'react'\r\nimport AEL from './acesEsports/TeamLeaderboard'\r\nimport OSL from './OnslaughtLeague/TeamLeaderboard'\r\nimport SDP from './sdp/TeamLeaderboard'\r\n\r\nconst ValorantTeamLeaderboardOverlay = (props) => {\r\n const { shard } = props\r\n\r\n return (\r\n shard.includes('ael-conq') || shard.includes('test-att') ? \r\n \r\n :\r\n shard.includes('ol') ? \r\n \r\n :\r\n shard.includes('sdp') ? \r\n \r\n :\r\n null\r\n );\r\n}\r\n\r\nexport default ValorantTeamLeaderboardOverlay\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Col, Row } from 'reactstrap';\r\nimport ControllerBase from '../../../common/base/controller/ControllerBase';\r\nimport StatisticsSelect from '../../../common/base/controller/inputs/StatisticsSelect';\r\nimport MatchSelect from '../../../common/base/controller/inputs/MatchSelect';\r\nimport TeamSelect from '../../../common/base/controller/inputs/TeamSelect';\r\nimport { COMPONENT_STATE_LEFT_TEAM, COMPONENT_STATE_RIGHT_TEAM } from '../../../constants';\r\nimport { VALORANT_GAME } from '../../../../../util/Games';\r\n\r\nconst ValorantScoreboardController = (props) => {\r\n const { component } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n});\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ValorantScoreboardController);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { getTeamLogoByGame, getValorantAgentIcon } from '../../../../../../util/CommonUtil';\r\n\r\nconst ScoreboardTable = styled.table`\r\n font-family: teko-regular;\r\n text-transform: uppercase;\r\n\r\n td {\r\n text-align: center; \r\n vertical-align: middle;\r\n width: 300px;\r\n padding: 8px;\r\n }\r\n\r\n transition: opacity 0.5s ease-out;\r\n transition-delay: 0.5s;\r\n\r\n &.cg-show {\r\n opacity: 1;\r\n }\r\n\r\n &.cg-hide {\r\n opacity: 0;\r\n }\r\n`;\r\n\r\nconst TeamLogos = styled.tr`\r\n img {\r\n height: 150px;\r\n }\r\n\r\n p {\r\n font-family: teko-bold;\r\n font-size: 150px;\r\n line-height: 150px;\r\n margin: 0;\r\n padding-top: 30px;\r\n }\r\n`;\r\n\r\nconst HeaderRow = styled.tr`\r\n .header-td {\r\n font-family: teko-bold;\r\n background: #5848f1;\r\n font-size: 2.3rem;\r\n }\r\n`;\r\n\r\nconst StatsColumn = styled.td`\r\n background: rgba(0,0,0,.80);\r\n font-size: 2rem;\r\n white-space: nowrap;\r\n\r\n .agent-image {\r\n height: 50px;\r\n }\r\n`;\r\n\r\nfunction Scoreboard(props) {\r\n const { left, right, opts, game, show } = props;\r\n\r\n opts.stats = (opts.stats || []);\r\n const numOfColumns = opts.stats.length + 1;\r\n\r\n const TeamHeader = () => {\r\n return (\r\n <>\r\n \r\n {\r\n (opts.stats || []).map(s => {\r\n return (\r\n { s.value }\r\n );\r\n })\r\n }\r\n \r\n );\r\n }\r\n\r\n const PlayerStats = ({player}) => {\r\n return (\r\n <>\r\n \r\n \r\n { player.ign }\r\n \r\n {\r\n (opts.stats || []).map(s => {\r\n return (\r\n { player[s.key] }\r\n );\r\n })\r\n }\r\n \r\n )\r\n }\r\n\r\n const StatsRow = ({index}) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n e.target.src = getTeamLogoByGame(game)}\r\n />\r\n \r\n \r\n \r\n

{(left.score || {}).score}

\r\n \r\n \r\n \r\n

{(right.score || {}).score}

\r\n \r\n \r\n \r\n e.target.src = getTeamLogoByGame(game)}\r\n />\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n {\r\n left.players ?\r\n Array.from(Array(left.players.length).keys()).map(i => )\r\n :\r\n null\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n left: state.overlay.left ? state.overlay.left.valorant : {},\r\n right: state.overlay.right ? state.overlay.right.valorant : {},\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n});\r\n\r\nexport default connect(mapStateToProps)(Scoreboard);","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { getTeamLogoByGame, getValorantAgentIcon } from '../../../../../../util/CommonUtil';\r\n\r\nconst STATISTICS = {\r\n kd: 'K/D',\r\n deaths: 'D',\r\n firstBloods: 'FB',\r\n firstDeaths: 'FD',\r\n econRating: 'ECON',\r\n hsProcentage: 'HS%',\r\n assists: 'A',\r\n kills: 'K',\r\n esr: 'ESR',\r\n adr: 'ADR',\r\n plants: 'Plants',\r\n defuses: 'Defuses',\r\n aces: 'ACES',\r\n multikills: 'Multi Kills',\r\n clutches: 'Clutches',\r\n}\r\n\r\nconst ScoreboardTable = styled.table`\r\n font-family: sdp;\r\n text-transform: uppercase;\r\n\r\n td {\r\n text-align: center; \r\n vertical-align: middle;\r\n width: 300px;\r\n padding: 8px;\r\n }\r\n\r\n transition: opacity 0.5s ease-out;\r\n transition-delay: 0.5s;\r\n\r\n &.cg-show {\r\n opacity: 1;\r\n }\r\n\r\n &.cg-hide {\r\n opacity: 0;\r\n }\r\n\r\n .player-name-td {\r\n width: 20%;\r\n }\r\n\r\n .stat-td {\r\n width: 7%;\r\n }\r\n`;\r\n\r\nconst TeamLogos = styled.tr`\r\n img {\r\n height: 150px;\r\n }\r\n\r\n p {\r\n font-size: 150px;\r\n line-height: 150px;\r\n margin: 0;\r\n padding-top: 30px;\r\n }\r\n`;\r\n\r\nconst HeaderRow = styled.tr`\r\n .header-td {\r\n background: ${styles.sdpPrimary};\r\n font-size: 2.3rem;\r\n }\r\n`;\r\n\r\nconst StatsColumn = styled.td`\r\n background: rgba(0,0,0,.80);\r\n font-size: 2rem;\r\n white-space: nowrap;\r\n\r\n .agent-image {\r\n height: 50px;\r\n }\r\n`;\r\n\r\nfunction Scoreboard(props) {\r\n const { left, right, opts, game, show } = props;\r\n\r\n opts.stats = (opts.stats || []);\r\n const numOfColumns = opts.stats.length + 1;\r\n\r\n const TeamHeader = () => {\r\n return (\r\n <>\r\n \r\n {\r\n (opts.stats || []).map(s => {\r\n return (\r\n { STATISTICS[s.key] }\r\n );\r\n })\r\n }\r\n \r\n );\r\n }\r\n\r\n const PlayerStats = ({player}) => {\r\n return (\r\n <>\r\n \r\n \r\n { player.ign }\r\n \r\n {\r\n (opts.stats || []).map(s => {\r\n return (\r\n { player[s.key] }\r\n );\r\n })\r\n }\r\n \r\n )\r\n }\r\n\r\n const StatsRow = ({index}) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n e.target.src = getTeamLogoByGame(game)}\r\n />\r\n \r\n \r\n \r\n

{(left.score || {}).score}

\r\n \r\n \r\n \r\n

{(right.score || {}).score}

\r\n \r\n \r\n \r\n e.target.src = getTeamLogoByGame(game)}\r\n />\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n {\r\n left.players ?\r\n Array.from(Array(left.players.length).keys()).map(i => )\r\n :\r\n null\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n left: state.overlay.left ? state.overlay.left.valorant : {},\r\n right: state.overlay.right ? state.overlay.right.valorant : {},\r\n opts: state.overlay.opts,\r\n show: state.overlay.show,\r\n});\r\n\r\nexport default connect(mapStateToProps)(Scoreboard);","import React from 'react';\r\nimport OSL from './onslaughtLeague/Scoreboard';\r\nimport SDP from './sdp/Scoreboard';\r\n\r\nconst ValorantScoreboardOverlay = (props) => {\r\n const { shard } = props;\r\n\r\n return (\r\n shard.includes('sdp') ? \r\n \r\n :\r\n shard.includes('ol') ? \r\n \r\n :\r\n null\r\n );\r\n}\r\n\r\nexport default ValorantScoreboardOverlay;\r\n","import React, { useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { FormGroup, Label } from 'reactstrap';\r\nimport { requestChangeComponent } from '../../../../../../redux/dashboard/actions';\r\nimport { COMPONENT_STATE_MAPS } from '../../../../constants';\r\nimport Multiselect from '../../../../../../components/common/multiselect/Multiselect';\r\n\r\nfunction MapSelect(props) {\r\n const { component, requestChangeComponent } = props;\r\n\r\n useEffect(() => {\r\n requestChangeComponent(component, { state: { [COMPONENT_STATE_MAPS]: component.availableMaps } });\r\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n return (\r\n \r\n \r\n requestChangeComponent(component, { state: { [COMPONENT_STATE_MAPS]: s } })}\r\n onRemove={s => requestChangeComponent(component, { state: { [COMPONENT_STATE_MAPS]: s.length ? s : null } })}\r\n color={styles.tertiaryDark}\r\n displayValue='value'\r\n warning={!component.state[COMPONENT_STATE_MAPS] && component.state.showEmptyFieldWarning}\r\n />\r\n \r\n );\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n requestChangeComponent,\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(MapSelect);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { FormGroup, Label } from 'reactstrap';\r\nimport { requestChangeComponent } from '../../../../../../redux/dashboard/actions';\r\nimport { COMPONENT_STATE_RULE } from '../../../../constants';\r\nimport Multiselect from '../../../../../../components/common/multiselect/Multiselect';\r\n\r\nfunction MapSelect(props) {\r\n const { component, requestChangeComponent } = props;\r\n\r\n return (\r\n \r\n \r\n requestChangeComponent(component, { state: { [COMPONENT_STATE_RULE]: s } })}\r\n onRemove={s => requestChangeComponent(component, { state: { [COMPONENT_STATE_RULE]: s.length ? s : null } })}\r\n color={styles.tertiaryDark}\r\n displayValue='value'\r\n warning={!component.state[COMPONENT_STATE_RULE] && component.state.showEmptyFieldWarning}\r\n />\r\n \r\n );\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n requestChangeComponent,\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(MapSelect);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styles from '../../../../../../scss/style.scss';\r\nimport { FormGroup, InputGroup, InputGroupAddon, Label } from 'reactstrap';\r\nimport { requestChangeComponent } from '../../../../../../redux/dashboard/actions';\r\nimport { displaySuccessNotification } from '../../../../../../redux/notification/actions';\r\nimport { Button, Select } from '../../../../../../components/StyledCoreUI';\r\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\r\n\r\nfunction TeamSelectWithCopy(props) {\r\n const { component, label, stateAttribute, copyText, stateToMergeOnChange, requestChangeComponent, displaySuccessNotification } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n requestChangeComponent(component, { state: {\r\n ...stateToMergeOnChange,\r\n [stateAttribute]: parseInt(id),\r\n }})}\r\n disabledOptionText='-- select team --'\r\n options={component.teams.map(t => {\r\n return { key: t.id, value: t.name };\r\n })}\r\n warning={!component.state[stateAttribute] && component.state.showEmptyFieldWarning}\r\n />\r\n \r\n displaySuccessNotification('Link Copied')}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n requestChangeComponent,\r\n displaySuccessNotification,\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(TeamSelectWithCopy);\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Col, FormGroup, Row } from 'reactstrap';\r\nimport ControllerBase from '../../base/controller/ControllerBase';\r\nimport MapSelect from '../../base/controller/inputs/MapSelect';\r\nimport RuleSelect from '../../base/controller/inputs/RuleSelect';\r\nimport TeamSelectWithCopy from '../../base/controller/inputs/TeamSelectWithCopy';\r\nimport { Button } from '../../../../../components/StyledCoreUI';\r\nimport { requestChangeComponent, requestChangeComponentWithValidation } from '../../../../../redux/dashboard/actions';\r\nimport { displaySuccessNotification } from '../../../../../redux/notification/actions';\r\nimport { COMPONENT_STATE_LEFT_TEAM, COMPONENT_STATE_RIGHT_TEAM, MAP_VETO_VETO_STATUS } from '../../../constants';\r\nimport { VALORANT_GAME } from '../../../../../util/Games';\r\n\r\nclass MapVetoController extends Component {\r\n\r\n /**\r\n * Generated voting URL for teams\r\n * \r\n * @param {*} token \r\n */\r\n generateTeamLink = (token, teamToken) => {\r\n if (!token || !teamToken) return null;\r\n return `${window.location.protocol}//${window.location.host}/map-veto/${VALORANT_GAME}/${token}/${teamToken}`;\r\n }\r\n\r\n render() {\r\n const { component, requestChangeComponent, requestChangeComponentWithValidation } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

Generate links for team captains

\r\n requestChangeComponentWithValidation(component, { [MAP_VETO_VETO_STATUS]: 'generate-url' })}\r\n >Generate Links\r\n
\r\n \r\n \r\n \r\n

Reset map veto panels

\r\n requestChangeComponent(component, { [MAP_VETO_VETO_STATUS]: 'reset', state: {} })}\r\n >Reset\r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n requestChangeComponent,\r\n requestChangeComponentWithValidation,\r\n displaySuccessNotification,\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(MapVetoController);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport styled from 'styled-components';\r\nimport { getMapByGame, getTeamLogo } from '../../../../../../util/CommonUtil';\r\nimport { VALORANT_GAME } from '../../../../../../util/Games';\r\nimport { MAP_VETO_SIDE_COLORS, MAP_VETO_SIDE_MAPPING } from '../../../../constants';\r\n\r\nconst MapPick = styled.table`\r\n background: url('${props => getMapByGame(VALORANT_GAME, props.map)}-muted.png');\r\n background-size: cover;\r\n background-position-y: 50px;\r\n margin: 0px 30px;\r\n`;\r\n\r\nconst Header = styled.td`\r\n height: 50px;\r\n background: #5848f1;\r\n text-transform: uppercase;\r\n color: white;\r\n font-size: 2.5rem;\r\n font-family: teko-semibold;\r\n`;\r\n\r\nconst MapPicker = styled.td`\r\n width: 175px;\r\n padding: 15px 25px;\r\n p {\r\n font-size: 1.5rem;\r\n text-transform: uppercase;\r\n font-family: teko-semibold;\r\n }\r\n\r\n img {\r\n height: 100px;\r\n }\r\n`;\r\n\r\nconst MapSide = styled.td`\r\n width: 175px;\r\n padding: 15px 25px;\r\n img {\r\n height: 50px;\r\n }\r\n\r\n div {\r\n height: 15px;\r\n margin-bottom: 10px;\r\n\r\n &.side-indicator {\r\n background: ${props => props.color};\r\n }\r\n }\r\n\r\n .empty-holder {\r\n height: 50px;\r\n width: 50px;\r\n margin: 0 auto;\r\n }\r\n`;\r\n\r\nfunction MapVeto(props) {\r\n const { logs } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n {\r\n (logs || []).map(mapPick => {\r\n return (\r\n \r\n \r\n
{ mapPick.map }
\r\n \r\n \r\n \r\n

{ mapPick.type }

\r\n \r\n
\r\n \r\n
\r\n {\r\n mapPick[MAP_VETO_SIDE_MAPPING.left] ?\r\n \r\n :\r\n
\r\n }\r\n
\r\n \r\n \r\n \r\n
\r\n {\r\n mapPick[MAP_VETO_SIDE_MAPPING.right] ?\r\n \r\n :\r\n
\r\n }\r\n
\r\n \r\n \r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n logs: state.overlay.logs,\r\n});\r\n\r\nexport default connect(mapStateToProps)(MapVeto);","import React from 'react';\r\nimport OnslaughtMapVeto from './onslaughtLeague/MapVeto';\r\n\r\nconst MapVetoOverlay = (props) => {\r\n const { shard } = props;\r\n\r\n switch (shard) {\r\n case shard.includes('fs'):\r\n return \r\n default:\r\n return \r\n }\r\n}\r\n\r\nexport default MapVetoOverlay;\r\n","import {\r\n // Component Names\r\n PLAYER_STATS_COMPONENT_NAME,\r\n PLAYER_LEADERBOARD_COMPONENT_NAME,\r\n PLAYER_HEAD_TO_HEAD_COMPONENT_NAME,\r\n TEAM_STATS_COMPONENT_NAME,\r\n TEAM_HEAD_TO_HEAD_COMPONENT_NAME,\r\n TEAM_LEADERBOARD_COMPONENT_NAME,\r\n SCOREBOARD_COMPONENT_NAME,\r\n MAP_VETO_COMPONENT_NAME,\r\n // Component Types\r\n PLAYER_STATS_COMPONENT_TYPE,\r\n PLAYER_LEADERBOARD_COMPONENT_TYPE,\r\n PLAYER_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n TEAM_STATS_COMPONENT_TYPE,\r\n TEAM_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n TEAM_LEADERBOARD_COMPONENT_TYPE,\r\n SCOREBOARD_COMPONENT_TYPE,\r\n MAP_VETO_COMPONENT_TYPE,\r\n // State to opts mappings\r\n PLAYER_STATS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n PLAYER_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n PLAYER_HEAD_TO_HEAD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n TEAM_STATS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n TEAM_HEAD_TO_HEAD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n TEAM_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n SCOREBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n MAP_VETO_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n // Additional component parameters\r\n MAP_VETO_VETO_STATUS,\r\n} from '../constants';\r\n\r\nimport PlayerStatsController from './playerStats/controller/ValorantPlayerStatsController';\r\nimport PlayerStatsOverlay from './playerStats/overlay/ValorantPlayerStatsOverlay';\r\nimport PlayerLeaderboardController from './playerLeaderboard/controller/ValorantPlayerLeaderboardController';\r\nimport PlayerLeaderboardOverlay from './playerLeaderboard/overlay/ValorantPlayerLeaderboardOverlay';\r\nimport PlayerHeadToHeadController from './playerHeadToHead/controller/ValorantPlayerHeadToHeadController';\r\nimport PlayerHeadToHeadOverlay from './playerHeadToHead/overlay/ValorantPlayerHeadToHeadOverlay';\r\nimport TeamStatsController from './teamStats/controller/ValorantTeamStatsController';\r\nimport TeamStatsOverlay from './teamStats/overlay/ValorantTeamStatsOverlay';\r\nimport TeamHeadToHeadController from './teamHeadToHead/controller/ValorantTeamHeadToHeadController';\r\nimport TeamHeadToHeadOverlay from './teamHeadToHead/overlay/ValorantTeamHeadToHeadOverlay';\r\nimport TeamLeaderboardController from './teamLeaderboard/controller/ValorantTeamLeaderboardController';\r\nimport TeamLeaderboardOverlay from './teamLeaderboard/overlay/ValorantTeamLeaderboardOverlay';\r\nimport ScoreboardController from './scoreboard/controller/ValorantScoreboardController';\r\nimport ScoreboardOverlay from './scoreboard/overlay/ValorantScoreboardOverlay';\r\nimport MapVetoController from '../common/mapVeto/controller/MapVetoController';\r\nimport MapVetoOverlay from '../common/mapVeto/overlay/MapVetoOverlay';\r\n\r\nexport default {\r\n PlayerStats: {\r\n width: 4,\r\n name: PLAYER_STATS_COMPONENT_NAME,\r\n type: PLAYER_STATS_COMPONENT_TYPE,\r\n controller: PlayerStatsController,\r\n overlay: PlayerStatsOverlay,\r\n maxStatistics: 5,\r\n stateOptsMapping: PLAYER_STATS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n PlayerLeaderboard: {\r\n width: 4,\r\n name: PLAYER_LEADERBOARD_COMPONENT_NAME,\r\n type: PLAYER_LEADERBOARD_COMPONENT_TYPE,\r\n controller: PlayerLeaderboardController,\r\n overlay: PlayerLeaderboardOverlay,\r\n maxStatistics: 1,\r\n stateOptsMapping: PLAYER_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n PlayerHeadToHead: {\r\n width: 4,\r\n name: PLAYER_HEAD_TO_HEAD_COMPONENT_NAME,\r\n type: PLAYER_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n controller: PlayerHeadToHeadController,\r\n overlay: PlayerHeadToHeadOverlay,\r\n maxStatistics: 4,\r\n stateOptsMapping: PLAYER_HEAD_TO_HEAD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n TeamStats: {\r\n width: 4,\r\n name: TEAM_STATS_COMPONENT_NAME,\r\n type: TEAM_STATS_COMPONENT_TYPE,\r\n controller: TeamStatsController,\r\n overlay: TeamStatsOverlay,\r\n maxStatistics: 5,\r\n stateOptsMapping: TEAM_STATS_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n TeamHeadToHead: {\r\n width: 4,\r\n name: TEAM_HEAD_TO_HEAD_COMPONENT_NAME,\r\n type: TEAM_HEAD_TO_HEAD_COMPONENT_TYPE,\r\n controller: TeamHeadToHeadController,\r\n overlay: TeamHeadToHeadOverlay,\r\n maxStatistics: 4,\r\n stateOptsMapping: TEAM_HEAD_TO_HEAD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n TeamLeaderboard: {\r\n width: 4,\r\n name: TEAM_LEADERBOARD_COMPONENT_NAME,\r\n type: TEAM_LEADERBOARD_COMPONENT_TYPE,\r\n controller: TeamLeaderboardController,\r\n overlay: TeamLeaderboardOverlay,\r\n maxStatistics: null,\r\n stateOptsMapping: TEAM_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n Scoreboard: {\r\n width: 4,\r\n name: SCOREBOARD_COMPONENT_NAME,\r\n type: SCOREBOARD_COMPONENT_TYPE,\r\n controller: ScoreboardController,\r\n overlay: ScoreboardOverlay,\r\n maxStatistics: 4,\r\n stateOptsMapping: SCOREBOARD_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n },\r\n MapVeto: {\r\n width: 4,\r\n name: MAP_VETO_COMPONENT_NAME,\r\n type: MAP_VETO_COMPONENT_TYPE,\r\n controller: MapVetoController,\r\n overlay: MapVetoOverlay,\r\n maxStatistics: null,\r\n stateOptsMapping: MAP_VETO_COMPONENT_STATE_TO_OPTS_MAPPING,\r\n useOnlyShard: true,\r\n skipOnCreateBulk: true,\r\n fixArgs: true,\r\n additionalParameters: [ MAP_VETO_VETO_STATUS ]\r\n },\r\n}\r\n","import pubgComponents from './pubg';\r\nimport csgoComponents from './csgo';\r\nimport valorantComponents from './valorant';\r\nimport {\r\n PUBG_GAME,\r\n CSGO_GAME,\r\n VALORANT_GAME,\r\n} from '../../util/Games';\r\n\r\nexport default {\r\n [PUBG_GAME]: pubgComponents,\r\n [CSGO_GAME]: csgoComponents,\r\n [VALORANT_GAME]: valorantComponents,\r\n}","// All supported games\r\nexport const PUBG_GAME = 'pubg';\r\nexport const PUBGC_GAME = 'pubgc';\r\nexport const CSGO_GAME = 'csgo';\r\nexport const VALORANT_GAME = 'valorant';\r\n\r\n// All games\r\nexport default [ PUBG_GAME, PUBGC_GAME, CSGO_GAME, VALORANT_GAME ];","import { STAGE_FILTER_TYPE_HIDDEN, STAGE_FILTER_TYPE_OVERALL, TWIRE_ASSETS_URL } from './Constants';\r\nimport components from '../views/Components';\r\n\r\n/**\r\n * Sets page title\r\n *\r\n * @param {*} title\r\n */\r\nexport const setPageTitle = (title) => {\r\n document.title = title\r\n}\r\n\r\n/**\r\n * Converts number into placement string.\r\n * For example: 1 -> st\r\n *\r\n * @param {*} n number to convert\r\n */\r\nexport const numberToPlacementSurfix = (n) => {\r\n if (n >= 10 && n <= 20) {\r\n return 'th'\r\n } else if (n % 10 === 1) {\r\n return 'st'\r\n } else if (n % 10 === 2) {\r\n return 'nd'\r\n } else if (n % 10 === 3) {\r\n return 'rd'\r\n } else {\r\n return 'th'\r\n }\r\n}\r\n\r\n/**\r\n * Returns url to the team logo picture\r\n *\r\n * @param {*} teamName\r\n */\r\nexport const getTeamLogo = (teamName) => {\r\n return teamName\r\n ? TWIRE_ASSETS_URL +\r\n 'pubg/team-logos/' +\r\n teamName.replaceAll(' ', '-').toLowerCase() +\r\n '.png'\r\n : ''\r\n}\r\n\r\n/**\r\n * Returns url to the team logo picture by game\r\n *\r\n * @param {*} game\r\n * @param {*} teamName\r\n */\r\nexport const getTeamLogoByGame = (game, teamName) => {\r\n return TWIRE_ASSETS_URL +\r\n game.toLowerCase() + '/' +\r\n 'pubg/team-logos/' +\r\n (teamName || 'default').replaceAll(' ', '-').toLowerCase() +\r\n '.png'\r\n}\r\n\r\n/**\r\n * Returns url to the country flag\r\n *\r\n * @param {*} isoCode\r\n * @param {*} size\r\n */\r\nexport const getCountryFlag = (isoCode, size) => {\r\n return TWIRE_ASSETS_URL +\r\n `countries/${size || 'normal'}/` +\r\n isoCode.toLowerCase() +\r\n '.png'\r\n}\r\n\r\n/**\r\n * Returns url to the team logo picture by game\r\n *\r\n * @param {*} game\r\n * @param {*} teamName\r\n */\r\nexport const getMapByGame = (game, mapName) => {\r\n return TWIRE_ASSETS_URL +\r\n game.toLowerCase() + '/' +\r\n 'maps/' +\r\n (mapName || 'default').replaceAll(' ', '-').toLowerCase()\r\n}\r\n\r\n/**\r\n * Returns url to the team logo picture\r\n *\r\n * @param {*} playerName\r\n */\r\nexport const getPlayerImage = (playerName) => {\r\n return playerName ? TWIRE_ASSETS_URL + 'pubg/players/' + playerName + '.png' : ''\r\n}\r\n\r\n/**\r\n * Returns url to the team logo picture\r\n *\r\n * @param {*} playerName\r\n */\r\nexport const getPlayerImageByGame = (game, playerName) => {\r\n return playerName ? TWIRE_ASSETS_URL + game.toLowerCase() + '/pubg/players/' + (playerName.replaceAll(' ', '-').toLowerCase() || 'default') + '.png' : ''\r\n}\r\n\r\n/**\r\n * Returns url to CSGO team logo picture\r\n *\r\n * @param {*} game\r\n * @param {*} teamName\r\n */\r\nexport const getCsgoTeamLogo = (teamName) => {\r\n return TWIRE_ASSETS_URL +\r\n 'csgo/team-logos/' +\r\n (teamName || 'default').replaceAll(' ', '-').toLowerCase() +\r\n '.png'\r\n}\r\n\r\n/**\r\n * Returns url to the CSGO player picture\r\n *\r\n * @param {*} game\r\n * @param {*} playername\r\n */\r\nexport const getCsgoPlayerImage = (playerName) => {\r\n return TWIRE_ASSETS_URL +\r\n 'csgo/players/' +\r\n (playerName || 'default').replaceAll(' ', '-').toLowerCase() +\r\n '.png'\r\n}\r\n\r\n/**\r\n * Returns url to the valorant agent icon\r\n *\r\n * @param {*} agent\r\n */\r\nexport const getValorantAgentIcon = (agent) => {\r\n return TWIRE_ASSETS_URL + `valorant/agents/${agent.toLowerCase()}/${agent.toLowerCase()}-icon.png`;\r\n}\r\n\r\n/**\r\n * Returns parameter value from URL if exists, else null\r\n *\r\n * @param {*} param parameter name\r\n */\r\nexport const getQueryParamFromUrl = (param) => {\r\n return new URL(window.location.href).searchParams.get(param)\r\n}\r\n\r\nexport const roundNumber = (n, decimal, percentage) => {\r\n const rounded = !percentage ? Math.round(n * 10) / 10 : n * 100;\r\n if (decimal) {\r\n return (rounded).toFixed(1);\r\n }\r\n return rounded;\r\n}\r\n\r\n/**\r\n * Return csv\r\n *\r\n * @param {*} columns map of array property to column title\r\n * @param {*} array data\r\n */\r\nexport const arrayToCsv = (columns, array) => {\r\n let csv = `${Object.keys(columns)\r\n .map((k) => columns[k])\r\n .join(',')}\\r\\n`\r\n array.forEach((el) => {\r\n csv += `${Object.keys(columns)\r\n .map((k) => el[k])\r\n .join(',')}\\r\\n`\r\n })\r\n return csv\r\n}\r\n\r\n/**\r\n * Downloads give csv with given name\r\n *\r\n * @param {*} csv\r\n * @param {*} name\r\n */\r\nexport const downloadCsv = (csv, name) => {\r\n const hiddenElement = document.createElement('a')\r\n hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv)\r\n hiddenElement.target = '_blank'\r\n hiddenElement.download = `${name}.csv`\r\n hiddenElement.click()\r\n}\r\n\r\n/**\r\n * Returns true if number is int\r\n */\r\nexport const isInt = (n) => {\r\n return n % 1 === 0;\r\n}\r\n\r\n/**\r\n * Converts number into displayable format\r\n * \r\n * @param {*} n \r\n */\r\nexport const numberForDisplay = (n) => {\r\n return isInt(n) ? n : parseFloat(n).toFixed(2);\r\n}\r\n\r\n/**\r\n * Returns the additional name of the filter (shardInfo - shard = additional name)\r\n * \r\n * @param {*} tournamentFilters \r\n * @param {*} tournamentFilterId \r\n */\r\nexport const getAdditionalName = (tournamentFilters, tournamentFilterId) => {\r\n if (tournamentFilterId === null || !tournamentFilters.length || (tournamentFilters.length === 1 && tournamentFilters[0].type === STAGE_FILTER_TYPE_HIDDEN)) {\r\n return '';\r\n } else {\r\n const filter = tournamentFilters.find(f => f.id === tournamentFilterId);\r\n const parentAdditionalName = getAdditionalName(tournamentFilters, filter.parentId);\r\n return parentAdditionalName ? parentAdditionalName + '-' + (filter.value || '') : (filter.value || '');\r\n }\r\n}\r\n\r\n/**\r\n * Returns the child filter of the given additional name\r\n * \r\n * @param {*} tournamentFilters \r\n * @param {*} additionalName \r\n */\r\nexport const getFilterByAdditionalName = (tournamentFilters, additionalName, acc = '', currentFilterId = null) => {\r\n const nextFilter = tournamentFilters\r\n .sort((a, b) => (a.value || '').length > (b.value || '').length ? -1 : 1)\r\n .find(f => additionalName.startsWith(acc ? acc + '-' + f.value : f.value) && f.parentId === currentFilterId);\r\n acc = acc ? acc + '-' + nextFilter.value : nextFilter ? nextFilter.value : '';\r\n if (acc === additionalName || acc + '-' === additionalName) {\r\n const overallFilter = tournamentFilters.find(f => f.parentId === nextFilter.id && (f.type === STAGE_FILTER_TYPE_OVERALL || f.type === STAGE_FILTER_TYPE_HIDDEN));\r\n return overallFilter ? overallFilter.id : nextFilter.id;\r\n } else {\r\n return getFilterByAdditionalName(tournamentFilters, additionalName, acc, nextFilter.id);\r\n }\r\n}\r\n\r\n/**\r\n * Returns the full shardInfo according to selected filter\r\n * \r\n * @param {*} shard \r\n * @param {*} tournamentFilters \r\n * @param {*} tournamentFilterId \r\n */\r\nexport const getShardInfo = (shard, tournamentFilters, tournamentFilterId) => {\r\n let additionalName = getAdditionalName(tournamentFilters, tournamentFilterId);\r\n if (additionalName.lastIndexOf('-') === additionalName.length - 1) additionalName = additionalName.slice(0, -1);\r\n return `${shard}${additionalName ? '-' + additionalName : ''}`;\r\n}\r\n\r\n/**\r\n * Returns true if first stage is also a group\r\n * \r\n * @param {*} tournamentFilters \r\n */\r\nexport const doesFirstStageHaveChildren = (tournamentFilters) => {\r\n const firstStage = (tournamentFilters.find(f => !f.parentId) || {});\r\n const firstStageChildren = tournamentFilters.filter(f => f.parentId === firstStage.id);\r\n return firstStageChildren.length;\r\n}\r\n\r\n/**\r\n * Returns true if first stage is also a group\r\n * \r\n * @param {*} tournamentFilters \r\n */\r\nexport const isFirstStageOverall = (tournamentFilters) => {\r\n const firstStage = (tournamentFilters.find(f => !f.parentId) || {});\r\n return tournamentFilters.filter(f => f.parentId === firstStage.id).find(f => f.type === STAGE_FILTER_TYPE_OVERALL);\r\n}\r\n\r\n/**\r\n * Sorts players by stats (first alive, then knocked, and last death)\r\n * \r\n * @param {*} a \r\n * @param {*} b \r\n * @returns \r\n */\r\nexport const sortByPlayerStatus = (a, b) => {\r\n if (a.status !== b.status) {\r\n if (a.status === 'alive') {\r\n return -1;\r\n } else if (b.status === 'alive') {\r\n return 1;\r\n } else if (a.status === 'knocked') {\r\n return -1;\r\n } else if (b.status === 'knocked') {\r\n return 1;\r\n }\r\n }\r\n return 0;\r\n}\r\n\r\n/**\r\n * Adds missing players to team (assums that 4 players need to be on team)\r\n * \r\n * @param {*} players \r\n */\r\nexport const addMissingPlayers = (players) => {\r\n const numberOfPlayer = players.length;\r\n if (players.length !== 4) {\r\n for (let i = 0; i < 4 - numberOfPlayer; i++) {\r\n players.push({ status: 'death', ign: 'NOT CONNECTED' });\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Returns true if the team is death\r\n * \r\n * @param {*} team \r\n * @returns \r\n */\r\nexport const isTeamDeath = (team) => {\r\n return team.players.filter(p => p.status === 'death').length >= team.players.length;\r\n}\r\n\r\n/**\r\n * Returns game objects according to give component names and selected game\r\n * \r\n * @param {*} game \r\n * @param {*} availableComponents \r\n */\r\nexport const getAvailableComponentObjects = (game, availableComponents) => {\r\n const filteredComponents = {};\r\n Object.keys(components[game]).forEach(k => {\r\n if (availableComponents.includes(k)) {\r\n filteredComponents[k] = components[game][k];\r\n }\r\n });\r\n return filteredComponents;\r\n}\r\n\r\n/**\r\n * Groups list by given attribute\r\n *\r\n * Example:\r\n * list = [ 'one', 'two', 'three' ]\r\n * key = 'length'\r\n * result = { 3: [ 'one', 'two' ], 5: [ 'three' ] }\r\n */\r\n export const groupBy = (list, key) => list.reduce((acc, currVal) => {\r\n (acc[currVal[key]] = acc[currVal[key]] || []).push(currVal);\r\n return acc;\r\n}, {});\r\n\r\n/**\r\n * Groups list by given two attribute\r\n *\r\n * Example:\r\n * list = [ { x: '1', y: '2', z: '4' }, { x: '1', y: '2', z: '3' }, { x: '1', y: '3', z: '4' } ]\r\n * key1 = 'x'\r\n * key2 = 'y'\r\n * result = { '1-2': [ { x: '1', y: '2', z: '4' }, { x: '1', y: '2', z: '3' } ], '1-3': [\r\n * { x: '1', y: '3', z: '4' } ] }\r\n */\r\n export const groupByTwo = (list, key1, key2) => list.reduce((acc, currVal) => {\r\n (acc[String(currVal[key1]) + '-' + String(currVal[key2])] = acc[currVal[key1] + '-' + currVal[key2]] || [])\r\n .push(currVal);\r\n return acc;\r\n}, {});","import {\r\n DISPLAY_SUCCESS_NOTIFICATION,\r\n DISPLAY_ERROR_NOTIFICATION,\r\n DISPLAY_INFO_NOTIFICATION\r\n} from './types';\r\n\r\n/**\r\n * Action for displaying success notifications\r\n * \r\n * @param {*} message message to be displayed\r\n */\r\nexport const displaySuccessNotification = message => ({\r\n type: DISPLAY_SUCCESS_NOTIFICATION,\r\n payload: message\r\n});\r\n\r\n/**\r\n * Action for displaying success notifications\r\n * \r\n * @param {*} message message to be displayed\r\n */\r\nexport const displayErrorNotification = message => ({\r\n type: DISPLAY_ERROR_NOTIFICATION,\r\n payload: message\r\n});\r\n\r\n/**\r\n * Action for displaying info notifications\r\n * \r\n * @param {*} message message to be displayed\r\n */\r\nexport const displayInfoNotification = message => ({\r\n type: DISPLAY_INFO_NOTIFICATION,\r\n payload: message\r\n});","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { Alert } from 'reactstrap';\r\n\r\nexport default styled(Alert)`\r\n background: ${ props => props.color ? styles[props.color] : styles.primary};\r\n color: ${styles.secondary};\r\n border: none;\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\n\r\nexport default styled.div.attrs({\r\n className: 'app'\r\n})`\r\n background: ${styles.background};\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { AppAside } from '@coreui/react';\r\n\r\nexport default styled(AppAside)`\r\n background: ${styles.tertiaryDark};\r\n border-color: ${styles.tertiaryDark};\r\n overflow: auto;\r\n\r\n .tab-content {\r\n background: ${styles.tertiaryDark};\r\n }\r\n\r\n &::-webkit-scrollbar-track {\r\n -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);\r\n background-color: ${styles.transparent};\r\n border-radius: 10px;\r\n }\r\n\r\n &::-webkit-scrollbar {\r\n width: 6px;\r\n\t background-color: ${styles.transparent};\r\n }\r\n\r\n &::-webkit-scrollbar-thumb {\r\n border-radius: 10px;\r\n background-color: #aaa;\r\n }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { AppHeader } from '@coreui/react';\r\n\r\nexport default styled(AppHeader)`\r\n background: ${styles.tertiaryDark};\r\n border-color: ${styles.background};\r\n\r\n .nav-link {\r\n color: ${styles.font};\r\n\r\n &.active,\r\n &:hover,\r\n &:focus,\r\n &.active:hover {\r\n color: ${styles.primary};\r\n }\r\n }\r\n\r\n .navbar-toggler {\r\n outline: 0;\r\n }\r\n`;","import styled from 'styled-components';\r\nimport { AppNavbarBrand } from '@coreui/react';\r\n\r\nexport default styled(AppNavbarBrand)`\r\n left: 100px !important;\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { AppFooter } from '@coreui/react';\r\n\r\nexport default styled(AppFooter)`\r\n background: ${styles.background};\r\n border-color: ${styles.background};\r\n color: ${styles.secondary};\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { AppBreadcrumb2 } from '@coreui/react';\r\n\r\nexport default styled(AppBreadcrumb2)`\r\n .breadcrumb {\r\n background: ${styles.background};\r\n border-color: ${styles.background};\r\n\r\n .breadcrumb-item {\r\n color: ${styles.secondary};\r\n }\r\n }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { AppSidebarNav } from '@coreui/react';\r\n\r\nexport default styled(AppSidebarNav)`\r\n .nav {\r\n background: ${styles.tertiaryDark};\r\n }\r\n\r\n .nav-link.active {\r\n background: ${styles.background};\r\n }\r\n\r\n .nav-link:hover {\r\n background: ${styles.primary};\r\n }\r\n\r\n .nav-dropdown .nav-dropdown-items .nav-link {\r\n color: ${styles.primary};\r\n }\r\n\r\n .nav-dropdown .nav-dropdown-items .nav-link:hover {\r\n color: ${styles.secondary};\r\n }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { AppSwitch } from '@coreui/react';\r\n\r\nexport default styled(AppSwitch)`\r\n .switch-slider {\r\n background: ${styles.tertiary};\r\n border-color: ${styles.infoDark};\r\n }\r\n\r\n .switch-slider::before {\r\n background: ${styles.infoDark};\r\n border-color: ${styles.infoDark};\r\n }\r\n\r\n .switch-input:checked + .switch-slider {\r\n border-color: ${styles.primary}; \r\n }\r\n\r\n .switch-input:checked + .switch-slider::before {\r\n border-color: ${styles.secondary}; \r\n background: ${styles.secondary}; \r\n }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { Button } from 'reactstrap';\r\n\r\nexport default styled(Button)`\r\n color: ${styles.secondary};\r\n text-transform: uppercase;\r\n font-weight: 600;\r\n ${props => props.size && props.size === 'xs' ? 'font-size: 0.75em;' : ''}\r\n\r\n &.btn-light {\r\n background: ${styles.transparent};\r\n border: none;\r\n }\r\n\r\n &.btn-light:hover, &.btn-light:active {\r\n color: ${styles.secondary};\r\n background: ${styles.tertiary};\r\n border-color: ${styles.tertiary};\r\n }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { ButtonGroup } from 'reactstrap';\r\n\r\nexport default styled(ButtonGroup)`\r\n button, button:focus {\r\n box-shadow: none;\r\n }\r\n\r\n .dropdown-item, button:hover, i:hover {\r\n color: ${styles.primary};\r\n }\r\n\r\n .dropdown-item {\r\n border-color: ${styles.infoDark};\r\n }\r\n\r\n .dropdown-item:hover {\r\n background: ${styles.primary};\r\n color: ${styles.secondary};\r\n }\r\n\r\n .dropdown-menu {\r\n background: ${styles.tertiaryDark};\r\n border-color: ${styles.infoDark};\r\n color: ${styles.secondary};\r\n }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { Card } from 'reactstrap';\r\n\r\nexport default styled(Card)`\r\n background: ${props => props.color ? props.color : styles.tertiaryDark};\r\n border-color: ${styles.tertiaryDark};\r\n color: ${styles.secondary};\r\n\r\n .card-footer {\r\n background: ${props => props.color ? props.color : styles.tertiaryDark};\r\n border: none;\r\n }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { CardHeader } from 'reactstrap';\r\n\r\nexport default styled(CardHeader)`\r\n background: ${props => props.color ? props.color : styles.tertiaryDark};\r\n border-color: ${styles.primary};\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { DropdownMenu } from 'reactstrap';\r\n\r\nexport default styled(DropdownMenu)`\r\n background: ${styles.tertiaryDark};\r\n border-color: ${styles.infoDark};\r\n\r\n .dropdown-header {\r\n background: ${styles.tertiary};\r\n color: ${styles.secondary};\r\n border-color: ${styles.infoDark};\r\n }\r\n\r\n .dropdown-item {\r\n i {\r\n color: ${styles.secondary};\r\n }\r\n background: ${styles.tertiaryDark};\r\n color: ${styles.secondary};\r\n border: none;\r\n }\r\n\r\n .dropdown-item:hover {\r\n background: ${styles.primary};\r\n }\r\n\r\n .dropdown-divider {\r\n border-color: ${styles.tertiary};\r\n }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { FormText } from 'reactstrap';\r\n\r\nexport default styled(FormText)`\r\n ${ props => props.color ? 'color: ' + styles[props.color] + ' !important;' : '' }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { Input } from 'reactstrap';\r\n\r\nexport default styled(Input)`\r\n background: ${props => props.color ? props.color : styles.tertiary};\r\n border-color: ${props => props.warning ? styles.primary : (props.color ? props.color : styles.tertiary)};\r\n color: ${styles.secondary};\r\n\r\n &:focus {\r\n background: ${props => props.color ? props.color : styles.tertiary};\r\n color: ${styles.secondary};\r\n }\r\n\r\n &[disabled] {\r\n background: ${props => props.color ? props.color : styles.tertiary};\r\n color: ${styles.info};\r\n cursor: not-allowed;\r\n }\r\n\r\n &::-webkit-outer-spin-button, &::-webkit-inner-spin-button {\r\n -webkit-appearance: none;\r\n margin: 0;\r\n }\r\n\r\n &[type=number] {\r\n -moz-appearance: textfield;\r\n }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { Input } from 'reactstrap';\r\n\r\nexport default styled(Input)`\r\n background: none;\r\n border: none;\r\n border-bottom: solid 1px ${styles.secondary};\r\n border-radius: 0;\r\n color: ${styles.secondary};\r\n line-height: 1;\r\n padding: 0;\r\n margin: 0;\r\n height: 1.5em;\r\n ${props => props.fontSize ? `font-size: ${props.fontSize};` : ''}\r\n\r\n &:focus {\r\n background: none;\r\n border: none;\r\n border-bottom: solid 1px ${styles.secondary};\r\n box-shadow: none;\r\n color: ${styles.secondary};\r\n line-height: 1;\r\n padding: 0;\r\n margin: 0;\r\n }\r\n\r\n &[disabled] {\r\n background: none;\r\n color: ${styles.info};\r\n cursor: not-allowed;\r\n line-height: 1;\r\n padding: 0;\r\n margin: 0;\r\n }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { InputGroupAddon } from 'reactstrap';\r\n\r\nexport default styled(InputGroupAddon)`\r\n span {\r\n background: ${styles.tertiaryDark};\r\n border-color: ${styles.tertiary};\r\n color: ${styles.secondary};\r\n }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { ListGroup } from 'reactstrap';\r\n\r\nexport default styled(ListGroup)`\r\n .list-group-item {\r\n background: ${styles.tertiaryDark};\r\n color: ${styles.secondary};\r\n ${props => props.borderColor ? 'border-color: ' + props.borderColor + ';' : ''}\r\n }\r\n\r\n .list-group-item::before {\r\n background-color: ${styles.tertiary} !important;\r\n }\r\n\r\n .list-group-item.text-muted {\r\n background: ${styles.tertiary} !important;\r\n color: ${styles.secondary};\r\n ${props => props.borderColor ? 'border-color: ' + props.borderColor + ';' : ''}\r\n }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { ListGroupItem } from 'reactstrap';\r\n\r\nexport default styled(ListGroupItem)`\r\n ${props => props.border ? 'border-color: ' + props.border + ';' : ''}\r\n\r\n strong {\r\n color: ${styles.secondary};\r\n }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { Modal } from 'reactstrap';\r\n\r\nexport default styled(Modal)`\r\n background: ${styles.tertiaryDark};\r\n color: ${styles.secondary};\r\n\r\n .modal-header {\r\n background: ${styles.primary};\r\n }\r\n\r\n .modal-header, .modal-footer {\r\n border: none;\r\n }\r\n\r\n .modal-body, .modal-footer {\r\n background: ${styles.tertiaryDark};\r\n border-left: 1px solid ${styles.primary};\r\n border-right: 1px solid ${styles.primary};\r\n }\r\n\r\n .modal-footer {\r\n border-bottom: 1px solid ${styles.primary};\r\n }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { Nav } from 'reactstrap';\r\n\r\nexport default styled(Nav)`\r\n .nav-item {\r\n color: ${styles.secondary};\r\n }\r\n\r\n .nav-link {\r\n background: ${styles.tertiaryDark};\r\n border-color: ${styles.tertiary};\r\n\r\n &:hover {\r\n border-color: ${styles.tertiaryDark};\r\n color: ${styles.primary} !important;\r\n border-top: 2px solid ${styles.primary};\r\n }\r\n\r\n &.active {\r\n background: ${styles.primary};\r\n border-color: ${styles.tertiaryDark};\r\n color: ${styles.secondary} !important;\r\n border-top: 2px solid ${styles.tertiaryDark};\r\n\r\n &:hover {\r\n color: ${styles.secondary} !important;\r\n }\r\n }\r\n border-top: 2px solid ${styles.primary};\r\n }\r\n\r\n .tab-content {\r\n background: ${styles.tertiaryDark};\r\n }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { Pagination } from 'reactstrap';\r\n\r\nexport default styled(Pagination)`\r\n ul {\r\n justify-content: center;\r\n }\r\n\r\n .page-link {\r\n background: ${styles.tertiary};\r\n border-color: ${styles.tertiaryDark};\r\n\r\n &:hover {\r\n border-color: ${styles.tertiaryDark};\r\n }\r\n }\r\n\r\n .active .page-link {\r\n border-color: ${styles.tertiaryDark};\r\n\r\n &:hover {\r\n color: ${styles.tertiaryDark};\r\n }\r\n }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { Progress } from 'reactstrap';\r\n\r\nexport default styled(Progress)`\r\n background: ${styles.infoDark};\r\n\r\n .progress-bar {\r\n background: ${props => props.color ? styles[props.color] : styles.primary};\r\n }\r\n`;","import React from 'react';\r\nimport styles from '../../scss/style.scss';\r\nimport Input from './Input';\r\n\r\nfunction Select(props) {\r\n const { name, color, value, onChange, disabledOptionText, options, warning } = props;\r\n\r\n return (\r\n onChange(e.target.value)}\r\n warning={warning}\r\n >\r\n {\r\n disabledOptionText ?\r\n \r\n :\r\n null\r\n }\r\n {\r\n options.map(o => {\r\n return (\r\n { o.value }\r\n );\r\n })\r\n }\r\n \r\n );\r\n}\r\n\r\nexport default Select;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { Table } from 'reactstrap';\r\n\r\nexport default styled(Table)`\r\n color: ${styles.secondary};\r\n\r\n th, td {\r\n border: none;\r\n }\r\n\r\n tbody tr:nth-child(even),\r\n tbody tr.table-active {\r\n background: ${styles.tertiary};\r\n }\r\n\r\n tbody tr:nth-child(odd),\r\n tbody tr.table-active {\r\n background: ${styles.tertiaryDark};\r\n }\r\n\r\n tbody tr.table-inactive {\r\n background: ${styles.tertiaryDark};\r\n }\r\n\r\n thead th {\r\n border-color: ${styles.primary};\r\n }\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\nimport { TabContent } from 'reactstrap';\r\n\r\nexport default styled(TabContent)`\r\n background: ${styles.tertiaryDark};\r\n border-color: ${styles.tertiary};\r\n color: ${styles.secondary};\r\n padding: 30px;\r\n`;","import styles from '../../scss/style.scss';\r\nimport styled from 'styled-components';\r\n\r\nexport default styled.textarea`\r\n width: 100%;\r\n background: ${styles.tertiary};\r\n border-color: ${styles.tertiary};\r\n color: ${styles.secondary};\r\n\r\n &:focus {\r\n background: ${styles.tertiary};\r\n color: ${styles.secondary};\r\n }\r\n\r\n &[disabled] {\r\n background: ${styles.tertiary};\r\n color: ${styles.info};\r\n cursor: not-allowed;\r\n }\r\n`;","// Action for requesting new component\r\nexport const REQUEST_CREATE_COMPONENT = 'REQUEST_CREATE_COMPONENT';\r\nexport const REQUEST_CREATE_COMPONENT_PENDING = 'REQUEST_CREATE_COMPONENT_PENDING';\r\nexport const REQUEST_CREATE_COMPONENT_SUCCESS = 'REQUEST_CREATE_COMPONENT_SUCCESS';\r\nexport const REQUEST_CREATE_COMPONENT_ERROR = 'REQUEST_CREATE_COMPONENT_ERROR';\r\n// Action for requesting new components in bulk\r\nexport const REQUEST_CREATE_COMPONENTS_BULK = 'REQUEST_CREATE_COMPONENTS_BULK';\r\nexport const REQUEST_CREATE_COMPONENTS_BULK_PENDING = 'REQUEST_CREATE_COMPONENTS_BULK_PENDING';\r\nexport const REQUEST_CREATE_COMPONENTS_BULK_SUCCESS = 'REQUEST_CREATE_COMPONENTS_BULK_SUCCESS';\r\nexport const REQUEST_CREATE_COMPONENTS_BULK_ERROR = 'REQUEST_CREATE_COMPONENTS_BULK_ERROR';\r\n// Action for requesting change component\r\nexport const REQUEST_CHANGE_COMPONENT = 'REQUEST_CHANGE_COMPONENT';\r\nexport const REQUEST_CHANGE_COMPONENT_PENDING = 'REQUEST_CHANGE_COMPONENT_PENDING';\r\nexport const REQUEST_CHANGE_COMPONENT_SUCCESS = 'REQUEST_CHANGE_COMPONENT_SUCCESS';\r\nexport const REQUEST_CHANGE_COMPONENT_ERROR = 'REQUEST_CHANGE_COMPONENT_ERROR';\r\n// Action for requesting change component wiht state validation\r\nexport const REQUEST_CHANGE_COMPONENT_WITH_VALIDATION = 'REQUEST_CHANGE_COMPONENT_WITH_STATE_VALIDATION';\r\n// Action for requesting remove of the component\r\nexport const REQUEST_REMOVE_COMPONENT = 'REQUEST_REMOVE_COMPONENT';\r\nexport const REQUEST_REMOVE_COMPONENT_PENDING = 'REQUEST_REMOVE_COMPONENT_PENDING';\r\nexport const REQUEST_REMOVE_COMPONENT_SUCCESS = 'REQUEST_REMOVE_COMPONENT_SUCCESS';\r\nexport const REQUEST_REMOVE_COMPONENT_ERROR = 'REQUEST_REMOVE_COMPONENT_ERROR';\r\n// Action for requesting remove of all components\r\nexport const REQUEST_REMOVE_ALL_COMPONENT = 'REQUEST_REMOVE_ALL_COMPONENT';\r\nexport const REQUEST_REMOVE_ALL_COMPONENT_PENDING = 'REQUEST_REMOVE_ALL_COMPONENT_PENDING';\r\nexport const REQUEST_REMOVE_ALL_COMPONENT_SUCCESS = 'REQUEST_REMOVE_ALL_COMPONENT_SUCCESS';\r\nexport const REQUEST_REMOVE_ALL_COMPONENT_ERROR = 'REQUEST_REMOVE_ALL_COMPONENT_ERROR';\r\n// Action for requesting change of the shard info\r\nexport const REQUEST_SHARD_INFO_CHANGE_COMPONENT = 'REQUEST_SHARD_INFO_CHANGE_COMPONENT';\r\nexport const REQUEST_SHARD_INFO_CHANGE_COMPONENT_PENDING = 'REQUEST_SHARD_INFO_CHANGE_COMPONENT_PENDING';\r\nexport const REQUEST_SHARD_INFO_CHANGE_COMPONENT_SUCCESS = 'REQUEST_SHARD_INFO_CHANGE_COMPONENT_SUCCESS';\r\nexport const REQUEST_SHARD_INFO_CHANGE_COMPONENT_ERROR = 'REQUEST_SHARD_INFO_CHANGE_COMPONENT_ERROR';\r\n// Action for subscribing to component changes\r\nexport const SUBSCRIBE_TO_CHANGE_COMPONENT = 'SUBSCRIBE_TO_CHANGE_COMPONENT';\r\nexport const SUBSCRIBE_TO_CHANGE_COMPONENT_PENDING = 'SUBSCRIBE_TO_CHANGE_COMPONENT_PENDING';\r\nexport const SUBSCRIBE_TO_CHANGE_COMPONENT_SUCCESS = 'SUBSCRIBE_TO_CHANGE_COMPONENT_SUCCESS';\r\nexport const SUBSCRIBE_TO_CHANGE_COMPONENT_ERROR = 'SUBSCRIBE_TO_CHANGE_COMPONENT_ERROR';\r\n// Action for setting the component state\r\nexport const SET_COMPONENT_STATE = 'SET_COMPONENT_STATE';\r\n// Action for setting the component data\r\nexport const SET_COMPONENT_DATA = 'SET_COMPONENT_DATA';","// Logout error message\r\nexport const AUTH_LOGOUT_ERROR = 'Error while logging out';\r\n// Error logging in\r\nexport const AUTH_LOGIN_ERROR = 'Wrong username or password';\r\n\r\n// General loading error message\r\nexport const LOADING_ERROR = 'Error while loading data';\r\n\r\n// General saving error message\r\nexport const SAVING_ERROR = 'Error while saving data';\r\n\r\n// Dashboard change message\r\nexport const CREATE_COMPONENT_ERROR = 'Error while creating component';\r\nexport const CHANGE_COMPONENT_ERROR = 'Error while changing component';\r\nexport const REMOVE_COMPONENT_ERROR = 'Error while removing component';","import { createBrowserHistory } from 'history';\r\nexport default createBrowserHistory();","import { \r\n REQUEST_TEAM_READY,\r\n SUBSCRIBE_TO_MAP_VETO_DATA,\r\n REQUEST_MAP_VETO_PICK,\r\n SET_MAP_VETO_DATA,\r\n} from './types';\r\n\r\n/**\r\n * Action for requesting team ready\r\n */\r\nexport const requestTeamReady = (teamToken, overlayToken) => ({\r\n type: REQUEST_TEAM_READY,\r\n payload: {\r\n teamToken: teamToken,\r\n overlayToken: overlayToken,\r\n }\r\n});\r\n\r\n/**\r\n * Action for requesting subscription to map veto data\r\n */\r\nexport const subscribeToMapVetoData = (teamToken, overlayToken, callback) => ({\r\n type: SUBSCRIBE_TO_MAP_VETO_DATA,\r\n payload: {\r\n teamToken: teamToken,\r\n overlayToken: overlayToken,\r\n callback: callback,\r\n }\r\n});\r\n\r\n/**\r\n * Action for requesting pick\r\n */\r\nexport const requestMapVetoPick = (pick) => ({\r\n type: REQUEST_MAP_VETO_PICK,\r\n payload: pick,\r\n});\r\n\r\n/**\r\n * Action for setting new map veto data\r\n */\r\nexport const setMapVetoData = (data) => ({\r\n type: SET_MAP_VETO_DATA,\r\n payload: data,\r\n});","// Twire assets URL\r\nexport const TWIRE_ASSETS_URL = \"https://assets.twire.gg/\";\r\n\r\n// Auth constants\r\nexport const AUTH_TOURNAMENT_ORGANIZER_GROUP = 'TOURNAMENT_ORGANIZER';\r\n\r\n// Tournament types\r\nexport const TOURNAMENT_TYPE_TOURNAMENT = 'tournament';\r\nexport const TOURNAMENT_TYPE_SCRIM = 'scrim';\r\nexport const TOURNAMENT_TYPES = {\r\n [TOURNAMENT_TYPE_TOURNAMENT]: TOURNAMENT_TYPE_TOURNAMENT.toUpperCase(),\r\n [TOURNAMENT_TYPE_SCRIM]: TOURNAMENT_TYPE_SCRIM.toUpperCase(),\r\n};\r\n\r\n// Tournament servers\r\nexport const TOURNAMENT_SERVER_EVENT = 'event';\r\nexport const TOURNAMENT_SERVER_LIVE = 'live';\r\nexport const TOURNAMENT_SERVERS = {\r\n [TOURNAMENT_SERVER_EVENT]: TOURNAMENT_SERVER_EVENT.toUpperCase(),\r\n [TOURNAMENT_SERVER_LIVE]: TOURNAMENT_SERVER_LIVE.toUpperCase(),\r\n};\r\n\r\n// Tournament regions\r\nexport const TOURNAMENT_REGION_GLOBAL = 'global';\r\nexport const TOURNAMENT_REGION_GLOBAL_NAME = 'Global';\r\nexport const TOURNAMENT_REGION_EUROPE = 'eu';\r\nexport const TOURNAMENT_REGION_EUROPE_NAME = 'Europe';\r\nexport const TOURNAMENT_REGION_NA = 'na';\r\nexport const TOURNAMENT_REGION_NA_NAME = 'North America';\r\nexport const TOURNAMENT_REGION_AM = 'am';\r\nexport const TOURNAMENT_REGION_AM_NAME = 'Americas';\r\nexport const TOURNAMENT_REGION_LA = 'la';\r\nexport const TOURNAMENT_REGION_LA_NAME = 'South America';\r\nexport const TOURNAMENT_REGION_ASIA = 'asia';\r\nexport const TOURNAMENT_REGION_ASIA_NAME = 'Asia';\r\nexport const TOURNAMENT_REGION_OCE = 'oce';\r\nexport const TOURNAMENT_REGION_OCE_NAME = 'Oceania';\r\nexport const TOURNAMENT_REGION_APAC = 'apac';\r\nexport const TOURNAMENT_REGION_APAC_NAME = 'APAC';\r\nexport const TOURNAMENT_REGIONS = {\r\n [TOURNAMENT_REGION_GLOBAL]: TOURNAMENT_REGION_GLOBAL_NAME.toUpperCase(),\r\n [TOURNAMENT_REGION_EUROPE]: TOURNAMENT_REGION_EUROPE_NAME.toUpperCase(),\r\n [TOURNAMENT_REGION_NA]: TOURNAMENT_REGION_NA_NAME.toUpperCase(),\r\n [TOURNAMENT_REGION_AM]: TOURNAMENT_REGION_AM_NAME.toUpperCase(),\r\n [TOURNAMENT_REGION_LA]: TOURNAMENT_REGION_LA_NAME.toUpperCase(),\r\n [TOURNAMENT_REGION_ASIA]: TOURNAMENT_REGION_ASIA_NAME.toUpperCase(),\r\n [TOURNAMENT_REGION_OCE]: TOURNAMENT_REGION_OCE_NAME.toUpperCase(),\r\n [TOURNAMENT_REGION_APAC]: TOURNAMENT_REGION_APAC_NAME.toUpperCase(),\r\n};\r\n\r\n// Tournament tiers\r\nexport const TOURNAMENT_TIERS = {\r\n 's': 's',\r\n 'a': 'a',\r\n 'b': 'b',\r\n 'c': 'c',\r\n}\r\n\r\n// Players statistics\r\nexport const PLAYER_STATISTICS = {\r\n kills: 'Kills',\r\n assists: 'Assists',\r\n damageDealt: 'Damage Dealt',\r\n damageTaken: 'Damage Taken',\r\n dbnos: 'Knocks',\r\n revives: 'Revives',\r\n headshotKills: 'Headshot Kills',\r\n killSteals: 'Stolen Kills',\r\n killsStolenFrom: 'Kills stolen from player',\r\n swimDistance: 'Swim Distance',\r\n walkDistance: 'Walk Distance',\r\n rideDistance: 'Ride Distance',\r\n longestKill: 'Longest Kill',\r\n timeSurvived: 'Time Survived',\r\n killStreaks: 'Kill Streaks',\r\n heals: 'Heals',\r\n boosts: 'Boosts',\r\n vehicleDestroys: 'Vehicle Destroys',\r\n}\r\n\r\n// Players statistics texts\r\nexport const TOP_PLAYER_STATISTICS = {\r\n kills: 'Top Kill Leaders',\r\n assists: 'Top Assisters',\r\n damageDealt: 'Top Damage Dealers',\r\n damageTaken: 'Most Damage Taken',\r\n dbnos: 'Top Knockers',\r\n revives: 'Top Revivers',\r\n headshotKills: 'Top Headshot Killers',\r\n killSteals: 'Top Kill Stealers',\r\n killsStolenFrom: 'Most Kills Stolen From Players',\r\n swimDistance: 'Top Swimmers',\r\n walkDistance: 'Top Walkers',\r\n rideDistance: 'Top Drivers',\r\n longestKill: 'Longest Kill Leaders',\r\n timeSurvived: 'Time Survived',\r\n killStreaks: 'Kill Streaks',\r\n heals: 'Heals',\r\n boosts: 'Boosts',\r\n vehicleDestroys: 'Vehicle Destroys',\r\n}\r\n\r\n// Head To Head constants\r\nexport const HEAD_TO_HEAD_TEAM_TYPE = 'teams';\r\nexport const HEAD_TO_HEAD_PLAYER_TYPE = 'players';\r\n\r\n// Head to head details\r\nexport const HEAD_TO_HEAD_TEAM_DETAILS = {\r\n kills: 'Total Kills',\r\n damageDealt: 'Total Damage Dealt',\r\n avgRank: 'Average Placement',\r\n avgPoints: 'Average Points'\r\n}\r\nexport const HEAD_TO_HEAD_PLAYER_DETAILS = {\r\n kills: 'Kills',\r\n damageDealt: 'Damage Dealt',\r\n assists: 'Assists',\r\n dbnos: 'Knocks'\r\n}\r\n\r\n// PUBG game modes\r\nexport const PUBG_GAME_MODES = [\r\n 'esports-squad-fpp',\r\n 'esports-squad-tpp',\r\n 'esports-duo-fpp',\r\n 'esports-duo-tpp',\r\n 'esports-solo-fpp',\r\n 'esports-solo-tpp',\r\n 'squad-fpp',\r\n 'duo-fpp',\r\n 'solo-fpp',\r\n 'normal-squad-fpp',\r\n 'normal-duo-fpp',\r\n 'normal-solo-fpp'\r\n];\r\nexport const PUBG_DEFAULT_GAME_MODE = 'esports-squad-fpp';\r\nexport const PUBG_SERVERS = ['live', 'event'];\r\nexport const PUBG_DEFAULT_SERVER = 'live';\r\n\r\n// PUBG Console platforms\r\nexport const PUBGC_XBOX = 'xbox';\r\nexport const PUBGC_PSN = 'psn';\r\nexport const PUBGC_PLATFORMS = [PUBGC_XBOX, PUBGC_PSN];\r\n\r\n// Stage filter types (match means that filter will not be shown on leaderboard page but only on matches page)\r\nexport const STAGE_FILTER_TYPE_ALL = 'all';\r\nexport const STAGE_FILTER_TYPE_MATCH = 'match';\r\nexport const STAGE_FILTER_TYPE_HIDDEN = 'hidden';\r\nexport const STAGE_FILTER_TYPE_OVERALL = 'overall';\r\n\r\nexport const PUBG_SUPER20_RULESET = 'super20';\r\nexport const PUBG_SUPER22_RULESET = 'super22';\r\nexport const PUBG_SUPER21_RULESET = 'super21';\r\nexport const PUBG_WWCD_RULESET = 'wwcd';\r\nexport const PUBG_SMASH_RULESET = 'smash';\r\n// Rulesets that can be used for PUBG for scoring\r\nexport const PUBG_RULESETS = {\r\n [PUBG_SUPER22_RULESET]: 'SUPER 22',\r\n [PUBG_SUPER20_RULESET]: 'SUPER',\r\n [PUBG_WWCD_RULESET]: 'WWCD',\r\n [PUBG_SUPER21_RULESET]: 'MC',\r\n [PUBG_SMASH_RULESET]: 'SMASH (Beta)',\r\n}\r\n\r\nexport const PUBG_DEFAULT_RULESET = PUBG_SUPER22_RULESET;","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#F2AA04\",\"primaryLight\":\"#FEC33E\",\"primaryShadow\":\"rgba(239,168,40,0.4)\",\"primaryGlow\":\"#FEC33E\",\"secondary\":\"#fff\",\"tertiary\":\"#1C1D22\",\"tertiaryDark\":\"#161719\",\"tertiaryTransparent\":\"rgba(28,29,34,0.847059)\",\"warning\":\"#F28204\",\"danger\":\"#F4512D\",\"success\":\"#209191\",\"info\":\"#989AA2\",\"infoDark\":\"#5B6073\",\"transparent\":\"rgba(0,0,0,0)\",\"background\":\"#1C1D22\",\"font\":\"#fff\",\"balkanBlue\":\"#0587cd\",\"green303\":\"#0bba93\",\"pslColor\":\"#0064ff\",\"pcsColor\":\"#0185c8\",\"baeColor\":\"#ee2c43\",\"aelBlue\":\"#43dae9\",\"aelGreen\":\"#69fca2\",\"sdpPrimary\":\"#190d38\",\"sdpSecondary\":\"#190d38\"};","import { isInt } from '../../util/CommonUtil';\r\nimport { OPTS_OVERALL_STATS, OPTS_SUBSCRIPTION } from '../../views/Components/constants';\r\nimport { \r\n REQUEST_CREATE_COMPONENT,\r\n REQUEST_CHANGE_COMPONENT,\r\n REQUEST_CHANGE_COMPONENT_WITH_VALIDATION,\r\n REQUEST_REMOVE_COMPONENT,\r\n SUBSCRIBE_TO_CHANGE_COMPONENT,\r\n REQUEST_SHARD_INFO_CHANGE_COMPONENT,\r\n REQUEST_CREATE_COMPONENTS_BULK,\r\n REQUEST_REMOVE_ALL_COMPONENT,\r\n SET_COMPONENT_STATE,\r\n SET_COMPONENT_DATA,\r\n} from './types';\r\n\r\n/**\r\n * Action for requesting create component\r\n */\r\nexport const requestCreateComponent = (component, shard, shardInfo, game) => ({\r\n type: REQUEST_CREATE_COMPONENT,\r\n payload: {\r\n component: component,\r\n shard: shard,\r\n args: {\r\n type: component.type,\r\n shardInfo: component.useOnlyShard ? shard : shardInfo,\r\n match: null,\r\n game: game,\r\n },\r\n }\r\n});\r\n\r\n/**\r\n * Action for requesting create components in bulk\r\n */\r\nexport const requestCreateComponentsBulk = (components, shard, shardInfo, game) => {\r\n const componentsToCreate = {...components};\r\n Object.keys(componentsToCreate).forEach(c => {\r\n if (componentsToCreate[c].skipOnCreateBulk) {\r\n delete componentsToCreate[c];\r\n }\r\n })\r\n return {\r\n type: REQUEST_CREATE_COMPONENTS_BULK,\r\n payload: {\r\n components: componentsToCreate,\r\n shard: shard,\r\n args: Object.keys(componentsToCreate).map(k => {\r\n const c = componentsToCreate[k];\r\n return {\r\n type: c.type,\r\n shardInfo: shardInfo,\r\n match: null,\r\n game: game,\r\n };\r\n }),\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Action for requesting change component\r\n */\r\nexport const requestChangeComponent = (component, changes) => ({\r\n type: REQUEST_CHANGE_COMPONENT,\r\n payload: {\r\n component: component,\r\n state: changes.state,\r\n componentParameters: {\r\n show: changes.show !== null ? changes.show : component.show,\r\n name: changes.name ? changes.name : component.name,\r\n opts: JSON.stringify({ \r\n ...component.opts, \r\n ...mapStateToOpts({ ...component.state, ...changes.state }, component.stateOptsMapping), \r\n selectedSpecificMatch: isInt((changes.state && changes.state.match) || (component.state && component.state.match)) \r\n || ((changes.state && changes.state.overall === false) || (component.state && component.state.overall === false))\r\n }),\r\n args: component.fixArgs ? null : { ...component.args, ...changes.args },\r\n ...mapAdditionalParameters(changes, component.additionalParameters),\r\n },\r\n }\r\n});\r\n\r\n/**\r\n * Action for requesting change component with state validation\r\n */\r\nexport const requestChangeComponentWithValidation = (component, changes) => ({\r\n type: REQUEST_CHANGE_COMPONENT_WITH_VALIDATION,\r\n payload: {\r\n component: component,\r\n changes: changes,\r\n }\r\n});\r\n\r\n/**\r\n * Action for subscribing to change component\r\n */\r\nexport const subscribeToChangeComponent = (component, callback) => ({\r\n type: SUBSCRIBE_TO_CHANGE_COMPONENT,\r\n payload: {\r\n component: component,\r\n callback: callback,\r\n },\r\n});\r\n\r\n/**\r\n * Action for requesting remove of the component\r\n */\r\nexport const requestRemoveComponent = (component) => ({\r\n type: REQUEST_REMOVE_COMPONENT,\r\n payload: component,\r\n});\r\n\r\n/**\r\n * Action for requesting remove of the component\r\n */\r\nexport const requestRemoveAllComponent = () => ({\r\n type: REQUEST_REMOVE_ALL_COMPONENT,\r\n});\r\n\r\n/**\r\n * Action for requesting change of shard info component\r\n */\r\nexport const requestShardInfoChangeComponent = (shardInfo) => ({\r\n type: REQUEST_SHARD_INFO_CHANGE_COMPONENT,\r\n payload: shardInfo,\r\n});\r\n\r\n/**\r\n * Action for setting the state of the component\r\n */\r\nexport const setComponentState = (component, state) => ({\r\n type: SET_COMPONENT_STATE,\r\n payload: {\r\n component: component,\r\n state: state,\r\n },\r\n});\r\n\r\n/**\r\n * Action for setting the data of the component\r\n */\r\nexport const setComponentData = (component, data) => ({\r\n type: SET_COMPONENT_DATA,\r\n payload: {\r\n component: component,\r\n data: data,\r\n },\r\n});\r\n\r\n/**\r\n * Mapps component state to opts according to mapping rules\r\n * \r\n * @param {*} state \r\n * @param {*} stateOptsMapping \r\n */\r\nfunction mapStateToOpts(state, stateOptsMapping) {\r\n const opts = {};\r\n Object.keys(state || {}).forEach(key => {\r\n if (stateOptsMapping[key]) {\r\n opts[stateOptsMapping[key]] = state[key];\r\n }\r\n });\r\n // FIX ME: set default values somehow\r\n if (!opts[OPTS_SUBSCRIPTION] && stateOptsMapping[OPTS_SUBSCRIPTION]) opts[OPTS_SUBSCRIPTION] = false;\r\n if (opts[OPTS_OVERALL_STATS] === undefined && stateOptsMapping[OPTS_OVERALL_STATS]) opts[OPTS_OVERALL_STATS] = true;\r\n return opts;\r\n}\r\n\r\n/**\r\n * Mapps component's additional parameters from changes into object\r\n * \r\n * @param {*} changes \r\n * @param {*} additionalParameters \r\n */\r\nfunction mapAdditionalParameters(changes, additionalParameters) {\r\n if (!additionalParameters) return null;\r\n\r\n const parameters = {};\r\n Object.keys(changes || {}).forEach(key => {\r\n if (changes[key] || additionalParameters.includes(key)) {\r\n parameters[key] = changes[key];\r\n }\r\n });\r\n return parameters;\r\n}","/**\r\n * ONLY COMPONENTS THAT SUPPORT LIVE DATA CAN HAVE 'LIVE' IN TYPE\r\n */\r\n\r\n// Component types constants\r\nexport const PLAYER_STATS_COMPONENT_TYPE = 'player-stats';\r\nexport const PLAYER_LEADERBOARD_COMPONENT_TYPE = 'player-leaderboard';\r\nexport const PLAYER_HEAD_TO_HEAD_COMPONENT_TYPE = 'player-head-to-head';\r\nexport const TEAM_STATS_COMPONENT_TYPE = 'team-stats';\r\nexport const TEAM_LEADERBOARD_COMPONENT_TYPE = 'team-leaderboard';\r\nexport const LIVE_TEAM_LEADERBOARD_COMPONENT_TYPE = 'live-team-leaderboard';\r\nexport const LIVE_SURVIVAL_LEADERBOARD_COMPONENT_TYPE = 'live-survival-leaderboard';\r\nexport const LIVE_MAP_TEAMS_COMPONENT_TYPE = 'live-map-teams';\r\nexport const LIVE_TEAM_STATS_COMPONENT_TYPE = 'live-team-stats';\r\nexport const LIVE_PLAYER_STATS_COMPONENT_TYPE = 'live-player-stats';\r\nexport const LIVE_PLAYER_KILLS_COMPONENT_TYPE = 'live-player-kills';\r\nexport const LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_TYPE = 'live-player-kills-damage';\r\nexport const LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_TYPE = 'live-team-head-to-head';\r\nexport const LIVE_PLAYER_LEADERBOARD_COMPONENT_TYPE = 'live-player-leaderboard';\r\nexport const TEAM_HEAD_TO_HEAD_COMPONENT_TYPE = 'team-head-to-head';\r\nexport const CURRENT_MATCH_COMPONENT_TYPE = 'current-match';\r\nexport const TODAYS_WINNERS_COMPONENT_TYPE = 'todays-winners';\r\nexport const SCOREBOARD_COMPONENT_TYPE = 'scoreboard';\r\nexport const MAP_VETO_COMPONENT_TYPE = 'map-veto';\r\n\r\n// Component names constants\r\nexport const PLAYER_STATS_COMPONENT_NAME = 'Player Stats';\r\nexport const PLAYER_LEADERBOARD_COMPONENT_NAME = 'Player Leaderboard';\r\nexport const PLAYER_HEAD_TO_HEAD_COMPONENT_NAME = 'Player Head To Head';\r\nexport const TEAM_STATS_COMPONENT_NAME = 'Team Stats';\r\nexport const TEAM_LEADERBOARD_COMPONENT_NAME = 'Team Leaderboard';\r\nexport const LIVE_TEAM_LEADERBOARD_COMPONENT_NAME = 'Live Team Leaderboard';\r\nexport const LIVE_SURVIVAL_LEADERBOARD_COMPONENT_NAME = 'Live Survival Leaderboard';\r\nexport const LIVE_MAP_TEAMS_COMPONENT_NAME = 'Live Map Teams';\r\nexport const LIVE_TEAM_STATS_COMPONENT_NAME = 'Live Team Stats';\r\nexport const LIVE_PLAYER_STATS_COMPONENT_NAME = 'Live Player Stats';\r\nexport const LIVE_PLAYER_KILLS_COMPONENT_NAME = 'Live Player Kills';\r\nexport const LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_NAME = 'Live Player Kills & Damage';\r\nexport const LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_NAME = 'Live Team Head To Head';\r\nexport const LIVE_PLAYER_LEADERBOARD_COMPONENT_NAME = 'Live Player Leaderboard';\r\nexport const TEAM_HEAD_TO_HEAD_COMPONENT_NAME = 'Team Head To Head';\r\nexport const CURRENT_MATCH_COMPONENT_NAME = 'Current Match';\r\nexport const TODAYS_WINNERS_COMPONENT_NAME = 'Todays Winners';\r\nexport const SCOREBOARD_COMPONENT_NAME = 'Scoreboard';\r\nexport const MAP_VETO_COMPONENT_NAME = 'Map Veto';\r\n\r\n// Component state variables\r\nexport const COMPONENT_STATE_STATS = 'stats';\r\nexport const COMPONENT_STATE_MATCH = 'match';\r\nexport const COMPONENT_STATE_TEAM = 'team';\r\nexport const COMPONENT_STATE_PLAYER = 'player';\r\nexport const COMPONENT_STATE_LEFT_TEAM = 'leftTeam';\r\nexport const COMPONENT_STATE_RIGHT_TEAM = 'rightTeam';\r\nexport const COMPONENT_STATE_LEFT_PLAYER = 'leftPlayer';\r\nexport const COMPONENT_STATE_RIGHT_PLAYER = 'rightPlayer';\r\nexport const COMPONENT_STATE_MAPS = 'maps';\r\nexport const COMPONENT_STATE_RULE = 'rule';\r\nexport const COMPONENT_STATE_MAP_ROTATION = 'mapRotation';\r\nexport const COMPONENT_STATE_START_TIME = 'startTime';\r\nexport const COMPONENT_STATE_TIME_BETWEEN_MATCHES = 'timeBetweenMatches';\r\nexport const COMPONENT_STATE_SUBSCRIPTION = 'subscription';\r\nexport const COMPONENT_STATE_OVERALL_STATS = 'overall';\r\nexport const COMPONENT_STATE_OVERLAY_TYPE = 'overlayType';\r\nexport const COMPONENT_STATE_GREEN_BACKGROUND = 'greenBackground';\r\n\r\n// Opts state variables\r\nexport const OPTS_ID = 'id';\r\nexport const OPTS_STATS = 'stats';\r\nexport const OPTS_HEAD_TO_HEAD_LEFT = 'leftId';\r\nexport const OPTS_HEAD_TO_HEAD_RIGHT = 'rightId';\r\nexport const OPTS_MAPS = 'maps';\r\nexport const OPTS_RULE = 'rule';\r\nexport const OPTS_OTHER_OPTS = 'other_opts';\r\nexport const OPTS_SUBSCRIPTION = 'subscription';\r\nexport const OPTS_OVERALL_STATS = 'overall';\r\nexport const OPTS_OVERLAY_TYPE = 'overlayType';\r\nexport const OPTS_GREEN_BACKGROUND = 'greenBackground';\r\n\r\n// Default values for state\r\nexport const CURRENT_MATCH_DATA = 'current';\r\nexport const OVERALL_DATA = 'overall';\r\nexport const OVERLAY_TYPE_FULL_SCREEN = 'full-screen';\r\nexport const OVERLAY_TYPE_CARD = 'card';\r\nexport const OVERLAY_TYPE_MVP = 'mvp';\r\nexport const DEFAULT_STATE_VALUES = {\r\n [COMPONENT_STATE_OVERALL_STATS]: true,\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: false,\r\n}\r\n\r\n// Player stats component state to opts mapping\r\nexport const PLAYER_STATS_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n [COMPONENT_STATE_PLAYER]: OPTS_ID,\r\n [COMPONENT_STATE_STATS]: OPTS_STATS,\r\n // Info used to retain state between different dashboard instances\r\n [COMPONENT_STATE_TEAM]: COMPONENT_STATE_TEAM,\r\n [COMPONENT_STATE_OVERLAY_TYPE]: OPTS_OVERLAY_TYPE,\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Player leadeboard component state to opts mapping\r\nexport const PLAYER_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n [COMPONENT_STATE_STATS]: OPTS_STATS,\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Team stats component state to opts mapping\r\nexport const TEAM_STATS_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n [COMPONENT_STATE_TEAM]: OPTS_ID,\r\n [COMPONENT_STATE_STATS]: OPTS_STATS,\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Team leadeboard component state to opts mapping\r\nexport const TEAM_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Live Team leadeboard component state to opts mapping\r\nexport const LIVE_TEAM_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n [COMPONENT_STATE_SUBSCRIPTION]: OPTS_SUBSCRIPTION,\r\n [COMPONENT_STATE_OVERALL_STATS]: OPTS_OVERALL_STATS,\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Live Survival leadeboard component state to opts mapping\r\nexport const LIVE_SURVIVAL_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n [COMPONENT_STATE_SUBSCRIPTION]: OPTS_SUBSCRIPTION,\r\n [COMPONENT_STATE_OVERALL_STATS]: OPTS_OVERALL_STATS,\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Live Map Teams component state to opts mapping\r\nexport const LIVE_MAP_TEAMS_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n [COMPONENT_STATE_SUBSCRIPTION]: OPTS_SUBSCRIPTION,\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Live Team Stats component state to opts mapping\r\nexport const LIVE_TEAM_STATS_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n [COMPONENT_STATE_SUBSCRIPTION]: OPTS_SUBSCRIPTION,\r\n [COMPONENT_STATE_TEAM]: OPTS_ID,\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Live Player Stats component state to opts mapping\r\nexport const LIVE_PLAYER_STATS_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n [COMPONENT_STATE_SUBSCRIPTION]: OPTS_SUBSCRIPTION,\r\n [COMPONENT_STATE_PLAYER]: OPTS_ID,\r\n [COMPONENT_STATE_TEAM]: COMPONENT_STATE_TEAM,\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Live Player Kills component state to opts mapping\r\nexport const LIVE_PLAYER_KILLS_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n [COMPONENT_STATE_SUBSCRIPTION]: OPTS_SUBSCRIPTION,\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Live Player Kills and Damage component state to opts mapping\r\nexport const LIVE_PLAYER_KILLS_DAMAGE_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n [COMPONENT_STATE_SUBSCRIPTION]: OPTS_SUBSCRIPTION,\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Head to head component state to opts mapping\r\nexport const LIVE_TEAM_HEAD_TO_HEAD_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n [COMPONENT_STATE_SUBSCRIPTION]: OPTS_SUBSCRIPTION,\r\n [COMPONENT_STATE_LEFT_TEAM]: OPTS_HEAD_TO_HEAD_LEFT,\r\n [COMPONENT_STATE_RIGHT_TEAM]: OPTS_HEAD_TO_HEAD_RIGHT,\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Player leadeboard component state to opts mapping\r\nexport const LIVE_PLAYER_LEADERBOARD_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n [COMPONENT_STATE_SUBSCRIPTION]: OPTS_SUBSCRIPTION,\r\n [COMPONENT_STATE_STATS]: OPTS_STATS,\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Head to head component state to opts mapping\r\nexport const TEAM_HEAD_TO_HEAD_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n [COMPONENT_STATE_LEFT_TEAM]: OPTS_HEAD_TO_HEAD_LEFT,\r\n [COMPONENT_STATE_RIGHT_TEAM]: OPTS_HEAD_TO_HEAD_RIGHT,\r\n [COMPONENT_STATE_STATS]: OPTS_STATS,\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\nexport const PLAYER_HEAD_TO_HEAD_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n [COMPONENT_STATE_LEFT_PLAYER]: OPTS_HEAD_TO_HEAD_LEFT,\r\n [COMPONENT_STATE_RIGHT_PLAYER]: OPTS_HEAD_TO_HEAD_RIGHT,\r\n [COMPONENT_STATE_STATS]: OPTS_STATS,\r\n // Info used to retain state between different dashboard instances\r\n [COMPONENT_STATE_LEFT_TEAM]: COMPONENT_STATE_LEFT_TEAM,\r\n [COMPONENT_STATE_RIGHT_TEAM]: COMPONENT_STATE_RIGHT_TEAM,\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Current match component state to opts mapping\r\nexport const CURRENT_MATCH_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Todays Winners component state to opts mapping\r\nexport const TODAYS_WINNERS_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n [COMPONENT_STATE_MAP_ROTATION]: COMPONENT_STATE_MAP_ROTATION,\r\n [COMPONENT_STATE_START_TIME]: COMPONENT_STATE_START_TIME,\r\n [COMPONENT_STATE_TIME_BETWEEN_MATCHES]: COMPONENT_STATE_TIME_BETWEEN_MATCHES,\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Scoreboard state to opts mapping\r\nexport const SCOREBOARD_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n [COMPONENT_STATE_LEFT_TEAM]: OPTS_HEAD_TO_HEAD_LEFT,\r\n [COMPONENT_STATE_RIGHT_TEAM]: OPTS_HEAD_TO_HEAD_RIGHT,\r\n [COMPONENT_STATE_STATS]: OPTS_STATS,\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Map veto state to opts mapping\r\nexport const MAP_VETO_COMPONENT_STATE_TO_OPTS_MAPPING = {\r\n [COMPONENT_STATE_MAPS]: OPTS_MAPS,\r\n [COMPONENT_STATE_RULE]: OPTS_RULE,\r\n [COMPONENT_STATE_LEFT_TEAM]: OPTS_HEAD_TO_HEAD_LEFT,\r\n [COMPONENT_STATE_RIGHT_TEAM]: OPTS_HEAD_TO_HEAD_RIGHT,\r\n // Green background\r\n [COMPONENT_STATE_GREEN_BACKGROUND]: OPTS_GREEN_BACKGROUND,\r\n};\r\n\r\n// Map veto statuses\r\nexport const MAP_VETO_STATUS_PICK_MAP = 'pick-map';\r\nexport const MAP_VETO_STATUS_BAN_MAP = 'ban-map';\r\nexport const MAP_VETO_STATUS_PICK_SIDE = 'pick-side';\r\nexport const MAP_VETO_STATUS_WAIT = 'wait';\r\nexport const MAP_VETO_STATUS_TO_STRING_MAPPING = {\r\n [MAP_VETO_STATUS_PICK_MAP]: 'Pick a map',\r\n [MAP_VETO_STATUS_BAN_MAP]: 'Ban a map',\r\n [MAP_VETO_STATUS_PICK_SIDE]: 'Pick a starting side',\r\n [MAP_VETO_STATUS_WAIT]: 'Wait for the opponent team',\r\n}\r\n\r\n// Map veto sides\r\nexport const MAP_VETO_SIDE_ATTACKERS = 'attackers';\r\nexport const MAP_VETO_SIDE_DEFENDERS = 'defenders';\r\nexport const MAP_VETO_SIDE_COLORS = {\r\n [MAP_VETO_SIDE_DEFENDERS]: '#00ffb9',\r\n [MAP_VETO_SIDE_ATTACKERS]: '#ff4655',\r\n};\r\nexport const MAP_VETO_SIDE_MAPPING = {\r\n left: MAP_VETO_SIDE_ATTACKERS,\r\n right: MAP_VETO_SIDE_DEFENDERS,\r\n};\r\n\r\n// Additional component parameters\r\nexport const MAP_VETO_VETO_STATUS = 'vetoStatus';","import { \r\n CLOSE_MODAL,\r\n OPEN_MODAL,\r\n} from './types';\r\n\r\n/**\r\n * Action for opening modal\r\n */\r\nexport const openModal = (title, content, onConfirm) => ({\r\n type: OPEN_MODAL,\r\n payload: {\r\n title: title,\r\n content: content,\r\n onConfirm: onConfirm,\r\n }\r\n});\r\n\r\n/**\r\n * Action for opening modal\r\n */\r\nexport const closeModal = () => ({\r\n type: CLOSE_MODAL,\r\n});","// Types of action for authenticated user\r\nexport const SET_AUTH_USER = 'SET_AUTH_USER';\r\nexport const UNSET_AUTH_USER = 'UNSET_AUTH_USER';\r\n// Login action\r\nexport const REQUEST_LOGIN = 'REQUEST_LOGIN';\r\n// Get logged in user\r\nexport const REQUEST_LOGGED_IN_USER = 'REQUEST_LOGGED_IN_USER';\r\n// Request tournament organizer token\r\nexport const REQUEST_TOURNAMENT_ORGANIZER_TOKEN = 'REQUEST_TOURNAMENT_ORGANIZER_TOKEN';\r\nexport const REQUEST_TOURNAMENT_ORGANIZER_TOKEN_SUCCESS = 'REQUEST_TOURNAMENT_ORGANIZER_TOKEN_SUCCESS';\r\n// Get user subscription action\r\nexport const REQUEST_USER_SUBSCRIPTION = 'REQUEST_USER_SUBSCRIPTION';\r\nexport const REQUEST_USER_SUBSCRIPTION_PENDING = 'REQUEST_USER_SUBSCRIPTION_PENDING';\r\nexport const REQUEST_USER_SUBSCRIPTION_SUCCESS = 'REQUEST_USER_SUBSCRIPTION_SUCCESS';\r\nexport const REQUEST_USER_SUBSCRIPTION_ERROR = 'REQUEST_USER_SUBSCRIPTION_ERROR';","// Action for requesting team ready\r\nexport const REQUEST_TEAM_READY = 'REQUEST_TEAM_READY';\r\nexport const REQUEST_TEAM_READY_PENDING = 'REQUEST_TEAM_READY_PENDING';\r\nexport const REQUEST_TEAM_READY_SUCCESS = 'REQUEST_TEAM_READY_SUCCESS';\r\nexport const REQUEST_TEAM_READY_ERROR = 'REQUEST_TEAM_READY_ERROR';\r\n// Action for requesting subscription to map veto data\r\nexport const SUBSCRIBE_TO_MAP_VETO_DATA = 'SUBSCRIBE_TO_MAP_VETO_DATA';\r\nexport const SUBSCRIBE_TO_MAP_VETO_DATA_PENDING = 'SUBSCRIBE_TO_MAP_VETO_DATA_PENDING';\r\nexport const SUBSCRIBE_TO_MAP_VETO_DATA_SUCCESS = 'SUBSCRIBE_TO_MAP_VETO_DATA_SUCCESS';\r\nexport const SUBSCRIBE_TO_MAP_VETO_DATA_ERROR = 'SUBSCRIBE_TO_MAP_VETO_DATA_ERROR';\r\n// Action for requesting pick\r\nexport const REQUEST_MAP_VETO_PICK = 'REQUEST_MAP_VETO_PICK';\r\nexport const REQUEST_MAP_VETO_PICK_PENDING = 'REQUEST_MAP_VETO_PICK_PENDING';\r\nexport const REQUEST_MAP_VETO_PICK_SUCCESS = 'REQUEST_MAP_VETO_PICK_SUCCESS';\r\nexport const REQUEST_MAP_VETO_PICK_ERROR = 'REQUEST_MAP_VETO_PICK_ERROR';\r\n// Action for receiving map veto data\r\nexport const SET_MAP_VETO_DATA = 'SET_MAP_VETO_DATA';"],"sourceRoot":""}