{"version":3,"sources":["common/history.js","common/store.js","common/storeKeys.js","icons/TrafficLight.svg","common/connect.jsx","common/components/Loader/Loader.jsx","common/helpers/modalHelper.js","common/components/CustomModal/CustomModal.jsx","common/components/CustomModal/Modal/ModalFrame.jsx","icons/Discord.svg","common/components/Discord/Discord.jsx","common/components/Modals/ErrorModal/ErrorModal.jsx","common/components/Modals/EmailUsernameChangePrompt/EmailUsernameChangePrompt.jsx","common/components/Modals/UsernameChangePrompt/UsernameChangePrompt.jsx","common/constants/StorageKeys.js","common/constants/Games.js","styles/Colors.js","common/components/Modals/RegisterModal/api.js","common/components/Modals/RegisterModal/RegisterModal.jsx","common/components/Modals/LoginModal/api.js","common/components/Modals/LoginModal/LoginModal.jsx","common/userManager.jsx","services/AuthService.js","common/axiosWrapper.jsx","common/helpers/settingsHelper.js","icons/PickstopLogoNew.svg","components/Layout/styles.js","services/UserService.js","common/components/UserCard.jsx","common/helpers/dateHelper.js","common/constants/TrophyTypes.js","components/screens/TrophyRoom/AwardSummary.jsx","services/TrophyService.js","common/components/TrophyList/TrophyList.jsx","common/components/Modals/TrophySelectorModal/TrophySelectorModal.jsx","common/components/HtmlTooltip/HtmlTooltip.jsx","common/components/TrophyCase/TrophyCase.jsx","common/types/NameplateStyle.js","common/components/Modals/NameplateSelectorModal/NameplateSelectorModal.jsx","common/helpers/styleHelper.js","services/NameplateService.js","services/LookupService.js","icons/Trophy.svg","common/components/Modals/UserProfileModal/api.js","common/components/Modals/UserProfileModal/UserProfileModal.jsx","common/helpers/userProfileModalHelper.js","services/NotificationService.js","common/constants/NotificationClickAction.js","common/constants/Routes.js","icons/Pick.svg","icons/Crown.svg","components/Layout/useTabList.js","components/Layout/useTabSelect.js","components/Layout/TopIconMenu.jsx","components/Layout/NavMenu.js","components/Layout/BottomIconMenu.jsx","common/helpers/componentHelper.js","components/Layout.js","common/components/NavCard/NavCard.jsx","components/screens/Admin/AdminScreen.jsx","components/screens/Admin/EventAnalytics/EventAnalytics.jsx","services/EventBuilderService.js","common/constants/RewardTypes.js","services/EventFormatService.js","components/screens/Admin/EventCreator/EventCreator.jsx","common/constants/EventStageTypes.js","common/helpers/eventFormatHelper.js","bracket-system/utils/string.js","bracket-system/core/match-functions.tsx","bracket-system/core/calculate-svg-dimensions.ts","bracket-system/core/match-context.jsx","bracket-system/settings.js","bracket-system/themes/themes.ts","bracket-system/core/match-states.ts","bracket-system/core/match-wrapper.tsx","bracket-system/bracket-double/calculate-match-position.tsx","bracket-system/hooks/use-match-highlight.tsx","bracket-system/components/connector.tsx","bracket-system/bracket-double/upper-connectors.tsx","bracket-system/components/upper-round-header.tsx","bracket-system/bracket-double/upper-bracket.tsx","bracket-system/bracket-double/lower-connectors.tsx","bracket-system/components/lower-round-header.tsx","bracket-system/bracket-double/lower-bracket.tsx","bracket-system/bracket-double/final-connectors.tsx","bracket-system/components/final-round-header.tsx","bracket-system/bracket-double/final-game.tsx","bracket-system/bracket-double/extra-final-connectors.tsx","bracket-system/bracket-double/extra-final.tsx","bracket-system/bracket-double/double-elim-bracket.tsx","bracket-system/components/match/styles.tsx","bracket-system/components/match/index.tsx","common/components/Collapse/Collapse.jsx","common/components/ScorePillDetails/ScorePillDetails.jsx","common/components/Modals/ScorePillModal/ScorePillModal.jsx","react-svg-pan-zoom/constants.js","react-svg-pan-zoom/features/common.js","react-svg-pan-zoom/events/viewer-event.js","react-svg-pan-zoom/features/pan.js","react-svg-pan-zoom/utils/calculateBox.js","react-svg-pan-zoom/features/zoom.js","react-svg-pan-zoom/utils/mapRange.js","react-svg-pan-zoom/features/interactions.js","react-svg-pan-zoom/events/viewer-mouse-event.js","react-svg-pan-zoom/events/viewer-touch-event.js","react-svg-pan-zoom/utils/parseViewBox.js","react-svg-pan-zoom/features/interactions-touch.js","react-svg-pan-zoom/features/miniature.js","react-svg-pan-zoom/ui/cursor-polyfill.js","react-svg-pan-zoom/utils/RandomUID.js","react-svg-pan-zoom/utils/getDisplayName.js","react-svg-pan-zoom/ui/border-gradient.js","react-svg-pan-zoom/ui/selection.jsx","react-svg-pan-zoom/ui-toolbar/icon-cursor.jsx","react-svg-pan-zoom/ui-toolbar/icon-pan.jsx","react-svg-pan-zoom/ui-toolbar/icon-zoom-in.jsx","react-svg-pan-zoom/ui-toolbar/icon-zoom-out.jsx","react-svg-pan-zoom/ui-toolbar/icon-fit.jsx","react-svg-pan-zoom/ui-toolbar/toolbar-button.jsx","react-svg-pan-zoom/ui-toolbar/toolbar.jsx","react-svg-pan-zoom/ui-miniature/icon-arrow.jsx","react-svg-pan-zoom/ui-miniature/miniature-toggle-button.jsx","react-svg-pan-zoom/ui-miniature/miniature-mask.jsx","react-svg-pan-zoom/ui-miniature/miniature.jsx","react-svg-pan-zoom/viewer.js","react-svg-pan-zoom/events/event-factory.js","react-svg-pan-zoom/ui/detect-touch.js","react-svg-pan-zoom/uncontrolled-viewer.js","common/helpers/panZoomHelper.js","bracket-system/svg-viewer.jsx","common/helpers/bracketHelper.js","components/screens/Admin/EventFormatBuilder/EventFormatEditor/EventFormatBracketBuilder.jsx","common/helpers/arrayHelper.js","components/screens/Admin/EventFormatBuilder/EventFormatEditor/EventFormatDetails.jsx","components/screens/Admin/EventFormatBuilder/EventFormatEditor/EventFormatEditor.jsx","common/components/Modals/DeleteConfirmModal/DeleteConfirmModal.jsx","common/components/Modals/RecordInUseModal/RecordInUseModal.jsx","components/screens/Admin/EventFormatBuilder/EventFormatSelector.jsx","components/screens/Admin/EventFormatBuilder/EventFormatBuilder.jsx","common/components/Modals/AdminUserModal/AdminUserModal.jsx","components/screens/Admin/UserManager/UserManager.jsx","components/screens/Admin/NameplateEditor/NameplateEditor.jsx","services/EventService.js","common/constants/EventTypes.js","components/screens/Admin/PickData/PickData.jsx","components/screens/Authorization/PickUsername/PickUsernameScreen.jsx","components/screens/Authorization/ResetPassword/ResetPasswordScreen.jsx","components/screens/Authorization/SignIn/SignInDiscord.jsx","components/screens/Authorization/SignIn/api.js","components/screens/Authorization/SignIn/SignInGoogle.jsx","common/components/ContentHeader/ContentHeader.jsx","common/components/ContentPanel/ContentPanel.jsx","common/components/FatButton/FatButton.jsx","common/components/TabToggle/TabToggle.jsx","services/LeagueService.js","icons/Carot_Left.svg","icons/Carot_Right.svg","common/components/EventSelector/EventSelector.jsx","common/components/LeagueInfo/LeagueInfo.jsx","common/constants/LeagueViewType.js","common/helpers/leagueHelper.js","common/components/Modals/Leagues/LeagueNameplateSelectorModal.jsx","common/components/Modals/SuccessModal/SuccessModal.jsx","common/components/Modals/Leagues/CreateEditLeagueModal.jsx","common/components/Modals/Leagues/LeaveDeleteLeagueModal.jsx","common/components/Modals/Leagues/LeagueDetailsModal.jsx","common/components/LeagueNameplate/LeagueNameplate.jsx","icons/Green_Open_Lock.svg","icons/Orange_Lock.svg","common/components/Modals/Leagues/JoinLeagueModal.jsx","common/components/LeagueTable/LeagueTable.jsx","common/components/Modals/Leagues/SearchLeaguesModal.jsx","components/screens/Leagues/LeagueNavigator.jsx","icons/Analyst_2.svg","components/screens/Leagues/AnalystLeague.jsx","components/screens/Leagues/Leagues.jsx","icons/DiscordIcon.svg","icons/InstagramIcon.svg","icons/TwitterIcon.svg","common/components/Modals/SuccessFailModal/SuccessFailModal.jsx","common/components/Modals/AccountRequired/AccountRequired.jsx","common/picksHelper.jsx","common/constants/PickTypes.js","services/PickService.js","common/helpers/eventHelper/events/GenericEvent.js","common/helpers/eventHelper/events/BaseEvent.js","common/components/Modals/SurveyForPicksModal/OneTimeSurveyNotify.jsx","common/helpers/eventHelper/eventHelper.js","components/screens/GamePickemScreen.jsx","common/components/ScorePill/ScorePill.jsx","common/components/EventHeader/EventHeader.jsx","icons/ShowResults.svg","icons/HideResults.svg","icons/SubmittedAndCheck.svg","icons/EditYourPicks.svg","icons/BackToMyPicks.svg","icons/RedditIcon.svg","icons/ShareIcon.svg","common/components/EventFooter/EventFooter.jsx","common/components/TeamSelection/TeamSelection.jsx","common/components/NameplateButton.jsx","components/screens/EventRenderer/Brackets/BracketEditor.jsx","components/screens/EventRenderer/Brackets/BracketRenderer.jsx","common/components/GroupStageTeam/GroupStageTeam.jsx","common/components/Instructions/Instructions.jsx","common/components/PageIndicators/PageIndicators.jsx","components/screens/EventRenderer/SwissStage/SwissStageRenderer.jsx","components/screens/EventRenderer/GroupStage/GroupStageRenderer.jsx","common/components/Modals/SurveyForPicksModal/SurveyForPicksModal.jsx","components/screens/EventRenderer/StageSelector.jsx","components/screens/EventRenderer/EventRenderer.jsx","components/screens/PickemLeftPane/Content/PickemContent.jsx","common/components/Timer/Timer.jsx","common/helpers/realtime.js","common/components/Leaderboard/Leaderboard.jsx","components/screens/PickemLeftPane/LeftPane/PickemLeftPane.jsx","components/screens/RocketLeague.jsx","components/screens/TrophyRoom/AwardInfo.jsx","components/screens/TrophyRoom/AwardLeaders.jsx","components/screens/TrophyRoom/RecentAwards.jsx","components/screens/TrophyRoom/YourAwards.jsx","components/screens/TrophyRoom/TrophyRoom.jsx","common/components/Modals/RedeemCodeModal/RedeemCodeModal.jsx","components/screens/RedeemPromoCodeScreen.jsx","services/PromoService.js","components/screens/Admin/GiveTrophy/GiveTrophy.jsx","icons/PickstopLogoGGNew.svg","components/screens/LandingScreen.jsx","components/screens/Admin/AdminPickOverride/AdminPickOverride.jsx","components/screens/Authorization/SignIn/SignInReddit.jsx","components/screens/Authorization/Link/LinkDiscord.jsx","components/screens/Authorization/Link/api.js","components/screens/Authorization/Link/LinkGoogle.jsx","components/screens/Authorization/Link/LinkReddit.jsx","common/types/Survey/SurveyPromptDto.js","common/types/Survey/SurveyDto.js","services/SurveyService.js","components/screens/Admin/SurveyBuilder/SurveySelector.jsx","common/components/Paper/Paper.jsx","common/components/TileGroup/TileGroup.jsx","common/components/SurveyAnswerTile/SurveyAnswerTile.jsx","components/screens/Admin/SurveyBuilder/SurveyEditor.jsx","components/screens/Admin/SurveyBuilder/SurveyBuilder.jsx","components/screens/Survey/SurveyCompleteModal.jsx","components/screens/Survey/UserSurveyScreen.jsx","icons/ballot-box.svg","icons/medal-winner.svg","icons/polygon.svg","icons/quote-start.svg","icons/quote-end.svg","components/screens/AboutUsScreen.jsx","App.js","index.js"],"names":["history","createBrowserHistory","changeUrl","url","push","Store","constructor","subscribe","callback","keys","k","this","onChangeSubscriptions","unsubscribe","filter","cb","get","key","defaultValue","data","set","value","test","Object","Date","Array","isArray","notify","remove","isCaching","changed","setMany","obj","objKey","JSON","stringify","cacheChanges","applyChanges","promises","cacheKeys","length","callbacks","_","uniq","includes","StoreKeys","automapKeys","rootPath","keysObj","result","parse","relativePath","keyObj","ADMIN","GIVE_TROPHY","EVENTS","PICKS","BRACKET_PICKS","GROUP_PICKS","SURVEYS","ALL","CURRENT","EVENT","EVENTDATA","FORMAT","STAGE_INDEX","SUBSTAGE_INDEX","STEP","SELECTEDMATCH","USER","SCORE","BRACKET_USER","HAS_BRACKET","IS_EDITING","LEADERBOARD","OFFICIAL","SHOW_OFFICIAL","SHOW_PLAYERS","EVENTCREATOR","CREATE_DATA","EVENT_DATA","EVENT_FORMATS","GAMES","SELECTED_EVENT","UPCOMING_EVENTS","EVENTFORMATBUILDER","BINDING_MATCH","CURRENT_FORMAT","CURRENT_SCORING_GROUP","CURRENT_VIEW","IS_LOADING","LEAGUES","ANALYST","LEAGUE","RANKINGS","VIEW_TYPE","VIEWING","JOINED","LIMIT","NEW","POPULAR","NAV_VIEW_TYPE","LeftPane","Open","PastEventIds","PastEventIndex","ViewingPastEvents","LOADING_TEXT","LOGIN_PROVIDER","ROLES","LOADED","LOGGED_IN","ID","USERNAME","USERPROFILE","OPEN","SETTINGS","TROPHY_ROOM_ENABLED","SURVEY","NOTIFICATIONS","LIST","READ","_extends","assign","target","i","arguments","source","prototype","hasOwnProperty","call","apply","SvgTrafficLight","_ref","svgRef","title","props","createElement","viewBox","ref","cx","cy","r","transform","style","fill","paintOrder","ForwardRef","forwardRef","StateWrapper","React","super","onStateChange","unmounted","forceUpdate","bind","render","component","componentWillUnmount","connect","propKeys","isLoading","loadingText","useStyles","makeStyles","theme","loadingContainer","display","position","width","height","top","left","zIndex","backgroundColor","backdropFilter","header","color","palette","secondary","main","textAlign","center","margin","spinnerIcon","rotate","animation","LoadingComponentC","classNames","className","SetLoading","text","LoadingComponent","ModalHelper","Component","modal","onClose","listenForOpenCallback","modalStates","instance","state","ModalState","setState","listenForCloseCallback","currentModal","pop","last","open","map","element","cloneElement","hidden","CustomModal","e","closeModal","document","addEventListener","removeEventListener","onClick","children","ModalPanelTransparent","ModalPanel","Paper","variant","elevation","ModalHeader","Container","Box","ml","mr","IconModalHeader","icon","label","toUpperCase","ModalBody","ModalFooter","ModalDivider","my","Divider","_defs","_g","_text","_rect","_rect2","SvgDiscord","id","preserveAspectRatio","xlinkHref","stroke","strokeLinecap","strokeWidth","rx","x","y","fontSize","fontFamily","fontWeight","letterSpacing","button","cursor","opacity","Discord","window","ErrorModal","message","displayContactDiscord","EmailUsernameChangePrompt","handleYes","handleNo","UsernameChangePrompt","handleOk","LocalStorageKeys","SessionStorageKeys","GamesEnum","games","prefix","trophyImagePrefix","active","GetCurrentGameId","Number","sessionStorage","getItem","localStorage","GetCurrentGamePrefix","currentGameId","find","g","SetGameInStore","newGameId","setItem","Colors","provider","marginLeft","marginRight","paddingTop","paddingBottom","centered","errorMessage","RegisterModal","styles","username","setUsername","useState","usernameError","setUsernameError","password","setPassword","passwordError","setPasswordError","confirmPassword","setConfirmPassword","confirmPasswordError","setConfirmPasswordError","email","setEmail","emailError","setEmailError","discordUrl","setDiscordUrl","googleUrl","setGoogleUrl","redditUrl","setRedditUrl","useEffect","async","axiosWrapper","getCached","getDiscordUrl","then","getGoogleUrl","getRedditUrl","onSubmit","onSubmitClicked","event","preventDefault","validateForm","trim","UserManager","register","login","catch","error","mb","TextField","onChange","autoComplete","required","InputProps","startAdornment","InputAdornment","Person","Email","type","VpnKey","Button","Typography","Grid","container","direction","alignItems","justify","alignContent","spacing","item","xs","src","alt","location","replace","LoginModal","setErrorMessage","onLoginClicked","redirect","removeItem","reload","err","response","status","autoFocus","openModal","post","handlePostLogin","logout","pickstopUser","resetId","authenticationResult","getUserData","usernameIsEmail","usernameChangeAvailable","loginCallbacks","forEach","user","getCurrentUser","updates","roles","handleError","Error","cache","Map","config","getConfig","axios","has","Promise","resolve","clearCache","delete","headers","Game","SettingsHelper","loadingPromise","loadSettingsFromApi","settingName","settings","size","loading","rawSettings","setKeys","setting","parseValueToObject","name","storeKey","lowerCase","toLowerCase","isInteger","SvgPickstopLogoNew","d","fillRule","root","flexGrow","toolbar","minHeight","menu","navbar","bottomBar","bottom","logo","authButtons","usernameChip","userIcon","tabicons","float","marginTop","smallTabIcons","gameMenu","notification","bottomTabs","indicator","tabs","borderLeft","borderRight","tab","primary","whiteSpace","marginBottom","selected","disabled","UserService","userId","created","searchValue","roleIds","flagUsernameChange","analystParticipationGameId","createAnalystInfluencerLeague","updateCardCallbacks","borderRadius","border","boxSizing","flex","font","maxWidth","textOverflow","overflow","pinned","maxHeight","pinnedWrapper","UserCard","nameplateId","dontLoadData","userName","pinnedEventName","pinnedTrophyImagePath","overrideNameplateId","setOverrideNameplateId","userCardInfo","setUserCardInfo","updateNameplateId","getUserId","getUserCardInfo","userInfo","pinnedTrophy","pinnedTrophyName","pinnedTrophyImg","imagePath","pinnedTrophyEvent","eventName","uName","hasPinnedTrophy","userNameplateId","nameplateIdClassName","UserProfileModalHelper","openProfile","monthNames","toMonthNameAndYear","date","toString","month","getMonth","getFullYear","toMonthNameDayAndYear","day","getDate","toMMDDYYYY","monthInt","toMMDDYYYYWithHourMintues","hour","getHours","minute","getMinutes","TrophyTypes","tableContainer","justifyContent","tableRow","miniAward","materialBlock","gameIcon","AwardSummary","awards","showEmptyRows","hideIcons","gameAwards","a","gameId","diamondCount","trophyTypeId","platCount","goldCount","silverCount","bronzeCount","woodCount","iconUrl","TrophyService","trophyId","eventId","route","award","startRow","isNaN","fromTop","term","slot","trophyList","overflowY","borderColor","awardContainer","flexDirection","borderTopLeftRadius","borderTopRightRadius","backgroundClip","awardImage","TrophyList","customStyle","record","index","gradientColor","getGradientColor","background","TrophySelectorModal","exceptThese","except","onSelect","console","HtmlTooltip","withStyles","tooltip","typography","pxToRem","Tooltip","patreonLevel","editIcon","right","editIconInner","TrophyCase","slots","isCurrentUser","trophyCase","setTrophyCase","getUserTrophyCase","awardData","selectTrophyCaseSlot","slotId","closeAllModals","updateTrophyCase","editTrophySlot","from","tc","hasSlotAccess","EditOutlined","NameplateStyle","description","namePlateTypeId","pointer","textDecoration","descriptionContainer","maxHeight300","extraItems","NameplateSelectorModal","hideDefault","nameplates","defaultNameplate","renderNameplateChoice","nameplate","xl","wrap","StyleHelper","styleString","head","append","textContent","NameplateService","loadCachedNameplates","injectStyles","updateUserCardsWithNameplateId","styleText","replaceAll","addStyle","LookupService","_path","getPatreonLevels","SvgTrophy","enableBackground","topContainer","summary","detailSection","detailText","pinnedTrophyContainer","pinnedTrophyWrapper","flexWrap","pinnedAwardImage","pinnedAwardName","pinIcon","editIconDiagonal","divider","editNameplate","thirdPartyTable","padding","borderBotton","UserProfileModal","profile","setProfile","setAwards","setGames","pinnedAward","setPinnedAward","discordLinkUrl","setDiscordLinkUrl","googleLinkUrl","setGoogleLinkUrl","redditLinkUrl","setRedditLinkUrl","thirdPartyLinks","setThirdPartyLinks","setNameplates","setLoading","hasPinned","headerText","getUserProfile","getYourAwards","getGames","getUserNameplates","getDiscordLinkUrl","getGoogleLinkUrl","getRedditLinkUrl","getThirdPartyStatus","links","all","pinnedAwards","monthAndYear","selectPinnedTrophy","pinTrophy","editPinnedTrophy","selectNameplate","setNameplate","onLinkAccountClick","storeCurrentRoute","pathname","search","hexCode","fontStyle","NotificationService","notificationId","read","clearNotification","NotificationClickAction","Routes","Tabs","_title","SvgPick","undefined","SvgCrown","strokeLinejoin","useTabList","iconStyles","screen","hasSurvey","Styles","visible","Poll","getCurrentTabFromRoute","loc","split","game","startsWith","substring","useTabSelect","useLocation","currentTab","setTab","TopIconMenu","tabList","tabClasses","tabsClasses","Hidden","lgUp","smDown","classes","scrollButtons","TabIndicatorProps","Tab","mdDown","visibility","notifications","readNotifications","isLoggedIn","currentSurvey","NavMenuC","gameMenuClasses","mainAnchorEl","setMainAnchorEl","userAnchorEl","setUserAnchorEl","notificationAnchorEl","setNotificationAnchorEl","selectedGame","isAdmin","unreadNotificationCount","n","getNotifications","handleNotificationMenuClick","currentTarget","handleNotificationMenuClose","handleUserMenuClick","handleUserMenuClose","onSelectPremiumNameplateAction","getUserNameplateOptions","userCard","handleSetGame","oldGameId","oldGame","SetGameGlobally","AppBar","Toolbar","mdUp","implementation","IconButton","aria-label","edge","aria-controls","aria-haspopup","endIcon","ExpandMore","Menu","paper","anchorEl","Boolean","MenuItem","Chip","Badge","badgeContent","NotificationsNoneOutlined","anchorOrigin","vertical","horizontal","transformOrigin","readNotification","onClickAction","warn","handleNotificationClicked","html","dangerouslySetInnerHTML","__html","AccountCircle","openLoginModal","openRegisterModal","PersonOutline","renderAuthMenuItems","NavMenu","withRouter","BottomIconMenu","disableGutters","useForceUpdate","setValue","LayoutWidthC","withWidth","showMenuTabs","onLogin","Layout","navCard","boxShadow","NavCard","sm","md","lg","mx","path","buttonLabel","AdminScreenC","cards","getCards","Helmet","mt","card","isEventCreator","isSurveyCreator","AdminScreen","EventAnalytics","EventBuilderService","to","createRequest","RewardTypes","Medal","Trophy","Globe","EventFormatService","eventFormat","eventFormatId","createData","eventData","eventFormats","selectedEvent","upcomingEvents","formControl","minWidth","fullWidth","selectInGrid","EventCreatorC","now","later","setDate","fromDate","setFromDate","toDate","setToDate","getAllFormats","formats","onGameSelect","onFromChange","onToChange","onSkipStageChange","stagesToSkip","onEventFormatSelect","eventNameChange","nameOverride","liquipediaUrlChange","liquipediaUrl","rewardTypeChange","rewardTypeId","imageUrlChange","imageUrl","createEventPressed","abiosTournamentId","rewardType","createEvent","toast","log","onEventChange","tournamentId","s","getRewardType","wiki","images","changes","selectEvent","FormControl","InputLabel","Select","labelId","MenuProps","PaperProps","InputLabelProps","shrink","renderSearch","getUpcomingEvents","events","start","RadioGroup","FormControlLabel","control","Radio","href","renderSeriesSelection","Table","TableBody","TableRow","TableCell","colSpan","end","renderSelectedEvent","teams","team","logoUrl","abbreviation","members","teamMember","flag","nationality","realName","EventCreator","EventStageTypes","EventFormatHelper","EventFormatBuilder","createdDate","modifiedDate","modified","json","stages","groupStageDetails","EventFormatGroupStageDetails","EventFormatScoringBreakdown","groups","EventFormatScoringBreakdownGroup","records","EventFormatScoringBreakdownRecord","EventFormatStage","hasGroupBrackets","useSeriesScore","groupCount","advancingCount","totalAdvancing","pointsPerAdvancing","scoreFirstPlace","pointsPerFirstPlace","scoreSecondPlace","pointsPerSecondPlace","EventFormatBracketView","showSeriesScore","matches","EventFormatBracketScoringGroup","columns","scoreParticipants","scoreWinnersOnly","pointsPerCorrectParticipant","scorePlacement","pointsPerCorrectPlacement","getHeaderNamesFromBracket","bracket","viewTargets","headerNames","upper","lower","part","parts","identifier","c","some","t","col","concat","getLockedColumns","lockedColumns","lockPicks","buildScoringDetails","currentFormat","scoringBreakdown","stage","scoringGroup","buildScoringGroup","buildPlayoffsScoringGroup","advancingToPlayoffs","pointsPer","firstPlace","secondPlace","buildGroupStageScoringGroup","swissStageDetails","pointsPerCorrectWinner","cleanSweepWinner","pointsPerCorrectLoser","cleanSweepLoser","buildSwissStageScoringGroup","scoringGroups","bracketGroup","breakdownRecord","placementBonus","playoffDetails","seriesBonus","generatePreviousRound","matchesColumn","listOfMatches","reduce","match","m","nextMatchId","sort","b","Intl","Collator","numeric","sensitivity","compare","sortAlphanumerically","getPreviousMatches","columnIndex","previousBottomPosition","previousTopMatch","previousBottomMatch","calculateSVGDimensions","numOfRows","numOfColumns","rowHeight","columnWidth","canvasPadding","roundHeader","currentRound","bracketHeight","bracketWidth","gameHeight","isShown","gameWidth","startPosition","parseInt","initialState","hoveredMatchId","hoveredPartyId","hoveredColumnIndex","hoveredRowIndex","store","createContext","Provider","MatchContextProvider","dispatch","useReducer","previousState","action","partyId","rowIndex","matchId","payload","highlightedMatchIds","officialMatches","defaultStyle","boxHeight","spaceBetweenColumns","spaceBetweenRows","connectorColor","connectorColorHighlight","fontColor","roundSeparatorWidth","lineInfo","separation","homeVisitorSpread","horizontalOffset","wonBywalkOverText","lostByNoShowText","getCalculatedStyles","hideSeriesScore","defaultTheme","transitionTimingFunction","disabledColor","matchBackground","wonColor","lostColor","highlightedColor","textColor","highlighted","winner","dark","score","highlightedWonColor","highlightedLostColor","canvasBackground","MATCH_STATES","PLAYED","NO_SHOW","WALK_OVER","NO_PARTY","DONE","SCORE_DONE","Match","topText","bottomText","matchComponent","MatchComponent","onMatchClick","onPartyClick","isQualifierColumn","rest","useContext","matchContext","computedStyles","sortedTeams","partyA","partyB","partyAInBottomMatch","participants","p","partyBInBottomMatch","sortTeamsSeedOrder","topParty","bottomParty","topHovered","bottomHovered","matchHighlighted","participantWalkedOver","participant","topWon","isWinner","bottomWon","matchState","teamNameFallback","resultFallback","WALKOVER","resultText","bothTeamsAdvance","onMouseEnter","onMouseLeave","calculateVerticalPositioning","columnIncrement","calculateHeightIncrease","calculateVerticalStartingPoint","calculatePositionOfFinalGame","upperBracketHeight","lowerBracketHeight","offsetX","offsetY","calculatePositionOfMatchUpperBracket","lowerColumns","isQualifierRound","noLower","columnArray","getColumnSizeArray","yResult","indexOf","xResult","skipStep","Math","floor","nextColumnIndex","nextColumn","columnSizeMap","columnSizesArray","columnSize","calculatePositionOfMatchLowerBracket","useMatchHighlightContext","bracketSnippet","currentMatch","topHighlighted","bottomHighlighted","Connector","previousBottomMatchPosition","previousTopMatchPosition","currentMatchPosition","pathInfo","multiplier","middlePointOfMatchComponent","previousMatch","startPoint","horizontalWidthLeft","isPreviousMatchOnSameYLevel","abs","verticalHeight","horizontalWidthRight","join","ConnectorsUpper","isLowerBracket","isUpperSeedingRound","positioningFunction","isDirectFeed","isStraightConnector","straightConnector","lowerMatchPosition","lowerAdvancingConnector","UpperRoundHeader","numOfRounds","customHeaderText","pointerEvents","ry","dominantBaseline","textAnchor","GetUpperBracketHeaderName","UpperBracket","calculatedStyles","onUpperClick","onColumnClick","customHeaderNames","lastColumn","colPos","stopPropagation","startTime","isTop","party","partyWon","locked","ConnectorsLower","LowerRoundHeader","GetLowerBracketHeaderName","LowerBracket","onLowerClick","isFirstColumn","FinalConnectors","upperColumns","numOfUpperRounds","numOfLowerRounds","FinalRoundHeader","FinalGame","onFinalsClick","ExtraFinal","MatchColoringProvider","newHighlightedMatchIds","newOfficialMatches","DoubleEliminationBracket","highlightMatchIds","svgWrapper","SvgWrapper","options","inputStyle","isPartialBracket","allowsBracketReset","finalMatch","finalsArray","isConverging","finalsCountInUpper","finalsCountInLower","isFinalInUpper","isFinalInLower","lastUpper","lastLower","findTheFinals","hasMultipleFinals","generateColumn","previousMatchesColumn","generate2DBracketArray","finalMatches","includeFinal","arr","fm","hasLower","totalNumOfRounds","upperBracketDimensions","lowerBracketDimensions","fullBracketDimensions","startAt","Wrapper","styled","div","StyledMatch","Team","LogoImage","img","Score","won","Side","correctParticipant","loserQualifies","correctPlacement","hovered","css","Line","smooth","bold","hasWinner","winnerParty","loserParty","winnerHovered","loserHovered","defaultClass","transition","shape","defaultHeader","exactMatch","Collapse","startOpen","headerElement","headerClassName","childClassName","focusObservable","setOpen","setExactMatch","destroy","Subject","pipe","takeUntil","focusedId","setTimeout","next","ScorePillDetails","bracketScore","scoreBreakdown","league","summaryClass","rank","percent","percentile","totalScore","table","scoreGroup","scoreRecord","Name","StageIndex","row","tables","group","max","ceil","ScorePillModal","MODE_IDLE","MODE_PANNING","MODE_ZOOMING","TOOL_AUTO","TOOL_NONE","TOOL_PAN","TOOL_ZOOM_IN","TOOL_ZOOM_OUT","POSITION_TOP","POSITION_RIGHT","POSITION_BOTTOM","POSITION_LEFT","INITIAL_VALUE","DEFAULT_MODE","getDefaultValue","viewerWidth","viewerHeight","SVGMinX","SVGMinY","SVGWidth","SVGHeight","scaleFactorMin","scaleFactorMax","identity","version","mode","focus","pinchPointDistance","prePinchMode","startX","startY","endX","endY","miniatureOpen","lastAction","patch","freeze","getSVGPoint","viewerX","viewerY","matrix","fromObject","inverseMatrix","inverse","applyToPoint","decompose","scaleFactor","translationX","translationY","f","setFocus","setSVGViewBox","resetMode","ViewerEvent","originalEvent","SVGViewer","_cacheDecomposedValue","pan","SVGDeltaX","SVGDeltaY","panLimit","translate","x1","y1","x2","y2","applyToPoints","moveX","moveY","startPanning","updatePanning","stopPanning","autoPanIfNeeded","deltaX","deltaY","calculateBox","isZoomLevelGoingOutOfBounds","curScaleFactor","lessThanScaleFactorMin","moreThanScaleFactorMax","limitZoomLevel","scaleLevel","min","zoom","SVGPointX","SVGPointY","scale","fitSelection","selectionSVGPointX","selectionSVGPointY","selectionWidth","selectionHeight","scaleX","scaleY","fitToViewer","SVGAlignX","SVGAlignY","scaleMatrix","translateX","translateY","remainderY","round","remainderX","translationMatrix","startZooming","updateZooming","stopZooming","box","SVGPoint","mapRange","sourceStart","sourceEnd","targetStart","targetEnd","getMousePosition","ViewerDOM","getBoundingClientRect","clientX","clientY","onMouseDown","tool","coords","nextValue","onMouseMove","forceExit","buttons","preventPanOutside","onMouseUp","onMouseEnterOrLeave","ViewerMouseEvent","_cachePoint","mousePosition","point","ViewerTouchEvent","_cachePoints","touchesToPoints","touches","_cacheChangedPoints","changedTouches","points","touch","rect","parseViewBox","viewBoxString","onTouchEnd","detectPinchGesture","hasPinchPointDistance","shouldResetPinchPointDistance","onSingleTouch","isMultiTouch","nextValueFn","touchPosition","getTouchPosition","onMultiTouch","sqrt","pow","previousPointDistance","svgPoint","distanceFactor","cancelable","openMiniature","closeMiniature","userAgent","navigator","needPrefix","uid","RandomUID","WrappedComponent","_uid","displayName","getDisplayName","prefixID","gradientID","maskID","spreadMethod","offset","stopColor","stopOpacity","mask","Selection","strokeOpacity","fillOpacity","IconCursor","IconPan","IconZoomIn","IconZoomOut","IconFit","ToolbarButton","hover","change","toolbarPosition","activeColor","outline","onTouchStart","onTouchCancel","onChangeValue","onChangeTool","activeToolColor","handleChangeTool","isHorizontal","role","handleFit","IconArrow","MiniatureToggleButton","defaultProps","zoomToFit","Miniature","SVGBackground","miniatureWidth","miniatureHeight","ratio","centerTranslation","ReactSVGPanZoom","context","SVGViewBox","pointerX","pointerY","autoPanLoop","onWheel","componentDidUpdate","prevProps","getValue","needUpdate","setViewerSize","setZoomLevels","componentDidMount","autoPanIsRunning","requestAnimationFrame","getTool","onZoom","onPan","zoomOnViewerCenter","setPointOnViewerCenter","zoomLevel","reset","handleViewerEvent","onEventHandler","click","dblclick","onDoubleClick","mousemove","mouseup","mousedown","touchstart","touchmove","onTouchMove","touchend","touchcancel","eventType","eventFactory","detectAutoPan","onInterval","detectWheel","delta","scaleFactorOnWheel","customToolbar","CustomToolbar","customMiniature","CustomMiniature","panningWithToolAuto","cursorPolyfill","blockChildEvents","touchAction","disableDoubleClickZoomWithToolAuto","modifierKeys","modifierKeysReducer","current","modifierKey","getModifierState","maxTouchPoints","toSVG","SVGStyle","toolbarProps","miniatureProps","disableZoomWithToolAuto","PanZoomHelper","currentValue","topLeftX","topLeftY","getCurrentValue","SvgViewer","Viewer","useRef","setTool","newValue","getMatchCount","column","totalColumns","grouping","getPartName","findBracketMatchById","bracketMatchId","findColumnMatchById","columnMatch","getBracketMatchIdByTarget","colIndex","parsePicksIntoBracketMatches","currentEventStage","currentEventSubstage","currentStage","userPicks","officialPicks","mapOfficialToUserWhenEmpty","eventStageId","eventSubstageId","allUserPicks","cloneDeep","pick","bracketPart","bracketCol","bracketColIndex","sourcePicks","bracketMatch","topTeam","topTeamId","botTeam","bottomTeamId","started","topTeamScore","bottomTeamScore","winnerTeamId","teamId","sg","op","bracketBuilderContainer","bracketRender","bracketEditor","bracketEditorPhaseSelector","borderBottom","invisibleOnDisable","subEditor","subEditorPlus","scroller","editorField","bannerContainer","bannerInner","viewHeader","textField","currentView","currentScoringGroup","bindingMatch","EventFormatBracketBuilderC","tabValue","setTabValue","editorStage","setEditorStage","focusSubject","asObservable","bindingSomething","getElementById","scrollIntoView","querySelectorAll","selectedPart","handleBracketMatchClick","targetColumnMatch","loserPath","applyBracketUpdates","shiftKey","mapLoserMatch","handleViewMatchClick","matchPath","targetMatchIndex","findIndex","splice","storeUpdate","handleChangeStage","didUpdate","views","initializeBracket","columnCount","populateDefaultBracket","bracketStages","slice","modifyPartColumns","j","matchCount","uuidv4","nextLoserMatchId","finalsPart","nextColumnSameCount","nextColumnMatch","loserPart","loserColumn","loserColumnMatch","nextLooserMatchId","mapUpperBracketMatches","mapLowerBracketMatches","mapNextMatches","generateBracketMatchesFromBracket","applyChangesToBracket","arrayList","parentArray","array","flattenArrayList","getBracketMatchIdsByTargetColumn","innerWidth","matchingIndex","ChevronLeft","getEditorPhaseName","ChevronRight","BracketDetailsEditor","onApply","ViewDefinitionEditor","ScoringBreakdownEditor","bestOf","Checkbox","checked","matchIndex","editingView","setEditingView","editingViewMatchIndex","setEditingViewMatchIndex","finishModifying","view","onBlur","inputRef","input","deleteView","Delete","modifyView","Edit","Add","editingGroup","setEditingGroup","editingScoringGroupIndex","setEditingScoringGroupIndex","sGroup","deleteGroup","modifyGroup","toggleScoringGroupScoreParticipants","toggleScoringGroupScoreWinnersOnly","toggleScoringGroupScorePlacement","Launch","EventFormatBracketBuilder","dialog","form","list","select","EventFormatDetailsC","setCurrentStage","currentStageIndex","setCurrentStageIndex","isDialogOpen","setIsDialogOpen","onDialogClose","List","disablePadding","ListItem","ListItemText","ListItemSecondaryAction","editStage","deleteStage","Dialog","DialogTitle","DialogContent","cleanSweepWinnerCount","cleanSweepLoserCount","hasBracketReset","pointsForCorrectBracketReset","teamsToOpenPicks","DialogActions","EventFormatDetails","buttonRow","EventFormatEditor","save","formatBuilder","updatedFormat","saveFormat","getEventFormatBuilder","DeleteConfirmModal","objectName","onConfirm","RecordInUseModal","classStyles","dataGrid","dataGridRow","dateFormatter","object","field","headerName","valueFormatter","EventFormatSelectorC","rowsSelected","setRowsSelected","getFormatById","ef","rows","pageSize","rowsPerPageOptions","selectionModel","autoHeight","hideFooterSelectedRowCount","getRowClassName","onSelectionModelChange","newRowSelected","resetView","format","newFormat","FileCopy","formatId","deleteFormat","EventFormatSelector","EventFormatBuilderC","AdminUserModal","resetPassword","resetLink","getUrl","protocol","host","getBaseUrl","saveUser","updateUser","userRoleIds","analystGameId","createAnalystLeague","toastId","userRoles","getUserRolesList","userExternalLogins","externalUsername","maxLength","changeUsername","isAnalyst","cancel","changeRole","UserManagerScreen","onUserSelect","getRoles","getUserRoles","getParticipatingAnalystGame","onUserSearch","users","searchUsers","userSearchValue","onUserSearchChange","getUserList","cssEditor","nameplateDrawer","nameplateTemplate","NameplateEditor","nameplateList","setNameplateList","typeList","setTypeList","setName","setDescription","setType","template","setTemplate","styleRef","setStyleRef","loadNameplates","getTypes","types","updateStyle","updatedTemplate","testTemplate","newStyleRef","onCreateNameplate","onSelectNameplate","displayEmpty","saveNameplate","EventService","teamInfo","EventTypes","pickSelect","pickLabel","pickTable","borderCollapse","pickCell","PickData","gameData","setGameData","setEvents","setSelectedGame","selectedEventId","setSelectedEventId","pickData","setPickData","getEvents","eventTypes","formattedPickData","eventTypeId","getSwissStagePickData","pd","advancePickData","elimPickData","bracketPickData","alert","loadPickData","gameSelection","ev","eventSelection","dataRowJsx","cellJsx","getOwnPropertyNames","idx","dataCellJsx","pickDataRowJsx","headerCellsJsx","h","ix","pickDataHeaderCell","dataRowsHtml","pickDataJsx","PickUsernameScreenC","getUsername","setError","textTransform","PickUsernameScreen","ResetPasswordScreen","searchParams","queryString","placeholder","paddingLeft","validateUsernamePassword","changePassword","SignInDiscord","code","discordSignIn","SignInGoogle","googleSignIn","heading","rightIcon","ContentHeader","menuItems","setAnchorEl","handleMenuClose","MoreHoriz","menuItem","contentPanel","ContentPanel","buttonPrimary","buttonSecondary","FatButton","TabToggle","items","TabItem","setSelectedId","rippleRef","stop","LeagueService","leagueId","requireDiscord","requireReddit","SvgCarotLeft","SvgCarotRight","eventSelector","eventToggle","EventSelector","onChangeEvent","disableChange","eventLength","eventIndex","eventCount","furthestEventIndexAllowed","viewNextEvent","updatedEventIndex","textWrap","LeagueInfo","rankings","viewType","showNameplate","onChangeViewType","maxTableHeight","innerHeight","LeagueNameplate","disableClick","TableContainer","stickyHeader","TableHead","openPicks","LeagueViewType","loadUserLeagueInfo","getUserLeagueLimit","getJoinedLeagues","getNewLeagues","getPopularLeagues","limit","joined","newest","popular","loadAnalystLeagueInfo","analystLeague","getAnalystLeague","getLeagueEvents","lastEvent","getLeagueRankings","LeagueNameplateSelectorModal","leagueName","SuccessModal","CreateEditLeagueModal","isEdit","hasPassword","setRequireDiscord","setRequireReddit","setNameplateId","endAdornment","Search","LockOpen","createOrUpdateLeague","LeaveDeleteLeagueModal","isDelete","LeagueDetailsModalC","isLeagueCreator","createdBy","deleteLeague","attemptDeleteLeague","leaveLeague","attemptLeaveLeague","LeagueDetailsModal","clickable","getLeague","showLeagueInfo","SvgGreenOpenLock","SvgOrangeLock","JoinLeagueModal","logoImage","info","joinedLeagues","LeagueTableC","leagues","loggedIn","attemptJoinLeague","joinLeague","l","xsDown","smUp","align","LeagueTable","searchTimeoutID","SearchLeaguesModal","searchTerm","clearTimeout","searchLeagues","onChangeTerm","leagueLimit","newLeagues","popularLeagues","subtext","dateSubtext","searchContainer","searchFullWidth","leagueSlotLabel","LeagueNavigatorC","joinedAny","onSearch","joinedOrCreate","navItems","unshift","navTabs","leagueSlotsRemaining","joinedLeaguesTable","joinDate","eventRank","memberCount","Warning","LeagueNavigator","SvgAnalyst2","AnalystLeagueC","AnalystLeague","LeagueScreen","SvgDiscordIcon","SvgInstagramIcon","SvgTwitterIcon","patternContentUnits","SuccessFailModal","success","hasNextStage","currentGame","instagramUrl","twitterUrl","AccountRequired","PicksHelper","getTimeTillLock","isLocked","diff","getLockTime","seconds","minutes","hours","days","getRelockTime","convertUtcToLocalTime","relockTime","getStartTime","metadata","startDate","getEndTime","endDate","unlocked","isStarted","isFinished","getEventDateRange","dateInfo","moment","startMonth","DateTimeFormat","startDay","endMonth","endDay","UTC","getSeconds","PickTypes","PickService","userIdQuery","picks","groupPick","groupStagePicks","EventHelper","getCurrentEventId","matchPicks","GenericEvent","hasBracket","baseUrl","picksHelper","leaderboard","official","officialGroupPicks","officialBracketPicks","buildPickedBracketMatchesFromTeams","targetUserId","fullLoad","first","bottomTeam","loser","loserTeamId","userHasBracket","loadUserScore","loadLeaderboard","loadOfficialPicks","loadBracketUser","loadEventPicks","checkLoadFirstPlace","getUserPicks","bracketPicks","eventStage","eventStages","stageUsesBracket","saveUserPicks","OneTimeSurveyNotify","targetUrl","currentEventId","liveEventId","getNextEventId","getPreviousEventId","liveEvent","getLiveEventId","fullLoadEvent","pastEventIds","getPastEventIds","getEvent","getCurrentEvents","currentUserId","getSpecificEvent","keyObject","targetObject","mapStoreKeysToObject","submitPicks","drawer","breakpoints","up","flexShrink","mixins","drawerPaper","drawerHeader","content","contentBox","GamePickemScreenWidthC","isSm","Drawer","anchor","px","GamePickemScreen","formatData","ScorePillC","ScorePill","eventHeader","eventNameSmall","flexRow","userCardContainer","scorePillContainer","bracketUser","EventHeaderC","useTheme","isSmall","useMediaQuery","down","EventHeader","SvgShowResults","SvgHideResults","SvgSubmittedAndCheck","SvgEditYourPicks","SvgBackToMyPicks","_image","SvgRedditIcon","SvgShareIcon","eventFooter","panel","inline","flexCentered","EventFooterC","onEdit","showingOfficialResults","showOfficialResults","picksLocked","gamePrefix","shareLink","data-clipboard-text","EventFooter","TeamSelection","userBracketPicks","selectedTop","setWinnerTeamId","setLoserTeamId","currentPick","getUserPickFromBracketTarget","winnerTeam","loserTeam","scoreSelect","winScore","loseScore","nextMatch","nextMatchPick","matchIsOnTop","wipeOutFurtherPicks","loserMatch","loserMatchPick","close","selectWinner","bracketColumn","getBracketColumnByTarget","TeamBlock","noClick","isPlayerOrCaptain","member","player","renderTeamPlayers","upperBracket","currentColumn","lowerBracket","previousPick","isAddingPick","textSpan","NameplateButton","buttonText","bracketWrapper","stageIndex","substageIndex","BracketEditorC","currentSubstage","eventSubstage","totalSubstages","nextDisabled","flatMap","matchingPick","checkNextDisabled","isSubmit","offsetWidth","BracketEditor","userGroupPicks","isEditing","showOfficial","BracketRendererC","baseUIHeight","otherUIHeight","renderHeight","eventNameLabel","clientHeight","BracketRenderer","GroupStageTeam","showPlayers","selector","togglePlayerList","getCardStatus","step","isAdvancing","toggleSecondTeam","toggleEliminated","correct","otherArray","pickTypeId","other","matching","prop","cardStatus","playerOrder","toggleAdvancing","enableAdvancingStepOne","toggleTopTeam","isTopTeam","topLeftEl","instructionsContainer","instructions","Instructions","pageIndicators","filledCircle","unfilledCircle","circle","PageIndicators","totalSteps","cls","rounded","borderBottomLeftRadius","borderBottomRightRadius","groupSection","gridList","topRow","backgroundPanel","unselected","stepLabel","nextButton","borderWidth","borderStyle","backButton","notVisible","borderBottomColor","borderRightColor","topLeftElTxt","threeWin","borderTopColor","borderLeftColor","correctThreeWins","noWin","correctNoWins","SwissStageRendererC","showingOfficial","setShowingOfficial","bracketUserId","setBracketUserId","currentStageId","setCurrentStageId","teamsSelected","setTeamsSelected","advancing","threeWins","noWins","ogp","ugp","differentUser","differentStage","picksToShow","teamClicked","newAry","countAdvancing","noWinTeams","noneIdx","threeWinTeams","threeIdx","toggleThreeWin","toggleNoWin","calculateNextStep","nextStep","nextText","getInstructions","ImageList","cols","inThreeWin","inNoWin","ImageListItem","isEliminated","isNoWin","renderTeam","backStep","finalPicks","advancingTeamId","threeWinTeamId","noWinTeamId","persistStateToStore","SwissStageRenderer","groupTeam","groupStageItem","GroupStageRendererC","orderBy","et","ess","updateGroupPicks","groupPicks","concatPicks","notAdvancing","gsp","picksToView","isSecondTeam","countTopTeam","countSecondTeam","isAlreadyFirstTeam","nextIsDisabled","steps","renderGroup","maxStep","GroupStageRenderer","SurveyForPicksModal","StageLabel","StageButton","StageSelectorC","isGroupStageBrackets","changeStage","ss","changeSubstage","StageSelector","EventRendererC","isCurrentStage","renderWidth","isBracketStage","isSwissStage","isGroupStage","hasMultipleStages","disableShowPlayers","EventRenderer","PickemContentC","PickemContent","Timer","finished","lockTime","timer","signalR","require","RealtimeHelper","onStart","connection","connections","HubConnectionBuilder","withUrl","build","on","getConnection","off","allowLoadOnScroll","lastScrollTop","Leaderboard","leaderboardClass","leaderboardHeaders","tableData","modalTableData","loadData","loadDataAddtl","noDataEl","firstRow","lastRow","totalRecords","rowNumberToGoTo","userIdToGoTo","searchLeaderboard","totalEntrants","currentUserRow","leaderboardOpen","setLeaderboardOpen","hasMore","setHasMore","bracketsSubmitted","setBracketsSubmitted","lastBracketsSubmitted","setLastBracketsSubmitted","setSearchTerm","eventStarted","onSubmissionCountUpdate","bs","resultRow","getModalTableRowById","$body","getModalTableBody","scrollTop","resultsOnScreen","$","getRowHeight","$row","openLeaderboardMe","openLeaderboard","closeLeaderboard","listenForClose","listenForOpen","bracketCountChanged","showYourLeaderboard","animate","onScroll","evScrollTop","evScrollHeight","scrollHeight","isUp","hasData","newScrollTop","pastEventIndex","viewingPastEvents","PickemLeftPaneC","stateObj","setStateObj","actualIdx","peIdx","pastEventId","getItemIdx","leaderboardNoDataEl","preFirstStageAndUnlocked","openBracket","tableDataAry","scoreClass","trophyUrl","modalDataAry","data-id","hasItems","leaderboardHiddenClass","image","eventUrl","getListOfPastEventIds","overwriteData","def","getLeaderboard","newItems","copy","promise","getLeaderboardAdditional","itemIdx","PickemLeftPane","PickemScreen","load","params","onMount","liveId","getLiveEvent","borderSpacing","tableHead","tableCell","lineHeight","diamond","platinum","gold","silver","bronze","wood","globeIcon","trophyIcon","medalIcon","prestigeIcon","rewardText","awardCellWrapper","awardCellInnerWrapper","AwardInfo","isRocketLeague","GetCurrentGameTrophyPath","isCounterStrike","marginleft","leaderboardDetails","fullSvg","yourSvg","AwardLeaders","awardLeaderState","setAwardLeaderState","setCurrentUserRow","getTrophyLeaderboard","leaderboardData","getTrophyLeaderboardUserRow","leaderboardRowJsx","event1Name","trophy1ImagePath","event2Name","trophy2ImagePath","event3Name","trophy3ImagePath","event4Name","trophy4ImagePath","event5Name","trophy5ImagePath","currentUserRowJsx","headerJsx","getTrophyLeaderboardAdditional","searchTrophyLeaderboard","awardContainerInner","eventAward","RecentAwards","recentAwards","setRecentAwards","getRecentTrophies","recentData","distinctEventIds","uniqBy","trophy","userIds","summaryContent","userInfoContainer","YourAwardsC","YourAwards","TrophyRoomScreenC","TrophyRoomScreen","RedeemCodeModal","promo","rewardNamePlateStyleId","loadedUser","RedeemPromoCodeScreenC","setCode","stlye","redeemCode","RedeemPromoCodeScreen","GiveTrophyC","setEventId","getEventsNotRewarded","giveTrophies","rewardTrophies","GiveTrophy","SvgPickstopLogoGgNew","cardContent","gameLogo","gameTitle","landing","lockIcon","verticalAlign","trophyContainer","alignSelf","welcome","eventProgress","LandingScreen","csInfo","setCsInfo","picksMessage","picksIcon","rlInfo","setRlInfo","getGameInfo","LockOutlined","loadCurrentEvents","Card","CardContent","gameTile","AdminPickOverrideC","getCurrentSeasonEvents","AdminPickOverride","SignInReddit","redditSignIn","LinkDiscord","linkDiscord","LinkGoogle","linkGoogle","LinkReddit","linkReddit","SurveyPromptDto","answers","SurveyDto","openTime","closeTime","prompts","SurveyService","surveyId","surveyDto","userAnswerIds","allSurveys","hide","SurveySelectorC","getAllSurveys","getSpecificSurvey","survey","toClone","prompt","SurveySelector","paperInner","rootClassName","TileGroup","tileProps","showAddTile","tileWidth","tileHeight","itemName","paperProps","onAdd","disableSelect","selectedId","selectedIds","getItemId","selectedClassName","AddCircle","default","userSelect","SurveyAnswerTile","answer","promptRow","promptHeader","selectedPrompt","SurveyEditorC","selectedIndex","setSelectedIndex","isPreviewing","setIsPreviewing","isCtrl","keyCode","saveSurvey","isClosing","saveAndClose","updateState","FormLabel","Input","multiline","inputProps","onDragEnter","onDragOver","selectPrompt","draggable","onDragStart","dataTransfer","dropEffect","setData","onDrag","onDrop","oldIndex","getData","recordToMove","backend","RemoveCircle","isMultiSelect","numberOfAnswers","removeAnswer","maxItemsPerRow","SurveyEditor","SurveyBuilderC","SurveyBuilder","SurveyCompleteModal","dateTime","amPm","toFriendlyDateTime","currentPicks","selectedAnswer","UserSurveyScreenC","setAnswers","promptIndex","setPromptIndex","getAnswers","userAnswers","mappedAnswers","promptId","promptAnswerId","currentPrompt","currentPromptAnswers","surveyClosed","answerIds","saveAnswers","UserSurveyScreen","SvgBallotBox","filterUnits","colorInterpolationFilters","floodOpacity","in","values","dy","stdDeviation","in2","_path2","_path3","_path4","_circle","_circle2","_circle3","_path5","_path6","SvgMedalWinner","clipPath","maskType","maskUnits","dx","operator","gradientUnits","SvgPolygon","SvgQuoteStart","SvgQuoteEnd","backgroundFill","lightCard","whiteCard","welcomePickstopHeaderContainer","welcomePickstop","welcomePickstopText","shapeContainer","orangeLine","orangeLineGrow","quoteText","aspectRatio","socialLink","mugShot","AboutUsScreenWidth","logoWidth","logoHeight","isExtraSmall","isMedium","isXL","fontUnit","cardMargin","cardPadding","cardRadius","orangeLineWidth","pentagonIconWidth","pentagonIconHeight","detailCardMargin","detailCardPadding","detailCardRadius","detailCardWidth","detailCardIconWidth","quoteCardMargin","quoteCardPadding","quoteCardRadius","quoteCardWidth","socialIconWidth","socialLinks","link","quoteCardContainerStyle","rel","frameborder","allow","allowfullscreen","App","init","getCurrentSurvey","responsiveFontSizes","createTheme","overrides","MuiInputBase","transitionDelay","transitionProperty","MuiTableCell","body","MuiDivider","useRouteMatch","exact","gameRoutes","RelativeRoutes","ThemeProvider","AboutUsScreen","autoClose","hideProgressBar","newestOnTop","Slide","closeOnClick","rtl","pauseOnFocusLoss","pauseOnHover","pathGameId","RocketLeagueScreen","getElementsByTagName","getAttribute","rootElement","ReactDOM","basename"],"mappings":"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","file":"static/js/main.41e2ced5.chunk.js","sourcesContent":["import { createBrowserHistory } from \"history\";\n\nexport const history = createBrowserHistory();\n\n/**\n * Changes the url without refreshing the page.\n *\n * @param {string} url\n */\nexport function changeUrl(url) {\n\thistory.push(url);\n}\n\n/**\n * Gets the base url of the website.\n *\n * @returns {string}\n */\nexport function getBaseUrl() {\n\tvar getUrl = window.location;\n\tvar baseUrl = getUrl.protocol + \"//\" + getUrl.host;\n\n\treturn baseUrl;\n}\n","import _ from \"lodash\";\n\nexport class ApplicationStore {\n\tconstructor() {\n\t\tthis.data = {};\n\t\tthis.promises = {};\n\t\tthis.onChangeSubscriptions = {};\n\t\tthis.isCaching = false;\n\t\tthis.cacheKeys = [];\n\t\tthis.changed = [];\n\t}\n\n\tsubscribe = (callback, keys) => {\n\t\tfor (var k of keys) {\n\t\t\tif (!this.onChangeSubscriptions[k]) {\n\t\t\t\tthis.onChangeSubscriptions[k] = [];\n\t\t\t}\n\n\t\t\tthis.onChangeSubscriptions[k].push(callback);\n\t\t}\n\t};\n\n\tunsubscribe = (callback, keys) => {\n\t\tfor (var k of keys) {\n\t\t\tif (!this.onChangeSubscriptions[k]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthis.onChangeSubscriptions[k] = this.onChangeSubscriptions[k].filter(\n\t\t\t\t(cb) => cb !== callback\n\t\t\t);\n\t\t}\n\t};\n\n\tget = (key, defaultValue) => {\n\t\tif (this.data[key] == null) {\n\t\t\tthis.data[key] = defaultValue;\n\t\t\treturn defaultValue;\n\t\t}\n\t\treturn this.data[key];\n\t};\n\n\tset = (key, value) => {\n\t\tif (isPrimitive(value)) {\n\t\t\tthis.data[key] = value;\n\t\t} else if (value instanceof Date) {\n\t\t\tthis.data[key] = new Date(value);\n\t\t} else {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tthis.data[key] = [...value];\n\t\t\t} else {\n\t\t\t\tthis.data[key] = { ...value };\n\t\t\t}\n\t\t}\n\t\tthis.notify(key);\n\t};\n\n\tremove = (key) => {\n\t\tdelete this.data[key];\n\t\tthis.notify(key);\n\t};\n\n\tnotify = (key) => {\n\t\t// If we are caching, don't notify components until we applyChanges.\n\t\tif (this.isCaching) {\n\t\t\tthis.changed.push(key);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.onChangeSubscriptions[key]) {\n\t\t\treturn;\n\t\t}\n\t\tfor (let callback of this.onChangeSubscriptions[key]) {\n\t\t\tcallback();\n\t\t}\n\t};\n\n\tcacheChanges(key) {\n\t\tthis.cacheKeys.push(key);\n\t\tthis.isCaching = true;\n\t}\n\n\tapplyChanges(key) {\n\t\tthis.cacheKeys = this.cacheKeys.filter((k) => k !== key);\n\t\tthis.isCaching = this.cacheKeys.length !== 0;\n\n\t\tif (this.isCaching) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst callbacks = [];\n\t\tconst changed = _.uniq(this.changed);\n\t\tfor (const key of changed) {\n\t\t\tif (!this.onChangeSubscriptions[key]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (let callback of this.onChangeSubscriptions[key]) {\n\t\t\t\tif (callbacks.includes(callback)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcallbacks.push(callback);\n\t\t\t}\n\t\t}\n\n\t\tfor (const callback of callbacks) {\n\t\t\tcallback();\n\t\t}\n\t\tthis.changed = [];\n\t}\n\n\tsetMany = (obj) => {\n\t\tconst objKey = JSON.stringify(obj);\n\t\tthis.cacheChanges(objKey);\n\t\tfor (var key in obj) {\n\t\t\tthis.set(key, obj[key]);\n\t\t}\n\n\t\tthis.applyChanges(objKey);\n\t};\n}\n\nfunction isPrimitive(test) {\n\treturn test !== Object(test);\n}\n\nconst Store = new ApplicationStore();\n//window.ApplicationStore = Store;\n\nexport default Store;\n","const StoreKeysType = {\n\tADMIN: {\n\t\tGIVE_TROPHY: {\n\t\t\tEVENTS: \"\",\n\t\t},\n\t\tPICKS: {\n\t\t\tEVENTS: \"\",\n\t\t\tBRACKET_PICKS: \"\",\n\t\t\tGROUP_PICKS: \"\",\n\t\t},\n\t\tSURVEYS: {\n\t\t\tALL: \"\",\n\t\t\tCURRENT: \"\",\n\t\t},\n\t},\n\tEVENT: {\n\t\tEVENTDATA: \"\",\n\t\tFORMAT: \"\",\n\t\tSTAGE_INDEX: \"\",\n\t\tSUBSTAGE_INDEX: \"\",\n\t\tSTEP: \"\",\n\t\tSELECTEDMATCH: \"\",\n\t\tUSER: {\n\t\t\tBRACKET_PICKS: \"\",\n\t\t\tGROUP_PICKS: \"\",\n\t\t},\n\t\tSCORE: \"\",\n\t\tBRACKET_USER: \"\",\n\t\tHAS_BRACKET: \"\",\n\t\tIS_EDITING: \"\",\n\t\tLEADERBOARD: \"\",\n\t\tOFFICIAL: {\n\t\t\tBRACKET_PICKS: \"\",\n\t\t\tGROUP_PICKS: \"\",\n\t\t},\n\t\tSHOW_OFFICIAL: \"\",\n\t\tSHOW_PLAYERS: \"\",\n\t},\n\tEVENTCREATOR: {\n\t\tCREATE_DATA: \"\",\n\t\tEVENT_DATA: \"\",\n\t\tEVENT_FORMATS: \"\",\n\t\tGAMES: \"\",\n\t\tSELECTED_EVENT: \"\",\n\t\tUPCOMING_EVENTS: \"\",\n\t},\n\tEVENTFORMATBUILDER: {\n\t\tBINDING_MATCH: \"\",\n\t\tCURRENT_FORMAT: \"\",\n\t\tCURRENT_SCORING_GROUP: \"\",\n\t\tCURRENT_VIEW: \"\",\n\t\tEVENT_FORMATS: \"\",\n\t},\n\tGAMES: \"\",\n\tIS_LOADING: \"\",\n\tLEAGUES: {\n\t\tANALYST: {\n\t\t\tLEAGUE: \"\",\n\t\t\tEVENTS: \"\",\n\t\t\tRANKINGS: \"\",\n\t\t\tVIEW_TYPE: \"\",\n\t\t},\n\t\tVIEWING: {\n\t\t\tLEAGUE: \"\",\n\t\t\tEVENTS: \"\",\n\t\t\tRANKINGS: \"\",\n\t\t\tVIEW_TYPE: \"\",\n\t\t},\n\t\tJOINED: \"\",\n\t\tLIMIT: \"\",\n\t\tNEW: \"\",\n\t\tPOPULAR: \"\",\n\t\tNAV_VIEW_TYPE: \"\",\n\t},\n\tLeftPane: {\n\t\tOpen: \"\",\n\t\tPastEventIds: \"\",\n\t\tPastEventIndex: \"\",\n\t\tViewingPastEvents: \"\",\n\t},\n\tLOADING_TEXT: \"\",\n\tLOGIN_PROVIDER: \"\",\n\tROLES: \"\",\n\tUSER: {\n\t\tLOADED: \"\",\n\t\tLOGGED_IN: \"\",\n\t\tID: \"\",\n\t\tUSERNAME: \"\",\n\t},\n\tUSERPROFILE: {\n\t\tOPEN: \"\",\n\t\tUSER: \"\",\n\t},\n\tSETTINGS: {\n\t\tLOADED: \"\",\n\t\tTROPHY_ROOM_ENABLED: \"\",\n\t},\n\t// User Survey Screen\n\tSURVEY: {\n\t\tCURRENT: \"\", // The current survey\n\t\tPICKS: \"\", // User picks\n\t},\n\tNOTIFICATIONS: {\n\t\tLIST: \"\",\n\t\tREAD: \"\",\n\t},\n};\n\n/** @type {StoreKeysType} */\nconst StoreKeys = automapKeys(null, StoreKeysType);\n\n/**\n *\n * @param {string} rootPath\n * @param {StoreKeysType} keysObj\n * @returns {StoreKeysType} storekeys\n */\nfunction automapKeys(rootPath, keysObj) {\n\tconst result = JSON.parse(JSON.stringify(keysObj));\n\n\tfor (const key in result) {\n\t\tconst relativePath = rootPath ? rootPath + \"-\" + key : key;\n\t\tconst keyObj = result[key];\n\t\tif (typeof keyObj == \"object\") {\n\t\t\tresult[key] = automapKeys(relativePath, result[key]);\n\t\t} else {\n\t\t\tresult[key] = relativePath;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport default StoreKeys;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgTrafficLight = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0.3 80 259.5\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 47.7,\n cy: 47.3,\n r: 47.8,\n transform: \"matrix(0.837704 0 0 0.832294 0.041385 0.622022)\",\n style: {\n fill: \"rgb(220, 43, 31)\",\n paintOrder: \"fill\"\n }\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 12.5,\n cy: 99.1,\n r: 47.8,\n transform: \"matrix(0.837704 0 0 0.832294 29.495239 47.558235)\",\n style: {\n fill: \"rgb(251, 176, 64)\",\n paintOrder: \"fill\"\n }\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: -117.9,\n cy: 202.9,\n r: 47.8,\n transform: \"matrix(0.837704 0 0 0.832294 138.760239 51.094028)\",\n style: {\n fill: \"rgb(57, 181, 74)\",\n paintOrder: \"fill\"\n }\n }));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgTrafficLight, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/TrafficLight.b3e6bc0a.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from \"react\";\nimport Store from \"./store\";\n\nclass StateWrapper extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.keys = [];\n\t\tfor (let k in props) {\n\t\t\tif (k === \"props\") continue;\n\t\t\tif (k === \"component\") continue;\n\t\t\tthis.keys.push(props[k]);\n\t\t}\n\t\tthis.onStateChange = this.onStateChange.bind(this);\n\t\tStore.subscribe(this.onStateChange, this.keys);\n\t}\n\n\trender() {\n\t\tlet props = {};\n\t\tfor (let k in this.props) {\n\t\t\tif (k === \"props\") continue;\n\t\t\tif (k === \"component\") continue;\n\t\t\tprops[k] = Store.get(this.props[k]);\n\t\t}\n\t\tfor (let k in this.props.props) {\n\t\t\tprops[k] = this.props.props[k];\n\t\t}\n\t\treturn React.cloneElement(this.props.component, props);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.unmounted = true;\n\t\tStore.unsubscribe(this.onStateChange, this.keys);\n\t}\n\n\tonStateChange = () => {\n\t\tif (this.unmounted) {\n\t\t\treturn;\n\t\t}\n\t\tthis.forceUpdate();\n\t};\n}\n\nexport function connect(component, keys, props) {\n\treturn ;\n}\n","import * as React from \"react\";\nimport Store from \"../../store\";\nimport StoreKeys from \"../../storeKeys\";\nimport { ReactComponent as TrafficLight } from \"icons/TrafficLight.svg\";\nimport { connect } from \"common/connect\";\nimport { makeStyles } from \"@material-ui/core\";\n\nconst propKeys = {\n\tisLoading: StoreKeys.IS_LOADING,\n\tloadingText: StoreKeys.LOADING_TEXT,\n};\n\nconst useStyles = makeStyles((theme) => ({\n\tloadingContainer: {\n\t\tdisplay: \"flex\",\n\t\tposition: \"fixed\",\n\t\twidth: \"100%\",\n\t\theight: \"100%\",\n\t\ttop: 0,\n\t\tleft: 0,\n\t\tzIndex: 1750,\n\t\tbackgroundColor: \"rgba(51, 51, 51, 0.5)\",\n\t\tbackdropFilter: \"blur(5px)\",\n\t},\n\theader: {\n\t\tcolor: theme.palette.secondary.main,\n\t\ttextAlign: \"center\",\n\t},\n\tcenter: {\n\t\tmargin: \"auto\",\n\t},\n\tspinnerIcon: {\n\t\twidth: 100,\n\t\theight: 100,\n\t\tdisplay: \"block\",\n\t\tmargin: \"auto\",\n\t},\n\trotate: {\n\t\tanimation: \"$rotation 1s infinite linear\",\n\t},\n\t\"@keyframes rotation\": {\n\t\t\"0%\": {\n\t\t\ttransform: \"rotate(0deg)\",\n\t\t},\n\t\t\"100%\": {\n\t\t\ttransform: \"rotate(359deg)\",\n\t\t},\n\t},\n}));\n\nfunction LoadingComponentC(props) {\n\tconst classNames = useStyles();\n\n\treturn (\n\t\t<>\n\t\t\t{props.isLoading && (\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t

{props.loadingText}

\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t)}\n\t\t\n\t);\n}\n\nexport function SetLoading(isLoading, text = \"Loading\") {\n\tconst obj = {};\n\tobj[StoreKeys.IS_LOADING] = isLoading;\n\tobj[StoreKeys.LOADING_TEXT] = text;\n\n\tStore.setMany(obj);\n}\n\nexport default function LoadingComponent() {\n\treturn connect(, propKeys);\n}\n","import React from \"react\";\n\nexport default class ModalHelper extends React.Component {\n\tstatic instance;\n\tstatic listenForCloseCallback;\n\tstatic listenForOpenCallback;\n\n\tstatic openModal(modal, onClose = null, props = {}) {\n\t\tif (ModalHelper.listenForOpenCallback) {\n\t\t\tModalHelper.listenForOpenCallback();\n\t\t\tModalHelper.listenForOpenCallback = null;\n\t\t}\n\n\t\tconst modalStates = ModalHelper.instance.state.modalStates ?? [];\n\n\t\tmodalStates.push(new ModalState(modal, props, onClose));\n\n\t\tModalHelper.instance.setState({\n\t\t\tmodalStates: [...modalStates],\n\t\t});\n\t}\n\n\tstatic closeAllModals() {\n\t\tif (ModalHelper.listenForCloseCallback) {\n\t\t\tModalHelper.listenForCloseCallback();\n\t\t\tModalHelper.listenForCloseCallback = null;\n\t\t}\n\n\t\tconst modalStates = ModalHelper.instance.state.modalStates ?? [];\n\t\tlet currentModal = modalStates.pop();\n\t\twhile (currentModal) {\n\t\t\tif (currentModal?.onClose) {\n\t\t\t\tcurrentModal.onClose();\n\t\t\t}\n\n\t\t\tcurrentModal = modalStates.pop();\n\t\t}\n\n\t\tModalHelper.instance.setState({\n\t\t\tmodalStates: [],\n\t\t});\n\t}\n\n\tstatic closeModal() {\n\t\tif (ModalHelper.listenForCloseCallback) {\n\t\t\tModalHelper.listenForCloseCallback();\n\t\t\tModalHelper.listenForCloseCallback = null;\n\t\t}\n\n\t\t/** @type {Array} */\n\t\tconst modalStates = ModalHelper.instance.state.modalStates ?? [];\n\t\tif (modalStates.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentModal = modalStates.pop();\n\t\tif (currentModal?.onClose) {\n\t\t\tcurrentModal.onClose();\n\t\t}\n\n\t\tModalHelper.instance.setState({\n\t\t\tmodalStates: [...modalStates],\n\t\t});\n\t}\n\n\tstatic removeListenForClose() {\n\t\tModalHelper.listenForCloseCallback = null;\n\t}\n\n\tstatic listenForOpen(callback) {\n\t\tModalHelper.listenForOpenCallback = callback;\n\t}\n\n\tstatic listenForClose(callback) {\n\t\tModalHelper.listenForCloseCallback = callback;\n\t}\n\n\t/**\n\t * Gets the current modal state being viewed.\n\t *\n\t * @returns {ModalState} the current modal state.\n\t */\n\tstatic getCurrentModalState() {\n\t\tconst last = ModalHelper.instance.state.modalStates.length;\n\t\tconst open = last > 0;\n\t\tif (!open) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn ModalHelper.instance.state.modalStates[last - 1];\n\t}\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tmodalStates: [],\n\t\t};\n\n\t\tModalHelper.instance = this;\n\t}\n\n\trender() {\n\t\tconst last = ModalHelper.instance.state.modalStates.length;\n\t\tconst open = last > 0;\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{open &&\n\t\t\t\t\tModalHelper.instance.state.modalStates.map((state, i) => {\n\t\t\t\t\t\tif (!state.modal) {\n\t\t\t\t\t\t\treturn <>;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst element = React.cloneElement(state.modal, state.props ?? {});\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\n\t\t);\n\t}\n}\n\nclass ModalState {\n\tconstructor(modal, props, onClose) {\n\t\tthis.modal = modal;\n\t\tthis.props = props;\n\t\tthis.onClose = onClose;\n\t}\n}\n","import ModalHelper from \"common/helpers/modalHelper\";\nimport * as React from \"react\";\n\nimport \"./CustomModal.scss\";\n\nexport default function CustomModal(props) {\n\tReact.useEffect(() => {\n\t\tconst callback = (e) => {\n\t\t\tif (e.key === \"Escape\") {\n\t\t\t\tModalHelper.closeModal();\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener(\"keydown\", callback);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(\"keydown\", callback);\n\t\t};\n\t});\n\n\tconst clickBackground = (e) => {\n\t\tif (\n\t\t\te.target.className === \"overlay\" ||\n\t\t\te.target.className === \"overlay-inner\"\n\t\t) {\n\t\t\tModalHelper.closeModal();\n\t\t}\n\t};\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t
{props.children}
\n\t\t\t
\n\t\t
\n\t);\n}\n","import * as React from \"react\";\nimport { Box, Container, Divider, Paper } from \"@material-ui/core\";\n\nexport class ModalPanelTransparent extends React.Component {\n\trender() {\n\t\treturn (\n\t\t\t
\n\t\t\t\t{this.props.children}\n\t\t\t
\n\t\t);\n\t}\n}\n\nexport class ModalPanel extends React.Component {\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t{this.props.children}\n\t\t\t\n\t\t);\n\t}\n}\n\nexport class ModalHeader extends React.Component {\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t

{this.props.children}

\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n}\n\nexport class IconModalHeader extends React.Component {\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n\nexport class ModalBody extends React.Component {\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t{this.props.children}\n\t\t\t\n\t\t);\n\t}\n}\n\nexport class ModalFooter extends React.Component {\n\trender() {\n\t\treturn (\n\t\t\t{this.props.children}\n\t\t);\n\t}\n}\n\nexport class ModalDivider extends React.Component {\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n","var _defs, _g, _text, _rect, _rect2;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgDiscord = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Component_77_1\",\n \"data-name\": \"Component 77 \\\\u2013 1\",\n width: 79,\n height: 51,\n viewBox: \"0 0 79 51\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"discord\",\n preserveAspectRatio: \"none\",\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 213 240\"\n }, /*#__PURE__*/React.createElement(\"image\", {\n width: 213,\n height: 240,\n xlinkHref: \"data:image/png;base64,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\"\n })), /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"discord-2\",\n preserveAspectRatio: \"none\",\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 583 159\"\n }, /*#__PURE__*/React.createElement(\"image\", {\n width: 583,\n height: 159,\n xlinkHref: \"data:image/png;base64,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\"\n })))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_103\",\n \"data-name\": \"Group 103\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Rectangle_1066\",\n \"data-name\": \"Rectangle 1066\",\n fill: \"#727272\",\n stroke: \"#727272\",\n strokeLinecap: \"round\",\n strokeWidth: 2\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 79,\n height: 51,\n rx: 12,\n stroke: \"none\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 1,\n y: 1,\n width: 77,\n height: 49,\n rx: 11,\n fill: \"none\"\n })))), _text || (_text = /*#__PURE__*/React.createElement(\"text\", {\n id: \"Chat_with_us\",\n \"data-name\": \"Chat with us\",\n transform: \"translate(41.061 9)\",\n fill: \"#373737\",\n fontSize: 8,\n fontFamily: \"Arial-BoldMT, Arial\",\n fontWeight: 700,\n letterSpacing: \"0.05em\"\n }, /*#__PURE__*/React.createElement(\"tspan\", {\n x: -25.977,\n y: 0\n }, \"Chat with us\"))), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Discord-Logo-White\",\n width: 27,\n height: 30,\n transform: \"translate(26 11)\",\n fill: \"url(#discord)\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Discord-Wordmark-White\",\n width: 51,\n height: 14,\n transform: \"translate(14 35)\",\n fill: \"url(#discord-2)\"\n })));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgDiscord, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/Discord.0d5a3458.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { ReactComponent as DiscordImage } from \"icons/Discord.svg\";\n\nconst useStyles = makeStyles((theme) => ({\n\tbutton: {\n\t\tcursor: \"pointer\",\n\t\tmargin: 2,\n\n\t\t\"&.disabled\": {\n\t\t\topacity: 0.3,\n\t\t},\n\t},\n}));\n\nexport default function Discord(props) {\n\tconst classNames = useStyles();\n\n\tconst clickDiscord = () => {\n\t\twindow.open(\"https://discord.gg/SHrtVxChFF\", \"_blank\");\n\t};\n\n\treturn ;\n}\n","import CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalBody,\n\tModalHeader,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport * as React from \"react\";\nimport \"../SuccessFailModal/SuccessFailModal.scss\";\nimport Discord from \"common/components/Discord/Discord\";\n\nexport default function ErrorModal({ message, displayContactDiscord }) {\n\tmessage = typeof message === \"object\" ? JSON.stringify(message) : message;\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tError\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t{(displayContactDiscord ?? true) && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t);\n}\n","import React from \"react\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalPanel,\n\tModalHeader,\n\tModalBody,\n\tModalFooter,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport { changeUrl } from \"common/history\";\n\nexport default class EmailUsernameChangePrompt extends React.Component {\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tUsername is email address\n\t\t\t\t\t\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\tIt looks like your username is email address.
\n\t\t\t\t\t\t\tWould you like to change it?\n\t\t\t\t\t\t

\n\t\t\t\t\t\t

Keep in mind that your username can be seen by everyone.

\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n\n\thandleYes() {\n\t\tModalHelper.closeModal();\n\t\tchangeUrl(\"/pick-username\");\n\t}\n\n\thandleNo() {\n\t\tModalHelper.closeModal();\n\t}\n}\n","import React from \"react\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalPanel,\n\tModalHeader,\n\tModalBody,\n\tModalFooter,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport { changeUrl } from \"common/history\";\n\nexport default class UsernameChangePrompt extends React.Component {\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tUsername Change\n\t\t\t\t\t\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\tYour account was flagged for a username change by an admin or\n\t\t\t\t\t\t\tautomated process.
\n\t\t\t\t\t\t\tPlease change your username now.\n\t\t\t\t\t\t

\n\t\t\t\t\t\t

Keep in mind that your username can be seen by everyone.

\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n\n\thandleOk() {\n\t\tModalHelper.closeModal();\n\t\tchangeUrl(\"/pick-username\");\n\t}\n}\n","export const LocalStorageKeys = {\n\tGAME: \"GAME\",\n\tPOSTLOGINURL: \"POSTLOGINURL\",\n\tPOSTLINKURL: \"POSTLINKURL\",\n};\n\nexport const SessionStorageKeys = {\n\tGAME: \"GAME\",\n\tEVENTID: \"EVENTID\",\n\tGROUPPICKS: \"GROUPPICKS\",\n\tMATCHPICKS: \"MATCHPICKS\",\n};\n","import { changeUrl } from \"common/history\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport { LocalStorageKeys, SessionStorageKeys } from \"./StorageKeys\";\n\nexport const GamesEnum = {\n\tRocketLeague: 1,\n\tCounterStrike: 2,\n};\n\nexport const games = [\n\t{\n\t\tid: GamesEnum.RocketLeague,\n\t\tprefix: \"rl\",\n\t\ttrophyImagePrefix: \"rl\",\n\t\tactive: true,\n\t},\n\t{\n\t\tid: GamesEnum.CounterStrike,\n\t\tprefix: \"cs\",\n\t\ttrophyImagePrefix: \"cs\",\n\t\tactive: true,\n\t},\n];\n\nexport function GetCurrentGameId() {\n\treturn Number(\n\t\tsessionStorage.getItem(SessionStorageKeys.GAME) ??\n\t\t\tlocalStorage.getItem(LocalStorageKeys.GAME) ??\n\t\t\t1\n\t);\n}\n\nexport function GetCurrentGamePrefix() {\n\tconst currentGameId = GetCurrentGameId();\n\treturn `/${games.find((g) => g.id === currentGameId)?.prefix}`;\n}\n\nexport function GetCurrentGameTrophyPath() {\n\tconst currentGameId = GetCurrentGameId();\n\treturn `/images/${\n\t\tgames.find((g) => g.id === currentGameId)?.trophyImagePrefix\n\t}`;\n}\n\nexport function SetGameInStore(newGameId) {\n\t// Update path in session/local storage.\n\tsessionStorage.setItem(SessionStorageKeys.GAME, newGameId);\n\tlocalStorage.setItem(LocalStorageKeys.GAME, newGameId);\n}\n\nexport function SetGameGlobally(oldGameId, newGameId, reload) {\n\tif (newGameId === oldGameId) {\n\t\treturn;\n\t}\n\n\tSetGameInStore(newGameId);\n\n\t// Update pathname\n\tlet pathname = window.location.pathname;\n\tif (oldGameId) {\n\t\tconst oldGame = games.find((g) => g.id === oldGameId);\n\t\tif (pathname.startsWith(`/${oldGame.prefix}`)) {\n\t\t\tpathname = pathname.substring(oldGame.prefix.length + 1);\n\t\t}\n\t}\n\n\tif (pathname.startsWith(\"/event\")) {\n\t\tpathname = \"/event\";\n\t}\n\n\tconst route = GetCurrentGamePrefix();\n\tchangeUrl(`${route}${pathname}`);\n\n\tif (reload) {\n\t\twindow.location.reload();\n\t}\n}\n","export const Colors = {\n\tprimary: \"#ECECEC\",\n\tprimaryDark: \"#B8B8B8\",\n\tprimaryDarker: \"#8c8c8c\",\n\tsecondary: \"#ffb300\",\n\tsecondaryDark: \"#bf8600\",\n\tpickstop: \"#ffb300\",\n\tpickstopGreen: \"#5cdc63\",\n\tpanelDark: \"#272727\",\n\tpanel: \"#373737\",\n\tpanelLight: \"#474747\",\n\tpanelLighterColor: \"#727272\",\n\tgreyText: \"#4B4B4B\",\n\tbody: \"#575757\",\n\terror: \"#ff4444\",\n\tgreen: \"#78DE7E\",\n\tgreenPanel: \"#4A674B\",\n\tred: \"#FF5151\",\n\n\tlightGray: \"#B9B8B8\",\n\twhite: \"#FFFFFF\",\n\tsoftWhite: \"#F8F8F8\",\n\tdiamond: \"#666E82\",\n\tdiamond_light: \"#E1E9FF\",\n\tplatinum: \"#587485\",\n\tplatinum_light: \"#8BCAFF\",\n\tgold: \"#85745B\",\n\tgold_light: \"#EFCF66\",\n\tsilver: \"#676767\",\n\tsilver_light: \"#B9B8B8\",\n\tbronze: \"#786057\",\n\tbronze_light: \"#E6A780\",\n\twood: \"#806346\",\n\twood_light: \"#DE9343\",\n\n\tpatreon: \"#FF424D\",\n};\n","import axiosWrapper from \"common/axiosWrapper\";\n\n/** Gets the discord login url. */\nexport const getDiscordUrl = async () => {\n\treturn await axiosWrapper.getCached(`api/auth/discord-url`);\n};\n\n/** Gets the google url. */\nexport const getGoogleUrl = async () => {\n\treturn await axiosWrapper.getCached(`api/auth/google-url`);\n};\n\n/** Gets the patreon url. */\nexport const getRedditUrl = async () => {\n\treturn await axiosWrapper.getCached(`api/auth/reddit-url`);\n};\n","import { Colors } from \"styles/Colors\";\nimport {\n\tBox,\n\tButton,\n\tGrid,\n\tInputAdornment,\n\tmakeStyles,\n\tTextField,\n\tTypography,\n} from \"@material-ui/core\";\nimport { Email, Person, VpnKey } from \"@material-ui/icons\";\nimport React, { useEffect, useState } from \"react\";\nimport { getDiscordUrl, getGoogleUrl, getRedditUrl } from \"./api\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport UserManager from \"common/userManager\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalBody,\n\tModalDivider,\n\tModalHeader,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport { changeUrl } from \"common/history\";\n\nconst useStyles = makeStyles({\n\tprovider: {\n\t\tcursor: \"pointer\",\n\t\tmarginLeft: \"auto\",\n\t\tmarginRight: \"auto\",\n\t\tdisplay: \"block\",\n\t\tpaddingTop: 8,\n\t\tpaddingBottom: 8,\n\t},\n\tcentered: {\n\t\ttextAlign: \"center\",\n\t},\n\terrorMessage: {\n\t\tcolor: Colors.error,\n\t},\n});\n\nexport default function RegisterModal() {\n\tconst styles = useStyles();\n\tconst [username, setUsername] = useState(\"\");\n\tconst [usernameError, setUsernameError] = useState(null);\n\tconst [password, setPassword] = useState(\"\");\n\tconst [passwordError, setPasswordError] = useState(null);\n\tconst [confirmPassword, setConfirmPassword] = useState(\"\");\n\tconst [confirmPasswordError, setConfirmPasswordError] = useState(null);\n\tconst [email, setEmail] = useState(\"\");\n\tconst [emailError, setEmailError] = useState(null);\n\tconst [discordUrl, setDiscordUrl] = useState(\"\");\n\tconst [googleUrl, setGoogleUrl] = useState(\"\");\n\tconst [redditUrl, setRedditUrl] = useState(\"\");\n\n\tuseEffect(() => {\n\t\tif (discordUrl === \"\") {\n\t\t\tgetDiscordUrl().then((url) => {\n\t\t\t\tsetDiscordUrl(url);\n\t\t\t});\n\t\t}\n\t\tif (googleUrl === \"\") {\n\t\t\tgetGoogleUrl().then((url) => {\n\t\t\t\tsetGoogleUrl(url);\n\t\t\t});\n\t\t}\n\t\tif (redditUrl === \"\") {\n\t\t\tgetRedditUrl().then((url) => {\n\t\t\t\tsetRedditUrl(url);\n\t\t\t});\n\t\t}\n\t});\n\n\tconst validateForm = (username, email, password, confirmPassword) => {\n\t\tif (\n\t\t\tusername.length === 0 ||\n\t\t\temail.length === 0 ||\n\t\t\tpassword.length === 0 ||\n\t\t\tconfirmPassword.length === 0\n\t\t) {\n\t\t\t// Error\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst onSubmitClicked = (event) => {\n\t\tif (event) {\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\tif (\n\t\t\tvalidateForm(\n\t\t\t\tusername.trim(),\n\t\t\t\temail.trim(),\n\t\t\t\tpassword.trim(),\n\t\t\t\tconfirmPassword.trim()\n\t\t\t)\n\t\t) {\n\t\t\tSetLoading(true, \"Creating Account...\");\n\n\t\t\tUserManager.register(username, email, password, confirmPassword).then(\n\t\t\t\t(result) => {\n\t\t\t\t\tSetLoading(false);\n\t\t\t\t\tif (\n\t\t\t\t\t\tresult.usernameError ||\n\t\t\t\t\t\tresult.emailError ||\n\t\t\t\t\t\tresult.passwordError ||\n\t\t\t\t\t\tresult.confirmPasswordError\n\t\t\t\t\t) {\n\t\t\t\t\t\tsetUsernameError(result.usernameError);\n\t\t\t\t\t\tsetEmailError(result.emailError);\n\t\t\t\t\t\tsetPasswordError(result.passwordError);\n\t\t\t\t\t\tsetConfirmPasswordError(result.confirmPasswordError);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tUserManager.login(username, password)\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\tchangeUrl(\"/\");\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\t\t\t// Something went wrong, try to login manually.\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n\tconst onDiscordLogin = () => {\n\t\twindow.location.replace(discordUrl);\n\t};\n\n\tconst onGoogleLogin = () => {\n\t\twindow.location.replace(googleUrl);\n\t};\n\n\tconst onRedditLogin = () => {\n\t\twindow.location.replace(redditUrl);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\tRegister\n\t\t\t\t\n\t\t\t\t\t onSubmitClicked(e)}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t setUsername(e.target.value)}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\tautoComplete=\"username\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\tstartAdornment: (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\t{usernameError && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t setEmail(e.target.value)}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\tstartAdornment: (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\t{emailError && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t setPassword(e.target.value)}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\tstartAdornment: (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\t{passwordError && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t setConfirmPassword(e.target.value)}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\tstartAdornment: (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\t{confirmPasswordError && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tOr create a Pickstop account linked to your Google or Discord\n\t\t\t\t\t\t\taccount\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{discordUrl !== \"\" && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t onDiscordLogin()}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{googleUrl !== \"\" && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t onGoogleLogin()}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{redditUrl !== \"\" && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t onRedditLogin()}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n","import axiosWrapper from \"common/axiosWrapper\";\n\n/** Gets the discord login url. */\nexport const getDiscordUrl = async () => {\n\treturn await axiosWrapper.getCached(`api/auth/discord-url`);\n};\n\n/** Gets the google url. */\nexport const getGoogleUrl = async () => {\n\treturn await axiosWrapper.getCached(`api/auth/google-url`);\n};\n\n/** Gets the patreon url. */\nexport const getPatreonUrl = async () => {\n\treturn await axiosWrapper.getCached(`api/auth/patreon-url`);\n};\n\n/** Gets the patreon url. */\nexport const getRedditUrl = async () => {\n\treturn await axiosWrapper.getCached(`api/auth/reddit-url`);\n};\n","import {\n\tBox,\n\tButton,\n\tGrid,\n\tInputAdornment,\n\tmakeStyles,\n\tTextField,\n} from \"@material-ui/core\";\nimport { Person, VpnKey } from \"@material-ui/icons\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalBody,\n\tModalDivider,\n\tModalHeader,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport { GetCurrentGamePrefix } from \"common/constants/Games\";\nimport { LocalStorageKeys } from \"common/constants/StorageKeys\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport { changeUrl } from \"common/history\";\nimport UserManager from \"common/userManager\";\nimport React, { useEffect, useState } from \"react\";\nimport { Colors } from \"styles/Colors\";\nimport RegisterModal from \"../RegisterModal/RegisterModal\";\nimport { getDiscordUrl, getGoogleUrl, getRedditUrl } from \"./api\";\n\nconst useStyles = makeStyles({\n\tprovider: {\n\t\tcursor: \"pointer\",\n\t\tmarginLeft: \"auto\",\n\t\tmarginRight: \"auto\",\n\t\tdisplay: \"block\",\n\t\tpaddingTop: 8,\n\t},\n\tcentered: {\n\t\ttextAlign: \"center\",\n\t},\n\terrorMessage: {\n\t\tcolor: Colors.error,\n\t},\n});\n\nexport default function LoginModal() {\n\tconst styles = useStyles();\n\tconst [username, setUsername] = useState(\"\");\n\tconst [password, setPassword] = useState(\"\");\n\tconst [discordUrl, setDiscordUrl] = useState(\"\");\n\tconst [googleUrl, setGoogleUrl] = useState(\"\");\n\tconst [redditUrl, setRedditUrl] = useState(\"\");\n\tconst [errorMessage, setErrorMessage] = useState(null);\n\n\tuseEffect(() => {\n\t\tif (discordUrl === \"\") {\n\t\t\tgetDiscordUrl().then((url) => {\n\t\t\t\tsetDiscordUrl(url);\n\t\t\t});\n\t\t}\n\t\tif (googleUrl === \"\") {\n\t\t\tgetGoogleUrl().then((url) => {\n\t\t\t\tsetGoogleUrl(url);\n\t\t\t});\n\t\t}\n\t\tif (redditUrl === \"\") {\n\t\t\tgetRedditUrl().then((url) => {\n\t\t\t\tsetRedditUrl(url);\n\t\t\t});\n\t\t}\n\t}, [discordUrl, googleUrl, redditUrl]);\n\n\tconst validateUsernamePassword = () => {\n\t\tif (username.length === 0 || password.length === 0) {\n\t\t\t// Error\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst onLoginClicked = (event) => {\n\t\tif (event) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t\tif (validateUsernamePassword()) {\n\t\t\tSetLoading(true, \"Attempting Login...\");\n\t\t\tUserManager.login(username, password)\n\t\t\t\t.then(() => {\n\t\t\t\t\tSetLoading(false);\n\t\t\t\t\tModalHelper.closeModal();\n\n\t\t\t\t\tconst redirect = localStorage.getItem(LocalStorageKeys.POSTLOGINURL);\n\t\t\t\t\tif (redirect) {\n\t\t\t\t\t\tlocalStorage.removeItem(LocalStorageKeys.POSTLOGINURL);\n\t\t\t\t\t\tchangeUrl(redirect);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst route = GetCurrentGamePrefix();\n\t\t\t\t\t\tchangeUrl(route + \"/event\");\n\t\t\t\t\t\twindow.location.reload();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tSetLoading(false);\n\n\t\t\t\t\tif (err.response.status === 401) {\n\t\t\t\t\t\tsetErrorMessage(\"Invalid Username or Password provided\");\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t};\n\n\tconst onCreateAccount = () => {\n\t\tModalHelper.closeModal();\n\t\tModalHelper.openModal();\n\t};\n\n\tconst onDiscordLogin = () => {\n\t\twindow.location.replace(discordUrl);\n\t};\n\n\tconst onGoogleLogin = () => {\n\t\twindow.location.replace(googleUrl);\n\t};\n\n\tconst onRedditUrl = () => {\n\t\twindow.location.replace(redditUrl);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\tLog In\n\t\t\t\t\n\t\t\t\t\t
onLoginClicked(e)}>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t setUsername(e.target.value)}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\tautoFocus\n\t\t\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\tstartAdornment: (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t setPassword(e.target.value)}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\tstartAdornment: (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\t{errorMessage}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{discordUrl !== \"\" && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t onDiscordLogin()}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{googleUrl !== \"\" && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t onGoogleLogin()}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{redditUrl !== \"\" && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t onRedditUrl()}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t onCreateAccount()}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tCreate Account\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{/* Forgot password */}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n","import * as React from \"react\";\nimport axiosWrapper from \"common/axiosWrapper\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport EmailUsernameChangePrompt from \"common/components/Modals/EmailUsernameChangePrompt/EmailUsernameChangePrompt\";\nimport UsernameChangePrompt from \"common/components/Modals/UsernameChangePrompt/UsernameChangePrompt\";\nimport LoginModal from \"common/components/Modals/LoginModal/LoginModal\";\nimport RegisterModal from \"common/components/Modals/RegisterModal/RegisterModal\";\n// eslint-disable-next-line no-unused-vars\nimport AuthenticationResultDto from \"common/types/AuthenticationResultDto\";\nimport AuthService from \"services/AuthService\";\n\nexport default class UserManager {\n\tstatic loginCallbacks = [];\n\n\t/**\n\t * @returns {number | null} the user id if set in session storage.\n\t */\n\tstatic getUserId() {\n\t\treturn Store.get(StoreKeys.USER.ID);\n\t}\n\n\t/**\n\t * @returns {string | null} the username if set in session storage.\n\t */\n\tstatic getUsername() {\n\t\treturn Store.get(StoreKeys.USER.USERNAME);\n\t}\n\n\tstatic setUsername(username) {\n\t\tStore.set(StoreKeys.USER.USERNAME, username);\n\t}\n\n\t/**\n\t * @returns {boolean} true if the user has a token in storage.\n\t */\n\tstatic isLoggedIn() {\n\t\treturn Store.get(StoreKeys.USER.LOGGED_IN);\n\t}\n\n\t/**\n\t * Login the user with the provided username and password.\n\t *\n\t * @param {string} username\n\t * @param {string} password\n\t * @returns {Promise} The response containing a token if successful.\n\t */\n\tstatic login(username, password) {\n\t\treturn axiosWrapper\n\t\t\t.post(\"/api/auth/login\", {\n\t\t\t\tusername,\n\t\t\t\tpassword,\n\t\t\t})\n\t\t\t.then(UserManager.handlePostLogin);\n\t}\n\n\t/**\n\t * Logout the user.\n\t */\n\tstatic async logout() {\n\t\tawait AuthService.logout();\n\t}\n\n\t/**\n\t * Register the user with the provided username and password.\n\t *\n\t * @param {string} username\n\t * @param {string} email\n\t * @param {string} password\n\t * @param {string} confirmPassword\n\t */\n\tstatic register(username, email, password, confirmPassword) {\n\t\treturn axiosWrapper.post(\"/api/account/register\", {\n\t\t\tusername,\n\t\t\temail,\n\t\t\tpassword,\n\t\t\tconfirmPassword,\n\t\t});\n\t}\n\n\t/**\n\t * Attempts to change the user's username.\n\t *\n\t * @param {string} username The username to change to.\n\t */\n\tstatic changeUsername(username) {\n\t\treturn axiosWrapper\n\t\t\t.post(`api/account/username`, { username })\n\t\t\t.then((result) => {\n\t\t\t\tif (!result.error) {\n\t\t\t\t\tsessionStorage.setItem(UserManager.pickstopUser, username);\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t});\n\t}\n\n\t/**\n\t * Attempts to change the user's password based on reset id.\n\t *\n\t * @param {string} resetId\n\t * @param {string} username\n\t * @param {string} password\n\t * @param {string} confirmPassword\n\t */\n\tstatic changePassword(resetId, username, password, confirmPassword) {\n\t\treturn axiosWrapper.post(`api/account/changepassword`, {\n\t\t\tresetId,\n\t\t\tusername,\n\t\t\tpassword,\n\t\t\tconfirmPassword,\n\t\t});\n\t}\n\n\t/**\n\t *\n\t * @param {AuthenticationResultDto} authenticationResult\n\t */\n\tstatic async handlePostLogin(authenticationResult) {\n\t\tStore.set(StoreKeys.USER.LOADED, false);\n\t\tawait UserManager.getUserData();\n\t\tif (authenticationResult.usernameIsEmail) {\n\t\t\tModalHelper.openModal(, null);\n\t\t} else if (authenticationResult.usernameChangeAvailable) {\n\t\t\tModalHelper.openModal(, null);\n\t\t}\n\n\t\tUserManager.loginCallbacks.forEach((callback) => {\n\t\t\tcallback();\n\t\t});\n\t}\n\n\tstatic openLoginModal() {\n\t\tModalHelper.openModal();\n\t}\n\n\tstatic openRegisterModal() {\n\t\tModalHelper.openModal();\n\t}\n\n\tstatic async getUserData() {\n\t\tif (Store.get(StoreKeys.USER.LOGGED_IN)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst user = await UserManager.getCurrentUser();\n\t\tconst updates = {};\n\t\tupdates[StoreKeys.USER.ID] = user?.id;\n\t\tupdates[StoreKeys.USER.USERNAME] = user?.username;\n\t\tupdates[StoreKeys.ROLES] = user?.roles;\n\t\tupdates[StoreKeys.USER.LOADED] = true;\n\t\tupdates[StoreKeys.USER.LOGGED_IN] = !!user;\n\t\tStore.setMany(updates);\n\t}\n\n\tstatic getCurrentUser = async () => {\n\t\treturn await axiosWrapper.get(`api/user/currentUser`);\n\t};\n\n\tstatic onLogin(callback) {\n\t\tUserManager.loginCallbacks.push(callback);\n\t}\n}\n\nexport class AuthenticationResult {\n\ttoken;\n\tuserId;\n\tusername;\n\tcreated;\n}\n","import axiosWrapper from \"common/axiosWrapper\";\n\nconst baseUrl = \"/api/auth\";\n\n/** The auth service which calls the API endpoints for the Auth Controller */\nexport default class AuthService {\n\t/**\n\t * Gets the patreon url to link your account with.\n\t *\n\t * @returns {Promise} The url.\n\t */\n\t// static async getPatreonUrl() {\n\t// \tconst route = `/patreon-url`;\n\t// \treturn await axiosWrapper.get(`${baseUrl}${route}`);\n\t// }\n\n\tstatic async logout() {\n\t\treturn await axiosWrapper.post(`${baseUrl}/logout`, {});\n\t}\n}\n","import axios from \"axios\";\nimport ErrorModal from \"./components/Modals/ErrorModal/ErrorModal\";\nimport ModalHelper from \"./helpers/modalHelper\";\nimport Store from \"./store\";\nimport StoreKeys from \"./storeKeys\";\nimport UserManager from \"./userManager\";\nimport * as React from \"react\";\nimport { GetCurrentGameId } from \"./constants/Games\";\n\nconst handleError = (error) => {\n\tconst response = error.response;\n\tif (response.status === 401) {\n\t\tthrow new Error(\"Unauthorized\");\n\t} else if (response.status === 400) {\n\t\tlet message = response.data;\n\t\tif (response.data[\"title\"]) {\n\t\t\tmessage = response.data[\"title\"];\n\t\t}\n\t\tModalHelper.openModal(\n\t\t\t,\n\t\t\tnull\n\t\t);\n\t}\n\n\tthrow response.data;\n};\n\nclass AxiosWrapper {\n\tcache = new Map();\n\n\tget = async (url) => {\n\t\tconst config = await this.getConfig();\n\n\t\ttry {\n\t\t\tconst result = await axios.get(url, config);\n\t\t\treturn result.data;\n\t\t} catch (error) {\n\t\t\thandleError(error);\n\t\t}\n\t};\n\n\tgetCached = async (url) => {\n\t\tif (this.cache.has(url)) {\n\t\t\treturn Promise.resolve(this.cache.get(url));\n\t\t}\n\n\t\treturn this.get(url).then((value) => {\n\t\t\tthis.cache.set(url, value);\n\n\t\t\treturn value;\n\t\t});\n\t};\n\n\t/**\n\t * Used to clear a specific url from cache.\n\t *\n\t * @param {string | null} url\n\t */\n\tclearCache = (url) => {\n\t\tif (!url) {\n\t\t\tthis.cache = new Map();\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.cache.has(url)) {\n\t\t\tthis.cache.delete(url);\n\t\t}\n\t};\n\n\tgetConfig = async () => {\n\t\tconst config = {};\n\t\tconfig.headers = {};\n\n\t\tconfig.headers.Game = GetCurrentGameId();\n\n\t\treturn config;\n\t};\n\n\tpost = async (url, data) => {\n\t\tconst config = await this.getConfig();\n\n\t\ttry {\n\t\t\tconst result = await axios.post(url, data, config);\n\t\t\treturn result.data;\n\t\t} catch (error) {\n\t\t\thandleError(error);\n\t\t}\n\t};\n\n\tdelete = async (url) => {\n\t\tconst config = await this.getConfig();\n\n\t\ttry {\n\t\t\tconst result = await axios.delete(url, config);\n\t\t\treturn result.data;\n\t\t} catch (error) {\n\t\t\thandleError(error);\n\t\t}\n\t};\n}\n\nconst axiosWrapper = new AxiosWrapper();\nexport default axiosWrapper;\n","import axiosWrapper from \"common/axiosWrapper\";\nimport Store from \"common/store\";\nimport StoreKeys from \"../storeKeys\";\n\nexport default class SettingsHelper {\n\t/** @type {Map} */\n\tstatic settings = new Map();\n\t/** @type {boolean} */\n\tstatic loading = false;\n\t/** @type {Promise} */\n\tstatic loadingPromise = null;\n\n\tconstructor() {\n\t\tSettingsHelper.loadingPromise = SettingsHelper.loadSettingsFromApi();\n\t}\n\n\t/** @returns {Promise} */\n\tstatic async getSetting(settingName) {\n\t\tif (SettingsHelper.settings.size === 0) {\n\t\t\tawait SettingsHelper.loadSettingsFromApi();\n\t\t}\n\n\t\tif (SettingsHelper.settings.has(settingName)) {\n\t\t\treturn SettingsHelper.settings.get(settingName);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tstatic async loadSettingsFromApi() {\n\t\tif (this.loading) {\n\t\t\tawait this.loadingPromise;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.loading = true;\n\t\tthis.loadingPromise = new Promise(async (resolve) => {\n\t\t\t/** @type {Array} */\n\t\t\tconst rawSettings = await axiosWrapper.getCached(\"api/settings/all\");\n\n\t\t\tconst setKeys = {};\n\t\t\tfor (const setting of rawSettings) {\n\t\t\t\tconst value = SettingsHelper.parseValueToObject(setting.value);\n\t\t\t\tSettingsHelper.settings.set(setting.name, value);\n\n\t\t\t\tif (setting.storeKey) {\n\t\t\t\t\tsetKeys[setting.storeKey] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetKeys[StoreKeys.SETTINGS.LOADED] = true;\n\t\t\tStore.setMany(setKeys);\n\n\t\t\tresolve();\n\t\t});\n\t}\n\n\t/**\n\t * @param {string} value\n\t * @returns {any}\n\t */\n\tstatic parseValueToObject(value) {\n\t\tif (value.length === 0) {\n\t\t\treturn value;\n\t\t}\n\n\t\tconst lowerCase = value.toLowerCase();\n\t\tif (lowerCase === \"true\") {\n\t\t\treturn true;\n\t\t} else if (lowerCase === \"false\") {\n\t\t\treturn false;\n\t\t} else if (lowerCase === \"null\") {\n\t\t\treturn null;\n\t\t} else if (lowerCase === \"undefined\") {\n\t\t\treturn undefined;\n\t\t} else if (Number.isInteger(value)) {\n\t\t\treturn Number(value);\n\t\t}\n\t}\n}\n\n// eslint-disable-next-line no-unused-vars\nclass Setting {\n\t/** @type {number} */\n\tid;\n\t/** @type {string} */\n\tname;\n\t/** @type {string} */\n\tvalue;\n\t/** @type {string | null} */\n\tstoreKey;\n}\n","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgPickstopLogoNew = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"svg\",\n width: 200,\n height: 60,\n viewBox: \"0, 0, 400,63.32631578947368\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"svgg\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"path0\",\n d: \"M332.500 14.083 L 332.500 23.355 337.542 23.299 C 342.291 23.246,342.637 23.221,343.507 22.872 C 347.174 21.402,347.795 15.746,344.497 13.862 L 343.655 13.382 344.247 12.930 C 346.208 11.435,346.227 7.708,344.283 6.065 C 342.985 4.967,342.725 4.922,337.375 4.864 L 332.500 4.811 332.500 14.083 M351.000 14.083 L 351.000 23.333 358.000 23.333 L 365.000 23.333 365.000 22.083 L 365.000 20.833 359.417 20.833 L 353.833 20.833 353.833 17.833 L 353.833 14.833 358.833 14.833 L 363.833 14.833 363.833 13.667 L 363.833 12.500 358.833 12.500 L 353.833 12.500 353.833 9.833 L 353.833 7.167 359.167 7.167 L 364.500 7.167 364.500 6.000 L 364.500 4.833 357.750 4.833 L 351.000 4.833 351.000 14.083 M368.000 6.000 L 368.000 7.167 371.000 7.167 L 374.000 7.167 374.000 15.250 L 374.000 23.333 375.333 23.333 L 376.667 23.333 376.667 15.250 L 376.667 7.167 379.667 7.167 L 382.667 7.167 382.667 6.000 L 382.667 4.833 375.333 4.833 L 368.000 4.833 368.000 6.000 M386.757 11.708 C 385.312 15.490,384.019 18.808,383.885 19.083 C 383.488 19.894,382.335 22.899,382.334 23.125 C 382.334 23.276,382.737 23.333,383.797 23.333 L 385.261 23.333 386.265 20.542 L 387.269 17.750 390.923 17.750 L 394.577 17.750 395.643 20.542 L 396.710 23.333 398.188 23.333 C 399.001 23.333,399.667 23.266,399.667 23.183 C 399.667 22.896,396.688 15.460,392.801 6.042 L 392.302 4.833 390.844 4.833 L 389.385 4.833 386.757 11.708 M341.750 7.602 C 343.559 8.544,343.522 11.142,341.688 12.030 C 341.048 12.340,340.572 12.397,338.059 12.466 L 335.167 12.545 335.167 9.837 L 335.167 7.129 338.125 7.192 C 340.724 7.247,341.164 7.297,341.750 7.602 M391.000 8.010 C 391.000 8.107,391.600 9.799,392.333 11.770 C 393.067 13.742,393.667 15.387,393.667 15.427 C 393.667 15.467,392.429 15.500,390.917 15.500 C 389.404 15.500,388.167 15.439,388.167 15.365 C 388.167 15.291,388.611 14.035,389.153 12.574 C 389.696 11.112,390.277 9.448,390.445 8.875 C 390.715 7.955,391.000 7.510,391.000 8.010 M342.254 15.343 C 344.423 16.459,344.334 19.528,342.105 20.497 C 341.532 20.746,340.893 20.800,338.292 20.820 L 335.167 20.845 335.167 17.821 L 335.167 14.797 338.296 14.857 C 341.266 14.914,341.468 14.938,342.254 15.343 M5.748 49.042 L 5.750 57.250 14.417 57.252 L 23.083 57.254 14.460 57.209 L 5.836 57.164 5.791 48.998 L 5.745 40.833 5.748 49.042 \",\n stroke: \"none\",\n fill: \"#bcbcc3\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"path1\",\n d: \"M7.077 40.232 C 6.616 40.344,6.147 40.492,6.036 40.561 C 5.881 40.657,5.833 42.644,5.833 48.928 L 5.833 57.170 14.530 57.126 L 23.226 57.083 23.375 56.583 C 23.930 54.724,23.469 50.640,22.426 48.165 C 20.004 42.422,12.989 38.796,7.077 40.232 \",\n stroke: \"none\",\n fill: \"#5cdc63\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"path2\",\n d: \"M10.413 0.162 C 5.428 0.910,1.589 4.296,0.310 9.072 C 0.014 10.175,-0.000 11.432,-0.000 36.697 L 0.000 63.167 24.296 63.167 C 48.840 63.167,50.301 63.135,52.333 62.553 C 56.076 61.482,59.382 58.002,60.459 54.000 C 60.913 52.310,60.907 10.819,60.452 9.167 C 59.263 4.853,56.056 1.652,51.667 0.401 C 50.517 0.073,12.473 -0.147,10.413 0.162 M50.345 6.102 C 52.211 6.654,53.654 7.890,54.473 9.637 L 54.917 10.583 54.967 16.233 C 54.994 19.340,54.974 21.995,54.921 22.131 C 54.869 22.268,54.828 28.662,54.831 36.340 C 54.838 53.603,54.879 53.232,52.750 55.365 C 52.383 55.732,51.708 56.232,51.250 56.475 L 50.417 56.917 36.792 56.962 C 27.977 56.992,23.167 57.066,23.167 57.172 C 23.167 57.278,20.101 57.321,14.458 57.293 L 5.750 57.250 5.705 49.167 C 5.675 43.903,5.719 40.967,5.830 40.750 C 5.941 40.532,6.015 35.243,6.042 25.500 L 6.083 10.583 6.656 9.528 C 7.411 8.135,8.686 7.005,10.039 6.530 C 11.081 6.164,11.109 6.163,24.292 6.165 C 32.987 6.166,37.500 6.110,37.500 6.000 C 37.500 5.691,49.272 5.784,50.345 6.102 M79.964 12.559 C 79.696 12.764,79.677 14.003,79.669 31.380 L 79.661 49.982 80.014 50.311 C 80.456 50.723,85.914 50.841,86.667 50.454 L 87.083 50.240 87.167 43.541 C 87.250 36.846,87.250 36.842,87.629 36.463 L 88.009 36.083 95.379 35.990 C 99.433 35.938,102.938 35.825,103.167 35.737 C 104.667 35.166,106.367 33.800,107.043 32.622 C 107.813 31.280,107.854 30.820,107.801 24.250 L 107.750 18.083 107.266 16.917 C 107.001 16.275,106.719 15.725,106.641 15.694 C 106.564 15.664,106.500 15.544,106.500 15.428 C 106.500 15.045,104.601 13.403,103.583 12.905 L 102.583 12.417 91.417 12.378 C 82.374 12.346,80.196 12.380,79.964 12.559 M114.833 12.496 C 114.447 12.740,114.367 49.689,114.751 50.275 C 115.036 50.709,120.762 50.895,121.511 50.494 C 122.018 50.223,122.018 12.777,121.511 12.506 C 121.103 12.288,115.177 12.279,114.833 12.496 M134.500 12.568 C 133.149 12.962,132.585 13.295,131.722 14.208 C 130.601 15.392,130.251 16.090,129.858 17.917 C 129.613 19.055,129.737 45.886,129.990 46.500 C 130.609 48.002,131.996 49.596,133.104 50.080 C 133.459 50.235,133.880 50.430,134.039 50.514 C 134.204 50.601,138.114 50.667,143.108 50.667 C 153.433 50.667,153.090 50.713,154.762 49.084 C 156.644 47.251,156.833 46.593,156.833 41.888 C 156.833 37.434,157.199 37.846,153.234 37.839 C 149.523 37.832,149.667 37.744,149.666 40.013 C 149.664 43.409,149.811 43.333,143.235 43.333 C 137.963 43.333,137.315 43.238,137.099 42.434 C 137.047 42.241,137.004 37.230,137.002 31.299 L 137.000 20.515 137.424 20.091 L 137.848 19.667 143.248 19.667 C 149.655 19.667,149.427 19.601,149.605 21.500 C 149.783 23.400,149.652 23.337,153.343 23.290 C 157.132 23.242,156.827 23.487,156.831 20.489 C 156.835 16.465,155.665 14.094,153.075 12.881 L 152.083 12.417 143.667 12.383 C 137.138 12.357,135.082 12.399,134.500 12.568 M164.867 12.533 C 164.641 12.759,164.570 49.764,164.794 50.100 C 165.108 50.569,165.726 50.667,168.364 50.661 C 172.044 50.654,171.667 51.298,171.667 45.021 C 171.667 38.946,171.652 39.009,173.439 37.337 C 174.775 36.087,174.892 36.083,176.034 37.250 C 176.441 37.666,179.021 41.795,179.127 42.201 C 179.170 42.366,179.272 42.500,179.353 42.500 C 179.434 42.500,179.500 42.587,179.500 42.693 C 179.500 42.799,179.674 43.117,179.887 43.401 C 180.100 43.685,180.591 44.479,180.979 45.167 C 181.366 45.854,181.811 46.616,181.967 46.860 C 182.123 47.104,182.605 47.892,183.039 48.610 C 184.276 50.657,184.233 50.640,188.314 50.655 C 193.215 50.673,193.208 51.299,188.393 43.630 C 187.719 42.555,187.167 41.605,187.167 41.519 C 187.167 41.432,187.107 41.336,187.034 41.306 C 186.961 41.275,186.615 40.725,186.265 40.083 C 185.915 39.442,185.576 38.879,185.510 38.833 C 185.445 38.787,185.247 38.487,185.071 38.167 C 184.894 37.846,184.706 37.546,184.653 37.500 C 184.599 37.454,184.226 36.854,183.822 36.167 C 183.419 35.479,183.030 34.842,182.959 34.750 C 182.677 34.389,182.000 33.313,182.000 33.227 C 182.000 33.176,181.861 32.936,181.690 32.692 C 181.409 32.290,180.803 31.245,180.225 30.167 C 179.772 29.320,180.478 26.903,181.267 26.600 C 181.395 26.551,181.500 26.429,181.500 26.329 C 181.500 26.229,181.950 25.556,182.500 24.833 C 183.050 24.111,183.500 23.459,183.501 23.385 C 183.501 23.311,183.726 23.010,184.001 22.717 C 184.275 22.424,184.500 22.140,184.500 22.085 C 184.500 22.031,184.576 21.895,184.670 21.785 C 184.763 21.674,185.301 20.946,185.866 20.167 C 186.430 19.387,187.392 18.075,188.002 17.250 C 188.612 16.425,189.459 15.262,189.883 14.667 C 190.308 14.071,190.738 13.487,190.839 13.370 C 191.557 12.535,191.152 12.420,187.333 12.370 C 183.010 12.313,183.214 12.268,182.320 13.456 C 181.923 13.984,181.464 14.561,181.300 14.738 C 181.137 14.914,180.960 15.196,180.907 15.363 C 180.854 15.530,180.741 15.667,180.655 15.667 C 180.570 15.667,180.500 15.745,180.500 15.840 C 180.500 15.936,180.424 16.105,180.332 16.215 C 180.239 16.326,179.940 16.679,179.668 17.000 C 179.395 17.321,179.171 17.636,179.169 17.701 C 179.167 17.795,177.939 19.537,177.372 20.250 C 177.299 20.342,176.912 20.885,176.512 21.458 C 176.112 22.031,175.721 22.500,175.643 22.500 C 175.564 22.500,175.500 22.572,175.500 22.661 C 175.500 22.828,174.391 24.000,174.233 24.000 C 174.183 24.000,174.030 24.113,173.893 24.250 C 173.558 24.585,172.946 24.566,172.537 24.208 C 171.858 23.614,171.777 22.974,171.705 17.667 C 171.657 14.060,171.581 12.549,171.443 12.461 C 171.101 12.244,165.091 12.309,164.867 12.533 M199.981 12.726 C 199.006 13.127,198.829 13.247,197.949 14.099 C 196.959 15.059,196.685 15.480,196.248 16.710 L 195.812 17.937 195.864 23.427 C 195.926 29.848,195.963 30.020,197.651 31.651 C 199.665 33.597,200.695 33.802,208.877 33.879 C 216.862 33.955,216.327 33.620,216.331 38.550 C 216.335 43.530,216.754 43.250,209.300 43.250 C 202.702 43.250,203.302 43.474,203.177 40.960 C 203.125 39.928,203.023 38.990,202.948 38.875 C 202.792 38.633,196.738 38.573,196.366 38.810 C 195.968 39.062,196.160 45.907,196.589 46.750 C 197.519 48.581,198.405 49.430,200.216 50.229 L 201.182 50.655 209.716 50.661 C 218.930 50.666,219.034 50.658,220.538 49.760 C 221.513 49.178,222.651 47.829,223.200 46.604 L 223.657 45.583 223.662 39.282 C 223.665 35.333,223.599 32.689,223.486 32.199 C 222.782 29.151,220.918 27.308,217.831 26.608 C 217.601 26.556,214.534 26.504,211.017 26.493 C 202.980 26.467,203.167 26.546,203.167 23.156 C 203.167 19.634,203.101 19.667,210.239 19.667 C 216.793 19.667,216.333 19.541,216.333 21.335 C 216.333 23.240,216.449 23.300,220.125 23.302 C 223.833 23.305,223.562 23.597,223.459 19.716 C 223.374 16.465,223.335 16.319,222.153 14.806 C 221.370 13.805,220.414 13.000,220.007 13.000 C 219.911 13.000,219.833 12.925,219.833 12.833 C 219.833 12.742,219.688 12.667,219.510 12.667 C 219.332 12.667,219.140 12.592,219.083 12.500 C 219.017 12.392,215.794 12.335,209.948 12.337 L 200.917 12.341 199.981 12.726 M228.676 12.811 C 228.394 13.491,228.500 19.234,228.800 19.534 C 228.962 19.696,230.133 19.771,233.467 19.833 C 237.780 19.914,237.929 19.928,238.285 20.285 L 238.653 20.653 238.663 34.951 C 238.674 49.909,238.680 50.123,239.122 50.458 C 239.691 50.890,245.611 50.740,245.908 50.287 C 246.123 49.959,246.163 47.918,246.203 35.291 L 246.250 20.676 246.629 20.296 C 247.000 19.925,247.111 19.914,251.546 19.816 C 256.704 19.702,256.167 19.755,256.167 19.361 C 256.167 19.193,256.211 19.012,256.264 18.958 C 256.526 18.696,256.325 12.750,256.047 12.542 C 255.830 12.379,252.821 12.333,242.322 12.333 L 228.874 12.333 228.676 12.811 M265.888 12.653 C 264.800 13.048,263.678 13.815,263.145 14.530 C 262.614 15.241,261.791 16.667,261.912 16.667 C 261.963 16.667,261.891 16.938,261.752 17.270 C 261.334 18.271,261.377 45.439,261.798 46.500 C 262.533 48.350,263.857 49.732,265.479 50.341 C 266.343 50.666,266.693 50.676,275.562 50.630 L 284.750 50.583 285.667 50.148 C 286.994 49.518,288.682 47.625,288.918 46.500 C 288.947 46.362,289.052 46.039,289.152 45.782 C 289.387 45.172,289.301 18.594,289.060 17.500 C 288.969 17.087,288.790 16.563,288.662 16.333 C 288.534 16.104,288.445 15.860,288.465 15.792 C 288.484 15.723,288.413 15.667,288.306 15.667 C 288.199 15.667,288.155 15.623,288.209 15.569 C 288.480 15.298,286.455 13.385,285.333 12.852 L 284.417 12.417 275.583 12.379 C 267.309 12.343,266.695 12.361,265.888 12.653 M297.100 12.600 C 297.044 12.747,296.999 21.289,297.001 31.581 L 297.006 50.295 297.480 50.492 C 298.331 50.844,303.972 50.660,304.256 50.270 C 304.440 50.019,304.486 48.727,304.492 43.687 C 304.496 40.238,304.535 37.233,304.580 37.008 C 304.764 36.075,305.032 36.043,312.797 36.020 C 319.903 35.999,320.971 35.887,321.783 35.075 C 321.915 34.942,322.087 34.833,322.163 34.833 C 322.551 34.833,324.191 32.995,324.616 32.083 L 325.083 31.083 325.135 25.167 C 325.190 18.815,325.101 17.757,324.409 16.564 C 324.191 16.186,324.043 15.845,324.082 15.807 C 324.121 15.768,323.856 15.402,323.493 14.993 C 323.131 14.584,322.834 14.194,322.834 14.125 C 322.833 14.056,322.718 14.000,322.578 14.000 C 322.438 14.000,322.281 13.890,322.229 13.756 C 322.178 13.622,321.637 13.266,321.026 12.965 L 319.917 12.417 308.560 12.374 C 298.255 12.336,297.193 12.357,297.100 12.600 M28.333 18.939 C 28.104 18.981,27.804 19.062,27.667 19.118 C 27.529 19.174,27.358 19.207,27.287 19.191 C 27.215 19.176,26.938 19.277,26.670 19.415 C 26.402 19.553,26.039 19.667,25.862 19.667 C 25.685 19.667,25.451 19.774,25.342 19.906 C 25.233 20.038,24.942 20.189,24.697 20.243 C 23.403 20.528,20.372 23.553,19.259 25.672 C 16.398 31.116,18.418 39.345,23.292 42.099 C 23.590 42.267,23.833 42.455,23.833 42.516 C 23.833 42.576,24.077 42.725,24.375 42.845 C 24.673 42.966,24.954 43.112,25.000 43.170 C 25.779 44.157,31.683 44.625,33.833 43.870 C 44.090 40.269,46.036 27.229,37.250 20.979 C 36.487 20.436,35.934 20.135,35.633 20.098 C 35.569 20.090,35.423 19.990,35.308 19.875 C 35.194 19.760,34.932 19.667,34.727 19.667 C 34.521 19.667,34.313 19.602,34.264 19.522 C 34.214 19.442,33.854 19.319,33.462 19.249 C 33.070 19.178,32.637 19.089,32.500 19.052 C 32.102 18.943,28.793 18.853,28.333 18.939 M99.409 19.924 C 100.338 20.365,100.417 20.701,100.417 24.234 C 100.417 28.858,100.818 28.551,94.667 28.633 C 86.681 28.739,87.167 29.025,87.167 24.215 C 87.167 20.608,87.218 20.330,87.963 19.926 C 88.651 19.553,98.623 19.551,99.409 19.924 M281.243 19.928 C 281.983 20.412,282.000 20.682,282.000 31.616 C 282.000 43.072,282.025 42.784,280.980 43.149 C 280.122 43.448,270.312 43.399,269.577 43.091 C 268.642 42.701,268.653 42.857,268.704 31.212 L 268.750 20.471 269.218 20.069 L 269.685 19.667 275.265 19.667 C 280.049 19.667,280.902 19.704,281.243 19.928 M317.012 20.177 L 317.583 20.687 317.638 23.778 C 317.729 28.867,318.003 28.657,311.250 28.661 C 303.881 28.666,304.425 29.005,304.392 24.385 C 304.356 19.282,303.787 19.682,311.095 19.673 L 316.440 19.667 317.012 20.177 \",\n stroke: \"none\",\n fill: \"#fcb304\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"path3\",\n d: \"M37.734 5.961 C 37.189 6.326,37.136 10.054,37.645 12.197 C 39.315 19.230,46.060 23.789,53.157 22.681 C 55.001 22.393,54.856 22.950,54.800 16.348 L 54.750 10.583 54.307 9.637 C 53.366 7.630,51.489 6.283,49.227 5.992 C 47.848 5.814,37.993 5.788,37.734 5.961 M209.460 33.951 C 209.668 33.991,209.968 33.990,210.127 33.948 C 210.286 33.906,210.117 33.874,209.750 33.875 C 209.383 33.877,209.253 33.911,209.460 33.951 \",\n stroke: \"none\",\n fill: \"#fc4443\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"path4\",\n d: \"M48.794 5.951 C 49.001 5.991,49.301 5.990,49.460 5.948 C 49.620 5.906,49.450 5.874,49.083 5.875 C 48.717 5.877,48.586 5.911,48.794 5.951 M52.787 7.569 C 53.349 8.077,53.850 8.747,54.203 9.465 L 54.750 10.576 54.750 16.446 C 54.750 19.675,54.810 22.256,54.883 22.183 C 54.957 22.110,54.994 19.470,54.967 16.317 L 54.917 10.583 54.473 9.637 C 54.020 8.670,52.876 7.288,52.260 6.964 C 52.071 6.864,52.308 7.137,52.787 7.569 M256.402 15.917 C 256.401 17.475,256.426 18.135,256.457 17.383 C 256.488 16.631,256.488 15.356,256.458 14.550 C 256.427 13.743,256.402 14.358,256.402 15.917 M304.400 24.167 C 304.400 25.587,304.426 26.169,304.457 25.458 C 304.488 24.748,304.488 23.585,304.457 22.875 C 304.426 22.165,304.400 22.746,304.400 24.167 M54.746 36.667 C 54.746 44.504,54.767 47.710,54.792 43.792 C 54.817 39.873,54.817 33.460,54.792 29.542 C 54.767 25.623,54.746 28.829,54.746 36.667 M91.375 28.625 C 92.727 28.653,94.940 28.653,96.292 28.625 C 97.644 28.597,96.537 28.574,93.833 28.574 C 91.129 28.574,90.023 28.597,91.375 28.625 M308.719 28.625 C 310.076 28.653,312.251 28.653,313.552 28.625 C 314.853 28.596,313.742 28.573,311.083 28.574 C 308.425 28.574,307.361 28.597,308.719 28.625 M210.625 33.951 C 210.831 33.991,211.169 33.991,211.375 33.951 C 211.581 33.911,211.412 33.879,211.000 33.879 C 210.588 33.879,210.419 33.911,210.625 33.951 M212.127 33.951 C 212.334 33.991,212.634 33.990,212.794 33.948 C 212.953 33.906,212.783 33.874,212.417 33.875 C 212.050 33.877,211.920 33.911,212.127 33.951 \",\n stroke: \"none\",\n fill: \"#fc9c0c\",\n fillRule: \"evenodd\"\n }))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgPickstopLogoNew, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/PickstopLogoNew.a4d27883.svg\";\nexport { ForwardRef as ReactComponent };","import { makeStyles } from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\n\nexport const styles = makeStyles((theme) => ({\n\troot: {\n\t\tflexGrow: 1,\n\t},\n\ttoolbar: {\n\t\tminHeight: 0,\n\t},\n\tmenu: {\n\t\tcolor: Colors.primary,\n\t\tbackgroundColor: Colors.panel,\n\t},\n\ttitle: {\n\t\tflexGrow: 1,\n\t},\n\tnavbar: {\n\t\tbackgroundColor: Colors.panel,\n\t\tzIndex: 100,\n\t},\n\tbottomBar: {\n\t\tbackgroundColor: Colors.panel,\n\t\tzIndex: 100,\n\t\ttop: \"auto\",\n\t\tbottom: 0,\n\t},\n\tlogo: {\n\t\theight: 48,\n\t\tmarginRight: theme.spacing(2),\n\t\tcursor: \"pointer\",\n\t},\n\tauthButtons: {\n\t\tmarginLeft: \"auto\",\n\t\tdisplay: \"inline-flex\",\n\t\talignItems: \"center\",\n\t},\n\tusernameChip: {\n\t\tbackgroundColor: Colors.primary,\n\t\tcolor: Colors.panel,\n\t},\n\tuserIcon: {\n\t\tcolor: Colors.primary,\n\t},\n\ttabicons: {\n\t\tfloat: \"left\",\n\t\tmarginRight: 4,\n\t\twidth: 24,\n\t\theight: 24,\n\t\tmarginTop: -2,\n\t},\n\tsmallTabIcons: {\n\t\tdisplay: \"block\",\n\t\tmargin: \"0 auto\",\n\t\twidth: 24,\n\t\theight: 24,\n\t\tmarginTop: 4,\n\t},\n\tgameMenu: {\n\t\tlabel: {\n\t\t\twidth: 160,\n\t\t},\n\t},\n\tnotification: {\n\t\tfontSize: 14,\n\t\t\"& b\": {\n\t\t\tcolor: Colors.pickstop,\n\t\t},\n\t},\n}));\n\nexport const gameMenu = makeStyles((theme) => ({\n\tlabel: {\n\t\twidth: 160,\n\t},\n}));\n\nexport const bottomTabs = makeStyles((theme) => ({\n\tindicator: {\n\t\tbackgroundColor: Colors.primary,\n\t\theight: 1,\n\t\ttop: 0,\n\t},\n\n\troot: {\n\t\twidth: \"100%\",\n\t},\n}));\n\nexport const tabs = makeStyles((theme) => ({\n\tindicator: {\n\t\tbackgroundColor: Colors.body,\n\t\theight: 0,\n\t\tborderLeft: `1px solid ${theme.palette.secondary.main}`,\n\t\tborderRight: `1px solid ${theme.palette.secondary.main}`,\n\t},\n}));\n\nexport const tab = makeStyles((theme) => ({\n\troot: {\n\t\t\"&$selected\": {\n\t\t\tbackgroundColor: Colors.body,\n\t\t\tcolor: theme.palette.secondary.main,\n\t\t\tborderLeft: `1px solid ${theme.palette.secondary.main}`,\n\t\t\tborderRight: `1px solid ${theme.palette.secondary.main}`,\n\t\t\tstroke: theme.palette.secondary.main,\n\t\t\tfill: theme.palette.secondary.main,\n\t\t\t\"& span\": {\n\t\t\t\tcolor: theme.palette.secondary.main,\n\t\t\t},\n\t\t\t\"& svg\": {\n\t\t\t\tcolor: theme.palette.secondary.main,\n\t\t\t},\n\t\t},\n\t\t\"&$disabled\": {\n\t\t\tcolor: Colors.body,\n\t\t\tstroke: Colors.body,\n\t\t\tfill: Colors.body,\n\t\t},\n\t\t\"& svg\": {\n\t\t\tcolor: theme.palette.primary.main,\n\t\t},\n\t\tbackgroundColor: Colors.body,\n\t\tcolor: theme.palette.primary.main,\n\t\tstroke: theme.palette.primary.main,\n\t\tfill: theme.palette.primary.main,\n\t\tdisplay: \"block\",\n\t\t\"& span\": {\n\t\t\twhiteSpace: \"nowrap\",\n\t\t\tcolor: theme.palette.primary.main,\n\t\t\tmarginBottom: 2,\n\t\t},\n\t},\n\tselected: {},\n\tdisabled: {},\n}));\n","import axiosWrapper from \"common/axiosWrapper\";\n\nconst baseUrl = \"/api/user\";\n\n/** The User service which calls the API endpoints for the User Controller */\nexport default class UserService {\n\tstatic async getUserProfile(userId) {\n\t\treturn axiosWrapper\n\t\t\t.getCached(`${baseUrl}/profile?userId=${userId}`)\n\t\t\t.then((data) => {\n\t\t\t\tdata.created = new Date(data.created);\n\t\t\t\treturn data;\n\t\t\t});\n\t}\n\n\tstatic async getUserCardInfo(userId) {\n\t\tif (!userId) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn await axiosWrapper.get(`/api/user/usercardinfo/${userId}`);\n\t}\n\n\t/**\n\t * Searches users based on the provided search value.\n\t *\n\t * @param {string} searchValue The username search value.\n\t * */\n\tstatic async searchUsers(searchValue) {\n\t\treturn await axiosWrapper.get(`api/user/search?searchValue=${searchValue}`);\n\t}\n\n\t/** Gets the available roles. */\n\tstatic async getRoles() {\n\t\treturn await axiosWrapper.getCached(`api/user/roles`);\n\t}\n\n\t/**\n\t * Gets the specified users roles\n\t *\n\t * @param {number} userId The user's id.\n\t * @returns {number[]} The list of role ids.\n\t */\n\tstatic async getUserRoles(userId) {\n\t\treturn await axiosWrapper.get(`api/user/userroles?userId=${userId}`);\n\t}\n\n\t/**\n\t * Gets the user's game they are an analyst for.\n\t *\n\t * @param {number} userId The user's id.\n\t * @returns {number} The analyst game id.\n\t */\n\tstatic async getParticipatingAnalystGame(userId) {\n\t\treturn await axiosWrapper.get(\n\t\t\t`api/user/analystParticipation?userId=${userId}`\n\t\t);\n\t}\n\n\t/**\n\t * Updates the user with their new roles.\n\t *\n\t * @param {number} userId The user id of the user to update.\n\t * @param {string} username The username to be set.\n\t * @param {Array} roleIds The list of role ids.\n\t * @param {boolean} flagUsernameChange If we should prompt for username change.\n\t */\n\tstatic async updateUser(\n\t\tuserId,\n\t\tusername,\n\t\troleIds,\n\t\tflagUsernameChange,\n\t\tanalystParticipationGameId = null,\n\t\tcreateAnalystInfluencerLeague = null\n\t) {\n\t\treturn await axiosWrapper.post(`api/user/update`, {\n\t\t\tuserId,\n\t\t\tusername,\n\t\t\troleIds,\n\t\t\tflagUsernameChange,\n\t\t\tanalystParticipationGameId,\n\t\t\tcreateAnalystInfluencerLeague,\n\t\t});\n\t}\n\n\t/**\n\t * Triggers the user for a password reset and returns the link to provide the user.\n\t *\n\t * @param {number} userId The user id to reset the password of.\n\t * @returns {Promise} The async result with the password link.\n\t */\n\tstatic async resetPassword(userId) {\n\t\treturn await axiosWrapper.get(`api/user/resetpassword?userId=${userId}`);\n\t}\n}\n","import * as React from \"react\";\nimport { Box, makeStyles } from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\nimport UserProfileModalHelper from \"common/helpers/userProfileModalHelper\";\nimport UserService from \"services/UserService\";\nimport UserManager from \"common/userManager\";\n\n/**\n * @type {Array<(nameplateId: number) => void>}\n */\nlet updateCardCallbacks = [];\n\nexport function updateUserCardsWithNameplateId(nameplateId) {\n\tfor (let callback of updateCardCallbacks) {\n\t\tcallback(nameplateId);\n\t}\n}\n\nconst useStyles = makeStyles((theme) => ({\n\troot: {\n\t\tbackgroundColor: Colors.panelLight,\n\t\tborderRadius: 12,\n\t\tborder: \"1px solid \" + theme.palette.primary.main,\n\t\tcolor: theme.palette.primary.main,\n\t\ttextAlign: \"left\",\n\t\tdisplay: \"inline-flex\",\n\t\talignItems: \"center\",\n\t\twidth: 143,\n\t\theight: 34,\n\t\tboxSizing: \"border-box\",\n\t\twhiteSpace: \"nowrap\",\n\t},\n\tname: {\n\t\tmarginLeft: 5,\n\t\tflex: \"0 0 105px\",\n\t\tfont: \"normal normal bold 14px/24px Arial\",\n\t\tmaxWidth: 105,\n\t\ttextOverflow: \"ellipsis\",\n\t\toverflow: \"hidden\",\n\t},\n\tpinned: {\n\t\tmaxHeight: 30,\n\t\tmarginRight: 3,\n\t\twidth: \"unset\",\n\t},\n\tpinnedWrapper: {\n\t\tdisplay: \"flex\",\n\t},\n}));\n\nexport default function UserCard(props) {\n\t//either takes a userid and loads data, or takes the rest of the information to populate the view.\n\tconst {\n\t\tuserId,\n\t\tnameplateId,\n\t\tdontLoadData,\n\t\tuserName,\n\t\tpinnedEventName,\n\t\tpinnedTrophyImagePath,\n\t} = props;\n\n\tconst styles = useStyles();\n\tconst [overrideNameplateId, setOverrideNameplateId] = React.useState(null);\n\tconst [userCardInfo, setUserCardInfo] = React.useState(null);\n\n\tconst updateNameplateId = (nameplateId) => {\n\t\tif (userCardInfo) {\n\t\t\tuserCardInfo.nameplateId = nameplateId;\n\t\t\tsetUserCardInfo({\n\t\t\t\t...userCardInfo,\n\t\t\t});\n\t\t} else {\n\t\t\tsetOverrideNameplateId(nameplateId);\n\t\t}\n\t};\n\n\tReact.useEffect(() => {\n\t\t// Add callback\n\t\tif (userId === UserManager.getUserId()) {\n\t\t\tupdateCardCallbacks.push(updateNameplateId);\n\n\t\t\treturn () => {\n\t\t\t\t// Remove callback\n\t\t\t\tupdateCardCallbacks = updateCardCallbacks.filter(\n\t\t\t\t\t(callback) => callback !== updateNameplateId\n\t\t\t\t);\n\t\t\t};\n\t\t}\n\t});\n\n\tReact.useEffect(() => {\n\t\tif (!dontLoadData) {\n\t\t\tUserService.getUserCardInfo(userId).then((userInfo) => {\n\t\t\t\tsetUserCardInfo(userInfo);\n\t\t\t});\n\t\t}\n\t}, [userId, dontLoadData]);\n\n\tconst pinnedTrophy = !!userCardInfo ? userCardInfo.pinnedTrophy[0] : null;\n\tconst pinnedTrophyName = !!pinnedTrophy ? pinnedTrophy.name : ``;\n\tconst pinnedTrophyImg = !!pinnedTrophy\n\t\t? pinnedTrophy.imagePath\n\t\t: pinnedTrophyImagePath;\n\tconst pinnedTrophyEvent = !!pinnedTrophy\n\t\t? pinnedTrophy.eventName\n\t\t: pinnedEventName;\n\tconst uName = !!userCardInfo ? userCardInfo?.username : userName;\n\tconst hasPinnedTrophy = !!pinnedTrophy || pinnedTrophyImagePath;\n\tconst userNameplateId =\n\t\toverrideNameplateId ?? nameplateId ?? userCardInfo?.nameplateId;\n\tconst nameplateIdClassName = `nameplate-${userNameplateId}`;\n\n\treturn (\n\t\t {\n\t\t\t\tUserProfileModalHelper.openProfile(userId);\n\t\t\t}}\n\t\t>\n\t\t\t{uName}\n\t\t\t{hasPinnedTrophy && (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n}\n","const monthNames = [\n\t\"January\",\n\t\"February\",\n\t\"March\",\n\t\"April\",\n\t\"May\",\n\t\"June\",\n\t\"July\",\n\t\"August\",\n\t\"September\",\n\t\"October\",\n\t\"November\",\n\t\"December\",\n];\n\nexport function toMonthNameAndYear(value) {\n\tif (!value) {\n\t\treturn \"\";\n\t}\n\n\tlet date = value;\n\tif (value === value?.toString()) {\n\t\tdate = new Date(date);\n\t}\n\n\tconst month = monthNames[date.getMonth()];\n\n\treturn `${month} ${date.getFullYear()}`;\n}\n\nexport function toMonthNameDayAndYear(value) {\n\tif (!value) {\n\t\treturn \"\";\n\t}\n\n\tlet date = value;\n\tif (value === value?.toString()) {\n\t\tdate = new Date(date);\n\t}\n\n\tconst month = monthNames[date.getMonth()];\n\tconst day = date.getDate();\n\n\treturn `${month} ${day}, ${date.getFullYear()}`;\n}\n\nexport function toMMDDYYYY(value) {\n\tif (typeof value === \"string\") {\n\t\tvalue = new Date(value);\n\t}\n\tlet monthInt = value.getMonth() + 1;\n\tconst month = monthInt < 10 ? \"0\" + monthInt : monthInt;\n\tconst day = value.getDate() < 10 ? \"0\" + value.getDate() : value.getDate();\n\treturn `${value.getFullYear()}-${month}-${day}`;\n}\n\nexport function toMMDDYYYYWithHourMintues(value) {\n\tif (typeof value === \"string\") {\n\t\tvalue = new Date(value);\n\t}\n\tlet monthInt = value.getMonth() + 1;\n\tconst month = monthInt < 10 ? \"0\" + monthInt : monthInt;\n\tconst day = value.getDate() < 10 ? \"0\" + value.getDate() : value.getDate();\n\tconst hour =\n\t\tvalue.getHours() < 10 ? \"0\" + value.getHours() : value.getHours();\n\tconst minute =\n\t\tvalue.getMinutes() < 10 ? \"0\" + value.getMinutes() : value.getMinutes();\n\treturn `${value.getFullYear()}-${month}-${day}T${hour}:${minute}`;\n}\n\nexport function toFriendlyDateTime(value) {\n\tif (typeof value === \"string\") {\n\t\tvalue = new Date(value);\n\t}\n\tlet monthInt = value.getMonth() + 1;\n\tconst month = monthInt < 10 ? \"0\" + monthInt : monthInt;\n\tconst day = value.getDate() < 10 ? \"0\" + value.getDate() : value.getDate();\n\tlet hour = value.getHours();\n\tconst minute =\n\t\tvalue.getMinutes() < 10 ? \"0\" + value.getMinutes() : value.getMinutes();\n\n\tlet amPm = \"am\";\n\tif (hour >= 12) {\n\t\thour -= 12;\n\t\tamPm = \"pm\";\n\t}\n\n\thour = hour < 10 ? \"0\" + hour : hour;\n\n\treturn `${month}/${day}/${value.getFullYear()} ${hour}:${minute} ${amPm}`;\n}\n","export const TrophyTypes = {\n\tWood: 1,\n\tBronze: 2,\n\tSilver: 3,\n\tGold: 4,\n\tPlatinum: 5,\n\tDiamond: 6,\n};\n","import * as React from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\nimport { TrophyTypes } from \"common/constants/TrophyTypes\";\n\nconst useStyles = makeStyles((theme) => ({\n\ttableContainer: {\n\t\tdisplay: \"flex\",\n\t\tjustifyContent: \"center\",\n\t},\n\ttableRow: {\n\t\ttextAlign: \"center\",\n\t},\n\tminiAward: {\n\t\tdisplay: \"block\",\n\t\tborderRadius: \"50%\",\n\t\toverflow: \"hidden\",\n\t\theight: 20,\n\t},\n\tmaterialBlock: {\n\t\theight: 20,\n\t},\n\tgameIcon: {\n\t\theight: 20,\n\t\twidth: 20,\n\t},\n}));\n\nexport default function AwardSummary({\n\tawards,\n\tgames,\n\tshowEmptyRows,\n\thideIcons,\n}) {\n\tconst styles = useStyles();\n\n\tif (!awards) {\n\t\treturn <>;\n\t}\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{!hideIcons && }\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{games.map((g) => {\n\t\t\t\t\t\tconst gameAwards = awards.filter((a) => a.gameId === g.id);\n\n\t\t\t\t\t\tconst show = gameAwards.length || showEmptyRows;\n\t\t\t\t\t\tif (!show) {\n\t\t\t\t\t\t\treturn <>;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst diamondCount = gameAwards.filter(\n\t\t\t\t\t\t\t(a) => a.trophyTypeId === TrophyTypes.Diamond\n\t\t\t\t\t\t).length;\n\t\t\t\t\t\tconst platCount = gameAwards.filter(\n\t\t\t\t\t\t\t(a) => a.trophyTypeId === TrophyTypes.Platinum\n\t\t\t\t\t\t).length;\n\t\t\t\t\t\tconst goldCount = gameAwards.filter(\n\t\t\t\t\t\t\t(a) => a.trophyTypeId === TrophyTypes.Gold\n\t\t\t\t\t\t).length;\n\t\t\t\t\t\tconst silverCount = gameAwards.filter(\n\t\t\t\t\t\t\t(a) => a.trophyTypeId === TrophyTypes.Silver\n\t\t\t\t\t\t).length;\n\t\t\t\t\t\tconst bronzeCount = gameAwards.filter(\n\t\t\t\t\t\t\t(a) => a.trophyTypeId === TrophyTypes.Bronze\n\t\t\t\t\t\t).length;\n\t\t\t\t\t\tconst woodCount = gameAwards.filter(\n\t\t\t\t\t\t\t(a) => a.trophyTypeId === TrophyTypes.Wood\n\t\t\t\t\t\t).length;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{!hideIcons && (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{diamondCount}{platCount}{goldCount}{silverCount}{bronzeCount}{woodCount}
\n\t\t
\n\t);\n}\n","import axiosWrapper from \"common/axiosWrapper\";\n\nconst baseUrl = \"/api/trophy\";\n\n/** The trophy service which calls the API endpoints for the Trophy Controller */\nexport default class TrophyService {\n\t/**\n\t * Pins the trophy by its combo key.\n\t * @param {number} trophyId The trophy id.\n\t * @param {number} eventId The event id.\n\t * @returns {Promise} An async result containing nothing.\n\t */\n\tstatic async pinTrophy(trophyId, eventId) {\n\t\tconst route = `/pintrophy/${trophyId}/${eventId}`;\n\t\treturn await axiosWrapper.get(`${baseUrl}${route}`);\n\t}\n\n\t/**\n\t * Unpins the user's trophy.\n\t * @returns {Promise} An async result containing nothing.\n\t */\n\tstatic async unpinTrophy() {\n\t\tconst route = `/unpintrophy`;\n\t\treturn await axiosWrapper.get(`${baseUrl}${route}`);\n\t}\n\n\t/**\n\t * Fetches all rewards for a user then filter by the gameId if provided.\n\t * @param {number} userId The user id.\n\t * @param {number | null | undefined} gameId The related game id.\n\t * @returns {Promise>} An async result containing all of the user's rewards filtered by game id.\n\t */\n\tstatic async getYourAwards(userId, gameId) {\n\t\tconst route = `/usertrophies/${userId}`;\n\t\treturn await axiosWrapper.getCached(`${baseUrl}${route}`).then((awards) => {\n\t\t\treturn awards.filter((award) => !gameId || award.gameId === gameId);\n\t\t});\n\t}\n\n\t/**\n\t * Get recent winners and the related trophies.\n\t * @returns {Promise>}\n\t */\n\tstatic async getRecentTrophies() {\n\t\tconst route = \"/winnersandtrophies\";\n\t\treturn await axiosWrapper.getCached(`${baseUrl}${route}`);\n\t}\n\n\tstatic async getTrophyLeaderboard(startRow) {\n\t\tlet route = `/leaderboard`;\n\t\tif (!isNaN(startRow)) {\n\t\t\troute += `/${startRow}`;\n\t\t}\n\n\t\treturn await axiosWrapper.getCached(`${baseUrl}${route}`);\n\t}\n\n\tstatic async getTrophyLeaderboardAdditional(fromTop) {\n\t\tconst route = `/leaderboard/additional/${fromTop}`;\n\t\treturn await axiosWrapper.getCached(`${baseUrl}${route}`);\n\t}\n\n\tstatic async searchTrophyLeaderboard(term) {\n\t\tconst route = `/search/leaderboard/${term}`;\n\t\treturn await axiosWrapper.getCached(`${baseUrl}${route}`);\n\t}\n\n\t/**\n\t * Gets the user's trophy case.\n\t * @param {number} userId\n\t * @returns\n\t */\n\tstatic async getUserTrophyCase(userId) {\n\t\tconst route = `/trophycase/${userId}`;\n\t\treturn await axiosWrapper.get(`${baseUrl}${route}`);\n\t}\n\n\t/**\n\t * Updates the specified slot with the associated trophy/eventid for the current user.\n\t * @param {number} slot\n\t * @param {number} trophyId\n\t * @param {number} eventId\n\t * @returns\n\t */\n\tstatic async updateTrophyCase(slot, trophyId, eventId) {\n\t\tconst route = `/trophycase/${slot}/${trophyId}/${eventId}`;\n\t\treturn await axiosWrapper.post(`${baseUrl}${route}`, {});\n\t}\n\n\tstatic async getTrophyLeaderboardUserRow(userId) {\n\t\tif (!userId) {\n\t\t\treturn;\n\t\t}\n\t\treturn await axiosWrapper.getCached(`${baseUrl}/leaderboarduser/${userId}`);\n\t}\n\n\tstatic async giveTrophies(eventId) {\n\t\tif (!eventId) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn await axiosWrapper.post(\n\t\t\t`${baseUrl}/giveTrophies?eventId=${eventId}`,\n\t\t\t{}\n\t\t);\n\t}\n}\n","import { makeStyles, Grid, Box } from \"@material-ui/core\";\nimport * as React from \"react\";\nimport { Colors } from \"styles/Colors\";\nimport { TrophyTypes } from \"common/constants/TrophyTypes\";\n\nconst useStyles = makeStyles((theme) => ({\n\ttrophyList: {\n\t\tmaxHeight: 460,\n\t\toverflowY: \"auto\",\n\t\tborderColor: Colors.body,\n\t},\n\tawardContainer: {\n\t\tmarginTop: \"auto\",\n\t\tmarginBottom: \"auto\",\n\t\tdisplay: \"flex\",\n\t\tflexDirection: \"column\",\n\t\talignItems: \"center\",\n\t\tborderTopLeftRadius: 12,\n\t\tborderTopRightRadius: 12,\n\t\tbackgroundClip: \"content-box\",\n\t},\n\tawardImage: {\n\t\tmaxHeight: 150,\n\t\tmargin: 10,\n\t},\n\taward: {\n\t\tdisplay: \"flex\",\n\t\tjustifyContent: \"center\",\n\t\tmaxWidth: 100,\n\t},\n\teventName: {\n\t\theight: 54,\n\t\tdisplay: \"flex\",\n\t\tjustifyContent: \"center\",\n\t\ttextAlign: \"center\",\n\t\tfontSize: 12,\n\t},\n}));\n\nexport default function TrophyList(props) {\n\tconst awards = props.awards ?? [];\n\tconst styles = useStyles();\n\n\tconst getGradientColor = (trophyTypeId) => {\n\t\tswitch (trophyTypeId) {\n\t\t\tcase TrophyTypes.Wood:\n\t\t\t\treturn Colors.wood;\n\t\t\tcase TrophyTypes.Bronze:\n\t\t\t\treturn Colors.bronze;\n\t\t\tcase TrophyTypes.Silver:\n\t\t\t\treturn Colors.silver;\n\t\t\tcase TrophyTypes.Gold:\n\t\t\t\treturn Colors.gold;\n\t\t\tcase TrophyTypes.Platinum:\n\t\t\t\treturn Colors.platinum;\n\t\t\tcase TrophyTypes.Diamond:\n\t\t\t\treturn Colors.diamond;\n\t\t\tdefault:\n\t\t\t\treturn \"transparent\";\n\t\t}\n\t};\n\n\tif (!awards || awards.length === 0) {\n\t\treturn No awards to show.;\n\t}\n\n\tconst customStyle = {\n\t\twidth: props.width,\n\t};\n\treturn (\n\t\t\n\t\t\t{awards.map((record, index) => {\n\t\t\t\tconst gradientColor = getGradientColor(record.trophyTypeId);\n\t\t\t\treturn (\n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (props.onClick) {\n\t\t\t\t\t\t\t\tprops.onClick(record.id, record.eventId);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tbackground: `transparent linear-gradient(180deg, ${gradientColor} 0%, transparent 60%) 0% 0% content-box`,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{record.eventName}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t})}\n\t\t\n\t);\n}\n","import React from \"react\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalHeader,\n\tModalBody,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport TrophyList from \"common/components/TrophyList/TrophyList\";\n\nexport default function TrophySelectorModal(props) {\n\t/** @type {Array} */\n\tconst exceptThese = props.except;\n\tconst awards = props.awards.filter((a) => {\n\t\treturn !exceptThese || !exceptThese.find((e) => e.eventId === a.eventId);\n\t});\n\tconst onSelect = props.onSelect;\n\tif (!onSelect) {\n\t\tconsole.error(\n\t\t\t\"You are using a Trophy Selector Modal without an onSelect callback.\"\n\t\t);\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{props.header ?? \"Select a Trophy\"}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n","import { Tooltip, withStyles } from \"@material-ui/core\";\n\nconst HtmlTooltip = withStyles((theme) => ({\n\ttooltip: {\n\t\tbackgroundColor: \"#f5f5f9\",\n\t\tcolor: \"rgba(0, 0, 0, 0.87)\",\n\t\tmaxWidth: 220,\n\t\tfontSize: theme.typography.pxToRem(12),\n\t\tborder: \"1px solid #dadde9\",\n\t},\n}))(Tooltip);\n\nexport default HtmlTooltip;\n","import { makeStyles, Grid } from \"@material-ui/core\";\nimport * as React from \"react\";\nimport { Colors } from \"styles/Colors\";\nimport { TrophyTypes } from \"common/constants/TrophyTypes\";\nimport TrophyService from \"services/TrophyService\";\nimport UserManager from \"common/userManager\";\nimport HtmlTooltip from \"../HtmlTooltip/HtmlTooltip\";\nimport { EditOutlined } from \"@material-ui/icons\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport TrophySelectorModal from \"../Modals/TrophySelectorModal/TrophySelectorModal\";\nimport { SetLoading } from \"../Loader/Loader\";\nimport UserProfileModalHelper from \"common/helpers/userProfileModalHelper\";\n\nconst useStyles = makeStyles((theme) => ({\n\ttrophyList: {\n\t\tmaxHeight: 500,\n\t\toverflowY: \"auto\",\n\t\tborderColor: Colors.body,\n\t},\n\tawardContainer: {\n\t\tmarginTop: \"auto\",\n\t\tmarginBottom: \"auto\",\n\t\tdisplay: \"flex\",\n\t\tflexDirection: \"column\",\n\t\talignItems: \"center\",\n\t\tborderTopLeftRadius: 12,\n\t\tborderTopRightRadius: 12,\n\t\tbackgroundClip: \"content-box\",\n\t\tposition: \"relative\",\n\t},\n\tawardImage: {\n\t\tmaxHeight: 90,\n\t\tmaxWidth: 90,\n\t\tmargin: 10,\n\t},\n\taward: {\n\t\tdisplay: \"flex\",\n\t\tjustifyContent: \"center\",\n\t\tmaxWidth: 100,\n\t},\n\teventName: {\n\t\theight: 54,\n\t\tdisplay: \"flex\",\n\t\tjustifyContent: \"center\",\n\t\ttextAlign: \"center\",\n\t\tfontSize: 12,\n\t},\n\tpatreonLevel: {\n\t\theight: 150,\n\t\tdisplay: \"flex\",\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\ttextAlign: \"center\",\n\t},\n\teditIcon: {\n\t\tposition: \"absolute\",\n\t\tright: 8,\n\t\ttop: 8,\n\t\theight: 20,\n\t\twidth: 20,\n\t\tstroke: theme.palette.secondary.main,\n\t\tfill: theme.palette.secondary.main,\n\t\tzIndex: 1,\n\t\t\"&:hover\": {\n\t\t\tcursor: \"pointer\",\n\t\t},\n\t},\n\teditIconInner: {\n\t\theight: 20,\n\t\twidth: 20,\n\t\tstroke: theme.palette.secondary.main,\n\t\tfill: theme.palette.secondary.main,\n\t},\n}));\n\nexport default function TrophyCase(props) {\n\tconst { userId, awards, slots, width } = props;\n\tconst isCurrentUser = userId === UserManager.getUserId();\n\tconst [trophyCase, setTrophyCase] = React.useState(null);\n\n\tReact.useEffect(() => {\n\t\tTrophyService.getUserTrophyCase(userId).then((awardData) => {\n\t\t\tsetTrophyCase(awardData);\n\t\t});\n\t}, [userId]);\n\n\tconst styles = useStyles();\n\tconst getGradientColor = (trophyTypeId) => {\n\t\tswitch (trophyTypeId) {\n\t\t\tcase TrophyTypes.Wood:\n\t\t\t\treturn Colors.wood;\n\t\t\tcase TrophyTypes.Bronze:\n\t\t\t\treturn Colors.bronze;\n\t\t\tcase TrophyTypes.Silver:\n\t\t\t\treturn Colors.silver;\n\t\t\tcase TrophyTypes.Gold:\n\t\t\t\treturn Colors.gold;\n\t\t\tcase TrophyTypes.Platinum:\n\t\t\t\treturn Colors.platinum;\n\t\t\tcase TrophyTypes.Diamond:\n\t\t\t\treturn Colors.diamond;\n\t\t\tdefault:\n\t\t\t\treturn Colors.panelLight;\n\t\t}\n\t};\n\n\tconst selectTrophyCaseSlot = (slotId, trophyId, eventId) => {\n\t\tModalHelper.closeAllModals();\n\t\tSetLoading(true, \"Updating Trophy Case\");\n\t\tTrophyService.updateTrophyCase(slotId, trophyId, eventId).then(() => {\n\t\t\tSetLoading(false);\n\t\t\tUserProfileModalHelper.openProfile(props.userId);\n\t\t});\n\t};\n\n\tconst editTrophySlot = (slotId) => {\n\t\tconst except = trophyCase.filter(\n\t\t\t(trophyCase) => trophyCase.slot !== slotId\n\t\t);\n\t\tModalHelper.openModal(, () => {}, {\n\t\t\theader: \"Select a trophy to pin\",\n\t\t\tawards,\n\t\t\texcept,\n\t\t\tonSelect: selectTrophyCaseSlot.bind(this, slotId),\n\t\t});\n\t};\n\n\tif (!trophyCase) {\n\t\treturn <>;\n\t}\n\n\tconst customStyle = {\n\t\twidth,\n\t};\n\treturn (\n\t\t\n\t\t\t{Array.from({ length: slots }, (x, i) => i).map((index) => {\n\t\t\t\tconst record = trophyCase.find((tc) => tc.slot === index);\n\t\t\t\tconst gradientColor = getGradientColor(record?.trophyTypeId);\n\t\t\t\tconst hasSlotAccess = slots >= index + 1;\n\t\t\t\tconst editClicked = () => {\n\t\t\t\t\teditTrophySlot(index);\n\t\t\t\t};\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t\t\t{isCurrentUser && hasSlotAccess && (\n\t\t\t\t\t\t\tEdit}>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{record && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t{record.eventName}\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!record && (\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tOpen\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t})}\n\t\t\n\t);\n}\n","export class NameplateStyle {\n\t/** @type {number} */\n\tid = null;\n\t/** @type {string} */\n\tname = \"\";\n\t/** @type {string} */\n\tdescription = \"\";\n\t/** @type {string} */\n\tstyle = \"\";\n\t/** @type {number | null} */\n\tnamePlateTypeId = null;\n\n\tconstructor(id, name, description, style, namePlateTypeId) {\n\t\tthis.id = id;\n\t\tthis.name = name;\n\t\tthis.description = description;\n\t\tthis.style = style;\n\t\tthis.namePlateTypeId = namePlateTypeId;\n\t}\n}\n","import React from \"react\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalPanelTransparent,\n\tModalHeader,\n\tModalBody,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\n// eslint-disable-next-line no-unused-vars\nimport { NameplateStyle } from \"common/types/NameplateStyle\";\nimport { Grid, makeStyles, Box } from \"@material-ui/core\";\nimport UserCard from \"common/components/UserCard\";\n\nconst useStyles = makeStyles((theme) => ({\n\tpointer: {\n\t\tcursor: \"pointer\",\n\t},\n\tname: {\n\t\ttextDecoration: \"underline\",\n\t\tdisplay: \"block\",\n\t\tmarginTop: theme.spacing(),\n\t\tcursor: \"pointer\",\n\t},\n\tdescriptionContainer: {\n\t\ttextAlign: \"center\",\n\t\tfontSize: 14,\n\t},\n\tdescription: {\n\t\tcursor: \"pointer\",\n\t},\n\tmaxHeight300: {\n\t\tmaxHeight: 300,\n\t\toverflowY: \"auto\",\n\t},\n\textraItems: {\n\t\tdisplay: \"flex\",\n\t\tflexDirection: \"column\",\n\t\talignContent: \"space-around\",\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tmarginTop: 8,\n\t},\n}));\n\nexport default function NameplateSelectorModal(props) {\n\tconst {\n\t\tuserId,\n\t\tusername,\n\t\tpinnedEventName,\n\t\tpinnedTrophyImagePath,\n\t\thideDefault,\n\t} = props;\n\t/** @type {Array} */\n\tconst nameplates = props.nameplates;\n\t/** @type {(value: NameplateStyle) => void} */\n\tconst onSelect = props.onSelect;\n\tconst styles = useStyles();\n\n\t/** @type {NameplateStyle} */\n\tconst defaultNameplate = new NameplateStyle(\n\t\tnull,\n\t\t\"Classic\",\n\t\t\"The default nameplate\",\n\t\t\"\"\n\t);\n\n\tif (!onSelect) {\n\t\tconsole.error(\n\t\t\t\"You are using a Nameplate Selector Modal without an onSelect callback.\"\n\t\t);\n\t}\n\n\t/**\n\t *\n\t * @param {NameplateStyle} nameplate\n\t * @returns {JSX.Element}\n\t */\n\tconst renderNameplateChoice = (nameplate, i) => {\n\t\treturn (\n\t\t\t onSelect(nameplate)}\n\t\t\t\tjustify=\"center\"\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{props.header ?? \"Select a Nameplate\"}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{!hideDefault && renderNameplateChoice(defaultNameplate)}\n\t\t\t\t\t\t\t{nameplates.map((nameplate, i) =>\n\t\t\t\t\t\t\t\trenderNameplateChoice(nameplate, i)\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{hideDefault && nameplates.length === 0 && (\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

There are no nameplates to select.

\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n","export default class StyleHelper {\n\t/**\n\t * Utility function to add replaceable CSS.\n\t * @param {string} styleString\n\t * @returns {HTMLStyleElement} The style element.\n\t */\n\tstatic addStyle(styleString) {\n\t\tconst style = document.createElement(\"style\");\n\t\tdocument.head.append(style);\n\t\tstyle.textContent = styleString;\n\t\treturn style;\n\t}\n}\n","import axiosWrapper from \"common/axiosWrapper\";\nimport { updateUserCardsWithNameplateId } from \"common/components/UserCard\";\nimport StyleHelper from \"common/helpers/styleHelper\";\n// eslint-disable-next-line no-unused-vars\nimport { NameplateStyle } from \"../common/types/NameplateStyle\";\n\nconst baseUrl = \"/api/nameplate\";\n\nexport default class NameplateService {\n /** @type {Array} */\n static nameplates;\n\n /** Loads the nameplates for the client to render, and injects the styles. */\n static async init() {\n NameplateService.nameplates = await NameplateService.loadCachedNameplates();\n NameplateService.injectStyles();\n }\n\n /** Gets all the nameplates in the system. */\n static async loadNameplates() {\n return await axiosWrapper.getCached(`${baseUrl}/all`);\n }\n\n /** Gets all the nameplates in the system. */\n static async loadCachedNameplates() {\n return await axiosWrapper.getCached(`${baseUrl}/all-cached`);\n }\n\n static async getTypes() {\n return await axiosWrapper.getCached(`${baseUrl}/types`);\n }\n\n /**\n * Gets nameplates the user has access to.\n */\n static async getUserNameplates() {\n return await axiosWrapper.get(`${baseUrl}/user`);\n }\n\n /**\n * Gets nameplates the user has the option to choose.\n */\n static async getUserNameplateOptions() {\n return await axiosWrapper.get(`${baseUrl}/options`);\n }\n\n /**\n * Sets the users nameplate to the provided id. Or sets to default if null is provided.\n *\n * @param {number | null} nameplateId\n */\n static async setNameplate(nameplateId) {\n if (!nameplateId) {\n return await axiosWrapper.get(`${baseUrl}/set`);\n }\n return await axiosWrapper\n .get(`${baseUrl}/set?nameplateId=${nameplateId}`)\n .then(() => {\n updateUserCardsWithNameplateId(nameplateId);\n });\n }\n\n static async selectNameplate(nameplateId) {\n if (!nameplateId) {\n return;\n }\n\n return await axiosWrapper.get(\n `${baseUrl}/select?nameplateId=${nameplateId}`\n );\n }\n\n /**\n * Saves the nameplate to the API.\n *\n * @param {NameplateStyle} nameplate\n * @returns {Promise}\n */\n static async saveNameplate(nameplate) {\n return await axiosWrapper.post(`${baseUrl}/save`, nameplate);\n }\n\n static async deleteNameplate(id) {\n return await axiosWrapper.delete(`${baseUrl}/delete/${id}`);\n }\n\n static injectStyles() {\n for (const nameplate of NameplateService.nameplates) {\n // @ts-ignore\n let styleText = nameplate.style.replaceAll(\n \"{id}\",\n `.nameplate-${nameplate.id}`\n );\n StyleHelper.addStyle(styleText);\n }\n }\n}\n","import axiosWrapper from \"common/axiosWrapper\";\n\nconst baseUrl = \"/api/lookup\";\n\nexport default class LookupService {\n\t/**\n\t * @returns {Promise>}\n\t */\n\tstatic async getGames() {\n\t\treturn axiosWrapper.getCached(`${baseUrl}/games`);\n\t}\n\t/**\n\t * @returns {Promise>}\n\t */\n\tstatic getPatreonLevels = async () => {\n\t\treturn await axiosWrapper.getCached(`${baseUrl}/patreonlevels`);\n\t};\n}\n","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgTrophy = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 24 24\",\n enableBackground: \"new 0 0 32 32\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 18.1 21.333 L 17.1 21.333 L 17.1 17.778 C 17.1 17.287 16.652 16.889 16.1 16.889 L 15.1 16.889 L 13.1 15.111 L 13.1 13.087 C 13.696 12.78 14.099 12.213 14.1 11.557 C 15.034 11.105 15.749 10.344 16.298 9.44 C 19.491 8.052 21.7 5.143 21.7 1.778 C 21.7 1.483 21.432 1.244 21.1 1.244 L 18.1 1.244 L 18.1 0.666 C 18.1 0.299 17.765 0 17.35 0 L 6.85 0 C 6.435 0 6.1 0.299 6.1 0.666 L 6.1 1.244 L 3.1 1.244 C 2.769 1.244 2.5 1.482 2.5 1.778 C 2.5 5.143 4.709 8.052 7.902 9.44 C 8.45 10.343 9.167 11.105 10.1 11.556 C 10.101 12.212 10.505 12.779 11.1 13.086 L 11.1 15.111 L 9.1 16.889 L 8.1 16.889 C 7.548 16.889 7.1 17.287 7.1 17.778 L 7.1 21.333 L 6.1 21.333 C 5.548 21.333 5.1 21.732 5.1 22.222 L 5.1 23.556 C 5.1 23.8 5.324 24 5.6 24 L 18.6 24 C 18.875 24 19.1 23.8 19.1 23.556 L 19.1 22.222 C 19.1 21.732 18.652 21.333 18.1 21.333 Z M 18.092 2.311 L 20.479 2.311 C 20.3 4.548 19.004 6.511 17.09 7.773 C 17.907 5.562 18.063 3.15 18.092 2.311 Z M 3.721 2.311 L 6.107 2.311 C 6.136 3.15 6.293 5.562 7.11 7.773 C 5.196 6.511 3.9 4.548 3.721 2.311 Z M 10.635 6.535 C 10.587 6.562 10.526 6.558 10.483 6.531 C 10.439 6.5 10.417 6.451 10.429 6.403 L 10.804 4.925 L 9.521 3.924 C 9.481 3.892 9.463 3.841 9.482 3.795 C 9.498 3.748 9.546 3.714 9.6 3.709 L 11.3 3.57 L 11.975 2.176 C 12.017 2.087 12.183 2.087 12.225 2.176 L 12.9 3.57 L 14.601 3.709 C 14.655 3.714 14.704 3.748 14.719 3.795 C 14.737 3.841 14.72 3.891 14.68 3.924 L 13.397 4.925 L 13.772 6.403 C 13.784 6.452 13.762 6.5 13.718 6.531 C 13.694 6.546 13.666 6.554 13.637 6.554 C 13.614 6.554 13.588 6.546 13.566 6.535 L 12.1 5.762 L 10.635 6.535 Z M 15.1 20.444 L 9.1 20.444 L 9.1 18.666 L 15.1 18.666 L 15.1 20.444 Z\"\n })));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgTrophy, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/Trophy.96c61b59.svg\";\nexport { ForwardRef as ReactComponent };","import axiosWrapper from \"common/axiosWrapper\";\n\n/**\n * Fetches the user profile for the provided user id.\n *\n * @param {string} userId The user id of the profile being viewed.\n */\nexport const getUserProfile = async (userId) => {\n\treturn await axiosWrapper.get(`api/user/profile?userId=${userId}`);\n};\n\n/** Gets the discord login url. */\nexport const getDiscordLinkUrl = async () => {\n\treturn await axiosWrapper.getCached(`api/auth/discord-link-url`);\n};\n\n/** Gets the google url. */\nexport const getGoogleLinkUrl = async () => {\n\treturn await axiosWrapper.getCached(`api/auth/google-link-url`);\n};\n\n/** Gets the Reddit url. */\nexport const getRedditLinkUrl = async () => {\n\treturn await axiosWrapper.getCached(`api/auth/reddit-link-url`);\n};\n\n/** Gets the 3rd party services this account is registered for. */\nexport const getThirdPartyStatus = async () => {\n\treturn await axiosWrapper.getCached(`api/auth/third-party-status`);\n};\n","import React, { useEffect, useState } from \"react\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tIconModalHeader,\n\tModalBody,\n\tModalPanel,\n\tModalPanelTransparent,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport UserManager from \"common/userManager\";\nimport { Button, makeStyles } from \"@material-ui/core\";\nimport UserCard from \"common/components/UserCard\";\nimport PersonIcon from \"@material-ui/icons/Person\";\nimport HttpsIcon from \"@material-ui/icons/Https\";\nimport { toMonthNameAndYear } from \"common/helpers/dateHelper\";\nimport AwardSummary from \"components/screens/TrophyRoom/AwardSummary\";\nimport { AiFillPushpin } from \"react-icons/ai\";\nimport { EditOutlined } from \"@material-ui/icons\";\nimport TrophyService from \"services/TrophyService\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport TrophySelectorModal from \"common/components/Modals/TrophySelectorModal/TrophySelectorModal\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport UserProfileModalHelper from \"common/helpers/userProfileModalHelper\";\nimport HtmlTooltip from \"common/components/HtmlTooltip/HtmlTooltip\";\nimport { Colors } from \"styles/Colors\";\nimport TrophyCase from \"common/components/TrophyCase/TrophyCase\";\nimport UserService from \"services/UserService\";\nimport NameplateSelectorModal from \"../NameplateSelectorModal/NameplateSelectorModal\";\nimport NameplateService from \"services/NameplateService\";\nimport LookupService from \"services/LookupService\";\nimport { ReactComponent as Trophy } from \"icons/Trophy.svg\";\nimport {\n\tgetDiscordLinkUrl,\n\tgetGoogleLinkUrl,\n\tgetRedditLinkUrl,\n\tgetThirdPartyStatus,\n} from \"./api\";\nimport { LocalStorageKeys } from \"common/constants/StorageKeys\";\n\nconst useStyles = makeStyles((theme) => ({\n\ttopContainer: {\n\t\twidth: 340,\n\t\tdisplay: \"flex\",\n\t\tjustifyContent: \"space-between\",\n\t},\n\tsummary: {},\n\tdetailSection: {\n\t\tmarginBottom: 8,\n\t},\n\tdetailText: {\n\t\tfontSize: 12,\n\t},\n\tpinnedTrophyContainer: {\n\t\twidth: 140,\n\t\tposition: \"relative\",\n\t\tmarginLeft: 8,\n\t},\n\tpinnedTrophyWrapper: {\n\t\tdisplay: \"flex\",\n\t\tposition: \"relative\",\n\t\tflexWrap: \"wrap\",\n\t\tjustifyContent: \"center\",\n\t},\n\tpinnedAwardImage: {\n\t\tmaxHeight: 120,\n\t},\n\tpinnedAwardName: {\n\t\tfontSize: 12,\n\t\ttextAlign: \"center\",\n\t\tmarginTop: 10,\n\t},\n\tpinIcon: {\n\t\ttransform: \"rotate(270deg)\",\n\t\tposition: \"absolute\",\n\t\tleft: 0,\n\t\ttop: 4,\n\t\theight: 20,\n\t\twidth: 20,\n\t\tstroke: theme.palette.secondary.main,\n\t\tfill: theme.palette.secondary.main,\n\t\tzIndex: 1,\n\t},\n\teditIcon: {\n\t\tposition: \"absolute\",\n\t\tright: 0,\n\t\ttop: 4,\n\t\theight: 20,\n\t\twidth: 20,\n\t\tstroke: theme.palette.secondary.main,\n\t\tfill: theme.palette.secondary.main,\n\t\tzIndex: 1,\n\t\t\"&:hover\": {\n\t\t\tcursor: \"pointer\",\n\t\t},\n\t},\n\teditIconDiagonal: {\n\t\tposition: \"absolute\",\n\t\tright: -4,\n\t\ttop: -16,\n\t\theight: 20,\n\t\twidth: 20,\n\t\tstroke: theme.palette.secondary.main,\n\t\tfill: theme.palette.secondary.main,\n\t\tzIndex: 1,\n\t\t\"&:hover\": {\n\t\t\tcursor: \"pointer\",\n\t\t},\n\t},\n\teditIconInner: {\n\t\theight: 20,\n\t\twidth: 20,\n\t\tstroke: theme.palette.secondary.main,\n\t\tfill: theme.palette.secondary.main,\n\t},\n\tdivider: {\n\t\tborder: \"1px solid \" + Colors.body,\n\t\tdisplay: \"block\",\n\t\tmarginLeft: 10,\n\t\tmarginRight: 10,\n\t},\n\textraItems: {\n\t\tdisplay: \"flex\",\n\t\tflexDirection: \"column\",\n\t\talignContent: \"space-around\",\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tmarginTop: 8,\n\t},\n\teditNameplate: {\n\t\tfloat: \"right\",\n\t\theight: 20,\n\t\twidth: 20,\n\t\tleft: 4,\n\t\ttop: 4,\n\t\tposition: \"relative\",\n\t\t\"&:hover\": {\n\t\t\tcursor: \"pointer\",\n\t\t},\n\t},\n\tthirdPartyTable: {\n\t\ttextAlign: \"left\",\n\t\tpadding: 4,\n\t\t\"& th\": {\n\t\t\tpadding: 4,\n\t\t\tborderBotton: \"1px solid white\",\n\t\t},\n\t\t\"& td\": {\n\t\t\tpadding: 4,\n\t\t\tpaddingBottom: 0,\n\t\t},\n\t},\n}));\n\nexport default function UserProfileModal(props) {\n\tconst styles = useStyles();\n\tconst [profile, setProfile] = useState(null);\n\tconst [awards, setAwards] = React.useState(null);\n\tconst [games, setGames] = React.useState([]);\n\tconst [pinnedAward, setPinnedAward] = React.useState(null);\n\tconst [discordLinkUrl, setDiscordLinkUrl] = React.useState(null);\n\tconst [googleLinkUrl, setGoogleLinkUrl] = React.useState(null);\n\tconst [redditLinkUrl, setRedditLinkUrl] = React.useState(null);\n\tconst [thirdPartyLinks, setThirdPartyLinks] = React.useState(null);\n\tconst [nameplates, setNameplates] = useState([]);\n\tconst [loading, setLoading] = useState(true);\n\tconst hasPinned = !!pinnedAward;\n\tconst isCurrentUser = props.userId === UserManager.getUserId();\n\tconst headerText = isCurrentUser ? \"Your Profile\" : \"Profile\";\n\n\tuseEffect(() => {\n\t\tSetLoading(true, \"Loading Profile\");\n\n\t\tconst promises = [\n\t\t\tUserService.getUserProfile(props.userId).then((profile) => {\n\t\t\t\tsetProfile(profile);\n\t\t\t}),\n\t\t\tTrophyService.getYourAwards(props.userId, null).then((awardData) => {\n\t\t\t\tsetAwards(awardData);\n\t\t\t}),\n\t\t\tLookupService.getGames().then((games) => {\n\t\t\t\tsetGames(games);\n\t\t\t}),\n\t\t];\n\n\t\tif (isCurrentUser) {\n\t\t\tpromises.push(\n\t\t\t\tNameplateService.getUserNameplates().then((nameplates) => {\n\t\t\t\t\tsetNameplates(nameplates);\n\t\t\t\t})\n\t\t\t);\n\t\t\tpromises.push(\n\t\t\t\tgetDiscordLinkUrl().then((discordLinkUrl) => {\n\t\t\t\t\tsetDiscordLinkUrl(discordLinkUrl);\n\t\t\t\t})\n\t\t\t);\n\t\t\tpromises.push(\n\t\t\t\tgetGoogleLinkUrl().then((googleLinkUrl) => {\n\t\t\t\t\tsetGoogleLinkUrl(googleLinkUrl);\n\t\t\t\t})\n\t\t\t);\n\t\t\tpromises.push(\n\t\t\t\tgetRedditLinkUrl().then((redditLinkUrl) => {\n\t\t\t\t\tsetRedditLinkUrl(redditLinkUrl);\n\t\t\t\t})\n\t\t\t);\n\t\t\tpromises.push(\n\t\t\t\tgetThirdPartyStatus().then((links) => {\n\t\t\t\t\tsetThirdPartyLinks(links);\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tPromise.all(promises).then(() => {\n\t\t\tSetLoading(false);\n\t\t\tsetLoading(false);\n\t\t});\n\t}, [isCurrentUser, props.userId]);\n\n\tuseEffect(() => {\n\t\tif (awards) {\n\t\t\tconst pinnedAwards = awards.filter((item) => item.pinned);\n\t\t\tsetPinnedAward(pinnedAwards.length > 0 && pinnedAwards[0]);\n\t\t} else {\n\t\t\tsetPinnedAward(null);\n\t\t}\n\t}, [awards]);\n\n\tif (!profile) {\n\t\treturn <>;\n\t}\n\n\tif (loading) {\n\t\treturn <>;\n\t}\n\n\tconst monthAndYear = toMonthNameAndYear(profile.created);\n\n\tconst selectPinnedTrophy = (trophyId, eventId) => {\n\t\tModalHelper.closeAllModals();\n\t\tSetLoading(true, \"Pinning Trophy\");\n\t\tTrophyService.pinTrophy(trophyId, eventId).then(() => {\n\t\t\tSetLoading(false);\n\t\t\tUserProfileModalHelper.openProfile(props.userId);\n\t\t});\n\t};\n\n\tconst editPinnedTrophy = () => {\n\t\tModalHelper.openModal(, () => {}, {\n\t\t\theader: \"Select a trophy to pin\",\n\t\t\tawards,\n\t\t\tonSelect: selectPinnedTrophy.bind(this),\n\t\t});\n\t};\n\n\tconst selectNameplate = (nameplate) => {\n\t\tModalHelper.closeAllModals();\n\t\tSetLoading(true, \"Changing Nameplate\");\n\t\tNameplateService.setNameplate(nameplate.id).then(() => {\n\t\t\tSetLoading(false);\n\t\t\tUserProfileModalHelper.openProfile(props.userId);\n\t\t});\n\t};\n\n\tconst editNameplate = () => {\n\t\tModalHelper.openModal(, () => {}, {\n\t\t\theader: \"Select a Nameplate\",\n\t\t\tuserId: props.userId,\n\t\t\tusername: profile?.username,\n\t\t\tnameplates,\n\t\t\tpinnedEventName: pinnedAward?.eventName,\n\t\t\tpinnedTrophyImagePath: pinnedAward?.imagePath,\n\t\t\tonSelect: selectNameplate.bind(this),\n\t\t});\n\t};\n\n\tconst onLinkAccountClick = (provider) => {\n\t\tswitch (provider) {\n\t\t\tcase \"Discord\":\n\t\t\t\tstoreCurrentRoute();\n\t\t\t\twindow.location.replace(discordLinkUrl);\n\t\t\t\tbreak;\n\t\t\tcase \"Google\":\n\t\t\t\tstoreCurrentRoute();\n\t\t\t\twindow.location.replace(googleLinkUrl);\n\t\t\t\tbreak;\n\t\t\tcase \"Reddit\":\n\t\t\t\tstoreCurrentRoute();\n\t\t\t\twindow.location.replace(redditLinkUrl);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tconsole.error(\"Invalid 3rd party provider, \" + provider);\n\t\t}\n\t};\n\n\tconst storeCurrentRoute = () => {\n\t\tlocalStorage.setItem(\n\t\t\tLocalStorageKeys.POSTLINKURL,\n\t\t\twindow.location.pathname + window.location.search\n\t\t);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t} label={headerText} />\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{isCurrentUser && (\n\t\t\t\t\t\t\t\t\t\tEdit Nameplate}>\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
Joined {monthAndYear}
\n\t\t\t\t\t\t\t\t\t{profile?.patreonLevel?.id !== 1 && (\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{profile?.patreonLevel?.name}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{!!hasPinned && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{isCurrentUser && (\n\t\t\t\t\t\t\t\t\t\t\tEdit Pinned Trophy}>\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t{pinnedAward?.eventName}\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{!hasPinned && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\tNo pinned trophy\n\t\t\t\t\t\t\t\t\t\t{isCurrentUser && (\n\t\t\t\t\t\t\t\t\t\t\tEdit Pinned Trophy}>\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\t{isCurrentUser && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tlabel=\"Third Party Accounts\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
ProviderStatus
Discord\n\t\t\t\t\t\t\t\t\t\t\t\t\t{(thirdPartyLinks ?? []).includes(\"Discord\") ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tLinked\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonLinkAccountClick(\"Discord\");\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tLink Your Account\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t
Google\n\t\t\t\t\t\t\t\t\t\t\t\t\t{(thirdPartyLinks ?? []).includes(\"Google\") ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tLinked\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonLinkAccountClick(\"Google\");\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tLink Your Account\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t
Reddit\n\t\t\t\t\t\t\t\t\t\t\t\t\t{(thirdPartyLinks ?? []).includes(\"Reddit\") ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tLinked\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonLinkAccountClick(\"Reddit\");\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tLink Your Account\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n","import React from \"react\";\nimport ModalHelper from \"./modalHelper\";\nimport UserProfileModal from \"common/components/Modals/UserProfileModal/UserProfileModal\";\n\nexport default class UserProfileModalHelper {\n\t/**\n\t * Opens the user profile for the user by id.\n\t * @param {number} userId\n\t */\n\tstatic openProfile(userId, onClose) {\n\t\tModalHelper.openModal(, onClose);\n\t}\n}\n","import axiosWrapper from \"common/axiosWrapper\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\n// eslint-disable-next-line no-unused-vars\nimport { NotificationDto } from \"common/types/NotificationDto\";\n\nconst baseUrl = \"/api/notification\";\n\nexport default class NotificationService {\n\t/**\n\t *\n\t * @returns {Promise>}\n\t */\n\tstatic async getNotifications() {\n\t\treturn axiosWrapper.getCached(`${baseUrl}/all`);\n\t}\n\n\t/**\n\t *\n\t * @param {number} notificationId\n\t * @returns {Promise>}\n\t */\n\tstatic async clearNotification(notificationId) {\n\t\treturn axiosWrapper.post(`${baseUrl}/clear`, { notificationId });\n\t}\n\n\t/**\n\t *\n\t * @param {NotificationDto} notification\n\t * @returns\n\t */\n\tstatic async readNotification(notification) {\n\t\tif (!notification) {\n\t\t\treturn;\n\t\t}\n\n\t\t/** @type {number[]} */\n\t\tconst read = Store.get(StoreKeys.NOTIFICATIONS.READ, []);\n\t\tif (!read.includes(notification.id)) {\n\t\t\tread.push(notification.id);\n\t\t\tStore.set(StoreKeys.NOTIFICATIONS.READ, read);\n\n\t\t\tNotificationService.clearNotification(notification.id);\n\t\t}\n\t}\n}\n","export const NotificationClickAction = {\n\tSelectPremiumNameplate: 1,\n\tViewTrophy: 2,\n\tOpenProfile: 3,\n};\n","export const Routes = {\n COMMUNITY: \"/community\",\n LEAGUES: \"/leagues\",\n PICKEMS: \"/pickems\",\n RLAWARDS: \"/survey\",\n TROPHYROOM: \"/trophy-room\",\n};\n\nexport const Tabs = {\n COMMUNITY: \"community\",\n LEAGUES: \"leagues\",\n PICKEMS: \"pickems\",\n RLAWARDS: \"survey\",\n TROPHYROOM: \"trophy-room\",\n};\n","var _title, _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgPick = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n \"data-name\": \"Layer 106\",\n viewBox: \"0 0 24 24\",\n x: \"0px\",\n y: \"0px\",\n ref: svgRef\n }, props), title === undefined ? _title || (_title = /*#__PURE__*/React.createElement(\"title\", null, \"Pick\")) : title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(0.298446, 0, 0, 0.298645, -2.860601, -2.995972)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 67 20.61 C 67.15 20.475 67.307 20.348 67.47 20.23 C 65.09 18.19 50.19 6 32.12 11.4 C 30.552 11.906 30.12 13.919 31.341 15.024 C 31.667 15.318 32.075 15.505 32.51 15.56 C 35.99 15.96 51.14 18.38 57.12 30.56 C 57.212 30.433 57.312 30.313 57.42 30.2 Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 69.84 42.58 C 69.727 42.688 69.607 42.788 69.48 42.88 C 81.62 48.88 84.04 64.01 84.48 67.49 C 84.685 69.125 86.583 69.924 87.896 68.929 C 88.246 68.664 88.505 68.298 88.64 67.88 C 94.02 49.81 81.86 34.88 79.81 32.58 C 79.692 32.74 79.565 32.894 79.43 33.04 Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 10.82 89.18 C 12.437 90.8 15.063 90.8 16.68 89.18 L 63.68 42.18 L 57.8 36.35 L 10.8 83.35 C 9.18 84.967 9.18 87.593 10.8 89.21 Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 69.13 41.88 L 78.68 32.33 C 79.265 31.748 79.593 30.955 79.59 30.13 C 79.6 29.306 79.271 28.514 78.68 27.94 L 72.06 21.32 C 70.849 20.105 68.881 20.105 67.67 21.32 L 58.12 30.87 C 56.911 32.084 56.911 34.046 58.12 35.26 L 64.74 41.88 C 65.969 43.052 67.901 43.052 69.13 41.88 Z\"\n }))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgPick, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/Pick.d24393e6.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgCrown = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15.185,\n height: 11.43,\n viewBox: \"0 0 15.185 11.43\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Component_52_49\",\n \"data-name\": \"Component 52 \\\\u2013 49\",\n transform: \"translate(0.75 0.75)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_2030\",\n \"data-name\": \"Path 2030\",\n d: \"M-4888.032,19800.248l1.744,6.816h10.411l1.53-6.816-3.22,1.662-3.676-4.775-3.351,4.775Z\",\n transform: \"translate(4888.032 -19797.135)\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5\n }), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_407\",\n \"data-name\": \"Line 407\",\n transform: \"translate(1.532 8.365)\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 1\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_2031\",\n \"data-name\": \"Path 2031\",\n d: \"M-4886.5,19805.348h11\",\n transform: \"translate(4888.032 -19797.135)\",\n fill: \"none\",\n stroke: \"#currentColor\",\n strokeWidth: 1\n }))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgCrown, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/Crown.1cea5bb3.svg\";\nexport { ForwardRef as ReactComponent };","// import { PeopleAlt } from \"@material-ui/icons\";\nimport { Tabs } from \"common/constants/Routes\";\nimport React from \"react\";\nimport { ReactComponent as Pick } from \"icons/Pick.svg\";\nimport { ReactComponent as Trophy } from \"icons/Trophy.svg\";\nimport { ReactComponent as Crown } from \"icons/Crown.svg\";\nimport * as Styles from \"./styles\";\nimport { Poll } from \"@material-ui/icons\";\n\nexport default function useTabList(screen = \"large\", hasSurvey = false) {\n let iconStyles;\n if (screen === \"large\") {\n iconStyles = Styles.styles().tabicons;\n } else {\n iconStyles = Styles.styles().smallTabIcons;\n }\n\n const tabs = [\n {\n title: \"PICK'EMS\",\n value: Tabs.PICKEMS,\n visible: true,\n get icon() {\n return ;\n },\n },\n {\n title: \"LEAGUES\",\n value: Tabs.LEAGUES,\n visible: true,\n get icon() {\n return ;\n },\n },\n {\n title: \"TROPHY ROOM\",\n value: Tabs.TROPHYROOM,\n visible: true,\n get icon() {\n return ;\n },\n },\n {\n title: \"2024 Championship\",\n value: Tabs.RLAWARDS,\n visible: hasSurvey,\n get icon() {\n return ;\n },\n },\n ];\n\n /* \tif (hasSurvey) {\n\t\ttabs.push({\n\t\t\ttitle: \"RL PRO AWARDS\",\n\t\t\tvalue: Tabs.RLAWARDS,\n\t\t\tget icon() {\n\t\t\t\treturn ;\n\t\t\t},\n\t\t});\n\t} */\n\n return tabs;\n}\n","import {\n\tgames,\n\tGetCurrentGameId,\n\tGetCurrentGamePrefix,\n} from \"common/constants/Games\";\nimport { Routes, Tabs } from \"common/constants/Routes\";\nimport { SessionStorageKeys } from \"common/constants/StorageKeys\";\nimport { changeUrl } from \"common/history\";\nimport { useState } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport const getCurrentTabFromRoute = (loc) => {\n\tlet pathname = loc.pathname.split(\"?\")[0];\n\tfor (const game of games) {\n\t\tif (pathname.startsWith(`/${game.prefix}`)) {\n\t\t\tpathname = pathname.substring(game.prefix.length + 1);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tswitch (pathname) {\n\t\tcase Routes.COMMUNITY:\n\t\t\treturn Tabs.COMMUNITY;\n\t\tcase Routes.LEAGUES:\n\t\t\treturn Tabs.LEAGUES;\n\t\tcase Routes.TROPHYROOM:\n\t\t\treturn Tabs.TROPHYROOM;\n\t\tcase Routes.RLAWARDS:\n\t\t\treturn Tabs.RLAWARDS;\n\t\tdefault:\n\t\t\treturn Tabs.PICKEMS;\n\t}\n};\n\nexport default function useTabSelect() {\n\tconst location = useLocation();\n\tconst currentTab = getCurrentTabFromRoute(location);\n\tconst [, setTab] = useState(currentTab);\n\n\tconst updateTab = (value) => {\n\t\tconst route = GetCurrentGamePrefix();\n\t\tswitch (value) {\n\t\t\tcase Tabs.PICKEMS:\n\t\t\t\tsetTab(Tabs.PICKEMS);\n\t\t\t\tchangeUrl(route);\n\t\t\t\tbreak;\n\t\t\tcase Tabs.LEAGUES:\n\t\t\t\tsetTab(Tabs.LEAGUES);\n\t\t\t\tchangeUrl(route + Routes.LEAGUES);\n\t\t\t\tbreak;\n\t\t\tcase Tabs.TROPHYROOM:\n\t\t\t\tsetTab(Tabs.TROPHYROOM);\n\t\t\t\tchangeUrl(route + Routes.TROPHYROOM);\n\t\t\t\tbreak;\n\t\t\tcase Tabs.COMMUNITY:\n\t\t\t\tsetTab(Tabs.COMMUNITY);\n\t\t\t\tchangeUrl(route + Routes.COMMUNITY);\n\t\t\t\tbreak;\n\t\t\tcase Tabs.RLAWARDS:\n\t\t\t\tsetTab(Tabs.RLAWARDS);\n\t\t\t\tchangeUrl(route + Routes.RLAWARDS);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tsetTab(route + Tabs.PICKEMS);\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\treturn [currentTab, updateTab];\n}\n","import { Hidden, Tab, Tabs } from \"@material-ui/core\";\nimport React from \"react\";\nimport * as Styles from \"./styles\";\nimport useTabList from \"./useTabList\";\nimport useTabSelect from \"./useTabSelect\";\n\nfunction TopIconMenu({ hasSurvey }) {\n const [tab, setTab] = useTabSelect();\n const tabList = useTabList(\n \"large\",\n hasSurvey && window.location.pathname.startsWith(\"/rl\")\n );\n const tabClasses = Styles.tab();\n const tabsClasses = Styles.tabs();\n\n return (\n <>\n \n }}\n >\n {tabList.map((item) => (\n \n {item.icon}\n {item.title}\n \n }\n value={item.value}\n title={item.title}\n onClick={() => {\n setTab(item.value);\n }}\n />\n ))}\n \n \n \n }}\n >\n {tabList.map((item) => (\n \n {item.icon}\n {item.title}\n \n }\n value={item.value}\n title={item.title}\n onClick={() => {\n setTab(item.value);\n }}\n style={{ visibility: item.visible ? \"visible\" : \"hidden\" }}\n />\n ))}\n \n \n \n );\n}\n\nexport default TopIconMenu;\n","import {\n\tAppBar,\n\tBadge,\n\tButton,\n\tChip,\n\tHidden,\n\tIconButton,\n\tMenu,\n\tMenuItem,\n\tToolbar,\n} from \"@material-ui/core\";\nimport {\n\tAccountCircle,\n\tExpandMore,\n\tPersonOutline,\n\tMenu as MenuIcon,\n\tNotificationsNoneOutlined,\n} from \"@material-ui/icons\";\nimport { connect } from \"common/connect\";\nimport {\n\tLocalStorageKeys,\n\tSessionStorageKeys,\n} from \"common/constants/StorageKeys\";\nimport { changeUrl } from \"common/history\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport UserManager from \"common/userManager\";\nimport { ReactComponent as PickstopLogo } from \"icons/PickstopLogoNew.svg\";\nimport React from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport * as Styles from \"./styles\";\nimport { useEffect } from \"react\";\nimport UserProfileModalHelper from \"common/helpers/userProfileModalHelper\";\nimport NotificationService from \"services/NotificationService\";\n// eslint-disable-next-line no-unused-vars\nimport { NotificationDto } from \"common/types/NotificationDto\";\nimport { NotificationClickAction } from \"common/constants/NotificationClickAction\";\nimport NameplateService from \"services/NameplateService\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport NameplateSelectorModal from \"common/components/Modals/NameplateSelectorModal/NameplateSelectorModal\";\nimport UserService from \"services/UserService\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport LookupService from \"services/LookupService\";\nimport TopIconMenu from \"./TopIconMenu\";\nimport { getCurrentTabFromRoute } from \"./useTabSelect\";\nimport { useLocation } from \"react-router-dom\";\nimport { GetCurrentGameId, SetGameGlobally } from \"common/constants/Games\";\n\nconst propKeys = {\n\tgames: StoreKeys.GAMES,\n\troles: StoreKeys.ROLES,\n\topen: StoreKeys.LeftPane.Open,\n\tnotifications: StoreKeys.NOTIFICATIONS.LIST,\n\treadNotifications: StoreKeys.NOTIFICATIONS.READ,\n\tisLoggedIn: StoreKeys.USER.LOGGED_IN,\n\tusername: StoreKeys.USER.USERNAME,\n\tcurrentSurvey: StoreKeys.SURVEY.CURRENT,\n};\n\nfunction NavMenuC(props) {\n\tconst classes = Styles.styles();\n\tconst gameMenuClasses = Styles.gameMenu();\n\tconst [mainAnchorEl, setMainAnchorEl] = React.useState(null);\n\tconst [userAnchorEl, setUserAnchorEl] = React.useState(null);\n\tconst [notificationAnchorEl, setNotificationAnchorEl] = React.useState(null);\n\tconst location = useLocation();\n\tconst tab = getCurrentTabFromRoute(location);\n\n\tconst gameId = GetCurrentGameId();\n\tconst selectedGame = props.games?.find((game) => game.id === gameId);\n\tconst isLoggedIn = props.isLoggedIn;\n\tconst userId = UserManager.getUserId();\n\tconst username = props.username;\n\tconst isAdmin =\n\t\tprops.roles?.includes(\"Admin\") ||\n\t\tprops.roles?.includes(\"EventCreator\") ||\n\t\tprops.roles?.includes(\"SurveyCreator\");\n\tlet unreadNotificationCount = props.notifications?.length;\n\n\tif (props.readNotifications && props.notifications) {\n\t\tunreadNotificationCount = props.notifications.filter(\n\t\t\t(n) => !props.readNotifications.includes(n.id)\n\t\t).length;\n\t}\n\n\tuseEffect(() => {\n\t\tif (!props.games) {\n\t\t\tLookupService.getGames().then((games) => {\n\t\t\t\tStore.set(StoreKeys.GAMES, games);\n\t\t\t});\n\t\t}\n\t\tif (isLoggedIn && !props.notifications) {\n\t\t\tNotificationService.getNotifications().then((notifications) => {\n\t\t\t\tStore.set(StoreKeys.NOTIFICATIONS.LIST, notifications);\n\t\t\t});\n\t\t}\n\t}, [isLoggedIn, props.games, props.notifications]);\n\n\tconst handleMainMenuClick = (event) => {\n\t\tsetMainAnchorEl(event.currentTarget);\n\t};\n\n\tconst handleMainMenuClose = () => {\n\t\tsetMainAnchorEl(null);\n\t};\n\n\tconst handleNotificationMenuClick = (event) => {\n\t\tsetNotificationAnchorEl(event.currentTarget);\n\t};\n\n\tconst handleNotificationMenuClose = () => {\n\t\tsetNotificationAnchorEl(null);\n\t};\n\n\tconst handleUserMenuClick = (event) => {\n\t\tsetUserAnchorEl(event.currentTarget);\n\t};\n\n\tconst handleUserMenuClose = () => {\n\t\tsetUserAnchorEl(null);\n\t};\n\n\tconst onSelectPremiumNameplateAction = () => {\n\t\tPromise.all([\n\t\t\tUserService.getUserCardInfo(userId),\n\t\t\tNameplateService.getUserNameplateOptions(),\n\t\t]).then(([userCard, nameplates]) => {\n\t\t\tconst pinnedTrophy = !!userCard ? userCard.pinnedTrophy[0] : null;\n\t\t\tModalHelper.openModal(, () => {}, {\n\t\t\t\theader: \"Unlock 1 Patron reward nameplate for this month\",\n\t\t\t\tuserId,\n\t\t\t\tusername,\n\t\t\t\tnameplates,\n\t\t\t\tpinnedEventName: pinnedTrophy?.eventName,\n\t\t\t\tpinnedTrophyImagePath: pinnedTrophy?.imagePath,\n\t\t\t\tonSelect: selectNameplate.bind(this),\n\t\t\t\thideDefault: true,\n\t\t\t});\n\t\t});\n\t};\n\n\tconst selectNameplate = (nameplate) => {\n\t\tModalHelper.closeAllModals();\n\t\tSetLoading(true, \"Saving Nameplate\");\n\t\tNameplateService.selectNameplate(nameplate.id).then(() => {\n\t\t\tSetLoading(false);\n\t\t});\n\t};\n\n\t/**\n\t *\n\t * @param {NotificationDto} notification\n\t */\n\tconst handleNotificationClicked = (notification) => {\n\t\thandleNotificationMenuClose();\n\n\t\tNotificationService.readNotification(notification);\n\t\tswitch (notification.onClickAction) {\n\t\t\tcase NotificationClickAction.SelectPremiumNameplate:\n\t\t\t\tonSelectPremiumNameplateAction();\n\t\t\t\tbreak;\n\t\t\tcase NotificationClickAction.ViewTrophy:\n\t\t\t\t// Not used.\n\t\t\t\tbreak;\n\t\t\tcase NotificationClickAction.OpenProfile:\n\t\t\t\tconst userId = UserManager.getUserId();\n\t\t\t\tUserProfileModalHelper.openProfile(userId);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`Failed to implement notification click action, ${notification.onClickAction}, in NavMenu.js`\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tconst handleSetGame = (newGameId) => {\n\t\tSetGameGlobally(gameId, newGameId, true);\n\t};\n\n\tconst handleDrawerToggle = () => {\n\t\tStore.set(StoreKeys.LeftPane.Open, !props.open);\n\t};\n\n\tconst renderAuthMenuItems = () => {\n\t\treturn (\n\t\t\t
\n\t\t\t\t{isLoggedIn && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{props.notifications?.length === 0 && (\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\thandleNotificationMenuClose();\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tNo notifications\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{props.notifications?.map((notification, i) => (\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\thandleNotificationClicked(notification);\n\t\t\t\t\t\t\t\t\t\thandleNotificationMenuClose();\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{notification.html && (\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tconst userId = UserManager.getUserId();\n\t\t\t\t\t\t\t\t\tUserProfileModalHelper.openProfile(userId);\n\t\t\t\t\t\t\t\t\thandleUserMenuClose();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tProfile\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{isAdmin && (\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tchangeUrl(\"/admin\");\n\t\t\t\t\t\t\t\t\t\thandleUserMenuClose();\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tAdmin\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\thandleUserMenuClose();\n\t\t\t\t\t\t\t\t\tUserManager.logout().then(() => {\n\t\t\t\t\t\t\t\t\t\tchangeUrl(\"/\");\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tLog Out\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{!isLoggedIn && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tUserManager.openLoginModal();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tLogin\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tUserManager.openRegisterModal();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tRegister\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\thandleUserMenuClose();\n\t\t\t\t\t\t\t\t\t\tUserManager.openLoginModal();\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tLogin\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\thandleUserMenuClose();\n\t\t\t\t\t\t\t\t\t\tUserManager.openRegisterModal();\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tRegister\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{tab === \"pickems\" && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t changeUrl(\"/\")} />\n\t\t\t\t{props.games && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{selectedGame?.name}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{props.games?.map((game, i) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t handleSetGame(game.id)}>\n\t\t\t\t\t\t\t\t\t\t{game.name}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\n\t\t\t\t{}\n\n\t\t\t\t{renderAuthMenuItems()}\n\t\t\t\n\t\t\n\t);\n}\n\nconst NavMenu = withRouter((props) => connect(, propKeys, props));\n\nexport default NavMenu;\n","import { AppBar, Tab, Tabs, Toolbar } from \"@material-ui/core\";\nimport React from \"react\";\nimport * as Styles from \"./styles\";\nimport useTabSelect from \"./useTabSelect\";\nimport useTabList from \"./useTabList\";\n\nfunction BottomIconMenu({ hasSurvey }) {\n\tconst [tab, setTab] = useTabSelect();\n\tconst classes = Styles.styles();\n\tconst tabList = useTabList(\"small\", hasSurvey && window.location.pathname.startsWith('/rl'));\n\tconst tabClasses = Styles.tab();\n\tconst tabsClasses = Styles.bottomTabs();\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t }}\n\t\t\t\t>\n\t\t\t\t\t{tabList.map((item) => (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{item.icon}\n\t\t\t\t\t\t\t\t\t{item.title}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvalue={item.value}\n\t\t\t\t\t\t\ttitle={item.title}\n\t\t\t\t\t\t\tonClick={() => setTab(item.value)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nexport default BottomIconMenu;\n","import { useState } from \"react\";\n\nexport function useForceUpdate() {\n\tconst setValue = useState(0)[1]; // integer state\n\treturn () => setValue((value) => value + 1); // update the state to force render\n}\n","import { Container, Hidden, withWidth } from \"@material-ui/core\";\nimport UserManager from \"common/userManager\";\nimport React, { useEffect } from \"react\";\nimport NavMenu from \"./Layout/NavMenu\";\nimport BottomIconMenu from \"./Layout/BottomIconMenu\";\nimport { useForceUpdate } from \"common/helpers/componentHelper\";\nimport { connect } from \"common/connect\";\nimport StoreKeys from \"common/storeKeys\";\n\nconst propKeys = {\n\tcurrentSurvey: StoreKeys.SURVEY.CURRENT,\n};\n\nfunction LayoutC({ currentSurvey, showMenuTabs, width, children }) {\n\tconst forceUpdate = useForceUpdate();\n\tconst refresh = () => {\n\t\tforceUpdate();\n\t};\n\n\tuseEffect(() => {\n\t\tUserManager.onLogin(() => refresh());\n\t});\n\n\treturn (\n\t\t
\n\t\t\t{showMenuTabs && }\n\t\t\t\n\t\t\t\t{children}\n\t\t\t\n\t\t\t\n\t\t\t\t{showMenuTabs && }\n\t\t\t\n\t\t
\n\t);\n}\n\nconst LayoutWidthC = withWidth()(LayoutC); \n\nexport default function Layout(props) {\n\treturn connect((), propKeys, props);\n};\n","import * as React from \"react\";\nimport { changeUrl } from \"common/history\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { Box, Grid } from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\n\nconst useStyles = makeStyles((theme) => ({\n\tnavCard: {\n\t\tborder: `solid 1px ${theme.palette.primary.main}`,\n\t\tboxShadow: `0px 0px 4px 4px ${Colors.panelDark}`,\n\t\tbackgroundColor: Colors.panel,\n\t\ttextAlign: \"center\",\n\t\tpadding: 16,\n\t\t\"& hr\": {\n\t\t\tborder: `1px double ${Colors.error}`,\n\t\t},\n\t\t\"& button\": {\n\t\t\tmarginTop: 16,\n\t\t\twidth: \"80%\",\n\t\t\tborderRadius: 0,\n\t\t},\n\t},\n}));\n\nexport default function NavCard(props) {\n\tconst classNames = useStyles();\n\tconst click = () => {\n\t\tchangeUrl(props.path);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t{props.description}\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t);\n}\n","import { Box, Container, Grid } from \"@material-ui/core\";\nimport NavCard from \"common/components/NavCard/NavCard\";\nimport { connect } from \"common/connect\";\nimport StoreKeys from \"common/storeKeys\";\nimport * as React from \"react\";\nimport { Helmet } from \"react-helmet\";\n\nconst propKeys = {\n\troles: StoreKeys.ROLES,\n};\n\nclass AdminScreenC extends React.Component {\n\trender() {\n\t\tconst cards = this.getCards();\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tPickstop - Admin\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{cards.map((card) => {\n\t\t\t\t\t\t\treturn <>{card};\n\t\t\t\t\t\t})}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\n\tgetCards() {\n\t\tconst isAdmin = this.props.roles?.includes(\"Admin\");\n\t\tconst isEventCreator = this.props.roles?.includes(\"EventCreator\");\n\t\tconst isSurveyCreator = this.props.roles?.includes(\"SurveyCreator\");\n\n\t\tlet key = 0;\n\t\tconst cards = [];\n\t\tif (!this.props.roles) {\n\t\t\treturn cards;\n\t\t}\n\n\t\tif (isAdmin) {\n\t\t\tcards.push(\n\t\t\t\t\n\t\t\t);\n\t\t}\n\n\t\tif (isAdmin || isEventCreator) {\n\t\t\tcards.push(\n\t\t\t\t\n\t\t\t);\n\t\t\t// cards.push(\n\t\t\t// \t\n\t\t\t// );\n\t\t}\n\n\t\tif (isAdmin) {\n\t\t\tcards.push(\n\t\t\t\t\n\t\t\t);\n\t\t}\n\n\t\tif (isAdmin) {\n\t\t\tcards.push(\n\t\t\t\t\n\t\t\t);\n\t\t}\n\n\t\tif (isAdmin) {\n\t\t\tcards.push(\n\t\t\t\t\n\t\t\t);\n\t\t}\n\n\t\tif (isAdmin || isEventCreator) {\n\t\t\tcards.push(\n\t\t\t\t\n\t\t\t);\n\t\t\t// cards.push(\n\t\t\t// \t\n\t\t\t// );\n\t\t}\n\n\t\tif (isAdmin || isSurveyCreator) {\n\t\t\tcards.push(\n\t\t\t\t\n\t\t\t);\n\t\t}\n\n\t\t// if (isAdmin) {\n\t\t// \tcards.push(\n\t\t// \t\t\n\t\t// \t);\n\t\t// }\n\n\t\treturn cards;\n\t}\n}\n\nfunction AdminScreen(props) {\n\treturn connect(, propKeys, props);\n}\n\nexport default AdminScreen;\n","import { Container, Typography } from \"@material-ui/core\";\nimport React from \"react\";\nimport { Helmet } from \"react-helmet\";\n\nexport default function EventAnalytics(props) {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\tPickstop - Event Analytics\n\t\t\t\n\n\t\t\tComing Soon\n\t\t\n\t);\n}\n","import axiosWrapper from \"common/axiosWrapper\";\nimport { toMMDDYYYY } from \"common/helpers/dateHelper\";\n// eslint-disable-next-line no-unused-vars\nimport { AbiosTournament } from \"../common/types/Abios/AbiosTournament\";\n// eslint-disable-next-line no-unused-vars\nimport { EventCreateRequestDto } from \"../common/types/EventCreateRequestDto\";\n\nconst baseUrl = \"/api/eventBuilder\";\n\n/** The Event service which calls the API endpoints for the Event Builder Controller */\nexport default class EventBuilderService {\n\t/**\n\t * Gets a list of upcoming events.\n\t * @returns {Promise>} the upcoming Abios Tournaments within 30 days from current time.\n\t */\n\tstatic async getUpcomingEvents(gameId, from, to) {\n\t\treturn await axiosWrapper.get(\n\t\t\t`${baseUrl}/upcoming?gameId=${gameId}&from=${toMMDDYYYY(\n\t\t\t\tfrom\n\t\t\t)}&to=${toMMDDYYYY(to)}`\n\t\t);\n\t}\n\n\t/**\n\t * Gets a list of previous events.\n\t * @returns {Promise>} the past Abios Tournaments within the last 30 days.\n\t */\n\tstatic async getRecentEvents() {\n\t\t// not currently called anywhere\n\t\treturn await axiosWrapper.get(`${baseUrl}/recent`);\n\t}\n\n\t/**\n\t * Create an event with the provided data.\n\t *\n\t * @param {EventCreateRequestDto} createRequest\n\t * @returns {Promise} an EventDto object.\n\t */\n\tstatic async createEvent(createRequest) {\n\t\treturn await axiosWrapper.post(`${baseUrl}/create`, createRequest);\n\t}\n}\n","export const RewardTypes = {\n\tMedal: 1,\n\tTrophy: 2,\n\tGlobe: 3,\n};\n","import axiosWrapper from \"common/axiosWrapper\";\nimport { EventFormat } from \"common/types/EventFormat\";\n\nconst baseUrl = \"/api/eventFormat\";\n\n/** The Event service which calls the API endpoints for the Event Controller */\nexport default class EventFormatService {\n\t/**\n\t * Gets all event formats.\n\t *\n\t * @returns {Promise>}\n\t */\n\tstatic async getAllFormats() {\n\t\treturn await axiosWrapper.get(`${baseUrl}`);\n\t}\n\n\t/**\n\t * Saves event format.\n\t *\n\t * @param {EventFormat} eventFormat\n\t * @returns {Promise}\n\t */\n\tstatic async saveFormat(eventFormat) {\n\t\treturn await axiosWrapper.post(`${baseUrl}`, eventFormat);\n\t}\n\n\t/**\n\t * Tries to delete the format by id, if in use it will fail.\n\t *\n\t * @param {number} eventFormatId\n\t * @returns\n\t */\n\tstatic async deleteFormat(eventFormatId) {\n\t\treturn await axiosWrapper.delete(`${baseUrl}/${eventFormatId}`);\n\t}\n}\n","import {\n\tContainer,\n\tFormControlLabel,\n\tPaper,\n\tRadio,\n\tRadioGroup,\n\tTypography,\n\tSelect,\n\tInputLabel,\n\tFormControl,\n\tMenuItem,\n\tmakeStyles,\n\tTable,\n\tTableRow,\n\tTableBody,\n\tTableCell,\n\tButton,\n\tTextField,\n} from \"@material-ui/core\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport { connect } from \"common/connect\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport * as React from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { toast } from \"react-toastify\";\nimport EventBuilderService from \"services/EventBuilderService\";\nimport LookupService from \"services/LookupService\";\nimport { RewardTypes } from \"common/constants/RewardTypes\";\nimport \"./EventCreator.scss\";\nimport { Colors } from \"styles/Colors\";\n// eslint-disable-next-line no-unused-vars\nimport { EventCreateRequestDto } from \"common/types/EventCreateRequestDto\";\n// eslint-disable-next-line no-unused-vars\nimport { AbiosTournament } from \"common/types/Abios/AbiosTournament\";\n// eslint-disable-next-line no-unused-vars\nimport { Lookup } from \"common/types/Lookup\";\nimport EventFormatService from \"services/EventFormatService\";\nimport { toMMDDYYYY, toMonthNameDayAndYear } from \"common/helpers/dateHelper\";\nimport { formControlClasses } from \"@mui/material\";\n\nconst propKeys = {\n\tcreateData: StoreKeys.EVENTCREATOR.CREATE_DATA,\n\teventData: StoreKeys.EVENTCREATOR.EVENT_DATA,\n\teventFormats: StoreKeys.EVENTCREATOR.EVENT_FORMATS,\n\tselectedEvent: StoreKeys.EVENTCREATOR.SELECTED_EVENT,\n\tupcomingEvents: StoreKeys.EVENTCREATOR.UPCOMING_EVENTS,\n\tgames: StoreKeys.EVENTCREATOR.GAMES,\n};\n\nconst useStyles = makeStyles((theme) => ({\n\tformControl: {\n\t\tmargin: theme.spacing(),\n\t\tminWidth: 120,\n\t\tmarginBottom: theme.spacing(2),\n\t},\n\tfullWidth: {\n\t\twidth: \"100%\",\n\t},\n\tselectInGrid: {\n\t\tminWidth: 200,\n\t},\n\tpadding: {\n\t\tpadding: theme.spacing(2),\n\t},\n\tpaper: {\n\t\tcolor: Colors.primary,\n\t\tbackgroundColor: Colors.panel,\n\t},\n\tmarginBottom: {\n\t\tmarginBottom: theme.spacing(2),\n\t},\n}));\n\n/**\n * @typedef {Object} CreateData\n * @property {string} nameOverride\n * @property {string} liquipediaUrl\n * @property {number} rewardTypeId\n * @property {string} imageUrl\n * @property {number} gameId\n * @property {number} stagesToSkip\n * @property {number} eventFormatId\n */\n\n/**\n * @typedef {Object} EventCreatorProps\n * @property {CreateData} createData\n * @property {any} eventData\n * @property {Array} eventFormats\n * @property {AbiosTournament} selectedEvent\n * @property {Array} upcomingEvents\n * @property {Array} games\n */\n\nfunction EventCreatorC(props) {\n\t/** @type {EventCreatorProps} */\n\tconst {\n\t\tcreateData,\n\t\teventData,\n\t\teventFormats,\n\t\tselectedEvent,\n\t\tupcomingEvents,\n\t\tgames,\n\t} = props;\n\tconst now = new Date();\n\tconst later = new Date();\n\tlater.setDate(now.getDate() + 30);\n\tconst classes = useStyles();\n\tconst [fromDate, setFromDate] = React.useState(now);\n\tconst [toDate, setToDate] = React.useState(later);\n\n\tReact.useEffect(() => {\n\t\tStore.cacheChanges();\n\t\tStore.set(StoreKeys.EVENTCREATOR.CREATE_DATA, {});\n\t\tStore.set(StoreKeys.EVENTCREATOR.EVENT_DATA, null);\n\t\tStore.set(StoreKeys.EVENTCREATOR.SELECTED_EVENT, null);\n\n\t\tSetLoading(true, \"Loading Lookups\");\n\n\t\tPromise.all([\n\t\t\tLookupService.getGames().then((games) => {\n\t\t\t\tStore.set(StoreKeys.EVENTCREATOR.GAMES, games);\n\t\t\t}),\n\t\t\tEventFormatService.getAllFormats().then((formats) => {\n\t\t\t\tStore.set(StoreKeys.EVENTCREATOR.EVENT_FORMATS, formats);\n\t\t\t}),\n\t\t]).then(() => {\n\t\t\tStore.applyChanges();\n\t\t\tSetLoading(false);\n\t\t});\n\t}, []);\n\n\tconst onGameSelect = (event) => {\n\t\tconst value = event.target.value;\n\t\tconst gameId = Number(value);\n\t\tcreateData.gameId = gameId;\n\t\tStore.set(StoreKeys.EVENTCREATOR.CREATE_DATA, createData);\n\t};\n\n\tconst onFromChange = (event) => {\n\t\tconst value = new Date(event.target.value);\n\t\tsetFromDate(value);\n\t};\n\n\tconst onToChange = (event) => {\n\t\tconst value = new Date(event.target.value);\n\t\tsetToDate(value);\n\t};\n\n\tconst onSkipStageChange = (event) => {\n\t\tconst value = event.target.value;\n\t\tconst stagesToSkip = Number(value);\n\t\tcreateData.stagesToSkip = stagesToSkip;\n\t\tStore.set(StoreKeys.EVENTCREATOR.CREATE_DATA, createData);\n\t};\n\n\tconst onSearch = () => {\n\t\tif (!createData?.gameId) {\n\t\t\treturn;\n\t\t}\n\n\t\tSetLoading(true, \"Loading Upcoming Events\");\n\t\tEventBuilderService.getUpcomingEvents(\n\t\t\tcreateData.gameId,\n\t\t\tfromDate,\n\t\t\ttoDate\n\t\t).then((events) => {\n\t\t\tevents.forEach((e) => {\n\t\t\t\te.start = e.start.replace(\"Z\", \"\");\n\t\t\t});\n\t\t\tStore.set(StoreKeys.EVENTCREATOR.UPCOMING_EVENTS, events);\n\t\t\tSetLoading(false);\n\t\t});\n\t};\n\n\tconst onEventFormatSelect = (event) => {\n\t\tconst value = event.target.value;\n\t\tcreateData.eventFormatId = Number(value);\n\t\tStore.set(StoreKeys.EVENTCREATOR.CREATE_DATA, createData);\n\t};\n\n\tconst eventNameChange = (event) => {\n\t\tconst value = event.target.value;\n\t\tcreateData.nameOverride = value;\n\t\tStore.set(StoreKeys.EVENTCREATOR.CREATE_DATA, createData);\n\t};\n\n\tconst liquipediaUrlChange = (event) => {\n\t\tconst value = event.target.value;\n\t\tcreateData.liquipediaUrl = value;\n\t\tStore.set(StoreKeys.EVENTCREATOR.CREATE_DATA, createData);\n\t};\n\n\tconst rewardTypeChange = (event) => {\n\t\tconst value = event.target.value;\n\t\tcreateData.rewardTypeId = value;\n\t\tStore.set(StoreKeys.EVENTCREATOR.CREATE_DATA, createData);\n\t};\n\n\tconst imageUrlChange = (event) => {\n\t\tconst value = event.target.value;\n\t\tcreateData.imageUrl = value;\n\t\tStore.set(StoreKeys.EVENTCREATOR.CREATE_DATA, createData);\n\t};\n\n\tconst createEventPressed = async () => {\n\t\tSetLoading(true, \"Creating Event\");\n\t\t/** @type {EventCreateRequestDto} */\n\t\tconst createRequest = {\n\t\t\tabiosTournamentId: selectedEvent.id,\n\t\t\tliquipediaUrl: createData.liquipediaUrl,\n\t\t\timageUrl: createData.imageUrl,\n\t\t\trewardType: createData.rewardTypeId,\n\t\t\tgameId: createData.gameId,\n\t\t\tnameOverride: createData.nameOverride,\n\t\t\teventFormatId: createData.eventFormatId,\n\t\t\tstagesToSkip: createData.stagesToSkip,\n\t\t};\n\t\ttry {\n\t\t\tconst data = await EventBuilderService.createEvent(createRequest);\n\t\t\tStore.set(StoreKeys.EVENTCREATOR.EVENT_DATA, data);\n\t\t\tSetLoading(false);\n\t\t\ttoast(\"Event Created!\", { type: \"success\" });\n\t\t} catch (error) {\n\t\t\tconsole.log(error);\n\t\t\tSetLoading(false);\n\t\t\ttoast(\"Contact Lor!\", { type: \"error\" });\n\t\t}\n\t};\n\n\t/**\n\t *\n\t * @param {number} tournamentId\n\t * @param {Array} upcomingEvents\n\t */\n\tconst selectEvent = (tournamentId, upcomingEvents) => {\n\t\tconst selectedEvent = upcomingEvents.find(\n\t\t\t(s) => s.id === Number(tournamentId)\n\t\t);\n\t\tcreateData.rewardTypeId = getRewardType(selectedEvent.title);\n\t\tcreateData.liquipediaUrl = selectedEvent.links.wiki;\n\t\tcreateData.nameOverride = selectedEvent.title;\n\t\tcreateData.imageUrl = selectedEvent.images.find(\n\t\t\t(i) => i.type === \"small\"\n\t\t)?.url;\n\n\t\tconst changes = {};\n\t\tchanges[StoreKeys.EVENTCREATOR.SELECTED_EVENT] = selectedEvent;\n\t\tchanges[StoreKeys.EVENTCREATOR.CREATE_DATA] = createData;\n\t\tStore.setMany(changes);\n\t};\n\n\tconst renderSearch = () => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\tGame\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{games?.map((game) => (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{game.name}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\n\t\t);\n\t};\n\n\tconst onEventChange = (event) => {\n\t\tconst seriesId = event.target.value;\n\t\tselectEvent(seriesId, upcomingEvents);\n\t};\n\n\tconst renderSeriesSelection = () => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t\n\t\t\t\t\tUpcoming Tournaments\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{upcomingEvents.map((e, i) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t\t{e.title}(\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\tlink\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t\n\t\t);\n\t};\n\n\tconst getRewardType = (name) => {\n\t\tname = name.toLowerCase();\n\t\tif (name.includes(\"regional\")) return RewardTypes.Medal;\n\t\telse if (name.includes(\"major\")) return RewardTypes.Trophy;\n\t\telse if (name.includes(\"championship\")) return RewardTypes.Globe;\n\t};\n\n\tconst renderCreateButton = () => {\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t};\n\n\tconst renderTeams = () => {\n\t\tconst teams = eventData.teams;\n\n\t\treturn teams.map((team, i) => {\n\t\t\treturn (\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
{`${team.name} [${team.abbreviation}]`}
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{team.members.map((teamMember, index) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{teamMember.username}{teamMember.realName}{teamMember.position}
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t);\n\t\t});\n\t};\n\n\tconst renderSelectedEvent = () => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t

{selectedEvent.title}

\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tName\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tLiquipedia Link\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tImage\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tImage Preview\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tEvent Format\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tEvent Format\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{eventFormats.map((eventFormat) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{eventFormat.name}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tReward Type\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tReward Type\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{Object.keys(RewardTypes).map((key) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{key}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tStart Time\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{toMonthNameDayAndYear(selectedEvent.start)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tEnd Time\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{toMonthNameDayAndYear(selectedEvent.end)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t# of Stages to Skip\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\n\t\t);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\tPickstop - Event Creator\n\t\t\t\n\t\t\t

Event Creator

\n\t\t\t{renderSearch()}\n\t\t\t\n\t\t\t{upcomingEvents?.length > 0 && renderSeriesSelection()}\n\t\t\t{selectedEvent && renderSelectedEvent()}\n\t\t\t{selectedEvent &&\n\t\t\t\tcreateData?.gameId &&\n\t\t\t\tcreateData?.eventFormatId &&\n\t\t\t\tcreateData?.rewardTypeId &&\n\t\t\t\trenderCreateButton()}\n\n\t\t\t{eventData &&
{renderTeams()}
}\n\t\t
\n\t);\n}\n\nfunction EventCreator(props) {\n\treturn connect(, propKeys, props);\n}\n\nexport default EventCreator;\n","export const EventStageTypes = {\n\tGroup: 1,\n\tSwiss: 2,\n\tPlayoffs: 3,\n};\n","// eslint-disable-next-line no-unused-vars\nimport { EventStageTypes } from \"common/constants/EventStageTypes\";\nimport { EventFormat } from \"../types/EventFormat\";\nimport { Match } from \"bracket-system/types\";\n\nexport default class EventFormatHelper {\n\t/**\n\t * Gets the format builder for the provided format.\n\t *\n\t * @param {EventFormat} eventFormat\n\t * @returns {EventFormatBuilder} The builder object.\n\t */\n\tstatic getEventFormatBuilder(eventFormat) {\n\t\treturn new EventFormatBuilder(eventFormat);\n\t}\n}\n\nexport class EventFormatBuilder {\n\t/** @type {EventFormat} */\n\teventFormat;\n\n\t/** @type {EventFormatData} */\n\tdata;\n\n\t/**\n\t *\n\t * @param {EventFormat} eventFormat\n\t */\n\tconstructor(eventFormat) {\n\t\tthis.eventFormat = eventFormat ?? {};\n\n\t\t// Convert from strings to dates, and parse json to object.\n\t\tthis.eventFormat.createdDate = this.eventFormat.created\n\t\t\t? new Date(this.eventFormat.created)\n\t\t\t: null;\n\t\tthis.eventFormat.modifiedDate = this.eventFormat.modified\n\t\t\t? new Date(this.eventFormat.modified)\n\t\t\t: null;\n\t\tthis.data = this.eventFormat?.json\n\t\t\t? JSON.parse(this.eventFormat.json)\n\t\t\t: {\n\t\t\t\t\tstages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"Group Stage\",\n\t\t\t\t\t\t\ttype: EventStageTypes.Group,\n\t\t\t\t\t\t\tgroupStageDetails: new EventFormatGroupStageDetails(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"Playoffs\",\n\t\t\t\t\t\t\ttype: EventStageTypes.Playoffs,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t };\n\t}\n}\n\nexport class EventFormatData {\n\t/** @type {EventFormatStage[]} */\n\tstages;\n\n\t/** @type {EventFormatScoringBreakdown} */\n\tscoringBreakdown;\n}\n\nexport class EventFormatScoringBreakdown {\n\t/** @type {EventFormatScoringBreakdownGroup} */\n\tgroups = [];\n}\n\nexport class EventFormatScoringBreakdownGroup {\n\t/** @type {string} */\n\tname;\n\n\t/** @type {EventFormatScoringBreakdownRecord[]} */\n\trecords = [];\n}\n\nexport class EventFormatScoringBreakdownRecord {\n\t/** @type {string} */\n\tname;\n\n\t/** @type {number} */\n\tpointsPer;\n\n\t/** @type {string} */\n\tdbColumnName;\n}\n\nexport class EventFormatStage {\n\t/**\n\t * @type {string}\n\t */\n\tname;\n\n\t/**\n\t * What type of stage this is.\n\t * Playoffs, Swiss, Group.\n\t * @type {number}\n\t */\n\ttype = EventStageTypes.Playoffs;\n\n\t/**\n\t * What are the group stage details.\n\t * @type {EventFormatGroupStageDetails}\n\t */\n\tgroupStageDetails;\n\n\t/**\n\t * What are the swiss stage details.\n\t * @type {EventFormatSwissStageDetails}\n\t */\n\tswissStageDetails;\n\n\t/**\n\t * What are the playoff details.\n\t * @type {EventFormatPlayoffsDetails}\n\t */\n\tplayoffDetails;\n\n\t/**\n\t * # of teams to open picks\n\t * @type {number}\n\t */\n\tteamsToOpenPicks;\n\n\t/**\n\t * What is the bracket data?\n\t * Applies in playoffs only.\n\t * @type {EventFormatBracket}\n\t */\n\tbracket;\n}\n\nexport class EventFormatGroupStageDetails {\n\t/**\n\t * If true, then we are using brackets for group stage.\n\t * If false, then we are using round robin for group stage.\n\t * @type {boolean}\n\t */\n\thasGroupBrackets = false;\n\n\t/** @type {boolean} */\n\tuseSeriesScore = false;\n\n\t/** @type {number} */\n\tgroupCount = 4;\n\n\t/** @type {number} */\n\tadvancingCount = 3;\n\n\t/** @type {number} */\n\ttotalAdvancing = 3;\n\n\t/** @type {number} */\n\tpointsPerAdvancing = 2;\n\n\t/** @type {boolean} */\n\tscoreFirstPlace = true;\n\n\t/** @type {number} */\n\tpointsPerFirstPlace = 1;\n\n\t/** @type {boolean} */\n\tscoreSecondPlace = true;\n\n\t/** @type {number} */\n\tpointsPerSecondPlace = 1;\n}\n\nexport class EventFormatSwissStageDetails {\n\t/** @type {number} */\n\tadvancingCount = 8;\n\n\t/** @type {number} */\n\tpointsPerAdvancing = 3;\n\n\t/** @type {number} */\n\tcleanSweepWinnerCount = 2;\n\n\t/** @type {number} */\n\tcleanSweepLoserCount = 2;\n\n\t/** @type {number} */\n\tpointsPerCorrectWinner = 1;\n\n\t/** @type {number} */\n\tpointsPerCorrectLoser = 1;\n}\n\nexport class EventFormatPlayoffsDetails {\n\t/** @type {boolean} */\n\tuseSeriesScore = true;\n\n\t/** @type {boolean} */\n\thasBracketReset = false;\n\n\t/** @type {number} */\n\tpointsForCorrectBracketReset = 1;\n}\n\n/** A bracket instance within a stage. */\nexport class EventFormatBracket {\n\t/** @type {EventFormatBracketView[]} */\n\tviews = [];\n\n\t/** @type {EventFormatBracketPart[]} */\n\tparts = [];\n\n\t/** @type {Array<{upper: Match[], lower: Match[]}>} */\n\tmatches;\n\n\t/** @type {EventFormatBracketScoringGroup[]} */\n\tscoringGroups = [];\n}\n\nexport class EventFormatBracketView {\n\t/** @type {string} */\n\tname;\n\n\t/** @type {EventFormatBracketColumnMatchTarget[]} */\n\tmatches;\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @param {boolean} showSeriesScore\n\t * @param {EventFormatBracketColumnMatchTarget[]} matches\n\t */\n\tconstructor(name, showSeriesScore, matches) {\n\t\tthis.name = name;\n\t\tthis.showSeriesScore = showSeriesScore;\n\t\tthis.matches = matches;\n\t}\n}\n\n/** A portion of the bracket. */\nexport class EventFormatBracketPart {\n\t/** @type {string} */\n\tidentifier;\n\t/** @type {number} */\n\tcolumnCount;\n\t/** @type {EventFormatBracketColumn[]} */\n\tcolumns;\n}\n\nexport class EventFormatBracketColumn {\n\t/** @type {string} */\n\tname;\n\t/** @type {number} */\n\tindex;\n\t/** @type {number} */\n\tmatchCount;\n\t/** @type {EventFormatBracketColumnMatch[]} */\n\tmatches;\n\t/** @type {number} */\n\tbestOf = 5;\n\t/** @type {boolean} */\n\tlockPicks;\n\t/** @type {boolean} */\n\tbothTeamsAdvance;\n}\n\nexport class EventFormatBracketColumnMatch {\n\t/**\n\t * Set the bracket part this match is in.\n\t * @type {string}\n\t */\n\tpart;\n\n\t/**\n\t * Set the column this match is in.\n\t * @type {number}\n\t */\n\tcol;\n\n\t/**\n\t * Set the index within this column.\n\t * @type {number}\n\t */\n\tcolIndex;\n\n\t/**\n\t * Where the loser will go (if applicable)\n\t * @type {EventFormatBracketColumnMatchTarget}\n\t */\n\tloserPath;\n\n\t/**\n\t * @type {string}\n\t */\n\tbracketMatchId;\n}\n\nexport class EventFormatBracketColumnTarget {\n\t/**\n\t * Set the bracket part this match is in.\n\t * @type {string}\n\t */\n\tpart;\n\n\t/**\n\t * The bracket column we are in.\n\t * @type {number}\n\t */\n\tcol;\n}\n\nexport class EventFormatBracketColumnMatchTarget extends EventFormatBracketColumnTarget {\n\t/**\n\t * The index within the column we are at.\n\t * @type {number}\n\t */\n\tcolIndex;\n\n\t/**\n\t * The slot the team drops into.\n\t * @type {boolean | undefined | null}\n\t */\n\tisTop = true;\n}\n\nexport class EventFormatBracketScoringGroup {\n\t/**\n\t * Set the name of this scoring group.\n\t * @type {string}\n\t */\n\tname;\n\n\t/**\n\t * Set the columns included in this scoring group\n\t * @type {EventFormatBracketColumnTarget[]} */\n\tcolumns = [];\n\n\t/** @type {boolean} */\n\tscoreParticipants = true;\n\n\t/** @type {boolean} */\n\tscoreWinnersOnly = false;\n\n\t/** @type {number} */\n\tpointsPerCorrectParticipant = 1;\n\n\t/** @type {boolean} */\n\tscorePlacement = true;\n\n\t/** @type {number} */\n\tpointsPerCorrectPlacement = 1;\n\n\tconstructor(name) {\n\t\tthis.name = name;\n\t}\n}\n\n/**\n *\n * @param {EventFormatBracket} bracket\n * @param {EventFormatBracketColumnMatchTarget[]} viewTargets\n * @returns {{upper: string[], lower: string[]}}\n */\nexport function getHeaderNamesFromBracket(bracket, viewTargets) {\n\tconst headerNames = {\n\t\tupper: [],\n\t\tlower: [],\n\t};\n\n\tif (!bracket) {\n\t\treturn headerNames;\n\t}\n\n\tfor (const part of bracket.parts) {\n\t\tif (part.identifier === \"UB\") {\n\t\t\theaderNames.upper = part.columns\n\t\t\t\t.filter((c) =>\n\t\t\t\t\tviewTargets\n\t\t\t\t\t\t? viewTargets.some((t) => t.part == \"UB\" && t.col == c.index)\n\t\t\t\t\t\t: true\n\t\t\t\t)\n\t\t\t\t.map((c) => c.name);\n\t\t} else if (part.identifier === \"LB\") {\n\t\t\theaderNames.lower = part.columns\n\t\t\t\t.filter((c) =>\n\t\t\t\t\tviewTargets\n\t\t\t\t\t\t? viewTargets.some((t) => t.part == \"LB\" && t.col == c.index)\n\t\t\t\t\t\t: true\n\t\t\t\t)\n\t\t\t\t.map((c) => c.name);\n\t\t} else if (part.identifier === \"GF\") {\n\t\t\theaderNames.upper = headerNames.upper.concat(\n\t\t\t\tpart.columns\n\t\t\t\t\t.filter((c) =>\n\t\t\t\t\t\tviewTargets ? viewTargets.some((t) => t.part == \"GF\") : true\n\t\t\t\t\t)\n\t\t\t\t\t.map((c) => c.name)\n\t\t\t);\n\t\t}\n\t}\n\n\treturn headerNames;\n}\n\n/**\n *\n * @param {EventFormatBracket} bracket\n * @param {EventFormatBracketColumnMatchTarget[]} viewTargets\n * @returns {{upper: number[], lower: number[]}}\n */\nexport function getLockedColumns(bracket, viewTargets) {\n\tconst lockedColumns = {\n\t\tupper: [],\n\t\tlower: [],\n\t};\n\n\tif (!bracket) {\n\t\treturn lockedColumns;\n\t}\n\n\tfor (const part of bracket.parts) {\n\t\tif (part.identifier === \"UB\") {\n\t\t\tlockedColumns.upper = part.columns\n\t\t\t\t.filter((c) => c.lockPicks)\n\t\t\t\t.map((c) => c.index);\n\t\t} else if (part.identifier === \"LB\") {\n\t\t\tlockedColumns.lower = part.columns\n\t\t\t\t.filter((c) => c.lockPicks)\n\t\t\t\t.map((c) => c.index);\n\t\t} else if (part.identifier === \"GF\") {\n\t\t\tlockedColumns.upper = lockedColumns.upper.concat(\n\t\t\t\tpart.columns\n\t\t\t\t\t.filter((c) =>\n\t\t\t\t\t\tviewTargets ? viewTargets.some((t) => t.part == \"GF\") : true\n\t\t\t\t\t)\n\t\t\t\t\t.map((c) => c.name)\n\t\t\t);\n\t\t}\n\t}\n\n\treturn lockedColumns;\n}\n\n/**\n *\n * @param {EventFormatStage} currentStage\n */\nexport function stageUsesBracket(currentStage) {\n\treturn (\n\t\t(currentStage.type === EventStageTypes.Group &&\n\t\t\tcurrentStage.groupStageDetails.hasGroupBrackets) ||\n\t\tcurrentStage.type === EventStageTypes.Playoffs\n\t);\n}\n\n/**\n *\n * @param {EventFormatBuilder} currentFormat\n */\nexport function buildScoringDetails(currentFormat) {\n\tconst scoringBreakdown = new EventFormatScoringBreakdown();\n\tfor (const stage of currentFormat?.data?.stages) {\n\t\tconst scoringGroup = buildScoringGroup(stage);\n\t\tscoringBreakdown.groups.push(scoringGroup);\n\t}\n\tcurrentFormat.data.scoringBreakdown = scoringBreakdown;\n}\n\n/**\n *\n * @param {EventFormatStage} stage\n * @returns {EventFormatScoringBreakdownGroup}\n */\nfunction buildScoringGroup(stage) {\n\tconst scoringGroup = new EventFormatScoringBreakdownGroup();\n\n\tswitch (stage.type) {\n\t\tcase EventStageTypes.Group:\n\t\t\tbuildGroupStageScoringGroup(stage, scoringGroup);\n\t\t\tbreak;\n\t\tcase EventStageTypes.Swiss:\n\t\t\tbuildSwissStageScoringGroup(stage, scoringGroup);\n\t\t\tbreak;\n\t\tcase EventStageTypes.Playoffs:\n\t\t\tbuildPlayoffsScoringGroup(stage, scoringGroup);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\treturn scoringGroup;\n}\n\n/**\n *\n * @param {EventFormatStage} stage\n */\nfunction buildGroupStageScoringGroup(stage, scoringGroup) {\n\tif (stage.groupStageDetails) {\n\t\tif (stage?.groupStageDetails.hasGroupBrackets) {\n\t\t\treturn buildPlayoffsScoringGroup(stage, scoringGroup);\n\t\t}\n\n\t\tscoringGroup.name = stage.name;\n\t\t// Advancing\n\t\tconst advancingToPlayoffs = new EventFormatScoringBreakdownRecord();\n\t\tadvancingToPlayoffs.name = \"Advancing to Next Stage\";\n\t\tadvancingToPlayoffs.pointsPer = stage.groupStageDetails.pointsPerAdvancing;\n\t\tscoringGroup.records.push(advancingToPlayoffs);\n\n\t\tif (stage.groupStageDetails.scoreFirstPlace) {\n\t\t\tconst firstPlace = new EventFormatScoringBreakdownRecord();\n\t\t\tfirstPlace.name = \"1st Place Bonus\";\n\t\t\tfirstPlace.pointsPer = stage.groupStageDetails.pointsPerFirstPlace;\n\t\t\tscoringGroup.records.push(firstPlace);\n\n\t\t\tif (stage.groupStageDetails.scoreSecondPlace) {\n\t\t\t\tconst secondPlace = new EventFormatScoringBreakdownRecord();\n\t\t\t\tsecondPlace.name = \"2nd Place Bonus\";\n\t\t\t\tsecondPlace.pointsPer = stage.groupStageDetails.pointsPerSecondPlace;\n\t\t\t\tscoringGroup.records.push(secondPlace);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n *\n * @param {EventFormatStage} stage\n */\nfunction buildSwissStageScoringGroup(stage, scoringGroup) {\n\tif (stage.swissStageDetails) {\n\t\tscoringGroup.name = stage.name;\n\n\t\tconst advancingToPlayoffs = new EventFormatScoringBreakdownRecord();\n\t\tadvancingToPlayoffs.name = \"Advancing to Next Stage\";\n\t\tadvancingToPlayoffs.pointsPer = stage.swissStageDetails.pointsPerAdvancing;\n\t\tscoringGroup.records.push(advancingToPlayoffs);\n\n\t\tif (stage.swissStageDetails.pointsPerCorrectWinner > 0) {\n\t\t\tconst cleanSweepWinner = new EventFormatScoringBreakdownRecord();\n\t\t\tcleanSweepWinner.name = \"Clean Sweep Bonus (3-0)\";\n\t\t\tcleanSweepWinner.pointsPer =\n\t\t\t\tstage.swissStageDetails.pointsPerCorrectWinner;\n\t\t\tscoringGroup.records.push(cleanSweepWinner);\n\t\t}\n\n\t\tif (stage.swissStageDetails.pointsPerCorrectLoser > 0) {\n\t\t\tconst cleanSweepLoser = new EventFormatScoringBreakdownRecord();\n\t\t\tcleanSweepLoser.name = \"Clean Sweep Bonus (0-3)\";\n\t\t\tcleanSweepLoser.pointsPer = stage.swissStageDetails.pointsPerCorrectLoser;\n\t\t\tscoringGroup.records.push(cleanSweepLoser);\n\t\t}\n\t}\n}\n\n/**\n *\n * @param {EventFormatStage} stage\n */\nfunction buildPlayoffsScoringGroup(stage, scoringGroup) {\n\tscoringGroup.name = stage.name;\n\tif (!stage?.bracket?.scoringGroups) {\n\t\treturn;\n\t}\n\n\tfor (const bracketGroup of stage?.bracket?.scoringGroups) {\n\t\tif (bracketGroup.scoreParticipants) {\n\t\t\tlet breakdownRecord = new EventFormatScoringBreakdownRecord();\n\t\t\tbreakdownRecord.name = bracketGroup.name;\n\t\t\tbreakdownRecord.pointsPer = bracketGroup.pointsPerCorrectParticipant;\n\t\t\tscoringGroup.records.push(breakdownRecord);\n\t\t}\n\t}\n\n\tconst hasPlacement = stage.bracket?.scoringGroups?.some(\n\t\t(g) => g.scorePlacement\n\t);\n\n\tif (hasPlacement) {\n\t\tlet placementBonus = new EventFormatScoringBreakdownRecord();\n\t\tplacementBonus.name = \"Placement Bonus\";\n\t\tplacementBonus.pointsPer = 1;\n\t\tscoringGroup.records.push(placementBonus);\n\t}\n\n\tconst hasSeries =\n\t\tstage.groupStageDetails?.useSeriesScore ||\n\t\tstage.playoffDetails?.useSeriesScore;\n\tif (hasSeries) {\n\t\tlet seriesBonus = new EventFormatScoringBreakdownRecord();\n\t\tseriesBonus.name = \"Series Score Bonus\";\n\t\tseriesBonus.pointsPer = 1;\n\t\tscoringGroup.records.push(seriesBonus);\n\t}\n\n\t// const hasBracketReset = stage.playoffDetails?.hasBracketReset;\n\t// if (hasBracketReset) {\n\t// \tlet seriesBonus = new EventFormatScoringBreakdownRecord();\n\t// \tseriesBonus.name = \"Bracket Reset Bonus\";\n\t// \tseriesBonus.pointsPer = 1;\n\t// \tscoringGroup.records.push(seriesBonus);\n\t// }\n}\n","export const sortAlphanumerically = (a, b) => {\n const collator = new Intl.Collator(undefined, {\n numeric: true,\n sensitivity: 'base',\n });\n\n return collator.compare(a, b);\n};\n","import { sortAlphanumerically } from \"bracket-system/utils/string\";\n\nexport const generatePreviousRound = (matchesColumn, listOfMatches) =>\n\tmatchesColumn.reduce((result, match) => {\n\t\treturn [\n\t\t\t...result,\n\t\t\t...listOfMatches\n\t\t\t\t.filter((m) => m.nextMatchId === match.id)\n\t\t\t\t.sort((a, b) => sortAlphanumerically(a.name, b.name)),\n\t\t];\n\t}, []);\n\nexport function getPreviousMatches(\n\tcolumnIndex: number,\n\tcolumns: any[],\n\tpreviousBottomPosition: number\n) {\n\tconst previousTopMatch =\n\t\tcolumnIndex !== 0 && columns[columnIndex - 1][previousBottomPosition - 1];\n\tconst previousBottomMatch =\n\t\tcolumnIndex !== 0 && columns[columnIndex - 1][previousBottomPosition];\n\n\treturn { previousTopMatch, previousBottomMatch };\n}\n\nexport function sortTeamsSeedOrder(previousBottomMatch: any): any {\n\treturn (partyA, partyB) => {\n\t\tconst partyAInBottomMatch = previousBottomMatch?.participants?.find(\n\t\t\t(p) => p.id === partyA.id\n\t\t);\n\n\t\tconst partyBInBottomMatch = previousBottomMatch?.participants?.find(\n\t\t\t(p) => p.id === partyB.id\n\t\t);\n\n\t\tif (partyAInBottomMatch) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (partyBInBottomMatch) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn 0;\n\t};\n}\n","export function calculateSVGDimensions(\n numOfRows,\n numOfColumns,\n rowHeight: any,\n columnWidth: any,\n canvasPadding: any,\n roundHeader: any,\n currentRound: string = ''\n) {\n const bracketHeight = numOfRows * rowHeight;\n const bracketWidth = numOfColumns * columnWidth;\n\n const gameHeight =\n bracketHeight +\n canvasPadding * 2 +\n (roundHeader.isShown ? roundHeader.height + roundHeader.marginBottom : 0);\n const gameWidth = bracketWidth + canvasPadding * 2;\n const startPosition = [\n currentRound\n ? -(parseInt(currentRound, 10) * columnWidth - canvasPadding * 2)\n : 0,\n 0,\n ];\n return { gameWidth, gameHeight, startPosition };\n}\n","import React, { createContext, useReducer } from \"react\";\n\nconst initialState = {\n\thoveredMatchId: null,\n\thoveredPartyId: null,\n\thoveredColumnIndex: null,\n\thoveredRowIndex: null,\n};\nconst store = createContext(initialState);\nconst { Provider } = store;\n\nconst MatchContextProvider = ({ children }) => {\n\tconst [state, dispatch] = useReducer((previousState, action) => {\n\t\tswitch (action.type) {\n\t\t\tcase \"SET_HOVERED_PARTYID\": {\n\t\t\t\tconst { partyId, columnIndex, rowIndex, matchId } =\n\t\t\t\t\taction.payload ?? {};\n\t\t\t\treturn {\n\t\t\t\t\t...previousState,\n\t\t\t\t\thoveredPartyId: partyId,\n\t\t\t\t\thoveredColumnIndex: columnIndex,\n\t\t\t\t\thoveredRowIndex: rowIndex,\n\t\t\t\t\thoveredMatchId: matchId,\n\t\t\t\t};\n\t\t\t}\n\t\t\tcase \"SET_MATCH_HIGHLIGHTS\": {\n\t\t\t\tconst { highlightedMatchIds } = action.payload ?? {};\n\t\t\t\treturn {\n\t\t\t\t\t...previousState,\n\t\t\t\t\thighlightedMatchIds: highlightedMatchIds,\n\t\t\t\t};\n\t\t\t}\n\t\t\tcase \"SET_OFFICIAL_PICKS\": {\n\t\t\t\tconst { officialMatches } = action.payload ?? {};\n\t\t\t\treturn {\n\t\t\t\t\t...previousState,\n\t\t\t\t\tofficialMatches: officialMatches,\n\t\t\t\t};\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tthrow new Error();\n\t\t}\n\t}, initialState);\n\n\treturn {children};\n};\n\nexport { store as matchContext, MatchContextProvider };\n","export const defaultStyle = {\n\twidth: 240,\n\tboxHeight: 70,\n\tcanvasPadding: 25,\n\tspaceBetweenColumns: 40,\n\tspaceBetweenRows: 12,\n\tconnectorColor: \"rgb(47, 54, 72)\",\n\tconnectorColorHighlight: \"#DDD\",\n\troundHeader: {\n\t\tisShown: true,\n\t\theight: 40,\n\t\tmarginBottom: 25,\n\t\tfontSize: 16,\n\t\tfontColor: \"white\",\n\t\tbackgroundColor: \"rgb(47, 54, 72)\",\n\t\tfontFamily: '\"Roboto\", \"Arial\", \"Helvetica\", \"sans-serif\"',\n\t},\n\troundSeparatorWidth: 24,\n\tlineInfo: {\n\t\tseparation: -13,\n\t\thomeVisitorSpread: 0.5,\n\t},\n\thorizontalOffset: 12,\n\twonBywalkOverText: \"WO\",\n\tlostByNoShowText: \"NS\",\n};\n\nexport const getCalculatedStyles = (style, hideSeriesScore) => {\n\tif (hideSeriesScore) {\n\t\tstyle.width = 190;\n\t}\n\tconst { boxHeight, width, spaceBetweenColumns, spaceBetweenRows } = style;\n\tconst columnWidth = width + spaceBetweenColumns;\n\tconst rowHeight = boxHeight + spaceBetweenRows;\n\treturn { ...style, rowHeight, columnWidth };\n};\n","import merge from \"deepmerge\";\nimport { Colors } from \"styles/Colors\";\nimport { Theme } from \"../types\";\n\nconst defaultTheme: Theme = {\n\tfontFamily: '\"Roboto\", \"Arial\", \"Helvetica\", \"sans-serif\"',\n\ttransitionTimingFunction: \"cubic-bezier(0, 0.92, 0.77, 0.99)\",\n\n\tdisabledColor: \"#5D6371\",\n\tmatchBackground: {\n\t\twonColor: Colors.primary,\n\t\tlostColor: Colors.panelLighterColor,\n\t},\n\tborder: {\n\t\tcolor: Colors.primary,\n\t\thighlightedColor: Colors.pickstop,\n\t},\n\ttextColor: {\n\t\thighlighted: Colors.pickstop,\n\t\twinner: Colors.panel,\n\t\tmain: Colors.primary,\n\t\tdark: Colors.primaryDark,\n\t\tdisabled: \"#5D6371\",\n\t},\n\tscore: {\n\t\ttext: {\n\t\t\twinner: Colors.primary,\n\t\t\thighlightedWonColor: Colors.green,\n\t\t\thighlightedLostColor: Colors.red,\n\t\t},\n\t\tbackground: {\n\t\t\twonColor: Colors.panel,\n\t\t\tlostColor: Colors.panel,\n\t\t},\n\t},\n\tcanvasBackground: Colors.panelLighterColor,\n};\n\nexport function createTheme(customTheme?: Theme | T): Theme {\n\treturn merge(defaultTheme, customTheme || {});\n}\n\nexport default defaultTheme;\n","export const MATCH_STATES = {\n PLAYED: 'PLAYED',\n NO_SHOW: 'NO_SHOW',\n WALK_OVER: 'WALK_OVER',\n NO_PARTY: 'NO_PARTY',\n DONE: 'DONE',\n SCORE_DONE: 'SCORE_DONE',\n};\n","import React, { useContext } from \"react\";\nimport { matchContext } from \"./match-context\";\nimport { MATCH_STATES } from \"./match-states\";\nimport { defaultStyle, getCalculatedStyles } from \"../settings\";\nimport { sortTeamsSeedOrder } from \"./match-functions\";\n\nfunction Match({\n\trowIndex,\n\tcolumnIndex,\n\tmatch,\n\tpreviousBottomMatch = null,\n\tteams,\n\ttopText,\n\tbottomText,\n\tstyle = defaultStyle,\n\tmatchComponent: MatchComponent,\n\tonMatchClick,\n\tonPartyClick,\n\thideSeriesScore,\n\tisQualifierColumn,\n\t...rest\n}) {\n\tconst {\n\t\tstate: { hoveredPartyId, highlightedMatchIds, officialMatches },\n\t\tdispatch,\n\t} = useContext(matchContext);\n\tconst computedStyles = getCalculatedStyles(style);\n\tconst { width = 300, boxHeight = 70, connectorColor } = computedStyles;\n\tconst sortedTeams = teams?.sort(sortTeamsSeedOrder(previousBottomMatch));\n\n\tconst topParty = sortedTeams?.[0] ? sortedTeams[0] : {};\n\tconst bottomParty = sortedTeams?.[1] ? sortedTeams[1] : {};\n\n\tconst topHovered =\n\t\t!Number.isNaN(hoveredPartyId) &&\n\t\ttopParty?.id !== undefined &&\n\t\thoveredPartyId === topParty.id;\n\tconst bottomHovered =\n\t\t!Number.isNaN(hoveredPartyId) &&\n\t\tbottomParty?.id !== undefined &&\n\t\thoveredPartyId === bottomParty.id;\n\tconst matchHighlighted = highlightedMatchIds?.some((id) => id === match.id);\n\n\tconst participantWalkedOver = (participant) =>\n\t\tmatch.state === MATCH_STATES.WALK_OVER &&\n\t\tteams.filter((team) => !!team.id).length < 2 &&\n\t\tparticipant.id;\n\n\t// Lower placement is better\n\tconst topWon =\n\t\ttopParty.status === MATCH_STATES.WALK_OVER ||\n\t\tparticipantWalkedOver(topParty) ||\n\t\ttopParty.isWinner;\n\tconst bottomWon =\n\t\tbottomParty.status === MATCH_STATES.WALK_OVER ||\n\t\tparticipantWalkedOver(bottomParty) ||\n\t\tbottomParty.isWinner;\n\n\tconst matchState = MATCH_STATES[match.state];\n\n\tconst teamNameFallback =\n\t\t{\n\t\t\t[MATCH_STATES.WALK_OVER]: \"\",\n\t\t\t[MATCH_STATES.NO_SHOW]: \"\",\n\t\t\t[MATCH_STATES.DONE]: \"\",\n\t\t\t[MATCH_STATES.SCORE_DONE]: \"\",\n\t\t\t[MATCH_STATES.NO_PARTY]: \"\",\n\t\t}[matchState] ?? \"TBD\";\n\n\tconst resultFallback = (participant) => {\n\t\tif (participant.status) {\n\t\t\treturn (\n\t\t\t\t{\n\t\t\t\t\tWALKOVER: computedStyles.wonBywalkOverText,\n\t\t\t\t\t[MATCH_STATES.WALK_OVER]: computedStyles.wonBywalkOverText,\n\t\t\t\t\t[MATCH_STATES.NO_SHOW]: computedStyles.lostByNoShowText,\n\t\t\t\t\t[MATCH_STATES.NO_PARTY]: \"\",\n\t\t\t\t}[participant.status] ?? \"\"\n\t\t\t);\n\t\t}\n\n\t\tif (participantWalkedOver(participant)) {\n\t\t\treturn computedStyles.wonBywalkOverText;\n\t\t}\n\t\treturn \"\";\n\t};\n\n\tconst onMouseEnter = (partyId) => {\n\t\tdispatch({\n\t\t\ttype: \"SET_HOVERED_PARTYID\",\n\t\t\tpayload: {\n\t\t\t\tpartyId,\n\t\t\t\tmatchId: match.id,\n\t\t\t\trowIndex,\n\t\t\t\tcolumnIndex,\n\t\t\t},\n\t\t});\n\t};\n\tconst onMouseLeave = () => {\n\t\tdispatch({ type: \"SET_HOVERED_PARTYID\", payload: null });\n\t};\n\n\tbottomParty.name = bottomParty.name || teamNameFallback;\n\tbottomParty.resultText =\n\t\tbottomParty.resultText || resultFallback(bottomParty);\n\ttopParty.name = topParty.name || teamNameFallback;\n\ttopParty.resultText = topParty.resultText || resultFallback(topParty);\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{/* TODO: Add OnClick Match handler */}\n\t\t\t\t{MatchComponent && (\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\n\t);\n}\n\nexport default Match;\n","export const calculateVerticalStartingPoint = (\n\tcolumnIndex: number,\n\theight: number\n) => 2 ** columnIndex * (height / 2) - height / 2;\n\nexport const columnIncrement = (columnIndex: number, height: number) =>\n\t2 ** columnIndex * height;\n\nexport const calculateHeightIncrease = (\n\tcolumnIndex: number,\n\trowIndex: number,\n\theight: number\n) => columnIncrement(columnIndex, height) * rowIndex;\n\nexport const calculateVerticalPositioning = ({\n\trowIndex,\n\tcolumnIndex,\n\trowHeight,\n}) => {\n\treturn (\n\t\tcalculateHeightIncrease(columnIndex, rowIndex, rowHeight) +\n\t\tcalculateVerticalStartingPoint(columnIndex, rowHeight)\n\t);\n};\n\nexport const calculatePositionOfFinalGame = (\n\trowIndex,\n\tcolumnIndex,\n\t{\n\t\tcanvasPadding,\n\t\trowHeight,\n\t\tcolumnWidth,\n\t\tgameHeight,\n\t\tupperBracketHeight,\n\t\tlowerBracketHeight,\n\n\t\toffsetX = 0,\n\t\toffsetY = 0,\n\t}\n) => {\n\tconst yResult =\n\t\tgameHeight * (lowerBracketHeight / upperBracketHeight) - rowHeight;\n\n\treturn {\n\t\tx: columnIndex * columnWidth + canvasPadding + offsetX,\n\t\ty: yResult + canvasPadding + offsetY,\n\t};\n};\n\nexport const calculatePositionOfMatchUpperBracket = (\n\tcolumns,\n\trowIndex,\n\tcolumnIndex,\n\t{ canvasPadding, rowHeight, columnWidth, offsetX = 0, offsetY = 0 },\n\tlowerColumns,\n\tisQualifierRound\n) => {\n\tconst noLower = (lowerColumns?.length ?? 0) === 0;\n\tconst columnArray = getColumnSizeArray(columns);\n\n\tconst yResult = calculateVerticalPositioning({\n\t\trowHeight,\n\t\trowIndex,\n\t\tcolumnIndex: columnArray.indexOf(columns[columnIndex].length),\n\t});\n\n\tconst isQualifierColumn =\n\t\tisQualifierRound && columns.length - 1 === columnIndex;\n\n\tlet xResult;\n\tif (noLower) {\n\t\txResult = columnIndex * columnWidth;\n\t} else {\n\t\tconst skipStep = (index) => Math.floor((index + 1) * 2) - 3;\n\n\t\tif (isQualifierColumn) {\n\t\t\tconst previousColumn = calculatePositionOfMatchUpperBracket(\n\t\t\t\tcolumns,\n\t\t\t\trowIndex,\n\t\t\t\tcolumnIndex - 1,\n\t\t\t\t{ canvasPadding, rowHeight, columnWidth, offsetX, offsetY },\n\t\t\t\tlowerColumns,\n\t\t\t\tisQualifierRound\n\t\t\t);\n\n\t\t\txResult = previousColumn.x + columnWidth - canvasPadding;\n\t\t} else {\n\t\t\tconst shouldSkip = lowerColumns?.length > columns.length;\n\t\t\txResult =\n\t\t\t\t!shouldSkip || columnIndex === 0 || columnIndex === 1\n\t\t\t\t\t? columnIndex * columnWidth\n\t\t\t\t\t: skipStep(columnIndex) * columnWidth;\n\t\t}\n\t}\n\n\tif (columnIndex < columns.length - 1) {\n\t\tlet nextColumnIndex = columnIndex + 1;\n\n\t\t// make sure there is a next column\n\t\twhile (columns.length > nextColumnIndex) {\n\t\t\tconst nextColumn = columns[nextColumnIndex];\n\t\t\tconst nextColumnIsQualifier =\n\t\t\t\tisQualifierRound && columnIndex === columns.length - 2;\n\t\t\tif (!nextColumnIsQualifier) {\n\t\t\t\tconst nextColumnMatches =\n\t\t\t\t\tcolumnArray.indexOf(columns[columnIndex].length) ===\n\t\t\t\t\tcolumnArray.indexOf(nextColumn.length);\n\t\t\t\tif (nextColumnMatches) {\n\t\t\t\t\toffsetY += 19;\n\t\t\t\t\tnextColumnIndex++;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tx: xResult + canvasPadding + offsetX,\n\t\ty: yResult + canvasPadding + offsetY,\n\t};\n};\n\nexport const getColumnSizeArray = (columns) => {\n\tconst columnSizeMap = new Map();\n\tconst columnSizesArray = [];\n\n\tfor (let i = 0; i < columns.length; i++) {\n\t\tconst columnSize = columns[i].length;\n\t\tif (!columnSizeMap.has(columnSize)) {\n\t\t\tcolumnSizeMap.set(columnSize, i);\n\t\t\tcolumnSizesArray.push(columnSize);\n\t\t}\n\t}\n\n\treturn columnSizesArray;\n};\n\nexport const returnLowerBracketColumnIndex = (columnIndex) =>\n\tMath.ceil((columnIndex + 1) / 2) - 1;\n\nexport const calculatePositionOfMatchLowerBracket = (\n\tcolumns,\n\trowIndex,\n\tcolumnIndex,\n\t{ canvasPadding, rowHeight, columnWidth, offsetX = 0, offsetY = 0 },\n\tisQualifierRound\n) => {\n\tconst columnArray = getColumnSizeArray(columns);\n\tconst result = calculateVerticalPositioning({\n\t\trowHeight,\n\t\trowIndex,\n\t\tcolumnIndex: columnArray.indexOf(columns[columnIndex].length),\n\t});\n\n\tif (columnIndex < columns.length - 1) {\n\t\tconst nextColumn = columns[columnIndex + 1];\n\t\tconst nextColumnIsQualifier =\n\t\t\tisQualifierRound && columnIndex === columns.length - 2;\n\t\tif (!nextColumnIsQualifier) {\n\t\t\tconst nextColumnMatches =\n\t\t\t\tcolumnArray.indexOf(columns[columnIndex].length) ===\n\t\t\t\tcolumnArray.indexOf(nextColumn.length);\n\t\t\tif (nextColumnMatches) {\n\t\t\t\toffsetY += 19;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tx: columnIndex * columnWidth + canvasPadding + offsetX,\n\t\ty: result + canvasPadding + offsetY,\n\t};\n};\n","import { useContext } from \"react\";\nimport { matchContext } from \"bracket-system/core/match-context\";\n\nconst useMatchHighlightContext = ({ bracketSnippet = null }) => {\n\tconst {\n\t\tstate: { hoveredPartyId, highlightedMatchIds },\n\t} = useContext(matchContext);\n\tconst previousTopMatch = bracketSnippet?.previousTopMatch;\n\tconst previousBottomMatch = bracketSnippet?.previousBottomMatch;\n\tconst currentMatch = bracketSnippet?.currentMatch;\n\n\tconst topHighlighted =\n\t\thoveredPartyId != null &&\n\t\tcurrentMatch?.participants?.some((p) => p.id === hoveredPartyId) &&\n\t\tpreviousTopMatch?.participants?.some((p) => p.id === hoveredPartyId);\n\n\tconst bottomHighlighted =\n\t\thoveredPartyId != null &&\n\t\tcurrentMatch?.participants?.some((p) => p.id === hoveredPartyId) &&\n\t\tpreviousBottomMatch?.participants?.some((p) => p.id === hoveredPartyId);\n\n\tconst matchHighlighted = highlightedMatchIds?.some(\n\t\t(id) => id === currentMatch?.id\n\t);\n\treturn { topHighlighted, bottomHighlighted, matchHighlighted };\n};\n\nexport default useMatchHighlightContext;\n","import useMatchHighlightContext from \"bracket-system/hooks/use-match-highlight\";\nimport React from \"react\";\nimport { getCalculatedStyles } from \"../settings\";\n\nconst Connector = ({\n\tbracketSnippet,\n\tpreviousBottomMatchPosition = null,\n\tpreviousTopMatchPosition = null,\n\tcurrentMatchPosition,\n\tstyle,\n}) => {\n\tconst {\n\t\tboxHeight,\n\t\tconnectorColor,\n\t\troundHeader,\n\t\troundSeparatorWidth,\n\t\tlineInfo,\n\t\thorizontalOffset,\n\t\tconnectorColorHighlight,\n\t\twidth,\n\t} = getCalculatedStyles(style);\n\n\tconst pathInfo = (multiplier) => {\n\t\tconst middlePointOfMatchComponent = boxHeight / 2;\n\t\tconst previousMatch =\n\t\t\tmultiplier > 0 ? previousBottomMatchPosition : previousTopMatchPosition;\n\t\tconst startPoint = `${\n\t\t\tcurrentMatchPosition.x - horizontalOffset - lineInfo.separation\n\t\t} ${\n\t\t\tcurrentMatchPosition.y +\n\t\t\tlineInfo.homeVisitorSpread * multiplier +\n\t\t\tmiddlePointOfMatchComponent +\n\t\t\t(roundHeader.isShown ? roundHeader.height + roundHeader.marginBottom : 0)\n\t\t}`;\n\t\tconst horizontalWidthLeft =\n\t\t\tcurrentMatchPosition.x - roundSeparatorWidth / 2 - horizontalOffset;\n\t\tconst isPreviousMatchOnSameYLevel =\n\t\t\tMath.abs(currentMatchPosition.y - previousMatch.y) < 1;\n\n\t\tconst verticalHeight =\n\t\t\tpreviousMatch.y +\n\t\t\tmiddlePointOfMatchComponent +\n\t\t\t(roundHeader.isShown ? roundHeader.height + roundHeader.marginBottom : 0);\n\t\tconst horizontalWidthRight = previousMatch.x + width;\n\n\t\tif (isPreviousMatchOnSameYLevel) {\n\t\t\treturn [`M${startPoint}`, `H${horizontalWidthRight}`];\n\t\t}\n\n\t\treturn [\n\t\t\t`M${startPoint}`,\n\t\t\t`H${horizontalWidthLeft}`,\n\t\t\t`V${verticalHeight}`,\n\t\t\t`H${horizontalWidthRight}`,\n\t\t];\n\t};\n\n\tconst { topHighlighted, bottomHighlighted } = useMatchHighlightContext({\n\t\tbracketSnippet,\n\t});\n\n\tconst { x, y } = currentMatchPosition;\n\treturn (\n\t\t<>\n\t\t\t{previousTopMatchPosition && (\n\t\t\t\t\n\t\t\t)}\n\t\t\t{previousBottomMatchPosition && (\n\t\t\t\t\n\t\t\t)}\n\n\t\t\t{topHighlighted && }\n\t\t\t{bottomHighlighted && }\n\t\t\n\t);\n};\nexport default Connector;\n","import React from \"react\";\nimport Connectors from \"bracket-system/components/connector\";\n\nimport { getCalculatedStyles } from \"../settings\";\nimport {\n\tcalculatePositionOfMatchUpperBracket,\n\tcalculatePositionOfMatchLowerBracket,\n\tgetColumnSizeArray,\n} from \"./calculate-match-position\";\n\nconst ConnectorsUpper = ({\n\tcolumns,\n\tbracketSnippet,\n\trowIndex,\n\tcolumnIndex,\n\tstyle,\n\toffsetY = 0,\n\tisLowerBracket = false,\n\tlowerColumns,\n\tisQualifierRound,\n}) => {\n\tconst { columnWidth, rowHeight, canvasPadding } = getCalculatedStyles(style);\n\n\tconst isUpperSeedingRound = isLowerBracket && columnIndex % 2 !== 0;\n\tconst positioningFunction = isLowerBracket\n\t\t? calculatePositionOfMatchLowerBracket\n\t\t: calculatePositionOfMatchUpperBracket;\n\n\tconst isDirectFeed =\n\t\tcolumns[columnIndex].length === columns[columnIndex - 1].length;\n\n\t// If the previous column has the same number of matches then some teams prequalified.\n\t// Offset the connector column by some value\n\tconst columnArray = getColumnSizeArray(columns);\n\tconst isStraightConnector =\n\t\tcolumnArray.indexOf(columns[columnIndex].length) ===\n\t\tcolumnArray.indexOf(columns[columnIndex - 1].length);\n\n\t// If its not a direct feed, treat normally.\n\tif (!isDirectFeed) {\n\t\tconst currentMatchPosition = positioningFunction(\n\t\t\tcolumns,\n\t\t\trowIndex,\n\t\t\tcolumnIndex,\n\t\t\t{\n\t\t\t\tcanvasPadding,\n\t\t\t\trowHeight,\n\t\t\t\tcolumnWidth,\n\t\t\t\toffsetY,\n\t\t\t},\n\t\t\tlowerColumns,\n\t\t\tisQualifierRound\n\t\t);\n\t\tconst previousBottomPosition = isUpperSeedingRound\n\t\t\t? rowIndex\n\t\t\t: (rowIndex + 1) * 2 - 1;\n\t\tconst previousTopMatchPosition =\n\t\t\t!isUpperSeedingRound &&\n\t\t\tpositioningFunction(\n\t\t\t\tcolumns,\n\t\t\t\tpreviousBottomPosition - 1,\n\t\t\t\tcolumnIndex - 1,\n\t\t\t\t{\n\t\t\t\t\tcanvasPadding,\n\t\t\t\t\trowHeight,\n\t\t\t\t\tcolumnWidth,\n\t\t\t\t\toffsetY,\n\t\t\t\t},\n\t\t\t\tlowerColumns,\n\t\t\t\tisQualifierRound\n\t\t\t);\n\t\tconst previousBottomMatchPosition = positioningFunction(\n\t\t\tcolumns,\n\t\t\tpreviousBottomPosition,\n\t\t\tcolumnIndex - 1,\n\t\t\t{\n\t\t\t\tcanvasPadding,\n\t\t\t\trowHeight,\n\t\t\t\tcolumnWidth,\n\t\t\t\toffsetY,\n\t\t\t},\n\t\t\tlowerColumns,\n\t\t\tisQualifierRound\n\t\t);\n\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\n\tif (isDirectFeed) {\n\t\tconst currentMatchPosition = positioningFunction(\n\t\t\tcolumns,\n\t\t\trowIndex,\n\t\t\tcolumnIndex,\n\t\t\t{\n\t\t\t\tcanvasPadding,\n\t\t\t\trowHeight,\n\t\t\t\tcolumnWidth,\n\t\t\t\toffsetY,\n\t\t\t},\n\t\t\tlowerColumns,\n\t\t\tisQualifierRound\n\t\t);\n\n\t\tconst previousTopMatchPosition =\n\t\t\t!isUpperSeedingRound &&\n\t\t\tpositioningFunction(\n\t\t\t\tcolumns,\n\t\t\t\trowIndex,\n\t\t\t\tcolumnIndex - 1,\n\t\t\t\t{\n\t\t\t\t\tcanvasPadding,\n\t\t\t\t\trowHeight,\n\t\t\t\t\tcolumnWidth,\n\t\t\t\t\toffsetY,\n\t\t\t\t},\n\t\t\t\tlowerColumns,\n\t\t\t\tisQualifierRound\n\t\t\t);\n\n\t\tif (isStraightConnector) {\n\t\t\tcurrentMatchPosition.y = previousTopMatchPosition.y;\n\t\t}\n\n\t\tconst straightConnector = (\n\t\t\t\n\t\t);\n\n\t\tconst column = columns[columnIndex];\n\t\tconst bothTeamsAdvance = column[0].bothTeamsAdvance;\n\n\t\tif (bothTeamsAdvance) {\n\t\t\tconst lowerMatchPosition = {\n\t\t\t\tx: currentMatchPosition.x,\n\t\t\t\ty: currentMatchPosition.y,\n\t\t\t};\n\n\t\t\tlowerMatchPosition.y += 48;\n\n\t\t\tconst lowerAdvancingConnector = (\n\t\t\t\t\n\t\t\t);\n\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t{straightConnector}\n\t\t\t\t\t{lowerAdvancingConnector}\n\t\t\t\t\n\t\t\t);\n\t\t}\n\n\t\treturn straightConnector;\n\t}\n};\n\nexport default ConnectorsUpper;\n","import React from \"react\";\n\nexport default function UpperRoundHeader({\n\tx,\n\ty = 0,\n\twidth,\n\troundHeader,\n\tcanvasPadding,\n\tnumOfRounds,\n\tcolumnIndex,\n\tonClick = null,\n\tcustomHeaderText = null,\n\tisQualifierRound,\n}) {\n\tcustomHeaderText = customHeaderText ? customHeaderText : null;\n\treturn (\n\t\t// @ts-ignore\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{customHeaderText ??\n\t\t\t\t\tGetUpperBracketHeaderName(\n\t\t\t\t\t\tcolumnIndex,\n\t\t\t\t\t\tisQualifierRound ? numOfRounds - 1 : numOfRounds\n\t\t\t\t\t)}\n\t\t\t\n\t\t\n\t);\n}\n\nexport function GetUpperBracketHeaderName(\n\tcolumnIndex: number,\n\tnumOfRounds: number\n) {\n\tif (columnIndex + 1 === numOfRounds) {\n\t\treturn \"Upper Final\";\n\t} else if (columnIndex + 1 === numOfRounds - 1) {\n\t\treturn \"Upper Semi-Finals\";\n\t} else if (columnIndex + 1 === numOfRounds - 2) {\n\t\treturn \"Upper Quarter-Finals\";\n\t} else if (columnIndex + 1 < numOfRounds - 2) {\n\t\treturn `Upper Round ${columnIndex + 1}`;\n\t}\n}\n","import React from \"react\";\nimport MatchWrapper from \"bracket-system/core/match-wrapper\";\nimport { getPreviousMatches } from \"bracket-system/core/match-functions\";\nimport { calculatePositionOfMatchUpperBracket } from \"./calculate-match-position\";\nimport ConnectorsUpper from \"./upper-connectors\";\nimport UpperRoundHeader from \"bracket-system/components/upper-round-header\";\nimport { Match, Participant } from \"bracket-system/types\";\n\nconst UpperBracket = ({\n\tcolumns,\n\tcalculatedStyles,\n\tgameHeight,\n\tgameWidth,\n\tonMatchClick,\n\tonPartyClick,\n\tmatchComponent,\n\tlowerColumns,\n\tonUpperClick,\n\tonColumnClick,\n\tcustomHeaderNames,\n\tlockedColumns,\n\thideSeriesScore,\n\tisQualifierRound,\n}) => {\n\tconst { canvasPadding, columnWidth, rowHeight, roundHeader } =\n\t\tcalculatedStyles;\n\n\tif (isQualifierRound && columns?.length) {\n\t\tconst lastColumn = columns[columns.length - 1];\n\t\tcustomHeaderNames.push(\"Qualified\");\n\t\tcolumns = [...columns];\n\t\tcolumns.push([...lastColumn]);\n\t}\n\n\treturn (\n\t\t// @ts-ignore\n\t\t\n\t\t\t{columns.map((matchesColumn, columnIndex) => {\n\t\t\t\tconst isQualifierColumn =\n\t\t\t\t\tisQualifierRound && columnIndex === columns.length - 1;\n\n\t\t\t\tconst colPos = calculatePositionOfMatchUpperBracket(\n\t\t\t\t\tcolumns,\n\t\t\t\t\t0,\n\t\t\t\t\tcolumnIndex,\n\t\t\t\t\t{\n\t\t\t\t\t\tcanvasPadding,\n\t\t\t\t\t\tcolumnWidth,\n\t\t\t\t\t\trowHeight,\n\t\t\t\t\t},\n\t\t\t\t\tlowerColumns,\n\t\t\t\t\tisQualifierRound\n\t\t\t\t);\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{roundHeader.isShown && (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tif (onColumnClick) {\n\t\t\t\t\t\t\t\t\t\tonColumnClick(\"UB\", columnIndex);\n\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tcustomHeaderText={\n\t\t\t\t\t\t\t\t\tcustomHeaderNames && customHeaderNames[columnIndex]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tisQualifierRound={isQualifierRound}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{matchesColumn.map((match, rowIndex) => {\n\t\t\t\t\t\t\tconst { x, y } = calculatePositionOfMatchUpperBracket(\n\t\t\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\t\t\trowIndex,\n\t\t\t\t\t\t\t\tcolumnIndex,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcanvasPadding,\n\t\t\t\t\t\t\t\t\tcolumnWidth,\n\t\t\t\t\t\t\t\t\trowHeight,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tlowerColumns,\n\t\t\t\t\t\t\t\tisQualifierRound\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst previousBottomPosition = (rowIndex + 1) * 2 - 1;\n\t\t\t\t\t\t\tconst { previousTopMatch, previousBottomMatch } =\n\t\t\t\t\t\t\t\tgetPreviousMatches(\n\t\t\t\t\t\t\t\t\tcolumnIndex,\n\t\t\t\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\t\t\t\tpreviousBottomPosition\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{columnIndex !== 0 && (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\tonPartyClick &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t!lockedColumns.includes(columnIndex)\n\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tonPartyClick(e, match, isTop, party, partyWon);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tlocked={lockedColumns.includes(columnIndex)}\n\t\t\t\t\t\t\t\t\t\t\tstyle={calculatedStyles}\n\t\t\t\t\t\t\t\t\t\t\tmatchComponent={matchComponent}\n\t\t\t\t\t\t\t\t\t\t\thideSeriesScore={hideSeriesScore}\n\t\t\t\t\t\t\t\t\t\t\tisQualifierColumn={isQualifierColumn}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t})}\n\t\t\n\t);\n};\nexport default UpperBracket;\n","import React from \"react\";\nimport Connectors from \"bracket-system/components/connector\";\n\nimport { getCalculatedStyles } from \"../settings\";\nimport {\n\tcalculatePositionOfMatchLowerBracket,\n\tgetColumnSizeArray,\n} from \"./calculate-match-position\";\n\nconst ConnectorsLower = ({\n\tcolumns,\n\tbracketSnippet,\n\trowIndex,\n\tcolumnIndex,\n\tstyle,\n\toffsetY = 0,\n\tisQualifierRound,\n\tisQualifierColumn,\n}) => {\n\tconst { columnWidth, rowHeight, canvasPadding } = getCalculatedStyles(style);\n\tconst isFirstColumn = columnIndex === 0;\n\tconst isUpperSeedingRound =\n\t\tisFirstColumn ||\n\t\tcolumns[columnIndex].length === columns[columnIndex - 1].length;\n\n\t// If the previous column has the same number of matches then some teams prequalified.\n\t// Offset the connector column by some value\n\tconst columnArray = getColumnSizeArray(columns);\n\tconst straightConnector =\n\t\tcolumnArray.indexOf(columns[columnIndex].length) ===\n\t\tcolumnArray.indexOf(columns[columnIndex - 1].length);\n\n\tif (!isQualifierColumn) {\n\t\tconst currentMatchPosition = calculatePositionOfMatchLowerBracket(\n\t\t\tcolumns,\n\t\t\trowIndex,\n\t\t\tcolumnIndex,\n\t\t\t{\n\t\t\t\tcanvasPadding,\n\t\t\t\trowHeight,\n\t\t\t\tcolumnWidth,\n\t\t\t\toffsetY,\n\t\t\t},\n\t\t\tisQualifierRound\n\t\t);\n\t\tconst previousBottomPosition = isUpperSeedingRound\n\t\t\t? rowIndex\n\t\t\t: (rowIndex + 1) * 2 - 1;\n\t\tconst previousTopMatchPosition =\n\t\t\t!isUpperSeedingRound &&\n\t\t\tcalculatePositionOfMatchLowerBracket(\n\t\t\t\tcolumns,\n\t\t\t\tpreviousBottomPosition - 1,\n\t\t\t\tcolumnIndex - 1,\n\t\t\t\t{\n\t\t\t\t\tcanvasPadding,\n\t\t\t\t\trowHeight,\n\t\t\t\t\tcolumnWidth,\n\t\t\t\t\toffsetY,\n\t\t\t\t},\n\t\t\t\tisQualifierRound\n\t\t\t);\n\t\tconst previousBottomMatchPosition = calculatePositionOfMatchLowerBracket(\n\t\t\tcolumns,\n\t\t\tpreviousBottomPosition,\n\t\t\tcolumnIndex - 1,\n\t\t\t{\n\t\t\t\tcanvasPadding,\n\t\t\t\trowHeight,\n\t\t\t\tcolumnWidth,\n\t\t\t\toffsetY,\n\t\t\t},\n\t\t\tisQualifierRound\n\t\t);\n\n\t\tif (straightConnector) {\n\t\t\tcurrentMatchPosition.y = previousTopMatchPosition.y;\n\t\t\tcurrentMatchPosition.y = previousBottomMatchPosition.y;\n\t\t}\n\n\t\treturn (\n\t\t\t\n\t\t);\n\t} else {\n\t\tconst currentMatchPosition = calculatePositionOfMatchLowerBracket(\n\t\t\tcolumns,\n\t\t\trowIndex,\n\t\t\tcolumnIndex,\n\t\t\t{\n\t\t\t\tcanvasPadding,\n\t\t\t\trowHeight,\n\t\t\t\tcolumnWidth,\n\t\t\t\toffsetY,\n\t\t\t},\n\t\t\tisQualifierRound\n\t\t);\n\n\t\tconst previousTopMatchPosition = calculatePositionOfMatchLowerBracket(\n\t\t\tcolumns,\n\t\t\trowIndex,\n\t\t\tcolumnIndex - 1,\n\t\t\t{\n\t\t\t\tcanvasPadding,\n\t\t\t\trowHeight,\n\t\t\t\tcolumnWidth,\n\t\t\t\toffsetY,\n\t\t\t},\n\t\t\tisQualifierRound\n\t\t);\n\n\t\tif (straightConnector) {\n\t\t\tcurrentMatchPosition.y = previousTopMatchPosition.y;\n\t\t}\n\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n};\n\nexport default ConnectorsLower;\n","import React from \"react\";\n\nexport default function LowerRoundHeader({\n\tx,\n\ty = 0,\n\twidth,\n\troundHeader,\n\tcanvasPadding,\n\tnumOfRounds,\n\tcolumnIndex,\n\tupperBracketHeight,\n\tonClick,\n\tcustomHeaderText,\n\tisQualifierRound,\n}) {\n\tcustomHeaderText = customHeaderText ? customHeaderText : null;\n\treturn (\n\t\t// @ts-ignore\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{customHeaderText ??\n\t\t\t\t\tGetLowerBracketHeaderName(\n\t\t\t\t\t\tcolumnIndex,\n\t\t\t\t\t\tisQualifierRound ? numOfRounds - 1 : numOfRounds\n\t\t\t\t\t)}\n\t\t\t\n\t\t\n\t);\n}\n\nexport function GetLowerBracketHeaderName(\n\tcolumnIndex: number,\n\tnumOfRounds: number\n) {\n\tif (columnIndex + 1 === numOfRounds) {\n\t\treturn \"Lower Final\";\n\t} else if (columnIndex + 1 === numOfRounds - 1) {\n\t\treturn \"Lower Semi-Finals\";\n\t} else if (columnIndex + 1 === numOfRounds - 2) {\n\t\treturn \"Lower Quarter-Finals\";\n\t} else if (columnIndex + 1 < numOfRounds - 2) {\n\t\treturn `Lower Round ${columnIndex + 1}`;\n\t}\n}\n","import React from \"react\";\nimport MatchWrapper from \"bracket-system/core/match-wrapper\";\nimport { getPreviousMatches } from \"bracket-system/core/match-functions\";\nimport { calculatePositionOfMatchLowerBracket } from \"./calculate-match-position\";\nimport ConnectorsLower from \"./lower-connectors\";\nimport LowerRoundHeader from \"bracket-system/components/lower-round-header\";\nimport { Match, Participant } from \"bracket-system/types\";\n\nconst LowerBracket = ({\n\tcolumns,\n\tcalculatedStyles,\n\tgameHeight,\n\tgameWidth,\n\tonMatchClick,\n\tonPartyClick,\n\tmatchComponent,\n\tupperBracketHeight,\n\tonLowerClick,\n\tonColumnClick,\n\tcustomHeaderNames,\n\tlockedColumns,\n\thideSeriesScore,\n\tisQualifierRound,\n}) => {\n\tconst { canvasPadding, columnWidth, rowHeight, roundHeader } =\n\t\tcalculatedStyles;\n\n\tif (isQualifierRound && columns?.length) {\n\t\tconst lastColumn = columns[columns.length - 1];\n\t\tcustomHeaderNames.push(\"Qualified\");\n\t\tcolumns = [...columns];\n\t\tcolumns.push([...lastColumn]);\n\t}\n\n\treturn (\n\t\t// @ts-ignore\n\t\t\n\t\t\t{columns.map((matchesColumn, columnIndex) => {\n\t\t\t\tconst isQualifierColumn =\n\t\t\t\t\tisQualifierRound && columnIndex === columns.length - 1;\n\t\t\t\tconst isFirstColumn = columnIndex === 0;\n\t\t\t\tconst colPos = calculatePositionOfMatchLowerBracket(\n\t\t\t\t\tcolumns,\n\t\t\t\t\t0,\n\t\t\t\t\tcolumnIndex,\n\t\t\t\t\t{\n\t\t\t\t\t\tcanvasPadding,\n\t\t\t\t\t\tcolumnWidth,\n\t\t\t\t\t\trowHeight,\n\t\t\t\t\t},\n\t\t\t\t\tisQualifierRound\n\t\t\t\t);\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{roundHeader.isShown && (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tif (onColumnClick) {\n\t\t\t\t\t\t\t\t\t\tonColumnClick(\"LB\", columnIndex);\n\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tcustomHeaderText={\n\t\t\t\t\t\t\t\t\tcustomHeaderNames && customHeaderNames[columnIndex]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tisQualifierRound={isQualifierRound}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{matchesColumn.map((match, rowIndex) => {\n\t\t\t\t\t\t\tconst { x, y } = calculatePositionOfMatchLowerBracket(\n\t\t\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\t\t\trowIndex,\n\t\t\t\t\t\t\t\tcolumnIndex,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcanvasPadding,\n\t\t\t\t\t\t\t\t\tcolumnWidth,\n\t\t\t\t\t\t\t\t\trowHeight,\n\t\t\t\t\t\t\t\t\toffsetY: upperBracketHeight,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tisQualifierRound\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tconst isUpperSeedingRound =\n\t\t\t\t\t\t\t\tisFirstColumn ||\n\t\t\t\t\t\t\t\tcolumns[columnIndex].length === columns[columnIndex - 1].length;\n\n\t\t\t\t\t\t\tconst previousBottomPosition = isUpperSeedingRound\n\t\t\t\t\t\t\t\t? rowIndex\n\t\t\t\t\t\t\t\t: (rowIndex + 1) * 2 - 1;\n\t\t\t\t\t\t\tconst { previousTopMatch, previousBottomMatch } =\n\t\t\t\t\t\t\t\tgetPreviousMatches(\n\t\t\t\t\t\t\t\t\tcolumnIndex,\n\t\t\t\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\t\t\t\tpreviousBottomPosition\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{columnIndex !== 0 && (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\tonPartyClick &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t!lockedColumns.includes(columnIndex)\n\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tonPartyClick(e, match, isTop, party, partyWon);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tstyle={calculatedStyles}\n\t\t\t\t\t\t\t\t\t\t\tmatchComponent={matchComponent}\n\t\t\t\t\t\t\t\t\t\t\thideSeriesScore={hideSeriesScore}\n\t\t\t\t\t\t\t\t\t\t\tisQualifierColumn={isQualifierColumn}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t})}\n\t\t\n\t);\n};\n\nexport default LowerBracket;\n","import React from \"react\";\nimport Connector from \"bracket-system/components/connector\";\nimport { getCalculatedStyles } from \"../settings\";\nimport {\n\tcalculatePositionOfMatchUpperBracket,\n\tcalculatePositionOfMatchLowerBracket,\n\tcalculatePositionOfFinalGame,\n} from \"./calculate-match-position\";\n\nconst FinalConnectors = ({\n\tupperColumns,\n\tlowerColumns,\n\trowIndex,\n\tcolumnIndex,\n\tstyle,\n\tbracketSnippet = null,\n\toffsetY = 0,\n\tnumOfUpperRounds,\n\tnumOfLowerRounds,\n\tlowerBracketHeight,\n\tupperBracketHeight,\n\tgameHeight,\n}) => {\n\tconst { columnWidth, rowHeight, canvasPadding } = getCalculatedStyles(style);\n\n\tconst currentMatchPosition = calculatePositionOfFinalGame(\n\t\trowIndex,\n\t\tcolumnIndex,\n\t\t{\n\t\t\tcanvasPadding,\n\t\t\trowHeight,\n\t\t\tcolumnWidth,\n\t\t\toffsetY,\n\t\t\tlowerBracketHeight,\n\t\t\tupperBracketHeight,\n\t\t\tgameHeight,\n\t\t}\n\t);\n\n\tconst previousTopMatchPosition = calculatePositionOfMatchUpperBracket(\n\t\tupperColumns,\n\t\t0,\n\t\tnumOfUpperRounds - 1, // numOfRounds is higher than index by 1 and we need 2nd to last index\n\t\t{\n\t\t\tcanvasPadding,\n\t\t\trowHeight,\n\t\t\tcolumnWidth,\n\t\t\toffsetY,\n\t\t},\n\t\tlowerColumns,\n\t\tfalse\n\t);\n\n\tconst previousBottomMatchPosition = calculatePositionOfMatchLowerBracket(\n\t\tlowerColumns,\n\t\t0,\n\t\tnumOfLowerRounds - 1, // numOfRounds is higher than index by 1 and we need 2nd to last index\n\t\t{\n\t\t\tcanvasPadding,\n\t\t\trowHeight,\n\t\t\tcolumnWidth,\n\t\t\toffsetY: upperBracketHeight + offsetY,\n\t\t},\n\t\tfalse\n\t);\n\n\treturn (\n\t\t\n\t);\n};\n\nexport default FinalConnectors;\n","import React from \"react\";\n\nexport default function FinalRoundHeader({\n\tx,\n\ty = 0,\n\twidth,\n\troundHeader,\n\tcanvasPadding,\n\tonClick,\n}) {\n\treturn (\n\t\t// @ts-ignore\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\tGrand Final\n\t\t\t\n\t\t\n\t);\n}\n","import React from \"react\";\nimport MatchWrapper from \"bracket-system/core/match-wrapper\";\nimport { calculatePositionOfFinalGame } from \"./calculate-match-position\";\nimport Connectors from \"./final-connectors\";\nimport FinalRoundHeader from \"bracket-system/components/final-round-header\";\n\nconst FinalGame = ({\n\tupperColumns,\n\tlowerColumns,\n\tmatch,\n\trowIndex,\n\tcolumnIndex,\n\tgameHeight,\n\tgameWidth,\n\tcalculatedStyles,\n\tonMatchClick,\n\tonPartyClick,\n\tmatchComponent,\n\tbracketSnippet,\n\tnumOfUpperRounds,\n\tnumOfLowerRounds,\n\tupperBracketHeight,\n\tlowerBracketHeight,\n\tonFinalsClick,\n\tonColumnClick,\n\thideSeriesScore,\n}) => {\n\tconst { canvasPadding, columnWidth, rowHeight, roundHeader } =\n\t\tcalculatedStyles;\n\tconst { x, y } = calculatePositionOfFinalGame(rowIndex, columnIndex, {\n\t\tcanvasPadding,\n\t\tcolumnWidth,\n\t\trowHeight,\n\t\tgameHeight,\n\t\tupperBracketHeight,\n\t\tlowerBracketHeight,\n\t});\n\n\treturn (\n\t\t// @ts-ignore\n\t\t\n\t\t\t{roundHeader.isShown && (\n\t\t\t\t {\n\t\t\t\t\t\tif (onColumnClick) {\n\t\t\t\t\t\t\tonColumnClick(\"GF\", 0);\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{columnIndex !== 0 && (\n\t\t\t\t\n\t\t\t)}\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default FinalGame;\n","import React from \"react\";\nimport Connector from \"bracket-system/components/connector\";\nimport { getCalculatedStyles } from \"../settings\";\nimport { calculatePositionOfFinalGame } from \"./calculate-match-position\";\n\nconst FinalConnectors = ({\n\trowIndex,\n\tcolumnIndex,\n\n\tstyle,\n\tbracketSnippet = null,\n\toffsetY = 0,\n\tnumOfLowerRounds,\n\tlowerBracketHeight,\n\tupperBracketHeight,\n\tgameHeight,\n}) => {\n\tconst { columnWidth, rowHeight, canvasPadding } = getCalculatedStyles(style);\n\n\tconst currentMatchPosition = calculatePositionOfFinalGame(\n\t\trowIndex,\n\t\tcolumnIndex,\n\t\t{\n\t\t\tcanvasPadding,\n\t\t\trowHeight,\n\t\t\tcolumnWidth,\n\t\t\toffsetY,\n\t\t\tlowerBracketHeight,\n\t\t\tupperBracketHeight,\n\t\t\tgameHeight,\n\t\t}\n\t);\n\n\tconst previousBottomMatchPosition = calculatePositionOfFinalGame(\n\t\t0,\n\t\tnumOfLowerRounds, // numOfRounds is higher than index by 1 and we need 2nd to last index\n\t\t{\n\t\t\tcanvasPadding,\n\t\t\trowHeight,\n\t\t\tcolumnWidth,\n\t\t\toffsetY,\n\t\t\tlowerBracketHeight,\n\t\t\tupperBracketHeight,\n\t\t\tgameHeight,\n\t\t}\n\t);\n\n\treturn (\n\t\t\n\t);\n};\n\nexport default FinalConnectors;\n","import React from \"react\";\nimport MatchWrapper from \"bracket-system/core/match-wrapper\";\nimport { calculatePositionOfFinalGame } from \"./calculate-match-position\";\nimport Connectors from \"./extra-final-connectors\";\n\nconst ExtraFinal = ({\n\tmatch,\n\trowIndex,\n\tcolumnIndex,\n\tgameHeight,\n\tgameWidth,\n\tcalculatedStyles,\n\tonMatchClick,\n\tonPartyClick,\n\tmatchComponent,\n\tbracketSnippet,\n\tnumOfUpperRounds,\n\tnumOfLowerRounds,\n\tupperBracketHeight,\n\tlowerBracketHeight,\n\thideSeriesScore,\n}) => {\n\tconst { canvasPadding, columnWidth, rowHeight, roundHeader } =\n\t\tcalculatedStyles;\n\tconst { x, y } = calculatePositionOfFinalGame(rowIndex, columnIndex, {\n\t\tcanvasPadding,\n\t\tcolumnWidth,\n\t\trowHeight,\n\t\tgameHeight,\n\t\tupperBracketHeight,\n\t\tlowerBracketHeight,\n\t});\n\n\treturn (\n\t\t<>\n\t\t\t{columnIndex !== 0 && (\n\t\t\t\t\n\t\t\t)}\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default ExtraFinal;\n","import React, { useContext } from \"react\";\nimport { ThemeProvider } from \"styled-components\";\nimport { generatePreviousRound } from \"bracket-system/core/match-functions\";\nimport { calculateSVGDimensions } from \"bracket-system/core/calculate-svg-dimensions\";\nimport {\n\tmatchContext,\n\tMatchContextProvider,\n} from \"bracket-system/core/match-context\";\n\nimport { DoubleElimLeaderboardProps } from \"../types\";\nimport { defaultStyle, getCalculatedStyles } from \"../settings\";\n\nimport defaultTheme from \"../themes/themes\";\n\nimport UpperBracket from \"./upper-bracket\";\nimport LowerBracket from \"./lower-bracket\";\nimport FinalGame from \"./final-game\";\nimport ExtraFinal from \"./extra-final\";\nimport { useEffect } from \"react\";\n\nfunction findTheFinals(matches) {\n\tconst finalsCountInUpper =\n\t\tmatches.upper?.filter((match) => !match.nextMatchId)?.length ?? 0;\n\tconst finalsCountInLower =\n\t\tmatches.lower?.filter((match) => !match.nextMatchId)?.length ?? 0;\n\n\tconst isQualifierRound = finalsCountInUpper > 0 && finalsCountInLower > 0;\n\tconst isFinalInUpper = finalsCountInUpper === 1;\n\tconst isFinalInLower = finalsCountInLower === 1;\n\n\tlet finalMatch = null;\n\tlet finalsArray = [];\n\tlet isConverging = false;\n\n\tif (isQualifierRound) {\n\t\tfinalsArray = matches.upper\n\t\t\t?.filter((match) => !match.nextMatchId)\n\t\t\t.concat(matches.lower?.filter((match) => !match.nextMatchId) ?? []);\n\t}\n\n\t// No GF scenario\n\tif (isFinalInLower && isFinalInUpper) {\n\t\tisConverging = false;\n\t} else if (isFinalInLower) {\n\t\tconst lastUpper = matches.upper.find((match) => {\n\t\t\tconst hasNextMatchInUpper = matches.upper.some(\n\t\t\t\t(m) => m.id === match.nextMatchId\n\t\t\t);\n\t\t\treturn !hasNextMatchInUpper;\n\t\t});\n\t\tfinalMatch = matches.lower.find(\n\t\t\t(match) => match.id === lastUpper.nextMatchId\n\t\t);\n\t\tfinalsArray = [\n\t\t\tfinalMatch,\n\t\t\tmatches.lower.find((m) => m.id === finalMatch?.nextMatchId),\n\t\t].filter((m) => m?.id);\n\n\t\tisConverging = !!finalMatch;\n\t} else if (isFinalInUpper) {\n\t\tif (matches.lower?.length > 0) {\n\t\t\tconst lastLower = matches.lower.find((match) => {\n\t\t\t\tconst hasNextMatchInLower = matches.lower.some(\n\t\t\t\t\t(m) => m.id === match.nextMatchId\n\t\t\t\t);\n\t\t\t\treturn !hasNextMatchInLower;\n\t\t\t});\n\t\t\tfinalMatch = matches.upper.find(\n\t\t\t\t(match) => match.id === lastLower.nextMatchId\n\t\t\t);\n\n\t\t\tisConverging = !!finalMatch;\n\t\t} else {\n\t\t\tfinalMatch = matches.upper.find((m) => !m.nextMatchId);\n\t\t}\n\n\t\tfinalsArray = [\n\t\t\tfinalMatch,\n\t\t\tmatches.upper.filter((m) => !m.nextMatchId),\n\t\t].filter((m) => m?.id);\n\t}\n\n\treturn { finalMatch, finalsArray, isConverging, isQualifierRound };\n}\nconst DoubleEliminationBracket = ({\n\tmatches,\n\tofficialMatches,\n\thighlightMatchIds,\n\tmatchComponent,\n\tcurrentRound,\n\tonMatchClick,\n\tonPartyClick,\n\tsvgWrapper: SvgWrapper = ({ children }) => <>{children},\n\ttheme = defaultTheme,\n\toptions: { style: inputStyle } = {\n\t\tstyle: defaultStyle,\n\t},\n\tonUpperClick,\n\tonLowerClick,\n\tonFinalsClick,\n\tonColumnClick,\n\tcustomHeaderNames,\n\tlockedColumns,\n\thideSeriesScore,\n\tisPartialBracket,\n\tallowsBracketReset,\n}: DoubleElimLeaderboardProps) => {\n\tconst style = {\n\t\t...defaultStyle,\n\t\t...inputStyle,\n\t\troundHeader: {\n\t\t\t...defaultStyle.roundHeader,\n\t\t\t...inputStyle.roundHeader,\n\t\t},\n\t\tlineInfo: {\n\t\t\t...defaultStyle.lineInfo,\n\t\t\t...inputStyle.lineInfo,\n\t\t},\n\t};\n\n\tif (!matches) {\n\t\treturn <>;\n\t}\n\n\tconst calculatedStyles = getCalculatedStyles(style, hideSeriesScore);\n\tconst { roundHeader, columnWidth, canvasPadding, rowHeight } =\n\t\tcalculatedStyles;\n\tconst { finalMatch, finalsArray, isConverging, isQualifierRound } =\n\t\tfindTheFinals(matches);\n\n\tconst hasMultipleFinals = finalsArray?.length > 1;\n\n\tconst generateColumn = (matchesColumn, listOfMatches) => {\n\t\tconst previousMatchesColumn = generatePreviousRound(\n\t\t\tmatchesColumn,\n\t\t\tlistOfMatches\n\t\t);\n\n\t\tif (previousMatchesColumn.length > 0) {\n\t\t\treturn [\n\t\t\t\t...generateColumn(previousMatchesColumn, listOfMatches),\n\t\t\t\tpreviousMatchesColumn,\n\t\t\t];\n\t\t}\n\t\treturn [previousMatchesColumn];\n\t};\n\tconst generate2DBracketArray = (\n\t\tfinalMatches,\n\t\tlistOfMatches,\n\t\tincludeFinal\n\t) => {\n\t\tlet result = finalMatches\n\t\t\t? [...generateColumn(finalMatches, listOfMatches), []].filter(\n\t\t\t\t\t(arr) => arr.length > 0\n\t\t\t )\n\t\t\t: [];\n\n\t\tif (includeFinal) {\n\t\t\tresult.push(\n\t\t\t\tfinalMatches.filter((fm) => listOfMatches.some((m) => m.id === fm.id))\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tconst hasLower = matches.lower?.length > 0;\n\tconst upperColumns = generate2DBracketArray(\n\t\tfinalsArray,\n\t\tmatches.upper,\n\t\t!hasLower || isQualifierRound || isPartialBracket\n\t);\n\tconst lowerColumns = generate2DBracketArray(\n\t\tfinalsArray,\n\t\tmatches.lower,\n\t\tisQualifierRound || isPartialBracket\n\t);\n\n\t// [\n\t// [ First column ]\n\t// [ 2nd column ]\n\t// [ 3rd column ]\n\t// [ lastGame ]\n\t// ]\n\n\tconst totalNumOfRounds =\n\t\tlowerColumns && !isQualifierRound\n\t\t\t? lowerColumns.length + 1 + (hasMultipleFinals && finalsArray.length - 1)\n\t\t\t: upperColumns.length;\n\tconst upperBracketDimensions = calculateSVGDimensions(\n\t\tupperColumns.length > 0 ? upperColumns[0].length : 0,\n\t\tupperColumns.length,\n\t\trowHeight,\n\t\tcolumnWidth,\n\t\tcanvasPadding,\n\t\troundHeader,\n\t\tcurrentRound\n\t);\n\n\tlet gameHeight;\n\tlet lowerBracketDimensions;\n\tlet fullBracketDimensions;\n\n\tif (matches.lower?.length > 0) {\n\t\tlowerBracketDimensions = calculateSVGDimensions(\n\t\t\tlowerColumns[0].length,\n\t\t\tlowerColumns.length,\n\t\t\trowHeight,\n\t\t\tcolumnWidth,\n\t\t\tcanvasPadding,\n\t\t\troundHeader,\n\t\t\tcurrentRound\n\t\t);\n\t\tfullBracketDimensions = calculateSVGDimensions(\n\t\t\tlowerColumns[0].length,\n\t\t\ttotalNumOfRounds,\n\t\t\trowHeight,\n\t\t\tcolumnWidth,\n\t\t\tcanvasPadding,\n\t\t\troundHeader,\n\t\t\tcurrentRound\n\t\t);\n\t\tgameHeight =\n\t\t\tupperBracketDimensions.gameHeight + lowerBracketDimensions?.gameHeight;\n\t} else {\n\t\tfullBracketDimensions = upperBracketDimensions;\n\t\tgameHeight = upperBracketDimensions.gameHeight;\n\t}\n\n\tconst { gameWidth } = fullBracketDimensions;\n\tconst { startPosition } = upperBracketDimensions;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{matches.lower?.length > 0 && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{isConverging && !isQualifierRound && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{finalsArray?.length > 1 && !isQualifierRound && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nfunction MatchColoringProvider({ newHighlightedMatchIds, newOfficialMatches }) {\n\tconst {\n\t\tstate: { highlightedMatchIds, officialMatches },\n\t\tdispatch,\n\t} = useContext(matchContext);\n\n\tuseEffect(() => {\n\t\tif (highlightedMatchIds?.length !== newHighlightedMatchIds?.length) {\n\t\t\tdispatch({\n\t\t\t\ttype: \"SET_MATCH_HIGHLIGHTS\",\n\t\t\t\tpayload: {\n\t\t\t\t\thighlightedMatchIds: newHighlightedMatchIds,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tif (officialMatches?.length !== newOfficialMatches?.length) {\n\t\t\tdispatch({\n\t\t\t\ttype: \"SET_OFFICIAL_PICKS\",\n\t\t\t\tpayload: {\n\t\t\t\t\tofficialMatches: newOfficialMatches,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t});\n\n\treturn <>;\n}\n\nexport default DoubleEliminationBracket;\n","import styled, { css } from \"styled-components\";\n\nexport const Wrapper = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: space-between;\n\talign-items: stretch;\n\theight: 100%;\n\tfont-family: ${({ theme }) => theme.fontFamily};\n`;\nexport const TopText = styled.p`\n\tcolor: ${({ theme }) => theme.textColor.dark};\n\tmargin-bottom: 0.2rem;\n\tmin-height: 1.25rem;\n`;\nexport const BottomText = styled.p`\n\tcolor: ${({ theme }) => theme.textColor.dark};\n\n\tflex: 0 0 none;\n\ttext-align: center;\n\tmargin-top: 0.2rem;\n\tmin-height: 1.25rem;\n`;\nexport const StyledMatch = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n`;\n\nexport const Team = styled.div`\n\tcursor: default;\n\tpadding-right: 8px;\n`;\n\nexport const LogoImage = styled.img`\n\tmax-height: 100%;\n`;\n\ninterface ScoreProps {\n\twon?: boolean;\n}\nexport const Score = styled.div`\n\tdisplay: flex;\n\theight: 100%;\n\tpadding: 0 1rem;\n\talign-items: center;\n\twidth: 20%;\n\tjustify-content: center;\n\tbackground: ${({ theme, won }: any) =>\n\t\twon ? theme.score.background.wonColor : theme.score.background.lostColor};\n\tcolor: ${({ theme, won }: any) =>\n\t\twon ? theme.textColor.highlighted : theme.textColor.dark};\n\tcursor: default;\n`;\ninterface SideProps {\n\twon?: boolean;\n\thovered?: boolean;\n\tcorrectParticipant?: boolean;\n\tcorrectPlacement?: boolean;\n\tloserQualifies?: boolean;\n}\nexport const Side = styled.div`\n\tdisplay: flex;\n\theight: 30px;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: 0 0 0 1rem;\n\tbackground: ${({ theme, won, correctParticipant }: any) =>\n\t\twon\n\t\t\t? correctParticipant\n\t\t\t\t? `linear-gradient(${theme.matchBackground.wonColor}, #aeffa8)`\n\t\t\t\t: theme.matchBackground.wonColor\n\t\t\t: correctParticipant\n\t\t\t? `linear-gradient(${theme.matchBackground.lostColor}, #588555)`\n\t\t\t: theme.matchBackground.lostColor};\n\n\tmargin: ${({ loserQualifies }: any) =>\n\t\tloserQualifies ? \"16px 0px 0px 0px\" : \"0px\"};\n\n\t:first-of-type {\n\t\tborder-top-right-radius: 3px;\n\t\tborder-top-left-radius: 3px;\n\t\tborder-top-width: 2px;\n\t}\n\t:last-of-type {\n\t\tborder-bottom-right-radius: 3px;\n\t\tborder-bottom-left-radius: 3px;\n\t\tborder-bottom-width: 2px;\n\t}\n\tborder-right: 4px solid\n\t\t${({ theme, correctPlacement }) =>\n\t\t\tcorrectPlacement ? \"#73ff69\" : theme.border.color};\n\tborder-left: 4px solid\n\t\t${({ theme, correctPlacement }) =>\n\t\t\tcorrectPlacement ? \"#73ff69\" : theme.border.color};\n\tborder-top: 1px solid\n\t\t${({ theme, correctPlacement }) =>\n\t\t\tcorrectPlacement ? \"#73ff69\" : theme.border.color};\n\tborder-bottom: 1px solid\n\t\t${({ theme, correctPlacement }) =>\n\t\t\tcorrectPlacement ? \"#73ff69\" : theme.border.color};\n\n\ttransition: border-color 0.5s ${({ theme }) => theme.transitionTimingFunction};\n\t${Team} {\n\t\tcolor: ${({ theme, won }: any) =>\n\t\t\twon ? theme.textColor.winner : theme.textColor.dark};\n\t}\n\t${Score} {\n\t\tcolor: ${({ theme, won }: any) =>\n\t\t\twon ? theme.score.text.winner : theme.textColor.dark};\n\t}\n\t${({ hovered, theme, won }: any) =>\n\t\thovered &&\n\t\tcss`\n\t\t\tborder-color: ${theme.border.highlightedColor};\n\t\t\t${Team} {\n\t\t\t\tcolor: ${theme.textColor.highlighted};\n\t\t\t}\n\t\t\t${Score} {\n\t\t\t\tcolor: ${won\n\t\t\t\t\t? theme.score.text.highlightedWonColor\n\t\t\t\t\t: theme.score.text.highlightedLostColor};\n\t\t\t}\n\t\t`}\n\t${({ highlighted, theme }: any) =>\n\t\thighlighted &&\n\t\tcss`\n\t\t\tborder-color: ${theme.border.highlightedColor};\n\t\t`}\n`;\ninterface LineProps {\n\thighlighted?: boolean;\n}\nexport const Line = styled.div`\n\theight: 1px;\n\ttransition: border-color 0.5s ${({ theme }) => theme.smooth};\n\n\tborder-width: 1px;\n\tborder-style: solid;\n\tborder-color: ${({ highlighted, theme }: any) =>\n\t\thighlighted ? theme.border.highlightedColor : theme.border.color};\n`;\n\nexport const Anchor = styled.a`\n\tfont-family: ${(props: any) =>\n\t\tprops.font ? props.font : props.theme.fontFamily};\n\tfont-weight: ${(props: any) => (props.bold ? \"700\" : \"400\")};\n\tcolor: ${(props: any) => props.theme.textColor.main};\n\tfont-size: ${(props: any) => (props.size ? props.size : \"1rem\")};\n\tline-height: 1.375rem;\n\ttext-decoration: none;\n\tcursor: pointer;\n\t&:hover {\n\t\ttext-decoration: underline;\n\t}\n`;\n","import React from \"react\";\nimport { MatchComponentProps } from \"../../types\";\nimport {\n\tScore,\n\tSide,\n\tStyledMatch,\n\tLogoImage,\n\tTeam,\n\tTopText,\n\tBottomText,\n\tWrapper,\n\tLine,\n\tAnchor,\n} from \"./styles\";\n\nfunction Match({\n\tbottomHovered,\n\tbottomParty,\n\tbottomText,\n\tbottomWon,\n\tmatch,\n\tonMatchClick,\n\tonMouseEnter,\n\tonMouseLeave,\n\tonPartyClick,\n\ttopHovered,\n\ttopParty,\n\ttopText,\n\ttopWon,\n\tmatchHighlighted,\n\thideSeriesScore,\n\tisQualifierColumn,\n}: MatchComponentProps) {\n\tconst hasWinner = topWon || bottomWon;\n\tconst winnerParty = !hasWinner\n\t\t? {\n\t\t\t\tid: undefined,\n\t\t\t\tcorrectParticipant: false,\n\t\t\t\tcorrectPlacement: false,\n\t\t\t\tlogoUrl: null,\n\t\t\t\tname: \"TBD\",\n\t\t\t\tresultText: \"\",\n\t\t }\n\t\t: topWon\n\t\t? topParty\n\t\t: bottomParty;\n\tconst loserParty = !hasWinner\n\t\t? {\n\t\t\t\tid: undefined,\n\t\t\t\tcorrectParticipant: false,\n\t\t\t\tcorrectPlacement: false,\n\t\t\t\tlogoUrl: null,\n\t\t\t\tname: \"TBD\",\n\t\t\t\tresultText: \"\",\n\t\t }\n\t\t: topWon\n\t\t? bottomParty\n\t\t: topParty;\n\n\tconst winnerHovered =\n\t\thasWinner &&\n\t\t((topHovered && winnerParty.id === topParty.id) ||\n\t\t\t(bottomHovered && winnerParty.id === bottomParty.id));\n\n\tconst loserHovered =\n\t\thasWinner &&\n\t\t((topParty && loserParty.id === topParty.id) ||\n\t\t\t(bottomHovered && loserParty.id === bottomParty.id));\n\n\treturn (\n\t\t\n\t\t\t{/*
\n\t\t\t\t{topText}\n\t\t\t\t{typeof onMatchClick === \"function\" && (\n\t\t\t\t\t {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\tonMatchClick({ match, topWon, bottomWon });\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tMatch Details\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t
*/}\n\t\t\t\n\t\t\t\t{isQualifierColumn && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t onMouseEnter(winnerParty?.id)}\n\t\t\t\t\t\t\tonMouseLeave={onMouseLeave}\n\t\t\t\t\t\t\twon={winnerParty?.id !== undefined}\n\t\t\t\t\t\t\thovered={winnerHovered}\n\t\t\t\t\t\t\tcorrectParticipant={winnerParty?.correctParticipant}\n\t\t\t\t\t\t\tcorrectPlacement={winnerParty.correctPlacement}\n\t\t\t\t\t\t\thighlighted={matchHighlighted}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{winnerParty?.logoUrl && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{winnerParty?.name}\n\t\t\t\t\t\t\t{!hideSeriesScore && (\n\t\t\t\t\t\t\t\t{winnerParty?.resultText}\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t{match.bothTeamsAdvance && (\n\t\t\t\t\t\t\t onMouseEnter(loserParty?.id)}\n\t\t\t\t\t\t\t\tonMouseLeave={onMouseLeave}\n\t\t\t\t\t\t\t\twon={loserParty?.id !== undefined}\n\t\t\t\t\t\t\t\thovered={loserHovered}\n\t\t\t\t\t\t\t\tcorrectParticipant={loserParty?.correctParticipant}\n\t\t\t\t\t\t\t\tcorrectPlacement={loserParty.correctPlacement}\n\t\t\t\t\t\t\t\thighlighted={matchHighlighted}\n\t\t\t\t\t\t\t\tloserQualifies={true}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{loserParty?.logoUrl && (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{loserParty?.name}\n\t\t\t\t\t\t\t\t{!hideSeriesScore && (\n\t\t\t\t\t\t\t\t\t{loserParty?.resultText}\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{!isQualifierColumn && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t onMouseEnter(topParty?.id)}\n\t\t\t\t\t\t\tonMouseLeave={onMouseLeave}\n\t\t\t\t\t\t\twon={topWon}\n\t\t\t\t\t\t\thovered={topHovered}\n\t\t\t\t\t\t\tcorrectParticipant={topParty?.correctParticipant}\n\t\t\t\t\t\t\tcorrectPlacement={topParty.correctPlacement}\n\t\t\t\t\t\t\thighlighted={matchHighlighted}\n\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\tif (onPartyClick) {\n\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\tonPartyClick(e, match, true, topParty, topWon);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{topParty?.logoUrl && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{topParty?.name}\n\t\t\t\t\t\t\t{!hideSeriesScore && (\n\t\t\t\t\t\t\t\t{topParty?.resultText}\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t onMouseEnter(bottomParty?.id)}\n\t\t\t\t\t\t\tonMouseLeave={onMouseLeave}\n\t\t\t\t\t\t\twon={bottomWon}\n\t\t\t\t\t\t\thovered={bottomHovered}\n\t\t\t\t\t\t\tcorrectParticipant={bottomParty?.correctParticipant}\n\t\t\t\t\t\t\tcorrectPlacement={bottomParty?.correctPlacement}\n\t\t\t\t\t\t\thighlighted={matchHighlighted}\n\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\tif (onPartyClick) {\n\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\tonPartyClick(e, match, false, bottomParty, bottomWon);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{bottomParty?.logoUrl && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{bottomParty?.name}\n\t\t\t\t\t\t\t{!hideSeriesScore && (\n\t\t\t\t\t\t\t\t{bottomParty?.resultText}\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\t{/* {bottomText ?? \" \"} */}\n\t\t
\n\t);\n}\n\nexport default Match;\n","import * as React from \"react\";\nimport { useState } from \"react\";\nimport KeyboardArrowDownIcon from \"@material-ui/icons/KeyboardArrowDown\";\nimport KeyboardArrowUpIcon from \"@material-ui/icons/KeyboardArrowUp\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { takeUntil, Subject } from \"rxjs\";\nimport { Colors } from \"styles/Colors\";\n\nconst useStyles = makeStyles((theme) => {\n\treturn {\n\t\tdefaultClass: {\n\t\t\tdisplay: \"flex\",\n\t\t\tflexDirection: \"column\",\n\t\t\ttransition: \"background-color 1s\",\n\t\t\tborderRadius: theme.shape.borderRadius,\n\t\t},\n\t\tdefaultHeader: {\n\t\t\tmargin: 8,\n\t\t\tmarginTop: 16,\n\t\t\tcursor: \"pointer\",\n\t\t\tdisplay: \"flex\",\n\t\t\tjustifyContent: \"space-between\",\n\t\t\talignItems: \"center\",\n\t\t},\n\t\texactMatch: {\n\t\t\ttransition: \"background-color 0s\",\n\t\t\tbackgroundColor: Colors.body,\n\t\t},\n\t};\n});\n\nexport default function Collapse({\n\tstartOpen,\n\tchildren,\n\theaderElement,\n\theaderClassName,\n\tclassName,\n\tchildClassName,\n\tfocusObservable,\n\tid,\n}) {\n\tconst classNames = useStyles();\n\tconst [open, setOpen] = useState(startOpen);\n\tconst [exactMatch, setExactMatch] = useState(false);\n\n\tconst onClick = () => {\n\t\tsetOpen(!open);\n\t};\n\n\tReact.useEffect(() => {\n\t\tif (focusObservable) {\n\t\t\tconst destroy = new Subject();\n\t\t\tfocusObservable.pipe(takeUntil(destroy)).subscribe((focusedId) => {\n\t\t\t\tsetOpen(focusedId.startsWith(id));\n\t\t\t\tsetExactMatch(focusedId === id);\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tsetExactMatch(false);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn () => {\n\t\t\t\tdestroy.next();\n\t\t\t};\n\t\t}\n\t});\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{headerElement}\n\t\t\t\t{open && (\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{!open && (\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n","import {\n\tEventFormatScoringBreakdownGroup,\n\tEventFormatScoringBreakdownRecord,\n} from \"common/helpers/eventFormatHelper\";\nimport * as React from \"react\";\nimport \"./ScorePillDetails.scss\";\n\n/**\n * @typedef ScorePillDetailsProps\n * @type {object}\n * @property {EventFormatScoringBreakdownGroup[]} groups\n */\n\n/**\n * @param {ScorePillDetailsProps} props\n * @param {any} bracketScore\n */\nexport default function ScorePillDetails({ groups, bracketScore }) {\n\tbracketScore = bracketScore ?? {};\n\tconst scoreBreakdown = bracketScore?.data\n\t\t? JSON.parse(bracketScore?.data)\n\t\t: [];\n\n\tlet league = \"\";\n\tlet summaryClass = \"\";\n\tconst rank = bracketScore?.rank ?? 1;\n\tconst percent = bracketScore?.percentile ?? 100;\n\tconst totalScore = bracketScore?.totalScore ?? 0;\n\tif (rank <= 1) {\n\t\tsummaryClass = \"diamond\";\n\t\tleague = \"diamond\";\n\t} else if (rank <= 10) {\n\t\tsummaryClass = \"platinum\";\n\t\tleague = \"platinum\";\n\t} else if (percent <= 10) {\n\t\tsummaryClass = \"gold\";\n\t\tleague = \"gold\";\n\t} else if (percent <= 30) {\n\t\tsummaryClass = \"silver\";\n\t\tleague = \"silver\";\n\t} else if (percent <= 50) {\n\t\tsummaryClass = \"bronze\";\n\t\tleague = \"bronze\";\n\t} else {\n\t\tsummaryClass = \"wood\";\n\t\tleague = \"wood\";\n\t}\n\n\t/**\n\t *\n\t * @param {EventFormatScoringBreakdownRecord} r\n\t * @param {number} i\n\t * @returns\n\t */\n\tconst row = (r, i, index) => {\n\t\tconst scoreRecord = scoreBreakdown?.find(\n\t\t\t(s) =>\n\t\t\t\ts.Name === r.name &&\n\t\t\t\t(s.StageIndex === undefined || s.StageIndex === index)\n\t\t);\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{`(+${r.pointsPer} per correct pick)`}\n\t\t\t\t\n\t\t\t\t{(scoreRecord ? scoreRecord.Score : 0) ?? 0}\n\t\t\t\n\t\t);\n\t};\n\n\t/**\n\t *\n\t * @param {EventFormatScoringBreakdownGroup} scoreGroup\n\t * @param {number} index\n\t * @returns\n\t */\n\tconst table = (scoreGroup, index) => {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{scoreGroup.records.map((r, i) => {\n\t\t\t\t\t\treturn row(r, i, index);\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
{scoreGroup.name}
\n\t\t);\n\t};\n\n\tconst tables = groups.map((group, i) => {\n\t\treturn table(group, i);\n\t});\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t{tables}\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n","import * as React from \"react\";\nimport CustomModal from \"../../CustomModal/CustomModal\";\nimport { ModalPanelTransparent } from \"../../CustomModal/Modal/ModalFrame\";\nimport ScorePillDetails from \"../../ScorePillDetails/ScorePillDetails\";\n\nexport default function ScorePillModal(props) {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n","export const MODE_IDLE = 'idle';\nexport const MODE_PANNING = 'panning';\nexport const MODE_ZOOMING = 'zooming';\n\nexport const TOOL_AUTO = 'auto';\nexport const TOOL_NONE = 'none';\nexport const TOOL_PAN = 'pan';\nexport const TOOL_ZOOM_IN = 'zoom-in';\nexport const TOOL_ZOOM_OUT = 'zoom-out';\n\nexport const POSITION_NONE = 'none';\nexport const POSITION_TOP = 'top';\nexport const POSITION_RIGHT = 'right';\nexport const POSITION_BOTTOM = 'bottom';\nexport const POSITION_LEFT = 'left';\n\nexport const ACTION_ZOOM = 'zoom';\nexport const ACTION_PAN = 'pan';\n\nexport const ALIGN_CENTER = 'center';\nexport const ALIGN_LEFT = 'left';\nexport const ALIGN_RIGHT = 'right';\nexport const ALIGN_TOP = 'top';\nexport const ALIGN_BOTTOM = 'bottom';\nexport const ALIGN_COVER = 'cover';\n\nexport const INITIAL_VALUE = {}\n","import {MODE_IDLE} from '../constants';\nimport {applyToPoint, fromObject, identity, inverse, scale, transform, translate} from 'transformation-matrix';\n\nconst VERSION = 3\nexport const DEFAULT_MODE = MODE_IDLE\n\n/**\n * Obtain default value\n * @returns {Object}\n */\nexport function getDefaultValue(viewerWidth, viewerHeight, SVGMinX, SVGMinY, SVGWidth, SVGHeight, scaleFactorMin = null, scaleFactorMax = null) {\n return set({}, {\n ...identity(),\n version: VERSION,\n mode: DEFAULT_MODE,\n focus: false,\n pinchPointDistance: null,\n prePinchMode: null,\n viewerWidth,\n viewerHeight,\n SVGMinX,\n SVGMinY,\n SVGWidth,\n SVGHeight,\n scaleFactorMin,\n scaleFactorMax,\n startX: null,\n startY: null,\n endX: null,\n endY: null,\n miniatureOpen: true,\n lastAction: null,\n });\n}\n\n/**\n * Change value\n * @param value\n * @param patch\n * @param action\n * @returns {Object}\n */\nexport function set(value, patch, action = null) {\n value = Object.assign({}, value, patch, {lastAction: action});\n return Object.freeze(value);\n}\n\n/**\n * value valid check\n * @param value\n */\nexport function isValueValid(value) {\n return value !== null\n && typeof value === 'object'\n && value.hasOwnProperty('version')\n && value.version === VERSION;\n}\n\n/**\n * Export x,y coords relative to SVG\n * @param value\n * @param viewerX\n * @param viewerY\n * @returns {*|{x, y}|{x: number, y: number}}\n */\nexport function getSVGPoint(value, viewerX, viewerY) {\n let matrix = fromObject(value);\n\n let inverseMatrix = inverse(matrix);\n return applyToPoint(inverseMatrix, {x: viewerX, y: viewerY});\n}\n\n/**\n * Decompose matrix from value\n * @param value\n * @returns {{scaleFactor: number, translationX: number, translationY: number}}\n */\nexport function decompose(value) {\n let matrix = fromObject(value);\n\n return {\n scaleFactor: matrix.a,\n translationX: matrix.e,\n translationY: matrix.f\n }\n}\n\n/**\n *\n * @param value\n * @param focus\n * @returns {Object}\n */\nexport function setFocus(value, focus) {\n return set(value, {focus});\n}\n\n\n/**\n *\n * @param value\n * @param viewerWidth\n * @param viewerHeight\n * @returns {Object}\n */\nexport function setViewerSize(value, viewerWidth, viewerHeight) {\n return set(value, {viewerWidth, viewerHeight});\n}\n\n/**\n *\n * @param value\n * @param SVGMinX\n * @param SVGMinY\n * @param SVGWidth\n * @param SVGHeight\n * @returns {Object}\n */\nexport function setSVGViewBox(value, SVGMinX, SVGMinY, SVGWidth, SVGHeight) {\n return set(value, {SVGMinX, SVGMinY, SVGWidth, SVGHeight});\n}\n\n/**\n *\n * @param value\n * @param scaleFactorMin\n * @param scaleFactorMax\n * @returns {Object}\n */\n//TODO rename to setZoomLimits\nexport function setZoomLevels(value, scaleFactorMin, scaleFactorMax) {\n return set(value, {scaleFactorMin, scaleFactorMax});\n}\n\n/**\n *\n * @param value\n * @param SVGPointX\n * @param SVGPointY\n * @param zoomLevel\n * @returns {Object}\n */\nexport function setPointOnViewerCenter(value, SVGPointX, SVGPointY, zoomLevel) {\n let {viewerWidth, viewerHeight} = value;\n\n let matrix = transform(\n translate(-SVGPointX + viewerWidth / 2, -SVGPointY + viewerHeight / 2), //4\n translate(SVGPointX, SVGPointY), //3\n scale(zoomLevel, zoomLevel), //2\n translate(-SVGPointX, -SVGPointY) //1\n );\n\n return set(value, {\n mode: MODE_IDLE,\n ...matrix,\n });\n}\n\n/**\n *\n * @param value\n * @returns {Object}\n */\nexport function reset(value) {\n return set(value, {\n mode: MODE_IDLE,\n ...identity()\n });\n}\n\n/**\n *\n * @param value\n * @returns {Object}\n */\nexport function resetMode(value) {\n return set(value, {\n mode: DEFAULT_MODE,\n startX: null,\n startY: null,\n endX: null,\n endY: null\n })\n}\n","import {decompose} from '../features/common'\n\nexport default class ViewerEvent {\n constructor(originalEvent, value, SVGViewer) {\n this.originalEvent = originalEvent;\n this.value = value;\n this.SVGViewer = SVGViewer;\n }\n\n get scaleFactor() {\n this._cacheDecomposedValue = this._cacheDecomposedValue || decompose(this.value);\n return this._cacheDecomposedValue.scaleFactor;\n }\n\n get translationX() {\n this._cacheDecomposedValue = this._cacheDecomposedValue || decompose(this.value);\n return this._cacheDecomposedValue.translationX;\n }\n\n get translationY() {\n this._cacheDecomposedValue = this._cacheDecomposedValue || decompose(this.value);\n return this._cacheDecomposedValue.translationY;\n }\n\n preventDefault(){\n this.originalEvent.preventDefault();\n }\n\n stopPropagation(){\n this.originalEvent.stopPropagation();\n }\n}\n","import {ACTION_PAN, MODE_IDLE, MODE_PANNING} from '../constants';\nimport {set, getSVGPoint} from './common';\nimport {fromObject, translate, transform, applyToPoints} from 'transformation-matrix';\n\n/**\n * Atomic pan operation\n * @param value\n * @param SVGDeltaX drag movement\n * @param SVGDeltaY drag movement\n * @param panLimit forces the image to keep at least x pixel inside the viewer\n * @returns {Object}\n */\nexport function pan(value, SVGDeltaX, SVGDeltaY, panLimit = undefined) {\n\n let matrix = transform(\n fromObject(value), //2\n translate(SVGDeltaX, SVGDeltaY) //1\n );\n\n // apply pan limits\n if (panLimit) {\n let [{x: x1, y: y1}, {x: x2, y: y2}] = applyToPoints(matrix, [\n {x: value.SVGMinX + panLimit, y: value.SVGMinY + panLimit},\n {x: value.SVGMinX + value.SVGWidth - panLimit, y: value.SVGMinY + value.SVGHeight - panLimit}\n ]);\n\n //x limit\n let moveX = 0;\n if (value.viewerWidth - x1 < 0)\n moveX = value.viewerWidth - x1;\n else if (x2 < 0) moveX = -x2;\n\n\n //y limit\n let moveY = 0;\n if (value.viewerHeight - y1 < 0)\n moveY = value.viewerHeight - y1;\n else if (y2 < 0) moveY = -y2;\n\n //apply limits\n matrix = transform(\n translate(moveX, moveY),\n matrix\n )\n }\n\n return set(value, {\n mode: MODE_IDLE,\n ...matrix,\n }, ACTION_PAN);\n}\n\n/**\n * Start pan operation lifecycle\n * @param value\n * @param viewerX\n * @param viewerY\n * @return {ReadonlyArray}\n */\nexport function startPanning(value, viewerX, viewerY) {\n return set(value, {\n mode: MODE_PANNING,\n startX: viewerX,\n startY: viewerY,\n endX: viewerX,\n endY: viewerY\n }, ACTION_PAN);\n}\n\n/**\n * Continue pan operation lifecycle\n * @param value\n * @param viewerX\n * @param viewerY\n * @param panLimit\n * @return {ReadonlyArray}\n */\nexport function updatePanning(value, viewerX, viewerY, panLimit) {\n if (value.mode !== MODE_PANNING) throw new Error('update pan not allowed in this mode ' + value.mode);\n\n let {endX, endY} = value;\n\n let start = getSVGPoint(value, endX, endY);\n let end = getSVGPoint(value, viewerX, viewerY);\n\n let deltaX = end.x - start.x;\n let deltaY = end.y - start.y;\n\n let nextValue = pan(value, deltaX, deltaY, panLimit);\n return set(nextValue, {\n mode: MODE_PANNING,\n endX: viewerX,\n endY: viewerY,\n }, ACTION_PAN);\n}\n\n/**\n * Stop pan operation lifecycle\n * @param value\n * @return {ReadonlyArray}\n */\nexport function stopPanning(value) {\n return set(value, {\n mode: MODE_IDLE,\n startX: null,\n startY: null,\n endX: null,\n endY: null\n }, ACTION_PAN\n );\n}\n\n/**\n * when pointer is on viewer edge -> pan image\n * @param value\n * @param viewerX\n * @param viewerY\n * @return {ReadonlyArray}\n */\nexport function autoPanIfNeeded(value, viewerX, viewerY) {\n let deltaX = 0;\n let deltaY = 0;\n\n if (viewerY <= 20) deltaY = 2;\n if (value.viewerWidth - viewerX <= 20) deltaX = -2;\n if (value.viewerHeight - viewerY <= 20) deltaY = -2;\n if (viewerX <= 20) deltaX = 2;\n\n deltaX = deltaX / value.d;\n deltaY = deltaY / value.d;\n\n return (deltaX === 0 && deltaY === 0) ? value : pan(value, deltaX, deltaY);\n}\n","export default function calculateBox(start, end) {\n if (start.x <= end.x && start.y <= end.y) {\n return {\n x: start.x,\n y: start.y,\n width: end.x - start.x,\n height: end.y - start.y\n };\n } else if (start.x >= end.x && start.y <= end.y) {\n return {\n x: end.x,\n y: start.y,\n width: start.x - end.x,\n height: end.y - start.y\n };\n } else if (start.x >= end.x && start.y >= end.y) {\n return {\n x: end.x,\n y: end.y,\n width: start.x - end.x,\n height: start.y - end.y\n };\n } else if (start.x <= end.x && start.y >= end.y) {\n return {\n x: start.x,\n y: end.y,\n width: end.x - start.x,\n height: start.y - end.y\n };\n }\n}\n\n","import {fromObject, scale, transform, translate} from 'transformation-matrix';\n\nimport {\n ACTION_ZOOM, MODE_IDLE, MODE_ZOOMING,\n ALIGN_CENTER, ALIGN_LEFT, ALIGN_RIGHT, ALIGN_TOP, ALIGN_BOTTOM, ALIGN_COVER\n} from '../constants';\nimport {decompose, getSVGPoint, set} from './common';\nimport calculateBox from '../utils/calculateBox';\n\nexport function isZoomLevelGoingOutOfBounds(value, scaleFactor) {\n const {scaleFactor: curScaleFactor} = decompose(value)\n const lessThanScaleFactorMin = value.scaleFactorMin && (curScaleFactor * scaleFactor) < value.scaleFactorMin;\n const moreThanScaleFactorMax = value.scaleFactorMax && (curScaleFactor * scaleFactor) > value.scaleFactorMax;\n\n return (lessThanScaleFactorMin && scaleFactor < 1) || (moreThanScaleFactorMax && scaleFactor > 1);\n}\n\nexport function limitZoomLevel(value, matrix) {\n let scaleLevel = matrix.a;\n\n if(value.scaleFactorMin != null) {\n // limit minimum zoom\n scaleLevel = Math.max(scaleLevel, value.scaleFactorMin);\n }\n\n if(value.scaleFactorMax != null) {\n // limit maximum zoom\n scaleLevel = Math.min(scaleLevel, value.scaleFactorMax);\n }\n\n return set(matrix, {\n a: scaleLevel,\n d: scaleLevel\n });\n}\n\nexport function zoom(value, SVGPointX, SVGPointY, scaleFactor) {\n if (isZoomLevelGoingOutOfBounds(value, scaleFactor)) {\n // Do not change translation and scale of value\n return value;\n }\n\n const matrix = transform(\n fromObject(value),\n translate(SVGPointX, SVGPointY),\n scale(scaleFactor, scaleFactor),\n translate(-SVGPointX, -SVGPointY)\n );\n\n return set(value, {\n mode: MODE_IDLE,\n ...matrix,\n startX: null,\n startY: null,\n endX: null,\n endY: null\n }, ACTION_ZOOM);\n}\n\n//ENHANCEMENT: add ability to control alignment\n//ENHANCEMENT: add ability to selectively fit image inside viewer\n//ENHANCEMENT: refactor some logic in order to merge with fitToViewer function\nexport function fitSelection(value, selectionSVGPointX, selectionSVGPointY, selectionWidth, selectionHeight) {\n let {viewerWidth, viewerHeight} = value;\n\n let scaleX = viewerWidth / selectionWidth;\n let scaleY = viewerHeight / selectionHeight;\n\n let scaleLevel = Math.min(scaleX, scaleY);\n\n const matrix = transform(\n scale(scaleLevel, scaleLevel), //2\n translate(-selectionSVGPointX, -selectionSVGPointY) //1\n );\n\n if(isZoomLevelGoingOutOfBounds(value, scaleLevel / value.d)) {\n // Do not allow scale and translation\n return set(value, {\n mode: MODE_IDLE,\n startX: null,\n startY: null,\n endX: null,\n endY: null\n });\n }\n\n return set(value, {\n mode: MODE_IDLE,\n ...limitZoomLevel(value, matrix),\n startX: null,\n startY: null,\n endX: null,\n endY: null\n }, ACTION_ZOOM);\n}\n\nexport function fitToViewer(value, SVGAlignX=ALIGN_LEFT, SVGAlignY=ALIGN_TOP) {\n let {viewerWidth, viewerHeight, SVGMinX, SVGMinY, SVGWidth, SVGHeight} = value;\n\n let scaleX = viewerWidth / SVGWidth;\n let scaleY = viewerHeight / SVGHeight;\n let scaleLevel = Math.min(scaleX, scaleY);\n\n let scaleMatrix = scale(scaleLevel, scaleLevel);\n\n let translateX = -SVGMinX * scaleX;\n let translateY = -SVGMinY * scaleY;\n\n // after fitting, SVG and the viewer will match in width (1) or in height (2) or SVG will cover the container with preserving aspect ratio (0)\n if (scaleX < scaleY) {\n let remainderY = viewerHeight - scaleX * SVGHeight;\n\n //(1) match in width, meaning scaled SVGHeight <= viewerHeight\n switch(SVGAlignY) {\n case ALIGN_TOP:\n translateY = -SVGMinY * scaleLevel;\n break;\n\n case ALIGN_CENTER:\n translateY = Math.round(remainderY / 2) - SVGMinY * scaleLevel;\n break;\n\n case ALIGN_BOTTOM:\n translateY = remainderY - SVGMinY * scaleLevel;\n break;\n\n case ALIGN_COVER:\n scaleMatrix = scale(scaleY, scaleY); // (0) we must now match to short edge, in this case - height\n let remainderX = viewerWidth - scaleY * SVGWidth; // calculate remainder in the other scale\n\n translateX = SVGMinX + Math.round(remainderX / 2); // center by the long edge\n break;\n\n default:\n //no op\n }\n } else {\n let remainderX = viewerWidth - scaleY * SVGWidth;\n\n //(2) match in height, meaning scaled SVGWidth <= viewerWidth\n switch(SVGAlignX) {\n case ALIGN_LEFT:\n translateX = -SVGMinX * scaleLevel;\n break;\n\n case ALIGN_CENTER:\n translateX = Math.round(remainderX / 2) - SVGMinX * scaleLevel;\n break;\n\n case ALIGN_RIGHT:\n translateX = remainderX - SVGMinX * scaleLevel;\n break;\n\n case ALIGN_COVER:\n scaleMatrix = scale(scaleX, scaleX); // (0) we must now match to short edge, in this case - width\n let remainderY = viewerHeight - scaleX * SVGHeight; // calculate remainder in the other scale\n\n translateY = SVGMinY + Math.round(remainderY / 2); // center by the long edge\n break;\n\n default:\n //no op\n }\n }\n\n const translationMatrix = translate(translateX, translateY);\n\n const matrix = transform(\n translationMatrix, //2\n scaleMatrix //1\n );\n\n if (isZoomLevelGoingOutOfBounds(value, scaleLevel / value.d)) {\n // Do not allow scale and translation\n return set(value, {\n mode: MODE_IDLE,\n startX: null,\n startY: null,\n endX: null,\n endY: null\n });\n }\n\n return set(value, {\n mode: MODE_IDLE,\n ...limitZoomLevel(value, matrix),\n startX: null,\n startY: null,\n endX: null,\n endY: null\n }, ACTION_ZOOM);\n}\n\nexport function zoomOnViewerCenter(value, scaleFactor) {\n let {viewerWidth, viewerHeight} = value;\n let SVGPoint = getSVGPoint(value, viewerWidth / 2, viewerHeight / 2);\n return zoom(value, SVGPoint.x, SVGPoint.y, scaleFactor);\n}\n\nexport function startZooming(value, viewerX, viewerY) {\n return set(value, {\n mode: MODE_ZOOMING,\n startX: viewerX,\n startY: viewerY,\n endX: viewerX,\n endY: viewerY\n });\n}\n\nexport function updateZooming(value, viewerX, viewerY) {\n if (value.mode !== MODE_ZOOMING) throw new Error('update selection not allowed in this mode ' + value.mode);\n\n return set(value, {\n endX: viewerX,\n endY: viewerY\n });\n}\n\nexport function stopZooming(value, viewerX, viewerY, scaleFactor) {\n const TOLERATED_DISTANCE = 7 //minimum distance to choose if area selection or drill down on point\n let {startX, startY} = value;\n\n let start = getSVGPoint(value, startX, startY);\n let end = getSVGPoint(value, viewerX, viewerY);\n\n if (Math.abs(startX - viewerX) > TOLERATED_DISTANCE && Math.abs(startY - viewerY) > TOLERATED_DISTANCE) {\n let box = calculateBox(start, end);\n return fitSelection(value, box.x, box.y, box.width, box.height);\n } else {\n let SVGPoint = getSVGPoint(value, viewerX, viewerY);\n return zoom(value, SVGPoint.x, SVGPoint.y, scaleFactor);\n }\n}\n","/**\n * Convert (re-map) an input value range into a destination range.\n * @param value\n * @param sourceStart\n * @param sourceEnd\n * @param targetStart\n * @param targetEnd\n * @return number\n */\n\nexport default function mapRange(value, sourceStart, sourceEnd, targetStart, targetEnd) {\n return targetStart + (targetEnd - targetStart) * (value - sourceStart) / (sourceEnd - sourceStart);\n}\n","import {\n\tMODE_PANNING,\n\tMODE_ZOOMING,\n\tTOOL_AUTO,\n\tTOOL_NONE,\n\tTOOL_PAN,\n\tTOOL_ZOOM_IN,\n\tTOOL_ZOOM_OUT,\n} from \"../constants\";\nimport { getSVGPoint, setFocus } from \"./common\";\nimport {\n\tautoPanIfNeeded,\n\tstartPanning,\n\tstopPanning,\n\tupdatePanning,\n} from \"./pan\";\nimport { startZooming, stopZooming, updateZooming, zoom } from \"./zoom\";\nimport mapRange from \"../utils/mapRange\";\n\nexport function getMousePosition(event, ViewerDOM) {\n\tlet { left, top } = ViewerDOM.getBoundingClientRect();\n\tlet x = event.clientX - Math.round(left);\n\tlet y = event.clientY - Math.round(top);\n\treturn { x, y };\n}\n\nexport function onMouseDown(\n\tevent,\n\tViewerDOM,\n\ttool,\n\tvalue,\n\tprops,\n\tcoords = null\n) {\n\tconst { x, y } = coords || getMousePosition(event, ViewerDOM);\n\n\tlet nextValue = value;\n\n\tswitch (tool) {\n\t\tcase TOOL_ZOOM_OUT:\n\t\t\tlet SVGPoint = getSVGPoint(value, x, y);\n\t\t\tnextValue = zoom(\n\t\t\t\tvalue,\n\t\t\t\tSVGPoint.x,\n\t\t\t\tSVGPoint.y,\n\t\t\t\t1 / props.scaleFactor,\n\t\t\t\tprops\n\t\t\t);\n\t\t\tbreak;\n\n\t\tcase TOOL_ZOOM_IN:\n\t\t\tnextValue = startZooming(value, x, y);\n\t\t\tbreak;\n\n\t\tcase TOOL_AUTO:\n\t\tcase TOOL_PAN:\n\t\t\tnextValue = startPanning(value, x, y);\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\treturn value;\n\t}\n\n\t//event.preventDefault();\n\treturn nextValue;\n}\n\nexport function onMouseMove(\n\tevent,\n\tViewerDOM,\n\ttool,\n\tvalue,\n\tprops,\n\tcoords = null\n) {\n\tconst { x, y } = coords || getMousePosition(event, ViewerDOM);\n\n\tlet forceExit = event.buttons === 0; //the mouse exited and reentered into svg\n\tlet nextValue = value;\n\n\tswitch (tool) {\n\t\tcase TOOL_ZOOM_IN:\n\t\t\tif (value.mode === MODE_ZOOMING)\n\t\t\t\tnextValue = forceExit\n\t\t\t\t\t? stopZooming(value, x, y, props.scaleFactor, props)\n\t\t\t\t\t: updateZooming(value, x, y);\n\t\t\tbreak;\n\n\t\tcase TOOL_AUTO:\n\t\tcase TOOL_PAN:\n\t\t\tif (value.mode === MODE_PANNING)\n\t\t\t\tnextValue = forceExit\n\t\t\t\t\t? stopPanning(value)\n\t\t\t\t\t: updatePanning(\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tx,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t\tprops.preventPanOutside ? 20 : undefined\n\t\t\t\t\t );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\treturn value;\n\t}\n\n\t//event.preventDefault();\n\treturn nextValue;\n}\n\nexport function onMouseUp(event, ViewerDOM, tool, value, props, coords = null) {\n\tconst { x, y } = coords || getMousePosition(event, ViewerDOM);\n\n\tlet nextValue = value;\n\n\tswitch (tool) {\n\t\tcase TOOL_ZOOM_OUT:\n\t\t\tif (value.mode === MODE_ZOOMING)\n\t\t\t\tnextValue = stopZooming(value, x, y, 1 / props.scaleFactor, props);\n\t\t\tbreak;\n\n\t\tcase TOOL_ZOOM_IN:\n\t\t\tif (value.mode === MODE_ZOOMING)\n\t\t\t\tnextValue = stopZooming(value, x, y, props.scaleFactor, props);\n\t\t\tbreak;\n\n\t\tcase TOOL_AUTO:\n\t\tcase TOOL_PAN:\n\t\t\tif (value.mode === MODE_PANNING) nextValue = stopPanning(value);\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\treturn value;\n\t}\n\n\t//event.preventDefault();\n\treturn nextValue;\n}\n\nexport function onDoubleClick(\n\tevent,\n\tViewerDOM,\n\ttool,\n\tvalue,\n\tprops,\n\tcoords = null\n) {\n\tconst { x, y } = coords || getMousePosition(event, ViewerDOM);\n\n\tlet nextValue = value;\n\n\tif (tool === TOOL_AUTO && !props.disableDoubleClickZoomWithToolAuto) {\n\t\tconst { modifierKeys = [] } = props;\n\t\tlet SVGPoint = getSVGPoint(value, x, y);\n\t\tlet modifierKeysReducer = (current, modifierKey) =>\n\t\t\tcurrent || event.getModifierState(modifierKey);\n\t\tlet modifierKeyActive = modifierKeys.reduce(modifierKeysReducer, false);\n\t\tlet scaleFactor = modifierKeyActive\n\t\t\t? 1 / props.scaleFactor\n\t\t\t: props.scaleFactor;\n\t\tnextValue = zoom(value, SVGPoint.x, SVGPoint.y, scaleFactor, props);\n\t}\n\n\t//event.preventDefault();\n\treturn nextValue;\n}\n\nexport function onWheel(event, ViewerDOM, tool, value, props, coords = null) {\n\tconst { x, y } = coords || getMousePosition(event, ViewerDOM);\n\n\tif (!props.detectWheel) return value;\n\n\tlet delta = Math.max(-1, Math.min(1, event.deltaY));\n\tlet scaleFactor = mapRange(\n\t\tdelta,\n\t\t-1,\n\t\t1,\n\t\tprops.scaleFactorOnWheel,\n\t\t1 / props.scaleFactorOnWheel\n\t);\n\n\tlet SVGPoint = getSVGPoint(value, x, y);\n\tlet nextValue = zoom(value, SVGPoint.x, SVGPoint.y, scaleFactor, props);\n\n\t//event.preventDefault();\n\treturn nextValue;\n}\n\nexport function onMouseEnterOrLeave(\n\tevent,\n\tViewerDOM,\n\ttool,\n\tvalue,\n\tprops,\n\tcoords = null\n) {\n\tlet nextValue = setFocus(value, event.type === \"mouseenter\");\n\n\t//event.preventDefault();\n\treturn nextValue;\n}\n\nexport function onInterval(\n\tevent,\n\tViewerDOM,\n\ttool,\n\tvalue,\n\tprops,\n\tcoords = null\n) {\n\tlet { x, y } = coords;\n\n\tif (!([TOOL_NONE, TOOL_AUTO].indexOf(tool) >= 0)) return value;\n\tif (!props.detectAutoPan) return value;\n\tif (!value.focus) return value;\n\n\treturn autoPanIfNeeded(value, x, y);\n}\n","import ViewerEvent from './viewer-event';\nimport {getMousePosition} from \"../features/interactions\";\nimport {getSVGPoint} from \"../features/common\";\n\nexport default class ViewerMouseEvent extends ViewerEvent {\n get point() {\n if (!this._cachePoint) {\n const {originalEvent: event, SVGViewer, value} = this;\n const mousePosition = getMousePosition(event, SVGViewer)\n this._cachePoint = getSVGPoint(value, mousePosition.x, mousePosition.y);\n }\n return this._cachePoint;\n }\n\n get x() {\n return this.point.x;\n }\n\n get y() {\n return this.point.y;\n }\n}\n","import {getSVGPoint} from '../features/common'\nimport ViewerEvent from './viewer-event';\n\nexport default class ViewerTouchEvent extends ViewerEvent {\n get points() {\n if (!this._cachePoints)\n this._cachePoints = ViewerTouchEvent.touchesToPoints(this.originalEvent.touches, this.SVGViewer, this.value);\n\n return this._cachePoints;\n }\n\n get changedPoints() {\n if (!this._cacheChangedPoints)\n this._cacheChangedPoints = ViewerTouchEvent.touchesToPoints(this.originalEvent.changedTouches, this.SVGViewer, this.value);\n\n return this._cacheChangedPoints;\n }\n\n static touchesToPoints(touches, SVGViewer, value) {\n let points = [];\n for (let i = 0; i < touches.length; i++) {\n let touch = touches[i];\n\n let rect = SVGViewer.getBoundingClientRect();\n let x = touch.clientX - Math.round(rect.left);\n let y = touch.clientY - Math.round(rect.top);\n\n let point = getSVGPoint(value, x, y);\n\n points.push({...point, identifier: touch.identifier});\n }\n return points;\n }\n}\n","export default function parseViewBox(viewBoxString) {\n // viewBox specs: https://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute\n return viewBoxString\n .split(/[ ,]/) // split optional comma\n .filter(Boolean) // remove empty strings\n .map(Number); // cast to Number\n}\n","import { transform, fromObject, translate, scale } from \"transformation-matrix\";\nimport {\n\tTOOL_PAN,\n\tTOOL_AUTO,\n\tTOOL_ZOOM_IN,\n\tTOOL_ZOOM_OUT,\n\tMODE_IDLE,\n\tMODE_PANNING,\n\tMODE_ZOOMING,\n} from \"../constants\";\nimport { resetMode, getSVGPoint, set } from \"./common\";\nimport { onMouseDown, onMouseMove, onMouseUp } from \"./interactions\";\nimport { isZoomLevelGoingOutOfBounds, limitZoomLevel } from \"./zoom\";\n\nfunction getTouchPosition(touch, ViewerDOM) {\n\tlet { left, top } = ViewerDOM.getBoundingClientRect();\n\tlet x = touch.clientX - Math.round(left);\n\tlet y = touch.clientY - Math.round(top);\n\n\treturn { x, y };\n}\n\nexport function onTouchStart(event, ViewerDOM, tool, value, props) {\n\tif (isMultiTouch(event, props)) {\n\t\treturn onMultiTouch(event, ViewerDOM, tool, value, props);\n\t}\n\n\tif (event.touches.length !== 1) {\n\t\tif ([MODE_PANNING, MODE_ZOOMING].indexOf(value.mode) >= 0) {\n\t\t\treturn resetMode(value);\n\t\t} else if ([MODE_IDLE].indexOf(value.mode) >= 0) {\n\t\t\treturn value;\n\t\t}\n\t}\n\n\treturn onSingleTouch(event, ViewerDOM, tool, value, props, onMouseDown);\n}\n\nexport function onTouchMove(event, ViewerDOM, tool, value, props) {\n\tif (isMultiTouch(event, props)) {\n\t\treturn onMultiTouch(event, ViewerDOM, tool, value, props);\n\t}\n\n\tif (!([MODE_PANNING, MODE_ZOOMING].indexOf(value.mode) >= 0)) {\n\t\treturn value;\n\t}\n\n\treturn onSingleTouch(event, ViewerDOM, tool, value, props, onMouseMove);\n}\n\nexport function onTouchEnd(event, ViewerDOM, tool, value, props) {\n\tif (!([MODE_PANNING, MODE_ZOOMING].indexOf(value.mode) >= 0)) {\n\t\treturn value;\n\t}\n\n\tlet nextValue = shouldResetPinchPointDistance(event, value, props)\n\t\t? set(value, { pinchPointDistance: null })\n\t\t: value;\n\n\tif (event.touches.length > 0) {\n\t\treturn nextValue;\n\t}\n\n\treturn onSingleTouch(event, ViewerDOM, tool, nextValue, props, onMouseUp);\n}\n\nexport function onTouchCancel(event, ViewerDOM, tool, value, props) {\n\tevent.stopPropagation();\n\tevent.preventDefault();\n\n\treturn resetMode(value);\n}\n\nfunction hasPinchPointDistance(value) {\n\treturn typeof value.pinchPointDistance === \"number\";\n}\n\nfunction shouldResetPinchPointDistance(event, value, props) {\n\treturn (\n\t\tprops.detectPinchGesture &&\n\t\thasPinchPointDistance(value) &&\n\t\tevent.touches.length < 2\n\t);\n}\n\nfunction isMultiTouch(event, props) {\n\treturn props.detectPinchGesture && event.touches.length > 1;\n}\n\nfunction onSingleTouch(event, ViewerDOM, tool, value, props, nextValueFn) {\n\tlet nextValue =\n\t\tevent.touches.length === 0\n\t\t\t? set(value, {\n\t\t\t\t\tmode: value.prePinchMode ? MODE_IDLE : value.mode,\n\t\t\t\t\tprePinchMode: null,\n\t\t\t })\n\t\t\t: value;\n\tlet touch =\n\t\tevent.touches.length > 0 ? event.touches[0] : event.changedTouches[0];\n\tlet touchPosition = getTouchPosition(touch, ViewerDOM);\n\n\tswitch (tool) {\n\t\tcase TOOL_ZOOM_OUT:\n\t\tcase TOOL_ZOOM_IN:\n\t\tcase TOOL_AUTO:\n\t\tcase TOOL_PAN:\n\t\t\tevent.stopPropagation();\n\t\t\t//event.preventDefault();\n\t\t\treturn nextValueFn(\n\t\t\t\tevent,\n\t\t\t\tViewerDOM,\n\t\t\t\ttool,\n\t\t\t\tnextValue,\n\t\t\t\tprops,\n\t\t\t\ttouchPosition\n\t\t\t);\n\n\t\tdefault:\n\t\t\treturn nextValue;\n\t}\n}\n\nfunction onMultiTouch(event, ViewerDOM, tool, value, props) {\n\tconst { left, top } = ViewerDOM.getBoundingClientRect();\n\tconst x1 = event.touches[0].clientX - Math.round(left);\n\tconst y1 = event.touches[0].clientY - Math.round(top);\n\tconst x2 = event.touches[1].clientX - Math.round(left);\n\tconst y2 = event.touches[1].clientY - Math.round(top);\n\tconst pinchPointDistance = Math.sqrt(\n\t\tMath.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)\n\t);\n\tconst previousPointDistance = hasPinchPointDistance(value)\n\t\t? value.pinchPointDistance\n\t\t: pinchPointDistance;\n\tconst svgPoint = getSVGPoint(value, (x1 + x2) / 2, (y1 + y2) / 2);\n\tlet distanceFactor = pinchPointDistance / previousPointDistance;\n\n\tif (isZoomLevelGoingOutOfBounds(value, distanceFactor)) {\n\t\t// Do not change translation and scale of value\n\t\treturn value;\n\t}\n\n\tif (event.cancelable) {\n\t\tevent.preventDefault();\n\t}\n\n\tlet matrix = transform(\n\t\tfromObject(value),\n\t\ttranslate(svgPoint.x, svgPoint.y),\n\t\tscale(distanceFactor, distanceFactor),\n\t\ttranslate(-svgPoint.x, -svgPoint.y)\n\t);\n\n\treturn set(\n\t\tvalue,\n\t\tset({\n\t\t\tmode: MODE_ZOOMING,\n\t\t\t...limitZoomLevel(value, matrix),\n\t\t\tstartX: null,\n\t\t\tstartY: null,\n\t\t\tendX: null,\n\t\t\tendY: null,\n\t\t\tprePinchMode: value.prePinchMode ? value.prePinchMode : value.mode,\n\t\t\tpinchPointDistance,\n\t\t})\n\t);\n}\n","import {set} from './common';\n\n\nexport function openMiniature(value) {\n return set(value, {\n miniatureOpen: true\n });\n}\n\nexport function closeMiniature(value) {\n return set(value, {\n miniatureOpen: false\n });\n}\n\n","//specs: https://developer.mozilla.org/en-US/docs/Web/CSS/cursor\n\nlet needPrefix = (cursor) => ['zoom-in', 'zoom-out', 'grab', 'grabbing'].indexOf(cursor) > -1;\nlet userAgent = () => navigator.userAgent.toLowerCase();\nlet isFirefox = () => userAgent().indexOf('firefox') > -1;\nlet isWebkit = () => userAgent().indexOf('webkit') > -1;\n\nexport default function (cursor) {\n if (!needPrefix(cursor)) return cursor;\n if (isFirefox()) return `-moz-${cursor}`;\n if (isWebkit()) return `-webkit-${cursor}`;\n}\n\n\n","import React from \"react\";\nimport getDisplayName from \"./getDisplayName\";\n\nlet uid = 1;\nconst nextUID = () => `uid${uid++}`;\n\nexport default function RandomUID(WrappedComponent) {\n class RandomUID extends React.Component {\n constructor(props) {\n super(props)\n this.state = {uid: nextUID()}\n }\n\n render() {\n return \n }\n }\n\n RandomUID.displayName = `RandomUID(${getDisplayName(WrappedComponent)})`;\n\n return RandomUID;\n}\n","//https://facebook.github.io/react/docs/higher-order-components.html#convention-wrap-the-display-name-for-easy-debugging\nexport default function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {POSITION_TOP, POSITION_RIGHT, POSITION_BOTTOM, POSITION_LEFT} from '../constants';\nimport RandomUID from \"../utils/RandomUID\";\n\nconst prefixID = 'react-svg-pan-zoom_border_gradient'\n\nfunction BorderGradient({direction, width, height, _uid}) {\n\n let transform;\n\n switch (direction) {\n case POSITION_TOP:\n transform = `translate(${width}, 0) rotate(90)`;\n break;\n\n case POSITION_RIGHT:\n transform = `translate(${width}, ${height}) rotate(180)`;\n break;\n\n case POSITION_BOTTOM:\n transform = `translate(0, ${height}) rotate(270)`;\n break;\n\n case POSITION_LEFT:\n default:\n transform = \" \";\n break;\n }\n\n let gradientID = `${prefixID}_gradient_${_uid}`\n let maskID = `${prefixID}_mask_${_uid}`\n\n return (\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n );\n}\n\nBorderGradient.propTypes = {\n direction: PropTypes.oneOf([POSITION_TOP, POSITION_RIGHT, POSITION_BOTTOM, POSITION_LEFT]).isRequired,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired\n};\n\nexport default RandomUID(BorderGradient)\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport calculateBox from '../utils/calculateBox';\n\nexport default function Selection({startX, startY, endX, endY}) {\n if (!startX || !startY || !endX || !endY) return null;\n\n let box = calculateBox({x: startX, y: startY}, {x: endX, y: endY});\n\n return ();\n}\n\nSelection.propTypes = {\n startX: PropTypes.number,\n startY: PropTypes.number,\n endX: PropTypes.number,\n endY: PropTypes.number\n};\n","import React from 'react';\n\n//credits https://materialdesignicons.com/icon/cursor-default-outline\n\nexport default function IconCursor() {\n return (\n \n \n \n );\n}\n","import React from 'react';\n\n//https://materialdesignicons.com/icon/cursor-move\n\nexport default function IconPan() {\n return (\n \n \n \n );\n}\n","import React from 'react';\n\n//https://material.io/icons/#ic_zoom_in\n\nexport default function IconZoomIn() {\n return (\n \n \n \n \n \n \n );\n}\n","import React from 'react';\n\n//https://material.io/icons/#ic_zoom_out\n\nexport default function IconZoomOut() {\n return (\n \n \n \n )\n}\n","import React from 'react';\n\n//credits https://materialdesignicons.com/icon/cursor-default-outline\n\nexport default function IconFit() {\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n POSITION_TOP, POSITION_BOTTOM\n} from '../constants';\n\nexport default class ToolbarButton extends React.Component {\n constructor(props) {\n super(props);\n this.state = {hover: false};\n }\n\n change(event) {\n event.preventDefault();\n event.stopPropagation();\n\n switch (event.type) {\n case 'mouseenter':\n case 'touchstart':\n this.setState({hover: true});\n break;\n case 'mouseleave':\n case 'touchend':\n case 'touchcancel':\n this.setState({hover: false});\n break;\n default:\n //noop\n }\n }\n\n render() {\n let style = {\n display: \"block\",\n width: \"24px\",\n height: \"24px\",\n margin: [POSITION_TOP, POSITION_BOTTOM].indexOf(this.props.toolbarPosition) >= 0 ? \"2px 1px\" : \"1px 2px\",\n color: this.props.active || this.state.hover ? this.props.activeColor : '#FFF',\n transition: \"color 200ms ease\",\n background: \"none\",\n padding: \"0px\",\n border: \"0px\",\n outline: \"0px\",\n cursor: \"pointer\"\n };\n\n return (\n this.change(e)}\n onMouseLeave={e => this.change(e)}\n\n onTouchStart={e => {\n this.change(e);\n this.props.onClick(e);\n }}\n onTouchEnd={e => this.change(e)}\n onTouchCancel={e => this.change(e)}\n\n onClick={this.props.onClick}\n\n style={style}\n title={this.props.title}\n name={this.props.name}\n type=\"button\"\n >{this.props.children}\n )\n }\n\n}\n\nToolbarButton.propTypes = {\n title: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n toolbarPosition: PropTypes.string.isRequired,\n activeColor: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n active: PropTypes.bool.isRequired\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n TOOL_NONE, TOOL_PAN, TOOL_ZOOM_IN, TOOL_ZOOM_OUT,\n POSITION_TOP, POSITION_RIGHT, POSITION_BOTTOM, POSITION_LEFT,\n ALIGN_CENTER, ALIGN_LEFT, ALIGN_RIGHT, ALIGN_TOP, ALIGN_BOTTOM,\n} from '../constants';\n\nimport {fitToViewer} from '../features/zoom';\nimport IconCursor from './icon-cursor';\nimport IconPan from './icon-pan';\nimport IconZoomIn from './icon-zoom-in';\nimport IconZoomOut from './icon-zoom-out';\nimport IconFit from './icon-fit';\nimport ToolbarButton from './toolbar-button';\n\nexport default function Toolbar({tool, value, onChangeValue, onChangeTool, activeToolColor, position, SVGAlignX, SVGAlignY}) {\n\n let handleChangeTool = (event, tool) => {\n onChangeTool(tool);\n event.stopPropagation();\n event.preventDefault();\n };\n\n let handleFit = event => {\n onChangeValue(fitToViewer(value, SVGAlignX, SVGAlignY));\n event.stopPropagation();\n event.preventDefault();\n };\n\n let isHorizontal = [POSITION_TOP, POSITION_BOTTOM].indexOf(position) >= 0;\n\n let style = {\n //position\n position: \"absolute\",\n transform: [POSITION_TOP, POSITION_BOTTOM].indexOf(position) >= 0 ? \"translate(-50%, 0px)\" : \"none\",\n top: [POSITION_LEFT, POSITION_RIGHT, POSITION_TOP].indexOf(position) >= 0 ? \"5px\" : \"unset\",\n left: [POSITION_TOP, POSITION_BOTTOM].indexOf(position) >= 0 ? \"50%\" : (POSITION_LEFT === position ? \"5px\" : \"unset\"),\n right: [POSITION_RIGHT].indexOf(position) >= 0 ? \"5px\" : \"unset\",\n bottom: [POSITION_BOTTOM].indexOf(position) >= 0 ? \"5px\" : \"unset\",\n\n //inner styling\n backgroundColor: \"rgba(19, 20, 22, 0.90)\",\n borderRadius: \"2px\",\n display: \"flex\",\n flexDirection: isHorizontal ? \"row\" : \"column\",\n padding: isHorizontal ? \"1px 2px\" : \"2px 1px\"\n };\n\n return (\n
\n handleChangeTool(event, TOOL_NONE) }>\n \n \n\n handleChangeTool(event, TOOL_PAN) }>\n \n \n\n handleChangeTool(event, TOOL_ZOOM_IN) }>\n \n \n\n handleChangeTool(event, TOOL_ZOOM_OUT) }>\n \n \n\n handleFit(event) }>\n \n \n
\n )\n}\n\nToolbar.propTypes = {\n tool: PropTypes.string.isRequired,\n onChangeTool: PropTypes.func.isRequired,\n value: PropTypes.object.isRequired,\n onChangeValue: PropTypes.func.isRequired,\n\n //customizations\n position: PropTypes.oneOf([POSITION_TOP, POSITION_RIGHT, POSITION_BOTTOM, POSITION_LEFT]),\n SVGAlignX: PropTypes.oneOf([ALIGN_CENTER, ALIGN_LEFT, ALIGN_RIGHT]),\n SVGAlignY: PropTypes.oneOf([ALIGN_CENTER, ALIGN_TOP, ALIGN_BOTTOM]),\n activeToolColor: PropTypes.string\n};\n\nToolbar.defaultProps = {\n position: POSITION_RIGHT,\n SVGAlignX: ALIGN_LEFT,\n SVGAlignY: ALIGN_TOP,\n activeToolColor: '#1CA6FC'\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {POSITION_RIGHT, POSITION_LEFT} from '../constants';\n\n//credits https://materialdesignicons.com/icon/chevron-up\n\nexport default function IconArrow({open, position}) {\n\n let transform = 0;\n\n switch (position){\n case POSITION_LEFT:\n transform = open ? \"rotate(225, 12, 13)\" : \"rotate(45, 12, 13)\";\n break;\n\n case POSITION_RIGHT:\n transform = transform = open ? \"rotate(135, 12, 13)\" : \"rotate(-45, 12, 13)\";\n break;\n\n default:\n //no op\n }\n\n return (\n \n \n \n \n \n );\n}\n\nIconArrow.propTypes = {\n open: PropTypes.bool.isRequired,\n position: PropTypes.oneOf([POSITION_RIGHT, POSITION_LEFT]).isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {openMiniature, closeMiniature} from '../features/miniature';\nimport IconArrow from './icon-arrow';\nimport {POSITION_RIGHT, POSITION_LEFT} from '../constants';\n\nexport default function MiniatureToggleButton({value, onChangeValue, position}) {\n let style = {\n width: \"24px\",\n height: \"24px\",\n display: \"block\",\n position: \"absolute\",\n bottom: 0,\n [position === POSITION_LEFT ? 'left' : 'right']: '0px',\n background: \"rgba(19, 20, 22, 0.901961)\",\n border: 0,\n padding: 0,\n outline: 0,\n color: \"#fff\"\n };\n\n let action = value.miniatureOpen ? closeMiniature : openMiniature;\n\n return (\n \n )\n\n}\n\nMiniatureToggleButton.propTypes = {\n value: PropTypes.object.isRequired,\n onChangeValue: PropTypes.func.isRequired,\n position: PropTypes.oneOf([POSITION_RIGHT, POSITION_LEFT]).isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport RandomUID from \"../utils/RandomUID\";\n\nconst prefixID = 'react-svg-pan-zoom_miniature'\n\nfunction MiniatureMask({SVGMinX, SVGMinY, SVGWidth, SVGHeight, x1, y1, x2, y2, zoomToFit, _uid}) {\n const maskID = `${prefixID}_mask_${_uid}`\n\n return (\n \n \n \n \n \n \n \n\n \n )\n}\n\nMiniatureMask.propTypes = {\n SVGWidth: PropTypes.number.isRequired,\n SVGHeight: PropTypes.number.isRequired,\n SVGMinX: PropTypes.number.isRequired,\n SVGMinY: PropTypes.number.isRequired,\n x1: PropTypes.number.isRequired,\n y1: PropTypes.number.isRequired,\n x2: PropTypes.number.isRequired,\n y2: PropTypes.number.isRequired,\n zoomToFit: PropTypes.number.isRequired,\n}\n\nexport default RandomUID(MiniatureMask)\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {POSITION_LEFT, POSITION_RIGHT,} from '../constants';\nimport {applyToPoints, inverse} from 'transformation-matrix';\nimport MiniatureToggleButton from './miniature-toggle-button';\nimport MiniatureMask from './miniature-mask';\n\nexport default function Miniature(props) {\n\n let {value, onChangeValue, children, position, background, SVGBackground, width: miniatureWidth, height: miniatureHeight} = props;\n let {SVGMinX, SVGMinY, SVGWidth, SVGHeight, viewerWidth, viewerHeight} = value;\n\n let ratio = SVGHeight / SVGWidth;\n\n let zoomToFit = ratio >= 1\n ? miniatureHeight / SVGHeight\n : miniatureWidth / SVGWidth;\n\n let [{x: x1, y: y1}, {x: x2, y: y2}] = applyToPoints(inverse(value), [\n {x: 0, y: 0},\n {x: viewerWidth, y: viewerHeight}\n ]);\n\n let width, height;\n if (value.miniatureOpen) {\n width = miniatureWidth;\n height = miniatureHeight;\n } else {\n width = 24;\n height = 24;\n }\n\n let style = {\n position: \"absolute\",\n overflow: \"hidden\",\n outline: \"1px solid rgba(19, 20, 22, 0.90)\",\n transition: \"width 200ms ease, height 200ms ease, bottom 200ms ease\",\n width: width + \"px\",\n height: height + \"px\",\n bottom: \"6px\",\n [position === POSITION_LEFT ? 'left' : 'right']: \"6px\",\n background\n };\n\n let centerTranslation = ratio >= 1\n ? `translate(${(miniatureWidth - (SVGWidth * zoomToFit)) / 2 - SVGMinX * zoomToFit}, ${ - SVGMinY * zoomToFit})`\n : `translate(${ - SVGMinX * zoomToFit}, ${(miniatureHeight - (SVGHeight * zoomToFit)) / 2 - SVGMinY * zoomToFit})`;\n\n return (\n
\n \n \n \n\n \n\n {children}\n\n \n\n \n \n \n \n
\n )\n}\n\nMiniature.propTypes = {\n value: PropTypes.object.isRequired,\n onChangeValue: PropTypes.func.isRequired,\n SVGBackground: PropTypes.string.isRequired,\n\n //customizations\n position: PropTypes.oneOf([POSITION_RIGHT, POSITION_LEFT]),\n background: PropTypes.string.isRequired,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n};\n\nMiniature.defaultProps = {\n position: POSITION_LEFT,\n background: \"#616264\",\n width: 100,\n height: 80,\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {toSVG} from 'transformation-matrix';\n//events\nimport eventFactory from './events/event-factory';\n//features\nimport {pan} from './features/pan';\nimport {\n getDefaultValue,\n isValueValid,\n reset,\n setPointOnViewerCenter,\n setSVGViewBox,\n setViewerSize,\n setZoomLevels\n} from './features/common';\nimport {\n onDoubleClick,\n onInterval,\n onMouseDown,\n onMouseEnterOrLeave,\n onMouseMove,\n onMouseUp,\n onWheel\n} from './features/interactions';\nimport parseViewBox from './utils/parseViewBox';\nimport {onTouchCancel, onTouchEnd, onTouchMove, onTouchStart} from './features/interactions-touch';\n\nimport {fitSelection, fitToViewer, zoom, zoomOnViewerCenter} from './features/zoom';\nimport {closeMiniature, openMiniature} from './features/miniature';\n//ui\nimport cursorPolyfill from './ui/cursor-polyfill';\nimport BorderGradient from './ui/border-gradient';\nimport Selection from './ui/selection';\nimport Toolbar from './ui-toolbar/toolbar';\nimport detectTouch from './ui/detect-touch';\nimport Miniature from './ui-miniature/miniature'\n\nimport {\n ACTION_PAN,\n ACTION_ZOOM,\n ALIGN_BOTTOM,\n ALIGN_CENTER,\n ALIGN_LEFT,\n ALIGN_RIGHT,\n ALIGN_TOP,\n MODE_IDLE,\n MODE_PANNING,\n MODE_ZOOMING,\n POSITION_BOTTOM,\n POSITION_LEFT,\n POSITION_NONE,\n POSITION_RIGHT,\n POSITION_TOP,\n TOOL_AUTO,\n TOOL_NONE,\n TOOL_PAN,\n TOOL_ZOOM_IN,\n TOOL_ZOOM_OUT\n} from './constants';\nimport {printMigrationTipsRelatedToProps} from \"./migration-tips\";\n\nexport default class ReactSVGPanZoom extends React.Component {\n\n constructor(props, context) {\n const {width: viewerWidth, height: viewerHeight, scaleFactorMin, scaleFactorMax, children} = props;\n const {viewBox: SVGViewBox} = children.props;\n let defaultValue;\n if (SVGViewBox) {\n const [SVGMinX, SVGMinY, SVGWidth, SVGHeight] = parseViewBox(SVGViewBox);\n defaultValue = getDefaultValue(viewerWidth, viewerHeight, SVGMinX, SVGMinY, SVGWidth, SVGHeight, scaleFactorMin, scaleFactorMax)\n } else {\n const {width: SVGWidth, height: SVGHeight} = children.props;\n defaultValue = getDefaultValue(viewerWidth, viewerHeight, 0, 0, SVGWidth, SVGHeight, scaleFactorMin, scaleFactorMax)\n }\n\n super(props, context);\n this.ViewerDOM = null;\n this.state = {\n pointerX: null,\n pointerY: null,\n defaultValue\n }\n this.autoPanLoop = this.autoPanLoop.bind(this);\n this.onWheel = this.onWheel.bind(this);\n\n if (process.env.NODE_ENV !== 'production') {\n printMigrationTipsRelatedToProps(props)\n }\n }\n\n /** React hooks **/\n componentDidUpdate(prevProps) {\n const value = this.getValue();\n const props = this.props\n\n let nextValue = value;\n let needUpdate = false;\n\n if (process.env.NODE_ENV !== 'production') {\n printMigrationTipsRelatedToProps(props)\n }\n\n // This block checks the size of the SVG\n const {viewBox: SVGViewBox} = props.children.props;\n if (SVGViewBox) {\n // if the viewBox prop is specified\n const [x, y, width, height] = parseViewBox(SVGViewBox);\n\n if(value.SVGMinX !== x || value.SVGMinY !== y || value.SVGWidth !== width || value.SVGHeight !== height) {\n nextValue = setSVGViewBox(nextValue, x, y, width, height);\n needUpdate = true;\n }\n } else {\n // if the width and height props are specified\n const {width: SVGWidth, height: SVGHeight} = props.children.props;\n if (value.SVGWidth !== SVGWidth || value.SVGHeight !== SVGHeight) {\n nextValue = setSVGViewBox(nextValue, 0, 0, SVGWidth, SVGHeight);\n needUpdate = true;\n }\n }\n\n // This block checks the size of the viewer\n if (\n prevProps.width !== props.width ||\n prevProps.height !== props.height\n ) {\n nextValue = setViewerSize(nextValue, props.width, props.height);\n needUpdate = true;\n }\n\n // This blocks checks the scale factors\n if (\n prevProps.scaleFactorMin !== props.scaleFactorMin ||\n prevProps.scaleFactorMax !== props.scaleFactorMax\n ) {\n nextValue = setZoomLevels(nextValue, props.scaleFactorMin, props.scaleFactorMax);\n needUpdate = true;\n }\n\n if (needUpdate) {\n this.setValue(nextValue);\n }\n }\n\n componentDidMount() {\n this.autoPanIsRunning = true;\n requestAnimationFrame(this.autoPanLoop);\n this.ViewerDOM.addEventListener('wheel', this.onWheel, false);\n }\n\n componentWillUnmount() {\n this.autoPanIsRunning = false;\n this.ViewerDOM.removeEventListener('wheel', this.onWheel);\n }\n\n /** ReactSVGPanZoom handlers **/\n getValue() {\n if (isValueValid(this.props.value)) return this.props.value\n return this.state.defaultValue\n }\n\n getTool() {\n if (this.props.tool) return this.props.tool\n return TOOL_NONE\n }\n\n setValue(nextValue) {\n let {onChangeValue, onZoom, onPan} = this.props;\n\n if (onChangeValue) onChangeValue(nextValue);\n if (nextValue.lastAction) {\n if (onZoom && nextValue.lastAction === ACTION_ZOOM) onZoom(nextValue);\n if (onPan && nextValue.lastAction === ACTION_PAN) onPan(nextValue);\n }\n }\n\n /** ReactSVGPanZoom methods **/\n pan(SVGDeltaX, SVGDeltaY) {\n let nextValue = pan(this.getValue(), SVGDeltaX, SVGDeltaY);\n this.setValue(nextValue);\n }\n\n zoom(SVGPointX, SVGPointY, scaleFactor) {\n let nextValue = zoom(this.getValue(), SVGPointX, SVGPointY, scaleFactor);\n this.setValue(nextValue);\n }\n\n fitSelection(selectionSVGPointX, selectionSVGPointY, selectionWidth, selectionHeight) {\n let nextValue = fitSelection(this.getValue(), selectionSVGPointX, selectionSVGPointY, selectionWidth, selectionHeight);\n this.setValue(nextValue);\n }\n\n fitToViewer(SVGAlignX = ALIGN_LEFT, SVGAlignY = ALIGN_TOP) {\n let nextValue = fitToViewer(this.getValue(), SVGAlignX, SVGAlignY);\n this.setValue(nextValue);\n }\n\n zoomOnViewerCenter(scaleFactor) {\n let nextValue = zoomOnViewerCenter(this.getValue(), scaleFactor);\n this.setValue(nextValue);\n }\n\n setPointOnViewerCenter(SVGPointX, SVGPointY, zoomLevel) {\n let nextValue = setPointOnViewerCenter(this.getValue(), SVGPointX, SVGPointY, zoomLevel);\n this.setValue(nextValue);\n }\n\n reset() {\n let nextValue = reset(this.getValue());\n this.setValue(nextValue);\n }\n\n openMiniature() {\n let nextValue = openMiniature(this.getValue());\n this.setValue(nextValue);\n }\n\n closeMiniature() {\n let nextValue = closeMiniature(this.getValue());\n this.setValue(nextValue);\n }\n\n /** ReactSVGPanZoom internals **/\n handleViewerEvent(event) {\n let {props, ViewerDOM} = this;\n\n if (!([TOOL_NONE, TOOL_AUTO].indexOf(this.getTool()) >= 0)) return;\n if (event.target === ViewerDOM) return;\n\n let eventsHandler = {\n click: props.onClick,\n dblclick: props.onDoubleClick,\n\n mousemove: props.onMouseMove,\n mouseup: props.onMouseUp,\n mousedown: props.onMouseDown,\n\n touchstart: props.onTouchStart,\n touchmove: props.onTouchMove,\n touchend: props.onTouchEnd,\n touchcancel: props.onTouchCancel,\n };\n\n let onEventHandler = eventsHandler[event.type];\n if (!onEventHandler) return;\n\n onEventHandler(eventFactory(event, props.value, ViewerDOM));\n }\n\n autoPanLoop() {\n let coords = {x: this.state.pointerX, y: this.state.pointerY};\n let nextValue = onInterval(null, this.ViewerDOM, this.getTool(), this.getValue(), this.props, coords);\n if (this.getValue() !== nextValue) {\n this.setValue(nextValue);\n }\n\n if (this.autoPanIsRunning) {\n requestAnimationFrame(this.autoPanLoop);\n }\n }\n\n onWheel(event) {\n let nextValue = onWheel(event, this.ViewerDOM, this.getTool(), this.getValue(), this.props);\n if (this.getValue() !== nextValue) this.setValue(nextValue);\n }\n\n /** React renderer **/\n render() {\n let {props, state: {pointerX, pointerY}} = this;\n let tool = this.getTool();\n let value = this.getValue();\n let {customToolbar: CustomToolbar = Toolbar, customMiniature: CustomMiniature = Miniature} = props;\n\n let panningWithToolAuto = tool === TOOL_AUTO\n && value.mode === MODE_PANNING\n && value.startX !== value.endX\n && value.startY !== value.endY;\n\n let cursor;\n\n if (tool === TOOL_PAN)\n cursor = cursorPolyfill(value.mode === MODE_PANNING ? 'grabbing' : 'grab');\n\n if (tool === TOOL_ZOOM_IN)\n cursor = cursorPolyfill('zoom-in');\n\n if (tool === TOOL_ZOOM_OUT)\n cursor = cursorPolyfill('zoom-out');\n\n if (panningWithToolAuto)\n cursor = cursorPolyfill('grabbing');\n\n let blockChildEvents = [TOOL_PAN, TOOL_ZOOM_IN, TOOL_ZOOM_OUT].indexOf(tool) >= 0;\n blockChildEvents = blockChildEvents || panningWithToolAuto;\n\n const touchAction = (this.props.detectPinchGesture || [TOOL_PAN, TOOL_AUTO].indexOf(this.getTool()) !== -1) ? 'none' : undefined\n\n const style = {display: 'block', cursor, touchAction};\n\n return (\n \n this.ViewerDOM = ViewerDOM}\n width={value.viewerWidth}\n height={value.viewerHeight}\n style={style}\n\n onMouseDown={event => {\n let nextValue = onMouseDown(event, this.ViewerDOM, this.getTool(), this.getValue(), this.props);\n if (this.getValue() !== nextValue) this.setValue(nextValue);\n this.handleViewerEvent(event);\n }}\n onMouseMove={event => {\n let {left, top} = this.ViewerDOM.getBoundingClientRect();\n let x = event.clientX - Math.round(left);\n let y = event.clientY - Math.round(top);\n\n let nextValue = onMouseMove(event, this.ViewerDOM, this.getTool(), this.getValue(), this.props, {x, y});\n if (this.getValue() !== nextValue) this.setValue(nextValue);\n this.setState({pointerX: x, pointerY: y});\n this.handleViewerEvent(event);\n }}\n onMouseUp={event => {\n let nextValue = onMouseUp(event, this.ViewerDOM, this.getTool(), this.getValue(), this.props);\n if (this.getValue() !== nextValue) this.setValue(nextValue);\n this.handleViewerEvent(event);\n }}\n\n onClick={event => {\n this.handleViewerEvent(event)\n }}\n onDoubleClick={event => {\n let nextValue = onDoubleClick(event, this.ViewerDOM, this.getTool(), this.getValue(), this.props);\n if (this.getValue() !== nextValue) this.setValue(nextValue);\n this.handleViewerEvent(event);\n }}\n\n onMouseEnter={event => {\n if (detectTouch()) return;\n let nextValue = onMouseEnterOrLeave(event, this.ViewerDOM, this.getTool(), this.getValue(), this.props);\n if (this.getValue() !== nextValue) this.setValue(nextValue);\n }}\n onMouseLeave={event => {\n let nextValue = onMouseEnterOrLeave(event, this.ViewerDOM, this.getTool(), this.getValue(), this.props);\n if (this.getValue() !== nextValue) this.setValue(nextValue);\n }}\n\n onTouchStart={event => {\n let nextValue = onTouchStart(event, this.ViewerDOM, this.getTool(), this.getValue(), this.props);\n if (this.getValue() !== nextValue) this.setValue(nextValue);\n this.handleViewerEvent(event);\n }}\n onTouchMove={event => {\n let nextValue = onTouchMove(event, this.ViewerDOM, this.getTool(), this.getValue(), this.props);\n if (this.getValue() !== nextValue) this.setValue(nextValue);\n this.handleViewerEvent(event);\n }}\n onTouchEnd={event => {\n let nextValue = onTouchEnd(event, this.ViewerDOM, this.getTool(), this.getValue(), this.props);\n if (this.getValue() !== nextValue) this.setValue(nextValue);\n this.handleViewerEvent(event);\n }}\n onTouchCancel={event => {\n let nextValue = onTouchCancel(event, this.ViewerDOM, this.getTool(), this.getValue(), this.props);\n if (this.getValue() !== nextValue) this.setValue(nextValue);\n this.handleViewerEvent(event);\n }}>\n\n \n\n \n \n \n {props.children.props.children}\n \n \n\n {!([TOOL_NONE, TOOL_AUTO].indexOf(tool) >= 0 && props.detectAutoPan && value.focus) ? null : (\n \n {!(pointerY <= 20) ? null :\n \n }\n\n {!(value.viewerWidth - pointerX <= 20) ? null :\n \n }\n\n {!(value.viewerHeight - pointerY <= 20) ? null :\n \n }\n\n {!(value.focus && pointerX <= 20) ? null :\n \n }\n \n )}\n\n {!(value.mode === MODE_ZOOMING) ? null :\n \n }\n \n\n {props.toolbarProps.position === POSITION_NONE ? null :\n this.setValue(value)}\n tool={tool}\n onChangeTool={tool => this.props.onChangeTool(tool)}\n />}\n\n {props.miniatureProps.position === POSITION_NONE ? null :\n this.setValue(value)}\n SVGBackground={this.props.SVGBackground}\n >\n {props.children.props.children}\n \n }\n \n );\n }\n}\n\nReactSVGPanZoom.propTypes = {\n /**************************************************************************/\n /* Viewer configuration */\n /**************************************************************************/\n\n /**\n * width of the viewer displayed on screen\n */\n width: PropTypes.number.isRequired,\n\n /**\n * height of the viewer displayed on screen\n */\n height: PropTypes.number.isRequired,\n\n /**\n * value of the viewer (current camera view)\n */\n value: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.shape({\n version: PropTypes.oneOf([2]).isRequired,\n mode: PropTypes.oneOf([MODE_IDLE, MODE_PANNING, MODE_ZOOMING]).isRequired,\n focus: PropTypes.bool.isRequired,\n a: PropTypes.number.isRequired,\n b: PropTypes.number.isRequired,\n c: PropTypes.number.isRequired,\n d: PropTypes.number.isRequired,\n e: PropTypes.number.isRequired,\n f: PropTypes.number.isRequired,\n viewerWidth: PropTypes.number.isRequired,\n viewerHeight: PropTypes.number.isRequired,\n SVGMinX: PropTypes.number.isRequired,\n SVGMinY: PropTypes.number.isRequired,\n SVGWidth: PropTypes.number.isRequired,\n SVGHeight: PropTypes.number.isRequired,\n startX: PropTypes.number,\n startY: PropTypes.number,\n endX: PropTypes.number,\n endY: PropTypes.number,\n miniatureOpen: PropTypes.bool.isRequired,\n })\n ]).isRequired,\n\n /**\n * handler something changed\n */\n onChangeValue: PropTypes.func.isRequired,\n\n /**\n * current active tool (TOOL_NONE, TOOL_PAN, TOOL_ZOOM_IN, TOOL_ZOOM_OUT)\n */\n tool: PropTypes.oneOf([TOOL_AUTO, TOOL_NONE, TOOL_PAN, TOOL_ZOOM_IN, TOOL_ZOOM_OUT]).isRequired,\n\n /**\n * handler tool changed\n */\n onChangeTool: PropTypes.func.isRequired,\n\n /**************************************************************************/\n /* Customize style */\n /**************************************************************************/\n\n /**\n * background of the viewer\n */\n background: PropTypes.string,\n\n /**\n * background of the svg\n */\n SVGBackground: PropTypes.string,\n\n /**\n * style of the svg\n */\n SVGStyle: PropTypes.object,\n\n /**\n * CSS style of the Viewer\n */\n style: PropTypes.object,\n\n /**\n * className of the Viewer\n */\n className: PropTypes.string,\n\n /**************************************************************************/\n /* Detect events */\n /**************************************************************************/\n\n /**\n * perform zoom operation on mouse scroll\n */\n detectWheel: PropTypes.bool,\n\n /**\n * perform PAN if the mouse is on viewer border\n */\n detectAutoPan: PropTypes.bool,\n\n /**\n * perform zoom operation on pinch gesture\n */\n detectPinchGesture: PropTypes.bool,\n\n /**\n * handler zoom level changed\n */\n onZoom: PropTypes.func,\n\n /**\n * handler pan action performed\n */\n onPan: PropTypes.func,\n\n /**\n * handler click\n */\n onClick: PropTypes.func,\n\n /**\n * handler double click\n */\n onDoubleClick: PropTypes.func,\n\n /**\n * handler mouseup\n */\n onMouseUp: PropTypes.func,\n\n /**\n * handler mousemove\n */\n onMouseMove: PropTypes.func,\n\n /**\n * handler mousedown\n */\n onMouseDown: PropTypes.func,\n\n /**************************************************************************/\n /* Some advanced configurations */\n /**************************************************************************/\n\n /**\n * if disabled the user can move the image outside the viewer\n */\n preventPanOutside: PropTypes.bool,\n\n /**\n * how much scale in or out\n */\n scaleFactor: PropTypes.number,\n\n /**\n * how much scale in or out on mouse wheel (requires detectWheel enabled)\n */\n scaleFactorOnWheel: PropTypes.number,\n\n /**\n * maximum amount of scale a user can zoom in to\n */\n scaleFactorMax: PropTypes.number,\n\n /**\n * minimum amount of a scale a user can zoom out of\n */\n scaleFactorMin: PropTypes.number,\n\n /**\n * modifier keys //https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/getModifierState\n */\n modifierKeys: PropTypes.array,\n\n /**\n * Turn off zoom on double click\n */\n disableDoubleClickZoomWithToolAuto: PropTypes.bool,\n\n /**************************************************************************/\n /* Miniature configurations */\n /**************************************************************************/\n\n /**\n * override miniature component\n */\n customMiniature: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),\n\n /**\n * miniature props\n */\n miniatureProps: PropTypes.shape({\n position: PropTypes.oneOf([POSITION_NONE, POSITION_RIGHT, POSITION_LEFT]),\n background: PropTypes.string,\n width: PropTypes.number,\n height: PropTypes.number,\n }),\n\n /**************************************************************************/\n /* Toolbar configurations */\n /**************************************************************************/\n\n /**\n * override toolbar component\n */\n customToolbar: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),\n\n /**\n * toolbar props\n */\n toolbarProps: PropTypes.shape({\n position: PropTypes.oneOf([POSITION_NONE, POSITION_TOP, POSITION_RIGHT, POSITION_BOTTOM, POSITION_LEFT]),\n SVGAlignX: PropTypes.oneOf([ALIGN_CENTER, ALIGN_LEFT, ALIGN_RIGHT]),\n SVGAlignY: PropTypes.oneOf([ALIGN_CENTER, ALIGN_TOP, ALIGN_BOTTOM]),\n activeToolColor: PropTypes.string,\n }),\n\n /**************************************************************************/\n /* Children Check */\n /**************************************************************************/\n /**\n * accept only one node SVG\n */\n children: function (props, propName, componentName) {\n // Only accept a single child, of the appropriate type\n //credits: http://www.mattzabriskie.com/blog/react-validating-children\n let prop = props[propName];\n let types = ['svg'];\n if (React.Children.count(prop) !== 1 ||\n types.indexOf(prop.type) === -1) {\n return new Error(\n '`' + componentName + '` ' +\n 'should have a single child of the following types: ' +\n ' `' + types.join('`, `') + '`.'\n );\n }\n if (\n (!prop.props.hasOwnProperty('width') || !prop.props.hasOwnProperty('height')) &&\n (!prop.props.hasOwnProperty('viewBox'))\n ) {\n return new Error('SVG should have props `width` and `height` or `viewBox`');\n }\n\n }\n};\n\nReactSVGPanZoom.defaultProps = {\n style: {},\n background: \"#616264\",\n SVGBackground: \"#fff\",\n SVGStyle: {},\n detectWheel: true,\n detectAutoPan: true,\n detectPinchGesture: true,\n modifierKeys: [\"Alt\", \"Shift\", \"Control\"],\n preventPanOutside: true,\n scaleFactor: 1.1,\n scaleFactorOnWheel: 1.06,\n disableZoomWithToolAuto: false,\n onZoom: null,\n onPan: null,\n toolbarProps: {},\n miniatureProps: {},\n};\n","import ViewerMouseEvent from './viewer-mouse-event';\nimport ViewerTouchEvent from './viewer-touch-event';\n\nexport default function eventFactory(originalEvent, value, SVGViewer) {\n\n let eventType = originalEvent.type;\n\n switch (eventType) {\n case \"mousemove\":\n case \"mouseup\":\n case \"mousedown\":\n case \"click\":\n case \"dblclick\":\n return new ViewerMouseEvent(originalEvent, value, SVGViewer);\n\n case \"touchstart\":\n case \"touchmove\":\n case \"touchend\":\n case \"touchcancel\":\n return new ViewerTouchEvent(originalEvent, value, SVGViewer);\n\n default:\n throw new Error(`${eventType} not supported`);\n }\n}\n","//http://stackoverflow.com/a/4819886/1398836\n\nexport default function isTouchDevice() {\n return 'ontouchstart' in window // works on most browsers\n || navigator.maxTouchPoints; // works on IE10/11 and Surface\n};\n","import React from \"react\";\nimport ReactSVGPanZoom from './viewer'\nimport PropTypes from \"prop-types\";\nimport {TOOL_NONE} from \"./constants\";\n\nexport default class UncontrolledReactSVGPanZoom extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n value: props.defaultValue || {},\n tool: props.defaultTool || TOOL_NONE,\n }\n\n this.Viewer = null;\n this.changeTool = this.changeTool.bind(this)\n this.changeValue = this.changeValue.bind(this)\n }\n\n changeTool(tool) {\n this.setState({tool})\n }\n\n changeValue(value) {\n this.setState({value})\n }\n\n pan(SVGDeltaX, SVGDeltaY) {\n this.Viewer.pan(SVGDeltaX, SVGDeltaY)\n }\n\n zoom(SVGPointX, SVGPointY, scaleFactor) {\n this.Viewer.zoom(SVGPointX, SVGPointY, scaleFactor)\n }\n\n fitSelection(selectionSVGPointX, selectionSVGPointY, selectionWidth, selectionHeight) {\n this.Viewer.fitSelection(selectionSVGPointX, selectionSVGPointY, selectionWidth, selectionHeight)\n }\n\n fitToViewer(SVGAlignX, SVGAlignY) {\n this.Viewer.fitToViewer(SVGAlignX, SVGAlignY)\n }\n\n zoomOnViewerCenter(scaleFactor) {\n this.Viewer.zoomOnViewerCenter(scaleFactor)\n }\n\n setPointOnViewerCenter(SVGPointX, SVGPointY, zoomLevel) {\n this.Viewer.setPointOnViewerCenter(SVGPointX, SVGPointY, zoomLevel)\n }\n\n reset() {\n this.Viewer.reset()\n }\n\n openMiniature() {\n this.Viewer.openMiniature()\n }\n\n closeMiniature() {\n this.Viewer.closeMiniature()\n }\n\n render() {\n const {width, height, onChangeTool, onChangeValue, ...props} = this.props\n const {tool, value} = this.state\n\n return (\n this.Viewer = Viewer}\n {...props}\n />\n )\n }\n}\n\nUncontrolledReactSVGPanZoom.propTypes = {\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n\n defaultValue: PropTypes.object,\n defaultTool: PropTypes.string,\n}\n","import { INITIAL_VALUE } from \"react-svg-pan-zoom\";\n\nexport class PanZoomHelper {\n\tstatic getCurrentValue(width, height) {\n\t\tlet currentValue = INITIAL_VALUE;\n\t\tif (sessionStorage.getItem(\"pan_zoom_value\")) {\n\t\t\tcurrentValue = JSON.parse(sessionStorage.getItem(\"pan_zoom_value\"));\n\n\t\t\tlet changed = false;\n\t\t\tif (width) {\n\t\t\t\tcurrentValue.viewerWidth = width;\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tif (height) {\n\t\t\t\tcurrentValue.viewerHeight = height;\n\t\t\t\tchanged = true;\n\t\t\t}\n\n\t\t\tif (changed) {\n\t\t\t\tsessionStorage.setItem(\"pan_zoom_value\", JSON.stringify(currentValue));\n\t\t\t}\n\t\t}\n\n\t\treturn currentValue;\n\t}\n\n\tstatic resetView(topLeftX = 0, topLeftY = 0, zoom = 1) {\n\t\tconst currentValue = PanZoomHelper.getCurrentValue();\n\n\t\tcurrentValue.a = zoom;\n\t\tcurrentValue.d = zoom;\n\t\tcurrentValue.e = topLeftX;\n\t\tcurrentValue.f = topLeftY;\n\n\t\tsessionStorage.setItem(\"pan_zoom_value\", JSON.stringify(currentValue));\n\t}\n}\n","import { PanZoomHelper } from \"common/helpers/panZoomHelper\";\nimport React, { useState, useRef } from \"react\";\nimport { ReactSVGPanZoom, TOOL_AUTO } from \"react-svg-pan-zoom\";\n\nconst SvgViewer = ({\n\theight = 500,\n\twidth = 500,\n\tchildren,\n\tscaleFactor = 1.1,\n\t...rest\n}) => {\n\tconst Viewer = useRef(null);\n\tconst [tool, setTool] = useState(TOOL_AUTO);\n\tconst [value, setValue] = useState(\n\t\tPanZoomHelper.getCurrentValue(width, height)\n\t);\n\tconst scaleFactorMax = 1.25;\n\n\tconst setPanZoomValue = (newValue) => {\n\t\tsessionStorage.setItem(\"pan_zoom_value\", JSON.stringify(newValue));\n\t\tsetValue(newValue);\n\t};\n\n\treturn (\n\t\t <>}\n\t\t\tSVGBackground=\"transparent\"\n\t\t\t{...rest}\n\t\t>\n\t\t\t{children}\n\t\t\n\t);\n};\nexport default SvgViewer;\n","// eslint-disable-next-line no-unused-vars\nimport { Match } from \"bracket-system/types\";\nimport { EventStageTypes } from \"common/constants/EventStageTypes\";\nimport {\n\t// eslint-disable-next-line no-unused-vars\n\tEventFormatStage,\n\t// eslint-disable-next-line no-unused-vars\n\tEventFormatBracket,\n\t// eslint-disable-next-line no-unused-vars\n\tEventFormatBracketColumn,\n\t// eslint-disable-next-line no-unused-vars\n\tEventFormatBracketColumnMatch,\n\t// eslint-disable-next-line no-unused-vars\n\tEventFormatBracketColumnMatchTarget,\n\t// eslint-disable-next-line no-unused-vars\n\tEventFormatBracketColumnTarget,\n\t// eslint-disable-next-line no-unused-vars\n\tEventFormatBracketScoringGroup,\n} from \"./eventFormatHelper\";\n// eslint-disable-next-line no-unused-vars\nimport { MatchPick } from \"common/types/MatchPick\";\nimport _ from \"lodash\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\n// eslint-disable-next-line no-unused-vars\nimport { EventStage, EventSubstage } from \"common/types/EventStage\";\n\nexport function getMatchCount(part, column, totalColumns) {\n\tif (part === \"UB\") {\n\t\tconst inverse = Math.abs(column - totalColumns);\n\t\treturn Math.pow(2, inverse - 1);\n\t}\n\tif (part === \"LB\") {\n\t\tconst inverse = Math.abs(column - totalColumns);\n\t\tconst grouping = Math.ceil(inverse / 2);\n\t\treturn Math.pow(2, grouping - 1);\n\t}\n\tif (part === \"GF\") {\n\t\treturn 1;\n\t}\n}\n\nexport function getPartName(part) {\n\tif (part === \"UB\") {\n\t\treturn \"Upper Bracket\";\n\t}\n\tif (part === \"LB\") {\n\t\treturn \"Lower Bracket\";\n\t}\n\tif (part === \"GF\") {\n\t\treturn \"Grand Final\";\n\t}\n}\n\n/**\n * @param {EventFormatBracket} bracket\n * @param {string} bracketMatchId\n * @returns {Match}\n */\nexport function findBracketMatchById(bracket, bracketMatchId) {\n\treturn (\n\t\tbracket.matches.upper?.find((m) => m.id === bracketMatchId) ??\n\t\tbracket.matches.lower?.find((m) => m.id === bracketMatchId)\n\t);\n}\n\n/**\n * @param {EventFormatBracket} bracket\n * @param {string} bracketMatchId\n */\nexport function findColumnMatchById(bracket, bracketMatchId) {\n\tfor (const part of bracket.parts) {\n\t\tfor (const column of part.columns) {\n\t\t\tconst columnMatch = column.matches.find(\n\t\t\t\t(m) => m.bracketMatchId === bracketMatchId\n\t\t\t);\n\t\t\tif (columnMatch) {\n\t\t\t\treturn columnMatch;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * @param {EventFormatBracket} bracket\n * @param {EventFormatBracketColumnTarget} target\n * @returns {EventFormatBracketColumn}\n */\nexport function getBracketColumnByTarget(bracket, target) {\n\treturn bracket?.parts\n\t\t?.find((p) => p.identifier === target.part)\n\t\t?.columns?.find((c) => c.index === target.col);\n}\n\n/**\n *\n * @param {EventFormatBracket} bracket\n * @param {EventFormatBracketColumnMatchTarget} target\n * @returns {string}\n */\nexport function getBracketMatchIdByTarget(bracket, target) {\n\treturn bracket?.parts\n\t\t?.find((p) => p.identifier === target.part)\n\t\t?.columns?.find((c) => c.index === target.col)\n\t\t?.matches?.find((m) => m.colIndex === target.colIndex)?.bracketMatchId;\n}\n\n/**\n *\n * @param {EventFormatBracket} bracket\n * @param {EventFormatBracketColumnMatchTarget} target\n * @returns {EventFormatBracketColumnMatch}\n */\nexport function getBracketMatchByTarget(bracket, target) {\n\treturn bracket?.parts\n\t\t?.find((p) => p.identifier === target.part)\n\t\t?.columns?.find((c) => c.index === target.col)\n\t\t?.matches?.find((m) => m.colIndex === target.colIndex);\n}\n\n/**\n *\n * @param {EventFormatBracket} bracket\n * @param {EventFormatBracketColumnTarget} target\n * @returns {string[]}\n */\nexport function getBracketMatchIdsByTargetColumn(bracket, target) {\n\treturn bracket?.parts\n\t\t?.find((p) => p.identifier === target.part)\n\t\t?.columns?.find((c) => c.index === target.col)\n\t\t?.matches.map((m) => m.bracketMatchId);\n}\n\n/**\n *\n * @param {any} eventData\n * @param {EventStage} currentEventStage\n * @param {EventSubstage} currentEventSubstage\n * @param {EventFormatStage} currentStage\n * @param {EventFormatBracket} bracket\n * @param {MatchPick[]} userPicks\n * @param {MatchPick[]} officialPicks\n */\nexport function parsePicksIntoBracketMatches(\n\teventData,\n\tcurrentEventStage,\n\tcurrentEventSubstage,\n\tcurrentStage,\n\tbracket,\n\tuserPicks,\n\tofficialPicks,\n\tmapOfficialToUserWhenEmpty = false\n) {\n\t// If Swiss Stage or Group stage with no brackets, skip this.\n\tif (currentStage.type === EventStageTypes.Swiss) {\n\t\treturn;\n\t}\n\n\tif (\n\t\tcurrentStage?.type === EventStageTypes.Group &&\n\t\t!currentStage.groupStageDetails?.hasGroupBrackets\n\t) {\n\t\treturn;\n\t}\n\n\tconst teams = eventData.teams;\n\tuserPicks = userPicks?.filter(\n\t\t(p) =>\n\t\t\tp.eventStageId === currentEventStage.id &&\n\t\t\tp.eventSubstageId === currentEventSubstage.id\n\t);\n\n\tofficialPicks = officialPicks.filter(\n\t\t(p) =>\n\t\t\tp.eventStageId === currentEventStage.id &&\n\t\t\tp.eventSubstageId === currentEventSubstage.id\n\t);\n\n\tif (\n\t\tmapOfficialToUserWhenEmpty &&\n\t\tuserPicks?.length == 0 &&\n\t\tofficialPicks.length > 0\n\t) {\n\t\t/** @type {any[]} */\n\t\tlet allUserPicks = Store.get(StoreKeys.EVENT.USER.BRACKET_PICKS) ?? [];\n\t\tallUserPicks = allUserPicks.concat(_.cloneDeep(officialPicks));\n\t\tallUserPicks = allUserPicks.filter((pick) => {\n\t\t\treturn !!getBracketMatchIdByTarget(bracket, {\n\t\t\t\tpart: pick.bracketPart,\n\t\t\t\tcol: pick.bracketCol,\n\t\t\t\tcolIndex: pick.bracketColIndex,\n\t\t\t});\n\t\t});\n\n\t\tStore.set(StoreKeys.EVENT.USER.BRACKET_PICKS, allUserPicks);\n\t}\n\n\tconst sourcePicks = userPicks?.length == 0 ? officialPicks : userPicks;\n\tbracket = _.cloneDeep(bracket);\n\n\tfor (let pick of sourcePicks) {\n\t\tconst bracketMatchId = getBracketMatchIdByTarget(bracket, {\n\t\t\tpart: pick.bracketPart,\n\t\t\tcol: pick.bracketCol,\n\t\t\tcolIndex: pick.bracketColIndex,\n\t\t});\n\n\t\t// Abios gives us crap matches sometimes, don't let it ruin our site.\n\t\tif (!bracketMatchId) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst bracketMatch = findBracketMatchById(bracket, bracketMatchId);\n\n\t\tconst topTeam = teams.find((t) => t.id === pick.topTeamId);\n\t\tconst botTeam = teams.find((t) => t.id === pick.bottomTeamId);\n\n\t\tconst started = pick.topTeamScore || pick.bottomTeamScore;\n\t\tconst topTeamScore = started ? (pick.topTeamScore ?? 0).toString() : \"\";\n\t\tconst bottomTeamScore = started\n\t\t\t? (pick.bottomTeamScore ?? 0).toString()\n\t\t\t: \"\";\n\n\t\tbracketMatch.participants = [\n\t\t\t{\n\t\t\t\tid: topTeam?.id ?? \"\",\n\t\t\t\tresultText: topTeamScore,\n\t\t\t\tisWinner: pick.winnerTeamId === topTeam?.id,\n\t\t\t\tstatus: \"PLAYED\",\n\t\t\t\tname: topTeam?.abbreviation ?? \"\",\n\t\t\t\tlogoUrl: topTeam?.logoUrl,\n\t\t\t\tcorrectParticipant:\n\t\t\t\t\tuserPicks.length === 0\n\t\t\t\t\t\t? false\n\t\t\t\t\t\t: correctParticipant(\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpart: pick.bracketPart,\n\t\t\t\t\t\t\t\t\tcol: pick.bracketCol,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\ttopTeam?.id,\n\t\t\t\t\t\t\t\tofficialPicks,\n\t\t\t\t\t\t\t\tbracket.scoringGroups\n\t\t\t\t\t\t ),\n\t\t\t\tcorrectPlacement: userPicks.length === 0 ? false : correctPlacement(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: botTeam?.id ?? \"\",\n\t\t\t\tresultText: bottomTeamScore,\n\t\t\t\tisWinner: pick.winnerTeamId === botTeam?.id,\n\t\t\t\tstatus: \"PLAYED\",\n\t\t\t\tname: botTeam?.abbreviation ?? \"\",\n\t\t\t\tlogoUrl: botTeam?.logoUrl,\n\t\t\t\tcorrectParticipant:\n\t\t\t\t\tuserPicks.length === 0\n\t\t\t\t\t\t? false\n\t\t\t\t\t\t: correctParticipant(\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpart: pick.bracketPart,\n\t\t\t\t\t\t\t\t\tcol: pick.bracketCol,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tbotTeam?.id,\n\t\t\t\t\t\t\t\tofficialPicks,\n\t\t\t\t\t\t\t\tbracket.scoringGroups\n\t\t\t\t\t\t ),\n\t\t\t\tcorrectPlacement: userPicks.length === 0 ? false : correctPlacement(),\n\t\t\t},\n\t\t];\n\t}\n\n\treturn bracket.matches;\n}\n\n/**\n *\n * @param {EventFormatBracketColumnTarget} column\n * @param {number} teamId\n * @param {MatchPick[]} officialPicks\n * @param {EventFormatBracketScoringGroup[]} scoringGroups\n * @returns {boolean}\n */\nfunction correctParticipant(column, teamId, officialPicks, scoringGroups) {\n\tif (!teamId) {\n\t\treturn false;\n\t}\n\n\t// get scoring group that contains current column\n\tconst sg = scoringGroups?.find(\n\t\t(sg) =>\n\t\t\tsg.columns.find((c) => c.col === column.col && c.part === column.part) !=\n\t\t\tnull\n\t);\n\tif (!sg || !sg.scoreParticipants || sg.scoreWinnersOnly) {\n\t\treturn false;\n\t}\n\n\t// get all team ids from official picks for the scoring group.\n\tfor (const col of sg.columns) {\n\t\tconst picks = officialPicks.filter(\n\t\t\t(op) => op.bracketPart === col.part && op.bracketCol === col.col\n\t\t);\n\t\tif (\n\t\t\tpicks.find((p) => p.topTeamId === teamId || p.bottomTeamId === teamId)\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction correctPlacement() {\n\treturn false;\n}\n","import * as React from \"react\";\nimport { connect } from \"common/connect\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\n// eslint-disable-next-line no-unused-vars\nimport {\n\tEventFormatBracket,\n\tEventFormatBracketPart,\n\tEventFormatBracketColumn,\n\tEventFormatBracketColumnMatch,\n\tEventFormatBracketColumnMatchTarget,\n\tEventFormatBuilder,\n\tEventFormatStage,\n\tgetHeaderNamesFromBracket,\n\tEventFormatBracketView,\n\tEventFormatScoringBreakdown,\n\tEventFormatScoringBreakdownGroup,\n\tEventFormatScoringBreakdownRecord,\n\tEventFormatScoringGroup,\n\tbuildScoringDetails,\n\tEventFormatBracketScoringGroup,\n} from \"common/helpers/eventFormatHelper\";\nimport {\n\tButton,\n\tCheckbox,\n\tFormControlLabel,\n\tIconButton,\n\tList,\n\tListItem,\n\tListItemSecondaryAction,\n\tListItemText,\n\tmakeStyles,\n\tTab,\n\tTabs,\n\tTextField,\n} from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\nimport DoubleEliminationBracket from \"bracket-system/bracket-double/double-elim-bracket\";\nimport Match from \"bracket-system/components/match\";\nimport { EventStageTypes } from \"common/constants/EventStageTypes\";\nimport * as GroupStageBracket from \"bracket-system/mock-data/double-elim-group-stage\";\nimport * as DoubleElimination from \"bracket-system/mock-data/simple-double-full\";\nimport * as Playoffs from \"bracket-system/mock-data/playoffs\";\nimport Collapse from \"common/components/Collapse/Collapse\";\nimport { GetUpperBracketHeaderName } from \"bracket-system/components/upper-round-header\";\nimport { GetLowerBracketHeaderName } from \"bracket-system/components/lower-round-header\";\nimport { Match as MatchType, Theme } from \"bracket-system/types\";\nimport { Subject } from \"rxjs\";\nimport {\n\tChevronLeft,\n\tChevronRight,\n\tAdd,\n\tEdit,\n\tDelete,\n\tLaunch,\n} from \"@material-ui/icons\";\nimport { flattenArrayList } from \"common/helpers/arrayHelper\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport ScorePillModal from \"common/components/Modals/ScorePillModal/ScorePillModal\";\nimport SvgViewer from \"bracket-system/svg-viewer\";\nimport { useForceUpdate } from \"common/helpers/componentHelper\";\nimport {\n\tfindBracketMatchById,\n\tfindColumnMatchById,\n\tgetBracketMatchIdByTarget,\n\tgetBracketMatchIdsByTargetColumn,\n\tgetMatchCount,\n\tgetPartName,\n} from \"common/helpers/bracketHelper\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nconst useStyles = makeStyles((theme) => {\n\treturn {\n\t\tbracketBuilderContainer: {\n\t\t\tdisplay: \"flex\",\n\t\t\tflexDirection: \"row\",\n\t\t\tposition: \"relative\",\n\t\t},\n\t\tbracketRender: {\n\t\t\tborder: `2px solid ${Colors.panel}`,\n\t\t\tdisplay: \"inline-flex\",\n\t\t\tflex: \"0 0 75%\",\n\t\t\tmaxHeight: 800,\n\t\t\toverflow: \"auto\",\n\t\t},\n\t\tbracketEditor: {\n\t\t\tborder: `2px solid ${Colors.panel}`,\n\t\t\tdisplay: \"inline-flex\",\n\t\t\tflex: \"0 0 25%\",\n\t\t\tflexDirection: \"column\",\n\t\t\tmaxHeight: 800,\n\t\t\tbackgroundColor: Colors.panel,\n\t\t},\n\t\tbracketEditorPhaseSelector: {\n\t\t\tdisplay: \"flex\",\n\t\t\talignContent: \"flex-start\",\n\t\t\tjustifyContent: \"space-between\",\n\t\t\talignItems: \"center\",\n\t\t\tborderBottom: `1px solid ${Colors.body}`,\n\t\t},\n\t\tinvisibleOnDisable: {\n\t\t\t\"&:disabled\": {\n\t\t\t\tcolor: \"transparent\",\n\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\tborder: 0,\n\t\t\t\t\"& .MuiSvgIcon-root\": {\n\t\t\t\t\tcolor: \"transparent !important\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tsubEditor: {\n\t\t\tmarginLeft: 24,\n\t\t},\n\t\tsubEditorPlus: {\n\t\t\tmarginLeft: 48,\n\t\t},\n\t\tscroller: {\n\t\t\tmaxHeight: 800,\n\t\t\toverflowY: \"auto\",\n\t\t},\n\t\teditorField: {\n\t\t\tmarginBottom: 8,\n\t\t\t\"& .MuiInputBase-root\": {\n\t\t\t\toverflow: \"hidden\",\n\t\t\t},\n\t\t},\n\t\tbannerContainer: {\n\t\t\tposition: \"absolute\",\n\t\t\twidth: \"75%\",\n\t\t\ttextAlign: \"center\",\n\t\t},\n\t\tbannerInner: {\n\t\t\tmargin: 4,\n\t\t\tpadding: \"8px 16px\",\n\t\t\tdisplay: \"inline-block\",\n\t\t\tbackgroundColor: Colors.panel,\n\t\t\tborderRadius: theme.shape.borderRadius,\n\t\t},\n\t\tviewHeader: {\n\t\t\tdisplay: \"flex\",\n\t\t\talignItems: \"center\",\n\t\t\tjustifyContent: \"space-between\",\n\t\t\tflexGrow: 1,\n\t\t\tmarginLeft: 12,\n\t\t\tmarginRight: 24,\n\t\t},\n\t\ttextField: {\n\t\t\tdisplay: \"block\",\n\t\t\tmargin: \"20px 0\",\n\t\t},\n\t};\n});\n\n/**\n * @typedef ComponentProps\n * @type {object}\n * @property {EventFormatBuilder} currentFormat\n * @property {EventFormatBracketView} currentView\n * @property {EventFormatBracketScoringGroup} currentScoringGroup\n * @property {EventFormatBracketColumnMatch} bindingMatch\n * @property {number} bracketEditorView\n */\n\nconst propKeys = {\n\tcurrentFormat: StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT,\n\tcurrentView: StoreKeys.EVENTFORMATBUILDER.CURRENT_VIEW,\n\tcurrentScoringGroup: StoreKeys.EVENTFORMATBUILDER.CURRENT_SCORING_GROUP,\n\tbindingMatch: StoreKeys.EVENTFORMATBUILDER.BINDING_MATCH,\n};\n\n/**\n * @param {ComponentProps} props\n */\nfunction EventFormatBracketBuilderC({\n\tcurrentFormat,\n\tcurrentView,\n\tcurrentScoringGroup,\n\tbindingMatch,\n}) {\n\tconst classNames = useStyles();\n\tconst [tabValue, setTabValue] = React.useState(0);\n\tconst [editorStage, setEditorStage] = React.useState(0);\n\tconst forceUpdate = useForceUpdate();\n\tconst focusSubject = new Subject();\n\tconst focusObservable = focusSubject.asObservable();\n\n\tconst focus = (id) => {\n\t\tif (bindingSomething()) {\n\t\t\treturn;\n\t\t}\n\n\t\tfocusSubject.next(id);\n\n\t\tsetTimeout(() => {\n\t\t\tconst element = document.getElementById(id);\n\t\t\tif (!element) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\telement.scrollIntoView(true);\n\n\t\t\tvar focusable = element.querySelectorAll(\n\t\t\t\t'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n\t\t\t);\n\t\t\tvar firstFocusable = focusable[0];\n\t\t\tfirstFocusable.focus();\n\t\t});\n\t};\n\n\tReact.useEffect(() => {\n\t\tconst callback = () => {\n\t\t\tforceUpdate();\n\t\t};\n\t\twindow.addEventListener(\"resize\", callback);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener(\"resize\", callback);\n\t\t};\n\t});\n\n\tconst onTabChange = (event, newValue) => {\n\t\tsetTabValue(newValue);\n\t};\n\n\tconst selectedPart = (identifier) => {\n\t\tswitch (editorStage) {\n\t\t\tcase 0:\n\t\t\t\tfocus(`part_${identifier}`);\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\t};\n\n\tconst selectedColumn = (identifier, columnIndex) => {\n\t\tswitch (editorStage) {\n\t\t\tcase 0:\n\t\t\t\tfocus(`${identifier}_columns_${columnIndex}`);\n\t\t\t\treturn;\n\t\t\tcase 2:\n\t\t\t\tif (!currentScoringGroup) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Scoring Group Add Column\n\t\t\t\tconst matchingIndex = currentScoringGroup.columns.findIndex(\n\t\t\t\t\t(c) => c.part === identifier && c.col === columnIndex\n\t\t\t\t);\n\t\t\t\tif (matchingIndex === -1) {\n\t\t\t\t\tcurrentScoringGroup.columns.push({\n\t\t\t\t\t\tpart: identifier,\n\t\t\t\t\t\tcol: columnIndex,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tcurrentScoringGroup.columns.splice(matchingIndex, 1);\n\t\t\t\t}\n\n\t\t\t\tconst storeUpdate = {};\n\t\t\t\tstoreUpdate[StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT] =\n\t\t\t\t\tcurrentFormat;\n\t\t\t\tstoreUpdate[StoreKeys.EVENTFORMATBUILDER.CURRENT_SCORING_GROUP] =\n\t\t\t\t\tcurrentScoringGroup;\n\t\t\t\tStore.setMany(storeUpdate);\n\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\t};\n\n\tconst selectedParty = (event, match, isTop) => {\n\t\tswitch (editorStage) {\n\t\t\tcase 0:\n\t\t\t\thandleBracketMatchClick(event, match, isTop);\n\t\t\t\treturn;\n\t\t\tcase 1:\n\t\t\t\thandleViewMatchClick(event, match, isTop);\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\t};\n\n\tconst handleBracketMatchClick = (event, match, isTop) => {\n\t\t// If we are binding a match...\n\t\tif (bindingMatch) {\n\t\t\tconst targetColumnMatch = findColumnMatchById(\n\t\t\t\tcurrentStage.bracket,\n\t\t\t\tbindingMatch.bracketMatchId\n\t\t\t);\n\t\t\tconst columnMatch = findColumnMatchById(currentStage.bracket, match.id);\n\t\t\ttargetColumnMatch.loserPath = {\n\t\t\t\tpart: columnMatch.part,\n\t\t\t\tcol: columnMatch.col,\n\t\t\t\tcolIndex: columnMatch.colIndex,\n\t\t\t\tisTop,\n\t\t\t};\n\t\t\tStore.cacheChanges();\n\t\t\tapplyBracketUpdates();\n\t\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.BINDING_MATCH, null);\n\t\t\tStore.applyChanges();\n\t\t\treturn;\n\t\t}\n\t\t// We want to map this match dropdown to another match\n\t\telse if (event.shiftKey) {\n\t\t\t// Focus on the match we are updating.\n\t\t\tconst matchId = match.id;\n\t\t\tconst columnMatch = findColumnMatchById(currentStage.bracket, matchId);\n\t\t\tfocus(\n\t\t\t\t`${columnMatch.part}_columns_${columnMatch.col}_matches_${columnMatch.colIndex}`\n\t\t\t);\n\t\t\t// Select it as the match we are mapping.\n\t\t\tmapLoserMatch(match);\n\t\t\treturn;\n\t\t} else {\n\t\t\tconst matchId = match.id;\n\t\t\tconst columnMatch = findColumnMatchById(currentStage.bracket, matchId);\n\t\t\tfocus(\n\t\t\t\t`${columnMatch.part}_columns_${columnMatch.col}_matches_${columnMatch.colIndex}`\n\t\t\t);\n\t\t}\n\t};\n\n\tconst handleViewMatchClick = (event, match, isTop) => {\n\t\tif (!currentView) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst columnMatch = findColumnMatchById(currentStage.bracket, match.id);\n\t\t/** @type {EventFormatBracketColumnMatchTarget} */\n\t\tconst matchPath = {\n\t\t\tpart: columnMatch.part,\n\t\t\tcol: columnMatch.col,\n\t\t\tcolIndex: columnMatch.colIndex,\n\t\t};\n\n\t\tconst targetMatchIndex = currentView.matches.findIndex(\n\t\t\t(m) =>\n\t\t\t\tm.part === matchPath.part &&\n\t\t\t\tm.col === matchPath.col &&\n\t\t\t\tm.colIndex === matchPath.colIndex\n\t\t);\n\n\t\tif (targetMatchIndex >= 0) {\n\t\t\tcurrentView.matches.splice(targetMatchIndex, 1);\n\t\t} else {\n\t\t\tcurrentView.matches.push(matchPath);\n\t\t}\n\n\t\tconst storeUpdate = {};\n\t\tstoreUpdate[StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT] = currentFormat;\n\t\tstoreUpdate[StoreKeys.EVENTFORMATBUILDER.CURRENT_VIEW] = currentView;\n\t\tStore.setMany(storeUpdate);\n\t};\n\n\tconst bindingSomething = () => {\n\t\treturn (\n\t\t\tStore.get(StoreKeys.EVENTFORMATBUILDER.BINDING_MATCH) ||\n\t\t\tStore.get(StoreKeys.EVENTFORMATBUILDER.CURRENT_VIEW) ||\n\t\t\tStore.get(StoreKeys.EVENTFORMATBUILDER.CURRENT_SCORING_GROUP)\n\t\t);\n\t};\n\n\tconst handleChangeStage = (stage) => {\n\t\tsetEditorStage(stage);\n\t\tconst storeUpdate = {};\n\t\tstoreUpdate[StoreKeys.EVENTFORMATBUILDER.BINDING_MATCH] = null;\n\t\tstoreUpdate[StoreKeys.EVENTFORMATBUILDER.CURRENT_VIEW] = null;\n\t\tstoreUpdate[StoreKeys.EVENTFORMATBUILDER.CURRENT_SCORING_GROUP] = null;\n\t\tStore.setMany(storeUpdate);\n\t};\n\n\t/**\n\t *\n\t * @param {EventFormatBracketColumnMatch} match\n\t */\n\tconst mapLoserMatch = (match) => {\n\t\tmatch.loserPath = null;\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.BINDING_MATCH, match);\n\t};\n\n\tReact.useEffect(() => {\n\t\tpopulateDefaultBracket(currentFormat);\n\t});\n\n\tconst bracketStages =\n\t\tcurrentFormat?.data?.stages?.filter(\n\t\t\t(s) =>\n\t\t\t\t(s.type === EventStageTypes.Group &&\n\t\t\t\t\ts.groupStageDetails.hasGroupBrackets) ||\n\t\t\t\ts.type === EventStageTypes.Playoffs\n\t\t) ?? [];\n\n\tif (bracketStages.length === 0) {\n\t\treturn <>;\n\t}\n\n\tconst currentStage = bracketStages[tabValue];\n\n\tconst applyBracketUpdates = () => {\n\t\tapplyChangesToBracket(currentStage?.bracket);\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, currentFormat);\n\t};\n\n\tconst getEditorPhaseName = () => {\n\t\tswitch (editorStage) {\n\t\t\tcase 0:\n\t\t\t\treturn \"Bracket Details\";\n\t\t\tcase 1:\n\t\t\t\treturn \"View Definition\";\n\t\t\tcase 2:\n\t\t\t\treturn \"Scoring Breakdown\";\n\t\t\tdefault:\n\t\t\t\treturn \"\";\n\t\t}\n\t};\n\n\tconst highlightedMatchIds =\n\t\tcurrentView?.matches?.map((m) =>\n\t\t\tgetBracketMatchIdByTarget(currentStage?.bracket, m)\n\t\t) ??\n\t\tflattenArrayList(\n\t\t\tcurrentScoringGroup?.columns?.map((c) =>\n\t\t\t\tgetBracketMatchIdsByTargetColumn(currentStage?.bracket, c)\n\t\t\t)\n\t\t);\n\n\tconst headerNames = getHeaderNamesFromBracket(currentStage.bracket);\n\tconst useSeriesScore =\n\t\tcurrentStage?.type === EventStageTypes.Playoffs\n\t\t\t? currentStage?.playoffDetails?.useSeriesScore\n\t\t\t: currentStage?.groupStageDetails?.useSeriesScore;\n\n\tconst bracketWidth = (window.innerWidth - 32) * 0.75;\n\n\treturn (\n\t\t<>\n\t\t\t

Bracket Builder

\n\t\t\t\n\t\t\t\t{bracketStages.map((s, index) => {\n\t\t\t\t\treturn ;\n\t\t\t\t})}\n\t\t\t\n\t\t\t
\n\t\t\t\t{bindingMatch && (\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tSelect the slot the loser will move to\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t\t{currentView && (\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tSelect the matches the view contains\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t\t{currentScoringGroup && (\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tSelect the columns in the scoring group\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\t\t{currentStage?.bracket?.matches && (\n\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tonUpperClick={() => {\n\t\t\t\t\t\t\t\teditorStage === 0 && selectedPart(\"UB\");\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonLowerClick={() => {\n\t\t\t\t\t\t\t\teditorStage === 0 && selectedPart(\"LB\");\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonFinalsClick={() => {\n\t\t\t\t\t\t\t\teditorStage === 0 && selectedPart(\"GF\");\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonColumnClick={selectedColumn}\n\t\t\t\t\t\t\tonPartyClick={selectedParty}\n\t\t\t\t\t\t\tcustomHeaderNames={headerNames}\n\t\t\t\t\t\t\thideSeriesScore={!useSeriesScore}\n\t\t\t\t\t\t\thighlightMatchIds={highlightedMatchIds}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\thandleChangeStage(editorStage - 2);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\thandleChangeStage(editorStage + 2);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t{editorStage === 0 && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t{editorStage === 1 && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t{editorStage === 2 && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t);\n}\n\n/**\n * @typedef BracketDetailsEditorProps\n * @type {object}\n * @property {any} classNames\n * @property {EventFormatBuilder} currentFormat\n * @property {EventFormatStage} currentStage\n * @property {Observable} focusObservable\n * @property {(match: EventFormatBracketColumnMatch) => void} mapLoserMatch\n * @property {() => void} onApply\n */\n\n/**\n * @param {BracketDetailsEditorProps} props\n */\nfunction BracketDetailsEditor({\n\tclassNames,\n\tcurrentFormat,\n\tcurrentStage,\n\tfocusObservable,\n\tmapLoserMatch,\n\tonApply,\n}) {\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t
\n\t\t\t\t{currentStage?.bracket?.parts?.map((part) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t{getPartName(part?.identifier)}}\n\t\t\t\t\t\t\tchildClassName={classNames.subEditor}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tpart.columnCount = Number(e.target.value);\n\t\t\t\t\t\t\t\t\tif (part.columnCount > 9) {\n\t\t\t\t\t\t\t\t\t\tpart.columnCount = 9;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tmodifyPartColumns(part);\n\t\t\t\t\t\t\t\t\tStore.set(\n\t\t\t\t\t\t\t\t\t\tStoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT,\n\t\t\t\t\t\t\t\t\t\tcurrentFormat\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t{currentStage?.bracket?.parts?.map((part) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t{getPartName(part?.identifier)} Details}\n\t\t\t\t\t\t\tchildClassName={classNames.subEditor}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tColumns}\n\t\t\t\t\t\t\t\tchildClassName={classNames.subEditor}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{part?.columns?.map((column, index) => {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\tColumn {index + 1}}\n\t\t\t\t\t\t\t\t\t\t\tchildClassName={classNames.subEditor}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn.name = e.target.value;\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn.matchCount = Number(e.target.value);\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn.bestOf = Number(e.target.value);\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn.bothTeamsAdvance = e.target.checked;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonApply();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn.lockPicks = e.target.checked;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonApply();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tMatches}\n\t\t\t\t\t\t\t\t\t\t\t\tchildClassName={classNames.subEditor}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{column?.matches?.map((match, matchIndex) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tMatch {matchIndex + 1}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchildClassName={classNames.subEditor}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t mapLoserMatch(match)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{match.loserPath\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"Remap Loser Path\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"Map Loser Path\"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{match.loserPath && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
Part: {match.loserPath.part}
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
Col: {match.loserPath.col}
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tCol Index: {match.loserPath.colIndex}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tIs Top:{\" \"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{match.loserPath.isTop ? \"Yes\" : \"No\"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t
\n\t\t\n\t);\n}\n\nfunction EventFormatBracketBuilder(props) {\n\treturn connect(, propKeys, props);\n}\n\n/**\n * @typedef ViewDefinitionEditorProps\n * @type {object}\n * @property {any} classNames\n * @property {EventFormatBuilder} currentFormat\n * @property {EventFormatStage} currentStage\n */\n\n/**\n * @param {ViewDefinitionEditorProps} props\n */\nfunction ViewDefinitionEditor({ classNames, currentFormat, currentStage }) {\n\tconst [editingView, setEditingView] = React.useState(null);\n\tconst [editingViewMatchIndex, setEditingViewMatchIndex] =\n\t\tReact.useState(null);\n\n\tReact.useEffect(() => {\n\t\tif (currentStage.bracket && !currentStage.bracket.views) {\n\t\t\tcurrentStage.bracket.views = [];\n\t\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, currentFormat);\n\t\t}\n\t}, [currentFormat, currentStage]);\n\n\tconst addView = (index) => {\n\t\tcurrentStage.bracket.views.push(\n\t\t\tnew EventFormatBracketView(`New View ${index + 1}`, true, [])\n\t\t);\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, currentFormat);\n\t};\n\n\tconst modifyView = (view, index) => {\n\t\tsetEditingViewMatchIndex(index);\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_VIEW, view);\n\t};\n\n\tconst finishModifying = () => {\n\t\tsetEditingViewMatchIndex(null);\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_VIEW, null);\n\t};\n\n\tconst deleteView = (index) => {\n\t\tcurrentStage.bracket.views.splice(index, 1);\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, currentFormat);\n\t};\n\n\treturn (\n\t\t
\n\t\t\t{currentStage.bracket?.views?.map((view, index) => {\n\t\t\t\treturn (\n\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{editingView === index && (\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tsetEditingView(null);\n\t\t\t\t\t\t\t\t\t\t\tStore.set(\n\t\t\t\t\t\t\t\t\t\t\t\tStoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT,\n\t\t\t\t\t\t\t\t\t\t\t\tcurrentFormat\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tinputRef={(input) => input && input.focus()}\n\t\t\t\t\t\t\t\t\t\tclassName={classNames.editorField}\n\t\t\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\t\t\tview.name = e.target.value;\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{editingView !== index && (\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tsetEditingView(index);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{view.name}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t deleteView(index)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{editingViewMatchIndex !== index && (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tmodifyView(view, index);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tModify View\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{editingViewMatchIndex === index && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t})}\n\t\t\t
\n\t\t\t\t {\n\t\t\t\t\t\taddView(currentStage.bracket.views.length);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\tAdd View\n\t\t\t\t\n\t\t\t
\n\t\t\n\t);\n}\n\n/**\n * @typedef ScoringBreakdownEditorProps\n * @type {object}\n * @property {any} classNames\n * @property {EventFormatBuilder} currentFormat\n * @property {EventFormatStage} currentStage\n */\n\n/**\n * @param {ScoringBreakdownEditorProps} props\n */\nfunction ScoringBreakdownEditor({ classNames, currentFormat, currentStage }) {\n\tconst [editingGroup, setEditingGroup] = React.useState(null);\n\tconst [editingScoringGroupIndex, setEditingScoringGroupIndex] =\n\t\tReact.useState(null);\n\n\tReact.useEffect(() => {\n\t\tif (!currentStage.bracket.scoringGroups) {\n\t\t\tcurrentStage.bracket.scoringGroups = [];\n\t\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, currentFormat);\n\t\t}\n\t}, [currentFormat, currentStage]);\n\n\tconst addGroup = (index) => {\n\t\tcurrentStage.bracket.scoringGroups.push(\n\t\t\tnew EventFormatBracketScoringGroup(`New Scoring Group ${index + 1}`)\n\t\t);\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, currentFormat);\n\t};\n\n\tconst modifyGroup = (sGroup, index) => {\n\t\tsetEditingScoringGroupIndex(index);\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_SCORING_GROUP, sGroup);\n\t};\n\n\tconst finishModifying = () => {\n\t\tsetEditingScoringGroupIndex(null);\n\t\tbuildScoringDetails(currentFormat);\n\n\t\tconst storeUpdate = {};\n\t\tstoreUpdate[StoreKeys.EVENTFORMATBUILDER.CURRENT_SCORING_GROUP] = null;\n\t\tstoreUpdate[StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT] = currentFormat;\n\t\tStore.setMany(storeUpdate);\n\t};\n\n\t/**\n\t *\n\t * @param {EventFormatBracketScoringGroup} sGroup\n\t * @param {boolean} value\n\t */\n\tconst toggleScoringGroupScoreParticipants = (sGroup, value) => {\n\t\tsGroup.scoreParticipants = value;\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, currentFormat);\n\t};\n\n\t/**\n\t *\n\t * @param {EventFormatBracketScoringGroup} sGroup\n\t * @param {boolean} value\n\t */\n\tconst toggleScoringGroupScoreWinnersOnly = (sGroup, value) => {\n\t\tsGroup.scoreWinnersOnly = value;\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, currentFormat);\n\t};\n\n\t/**\n\t *\n\t * @param {EventFormatBracketScoringGroup} sGroup\n\t * @param {boolean} value\n\t */\n\tconst toggleScoringGroupScorePlacement = (sGroup, value) => {\n\t\tsGroup.scorePlacement = value;\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, currentFormat);\n\t};\n\n\tconst deleteGroup = (index) => {\n\t\tcurrentStage.bracket.scoringGroups.splice(index, 1);\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, currentFormat);\n\t};\n\n\tconst previewScoringBreakdown = () => {\n\t\tbuildScoringDetails(currentFormat);\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, currentFormat);\n\n\t\tModalHelper.openModal(, null, {\n\t\t\tgroups: currentFormat.data.scoringBreakdown.groups,\n\t\t});\n\t};\n\n\treturn (\n\t\t
\n\t\t\t{currentStage.bracket.scoringGroups?.map((sGroup, index) => {\n\t\t\t\treturn (\n\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{editingGroup === index && (\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tsetEditingGroup(null);\n\t\t\t\t\t\t\t\t\t\t\tStore.set(\n\t\t\t\t\t\t\t\t\t\t\t\tStoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT,\n\t\t\t\t\t\t\t\t\t\t\t\tcurrentFormat\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tinputRef={(input) => input && input.focus()}\n\t\t\t\t\t\t\t\t\t\tclassName={classNames.editorField}\n\t\t\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\t\t\tsGroup.name = e.target.value;\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{editingGroup !== index && (\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tsetEditingGroup(index);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{sGroup.name}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t deleteGroup(index)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{editingScoringGroupIndex !== index && (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tmodifyGroup(sGroup, index);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t  Modify Group\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{editingScoringGroupIndex === index && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\ttoggleScoringGroupScoreParticipants(\n\t\t\t\t\t\t\t\t\t\t\t\tsGroup,\n\t\t\t\t\t\t\t\t\t\t\t\tevent.target.checked\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t{sGroup.scoreParticipants && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\ttoggleScoringGroupScoreWinnersOnly(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsGroup,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.target.checked\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tStore.set(\n\t\t\t\t\t\t\t\t\t\t\t\tStoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT,\n\t\t\t\t\t\t\t\t\t\t\t\tcurrentFormat\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\t\t\t\t\tsGroup.pointsPerCorrectParticipant = Number(\n\t\t\t\t\t\t\t\t\t\t\t\tevent.target.value\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\ttoggleScoringGroupScorePlacement(\n\t\t\t\t\t\t\t\t\t\t\t\tsGroup,\n\t\t\t\t\t\t\t\t\t\t\t\tevent.target.checked\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t})}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t {\n\t\t\t\t\t\t\taddGroup(currentStage.bracket.scoringGroups.length);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t  Add Scoring Group\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t);\n}\n\n/**\n *\n * @param {EventFormatBuilder} currentFormat\n */\nexport function populateDefaultBracket(currentFormat) {\n\tlet didUpdate = false;\n\tif (\n\t\tcurrentFormat &&\n\t\tcurrentFormat.data &&\n\t\t!currentFormat.data.scoringBreakdown\n\t) {\n\t\t// Build from current data.\n\t\tbuildScoringDetails(currentFormat);\n\t\tdidUpdate = true;\n\t}\n\n\tfor (const stage of currentFormat?.data?.stages) {\n\t\tif (stage.type === EventStageTypes.Group && !stage.bracket) {\n\t\t\tstage.bracket = {\n\t\t\t\tviews: [],\n\t\t\t\tparts: [\n\t\t\t\t\t{\n\t\t\t\t\t\tidentifier: \"UB\",\n\t\t\t\t\t\tcolumnCount: 2,\n\t\t\t\t\t\tcolumns: [],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tidentifier: \"LB\",\n\t\t\t\t\t\tcolumnCount: 2,\n\t\t\t\t\t\tcolumns: [],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tinitializeBracket(stage.bracket);\n\t\t\tdidUpdate = true;\n\t\t} else if (stage.type === EventStageTypes.Playoffs && !stage.bracket) {\n\t\t\tstage.bracket = {\n\t\t\t\tviews: [],\n\t\t\t\tparts: [\n\t\t\t\t\t{\n\t\t\t\t\t\tidentifier: \"UB\",\n\t\t\t\t\t\tcolumns: [],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tidentifier: \"LB\",\n\t\t\t\t\t\tcolumns: [],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tidentifier: \"GF\",\n\t\t\t\t\t\tcolumns: [],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tinitializeBracket(stage.bracket);\n\t\t\tdidUpdate = true;\n\t\t}\n\t}\n\n\tif (didUpdate) {\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, currentFormat);\n\t}\n}\n\nexport default EventFormatBracketBuilder;\n/**\n *\n * @param {EventFormatBracket} bracket\n */\nexport function initializeBracket(bracket) {\n\tfor (const part of bracket.parts) {\n\t\tmodifyPartColumns(part);\n\t}\n}\n\n/**\n *\n * @param {EventFormatBracketPart} part\n */\nexport function modifyPartColumns(part) {\n\tfor (let i = 0; i < part.columnCount; i++) {\n\t\t/** @type {EventFormatBracketColumn} */\n\t\tlet column = null;\n\t\tconst isColumnAdd = i >= part.columns.length;\n\t\tif (isColumnAdd) {\n\t\t\tcolumn = {\n\t\t\t\t//name: getColumnName(part.identifier, i, part.columnCount),\n\t\t\t\tindex: i,\n\t\t\t\tmatches: [],\n\t\t\t\tmatchCount: getMatchCount(part.identifier, i, part.columnCount),\n\t\t\t\tbestOf: 5,\n\t\t\t};\n\n\t\t\tpart.columns.push(column);\n\t\t} else {\n\t\t\tcolumn = part.columns[i];\n\t\t}\n\n\t\tif (column.matchCount < column.matches.length) {\n\t\t\tcolumn.matches = column.matches.slice(0, column.matchCount);\n\t\t} else {\n\t\t\tfor (let j = column.matches.length; j < column.matchCount; j++) {\n\t\t\t\tcolumn.matches.push({\n\t\t\t\t\tpart: part.identifier,\n\t\t\t\t\tcol: i,\n\t\t\t\t\tcolIndex: j,\n\t\t\t\t\tloserPath: null,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n *\n * @param {EventFormatBracket} bracket\n */\nexport function applyChangesToBracket(bracket) {\n\tfor (const part of bracket.parts) {\n\t\tif (part.columns.length > part.columnCount) {\n\t\t\tpart.columns = part.columns.slice(0, part.columnCount);\n\t\t}\n\n\t\tmodifyPartColumns(part);\n\t}\n\n\tgenerateBracketMatchesFromBracket(bracket);\n}\n\n/**\n * Build matches from bracket data.\n * @param {EventFormatBracket} bracket\n */\nexport function generateBracketMatchesFromBracket(bracket) {\n\tbracket.matches = {\n\t\tupper: [],\n\t\tlower: [],\n\t};\n\n\tfor (const part of bracket.parts) {\n\t\t/** @type {MatchType[]} */\n\t\tconst target =\n\t\t\tpart.identifier === \"LB\" ? bracket.matches.lower : bracket.matches.upper;\n\t\tfor (let i = 0; i < part.columnCount; i++) {\n\t\t\tconst column = part.columns[i];\n\n\t\t\tfor (let j = 0; j < column.matchCount; j++) {\n\t\t\t\tconst columnMatch = column.matches[j];\n\t\t\t\tconst bracketMatch = {\n\t\t\t\t\tid: uuidv4(),\n\t\t\t\t\tnextMatchId: null,\n\t\t\t\t\tnextLoserMatchId: null,\n\t\t\t\t\tstate: \"PLAYED\",\n\t\t\t\t\tparticipants: [],\n\t\t\t\t\tstartTime: \"\",\n\t\t\t\t\tbothTeamsAdvance: column.bothTeamsAdvance,\n\t\t\t\t};\n\t\t\t\tcolumnMatch.bracketMatchId = bracketMatch.id;\n\t\t\t\ttarget.push(bracketMatch);\n\t\t\t}\n\t\t}\n\t}\n\n\tmapNextMatches(bracket);\n}\n\n/**\n * Map match connections from bracket data.\n * @param {EventFormatBracket} bracket\n */\nexport function mapNextMatches(bracket) {\n\tmapUpperBracketMatches(bracket);\n\tmapLowerBracketMatches(bracket);\n}\n\n/**\n * Map match connections from bracket data.\n * @param {EventFormatBracket} bracket\n */\nexport function mapUpperBracketMatches(bracket) {\n\tconst part = bracket.parts[0];\n\tconst finalsPart = bracket.parts[2];\n\tfor (let i = 0; i < part.columnCount; i++) {\n\t\tconst column = part.columns[i];\n\t\tconst nextColumnSameCount =\n\t\t\ti + 1 < part.columnCount &&\n\t\t\tcolumn.matchCount === part.columns[i + 1].matchCount;\n\n\t\tfor (let j = 0; j < column.matchCount; j++) {\n\t\t\tconst columnMatch = column.matches[j];\n\t\t\t/** @type {MatchType} */\n\t\t\tconst bracketMatch = findBracketMatchById(\n\t\t\t\tbracket,\n\t\t\t\tcolumnMatch.bracketMatchId\n\t\t\t);\n\n\t\t\tif (nextColumnSameCount) {\n\t\t\t\tconst nextColumnMatch = part.columns[i + 1].matches[j];\n\t\t\t\tbracketMatch.nextMatchId = nextColumnMatch?.bracketMatchId;\n\t\t\t} else if (i < part.columnCount - 1) {\n\t\t\t\tconst nextColumnMatch = part.columns[i + 1].matches[Math.floor(j / 2)];\n\t\t\t\tbracketMatch.nextMatchId = nextColumnMatch?.bracketMatchId;\n\t\t\t} else if (i === part.columnCount - 1 && finalsPart?.columnCount > 0) {\n\t\t\t\tconst nextColumnMatch =\n\t\t\t\t\tfinalsPart.columns[0].matches[Math.floor(j / 2)];\n\t\t\t\tbracketMatch.nextMatchId = nextColumnMatch?.bracketMatchId;\n\t\t\t}\n\n\t\t\tif (columnMatch.loserPath) {\n\t\t\t\tconst loserPath = columnMatch.loserPath;\n\t\t\t\tconst loserPart = bracket.parts.find(\n\t\t\t\t\t(p) => p.identifier === loserPath.part\n\t\t\t\t);\n\t\t\t\tif (loserPart.columnCount > loserPath.col) {\n\t\t\t\t\tconst loserColumn = loserPart.columns[loserPath.col];\n\t\t\t\t\tif (loserColumn.matchCount > loserPath.colIndex) {\n\t\t\t\t\t\tconst loserColumnMatch = loserColumn.matches[loserPath.colIndex];\n\t\t\t\t\t\tbracketMatch.nextLooserMatchId = loserColumnMatch.bracketMatchId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Map match connections from bracket data.\n * @param {EventFormatBracket} bracket\n */\nexport function mapLowerBracketMatches(bracket) {\n\tconst part = bracket.parts[1];\n\tconst finalsPart = bracket.parts[2];\n\n\tif (part.columnCount === 0) {\n\t\treturn;\n\t}\n\n\tlet nextColumn = null;\n\tfor (let i = 0; i < part.columnCount; i++) {\n\t\tconst column = part.columns[i];\n\n\t\tif (i + 1 < part.columns.length) {\n\t\t\tnextColumn = part.columns[i + 1];\n\t\t} else {\n\t\t\tnextColumn = null;\n\t\t}\n\n\t\tfor (let j = 0; j < column.matchCount; j++) {\n\t\t\tconst columnMatch = column.matches[j];\n\t\t\t/** @type {MatchType} */\n\t\t\tconst bracketMatch = findBracketMatchById(\n\t\t\t\tbracket,\n\t\t\t\tcolumnMatch.bracketMatchId\n\t\t\t);\n\n\t\t\tconst isLastcolumn = i + 1 === part.columnCount;\n\t\t\tif (isLastcolumn) {\n\t\t\t\tif (finalsPart?.columnCount > 0) {\n\t\t\t\t\tconst nextColumnMatch =\n\t\t\t\t\t\tfinalsPart.columns[0].matches[Math.floor(j / 2)];\n\t\t\t\t\tbracketMatch.nextMatchId = nextColumnMatch?.bracketMatchId;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst directFeed =\n\t\t\t\t\tcolumn.matches.length === nextColumn?.matches?.length;\n\t\t\t\tif (directFeed) {\n\t\t\t\t\tconst nextColumnMatch = part.columns[i + 1].matches[j];\n\t\t\t\t\tbracketMatch.nextMatchId = nextColumnMatch?.bracketMatchId;\n\t\t\t\t} else {\n\t\t\t\t\tconst nextColumnMatch =\n\t\t\t\t\t\tpart.columns[i + 1].matches[Math.floor(j / 2)];\n\t\t\t\t\tbracketMatch.nextMatchId = nextColumnMatch?.bracketMatchId;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n *\n * @param {Array>} arrayList\n * @returns {Array}\n */\nexport function flattenArrayList(arrayList) {\n\tconst parentArray = [];\n\tif (!arrayList) {\n\t\treturn parentArray;\n\t}\n\n\tfor (const array of arrayList) {\n\t\tfor (const item of array) {\n\t\t\tparentArray.push(item);\n\t\t}\n\t}\n\treturn parentArray;\n}\n\n/**\n * Determines if an item has a matching record that exists in the provided array\n * based on the provided props.\n *\n * @param {Array} otherArray\n * @param {any} item\n * @param {Array} props\n * @returns {boolean}\n */\nexport function targetArrayHasMatchingRecord(otherArray, item, props) {\n\tif (!otherArray) {\n\t\treturn false;\n\t}\n\n\treturn (\n\t\totherArray.filter((other) => {\n\t\t\tlet matching = true;\n\t\t\tfor (let prop of props) {\n\t\t\t\tmatching = item[prop] === other[prop];\n\t\t\t\tif (!matching) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn matching;\n\t\t}).length > 0\n\t);\n}\n","import {\n\tButton,\n\tCheckbox,\n\tDialog,\n\tDialogActions,\n\tDialogContent,\n\tDialogTitle,\n\tFormControlLabel,\n\tIconButton,\n\tList,\n\tListItem,\n\tListItemSecondaryAction,\n\tListItemText,\n\tmakeStyles,\n\tMenuItem,\n\tSelect,\n\tTextField,\n} from \"@material-ui/core\";\nimport { EditOutlined } from \"@material-ui/icons\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport { connect } from \"common/connect\";\nimport { EventStageTypes } from \"common/constants/EventStageTypes\";\n// eslint-disable-next-line no-unused-vars\nimport {\n\tEventFormatStage,\n\tbuildScoringDetails,\n} from \"common/helpers/eventFormatHelper\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport * as React from \"react\";\nimport { Colors } from \"styles/Colors\";\n\nconst useStyles = makeStyles((theme) => {\n\treturn {\n\t\tdialog: {\n\t\t\t\"& .MuiPaper-root\": {\n\t\t\t\tbackgroundColor: `${Colors.panel}`,\n\t\t\t},\n\t\t},\n\t\tform: {\n\t\t\tmaxWidth: 400,\n\t\t\t\"& .MuiInputBase-root\": {\n\t\t\t\toverflow: \"hidden\",\n\t\t\t},\n\t\t},\n\t\tlist: {\n\t\t\tmarginTop: theme.spacing() * 2,\n\t\t\tmarginBottom: theme.spacing() * 2,\n\t\t\tborderRadius: theme.spacing() * 2,\n\t\t\tborder: `1px solid ${Colors.panel}`,\n\t\t\t\"& .MuiListItem-container\": {\n\t\t\t\t\"&:not(:last-child)\": {\n\t\t\t\t\tborderBottom: `1px solid ${Colors.panel}`,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tpaper: {\n\t\t\tcolor: Colors.primary,\n\t\t\tbackgroundColor: Colors.panel,\n\t\t},\n\t\tselect: {\n\t\t\tmargin: \"20px 0\",\n\t\t},\n\t\ttextField: {\n\t\t\tdisplay: \"block\",\n\t\t\tmargin: \"20px 0\",\n\t\t},\n\t};\n});\n\n/**\n * @typedef ComponentProps\n * @type {object}\n * @property {EventFormatBuilder} currentFormat\n */\n\nconst propKeys = {\n\tcurrentFormat: StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT,\n};\n\n/**\n * @param {ComponentProps} props\n */\nfunction EventFormatDetailsC({ currentFormat }) {\n\tconst classNames = useStyles();\n\tconst [currentStage, setCurrentStage] = React.useState(\n\t\tnew EventFormatStage()\n\t);\n\tconst [currentStageIndex, setCurrentStageIndex] = React.useState(-1);\n\tconst [isDialogOpen, setIsDialogOpen] = React.useState(false);\n\n\tconst onChangeName = (event) => {\n\t\tconst name = event.target.value;\n\t\tcurrentFormat.eventFormat.name = name;\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, currentFormat);\n\t};\n\n\tconst addStage = () => {\n\t\tsetIsDialogOpen(true);\n\t\tsetCurrentStage(new EventFormatStage());\n\t\tsetCurrentStageIndex(-1);\n\t};\n\n\tconst editStage = (stage, index) => {\n\t\tsetIsDialogOpen(true);\n\t\tsetCurrentStage(stage);\n\t\tsetCurrentStageIndex(index);\n\t};\n\n\tconst deleteStage = (index) => {\n\t\t// TODO: confirmation popup: 'Are you sure'\n\t\tcurrentFormat.data.stages.splice(index, 1);\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, currentFormat);\n\t};\n\n\tconst onDialogClose = () => {\n\t\tsetIsDialogOpen(false);\n\t};\n\n\tconst eventStageSave = () => {\n\t\tif (currentStageIndex === -1) {\n\t\t\tcurrentFormat.data.stages.push(currentStage);\n\t\t} else {\n\t\t\tcurrentFormat.data.stages[currentStageIndex] = currentStage;\n\t\t}\n\n\t\tbuildScoringDetails(currentFormat);\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, currentFormat);\n\t\tsetIsDialogOpen(false);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t
\n\t\t\t\t\n\n\t\t\t\t

Stages

\n\n\t\t\t\t\n\t\t\t\t\t{currentFormat.data.stages.map((stage, index) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t editStage(stage, index)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t deleteStage(index)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{currentStageIndex === -1 ? `Add Event Stage` : `Edit Event Stage`}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsetCurrentStage({ ...currentStage, name: event.target.value })\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsetCurrentStage({ ...currentStage, type: event.target.value })\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tMenuProps={{ PaperProps: { className: classNames.paper } }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tGroup Stage\n\t\t\t\t\t\t\tSwiss Stage\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tPlayoffs Stage\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t{currentStage.type === EventStageTypes.Group && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\t\t\t\tgroupStageDetails: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...currentStage.groupStageDetails,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thasGroupBrackets: event.target.checked,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tuseSeriesScore: event.target.checked\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? currentStage.groupStageDetails?.useSeriesScore\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: false,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{currentStage.groupStageDetails?.hasGroupBrackets && (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgroupStageDetails: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...currentStage.groupStageDetails,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tuseSeriesScore: event.target.checked,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\tgroupStageDetails: {\n\t\t\t\t\t\t\t\t\t\t\t...currentStage.groupStageDetails,\n\t\t\t\t\t\t\t\t\t\t\tgroupCount: event.target.value,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\tgroupStageDetails: {\n\t\t\t\t\t\t\t\t\t\t\t...currentStage.groupStageDetails,\n\t\t\t\t\t\t\t\t\t\t\ttotalAdvancing: event.target.value,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\tgroupStageDetails: {\n\t\t\t\t\t\t\t\t\t\t\t...currentStage.groupStageDetails,\n\t\t\t\t\t\t\t\t\t\t\tpointsPerAdvancing: event.target.value,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\t\t\tgroupStageDetails: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...currentStage.groupStageDetails,\n\t\t\t\t\t\t\t\t\t\t\t\t\tscoreFirstPlace: event.target.checked,\n\t\t\t\t\t\t\t\t\t\t\t\t\tscoreSecondPlace:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.target.checked &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentStage.groupStageDetails.scoreSecondPlace,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlabel=\"Score First Place\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{currentStage.groupStageDetails?.scoreFirstPlace && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\t\t\tgroupStageDetails: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...currentStage.groupStageDetails,\n\t\t\t\t\t\t\t\t\t\t\t\t\tpointsPerFirstPlace: event.target.value,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgroupStageDetails: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...currentStage.groupStageDetails,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tscoreSecondPlace: event.target.checked,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tlabel=\"Score Second Place\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{currentStage.groupStageDetails?.scoreSecondPlace && (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\t\t\t\tgroupStageDetails: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...currentStage.groupStageDetails,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpointsPerSecondPlace: event.target.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t{currentStage.type === EventStageTypes.Swiss && (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\tswissStageDetails: {\n\t\t\t\t\t\t\t\t\t\t\t...currentStage.swissStageDetails,\n\t\t\t\t\t\t\t\t\t\t\tadvancingCount: event.target.value,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\tswissStageDetails: {\n\t\t\t\t\t\t\t\t\t\t\t...currentStage.swissStageDetails,\n\t\t\t\t\t\t\t\t\t\t\tpointsPerAdvancing: event.target.value,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\tswissStageDetails: {\n\t\t\t\t\t\t\t\t\t\t\t...currentStage.swissStageDetails,\n\t\t\t\t\t\t\t\t\t\t\tcleanSweepWinnerCount: event.target.value,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\tswissStageDetails: {\n\t\t\t\t\t\t\t\t\t\t\t...currentStage.swissStageDetails,\n\t\t\t\t\t\t\t\t\t\t\tpointsPerCorrectWinner: event.target.value,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\tswissStageDetails: {\n\t\t\t\t\t\t\t\t\t\t\t...currentStage.swissStageDetails,\n\t\t\t\t\t\t\t\t\t\t\tcleanSweepLoserCount: event.target.value,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\tswissStageDetails: {\n\t\t\t\t\t\t\t\t\t\t\t...currentStage.swissStageDetails,\n\t\t\t\t\t\t\t\t\t\t\tpointsPerCorrectLoser: event.target.value,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t
\n\t\t\t\t\t)}\n\t\t\t\t\t{currentStage.type === EventStageTypes.Playoffs && (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\t\t\tplayoffDetails: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...currentStage.playoffDetails,\n\t\t\t\t\t\t\t\t\t\t\t\t\tuseSeriesScore: event.target.checked,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlabel=\"Use Series Score\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\t\t\tplayoffDetails: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...currentStage.playoffDetails,\n\t\t\t\t\t\t\t\t\t\t\t\t\thasBracketReset: event.target.checked,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlabel=\"Has Bracket Reset\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{currentStage.playoffDetails?.hasBracketReset && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\t\tplayoffDetails: {\n\t\t\t\t\t\t\t\t\t\t\t\t...currentStage.playoffDetails,\n\t\t\t\t\t\t\t\t\t\t\t\tpointsForCorrectBracketReset: event.target.value,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
\n\t\t\t\t\t)}\n\t\t\t\t\t
\n\t\t\t\t\t\t{currentStageIndex !== 0 && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tsetCurrentStage({\n\t\t\t\t\t\t\t\t\t\t...currentStage,\n\t\t\t\t\t\t\t\t\t\tteamsToOpenPicks: Number(event.target.value),\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nfunction EventFormatDetails(props) {\n\treturn connect(, propKeys, props);\n}\n\nexport default EventFormatDetails;\n","import { Button, makeStyles } from \"@material-ui/core\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport * as React from \"react\";\nimport EventFormatService from \"services/EventFormatService\";\nimport EventFormatBracketBuilder from \"./EventFormatBracketBuilder\";\nimport EventFormatDetails from \"./EventFormatDetails\";\nimport EventFormatHelper, {\n\tbuildScoringDetails,\n} from \"common/helpers/eventFormatHelper\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\n\nconst useStyles = makeStyles((theme) => {\n\treturn {\n\t\tbuttonRow: {\n\t\t\tmarginTop: theme.spacing() * 2,\n\t\t\tmarginBottom: 12,\n\t\t},\n\t};\n});\n\nexport default function EventFormatEditor() {\n\tconst classNames = useStyles();\n\n\tconst save = async () => {\n\t\t/** @type {EventFormatBuilder} */\n\t\tconst formatBuilder = Store.get(\n\t\t\tStoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT\n\t\t);\n\n\t\t// Update Scoring incase it wasn't updated previously\n\t\tbuildScoringDetails(formatBuilder);\n\n\t\tconst eventFormat = { ...formatBuilder.eventFormat };\n\t\teventFormat.json = JSON.stringify(formatBuilder.data);\n\n\t\tSetLoading(true, \"Saving Format\");\n\t\ttry {\n\t\t\tconst updatedFormat = await EventFormatService.saveFormat(eventFormat);\n\t\t\tconst formatBuilder =\n\t\t\t\tEventFormatHelper.getEventFormatBuilder(updatedFormat);\n\t\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, formatBuilder);\n\t\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.EVENT_FORMATS, null);\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t}\n\t\tSetLoading(false);\n\t};\n\n\tconst saveAndClose = async () => {\n\t\tawait save();\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, \"\");\n\t};\n\n\tconst cancel = () => {\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, \"\");\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\n\t);\n}\n","import { Button } from \"@material-ui/core\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalBody,\n\tModalFooter,\n\tModalHeader,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport * as React from \"react\";\nimport \"../SuccessFailModal/SuccessFailModal.scss\";\n\nexport default function DeleteConfirmModal(props) {\n\tconst onConfirm = () => {\n\t\tModalHelper.closeModal();\n\t\tif (props.onConfirm) {\n\t\t\tprops.onConfirm();\n\t\t}\n\t};\n\tconst onCancel = () => {\n\t\tModalHelper.closeModal();\n\t};\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tConfirmation\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t);\n}\n","import CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalBody,\n\tModalHeader,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport * as React from \"react\";\nimport \"../SuccessFailModal/SuccessFailModal.scss\";\n\nexport default function RecordInUseModal(props) {\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tRecord Is In Use\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n","import { Button, makeStyles } from \"@material-ui/core\";\nimport { DataGrid } from \"@mui/x-data-grid\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport DeleteConfirmModal from \"common/components/Modals/DeleteConfirmModal/DeleteConfirmModal\";\nimport RecordInUseModal from \"common/components/Modals/RecordInUseModal/RecordInUseModal\";\nimport { connect } from \"common/connect\";\nimport EventFormatHelper from \"common/helpers/eventFormatHelper\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\n// eslint-disable-next-line no-unused-vars\nimport { EventFormat } from \"common/types/EventFormat\";\nimport * as React from \"react\";\nimport { useEffect } from \"react\";\nimport EventFormatService from \"services/EventFormatService\";\nimport { Colors } from \"styles/Colors\";\nimport { Add, Edit, FileCopy, Delete } from \"@material-ui/icons\";\nimport { PanZoomHelper } from \"common/helpers/panZoomHelper\";\n\nconst propKeys = {\n\teventFormats: StoreKeys.EVENTFORMATBUILDER.EVENT_FORMATS,\n};\n\nconst classStyles = makeStyles(() => {\n\treturn {\n\t\tdataGrid: {\n\t\t\tbackgroundColor: Colors.panel,\n\t\t\t\"& .MuiTablePagination-displayedRows\": {\n\t\t\t\tcolor: Colors.primary,\n\t\t\t},\n\t\t\t\"& .MuiTablePagination-actions button\": {\n\t\t\t\tcolor: Colors.primary,\n\t\t\t\t\"&:disabled\": {\n\t\t\t\t\tcolor: Colors.panelLighterColor,\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"& .MuiDataGrid-columnHeaderTitle\": {\n\t\t\t\tcolor: Colors.primary,\n\t\t\t},\n\t\t},\n\t\tdataGridRow: {\n\t\t\tcursor: \"pointer\",\n\t\t\tcolor: Colors.primary,\n\t\t\t\"&:hover\": {\n\t\t\t\tbackgroundColor: `${Colors.panelLight}!important`,\n\t\t\t},\n\t\t\t\"&:focus-within\": {\n\t\t\t\tbackgroundColor: `${Colors.panelLighterColor}!important`,\n\t\t\t},\n\t\t},\n\t\tbutton: {\n\t\t\tcolor: Colors.primary,\n\t\t\tbackgroundColor: Colors.panelLight,\n\t\t\tmargin: \"0 10px\",\n\t\t\t\"&:disabled\": {\n\t\t\t\tcolor: Colors.panelLighterColor,\n\t\t\t\tborder: 0,\n\t\t\t},\n\t\t},\n\t};\n});\n\nconst dateFormatter = (object) => object.value.split(\"T\")[0];\n\nconst columns = [\n\t{ field: \"id\", headerName: \"ID\", flex: 0.2 },\n\t{ field: \"name\", headerName: \"Name\", flex: 1 },\n\t{\n\t\tfield: \"created\",\n\t\theaderName: \"Date Created\",\n\t\tflex: 1,\n\t\tvalueFormatter: dateFormatter,\n\t},\n\t{\n\t\tfield: \"modified\",\n\t\theaderName: \"Date Modified\",\n\t\tflex: 1,\n\t\tvalueFormatter: dateFormatter,\n\t},\n];\n\n/**\n * @typedef ComponentProps\n * @type {object}\n * @property {EventFormat} currentFormat\n * @property {Array} eventFormats\n */\n\n/**\n * @param {ComponentProps} props\n */\nexport function EventFormatSelectorC(props) {\n\tconst { eventFormats } = props;\n\tconst [rowsSelected, setRowsSelected] = React.useState([]);\n\tconst classNames = classStyles();\n\n\tuseEffect(() => {\n\t\tif (!eventFormats) {\n\t\t\tEventFormatService.getAllFormats().then((data) => {\n\t\t\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.EVENT_FORMATS, data);\n\t\t\t});\n\t\t}\n\t});\n\n\t/**\n\t * @param {number} id\n\t * @returns\n\t */\n\tfunction getFormatById(id) {\n\t\treturn eventFormats.find((ef) => ef.id === id);\n\t}\n\n\tfunction addEventFormat() {\n\t\tPanZoomHelper.resetView(0, 0, 0.75);\n\t\tconst formatBuilder = EventFormatHelper.getEventFormatBuilder();\n\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, formatBuilder);\n\t}\n\n\tfunction editEventFormat() {\n\t\tif (rowsSelected.length) {\n\t\t\tPanZoomHelper.resetView(0, 0, 0.75);\n\t\t\tconst format = getFormatById(rowsSelected[0]);\n\t\t\tconst formatBuilder = EventFormatHelper.getEventFormatBuilder(format);\n\t\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, formatBuilder);\n\t\t}\n\t}\n\n\tfunction cloneEventFormat() {\n\t\tif (rowsSelected.length) {\n\t\t\tPanZoomHelper.resetView(0, 0, 0.75);\n\t\t\tconst format = getFormatById(rowsSelected[0]);\n\n\t\t\t/** @type {EventFormat} */\n\t\t\tconst newFormat = JSON.parse(JSON.stringify(format));\n\t\t\t// Reset id so it's handled as a new format when saved.\n\t\t\tnewFormat.id = 0;\n\n\t\t\tconst formatBuilder = EventFormatHelper.getEventFormatBuilder(newFormat);\n\t\t\tStore.set(StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT, formatBuilder);\n\t\t}\n\t}\n\n\tfunction deleteEventFormat() {\n\t\tif (rowsSelected.length) {\n\t\t\t// TODO: Prompt a confirmation modal\n\t\t\t// If any events use this format, block the delete of the format.\n\t\t\tconst formatId = rowsSelected[0];\n\n\t\t\tModalHelper.openModal(\n\t\t\t\t {\n\t\t\t\t\t\tSetLoading(true, \"Deleting Format\");\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait EventFormatService.deleteFormat(formatId);\n\t\t\t\t\t\t\tconst formats = Store.get(\n\t\t\t\t\t\t\t\tStoreKeys.EVENTFORMATBUILDER.EVENT_FORMATS\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tStore.set(\n\t\t\t\t\t\t\t\tStoreKeys.EVENTFORMATBUILDER.EVENT_FORMATS,\n\t\t\t\t\t\t\t\tformats.filter((ef) => ef.id !== formatId)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tSetLoading(false);\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tSetLoading(false);\n\t\t\t\t\t\t\tModalHelper.openModal(\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t}\n\n\treturn (\n\t\t
\n\t\t\t classNames.dataGridRow}\n\t\t\t\tonSelectionModelChange={(newRowSelected) => {\n\t\t\t\t\tsetRowsSelected(newRowSelected);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t  Edit\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t  Clone\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t  Delete\n\t\t\t\n\t\t
\n\t);\n}\n\nfunction EventFormatSelector(props) {\n\treturn connect(, propKeys, props);\n}\n\nexport default EventFormatSelector;\n","import { Container } from \"@material-ui/core\";\nimport { connect } from \"common/connect\";\nimport StoreKeys from \"common/storeKeys\";\n// eslint-disable-next-line no-unused-vars\nimport { EventFormat } from \"common/types/EventFormat\";\nimport * as React from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport EventFormatEditor from \"./EventFormatEditor/EventFormatEditor\";\nimport EventFormatSelector from \"./EventFormatSelector\";\n\n/**\n * @typedef ComponentProps\n * @type {object}\n * @property {EventFormat} currentFormat\n */\n\nconst propKeys = {\n\tcurrentFormat: StoreKeys.EVENTFORMATBUILDER.CURRENT_FORMAT,\n};\n\n/**\n * @param {ComponentProps} props\n */\nfunction EventFormatBuilderC(props) {\n\tconst { currentFormat } = props;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\tPickstop - Event Format Builder\n\t\t\t\n\t\t\t

Event Format Builder

\n\t\t\t{!currentFormat && }\n\t\t\t{currentFormat && }\n\t\t
\n\t);\n}\n\nfunction EventFormatBuilder(props) {\n\treturn connect(, propKeys, props);\n}\n\nexport default EventFormatBuilder;\n","import CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalBody,\n\tModalHeader,\n\tModalPanel,\n\tModalFooter,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport * as React from \"react\";\nimport { getBaseUrl } from \"common/history\";\nimport {\n\tButton,\n\tFormControl,\n\tInputLabel,\n\tList,\n\tListItem,\n\tMenuItem,\n\tSelect,\n} from \"@material-ui/core\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport UserService from \"services/UserService\";\nimport { toast } from \"react-toastify\";\n\nconst AnalystRoleId = 5;\n\nexport default class AdminUserModal extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = props;\n\t}\n\n\trender() {\n\t\tconst userRoles = this.getUserRolesList();\n\t\treturn (\n\t\t\t<>\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{this.props.user?.username}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthis.props.user?.userExternalLogins?.length > 0 &&\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\tExternal IDs\n\t\t\t\t\t\t\t\t\t\t{this.props.user?.userExternalLogins?.map((item) => {\n\t\t\t\t\t\t\t\t\t\t\tif (!item.externalUsername) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn <>;\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\treturn
\n\t\t\t\t\t\t\t\t\t\t\t: {item.externalUsername}\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tChange Username\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFlag For Rename\n\t\t\t\t\t\t\t\t{(this.state.user?.usernameChangeAvailable ||\n\t\t\t\t\t\t\t\t\tthis.state.flagUsernameChange) && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tFlag Username Change\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tReset Password\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{this.state.resetLink && (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tUser Roles\n\t\t\t\t\t\t\t\t{userRoles}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{this.state?.isAnalyst && (\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\tcreateAnalystLeague: e.currentTarget.checked,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\n\t\t);\n\t}\n\n\tonGameSelect(e) {\n\t\tconst value = e.target.value;\n\t\tconst gameId = Number(value);\n\t\tthis.setState({\n\t\t\tanalystGameId: gameId,\n\t\t});\n\t}\n\n\tgetUserRolesList() {\n\t\tif (\n\t\t\tthis.state &&\n\t\t\tthis.state.user &&\n\t\t\tthis.state.roles &&\n\t\t\tthis.state.userRoleIds\n\t\t) {\n\t\t\treturn this.state.roles.map((role) => (\n\t\t\t\t\n\t\t\t\t\t this.changeRole(e, role)}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t{role.id === AnalystRoleId &&\n\t\t\t\t\t\tthis.state.userRoleIds.includes(role.id) && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tGame\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{this.state.games?.map((game) => (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t));\n\t\t}\n\n\t\treturn <>;\n\t}\n\n\tchangeRole(event, role) {\n\t\tconst checked = event.currentTarget.checked;\n\t\tconst userRoleIds = this.state.userRoleIds;\n\t\tif (checked) {\n\t\t\tuserRoleIds.push(role.id);\n\t\t} else {\n\t\t\tconst index = userRoleIds.findIndex((r) => r === role.id);\n\t\t\tuserRoleIds.splice(index, 1);\n\t\t}\n\n\t\tthis.setState({\n\t\t\tuserRoleIds,\n\t\t\tisAnalyst: userRoleIds.includes(AnalystRoleId),\n\t\t});\n\t}\n\n\tchangeUsername(event) {\n\t\tconst value = event.currentTarget.value;\n\t\tconst user = { ...this.state.user };\n\t\tuser.username = value;\n\t\tthis.setState({\n\t\t\tuser,\n\t\t});\n\t}\n\n\tflagUsernameChange() {\n\t\tthis.setState({\n\t\t\tflagUsernameChange: true,\n\t\t});\n\t}\n\n\tresetPassword = async () => {\n\t\tawait UserService.resetPassword(this.state.user.id).then((resetId) => {\n\t\t\tconst resetLink = `${getBaseUrl()}/reset-password?resetId=${resetId}`;\n\t\t\tthis.setState({\n\t\t\t\tresetLink,\n\t\t\t});\n\t\t});\n\t};\n\n\tcancel() {\n\t\tModalHelper.closeModal();\n\t}\n\n\tsaveUser = async () => {\n\t\tawait UserService.updateUser(\n\t\t\tthis.state.user.id,\n\t\t\tthis.state.user.username,\n\t\t\tthis.state.userRoleIds,\n\t\t\tthis.state.flagUsernameChange,\n\t\t\tthis.state.analystGameId,\n\t\t\tthis.state.createAnalystLeague ?? false\n\t\t);\n\t\tModalHelper.closeModal();\n\t\ttoast(\"User Updated!\", { type: \"success\", toastId: \"user-updated\" });\n\t};\n}\n","import {\n\tButton,\n\tContainer,\n\tList,\n\tListItem,\n\tTextField,\n} from \"@material-ui/core\";\nimport AdminUserModal from \"common/components/Modals/AdminUserModal/AdminUserModal\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport * as React from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport LookupService from \"services/LookupService\";\nimport UserService from \"services/UserService\";\n\nexport default class UserManagerScreen extends React.Component {\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.state = {\n\t\t\tuserSearchValue: \"\",\n\t\t\tusers: [],\n\t\t};\n\n\t\tthis.onUserSearchChange = this.onUserSearchChange.bind(this);\n\t\tthis.onUserSearch = this.onUserSearch.bind(this);\n\t}\n\n\trender() {\n\t\tconst users = this.getUserList();\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tPickstop - User Manager\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t

User Manager

\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{users}\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n\n\tgetUserList() {\n\t\tif (this.state.users && this.state.users.map) {\n\t\t\treturn this.state.users.map((user) => (\n\t\t\t\t {\n\t\t\t\t\t\tthis.onUserSelect(user);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{user.username}\n\t\t\t\t\n\t\t\t));\n\t\t}\n\n\t\treturn <>;\n\t}\n\n\tonUserSelect = async (user) => {\n\t\tawait Promise.all([\n\t\t\tUserService.getRoles(),\n\t\t\tUserService.getUserRoles(user.id),\n\t\t\tUserService.getParticipatingAnalystGame(user.id),\n\t\t\tLookupService.getGames(),\n\t\t]).then(([roles, userRoleIds, analystGameId, games]) => {\n\t\t\tModalHelper.openModal(, () => {}, {\n\t\t\t\tuser,\n\t\t\t\troles,\n\t\t\t\tuserRoleIds,\n\t\t\t\tresetLink: null,\n\t\t\t\tisAnalyst: userRoleIds.includes(5),\n\t\t\t\tanalystGameId,\n\t\t\t\tgames,\n\t\t\t\tcreateAnalystLeague: false,\n\t\t\t});\n\t\t});\n\t};\n\n\t/**\n\t *\n\t * @param {React.ChangeEvent} event\n\t */\n\tonUserSearchChange(event) {\n\t\tconst userSearchValue = event.target.value;\n\n\t\tthis.setState({\n\t\t\tuserSearchValue,\n\t\t});\n\t}\n\n\tonUserSearch = async () => {\n\t\tconst users =\n\t\t\t(await UserService.searchUsers(this.state.userSearchValue)) ?? [];\n\n\t\tthis.setState({\n\t\t\tusers,\n\t\t});\n\t};\n}\n","import {\n\tBox,\n\tButton,\n\tGrid,\n\tList,\n\tListItem,\n\tListItemText,\n\tmakeStyles,\n\tMenuItem,\n\tSelect,\n} from \"@material-ui/core\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport UserCard from \"common/components/UserCard\";\nimport StyleHelper from \"common/helpers/styleHelper\";\nimport { NameplateStyle } from \"common/types/NameplateStyle\";\nimport UserManager from \"common/userManager\";\nimport * as React from \"react\";\nimport NameplateService from \"services/NameplateService\";\nimport { Colors } from \"styles/Colors\";\n\nconst useStyles = makeStyles((theme) => ({\n\tcssEditor: {\n\t\tbackgroundColor: Colors.panelLight,\n\t\tcolor: Colors.primary,\n\t\twidth: 600,\n\t\theight: 312,\n\t\tfont: \"normal normal 16px/24px Arial\",\n\t},\n\tnameplateDrawer: {},\n\tmenu: {\n\t\tcolor: Colors.primary,\n\t\tbackgroundColor: Colors.panel,\n\t},\n}));\n\nconst nameplateTemplate = `{id}.nameplate-container {\n border: 1px solid #ECECEC;\n background-color: #474747;\n color: #ECECEC;\n}\n\n{id} .nameplate-name {\n\n}\n\n{id} .nameplate-trophy {\n\n}`;\n\nexport default function NameplateEditor() {\n\tconst styles = useStyles();\n\tconst userId = UserManager.getUserId();\n\t/** @type {[NameplateStyle, any]} */\n\tconst [nameplate, setNameplate] = React.useState(null);\n\tconst [nameplateList, setNameplateList] = React.useState([]);\n\tconst [typeList, setTypeList] = React.useState([]);\n\tconst [name, setName] = React.useState(\"\");\n\tconst [description, setDescription] = React.useState(\"\");\n\tconst [type, setType] = React.useState(null);\n\tconst [template, setTemplate] = React.useState(nameplateTemplate);\n\t/** @type {[HTMLStyleElement, any]} */\n\tconst [styleRef, setStyleRef] = React.useState(null);\n\n\tReact.useEffect(() => {\n\t\tSetLoading(true);\n\t\tPromise.all([\n\t\t\tNameplateService.loadNameplates().then((nameplates) => {\n\t\t\t\tsetNameplateList(nameplates);\n\t\t\t}),\n\t\t\tNameplateService.getTypes().then((types) => {\n\t\t\t\tsetTypeList(types);\n\t\t\t}),\n\t\t]).then(() => {\n\t\t\tSetLoading(false);\n\t\t});\n\t});\n\n\tReact.useEffect(() => {});\n\n\tconst updateStyle = (updatedTemplate) => {\n\t\tupdatedTemplate = updatedTemplate || template;\n\n\t\t// @ts-ignore\n\t\tlet testTemplate = updatedTemplate.replaceAll(\"{id}\", \".nameplate-test\");\n\t\tif (styleRef) {\n\t\t\tstyleRef.textContent = testTemplate;\n\t\t\treturn;\n\t\t}\n\n\t\tconst newStyleRef = StyleHelper.addStyle(testTemplate);\n\t\tsetStyleRef(newStyleRef);\n\t};\n\n\tconst onCreateNameplate = () => {\n\t\tsetNameplate(new NameplateStyle());\n\t\tsetName(\"\");\n\t\tsetDescription(\"\");\n\t\tsetType(null);\n\t\tsetTemplate(nameplateTemplate);\n\t\tupdateStyle(nameplateTemplate);\n\t};\n\n\t/**\n\t *\n\t * @param {NameplateStyle} nameplate\n\t */\n\tconst onSelectNameplate = (nameplate) => {\n\t\tsetNameplate(nameplate);\n\t\tsetName(nameplate.name);\n\t\tsetDescription(nameplate.description);\n\t\tsetType(nameplate.namePlateTypeId);\n\t\tsetTemplate(nameplate.style);\n\t\tupdateStyle(nameplate.style);\n\t};\n\n\tconst onApply = () => {\n\t\tupdateStyle();\n\t};\n\n\tconst onSave = () => {\n\t\tnameplate.name = name;\n\t\tnameplate.description = description;\n\t\tnameplate.style = template;\n\t\tnameplate.namePlateTypeId = type;\n\n\t\tSetLoading(true, \"Saving Nameplate\");\n\t\tNameplateService.saveNameplate(nameplate).then((nameplate) => {\n\t\t\tSetLoading(false);\n\t\t\tonSelectNameplate(nameplate);\n\t\t});\n\t};\n\n\tconst onChangeName = (event) => {\n\t\tconst value = event.currentTarget.value;\n\t\tsetName(value);\n\t};\n\n\tconst onChangeDescription = (event) => {\n\t\tconst value = event.currentTarget.value;\n\t\tsetDescription(value);\n\t};\n\n\tconst onChangeTemplate = (event) => {\n\t\tconst value = event.currentTarget.value;\n\t\tsetTemplate(value);\n\t};\n\n\tconst onChangeType = (event) => {\n\t\tsetType(event.target.value);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{!nameplate &&

MAKE A NAMEPLATE DAMNIT

}\n\t\t\t\t\t{nameplate && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{typeList.map((type) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{type.name}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t{nameplateList.map((nameplate) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tonSelectNameplate(nameplate);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t);\n}\n","import axiosWrapper from \"common/axiosWrapper\";\n\nconst baseUrl = \"/api/event\";\n\n/** The Event service which calls the API endpoints for the Event Controller */\nexport default class EventService {\n\t/** Gets the next event. */\n\tstatic async getNextEventId() {\n\t\treturn await axiosWrapper.get(`${baseUrl}/next`);\n\t}\n\n\t/** Gets the previous event. */\n\tstatic async getPreviousEventId() {\n\t\treturn await axiosWrapper.get(`${baseUrl}/previous`);\n\t}\n\n\t/** Gets the current event for each active game. Events can be in the future or the past. */\n\tstatic async getCurrentEvents() {\n\t\treturn await axiosWrapper.getCached(`${baseUrl}/currentEvents`);\n\t}\n\n\t/** Gets the current season's events for the current game */\n\tstatic async getCurrentSeasonEvents() {\n\t\treturn await axiosWrapper.getCached(`${baseUrl}/getSeasonEvents`);\n\t}\n\n\t/** Gets the event. */\n\tstatic async getEvent(eventId) {\n\t\tif (!eventId) {\n\t\t\treturn null;\n\t\t}\n\t\treturn await axiosWrapper.get(`${baseUrl}/get?eventId=${eventId}`);\n\t}\n\n\t/** Gets events. */\n\tstatic async getEvents(gameId) {\n\t\treturn await axiosWrapper.get(`${baseUrl}/getEvents?gameId=${gameId}`);\n\t}\n\n\tstatic async getEventsNotRewarded() {\n\t\treturn await axiosWrapper.get(`${baseUrl}/notRewarded`);\n\t}\n\n\t/** Gets the official match picks. */\n\tstatic async getOfficialMatchPicks(eventId) {\n\t\treturn await axiosWrapper.get(`${baseUrl}/official?eventId=${eventId}`);\n\t}\n\n\t/**\n\t * Gets the past event ids.\n\t *\n\t * @returns {Promise>} The past event ids.\n\t */\n\tstatic async getPastEventIds() {\n\t\treturn await axiosWrapper.get(`${baseUrl}/allPastEventIds`);\n\t}\n\n\tstatic async getEventImages() {\n\t\treturn await axiosWrapper.getCached(`${baseUrl}/eventImages`);\n\t}\n\n\tstatic async updateTeams(teamInfo) {\n\t\treturn await axiosWrapper.post(`${baseUrl}/updateteams`, teamInfo);\n\t}\n\n\tstatic async getSwissStagePickData(eventId) {\n\t\treturn await axiosWrapper.get(`${baseUrl}/swissstage?eventId=${eventId}`);\n\t}\n}\n","export const EventTypes = {\n\tDoubleElimination: 1,\n\tSwissStage: 2,\n\tFullDoubleElimination: 3,\n\tSpringSplit: 4,\n\tSpringSplitMajor: 5,\n\tSeasonXChampionships: 6,\n\tSwissStagePlayoffs: 7,\n\tWinterSplit2021: 8,\n};\n","import { Container, makeStyles } from \"@material-ui/core\";\nimport { Helmet } from \"react-helmet\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport * as React from \"react\";\nimport EventService from \"services/EventService\";\nimport { EventTypes } from \"common/constants/EventTypes\";\nimport LookupService from \"services/LookupService\";\n\nconst classStyles = makeStyles(() => {\n\treturn {\n\t\tpickSelect: {\n\t\t\tdisplay: \"block\",\n\t\t\tmarginTop: 4,\n\t\t\tmarginBottom: 16,\n\t\t},\n\t\tpickLabel: {\n\t\t\tdisplay: \"block\",\n\t\t},\n\t\tpickTable: {\n\t\t\tborder: \"solid 1px black\",\n\t\t\tborderCollapse: \"collapse\",\n\t\t},\n\t\tpickCell: {\n\t\t\tborder: \"solid 1px black\",\n\t\t},\n\t};\n});\n\nexport default function PickData() {\n\tconst classNames = classStyles();\n\tconst [gameData, setGameData] = React.useState(null);\n\tconst [events, setEvents] = React.useState(null);\n\tconst [selectedGame, setSelectedGame] = React.useState(null);\n\tconst [selectedEventId, setSelectedEventId] = React.useState(null);\n\tconst [pickData, setPickData] = React.useState(null);\n\n\tconst loadPickData = (event) => {\n\t\t/**\n\t\t \t@type {\n\t\t\t\t Array<{\n\t\t\t\t\tname: string,\n\t\t\t\t\tdata: any,\n\t\t\t\t\theaders: Array\n\t\t\t\t }>\n\t\t\t }\n\t\t */\n\t\tlet formattedPickData;\n\t\tswitch (event.eventTypeId) {\n\t\t\tcase EventTypes.SwissStagePlayoffs:\n\t\t\t\tEventService.getSwissStagePickData(event.id).then((pd) => {\n\t\t\t\t\tformattedPickData = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"Advancing\",\n\t\t\t\t\t\t\tdata: pd.advancePickData,\n\t\t\t\t\t\t\theaders: [\"Group\", \"Name\", \"Percent\", \"Picks\", \"Users\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"Eliminated\",\n\t\t\t\t\t\t\tdata: pd.elimPickData,\n\t\t\t\t\t\t\theaders: [\"Group\", \"Name\", \"Percent\", \"Picks\", \"Users\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"Bracket Winner\",\n\t\t\t\t\t\t\tdata: pd.bracketPickData,\n\t\t\t\t\t\t\theaders: [\"Group\", \"Name\", \"Percent\", \"Picks\", \"Users\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase EventTypes.DoubleElimination:\n\t\t\tcase EventTypes.FullDoubleElimination:\n\t\t\tcase EventTypes.SeasonXChampionships:\n\t\t\tcase EventTypes.SpringSplit:\n\t\t\tcase EventTypes.SpringSplitMajor:\n\t\t\tcase EventTypes.SwissStage:\n\t\t\t\talert(\"This Event Type hasn't been set up yet. Contact the devs.\");\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\talert(\"This Event Type hasn't been set up yet. Contact the devs.\");\n\t\t\t\treturn;\n\t\t}\n\n\t\tsetPickData(formattedPickData);\n\t};\n\n\tReact.useEffect(() => {\n\t\tSetLoading(true);\n\t\tLookupService.getGames().then((games) => {\n\t\t\tSetLoading(false);\n\t\t\tsetGameData(games);\n\t\t});\n\t}, []);\n\n\tReact.useEffect(() => {\n\t\tif (!selectedGame) {\n\t\t\treturn;\n\t\t}\n\t\tSetLoading(true);\n\t\tEventService.getEvents(selectedGame).then((eventTypes) => {\n\t\t\tSetLoading(false);\n\t\t\tsetEvents(eventTypes);\n\t\t});\n\t}, [selectedGame]);\n\n\tReact.useEffect(() => {\n\t\tif (!selectedEventId || !events) {\n\t\t\treturn;\n\t\t}\n\t\tlet event = null;\n\t\tfor (var i = 0; i < events.length; i++) {\n\t\t\tif (events[i] && events[i].id === selectedEventId) {\n\t\t\t\tevent = events[i];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!!event) {\n\t\t\tloadPickData(event);\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [selectedEventId]);\n\n\tconst onEventSelect = (ev) => {\n\t\tsetSelectedEventId(Number(ev.target.value));\n\t};\n\n\tconst onGameSelect = (ev) => {\n\t\tsetSelectedGame(Number(ev.target.value));\n\t};\n\n\tconst gameSelection = !gameData ? null : (\n\t\t<>\n\t\t\t\n\t\t\t\n\t\t\n\t);\n\n\tconst eventSelection = !events ? null : (\n\t\t<>\n\t\t\t\n\t\t\t\n\t\t\n\t);\n\n\tconst pickDataHeaderCell = (index, h) => {\n\t\treturn (\n\t\t\t\n\t\t\t\t{h}\n\t\t\t\n\t\t);\n\t};\n\n\tconst dataCellJsx = (index, c) => {\n\t\treturn (\n\t\t\t\n\t\t\t\t{c}\n\t\t\t\n\t\t);\n\t};\n\n\tconst dataRowJsx = (index, d) => {\n\t\tconst cellJsx = [];\n\t\tconst props = Object.getOwnPropertyNames(d);\n\t\tconst sortedProps = props.sort();\n\t\tsortedProps.forEach((p, idx) => {\n\t\t\tcellJsx.push(dataCellJsx(idx, d[p]));\n\t\t});\n\t\treturn {cellJsx};\n\t};\n\n\tconst pickDataRowJsx = (index, item) => {\n\t\titem.headers.sort();\n\t\tconst headerCellsJsx = item.headers.map((h, ix) => {\n\t\t\treturn pickDataHeaderCell(ix, h);\n\t\t});\n\t\tconst dataRowsHtml = item.data.map((d, idx) => {\n\t\t\treturn dataRowJsx(idx, d);\n\t\t});\n\t\treturn (\n\t\t\t
\n\t\t\t\t

{item.name}

\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{headerCellsJsx}\n\t\t\t\t\t\n\t\t\t\t\t{dataRowsHtml}\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t};\n\n\tconst pickDataJsx = !pickData\n\t\t? null\n\t\t: pickData.map((record, index) => {\n\t\t\t\treturn pickDataRowJsx(index, record);\n\t\t });\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\tPickstop - Pick Data\n\t\t\t\n\t\t\t

Event Pick Data

\n\t\t\t{gameSelection}\n\t\t\t{selectedGame && (\n\t\t\t\t<>\n\t\t\t\t\t{eventSelection}\n\t\t\t\t\t{selectedEventId && <>{pickDataJsx}}\n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t);\n}\n","import {\n\tBox,\n\tButton,\n\tContainer,\n\tGrid,\n\tInputAdornment,\n\tTextField,\n} from \"@material-ui/core\";\nimport { Person } from \"@material-ui/icons\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport { connect } from \"common/connect\";\nimport { GetCurrentGamePrefix } from \"common/constants/Games\";\nimport { changeUrl, history } from \"common/history\";\nimport StoreKeys from \"common/storeKeys\";\nimport UserManager from \"common/userManager\";\nimport React, { useState } from \"react\";\nimport \"./PickUsernameScreen.scss\";\n\nconst propKeys = {\n\tprovider: StoreKeys.LOGIN_PROVIDER,\n};\n\nfunction PickUsernameScreenC(props) {\n\tconst uName = UserManager.getUsername();\n\tconst [username, setUsername] = useState(uName);\n\tconst [error, setError] = useState(null);\n\n\tconst onSubmitClicked = (event) => {\n\t\tif (event) {\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\tSetLoading(true, \"Changing Username...\");\n\n\t\tUserManager.changeUsername(username.trim()).then((result) => {\n\t\t\tif (result.error) {\n\t\t\t\tSetLoading(false);\n\t\t\t\tsetError(result.error);\n\t\t\t} else {\n\t\t\t\tUserManager.setUsername(username.trim());\n\t\t\t\tconst prefix = GetCurrentGamePrefix();\n\t\t\t\tchangeUrl(`${prefix}/event`);\n\t\t\t}\n\t\t});\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
onSubmitClicked(e)}>\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{props.provider}\n\t\t\t\t\t\t\t\t{\" \"}\n\t\t\t\t\t\t\t\tCreate a new Pickstop username\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t

Note:

\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\tThis username will appear on the public leaderboard and your\n\t\t\t\t\t\t\t\tprofile that other users can see.\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t setUsername(e.target.value)}\n\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\t\t\tstartAdornment: (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{error && (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{error}\n\t\t\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{props.provider && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

Note:

\n\t\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t\tFrom now on, log in to Pickstop by clicking the{\" \"}\n\t\t\t\t\t\t\t\t\t\t{props.provider} icon:\n\t\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t{props.provider === \"discord\" && (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{props.provider === \"google\" && (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{props.provider === \"reddit\" && (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n\nexport const PickUsernameScreen = (props) => {\n\treturn connect(, propKeys, props);\n};\n","import { Button, Container, Grid } from \"@material-ui/core\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport UserManager from \"common/userManager\";\nimport * as queryString from \"query-string\";\nimport * as React from \"react\";\nimport { BiKey } from \"react-icons/bi\";\nimport { MdPerson } from \"react-icons/md\";\nimport \"./ResetPasswordScreen.scss\";\nimport { changeUrl } from \"common/history\";\n\nexport default class ResetPasswordScreen extends React.Component {\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.state = {\n\t\t\tresetId: null,\n\t\t\tusername: \"\",\n\t\t\tpassword: \"\",\n\t\t\tconfirmPassword: \"\",\n\t\t\tusernameError: null,\n\t\t\tpasswordError: null,\n\t\t\tconfirmPasswordError: null,\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tconst searchParams = queryString.parse(window.location.search);\n\t\tthis.setState({\n\t\t\tresetId: searchParams.resetId,\n\t\t});\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t

Change Your Password

\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{this.state.usernameError && (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{this.state.passwordError && (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{this.state.confirmPasswordError && (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n\n\t/**\n\t * Called when username is changed.\n\t *\n\t * @param {React.ChangeEvent} event\n\t */\n\tsetUsername(event) {\n\t\tconst value = event.target.value;\n\t\tthis.setState({\n\t\t\tusername: value,\n\t\t});\n\t}\n\n\t/**\n\t * Called when password field is changed.\n\t *\n\t * @param {React.ChangeEvent} event\n\t */\n\tsetPassword(event) {\n\t\tconst value = event.target.value;\n\t\tthis.setState({\n\t\t\tpassword: value,\n\t\t});\n\t}\n\n\t/**\n\t * Called when password field is changed.\n\t *\n\t * @param {React.ChangeEvent} event\n\t */\n\tsetConfirmPassword(event) {\n\t\tconst value = event.target.value;\n\t\tthis.setState({\n\t\t\tconfirmPassword: value,\n\t\t});\n\t}\n\n\t/**\n\t *\n\t * @param {Event} event\n\t */\n\tonSubmitClicked(event) {\n\t\tevent.preventDefault();\n\t\tconst resetId = this.state.resetId?.trim();\n\t\tconst username = this.state.username?.trim();\n\t\tconst password = this.state.password?.trim();\n\t\tconst confirmPassword = this.state.confirmPassword?.trim();\n\n\t\tif (this.validateUsernamePassword(username, password, confirmPassword)) {\n\t\t\tSetLoading(true, \"Changing Password...\");\n\n\t\t\tUserManager.changePassword(\n\t\t\t\tresetId,\n\t\t\t\tusername,\n\t\t\t\tpassword,\n\t\t\t\tconfirmPassword\n\t\t\t).then((result) => {\n\t\t\t\tif (\n\t\t\t\t\tresult.usernameError ||\n\t\t\t\t\tresult.passwordError ||\n\t\t\t\t\tresult.confirmPasswordError\n\t\t\t\t) {\n\t\t\t\t\tSetLoading(false);\n\t\t\t\t\tthis.setState(result);\n\t\t\t\t} else {\n\t\t\t\t\tUserManager.login(username, password)\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tchangeUrl(\"/\");\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\t\t// Something went wrong, try to login manually.\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Validate the username and password.\n\t *\n\t * @param {string} username\n\t * @param {string} password\n\t * @param {string} confirmPassword\n\t */\n\tvalidateUsernamePassword(username, password, confirmPassword) {\n\t\tif (\n\t\t\tusername.length === 0 ||\n\t\t\tpassword.length === 0 ||\n\t\t\tconfirmPassword.length === 0\n\t\t) {\n\t\t\t// Error\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n}\n","import { SetLoading } from \"common/components/Loader/Loader\";\nimport { GetCurrentGamePrefix } from \"common/constants/Games\";\nimport { LocalStorageKeys } from \"common/constants/StorageKeys\";\nimport { changeUrl } from \"common/history\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport UserManager from \"common/userManager\";\nimport React from \"react\";\nimport { discordSignIn } from \"./api\";\n\nexport default class SignInDiscord extends React.Component {\n\tasync componentDidMount() {\n\t\tSetLoading(true, \"Signing in with Discord\");\n\n\t\tconst code = this.props.location.search.substring(6);\n\t\ttry {\n\t\t\tconst result = await discordSignIn(code);\n\t\t\tUserManager.handlePostLogin(result);\n\t\t\tconst route = GetCurrentGamePrefix();\n\n\t\t\tSetLoading(false);\n\t\t\tif (result.usernameIsEmail) {\n\t\t\t\tchangeUrl(route + \"/event\");\n\t\t\t} else if (result.created) {\n\t\t\t\tStore.set(StoreKeys.LOGIN_PROVIDER, \"discord\");\n\t\t\t\tchangeUrl(\"/pick-username\");\n\t\t\t} else {\n\t\t\t\tconst redirect = localStorage.getItem(LocalStorageKeys.POSTLOGINURL);\n\t\t\t\tif (redirect) {\n\t\t\t\t\tlocalStorage.removeItem(LocalStorageKeys.POSTLOGINURL);\n\t\t\t\t\tchangeUrl(redirect);\n\t\t\t\t} else {\n\t\t\t\t\tchangeUrl(route + \"/event\");\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tSetLoading(false);\n\t\t\tconst route = GetCurrentGamePrefix();\n\t\t\tchangeUrl(route + \"/event\");\n\t\t}\n\t}\n\n\trender() {\n\t\treturn <>;\n\t}\n}\n","import axiosWrapper from \"common/axiosWrapper\";\n// eslint-disable-next-line no-unused-vars\nimport AuthenticationResultDto from \"common/types/AuthenticationResultDto\";\n\n/**\n * Attempts discord sign in with the provided code.\n *\n * @param {string} code The discord access code.\n * @returns {Promise}\n * */\nexport const discordSignIn = async (code) => {\n\treturn await axiosWrapper.get(`api/auth/signin-discord?code=${code}`);\n};\n\n/**\n * Attempts google sign in with the provided code.\n *\n * @param {string} code The google access code.\n * @returns {Promise}\n * */\nexport const googleSignIn = async (code) => {\n\treturn await axiosWrapper.get(`api/auth/signin-google?code=${code}`);\n};\n\n/**\n * Attempts reddit sign in with the provided code.\n *\n * @param {string} code The reddit access code.\n * @returns {Promise}\n * */\nexport const redditSignIn = async (code) => {\n\treturn await axiosWrapper.get(`api/auth/signin-reddit?code=${code}`);\n};\n\n/**\n * Attempts patreon sign in with the provided code.\n *\n * @param {string} code The patreon access code.\n * @returns {Promise}\n * */\nexport const patreonLink = async (state, code) => {\n\treturn await axiosWrapper.get(\n\t\t`api/auth/link-patreon?state=${state}&code=${code}`\n\t);\n};\n","import { SetLoading } from \"common/components/Loader/Loader\";\nimport { GetCurrentGamePrefix } from \"common/constants/Games\";\nimport { LocalStorageKeys } from \"common/constants/StorageKeys\";\nimport { changeUrl } from \"common/history\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport UserManager from \"common/userManager\";\nimport React from \"react\";\nimport { googleSignIn } from \"./api\";\n\nexport default class SignInGoogle extends React.Component {\n\tasync componentDidMount() {\n\t\tSetLoading(true, \"Signing in with Google\");\n\n\t\tconst code = this.props.location.search.substring(6);\n\t\ttry {\n\t\t\tconst result = await googleSignIn(code);\n\t\t\tUserManager.handlePostLogin(result);\n\t\t\tconst route = GetCurrentGamePrefix();\n\n\t\t\tSetLoading(false);\n\t\t\tif (result.usernameIsEmail) {\n\t\t\t\tchangeUrl(route + \"/event\");\n\t\t\t} else if (result.created) {\n\t\t\t\tStore.set(StoreKeys.LOGIN_PROVIDER, \"google\");\n\t\t\t\tchangeUrl(\"/pick-username\");\n\t\t\t} else {\n\t\t\t\tconst redirect = localStorage.getItem(LocalStorageKeys.POSTLOGINURL);\n\t\t\t\tif (redirect) {\n\t\t\t\t\tlocalStorage.removeItem(LocalStorageKeys.POSTLOGINURL);\n\t\t\t\t\tchangeUrl(redirect);\n\t\t\t\t} else {\n\t\t\t\t\tchangeUrl(route + \"/event\");\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tSetLoading(false);\n\t\t\tconst route = GetCurrentGamePrefix();\n\t\t\tchangeUrl(route + \"/event\");\n\t\t}\n\t}\n\n\trender() {\n\t\treturn <>;\n\t}\n}\n","import * as React from \"react\";\nimport {\n\tIconButton,\n\tmakeStyles,\n\tMenu,\n\tMenuItem,\n} from \"@material-ui/core\";\nimport { MoreHoriz } from \"@material-ui/icons\";\nimport { Colors } from \"styles/Colors\";\nimport * as Styles from \"components/Layout/styles\";\n\nconst useStyles = makeStyles({\n\theading: {\n\t\tcolor: Colors.pickstop,\n\t\tmarginTop: 0,\n\t\tmarginBottom: 5,\n\t\ttextTransform: \"uppercase\",\n\t\tfont: \"normal normal normal 16px/27px Arial\",\n\t\tletterSpacing: \"1.2px\",\n\t},\n\ticon: {\n\t\theight: 18,\n\t\twidth: 18,\n\t\tdisplay: \"inline-block\",\n\t\tposition: \"relative\",\n\t\ttop: 2,\n\t\tmarginRight: 8,\n\t},\n\trightIcon: {\n\t\tdisplay: \"flex\",\n\t\tfloat: \"right\",\n\t\tpadding: 0,\n\t\tcolor: Colors.pickstop,\n\t},\n\tmenu: {\n\t\tzIndex: \"1600 !important\",\n\t},\n});\n\nexport default function ContentHeader({ icon, text, menuItems }) {\n\tconst styles = useStyles();\n\tconst [anchorEl, setAnchorEl] = React.useState(null);\n\n\tif (icon) {\n\t\ticon = React.cloneElement(icon, { className: styles.icon });\n\t}\n\n\tconst handleMenuClick = (event) => {\n\t\tsetAnchorEl(event.currentTarget);\n\t};\n\n\tconst handleMenuClose = () => {\n\t\tsetAnchorEl(null);\n\t};\n\n\treturn (\n\t\t

\n\t\t\t{icon ? icon : <>}\n\t\t\t{text}\n\t\t\t{menuItems &&\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{menuItems.map((menuItem, index) =>\n\t\t\t\t\t\t\t { handleMenuClose(); menuItem.onClick(); }} key={index}>{menuItem.text}\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t}\n\t\t

\n\t);\n}\n","import * as React from \"react\";\nimport { Box, Container, makeStyles } from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\n\nconst useStyles = makeStyles({\n\tcontentPanel: {\n\t\tbackgroundColor: Colors.panel,\n\t\tborderRadius: 12,\n\t\tpadding: 10,\n\t\tmarginBottom: 5,\n\t\tminHeight: 100,\n\t},\n});\n\nexport default function ContentPanel(props) {\n\tconst styles = useStyles();\n\treturn (\n\t\t{props.children}\n\t);\n}\n","import * as React from \"react\";\nimport { Button } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\n\nconst useStyles = makeStyles((theme) => ({\n\tbutton: {\n\t\tborderRadius: 24,\n\t\tcolor: Colors.panel,\n\t\tpadding: \"8px 16px\",\n\t\tmargin: 8,\n\t\tfontWeight: 600,\n\t\ttextTransform: \"uppercase\",\n\n\t\t\"&:hover\": {\n\t\t\tbackgroundColor: Colors.primary,\n\t\t\tboxShadow: \"0px 0px 8px black\",\n\t\t},\n\t},\n\t// Primary buttons should have color, our primary color is white. So we use the secondary color as our primary button color\n\tbuttonPrimary: {\n\t\tbackgroundColor: Colors.secondary,\n\n\t\t\"&:hover\": {\n\t\t\tbackgroundColor: Colors.secondaryDark,\n\t\t},\n\t},\n\tbuttonSecondary: {\n\t\tbackgroundColor: Colors.primary,\n\n\t\t\"&:hover\": {\n\t\t\tbackgroundColor: Colors.primaryDark,\n\t\t},\n\t},\n\tdisabled: {\n\t\tbackgroundColor: Colors.body,\n\t\tcursor: \"default\",\n\n\t\t\"&:hover\": {\n\t\t\tbackgroundColor: Colors.body,\n\t\t\tboxShadow: \"0px 0px 0px black\",\n\t\t},\n\t},\n}));\n\nexport default function FatButton({ text, onClick, primary, disabled }) {\n\tconst styles = useStyles();\n\n\treturn (\n\t\t\n\t\t\t{text}\n\t\t\n\t);\n}\n","import * as React from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\nimport TouchRipple from \"@material-ui/core/ButtonBase/TouchRipple\";\n\nconst useStyles = makeStyles((theme) => ({\n\tcontainer: {\n\t\tborder: `1px solid ${Colors.primary}`,\n\t\tdisplay: \"inline-flex\",\n\t\tpadding: 0,\n\t\tborderRadius: 4,\n\t\toverflow: \"hidden\",\n\t},\n\titem: {\n\t\tposition: \"relative\",\n\t\tbackgroundColor: Colors.body,\n\t\tcolor: Colors.primary,\n\t\tpadding: \"12px 16px\",\n\t\tdisplay: \"inline-block\",\n\t\tborder: 0,\n\t\tborderRight: `1px solid ${Colors.primary}`,\n\t\tcursor: \"pointer\",\n\n\t\t\"&.selected\": {\n\t\t\tbackgroundColor: Colors.primary,\n\t\t\tcolor: Colors.panel,\n\t\t},\n\n\t\t\"&.disabled\": {\n\t\t\tcolor: Colors.body,\n\t\t\tbackgroundColor: Colors.panel,\n\t\t\tcursor: \"default\",\n\t\t},\n\t},\n}));\n\nexport default function TabToggle({ value, items, onChange }) {\n\tconst styles = useStyles();\n\n\treturn (\n\t\t
\n\t\t\t{items.map((i, index) => (\n\t\t\t\t {\n\t\t\t\t\t\tif (i.disabled) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonChange(id);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t))}\n\t\t
\n\t);\n}\n\nfunction TabItem({ id, text, selected, setSelectedId, disabled }) {\n\tconst styles = useStyles();\n\tconst rippleRef = React.useRef(null);\n\tconst onRippleStart = (e) => {\n\t\tif (disabled) {\n\t\t\treturn;\n\t\t}\n\t\trippleRef.current.start(e);\n\t};\n\tconst onRippleStop = (e) => {\n\t\tif (disabled) {\n\t\t\treturn;\n\t\t}\n\t\trippleRef.current.stop(e);\n\t};\n\n\treturn (\n\t\t {\n\t\t\t\tsetSelectedId(id);\n\t\t\t}}\n\t\t\tkey={id}\n\t\t\tdisabled={disabled}\n\t\t>\n\t\t\t{text}\n\t\t\t{!disabled && }\n\t\t\n\t);\n}\n","import axiosWrapper from \"common/axiosWrapper\";\nimport League from \"common/types/League\";\nimport JoinedLeagueInfo from \"common/types/JoinedLeagueInfo\";\n\nconst baseUrl = \"/api/leagues\";\n\n/** The League service which calls the API endpoints for the League Controller */\nexport default class LeagueService {\n\t/**\n\t * Gets the user's league limit.\n\t * @returns {Promise} An async result.\n\t */\n\tstatic async getUserLeagueLimit() {\n\t\treturn await axiosWrapper.getCached(`${baseUrl}/userLimit`);\n\t}\n\n\t/**\n\t * Gets the league.\n\t * @param {number} leagueId\n\t * @returns {Promise} An async result containing the league.\n\t */\n\tstatic async getLeague(leagueId) {\n\t\tif (!leagueId) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn await axiosWrapper.get(`${baseUrl}/get?leagueId=${leagueId}`);\n\t}\n\n\t/**\n\t * Gets leagues.\n\t * @returns {Promise>} An async result containing all leagues.\n\t */\n\tstatic async getLeagues() {\n\t\treturn await axiosWrapper.get(`${baseUrl}/all`);\n\t}\n\n\t/**\n\t * Gets the 10 newest leagues.\n\t * @returns {Promise>} An async result containing all leagues.\n\t */\n\tstatic async getNewLeagues() {\n\t\treturn await axiosWrapper.get(`${baseUrl}/new`);\n\t}\n\n\t/**\n\t * Gets the top 10 popular leagues.\n\t * @returns {Promise>} An async result containing all leagues.\n\t */\n\tstatic async getPopularLeagues() {\n\t\treturn await axiosWrapper.get(`${baseUrl}/popular`);\n\t}\n\n\t/**\n\t * Gets the top 10 popular leagues.\n\t * @returns {Promise>} An async result containing all leagues.\n\t */\n\tstatic async searchLeagues(term) {\n\t\tif (!term) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn await axiosWrapper.getCached(`${baseUrl}/search?term=${term}`);\n\t}\n\n\t/**\n\t * Gets joined leagues.\n\t * @returns {Promise>} An async result containing all leagues that the current user has joined.\n\t */\n\tstatic async getJoinedLeagues() {\n\t\treturn await axiosWrapper.get(`${baseUrl}/joined`);\n\t}\n\n\t/**\n\t * Gets analyst league rankings for an event.\n\t * @returns {Promise} An async result containing all rankings for the analyst league and the specified event.\n\t */\n\tstatic async getAnalystLeague() {\n\t\treturn await axiosWrapper.getCached(`${baseUrl}/analyst`);\n\t}\n\n\t/**\n\t * Gets analyst league rankings for an event.\n\t * @returns {Promise} An async result containing all rankings for the analyst league and the specified event.\n\t */\n\tstatic async getAnalystLeagueRankings(eventId) {\n\t\treturn await axiosWrapper.getCached(\n\t\t\t`${baseUrl}/analystRankings?eventId=${eventId}`\n\t\t);\n\t}\n\n\t/**\n\t * Gets league rankings for an event.\n\t * @returns {Promise} An async result containing all rankings for the specified league and the specified event.\n\t */\n\tstatic async getLeagueRankings(leagueId, eventId) {\n\t\tif (!leagueId) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn await axiosWrapper.getCached(\n\t\t\t`${baseUrl}/rankings?leagueId=${leagueId}&eventId=${eventId}`\n\t\t);\n\t}\n\n\t/**\n\t * Updates a league if it exists, otherwise creates a new league.\n\t * @param {number} leagueId League id if it exists\n\t * @param {string} name\n\t * @param {string} password\n\t * @param {string} confirmPassword\n\t * @param {boolean} requireDiscord\n\t * @param {boolean} requireReddit\n\t * @returns {Promise} An async result.\n\t */\n\tstatic async createOrUpdateLeague(\n\t\tleagueId,\n\t\tname,\n\t\tpassword,\n\t\tconfirmPassword,\n\t\tnameplateId,\n\t\trequireDiscord,\n\t\trequireReddit\n\t) {\n\t\treturn await axiosWrapper.post(`${baseUrl}/save`, {\n\t\t\tid: leagueId,\n\t\t\tname,\n\t\t\tpassword,\n\t\t\tconfirmPassword,\n\t\t\tnameplateId,\n\t\t\trequireDiscord,\n\t\t\trequireReddit,\n\t\t});\n\t}\n\t/**\n\t * Deletes a league.\n\t * @param {number} leagueId\n\t * @returns {Promise} An async result.\n\t */\n\tstatic async deleteLeague(leagueId) {\n\t\tif (!leagueId) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn await axiosWrapper.delete(`${baseUrl}/delete?leagueId=${leagueId}`);\n\t}\n\n\t/**\n\t * Gets all members of a given league\n\t * @param {number} leagueId\n\t * @returns {Promise>} An async result containing league members.\n\t */\n\tstatic async getLeagueMembers(leagueId) {\n\t\tif (!leagueId) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn await axiosWrapper.getCached(\n\t\t\t`${baseUrl}/members?leagueId=${leagueId}`\n\t\t);\n\t}\n\n\t/**\n\t * Gets all events during a given league.\n\t * @param {number} leagueId\n\t * @returns\n\t */\n\tstatic async getLeagueEvents(leagueId) {\n\t\tif (!leagueId) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn await axiosWrapper.getCached(\n\t\t\t`${baseUrl}/events?leagueId=${leagueId}`\n\t\t);\n\t}\n\n\t/**\n\t * Joins a league.\n\t * @param {number} leagueId\n\t * @param {string} password\n\t * @returns {Promise} An async result.\n\t */\n\tstatic async joinLeague(leagueId, password) {\n\t\tif (!leagueId) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn await axiosWrapper.post(`${baseUrl}/join`, { leagueId, password });\n\t}\n\n\t/**\n\t * Leaves a league.\n\t * @param {number} leagueId\n\t * @returns {Promise} An async result.\n\t */\n\tstatic async leaveLeague(leagueId) {\n\t\tif (!leagueId) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn await axiosWrapper.delete(`${baseUrl}/leave?leagueId=${leagueId}`);\n\t}\n\n\t/**\n\t * Removes a user from a league.\n\t * @param {number} leagueId\n\t * @param {number} userId The id of the user to be removed.\n\t * @returns {Promise} An async result.\n\t */\n\tstatic async removeFromLeague(leagueId, userId) {\n\t\tif (!leagueId || !userId) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn await axiosWrapper.delete(\n\t\t\t`${baseUrl}/removeMember?leagueId=${leagueId}&userId=${userId}`\n\t\t);\n\t}\n}\n","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgCarotLeft = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12.727,\n height: 21.765,\n viewBox: \"0 0 12.727 21.765\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0.624 21.131) rotate(-90)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0 0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n className: \"a\",\n d: \"M9.253.574a2.1,2.1,0,0,1,2.887,0l7.84,7.73a1.891,1.891,0,0,1,0,2.6,1.739,1.739,0,0,1-2.53,0L10.91,4.522a.434.434,0,0,0-.588,0L2.963,11.145A1.745,1.745,0,0,1,.442,10.97a1.9,1.9,0,0,1,.169-2.61Z\",\n transform: \"translate(0 0)\"\n })))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgCarotLeft, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/Carot_Left.19dfc270.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgCarotRight = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12.461,\n height: 21.634,\n viewBox: \"0 0 12.461 21.634\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0.637 21.134) rotate(-90)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0 0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n className: \"a\",\n d: \"M9.253,10.651a2.156,2.156,0,0,0,2.887,0l7.84-7.466A1.783,1.783,0,1,0,17.449.673L10.91,6.838a.445.445,0,0,1-.588,0L2.963.442A1.787,1.787,0,0,0,.611,3.132Z\",\n transform: \"translate(0 0)\"\n })))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgCarotRight, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/Carot_Right.5bc3164f.svg\";\nexport { ForwardRef as ReactComponent };","import { Grid, makeStyles } from \"@material-ui/core\";\nimport * as React from \"react\";\nimport { ReactComponent as CarotLeft } from \"icons/Carot_Left.svg\";\nimport { ReactComponent as CarotRight } from \"icons/Carot_Right.svg\";\n\nconst useStyles = makeStyles((theme) => ({\n\teventSelector: {\n\t\tdisplay: \"inline-block\",\n\t\tmargin: \"0 10px\",\n\t},\n\teventToggle: {\n\t\tcursor: \"pointer\",\n\t\theight: \"12px\",\n\t\twidth: \"12px\",\n\t\tfill: theme.palette.primary.main,\n\n\t\t\"&.disabled\": {\n\t\t\topacity: 0.3,\n\t\t\tcursor: \"default\",\n\t\t},\n\t},\n}));\n\nexport default function EventSelector({\n\tevents,\n\tonChangeEvent,\n\tdisableChange,\n}) {\n\tconst eventLength = events?.length ?? 0;\n\tconst styles = useStyles();\n\tconst [state, setState] = React.useState({\n\t\teventIndex: events?.length ? events?.length - 1 : 0,\n\t\teventCount: eventLength,\n\t});\n\n\t// Events initially comes in as 0, we need to check if we changed the event list.\n\tif (eventLength !== state.eventCount) {\n\t\tsetState({\n\t\t\t...state,\n\t\t\teventIndex: eventLength - 1,\n\t\t\teventCount: eventLength,\n\t\t});\n\t}\n\n\tif (!events?.length) {\n\t\treturn <>;\n\t}\n\n\t// for now, show at most current event and one previous\n\tconst furthestEventIndexAllowed =\n\t\tevents.length - 2 >= 0 ? events.length - 2 : 0;\n\n\tconst event = events[state.eventIndex];\n\tconst viewNextEvent = (offset) => {\n\t\tif (\n\t\t\tdisableChange ||\n\t\t\t(offset === -1 && state.eventIndex === furthestEventIndexAllowed)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst updatedEventIndex = state.eventIndex + offset;\n\n\t\tif (updatedEventIndex < 0 || updatedEventIndex >= events.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetState({\n\t\t\t...state,\n\t\t\teventIndex: updatedEventIndex,\n\t\t});\n\n\t\tconst event = events[updatedEventIndex];\n\t\tonChangeEvent(event.eventId);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t
{event.eventName}
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t);\n}\n","import * as React from \"react\";\nimport {\n\tDivider,\n\tGrid,\n\tmakeStyles,\n\tTable,\n\tTableBody,\n\tTableCell,\n\tTableContainer,\n\tTableHead,\n\tTableRow,\n} from \"@material-ui/core\";\nimport TabToggle from \"common/components/TabToggle/TabToggle\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport EventSelector from \"common/components/EventSelector/EventSelector\";\nimport LeagueNameplate from \"../LeagueNameplate/LeagueNameplate\";\nimport UserCard from \"../UserCard\";\nimport { Colors } from \"styles/Colors\";\nimport { changeUrl } from \"common/history\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport { GetCurrentGamePrefix } from \"common/constants/Games\";\n\nconst useStyles = makeStyles((theme) => ({\n\ttableContainer: {\n\t\tmarginTop: 12,\n\t},\n\tpoints: {\n\t\tbackgroundColor: Colors.body,\n\t\tpadding: \"8px 12px\",\n\t\tborderRadius: 12,\n\t\tcursor: \"pointer\",\n\t\ttextWrap: \"no-wrap\",\n\t},\n}));\n\nexport default function LeagueInfo({\n\tleague,\n\tevents,\n\trankings,\n\tviewType,\n\tshowNameplate,\n\tonChangeViewType,\n\tonChangeEvent,\n}) {\n\tconst styles = useStyles();\n\tconst navItems = [\n\t\t{\n\t\t\tid: 1,\n\t\t\ttext: \"Event\",\n\t\t},\n\t\t{\n\t\t\tid: 2,\n\t\t\ttext: \"Season\",\n\t\t\tdisabled: true,\n\t\t},\n\t];\n\n\tconst maxTableHeight = window.innerHeight - 250;\n\tconst openPicks = (eventId, userId) => {\n\t\tModalHelper.closeAllModals();\n\t\tconst route = GetCurrentGamePrefix();\n\t\tchangeUrl(`${route}/event/${eventId}/${userId}`);\n\t};\n\n\tReact.useEffect(() => {\n\t\tif (!viewType) {\n\t\t\tStore.set(StoreKeys.LEAGUES.ANALYST.VIEW_TYPE, 1);\n\t\t}\n\t});\n\n\treturn (\n\t\t\n\t\t\t{showNameplate && (\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t{rankings && (\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tName\n\t\t\t\t\t\t\t\t\tScore\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{rankings.map((r, i) => (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{r.rank}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t openPicks(r.eventId, r.userId)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{r.totalScore ?? 0} pts.\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t)}\n\t\t
\n\t);\n}\n","export const LeagueViewType = {\n\tjoined: 0,\n\tnew: 1,\n\tpopular: 2,\n};\n","import LeagueService from \"services/LeagueService\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport { LeagueViewType } from \"common/constants/LeagueViewType\";\n\nexport const loadUserLeagueInfo = async () => {\n await Promise.all([\n LeagueService.getUserLeagueLimit(),\n LeagueService.getJoinedLeagues(),\n LeagueService.getNewLeagues(),\n LeagueService.getPopularLeagues(),\n ]).then(([limit, joined, newest, popular]) => {\n const updates = {};\n updates[StoreKeys.LEAGUES.LIMIT] = limit;\n updates[StoreKeys.LEAGUES.JOINED] = joined;\n updates[StoreKeys.LEAGUES.NEW] = newest;\n updates[StoreKeys.LEAGUES.POPULAR] = popular;\n updates[StoreKeys.LEAGUES.NAV_VIEW_TYPE] =\n joined.length > 0 ? LeagueViewType.joined : LeagueViewType.popular;\n Store.setMany(updates);\n });\n};\n\nexport const loadAnalystLeagueInfo = async () => {\n const analystLeague = await LeagueService.getAnalystLeague();\n const events = await LeagueService.getLeagueEvents(analystLeague.id);\n let rankings = [];\n if (events.length > 0) {\n const lastEvent = events[events.length - 1];\n rankings = await LeagueService.getLeagueRankings(\n analystLeague.id,\n lastEvent.eventId\n );\n } else {\n // Load and show all members 0 pts\n }\n\n const updates = {};\n updates[StoreKeys.LEAGUES.ANALYST.LEAGUE] = analystLeague;\n updates[StoreKeys.LEAGUES.ANALYST.EVENTS] = events;\n updates[StoreKeys.LEAGUES.ANALYST.RANKINGS] = rankings;\n Store.setMany(updates);\n};\n","import React from \"react\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalPanelTransparent,\n\tModalHeader,\n\tModalBody,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\n// eslint-disable-next-line no-unused-vars\nimport { NameplateStyle } from \"common/types/NameplateStyle\";\nimport { Grid, makeStyles, Box } from \"@material-ui/core\";\nimport LeagueNameplate from \"common/components/LeagueNameplate/LeagueNameplate\";\n\nconst useStyles = makeStyles((theme) => ({\n\tpointer: {\n\t\tcursor: \"pointer\",\n\t},\n\tname: {\n\t\ttextDecoration: \"underline\",\n\t\tdisplay: \"block\",\n\t\tmarginTop: theme.spacing(),\n\t\tcursor: \"pointer\",\n\t},\n\tdescriptionContainer: {\n\t\ttextAlign: \"center\",\n\t\tfontSize: 14,\n\t},\n\tdescription: {\n\t\tcursor: \"pointer\",\n\t},\n\tmaxHeight300: {\n\t\tmaxHeight: 300,\n\t\toverflowY: \"auto\",\n\t},\n\textraItems: {\n\t\tdisplay: \"flex\",\n\t\tflexDirection: \"column\",\n\t\talignContent: \"space-around\",\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tmarginTop: 8,\n\t},\n}));\n\nexport default function LeagueNameplateSelectorModal(props) {\n\tconst { leagueName, hideDefault } = props;\n\t/** @type {Array} */\n\tconst nameplates = props.nameplates;\n\t/** @type {(value: NameplateStyle) => void} */\n\tconst onSelect = props.onSelect;\n\tconst styles = useStyles();\n\n\t/** @type {NameplateStyle} */\n\tconst defaultNameplate = new NameplateStyle(\n\t\tnull,\n\t\t\"Classic\",\n\t\t\"The default nameplate\",\n\t\t\"\"\n\t);\n\n\tif (!onSelect) {\n\t\tconsole.error(\n\t\t\t\"You are using a Nameplate Selector Modal without an onSelect callback.\"\n\t\t);\n\t}\n\n\t/**\n\t *\n\t * @param {NameplateStyle} nameplate\n\t * @returns {JSX.Element}\n\t */\n\tconst renderNameplateChoice = (nameplate, i) => {\n\t\treturn (\n\t\t\t onSelect(nameplate)}\n\t\t\t\tjustify=\"center\"\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{props.header ?? \"Select a Nameplate\"}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{!hideDefault && renderNameplateChoice(defaultNameplate)}\n\t\t\t\t\t\t\t{nameplates.map((nameplate, i) =>\n\t\t\t\t\t\t\t\trenderNameplateChoice(nameplate, i)\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{hideDefault && nameplates.length === 0 && (\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

There are no nameplates to select.

\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n","import CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalBody,\n\tModalHeader,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport * as React from \"react\";\nimport \"../SuccessFailModal/SuccessFailModal.scss\";\n\nexport default function SuccessModal(props) {\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tSuccess\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t);\n}\n","import React from \"react\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalBody,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport {\n\tTextField,\n\tTable,\n\tTableBody,\n\tTableCell,\n\tTableRow,\n\tInputAdornment,\n\tGrid,\n\tCheckbox,\n} from \"@material-ui/core\";\nimport { LockOpen, Search, VpnKey } from \"@material-ui/icons\";\nimport LeagueService from \"services/LeagueService\";\nimport FatButton from \"common/components/FatButton/FatButton\";\nimport NameplateService from \"services/NameplateService\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport { loadUserLeagueInfo } from \"common/helpers/leagueHelper\";\nimport LeagueNameplateSelectorModal from \"./LeagueNameplateSelectorModal\";\nimport LeagueNameplate from \"common/components/LeagueNameplate/LeagueNameplate\";\nimport ContentHeader from \"common/components/ContentHeader/ContentHeader\";\nimport { ReactComponent as Crown } from \"icons/Crown.svg\";\nimport SuccessModal from \"common/components/Modals/SuccessModal/SuccessModal\";\n\nexport default function CreateEditLeagueModal({ isEdit, league }) {\n\tconst [name, setName] = React.useState(league?.name ?? \"\");\n\tconst [password, setPassword] = React.useState(\n\t\tleague?.hasPassword ? \"********\" : \"\"\n\t);\n\tconst [confirmPassword, setConfirmPassword] = React.useState(\n\t\tleague?.hasPassword ? \"********\" : \"\"\n\t);\n\tconst [requireDiscord, setRequireDiscord] = React.useState(\n\t\tleague?.requireDiscord ?? false\n\t);\n\tconst [requireReddit, setRequireReddit] = React.useState(\n\t\tleague?.requireReddit ?? false\n\t);\n\tconst [nameplateId, setNameplateId] = React.useState(league?.nameplateId);\n\n\tconst setNameplate = (nameplate) => {\n\t\tModalHelper.closeModal();\n\t\tsetNameplateId(nameplate.id);\n\t};\n\n\tconst changeNameplate = async () => {\n\t\tSetLoading(true, \"Loading Nameplates\");\n\t\tconst nameplates = await NameplateService.getUserNameplates();\n\t\tSetLoading(false);\n\t\tModalHelper.openModal(\n\t\t\t\n\t\t);\n\t};\n\n\tconst save = async () => {\n\t\tSetLoading(true, \"Saving League\");\n\t\ttry {\n\t\t\tawait LeagueService.createOrUpdateLeague(\n\t\t\t\tisEdit ? league.id : null,\n\t\t\t\tname,\n\t\t\t\tpassword,\n\t\t\t\tconfirmPassword,\n\t\t\t\tnameplateId,\n\t\t\t\trequireDiscord,\n\t\t\t\trequireReddit\n\t\t\t);\n\t\t\tModalHelper.closeAllModals();\n\t\t\tawait loadUserLeagueInfo();\n\t\t\tSetLoading(false);\n\t\t\tModalHelper.openModal();\n\t\t} catch (error) {\n\t\t\tSetLoading(false);\n\t\t\tconsole.log(error);\n\t\t}\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\ttext={`${isEdit ? \"Edit\" : \"Create\"} League`}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tLeague Name:\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t setName(e.target.value)}\n\t\t\t\t\t\t\t\t\t\tdefaultValue={league?.name ?? \"\"}\n\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\t\t\tendAdornment: (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tPassword (optional):\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t setPassword(e.target.value)}\n\t\t\t\t\t\t\t\t\t\tdefaultValue={league?.hasPassword ? \"********\" : \"\"}\n\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\t\t\tendAdornment: (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tConfirm Password:\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t setConfirmPassword(e.target.value)}\n\t\t\t\t\t\t\t\t\t\tdefaultValue={league?.hasPassword ? \"********\" : \"\"}\n\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\t\t\tendAdornment: (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tRequire Discord Login:\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tsetRequireDiscord(e.target.checked);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tRequire Reddit Login:\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tsetRequireReddit(e.target.checked);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n","import React from \"react\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalBody,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport { Grid } from \"@material-ui/core\";\nimport FatButton from \"common/components/FatButton/FatButton\";\nimport ContentHeader from \"common/components/ContentHeader/ContentHeader\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport { ReactComponent as Crown } from \"icons/Crown.svg\";\n\nexport default function LeaveDeleteLeagueModal({ isDelete, onConfirm }) {\n\tconst cancel = () => {\n\t\tModalHelper.closeModal();\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\ttext={isDelete ? \"Delete League\" : \"Leave League\"}\n\t\t\t\t\t/>\n\t\t\t\t\t

\n\t\t\t\t\t\tAre you sure you want to {isDelete ? \"delete\" : \"leave\"} this\n\t\t\t\t\t\tleague?\n\t\t\t\t\t

\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n","import * as React from \"react\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalBody,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport ContentHeader from \"common/components/ContentHeader/ContentHeader\";\nimport { ReactComponent as Crown } from \"icons/Crown.svg\";\nimport LeagueInfo from \"common/components/LeagueInfo/LeagueInfo\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport LeagueService from \"services/LeagueService\";\nimport { connect } from \"common/connect\";\nimport UserManager from \"common/userManager\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport { loadUserLeagueInfo } from \"common/helpers/leagueHelper\";\nimport ErrorModal from \"common/components/Modals/ErrorModal/ErrorModal\";\nimport CreateEditLeagueModal from \"common/components/Modals/Leagues/CreateEditLeagueModal\";\nimport LeaveDeleteLeagueModal from \"common/components/Modals/Leagues/LeaveDeleteLeagueModal\";\nimport SuccessModal from \"common/components/Modals/SuccessModal/SuccessModal\";\n\nconst propKeys = {\n\tevents: StoreKeys.LEAGUES.VIEWING.EVENTS,\n\tleague: StoreKeys.LEAGUES.VIEWING.LEAGUE,\n\trankings: StoreKeys.LEAGUES.VIEWING.RANKINGS,\n\tviewType: StoreKeys.LEAGUES.VIEWING.VIEW_TYPE,\n};\n\nfunction LeagueDetailsModalC({ events, league, rankings, viewType }) {\n\tconst isLeagueCreator = UserManager.getUserId() === league.createdBy;\n\tconst onChangeViewType = (id) => {\n\t\tStore.set(StoreKeys.LEAGUES.VIEWING.VIEW_TYPE, id);\n\t};\n\n\tconst onChangeEvent = async (eventId) => {\n\t\tSetLoading(true, \"Loading League Rankings\");\n\t\tconst rankings = await LeagueService.getLeagueRankings(league.id, eventId);\n\t\tStore.set(StoreKeys.LEAGUES.VIEWING.RANKINGS, rankings);\n\t\tSetLoading(false);\n\t};\n\n\tconst attemptLeaveLeague = async () => {\n\t\ttry {\n\t\t\tModalHelper.closeAllModals();\n\t\t\tSetLoading(true, \"Leaving League\");\n\t\t\tawait LeagueService.leaveLeague(league.id);\n\t\t\tSetLoading(true, \"Refreshing Leagues Data\");\n\t\t\tawait loadUserLeagueInfo();\n\t\t\tSetLoading(false);\n\t\t\tModalHelper.openModal();\n\t\t} catch (error) {\n\t\t\tSetLoading(false);\n\t\t\tif (error[\"message\"]) {\n\t\t\t\tModalHelper.openModal(\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst attemptDeleteLeague = async () => {\n\t\ttry {\n\t\t\tSetLoading(true, \"Deleting League\");\n\t\t\tawait LeagueService.deleteLeague(league.id);\n\t\t\tModalHelper.closeAllModals();\n\t\t\tawait loadUserLeagueInfo();\n\t\t\tSetLoading(false);\n\t\t\tModalHelper.openModal();\n\t\t} catch (error) {\n\t\t\tSetLoading(false);\n\t\t\tconsole.log(error);\n\t\t}\n\t};\n\n\tconst openLeaveLeague = () => {\n\t\tModalHelper.openModal(\n\t\t\t attemptLeaveLeague()} />\n\t\t);\n\t};\n\n\tconst openDeleteLeague = () => {\n\t\tModalHelper.openModal(\n\t\t\t attemptDeleteLeague()}\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst openEditLeague = () => {\n\t\tModalHelper.openModal(\n\t\t\t\n\t\t);\n\t};\n\n\tReact.useEffect(() => {\n\t\tif (!viewType) {\n\t\t\tStore.set(StoreKeys.LEAGUES.VIEWING.VIEW_TYPE, 1);\n\t\t}\n\t});\n\n\tconst ownerMenuItems = [\n\t\t{ onClick: openEditLeague, text: \"Edit League\" },\n\t\t{ onClick: openDeleteLeague, text: \"Delete League\" },\n\t];\n\tconst memberMenuItems = [{ onClick: openLeaveLeague, text: \"Leave League\" }];\n\tconst menuItems = isLeagueCreator ? ownerMenuItems : memberMenuItems;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\ttext=\"League Info\"\n\t\t\t\t\t\tmenuItems={menuItems}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nexport default function LeagueDetailsModal(props) {\n\treturn connect(, propKeys, props);\n}\n","import * as React from \"react\";\nimport { Box, makeStyles } from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport StoreKeys from \"common/storeKeys\";\nimport Store from \"common/store\";\nimport LeagueService from \"services/LeagueService\";\nimport { SetLoading } from \"../Loader/Loader\";\nimport LeagueDetailsModal from \"../Modals/Leagues/LeagueDetailsModal\";\n\nconst useStyles = makeStyles((theme) => ({\n\troot: {\n\t\tbackgroundColor: Colors.panelLight,\n\t\tborderRadius: 12,\n\t\tborder: \"1px solid \" + theme.palette.primary.main,\n\t\tcolor: theme.palette.primary.main,\n\t\ttextAlign: \"left\",\n\t\tdisplay: \"inline-flex\",\n\t\talignItems: \"center\",\n\t\twidth: 200,\n\t\theight: 34,\n\t\twhiteSpace: \"nowrap\",\n\t},\n\tname: {\n\t\tmargin: 8,\n\t\tflex: \"0 0 184px\",\n\t\tfont: \"normal normal bold 14px/24px Arial\",\n\t\tmaxWidth: \"100%\",\n\t\ttextAlign: \"center\",\n\t\ttextOverflow: \"ellipsis\",\n\t\toverflow: \"hidden\",\n\t},\n\tclickable: {\n\t\tcursor: \"pointer\",\n\t},\n}));\n\nexport default function LeagueNameplate({\n\tid,\n\tname,\n\tnameplateId,\n\tdisableClick,\n}) {\n\tconst styles = useStyles();\n\tconst nameplateIdClassName = `nameplate-${nameplateId}`;\n\tconst showLeagueInfo = async () => {\n\t\tSetLoading(true, \"Loading League Info\");\n\t\tconst [league, events] = await Promise.all([\n\t\t\tLeagueService.getLeague(id),\n\t\t\tLeagueService.getLeagueEvents(id),\n\t\t]);\n\n\t\tlet rankings = [];\n\t\tif (events.length > 0) {\n\t\t\tconst lastEvent = events[events.length - 1];\n\t\t\trankings = await LeagueService.getLeagueRankings(id, lastEvent.eventId);\n\t\t} else {\n\t\t\t// Load and show all members 0 pts\n\t\t}\n\n\t\tconst updates = {};\n\t\tupdates[StoreKeys.LEAGUES.VIEWING.LEAGUE] = league;\n\t\tupdates[StoreKeys.LEAGUES.VIEWING.EVENTS] = events;\n\t\tupdates[StoreKeys.LEAGUES.VIEWING.RANKINGS] = rankings;\n\t\tStore.setMany(updates);\n\t\tSetLoading(false);\n\t\tModalHelper.openModal();\n\t};\n\n\treturn (\n\t\t {\n\t\t\t\tif (disableClick) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tshowLeagueInfo();\n\t\t\t}}\n\t\t>\n\t\t\t\n\t\t\t\t{name}\n\t\t\t\n\t\t\n\t);\n}\n","var _g, _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgGreenOpenLock = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Component_161_1\",\n \"data-name\": \"Component 161 \\\\u2013 1\",\n width: 25,\n height: 25,\n viewBox: \"0 0 25 25\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Component_159_3\",\n \"data-name\": \"Component 159 \\\\u2013 3\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_1661\",\n \"data-name\": \"Rectangle 1661\",\n width: 25,\n height: 25,\n rx: 12,\n transform: \"translate(25) rotate(90)\",\n fill: \"#5ddb65\"\n }))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"ic_lock_open_24px\",\n d: \"M9.84,12.68a1.46,1.46,0,1,0-1.46-1.46A1.464,1.464,0,0,0,9.84,12.68Zm4.38-6.57h-.73V4.65a3.65,3.65,0,0,0-7.3,0H7.577a2.263,2.263,0,0,1,4.526,0V6.11H5.46A1.464,1.464,0,0,0,4,7.57v7.3a1.464,1.464,0,0,0,1.46,1.46h8.76a1.464,1.464,0,0,0,1.46-1.46V7.57A1.464,1.464,0,0,0,14.22,6.11Zm0,8.76H5.46V7.57h8.76Z\",\n transform: \"translate(2.66 2.834)\",\n fill: \"#373737\"\n })));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgGreenOpenLock, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/Green_Open_Lock.cbdb3930.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgOrangeLock = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Component_162_1\",\n \"data-name\": \"Component 162 \\\\u2013 1\",\n width: 25,\n height: 25,\n viewBox: \"0 0 25 25\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_1661\",\n \"data-name\": \"Rectangle 1661\",\n width: 25,\n height: 25,\n rx: 12,\n transform: \"translate(25) rotate(90)\",\n fill: \"#ffb300\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"ic_lock_outline_24px\",\n d: \"M9.806,12.611A1.451,1.451,0,1,0,8.354,11.16,1.456,1.456,0,0,0,9.806,12.611ZM14.16,6.08h-.726V4.629a3.629,3.629,0,0,0-7.257,0V6.08H5.451A1.456,1.456,0,0,0,4,7.531v7.257A1.456,1.456,0,0,0,5.451,16.24H14.16a1.456,1.456,0,0,0,1.451-1.451V7.531A1.456,1.456,0,0,0,14.16,6.08Zm-6.6-1.451a2.25,2.25,0,0,1,4.5,0V6.08h-4.5Zm6.6,10.16H5.451V7.531H14.16Z\",\n transform: \"translate(2.66 3.38)\",\n fill: \"#373737\"\n })));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgOrangeLock, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/Orange_Lock.e2520030.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalHeader,\n\tModalBody,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport {\n\tTextField,\n\tTable,\n\tTableBody,\n\tTableCell,\n\tTableRow,\n\tInputAdornment,\n\tGrid,\n} from \"@material-ui/core\";\nimport { LockOpen } from \"@material-ui/icons\";\nimport FatButton from \"common/components/FatButton/FatButton\";\nimport ContentHeader from \"common/components/ContentHeader/ContentHeader\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport { ReactComponent as Crown } from \"icons/Crown.svg\";\n\nexport default function JoinLeagueModal({ onConfirm }) {\n\tconst [password, setPassword] = React.useState(\"\");\n\n\tconst confirm = () => {\n\t\tonConfirm(password);\n\t};\n\n\tconst cancel = () => {\n\t\tModalHelper.closeModal();\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t} text=\"Join Private League\" />\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tPassword:\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t setPassword(e.target.value)}\n\t\t\t\t\t\t\t\t\t\tdefaultValue={\"\"}\n\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\t\t\tendAdornment: (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n","import {\n\tHidden,\n\tTable,\n\tTableBody,\n\tTableCell,\n\tTableHead,\n\tTableRow,\n\tmakeStyles,\n} from \"@material-ui/core\";\nimport * as React from \"react\";\nimport LeagueNameplate from \"../LeagueNameplate/LeagueNameplate\";\nimport { ReactComponent as GreenOpenLock } from \"icons/Green_Open_Lock.svg\";\nimport { ReactComponent as OrangeLock } from \"icons/Orange_Lock.svg\";\nimport JoinLeagueModal from \"../Modals/Leagues/JoinLeagueModal\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport { loadUserLeagueInfo } from \"common/helpers/leagueHelper\";\nimport ErrorModal from \"../Modals/ErrorModal/ErrorModal\";\nimport { SetLoading } from \"../Loader/Loader\";\nimport LeagueService from \"services/LeagueService\";\nimport SuccessModal from \"../Modals/SuccessModal/SuccessModal\";\nimport StoreKeys from \"common/storeKeys\";\nimport { connect } from \"common/connect\";\nimport { InfoRounded } from \"@material-ui/icons\";\nimport HtmlTooltip from \"../HtmlTooltip/HtmlTooltip\";\n\nconst useStyles = makeStyles((theme) => ({\n\tlogoImage: {\n\t\twidth: 24,\n\t},\n\tinfo: {\n\t\tfontSize: 16,\n\t\tposition: \"relative\",\n\t\ttop: 3,\n\t\tleft: 3,\n\t\tcursor: \"pointer\",\n\t},\n}));\n\nconst propKeys = {\n\tjoinedLeagues: StoreKeys.LEAGUES.JOINED,\n};\n\nfunction LeagueTableC({ joinedLeagues, leagues, loggedIn }) {\n\tconst styles = useStyles();\n\tconst attemptJoinLeague = async (leagueId, password = null) => {\n\t\ttry {\n\t\t\tModalHelper.closeAllModals();\n\t\t\tSetLoading(true, \"Joining League\");\n\t\t\tawait LeagueService.joinLeague(leagueId, password);\n\t\t\tSetLoading(true, \"Refreshing Leagues Data\");\n\t\t\tawait loadUserLeagueInfo();\n\t\t\tSetLoading(false);\n\t\t\tModalHelper.openModal();\n\t\t} catch (error) {\n\t\t\tSetLoading(false);\n\t\t\tif (error[\"message\"]) {\n\t\t\t\tModalHelper.openModal(\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst joinLeague = async (leagueId, hasPassword) => {\n\t\tif (joinedLeagues.find((l) => l.leagueId == leagueId)) {\n\t\t\tModalHelper.openModal(\n\t\t\t\t\n\t\t\t);\n\t\t} else if (!hasPassword) {\n\t\t\tattemptJoinLeague(leagueId);\n\t\t} else {\n\t\t\tModalHelper.openModal(\n\t\t\t\t attemptJoinLeague(leagueId, password)}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\tLeague Name\n\t\t\t\t\t\n\t\t\t\t\t\tMembers\n\t\t\t\t\t\t#\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tRequired{\" \"}\n\t\t\t\t\t\t{/* \n\t\t\t\t\t\t\t\t\t3rd Party Account Link Required.\n\t\t\t\t\t\t\t\t\tOpen your profile to link 3rd party accounts.\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t */}\n\t\t\t\t\t\n\t\t\t\t\t{loggedIn && Join}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{leagues.map((l, i) => (\n\t\t\t\t\t\n\t\t\t\t\t\t{i + 1}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{l.members}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{l.requireDiscord && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{l.requireReddit && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\t{loggedIn && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{l.hasPassword ? (\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\tjoinLeague(l.id, l.hasPassword);\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\tjoinLeague(l.id, l.hasPassword);\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t)}\n\t\t\t\t\t
\n\t\t\t\t))}\n\t\t\t
\n\t\t
\n\t);\n}\n\nexport default function LeagueTable(props) {\n\treturn connect(, propKeys, props);\n}\n","import React from \"react\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalHeader,\n\tModalBody,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport {\n\tTextField,\n\tTable,\n\tTableBody,\n\tTableCell,\n\tTableRow,\n\tInputAdornment,\n\tGrid,\n} from \"@material-ui/core\";\nimport { Search } from \"@material-ui/icons\";\nimport LeagueService from \"services/LeagueService\";\nimport LeagueTable from \"common/components/LeagueTable/LeagueTable\";\nimport UserManager from \"common/userManager\";\nimport ContentHeader from \"common/components/ContentHeader/ContentHeader\";\nimport { ReactComponent as Crown } from \"icons/Crown.svg\";\n\nlet searchTimeoutID = -1;\n\nexport default function SearchLeaguesModal() {\n\tconst [state, setState] = React.useState({\n\t\tsearchTerm: \"\",\n\t\tleagues: [],\n\t});\n\tconst loggedIn = UserManager.isLoggedIn();\n\n\tconst onChangeTerm = (searchTerm) => {\n\t\tif (searchTerm.length < 3) {\n\t\t\tsetState({\n\t\t\t\tsearchTerm,\n\t\t\t\tleagues: [],\n\t\t\t});\n\t\t\tif (searchTimeoutID) {\n\t\t\t\tclearTimeout(searchTimeoutID);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tsetState({\n\t\t\tsearchTerm,\n\t\t\tleagues: state.leagues,\n\t\t});\n\n\t\tif (searchTimeoutID) {\n\t\t\tclearTimeout(searchTimeoutID);\n\t\t}\n\n\t\tsearchTimeoutID = window.setTimeout(() => {\n\t\t\tLeagueService.searchLeagues(searchTerm).then((leagues) => {\n\t\t\t\tsetState({\n\t\t\t\t\tsearchTerm,\n\t\t\t\t\tleagues,\n\t\t\t\t});\n\t\t\t});\n\t\t}, 250); //run the search code 250 milliseconds after last change\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t} text=\"League Search\" />\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tLeague Name:\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t onChangeTerm(e.target.value)}\n\t\t\t\t\t\t\t\t\t\tdefaultValue={\"\"}\n\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\t\t\tendAdornment: (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t{state.leagues?.length > 0 && (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n","import * as React from \"react\";\nimport ContentHeader from \"common/components/ContentHeader/ContentHeader\";\nimport ContentPanel from \"common/components/ContentPanel/ContentPanel\";\nimport {\n\tGrid,\n\tmakeStyles,\n\tTable,\n\tTableBody,\n\tTableCell,\n\tTableHead,\n\tTableRow,\n} from \"@material-ui/core\";\nimport { ReactComponent as Crown } from \"icons/Crown.svg\";\nimport { connect } from \"common/connect\";\nimport StoreKeys from \"common/storeKeys\";\nimport AddCircleRoundedIcon from \"@material-ui/icons/AddCircleRounded\";\nimport { Colors } from \"styles/Colors\";\nimport FatButton from \"common/components/FatButton/FatButton\";\nimport TabToggle from \"common/components/TabToggle/TabToggle\";\nimport { Search, Warning } from \"@material-ui/icons\";\nimport { League } from \"common/types/League\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport LeagueNameplate from \"common/components/LeagueNameplate/LeagueNameplate\";\nimport { toMonthNameAndYear } from \"common/helpers/dateHelper\";\nimport Store from \"common/store\";\nimport { LeagueViewType } from \"common/constants/LeagueViewType\";\nimport CreateEditLeagueModal from \"common/components/Modals/Leagues/CreateEditLeagueModal\";\nimport UserManager from \"common/userManager\";\nimport LeagueTable from \"common/components/LeagueTable/LeagueTable\";\nimport SearchLeaguesModal from \"common/components/Modals/Leagues/SearchLeaguesModal\";\n\nconst propKeys = {\n\tleagueLimit: StoreKeys.LEAGUES.LIMIT,\n\tjoinedLeagues: StoreKeys.LEAGUES.JOINED,\n\tnewLeagues: StoreKeys.LEAGUES.NEW,\n\tpopularLeagues: StoreKeys.LEAGUES.POPULAR,\n\tviewType: StoreKeys.LEAGUES.NAV_VIEW_TYPE,\n};\n\nconst useStyles = makeStyles((theme) => ({\n\tmessage: {\n\t\tdisplay: \"block\",\n\t\twidth: \"100%\",\n\t\ttextAlign: \"center\",\n\t\ttextTransform: \"uppercase\",\n\t\tfont: \"normal normal normal 14px/27px Arial\",\n\t\tletterSpacing: 1.2,\n\n\t\t\"& svg\": {\n\t\t\theight: 16,\n\t\t\twidth: 16,\n\t\t\tposition: \"relative\",\n\t\t\ttop: 2,\n\t\t\tmarginRight: 4,\n\t\t\tfill: Colors.pickstop,\n\t\t},\n\t},\n\tsubtext: {\n\t\tcolor: Colors.primaryDark,\n\t\ttextAlign: \"center\",\n\t\tfontSize: 14,\n\t\twidth: 200,\n\t},\n\tdateSubtext: {\n\t\tfont: \"normal normal normal 11px/24px Roboto\",\n\t},\n\tsearchContainer: {\n\t\tmarginTop: 8,\n\t\tposition: \"relative\",\n\t\tdisplay: \"flex\",\n\t\twidth: \"100%\",\n\t\tjustifyContent: \"flex-end\",\n\t},\n\tsearchFullWidth: {\n\t\tdisplay: \"flex\",\n\t\tjustifyContent: \"center\",\n\t\tposition: \"absolute\",\n\t\tleft: 0,\n\t\tright: 0,\n\t},\n\tsearch: {\n\t\tdisplay: \"flex\",\n\t\twidth: 42,\n\t\theight: 42,\n\t\tborder: `1px solid ${Colors.primary}`,\n\t\tbackground: Colors.body,\n\t\tborderRadius: 4,\n\t\talignContent: \"center\",\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tcursor: \"pointer\",\n\t\tzIndex: 1,\n\t\tposition: \"relative\",\n\t},\n\tleagueSlotLabel: {\n\t\tpadding: \"24px 0px\",\n\t\tcolor: Colors.panelLighterColor,\n\t\tfont: \"normal normal 18px/14px Roboto\",\n\t},\n\trank: {\n\t\tfont: \"normal normal 22px/8px Roboto;\",\n\t},\n}));\n\nfunction LeagueNavigatorC({\n\tleagueLimit,\n\tjoinedLeagues,\n\tnewLeagues,\n\tpopularLeagues,\n\tviewType,\n}) {\n\tconst styles = useStyles();\n\tconst joinedAny = joinedLeagues?.length > 0;\n\tconst loggedIn = UserManager.isLoggedIn();\n\n\tconst onChange = (id) => {\n\t\tStore.set(StoreKeys.LEAGUES.NAV_VIEW_TYPE, id);\n\t};\n\n\tconst onSearch = () => {\n\t\tModalHelper.openModal();\n\t};\n\n\tconst joinedOrCreate = loggedIn && (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t {\n\t\t\t\t\t\tModalHelper.openModal(\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t);\n\t\t\t\t\t}}\n\t\t\t\t\tprimary\n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n\n\tconst navItems = [\n\t\t{\n\t\t\tid: LeagueViewType.popular,\n\t\t\ttext: \"Popular\",\n\t\t},\n\t\t{\n\t\t\tid: LeagueViewType.new,\n\t\t\ttext: \"New\",\n\t\t},\n\t];\n\n\tif (joinedAny) {\n\t\tnavItems.unshift({\n\t\t\tid: LeagueViewType.joined,\n\t\t\ttext: \"Joined\",\n\t\t});\n\t}\n\n\tconst navTabs = (\n\t\t\n\t);\n\n\tconst search = (\n\t\t
\n\t\t\t\n\t\t
\n\t);\n\n\t/** @type{ League[] } */\n\tlet leagues = [];\n\tswitch (viewType) {\n\t\tcase LeagueViewType.joined:\n\t\t\tleagues = joinedLeagues ?? [];\n\t\t\tbreak;\n\t\tcase LeagueViewType.popular:\n\t\t\tleagues = popularLeagues ?? [];\n\t\t\tbreak;\n\t\tcase LeagueViewType.new:\n\t\t\tleagues = newLeagues ?? [];\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tleagues = popularLeagues ?? [];\n\t\t\tbreak;\n\t}\n\n\tconst leagueSlotsRemaining =\n\t\t(leagueLimit ?? 0) - (joinedLeagues?.length ?? 0);\n\tconst joinedLeaguesTable = (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tLeague Name\n\t\t\t\t\tYour Rank\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{leagues.map((l, i) => (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\tYou joined {toMonthNameAndYear(l.joinDate)}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t))}\n\t\t\t
\n\t\t
\n\t);\n\n\treturn (\n\t\t\n\t\t\t} text=\"League Navigator\" />\n\t\t\t\n\t\t\t\t{!joinedAny && !loggedIn && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{!joinedAny && loggedIn && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{joinedOrCreate}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\t\t
{navTabs}
\n\t\t\t\t\t{search}\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{viewType === LeagueViewType.joined && joinedLeaguesTable}\n\t\t\t\t\t{viewType !== LeagueViewType.joined && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{leagueSlotsRemaining > 0 && viewType === LeagueViewType.joined && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\t{joinedAny && (\n\t\t\t\t\t\n\t\t\t\t\t\t{joinedOrCreate}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t
\n\t);\n}\n\nexport default function LeagueNavigator(props) {\n\treturn connect(, propKeys, props);\n}\n","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgAnalyst2 = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16.515,\n height: 13.247,\n viewBox: \"0 0 16.515 13.247\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Component_163_1\",\n \"data-name\": \"Component 163 \\\\u2013 1\",\n transform: \"translate(0 0.5)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Union_2\",\n \"data-name\": \"Union 2\",\n d: \"M0,11.4V9.979C0,8.411,2.566,7.128,5.7,7.128s5.7,1.283,5.7,2.852V11.4ZM2.851,2.852A2.851,2.851,0,1,1,5.7,5.7,2.851,2.851,0,0,1,2.851,2.852Z\",\n transform: \"translate(0 1.342)\",\n fill: \"#ffb300\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_2027\",\n \"data-name\": \"Path 2027\",\n d: \"M-4741,16010.571v-.452h10.31v9.424h-4.2\",\n transform: \"translate(4746.701 -16010.119)\",\n fill: \"none\",\n stroke: \"#ffb300\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Rectangle_1291\",\n \"data-name\": \"Rectangle 1291\",\n transform: \"translate(11.404 2.767)\",\n fill: \"#ffb300\",\n stroke: \"#ffb300\",\n strokeLinejoin: \"round\",\n strokeWidth: 1\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 1.426,\n height: 5.702,\n stroke: \"none\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 0.426,\n height: 4.702,\n fill: \"none\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Rectangle_1292\",\n \"data-name\": \"Rectangle 1292\",\n transform: \"translate(9.268 5.618)\",\n fill: \"#ffb300\",\n stroke: \"#ffb300\",\n strokeLinejoin: \"round\",\n strokeWidth: 1\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 1.426,\n height: 2.851,\n stroke: \"none\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 0.426,\n height: 1.851,\n fill: \"none\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Rectangle_1293\",\n \"data-name\": \"Rectangle 1293\",\n transform: \"translate(13.543 1.342)\",\n fill: \"#ffb300\",\n stroke: \"#ffb300\",\n strokeLinejoin: \"round\",\n strokeWidth: 1\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 1.426,\n height: 7.128,\n stroke: \"none\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 0.426,\n height: 6.128,\n fill: \"none\"\n })))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgAnalyst2, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/Analyst_2.53827585.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from \"react\";\nimport ContentHeader from \"common/components/ContentHeader/ContentHeader\";\nimport ContentPanel from \"common/components/ContentPanel/ContentPanel\";\nimport { ReactComponent as Analyst } from \"icons/Analyst_2.svg\";\nimport { connect } from \"common/connect\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport LeagueInfo from \"common/components/LeagueInfo/LeagueInfo\";\nimport LeagueService from \"services/LeagueService\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\n\nconst propKeys = {\n\tevents: StoreKeys.LEAGUES.ANALYST.EVENTS,\n\tleague: StoreKeys.LEAGUES.ANALYST.LEAGUE,\n\trankings: StoreKeys.LEAGUES.ANALYST.RANKINGS,\n\tviewType: StoreKeys.LEAGUES.ANALYST.VIEW_TYPE,\n};\n\nfunction AnalystLeagueC({ events, league, rankings, viewType }) {\n\tconst onChangeViewType = (id) => {\n\t\tStore.set(StoreKeys.LEAGUES.ANALYST.VIEW_TYPE, id);\n\t};\n\n\tconst onChangeEvent = async (eventId) => {\n\t\tSetLoading(true, \"Loading League Rankings\");\n\t\tconst rankings = await LeagueService.getLeagueRankings(league.id, eventId);\n\t\tStore.set(StoreKeys.LEAGUES.ANALYST.RANKINGS, rankings);\n\t\tSetLoading(false);\n\t};\n\n\tReact.useEffect(() => {\n\t\tif (!viewType) {\n\t\t\tStore.set(StoreKeys.LEAGUES.ANALYST.VIEW_TYPE, 1);\n\t\t}\n\t});\n\n\treturn (\n\t\t\n\t\t\t} text=\"Analyst League\" />\n\t\t\t\n\t\t\n\t);\n}\n\nexport default function AnalystLeague(props) {\n\treturn connect(, propKeys, props);\n}\n","import { Grid, makeStyles } from \"@material-ui/core\";\nimport * as React from \"react\";\nimport LeagueNavigator from \"./LeagueNavigator\";\nimport AnalystLeague from \"./AnalystLeague\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport { loadUserLeagueInfo, loadAnalystLeagueInfo } from \"common/helpers/leagueHelper\";\n\nconst useStyles = makeStyles((theme) => ({\n\troot: {\n\t\tmarginTop: theme.spacing() * 2,\n\t\twidth: \"100%\",\n\t},\n}));\n\nexport default function LeagueScreen(props) {\n\tconst styles = useStyles();\n\n\tReact.useEffect(() => {\n\t\tSetLoading(true, \"Loading League Info\");\n\t\tPromise.all([loadUserLeagueInfo(), loadAnalystLeagueInfo()]).then(() => {\n\t\t\tSetLoading(false);\n\t\t});\n\t});\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n","var _defs, _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgDiscordIcon = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \"\\n .discord-fill {\\n fill: #5662f6;\\n }\\n \"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_702\",\n \"data-name\": \"Group 702\",\n transform: \"translate(0.49 0.387)\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Ellipse_317\",\n \"data-name\": \"Ellipse 317\",\n className: \"discord-fill\",\n cx: 16,\n cy: 16,\n r: 16,\n transform: \"translate(-0.49 -0.387)\"\n }), /*#__PURE__*/React.createElement(\"image\", {\n id: \"Discord-Logo-White\",\n width: 22.58,\n height: 25.442,\n transform: \"translate(4.516 3.387)\",\n xlinkHref: \"data:image/png;base64,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\"\n }))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgDiscordIcon, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/DiscordIcon.24a2d020.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgInstagramIcon = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \"\\n .insta-1 {\\n fill: #fff;\\n }\\n\\n .insta-2 {\\n clip-path: url(#clip-path);\\n }\\n\\n .insta-3 {\\n clip-path: url(#clip-path-2);\\n }\\n\\n .insta-4 {\\n clip-path: url(#clip-path-3);\\n }\\n\\n .insta-5 {\\n fill: url(#pattern);\\n }\\n \"), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip-path\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_2147\",\n \"data-name\": \"Path 2147\",\n d: \"M8.453,2.569a7.534,7.534,0,0,0-2.465.47A4.979,4.979,0,0,0,4.19,4.2,4.893,4.893,0,0,0,3.022,5.969,7.246,7.246,0,0,0,2.554,8.4C2.507,9.464,2.5,9.8,2.5,12.52s.017,3.056.069,4.123a7.232,7.232,0,0,0,.477,2.426,4.889,4.889,0,0,0,1.175,1.769,4.992,4.992,0,0,0,1.8,1.15,7.562,7.562,0,0,0,2.467.46c1.084.047,1.43.057,4.188.052s3.106-.017,4.19-.068a7.572,7.572,0,0,0,2.465-.47,4.988,4.988,0,0,0,1.8-1.157A4.9,4.9,0,0,0,22.3,19.033a7.222,7.222,0,0,0,.467-2.427c.047-1.067.059-1.408.053-4.124s-.018-3.056-.069-4.122a7.235,7.235,0,0,0-.477-2.427A4.9,4.9,0,0,0,21.1,4.164a4.982,4.982,0,0,0-1.8-1.15,7.538,7.538,0,0,0-2.467-.46C15.747,2.506,15.4,2.5,12.641,2.5s-3.1.017-4.189.068m.119,18.079a5.714,5.714,0,0,1-1.887-.34,3.172,3.172,0,0,1-1.17-.746,3.1,3.1,0,0,1-.762-1.148A5.464,5.464,0,0,1,4.4,16.557c-.05-1.054-.062-1.37-.067-4.041s0-2.986.051-4.041a5.461,5.461,0,0,1,.346-1.857,3.1,3.1,0,0,1,.758-1.152,3.153,3.153,0,0,1,1.167-.75A5.7,5.7,0,0,1,8.54,4.369c1.072-.05,1.393-.061,4.1-.066s3.034,0,4.106.051a5.691,5.691,0,0,1,1.886.34,3.15,3.15,0,0,1,1.17.746,3.093,3.093,0,0,1,.762,1.149,5.445,5.445,0,0,1,.353,1.855c.051,1.055.063,1.371.067,4.041s0,2.987-.052,4.041a5.469,5.469,0,0,1-.346,1.858,3.1,3.1,0,0,1-.758,1.151,3.164,3.164,0,0,1-1.167.75,5.7,5.7,0,0,1-1.885.348c-1.072.05-1.393.061-4.106.066s-3.033,0-4.105-.051M16.854,7.155a1.219,1.219,0,1,0,1.217-1.2,1.21,1.21,0,0,0-1.217,1.2M7.444,12.511A5.218,5.218,0,1,0,12.65,7.366a5.177,5.177,0,0,0-5.207,5.145m1.83,0a3.387,3.387,0,1,1,3.393,3.327,3.36,3.36,0,0,1-3.393-3.327\",\n transform: \"translate(-2.5 -2.5)\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip-path-2\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_1713\",\n \"data-name\": \"Rectangle 1713\",\n width: 21.947,\n height: 21.603\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip-path-3\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_1712\",\n \"data-name\": \"Rectangle 1712\",\n width: 22.151,\n height: 21.803\n })), /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"pattern\",\n preserveAspectRatio: \"none\",\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 2273 2275\"\n }, /*#__PURE__*/React.createElement(\"image\", {\n width: 2273,\n height: 2275,\n xlinkHref: \"data:image/jpeg;base64,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Hbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfww7d9j+GHbvsfw5h277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3fY/hh277H8MO3XY/hh26jfww7dRv4Yduo38MO3Ub+GHbqN/DDt1G/hh26jfww7dRv4Yduo38MO3Ub+GHbqN/DDt1G/hh26jfww7dRv4Yduo38MO3Ub+GHbqN/DDt1G/hh26jfww7dRv4Yduo38MO3Ub+GHbqN/DDt1G/hh26jfww7dRv4Yduo38MO3Ub+GHbqN/DDt1G/hh26j+GHbqP4Yduo38MO3Ub+GHbqP4Yduo/hh26j+GHbmP4YduY/hh25j+GHbmP4YduY/hh25j+GHbmP4YduY/hh25j+GHbmP4YduY/hh25j+GHbmP4YduY/hh25j+GHbmP4YduY/hh25j+GHbmNh25jYduY2HbmNh25jYduY2HbmNh24jYduI2HbiNh24jYduI2HbiNh24jYduI2HbiNh24jYduI2HbiNh24jYduI2HbiNh24jYduI2HbiNh24jYduI2HbiNh0+Nh0+Jh0+Jh0+Jh0+Jh0+Jh0+Jh0+Jh0+Jh0+Jh0+Jh0+Jh0+Jh0+Jh0+Jh0+Jh0+Jh0+Jh0+Jh0+Jh06Jh06Jh06Jh06Jh06Jh06Jh06Jh06Jh06Jh06Jh06Jh06Jh06Jh06Jh06Jh06Jh06Jh06Jh06Jh06Jh06Jh06Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jh02Jhz+j7fweHn/AFd+fp9v6v8Ape79DDf1JLc930/LnmGfj9H0+v7/APAf6c32/wAQ/wCR+n/5f9383/iNaca041pxrTjWnGtONaca041pxrTjWnGtONaca041pxrTjWnGtONaca041pxrTjWnGtONaca041pxrTjWnGtONaca041pxrTjWnGtONaca041pxrTjWnGtONaca041pxrTjWnGtONaca0415xrzjXnGvONeca8415xrzjXnGvONeca8415xrzjXnGvONeca8415xrzjXnGvONeYa8w15hrzDXmGvMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMPBMNeYa8w15hrzDXnGvONeca8415xrzjXnGvONeca041pxrTjWnGtONaca041pxrTjWnGtONacas41ZxqzjVnGrONWcas41ZxqzjVnGrONScak41JxqTjUUGooNRQaig1FBqKDTUGmoNNQaag01BpqDTUGmoNNQaag0lBpKDSUGkoNJQaSg0lBpKDSUGioNFQaKg0VBoqDRVGiqNFUaKo0FRoKjQVGgqNBUaCo0FRoKjQVGgqPXqj16o9eqPXqj16o9eqPXqj16o9eqPXqj1yo9cqPXKj1yo9cqPXLD1yw9csPXLD1yw9csPWrD1qw9asPWrD1qw9asPWrD1qw9asPWrD1qw9YsPWLD1iw9YsPWLD1iw9YsPWLD1iw9YsPWLD1iw9YsPWLD1iw9YsPWLD1iw9YsPWLD1iw9YsPWLD1aw9WsPVrD1aw9WsPVrD1aw9WsPVrD1aw9WsPVrB34/8Ay/z/AH/53yHY/wDU/E/0v+P7/wCz/9k=\"\n })))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_701\",\n \"data-name\": \"Group 701\",\n transform: \"translate(-0.255 0.387)\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Ellipse_318\",\n \"data-name\": \"Ellipse 318\",\n className: \"insta-1\",\n cx: 16,\n cy: 16,\n r: 16,\n transform: \"translate(0.255 -0.387)\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Instagram_Glyph_Gradient_RGB\",\n transform: \"translate(6.055 5.613)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_691\",\n \"data-name\": \"Group 691\",\n className: \"insta-2\",\n transform: \"translate(0 0)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_690\",\n \"data-name\": \"Group 690\",\n transform: \"translate(-0.821 -0.783)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_689\",\n \"data-name\": \"Group 689\",\n className: \"insta-3\",\n transform: \"translate(0)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_688\",\n \"data-name\": \"Group 688\",\n transform: \"translate(-0.102 -0.1)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_687\",\n \"data-name\": \"Group 687\",\n className: \"insta-4\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_686\",\n \"data-name\": \"Group 686\",\n className: \"insta-4\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_1710\",\n \"data-name\": \"Rectangle 1710\",\n className: \"insta-5\",\n width: 22.162,\n height: 21.814,\n transform: \"translate(-0.007 -0.003)\"\n })))))))))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgInstagramIcon, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/InstagramIcon.e7f8908e.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _defs;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgTwitterIcon = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 32,\n height: 32,\n fill: \"url(#pattern0)\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"pattern0\",\n patternContentUnits: \"objectBoundingBox\",\n width: 1,\n height: 1\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#image0_62_3\",\n transform: \"scale(0.00543478)\"\n })), /*#__PURE__*/React.createElement(\"image\", {\n id: \"image0_62_3\",\n width: 184,\n height: 184,\n xlinkHref: \"data:image/png;base64,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\"\n }))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgTwitterIcon, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/TwitterIcon.67d24624.svg\";\nexport { ForwardRef as ReactComponent };","import CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalBody,\n\tModalHeader,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport * as React from \"react\";\nimport \"./SuccessFailModal.scss\";\nimport Discord from \"common/components/Discord/Discord\";\nimport { Colors } from \"styles/Colors\";\nimport { ReactComponent as DiscordIcon } from \"icons/DiscordIcon.svg\";\nimport { ReactComponent as InstagramIcon } from \"icons/InstagramIcon.svg\";\nimport { ReactComponent as TwitterIcon } from \"icons/TwitterIcon.svg\";\nimport { makeStyles } from \"@material-ui/core\";\n\nconst useStyles = makeStyles((theme) => {\n\treturn {\n\t\ticon: {\n\t\t\tcursor: \"pointer\",\n\t\t\tmargin: \"2px 4px\",\n\t\t},\n\t};\n});\n\nexport default function SuccessFailModal({\n\tsuccess,\n\thasNextStage,\n\tcurrentGame,\n}) {\n\tconst styles = useStyles();\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t{success === true && (\n\t\t\t\t\t\n\t\t\t\t\t\tPicks Saved!\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{hasNextStage && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tOnce this stage of the event is complete, be sure to come back\n\t\t\t\t\t\t\t\t\tto make your picks for the next stage.\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\twindow.open(\"https://discord.gg/r8ujzkRYeF\", \"_blank\");\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclassName={styles.icon}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\twindow.open(currentGame.instagramUrl, \"_blank\");\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclassName={styles.icon}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\twindow.open(currentGame.twitterUrl, \"_blank\");\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclassName={styles.icon}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tFor updates when pick'em submissions open join us on socials.\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{success === false && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tError Saving Picks\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\n\t);\n}\n","import React from \"react\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalPanel,\n\tModalHeader,\n\tModalBody,\n\tModalFooter,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport LoginModal from \"../LoginModal/LoginModal\";\nimport RegisterModal from \"../RegisterModal/RegisterModal\";\nimport FatButton from \"common/components/FatButton/FatButton\";\n\nexport default function AccountRequired() {\n\tconst login = () => {\n\t\tModalHelper.openModal();\n\t};\n\n\tconst register = () => {\n\t\tModalHelper.openModal();\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\tAccount Required\n\t\t\t\t\n\t\t\t\t\t

\n\t\t\t\t\t\tTo save picks and get rewarded based on global placements{\" \"}\n\t\t\t\t\t\t or{\" \"}\n\t\t\t\t\t\t\n\t\t\t\t\t

\n\t\t\t\t\t
\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tlogin();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tprimary\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tregister();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tprimary\n\t\t\t\t\t\t/>\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n","import moment from \"moment\";\nimport * as React from \"react\";\n\nexport default class PicksHelper {\n\tconstructor(eventData) {\n\t\tthis.event = eventData;\n\t}\n\n\t/**\n\t * Gets the string value of the time until picks lock.\n\t *\n\t * @returns {string}\n\t */\n\tgetTimeTillLock() {\n\t\tif (!this.event) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\t// if (this.event.unlocked) {\n\t\t// }\n\n\t\tconst now = new Date();\n\t\tif (!this.isLocked()) {\n\t\t\tconst lockTime = this.getLockTime();\n\t\t\tconst diff = lockTime - now;\n\t\t\tconst seconds = Math.floor((diff / 1000) % 60);\n\t\t\tconst minutes = Math.floor((diff / (1000 * 60)) % 60);\n\t\t\tconst hours = Math.floor((diff / (1000 * 60 * 60)) % 24);\n\t\t\tconst days = Math.floor(diff / (1000 * 60 * 60 * 24));\n\n\t\t\tlet result = \"\";\n\t\t\tif (days > 0) {\n\t\t\t\tresult += `${days}D `;\n\t\t\t}\n\t\t\tif (hours > 0) {\n\t\t\t\tresult += `${hours}H `;\n\t\t\t}\n\t\t\tif (minutes > 0) {\n\t\t\t\tresult += `${minutes}M `;\n\t\t\t}\n\t\t\tif (seconds > 0) {\n\t\t\t\tresult += `${seconds}S `;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\treturn \"\";\n\t}\n\n\tgetRelockTime() {\n\t\treturn this.convertUtcToLocalTime(new Date(this.event?.relockTime));\n\t}\n\n\tgetStartTime() {\n\t\treturn this.convertUtcToLocalTime(\n\t\t\tnew Date(this.event?.metadata?.startDate)\n\t\t);\n\t}\n\n\tgetEndTime() {\n\t\treturn this.convertUtcToLocalTime(new Date(this.event?.metadata?.endDate));\n\t}\n\n\tgetLockTime() {\n\t\treturn this.event.unlocked ? this.getRelockTime() : this.getStartTime();\n\t}\n\n\t/**\n\t *\n\t * @returns {boolean} True if event has started\n\t */\n\tisStarted() {\n\t\tif (!this.event) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn this.getStartTime() < new Date();\n\t}\n\n\t/**\n\t *\n\t * @returns {boolean} True if picks are locked\n\t */\n\tisLocked() {\n\t\tif (!this.event) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn this.getLockTime() < new Date();\n\t}\n\n\t/**\n\t *\n\t * @returns {boolean} True if event has finished\n\t */\n\tisFinished() {\n\t\tif (!this.event) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn this.getEndTime() < new Date();\n\t}\n\n\t/**\n\t * @returns {JSX.Element}\n\t */\n\tgetEventDateRange() {\n\t\tlet dateInfo = <>;\n\n\t\tif (!this.event) {\n\t\t\treturn dateInfo;\n\t\t}\n\n\t\tconst startDate = new Date(this.event.metadata.startDate);\n\t\tconst endDate = moment(new Date(this.event.metadata.endDate)).toDate();\n\n\t\tif (startDate.getMonth() !== endDate.getMonth()) {\n\t\t\tconst startMonth = new Intl.DateTimeFormat(\"en\", {\n\t\t\t\tmonth: \"long\",\n\t\t\t}).format(startDate);\n\t\t\tconst startDay = new Intl.DateTimeFormat(\"en\", { day: \"2-digit\" }).format(\n\t\t\t\tstartDate\n\t\t\t);\n\t\t\tconst endMonth = new Intl.DateTimeFormat(\"en\", { month: \"long\" }).format(\n\t\t\t\tendDate\n\t\t\t);\n\t\t\tconst endDay = new Intl.DateTimeFormat(\"en\", { day: \"2-digit\" }).format(\n\t\t\t\tendDate\n\t\t\t);\n\n\t\t\tdateInfo = (\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t);\n\t\t} else {\n\t\t\tconst startMonth = new Intl.DateTimeFormat(\"en\", {\n\t\t\t\tmonth: \"long\",\n\t\t\t}).format(startDate);\n\t\t\tconst startDay = new Intl.DateTimeFormat(\"en\", { day: \"2-digit\" }).format(\n\t\t\t\tstartDate\n\t\t\t);\n\t\t\tconst endDay = new Intl.DateTimeFormat(\"en\", { day: \"2-digit\" }).format(\n\t\t\t\tendDate\n\t\t\t);\n\n\t\t\tdateInfo = (\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t);\n\t\t}\n\n\t\treturn dateInfo;\n\t}\n\n\t/**\n\t * Converts the backend UTC date to local time.\n\t *\n\t * @param {Date} date\n\t */\n\tconvertUtcToLocalTime(date) {\n\t\tconst utcDate = new Date(\n\t\t\tDate.UTC(\n\t\t\t\tdate.getFullYear(),\n\t\t\t\tdate.getMonth(),\n\t\t\t\tdate.getDate(),\n\t\t\t\tdate.getHours(),\n\t\t\t\tdate.getMinutes(),\n\t\t\t\tdate.getSeconds()\n\t\t\t)\n\t\t);\n\t\treturn utcDate;\n\t}\n}\n","export const PickTypes = {\n\tAdvancing: 1,\n\tThreeWins: 2,\n\tNoWins: 3,\n\tEliminated: 4,\n\tTopTeam: 5,\n\tSecondTeam: 6,\n};\n","import axiosWrapper from \"common/axiosWrapper\";\nimport EventHelper from \"common/helpers/eventHelper/eventHelper\";\n// eslint-disable-next-line no-unused-vars\nimport EventPicksDto from \"common/types/EventPicksDto\";\nimport UserManager from \"common/userManager\";\n\nconst baseUrl = \"/api/picks\";\n\n/** The Pick service which calls the API endpoints for the Pick Controller */\nexport default class PickService {\n\t/**\n\t * Get the current user's picks for the provided event id.\n\t *\n\t * @param {number} eventId The event to view picks for.\n\t * @param {number} userId The user to view picks for.\n\t * @returns {Promise}\n\t */\n\tstatic async getUserPicks(eventId, userId = null) {\n\t\tconst userIdQuery = userId ? `?userId=${userId}` : \"\";\n\t\treturn await axiosWrapper.get(\n\t\t\t`${baseUrl}/get/user/${eventId}${userIdQuery}`\n\t\t);\n\t}\n\n\t/**\n\t * Saves the current users picks.\n\t *\n\t * @param {number} eventId\n\t * @param {EventPicksDto} picks\n\t */\n\tstatic async saveUserPicks(eventId, picks) {\n\t\tfor (const groupPick of picks.groupStagePicks) {\n\t\t\tgroupPick.eventId = EventHelper.getCurrentEventId();\n\t\t\tgroupPick.userId = UserManager.getUserId();\n\t\t}\n\t\tfor (const groupPick of picks.matchPicks) {\n\t\t\tgroupPick.eventId = EventHelper.getCurrentEventId();\n\t\t\tgroupPick.userId = UserManager.getUserId();\n\t\t}\n\n\t\treturn await axiosWrapper.post(`${baseUrl}/save/user/${eventId}`, picks);\n\t}\n}\n","import Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\n// eslint-disable-next-line no-unused-vars\nimport EventPicksDto from \"common/types/EventPicksDto\";\nimport BaseEvent from \"./BaseEvent\";\nimport { PickTypes } from \"common/constants/PickTypes\";\nimport PickService from \"services/PickService\";\n// eslint-disable-next-line no-unused-vars\nimport { GroupStagePick } from \"common/types/GroupStagePick\";\nimport _ from \"lodash\";\nimport {\n\tEventFormatData,\n\tstageUsesBracket,\n} from \"common/helpers/eventFormatHelper\";\nimport PicksHelper from \"common/picksHelper\";\nimport UserManager from \"common/userManager\";\n\nexport default class GenericEvent extends BaseEvent {\n\tasync fullLoad(userId) {\n\t\tSetLoading(true);\n\t\tawait Promise.all([\n\t\t\tthis.userHasBracket(),\n\t\t\tthis.loadUserScore(userId),\n\t\t\tthis.loadLeaderboard(),\n\t\t\tthis.loadOfficialPicks(),\n\t\t\tthis.loadBracketUser(userId),\n\t\t]);\n\n\t\tawait this.loadEventPicks(userId);\n\t\tthis.checkLoadFirstPlace(userId, this.fullLoad.bind(this));\n\t}\n\n\tasync userHasBracket() {\n\t\tconst eventId = this.eventData.id;\n\t\tawait PickService.getUserPicks(eventId).then(\n\t\t\t/** @param {EventPicksDto} picks */\n\t\t\t(picks) => {\n\t\t\t\tconst groupStagePicks = picks.groupStagePicks ?? [];\n\t\t\t\tconst bracketPicks = picks.matchPicks ?? [];\n\n\t\t\t\t/** @type {EventFormatData} */\n\t\t\t\tconst format = Store.get(StoreKeys.EVENT.FORMAT);\n\t\t\t\tconst eventStage = this.eventData.eventStages[this.eventData.stage];\n\t\t\t\tconst currentStage = format.stages[this.eventData.stage];\n\n\t\t\t\tif (stageUsesBracket(currentStage)) {\n\t\t\t\t\tthis.hasBracket = bracketPicks.some(\n\t\t\t\t\t\t(p) => p.eventStageId === eventStage.id\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis.hasBracket = groupStagePicks.some(\n\t\t\t\t\t\t(p) => p.eventStageId === eventStage.id\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst picksHelper = new PicksHelper(this.eventData);\n\t\t\t\tconst isLocked = picksHelper.isLocked();\n\n\t\t\t\tStore.set(StoreKeys.EVENT.HAS_BRACKET, this.hasBracket);\n\n\t\t\t\tif (!isLocked && !this.hasBracket) {\n\t\t\t\t\tStore.set(StoreKeys.EVENT.IS_EDITING, true);\n\t\t\t\t\tStore.set(StoreKeys.EVENT.STEP, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tasync loadEventPicks(userId) {\n\t\tconst eventId = this.eventData.id;\n\t\tawait PickService.getUserPicks(eventId, userId).then(\n\t\t\t/** @param {EventPicksDto} picks */\n\t\t\t(picks) => {\n\t\t\t\tconst groupStagePicks = picks.groupStagePicks ?? [];\n\t\t\t\tStore.set(StoreKeys.EVENT.USER.GROUP_PICKS, groupStagePicks);\n\n\t\t\t\tlet bracketPicks = picks.matchPicks ?? [];\n\t\t\t\tStore.set(StoreKeys.EVENT.USER.BRACKET_PICKS, bracketPicks);\n\n\t\t\t\tStore.set(StoreKeys.EVENT.STAGE_INDEX, this.eventData.stage);\n\t\t\t\tStore.set(StoreKeys.EVENT.STEP, 0);\n\t\t\t\tStore.set(StoreKeys.EVENT.SUBSTAGE_INDEX, 0);\n\t\t\t}\n\t\t);\n\t}\n\n\tasync submitPicks() {\n\t\tconst groupStagePicks = Store.get(StoreKeys.EVENT.USER.GROUP_PICKS);\n\t\tconst matchPicks = Store.get(StoreKeys.EVENT.USER.BRACKET_PICKS);\n\n\t\t// Don't transfer data we don't need to.\n\t\tfor (const pick of matchPicks) {\n\t\t\tpick.bottomTeam = null;\n\t\t\tpick.topTeam = null;\n\t\t}\n\n\t\tconst eventId = this.eventData.id;\n\t\tawait PickService.saveUserPicks(eventId, {\n\t\t\tgroupStagePicks,\n\t\t\tmatchPicks,\n\t\t});\n\t}\n}\n","import axiosWrapper from \"common/axiosWrapper\";\nimport PicksHelper from \"common/picksHelper\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport UserService from \"services/UserService\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\n// eslint-disable-next-line no-unused-vars\nimport { MatchPick } from \"common/types/MatchPick\";\n\nexport default class BaseEvent {\n\t/** @type {boolean} */\n\thasBracket = false;\n\t/** @type {string} */\n\tbaseUrl = \"/api/picks\";\n\t/** @type {any} */\n\teventData;\n\t/** @type {any} */\n\tleaderboard;\n\t/** @type {PicksHelper} */\n\tpicksHelper;\n\t/** @type {Array} */\n\tofficialBracketPicks;\n\t/** @type {Array} */\n\tofficialGroupPicks;\n\n\tconstructor(eventData) {\n\t\tthis.eventData = eventData;\n\t\tthis.picksHelper = new PicksHelper(eventData);\n\t}\n\n\tasync loadLeaderboard(startRow) {\n\t\tconst eventId = this.eventData.id;\n\t\tlet route = `/get/leaderboard/${eventId}`;\n\t\tif (startRow) {\n\t\t\troute += \"/\" + startRow;\n\t\t}\n\n\t\tawait axiosWrapper.get(`${this.baseUrl}${route}`).then((leaderboard) => {\n\t\t\tthis.leaderboard = leaderboard;\n\t\t\tStore.set(StoreKeys.EVENT.LEADERBOARD, leaderboard);\n\t\t});\n\t}\n\n\tasync loadOfficialPicks() {\n\t\tconst eventId = this.eventData.id;\n\t\tlet route = `/get/official/${eventId}`;\n\n\t\tawait axiosWrapper.get(`${this.baseUrl}${route}`).then((official) => {\n\t\t\tthis.officialGroupPicks = official.groupStagePicks;\n\t\t\tStore.set(StoreKeys.EVENT.OFFICIAL.GROUP_PICKS, official.groupStagePicks);\n\n\t\t\tthis.officialBracketPicks = official.matchPicks;\n\t\t\tStore.set(\n\t\t\t\tStoreKeys.EVENT.OFFICIAL.BRACKET_PICKS,\n\t\t\t\tthis.buildPickedBracketMatchesFromTeams(official.matchPicks)\n\t\t\t);\n\t\t});\n\t}\n\n\tasync loadBracketUser(userId) {\n\t\tif (userId) {\n\t\t\tawait UserService.getUserProfile(userId).then((user) => {\n\t\t\t\tStore.set(StoreKeys.EVENT.BRACKET_USER, user);\n\t\t\t});\n\t\t} else {\n\t\t\tStore.set(StoreKeys.EVENT.BRACKET_USER, undefined);\n\t\t}\n\t}\n\n\tasync loadUserScore(userId) {\n\t\tconst eventId = this.eventData.id;\n\t\tconst userIdQuery = userId ? `?userId=${userId}` : \"\";\n\t\tawait axiosWrapper\n\t\t\t.get(`${this.baseUrl}/get/score/${eventId}${userIdQuery}`)\n\t\t\t.then((bracketScore) => {\n\t\t\t\tStore.set(StoreKeys.EVENT.SCORE, bracketScore);\n\t\t\t});\n\t}\n\n\tasync checkLoadFirstPlace(targetUserId, fullLoad) {\n\t\tif (targetUserId || this.hasBracket || !this.picksHelper.isLocked()) {\n\t\t\tSetLoading(false);\n\t\t\treturn;\n\t\t}\n\n\t\t// If user doesn't have a bracket we load first user on leaderboard.\n\t\t// Note: We mark the user as having a bracket while an event is unlocked event if they don't have one saved.\n\t\tconst first = this.leaderboard[0];\n\t\tconst userId = first?.userId;\n\n\t\tif (userId && targetUserId !== userId) {\n\t\t\tawait fullLoad(userId);\n\t\t}\n\t}\n\n\tbuildPickedBracketMatchesFromTeams(picks) {\n\t\tconst teams = this.eventData.teams;\n\t\tfor (const pick of picks) {\n\t\t\tpick.index = pick.matchIndex;\n\t\t\tpick.topTeam = teams.filter((team) => team.id === pick.topTeamId)[0];\n\t\t\tpick.bottomTeam = teams.filter(\n\t\t\t\t(team) => team.id === pick.bottomTeamId\n\t\t\t)[0];\n\t\t\tpick.winner = teams.filter((team) => team.id === pick.winnerTeamId)[0];\n\t\t\tpick.loser = teams.filter((team) => team.id === pick.loserTeamId)[0];\n\t\t}\n\n\t\treturn picks;\n\t}\n}\n","import React from \"react\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalHeader,\n\tModalBody,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport {\n\tGetCurrentGamePrefix\n} from \"common/constants/Games\";\nimport { changeUrl } from \"../../../history\";\nimport ModalHelper from \"../../../helpers/modalHelper\";\n\nexport default function OneTimeSurveyNotify(props) {\n\tconst targetUrl = `${GetCurrentGamePrefix()}/survey`;\n\tconst onClick = (e) => {\n\t\te.preventDefault();\n\n\t\tModalHelper.closeModal();\n\t\tchangeUrl(targetUrl);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{props.header ?? \"Survey Based Picks\"}\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\tA Survey will be used in place of the playoff picks.
\n\t\t\t\t\t\tTo make your playoff picks Click Here\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tNote: You will be able to check your score using the SCORE button.
\n\t\t\t\t\t\tThis can be found next to your nameplate on the swiss stage screen.\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n","import * as React from \"react\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport SuccessFailModal from \"common/components/Modals/SuccessFailModal/SuccessFailModal\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport UserManager from \"common/userManager\";\nimport EventService from \"services/EventService\";\nimport ModalHelper from \"../modalHelper\";\nimport AccountRequired from \"common/components/Modals/AccountRequired/AccountRequired\";\nimport GenericEvent from \"./events/GenericEvent\";\nimport { PanZoomHelper } from \"../panZoomHelper\";\nimport OneTimeSurveyNotify from \"../../components/Modals/SurveyForPicksModal/OneTimeSurveyNotify\";\n\nexport default class EventHelper {\n\t/** @type {object} */\n\tstatic liveEvent;\n\n\t/** @type {number} */\n\tstatic liveEventId;\n\n\t/** @type {number} */\n\tstatic currentEventId;\n\n\t/** @type {number} */\n\tstatic currentUserId;\n\n\t/** @type {Array} */\n\tstatic pastEventIds;\n\n\t/** @type {Map} */\n\tstatic events = new Map();\n\n\t/** @type {Record>} */\n\tstatic cache = {};\n\n\tstatic getCurrentEventId() {\n\t\treturn EventHelper.currentEventId;\n\t}\n\n\tstatic async getLiveEventId() {\n\t\tif (EventHelper.liveEventId) {\n\t\t\treturn EventHelper.liveEventId;\n\t\t}\n\n\t\tlet eventId = EventHelper.liveEventId;\n\n\t\tif (!eventId) {\n\t\t\teventId = await EventService.getNextEventId();\n\t\t}\n\t\tif (!eventId) {\n\t\t\teventId = await EventService.getPreviousEventId();\n\t\t}\n\t\tif (!eventId) {\n\t\t\treturn null;\n\t\t}\n\n\t\tEventHelper.liveEventId = eventId;\n\t\treturn eventId;\n\t}\n\n\t/**\n\t * Gets the live event or most recent event.\n\t * @returns The event\n\t */\n\tstatic async getLiveEvent() {\n\t\tif (EventHelper.liveEvent) {\n\t\t\treturn EventHelper.liveEvent;\n\t\t}\n\n\t\tSetLoading(true, \"Loading Live Event\");\n\t\tconst eventId = await EventHelper.getLiveEventId();\n\t\tawait this.fullLoadEvent(eventId, undefined);\n\t\tSetLoading(false);\n\t}\n\n\t/**\n\t * Gets the list of past event ids for the side pane.\n\t * @returns {Promise>} The past event ids.\n\t */\n\tstatic async getListOfPastEventIds() {\n\t\tif (EventHelper.pastEventIds) {\n\t\t\treturn EventHelper.pastEventIds;\n\t\t}\n\n\t\tconst pastEventIds = await EventService.getPastEventIds();\n\t\tEventHelper.pastEventIds = pastEventIds;\n\t\treturn pastEventIds;\n\t}\n\n\t/**\n\t * Gets past event by index starting from today.\n\t *\n\t * @param {number} index\n\t * @returns The event based on the past event index.\n\t */\n\tstatic async getPastEvent(index) {\n\t\tconst eventId = EventHelper.pastEventIds[index];\n\t\tif (EventHelper.events.has(eventId)) {\n\t\t\treturn EventHelper.events.get(eventId);\n\t\t}\n\n\t\tconst event = await EventService.getEvent(eventId);\n\t\tEventHelper.events.set(eventId, event);\n\t\treturn event;\n\t}\n\n\t/**\n\t * Gets the event id based on past index.\n\t *\n\t * @param {number} index\n\t * @returns {number}\n\t */\n\tstatic getPastEventId(index) {\n\t\treturn EventHelper.pastEventIds[index];\n\t}\n\n\t/**\n\t * Gets an event by the specified event id.\n\t *\n\t * @param {number} eventId\n\t */\n\tstatic async getSpecificEvent(eventId) {\n\t\tif (EventHelper.events.has(eventId)) {\n\t\t\tconst event = EventHelper.events.get(eventId);\n\t\t\tStore.set(StoreKeys.EVENT.EVENTDATA, event);\n\t\t\treturn event;\n\t\t}\n\n\t\tconst event = await EventService.getEvent(eventId);\n\t\tif (!event) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Force stage to swiss stage.\n\t\t// Playoffs will be enabled and user is notified of picks being in the survey area.\n\t\tif (eventId === 104) {\n\t\t\tevent.stage = 0;\n\t\t\tif (!sessionStorage.getItem(\"Event104\")) {\n\t\t\t\tModalHelper.openModal();\n\t\t\t\tsessionStorage.setItem(\"Event104\", true)\n\t\t\t}\n\t\t}\n\n\n\t\tEventHelper.events.set(eventId, event);\n\t\tStore.set(StoreKeys.EVENT.EVENTDATA, event);\n\t\treturn event;\n\t}\n\n\t/**\n\t * Gets the current event for each active game.\n\t * @returns One EventDto for each active game.\n\t */\n\tstatic async getCurrentEvents() {\n\t\treturn EventService.getCurrentEvents();\n\t}\n\n\t/**\n\t * Fully loads an event into store.\n\t *\n\t * @param {any} eventId The event id.\n\t * @param {number} userId The user id.\n\t */\n\tstatic async fullLoadEvent(eventId, userId) {\n\t\tStore.cacheChanges(\"EventHelper.fullLoadEvent\");\n\t\tif (\n\t\t\tuserId &&\n\t\t\tUserManager.isLoggedIn() &&\n\t\t\tuserId.toString() === UserManager.getUserId().toString()\n\t\t) {\n\t\t\tuserId = undefined;\n\t\t}\n\n\t\tStore.set(StoreKeys.EVENT.SHOW_OFFICIAL, false);\n\n\t\t// If the current user is not viewing the current user's picks. Disable edit mode.\n\t\tif (userId?.toString() !== UserManager.getUserId()?.toString()) {\n\t\t\tStore.set(StoreKeys.EVENT.IS_EDITING, false);\n\t\t}\n\n\t\tif (\n\t\t\tEventHelper.currentEventId === eventId &&\n\t\t\tEventHelper.currentUserId === userId\n\t\t) {\n\t\t\tStore.applyChanges(\"EventHelper.fullLoadEvent\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (EventHelper.currentEventId !== eventId) {\n\t\t\tPanZoomHelper.resetView(0, 0, 0.8);\n\t\t}\n\n\t\tEventHelper.currentEventId = eventId;\n\t\tEventHelper.currentUserId = userId;\n\n\t\tconst event = await this.getSpecificEvent(eventId);\n\t\tif (!event) {\n\t\t\tStore.applyChanges(\"EventHelper.fullLoadEvent\");\n\t\t\treturn;\n\t\t}\n\n\t\tStore.set(StoreKeys.EVENT.EVENTDATA, event);\n\t\tStore.set(\n\t\t\tStoreKeys.EVENT.FORMAT,\n\t\t\tevent.format?.json ? JSON.parse(event.format?.json) : null\n\t\t);\n\n\t\tconst eventData = new GenericEvent(event);\n\t\tawait eventData.fullLoad(userId);\n\n\t\tif (EventHelper.liveEventId === eventId) {\n\t\t\tEventHelper.liveEvent = event;\n\t\t}\n\t\tStore.applyChanges(\"EventHelper.fullLoadEvent\");\n\t}\n\n\tstatic mapStoreKeysToObject(keyObject, targetObject) {\n\t\tfor (let key in keyObject) {\n\t\t\tconst value = keyObject[key];\n\t\t\tif (typeof value === \"object\") {\n\t\t\t\tEventHelper.mapStoreKeysToObject(value, targetObject);\n\t\t\t} else {\n\t\t\t\t// is string\n\t\t\t\ttargetObject[value] = Store.get(value);\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic async submitPicks(currentGame) {\n\t\tif (!UserManager.isLoggedIn()) {\n\t\t\tModalHelper.openModal();\n\t\t\treturn;\n\t\t}\n\n\t\tSetLoading(true, \"Saving Picks\");\n\t\tif (!EventHelper.liveEvent) {\n\t\t\tSetLoading(false);\n\t\t\treturn;\n\t\t}\n\n\t\tconst event = new GenericEvent(EventHelper.liveEvent);\n\t\tconst currentStageIndex = Store.get(StoreKeys.EVENT.STAGE_INDEX);\n\t\tconst format = Store.get(StoreKeys.EVENT.FORMAT);\n\t\tconst hasNextStage = currentStageIndex < format.stages.length - 1;\n\t\tawait event\n\t\t\t.submitPicks()\n\t\t\t.then(() => {\n\t\t\t\tSetLoading(false);\n\t\t\t\tModalHelper.openModal(\n\t\t\t\t\t,\n\t\t\t\t\tnull\n\t\t\t\t);\n\t\t\t})\n\t\t\t.catch((s) => {\n\t\t\t\tSetLoading(false);\n\t\t\t\tModalHelper.openModal(, null);\n\t\t\t});\n\t}\n}\n","import { Box, Grid } from \"@material-ui/core\";\nimport * as React from \"react\";\nimport { connect } from \"common/connect\";\nimport StoreKeys from \"common/storeKeys\";\nimport \"./GamePickemScreen.scss\";\nimport Drawer from \"@material-ui/core/Drawer\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport withWidth from \"@material-ui/core/withWidth\";\n\nconst drawerWidth = 358;\n\nconst useStyles = makeStyles((theme) => ({\n\troot: {\n\t\tdisplay: \"flex\",\n\t},\n\tdrawer: {\n\t\t[theme.breakpoints.up(\"md\")]: {\n\t\t\twidth: drawerWidth,\n\t\t\tflexShrink: 0,\n\t\t},\n\t},\n\ttoolbar: theme.mixins.toolbar,\n\tdrawerPaper: {\n\t\twidth: drawerWidth,\n\t\ttop: \"initial\",\n\t\tborderRight: \"none\",\n\t\tzIndex: 100\n\t},\n\tdrawerHeader: {\n\t\t// necessary for content to be below app bar\n\t\t...theme.mixins.toolbar,\n\t\tdisplay: \"flex\",\n\t\talignItems: \"center\",\n\t\tpadding: theme.spacing(0, 1),\n\t\tjustifyContent: \"flex-end\",\n\t},\n\tcontent: {\n\t\tmarginLeft: drawerWidth,\n\t\toverflow: \"hidden\",\n\t},\n\tcontentBox: {\n\t\theight: \"100%\",\n\t\toverflow: \"auto\",\n\t},\n}));\n\nconst propKeys = {\n\topen: StoreKeys.LeftPane.Open,\n};\n\nfunction GamePickemScreenC(props) {\n\tconst classes = useStyles();\n\tconst isSm = props.width === \"xs\" || props.width === \"sm\";\n\n\treturn (\n\t\t\n\t\t\t{isSm && (\n\t\t\t\t\n\t\t\t\t\t
{props.children[0]}
\n\t\t\t\t\n\t\t\t)}\n\t\t\t{!isSm && (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
{props.children[0]}
\n\t\t\t\t\n\t\t\t)}\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{props.children[1]}\n\t\t\t\t\n\t\t\t
\n\t\t\n\t);\n}\n\nconst GamePickemScreenWidthC = withWidth()(GamePickemScreenC);\n\nexport default function GamePickemScreen(props) {\n\treturn connect(, propKeys, props);\n}\n","import { connect } from \"common/connect\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport StoreKeys from \"common/storeKeys\";\nimport * as React from \"react\";\nimport { AiFillInfoCircle } from \"react-icons/ai\";\nimport ScorePillModal from \"../Modals/ScorePillModal/ScorePillModal\";\nimport \"./ScorePill.scss\";\n\nconst propKeys = {\n\tformatData: StoreKeys.EVENT.FORMAT,\n\tbracketScore: StoreKeys.EVENT.SCORE,\n};\n\nfunction ScorePillC({ formatData, bracketScore }) {\n\tconst openScoreBreakdown = () => {\n\t\tModalHelper.openModal(, null, {\n\t\t\tgroups: formatData?.scoringBreakdown?.groups,\n\t\t\tbracketScore,\n\t\t});\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tScore\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{bracketScore?.totalScore ?? 0} pts
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tTop{\" \"}\n\t\t\t\t\t\t\t{bracketScore\n\t\t\t\t\t\t\t\t? Math.max(Math.ceil(bracketScore?.percentile ?? 100), 1)\n\t\t\t\t\t\t\t\t: 100}\n\t\t\t\t\t\t\t%\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t);\n}\n\nexport default function ScorePill(props) {\n\treturn connect(, propKeys, props);\n}\n","import { makeStyles, useMediaQuery, useTheme } from \"@material-ui/core\";\nimport { connect } from \"common/connect\";\nimport StoreKeys from \"common/storeKeys\";\nimport UserManager from \"common/userManager\";\nimport * as React from \"react\";\nimport { Colors } from \"styles/Colors\";\nimport ScorePill from \"../ScorePill/ScorePill\";\nimport UserCard from \"../UserCard\";\n\nconst classStyles = makeStyles((theme) => {\n\treturn {\n\t\teventHeader: {\n\t\t\tdisplay: \"flex\",\n\t\t\tjustifyContent: \"center\",\n\t\t\tflexDirection: \"column\",\n\t\t\talignItems: \"center\",\n\t\t},\n\t\teventName: {\n\t\t\ttextTransform: \"uppercase\",\n\t\t\tdisplay: \"block\",\n\t\t\tfont: \"normal normal bold 20px/23px Roboto\",\n\t\t\tletterSpacing: 4,\n\t\t\tmarginTop: 8,\n\t\t\tmarginBottom: 8,\n\t\t\ttextAlign: \"center\",\n\t\t},\n\t\teventNameSmall: {\n\t\t\ttextTransform: \"uppercase\",\n\t\t\tdisplay: \"block\",\n\t\t\tfont: \"normal normal bold 15px/18px Roboto\",\n\t\t\tletterSpacing: 4,\n\t\t\tmarginTop: 8,\n\t\t\tmarginBottom: 8,\n\t\t\ttextAlign: \"center\",\n\t\t},\n\t\tflexRow: {\n\t\t\tdisplay: \"flex\",\n\t\t\talignItems: \"center\",\n\t\t},\n\t\tuserCardContainer: {\n\t\t\tdisplay: \"inline-block\",\n\t\t},\n\t\tscorePillContainer: {\n\t\t\tdisplay: \"inline-block\",\n\t\t\twidth: 145,\n\t\t\tmarginLeft: 8,\n\t\t},\n\t\tdivider: {\n\t\t\twidth: 350,\n\t\t\tcolor: Colors.panelLighterColor,\n\t\t\tmarginTop: 8,\n\t\t\tmarginBottom: 10,\n\t\t\topacity: 0.4,\n\t\t},\n\t};\n});\n\nconst propKeys = {\n\teventData: StoreKeys.EVENT.EVENTDATA,\n\tbracketUser: StoreKeys.EVENT.BRACKET_USER,\n\tscore: StoreKeys.EVENT.SCORE,\n};\n\nfunction EventHeaderC(props) {\n\tconst { eventData, bracketUser, score, width } = props;\n\tconst styles = classStyles();\n\n\tconst userId = bracketUser?.userId ?? UserManager.getUserId();\n\tconst theme = useTheme();\n\tconst isSmall = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n\nexport default function EventHeader(props) {\n\treturn connect(, propKeys, props);\n}\n","var _defs, _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgShowResults = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 140,\n height: 24,\n viewBox: \"0 0 140 24\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \"\\n .cls-1 {\\n fill: #4b4b4b;\\n }\\n\\n .cls-2 {\\n fill: #ececec;\\n font-size: 10px;\\n font-family: ArialMT, Arial;\\n letter-spacing: 0.2em;\\n }\\n \"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_706\",\n \"data-name\": \"Group 706\",\n transform: \"translate(-905 -705)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_1557\",\n \"data-name\": \"Rectangle 1557\",\n className: \"cls-1\",\n width: 140,\n height: 24,\n rx: 12,\n transform: \"translate(905 705)\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Component_51_55\",\n \"data-name\": \"Component 51 \\\\u2013 55\",\n transform: \"translate(926.5 711.5)\"\n }, /*#__PURE__*/React.createElement(\"text\", {\n id: \"SHOW_RESULTS\",\n \"data-name\": \"SHOW RESULTS\",\n className: \"cls-2\",\n transform: \"translate(-2 9)\"\n }, /*#__PURE__*/React.createElement(\"tspan\", {\n x: 0,\n y: 0\n }, \"SHOW RESULTS\"))))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgShowResults, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/ShowResults.6ce69733.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgHideResults = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 140,\n height: 24,\n viewBox: \"0 0 140 24\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \"\\n .cls-1 {\\n fill: #ececec;\\n }\\n\\n .cls-2 {\\n fill: #373737;\\n font-size: 10px;\\n font-family: ArialMT, Arial;\\n letter-spacing: 0.2em;\\n }\\n \"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_708\",\n \"data-name\": \"Group 708\",\n transform: \"translate(-916 -659)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_2149\",\n \"data-name\": \"Path 2149\",\n className: \"cls-1\",\n d: \"M12,0H128a12,12,0,0,1,0,24H12A12,12,0,0,1,12,0Z\",\n transform: \"translate(916 659)\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Component_51_55\",\n \"data-name\": \"Component 51 \\\\u2013 55\",\n transform: \"translate(935 665.5)\"\n }, /*#__PURE__*/React.createElement(\"text\", {\n id: \"HIDE_RESULTS\",\n \"data-name\": \"HIDE RESULTS\",\n className: \"cls-2\",\n transform: \"translate(4 9)\"\n }, /*#__PURE__*/React.createElement(\"tspan\", {\n x: 0,\n y: 0\n }, \"HIDE RESULTS\"))))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgHideResults, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/HideResults.a7bcf85d.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgSubmittedAndCheck = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 104,\n height: 38.738,\n viewBox: \"0 0 104 38.738\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Component_80_1\",\n \"data-name\": \"Component 80 \\\\u2013 1\",\n transform: \"translate(0 1.387)\"\n }, /*#__PURE__*/React.createElement(\"text\", {\n id: \"SUBMITTED\",\n transform: \"translate(0 34.352)\",\n fill: \"#b9b8b8\",\n fontSize: 14,\n fontFamily: \"ArialMT, Arial\",\n letterSpacing: \"0.2em\"\n }, /*#__PURE__*/React.createElement(\"tspan\", {\n x: 0,\n y: 0\n }, \"SUBMITTED\")), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Component_53_58\",\n \"data-name\": \"Component 53 \\\\u2013 58\",\n transform: \"translate(44)\"\n }, /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_92\",\n \"data-name\": \"Line 92\",\n x1: 10,\n y2: 15,\n transform: \"translate(5)\",\n fill: \"none\",\n stroke: \"#b9b8b8\",\n strokeLinecap: \"round\",\n strokeWidth: 2\n }), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_93\",\n \"data-name\": \"Line 93\",\n x2: 5,\n y2: 7,\n transform: \"translate(0 8)\",\n fill: \"none\",\n stroke: \"#b9b8b8\",\n strokeLinecap: \"round\",\n strokeWidth: 2\n })))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgSubmittedAndCheck, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/SubmittedAndCheck.c12a6f89.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgEditYourPicks = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Component_81_1\",\n \"data-name\": \"Component 81 \\\\u2013 1\",\n width: 140,\n height: 24,\n viewBox: \"0 0 140 24\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_1266\",\n \"data-name\": \"Rectangle 1266\",\n width: 140,\n height: 24,\n rx: 12,\n fill: \"#4b4b4b\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Component_51_44\",\n \"data-name\": \"Component 51 \\\\u2013 44\",\n transform: \"translate(12 6)\"\n }, /*#__PURE__*/React.createElement(\"text\", {\n id: \"EDIT_YOUR_PICKS\",\n \"data-name\": \"EDIT YOUR PICKS\",\n transform: \"translate(0 9)\",\n fill: \"#ececec\",\n fontSize: 10,\n fontFamily: \"ArialMT, Arial\",\n letterSpacing: \"0.2em\"\n }, /*#__PURE__*/React.createElement(\"tspan\", {\n x: 0,\n y: 0\n }, \"EDIT YOUR PICKS\")))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgEditYourPicks, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/EditYourPicks.7634070e.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgBackToMyPicks = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Component_81_1\",\n \"data-name\": \"Component 81 \\\\u2013 1\",\n width: 140,\n height: 24,\n viewBox: \"0 0 140 24\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle_1266\",\n \"data-name\": \"Rectangle 1266\",\n width: 140,\n height: 24,\n rx: 12,\n fill: \"#4b4b4b\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Component_51_44\",\n \"data-name\": \"Component 51 \\\\u2013 44\",\n transform: \"translate(8 6)\"\n }, /*#__PURE__*/React.createElement(\"text\", {\n id: \"BACK_TO_MY_PICKS\",\n \"data-name\": \"BACK TO MY PICKS\",\n transform: \"translate(0 9)\",\n fill: \"#ececec\",\n fontSize: 10,\n fontFamily: \"ArialMT, Arial\",\n letterSpacing: \"0.2em\"\n }, /*#__PURE__*/React.createElement(\"tspan\", {\n x: 0,\n y: 0\n }, \"BACK TO MY PICKS\")))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgBackToMyPicks, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/BackToMyPicks.5eb3f3d4.svg\";\nexport { ForwardRef as ReactComponent };","var _image;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgRedditIcon = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _image || (_image = /*#__PURE__*/React.createElement(\"image\", {\n id: \"Reddit_Mark_OnWhite\",\n width: 32,\n height: 32,\n xlinkHref: \"data:image/png;base64,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\"\n })));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgRedditIcon, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/RedditIcon.917749d4.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgShareIcon = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \"\\n .share-1 {\\n fill: #8ad58f;\\n }\\n\\n .share-2 {\\n fill: #373737;\\n }\\n \"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_703\",\n \"data-name\": \"Group 703\",\n transform: \"translate(0.233 0.387)\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Ellipse_320\",\n \"data-name\": \"Ellipse 320\",\n className: \"share-1\",\n cx: 16,\n cy: 16,\n r: 16,\n transform: \"translate(-0.233 -0.387)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_2146\",\n \"data-name\": \"Path 2146\",\n className: \"share-2\",\n d: \"M1021.08,14.3a.793.793,0,1,1,.812-.793A.8.8,0,0,1,1021.08,14.3Zm-9.744-5.552a.863.863,0,0,1-.812-.793.812.812,0,0,1,1.624,0A.8.8,0,0,1,1011.336,8.745Zm9.744-7.138a.758.758,0,0,1,.812.793.812.812,0,0,1-1.624,0A.8.8,0,0,1,1021.08,1.607Zm0,9.6a2.446,2.446,0,0,0-1.624.634l-5.765-3.252a1.321,1.321,0,0,0,.081-.555,1.321,1.321,0,0,0-.081-.555l5.765-3.252a2.3,2.3,0,0,0,1.624.634,2.365,2.365,0,0,0,2.436-2.379,2.437,2.437,0,0,0-4.872,0,1.321,1.321,0,0,0,.081.555l-5.765,3.252a2.3,2.3,0,0,0-1.624-.634,2.38,2.38,0,1,0,0,4.759,2.3,2.3,0,0,0,1.624-.634l5.765,3.331c0,.159-.081.317-.081.555a2.355,2.355,0,0,0,4.709,0A2.4,2.4,0,0,0,1021.08,11.2Z\",\n transform: \"translate(-1000.997 7.803)\"\n }))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgShareIcon, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/ShareIcon.d4c8566d.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from \"react\";\nimport { ReactComponent as ShowResults } from \"icons/ShowResults.svg\";\nimport { ReactComponent as HideResults } from \"icons/HideResults.svg\";\nimport { ReactComponent as SubmittedAndCheck } from \"icons/SubmittedAndCheck.svg\";\nimport { ReactComponent as EditYourPicks } from \"icons/EditYourPicks.svg\";\nimport { ReactComponent as BackToMyPicks } from \"icons/BackToMyPicks.svg\";\nimport { Button, makeStyles } from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\nimport Clipboard from \"react-clipboard.js\";\nimport EventHelper from \"common/helpers/eventHelper/eventHelper\";\nimport UserManager from \"common/userManager\";\nimport { toast } from \"react-toastify\";\nimport StoreKeys from \"common/storeKeys\";\nimport { connect } from \"common/connect\";\nimport { changeUrl } from \"common/history\";\nimport { GetCurrentGameId, GetCurrentGamePrefix } from \"common/constants/Games\";\nimport { ReactComponent as DiscordIcon } from \"icons/DiscordIcon.svg\";\nimport { ReactComponent as InstagramIcon } from \"icons/InstagramIcon.svg\";\nimport { ReactComponent as RedditIcon } from \"icons/RedditIcon.svg\";\nimport { ReactComponent as TwitterIcon } from \"icons/TwitterIcon.svg\";\nimport { ReactComponent as ShareIcon } from \"icons/ShareIcon.svg\";\nimport Store from \"common/store\";\nimport LookupService from \"services/LookupService\";\n\nconst propKeys = {\n\tbracketUser: StoreKeys.EVENT.BRACKET_USER,\n\thasBracket: StoreKeys.EVENT.HAS_BRACKET,\n\tgames: StoreKeys.GAMES,\n};\n\nconst useStyles = makeStyles((theme) => {\n\treturn {\n\t\teventFooter: {\n\t\t\tdisplay: \"flex\",\n\t\t\tjustifyContent: \"center\",\n\t\t\tflexDirection: \"column\",\n\t\t\talignItems: \"center\",\n\t\t\tmarginTop: 8,\n\t\t},\n\t\tpanel: {\n\t\t\tbackgroundColor: Colors.panel,\n\t\t\twidth: \"fit-content\",\n\t\t\tpadding: 5,\n\t\t\tmarginTop: 8,\n\t\t\tborderRadius: 12,\n\t\t\tposition: \"relative\",\n\t\t\theight: 36,\n\t\t\tdisplay: \"flex\",\n\t\t\talignContent: \"center\",\n\t\t},\n\t\ticon: {\n\t\t\tcursor: \"pointer\",\n\t\t\tmargin: \"2px 4px\",\n\t\t\twidth: 32,\n\t\t\theight: 32\n\t\t},\n\t\tbutton: {\n\t\t\tcursor: \"pointer\",\n\t\t\tmargin: 2,\n\n\t\t\t\"&.disabled\": {\n\t\t\t\topacity: 0.3,\n\t\t\t\tcursor: \"default\",\n\t\t\t\tpointerEvents: \"none\",\n\t\t\t},\n\t\t},\n\t\tinline: {\n\t\t\tdisplay: \"inline-block\",\n\t\t\twidth: \"fit-content\",\n\t\t},\n\t\tflexCentered: {\n\t\t\tdisplay: \"flex\",\n\t\t\tflexDirection: \"row\",\n\t\t\talignItems: \"center\",\n\t\t\twidth: \"100%\",\n\t\t\tjustifyContent: \"center\",\n\t\t},\n\t};\n});\n\nexport function EventFooterC(props) {\n\tconst {\n\t\tbracketUser,\n\t\thasBracket,\n\t\tgames,\n\t\twidth,\n\t\tonEdit,\n\t\tshowingOfficialResults,\n\t\tshowOfficialResults,\n\t\tpicksLocked,\n\t} = props;\n\tconst styles = useStyles();\n\tconst isCurrentUser =\n\t\tbracketUser == null || bracketUser.userId === UserManager.getUserId();\n\n\tconst clickShare = () => {\n\t\ttoast(\"Link Copied!\", { type: \"success\", toastId: \"link-copied\" });\n\t};\n\n\tReact.useEffect(() => {\n\t\tif (!games) {\n\t\t\tLookupService.getGames().then((games) => {\n\t\t\t\tStore.set(StoreKeys.GAMES, games);\n\t\t\t});\n\t\t}\n\t});\n\n\tconst gameId = GetCurrentGameId();\n\tconst gamePrefix = GetCurrentGamePrefix();\n\tconst currentGame = games.find((g) => g.id === gameId);\n\n\tconst shareLink =\n\t\t\"https://\" +\n\t\twindow.location.host +\n\t\tgamePrefix +\n\t\t\"/event/\" +\n\t\tEventHelper.currentEventId +\n\t\t\"/\" +\n\t\t(EventHelper.currentUserId ?? UserManager.getUserId());\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t{isCurrentUser && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{!showingOfficialResults && (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tshowOfficialResults();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{showingOfficialResults && (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tshowOfficialResults();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{/* {\n\t\t\t\t\t\t\t\tif (onShowPlayers) {\n\t\t\t\t\t\t\t\t\tonShowPlayers();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\t\t\t\"onShowPlayers callback was not provided to EventFooter Component!\"\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/> */}\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tif (onEdit) {\n\t\t\t\t\t\t\t\t\tonEdit();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\t\t\t\"onEdit callback was not provided to EventFooter Component!\"\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{!isCurrentUser && picksLocked && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{!showingOfficialResults && (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tshowOfficialResults();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{showingOfficialResults && (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tshowOfficialResults();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{!isCurrentUser && (!picksLocked || hasBracket) && (\n\t\t\t\t\t {\n\t\t\t\t\t\t\tconst route = GetCurrentGamePrefix();\n\t\t\t\t\t\t\tchangeUrl(route + \"/event/\" + EventHelper.currentEventId);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t
\n\t\t\t
\n\t\t\t\t {\n\t\t\t\t\t\tchangeUrl(\"/about-us\");\n\t\t\t\t\t}}\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\tstyle={{ backgroundColor: Colors.body }}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\tAbout Us\n\t\t\t\t\n\t\t\t\t clickShare()}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t {\n\t\t\t\t\t\twindow.open(\"https://discord.gg/r8ujzkRYeF\", \"_blank\");\n\t\t\t\t\t}}\n\t\t\t\t\tclassName={styles.icon}\n\t\t\t\t/>\n\t\t\t\t {\n\t\t\t\t\t\twindow.open(currentGame.instagramUrl, \"_blank\");\n\t\t\t\t\t}}\n\t\t\t\t\tclassName={styles.icon}\n\t\t\t\t/>\n\t\t\t\t {\n\t\t\t\t\t\twindow.open(currentGame.twitterUrl, \"_blank\");\n\t\t\t\t\t}}\n\t\t\t\t\tclassName={styles.icon}\n\t\t\t\t/>\n\t\t\t\t {\n\t\t\t\t\t\twindow.open(\"https://www.reddit.com/user/pickstopgg/\", \"_blank\");\n\t\t\t\t\t}}\n\t\t\t\t\tclassName={styles.icon}\n\t\t\t\t/>\n\t\t\t
\n\t\t
\n\t);\n}\n\nexport default function EventFooter(props) {\n\treturn connect(, propKeys, props);\n}\n","import CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tEventFormatBracket,\n\tEventFormatBracketColumnMatch,\n} from \"common/helpers/eventFormatHelper\";\nimport { MatchPick } from \"common/types/MatchPick\";\nimport { Match } from \"bracket-system/types\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport * as React from \"react\";\nimport { ModalPanelTransparent } from \"../CustomModal/Modal/ModalFrame\";\nimport \"./TeamSelection.scss\";\nimport {\n\tfindBracketMatchById,\n\tfindColumnMatchById,\n\tgetBracketColumnByTarget,\n\tgetBracketMatchIdByTarget,\n} from \"common/helpers/bracketHelper\";\n\n/**\n * @typedef TeamSelectionProps\n * @type {object}\n * @property {Match} match\n * @property {any} eventData\n * @property {EventFormatBracket} bracket\n * @property {MatchPick[]} userBracketPicks\n * @property {boolean} selectedTop\n * @property {number} eventSubstageId\n * @property {boolean} useSeriesScore\n */\n\n/**\n * @param {TeamSelectionProps} props\n */\nexport default function TeamSelection({\n\tmatch,\n\teventData,\n\tbracket,\n\tuserBracketPicks,\n\tselectedTop,\n\teventId,\n\teventStageId,\n\teventSubstageId,\n\tuseSeriesScore,\n}) {\n\tconst [winnerTeamId, setWinnerTeamId] = React.useState(\n\t\t(selectedTop ? match.participants[0] : match.participants[1]).id\n\t);\n\tconst [loserTeamId, setLoserTeamId] = React.useState(\n\t\t(selectedTop ? match.participants[1] : match.participants[0]).id\n\t);\n\n\tconst columnMatch = findColumnMatchById(bracket, match.id);\n\tconst teams = eventData.teams;\n\n\t/** @type {MatchPick} */\n\tconst currentPick = getUserPickFromBracketTarget(\n\t\tcolumnMatch,\n\t\tuserBracketPicks,\n\t\teventId,\n\t\teventStageId,\n\t\teventSubstageId,\n\t\tmatch.participants[0].id,\n\t\tmatch.participants[1].id\n\t);\n\n\tconst winnerTeam = teams.find((t) => t.id === winnerTeamId);\n\tconst loserTeam = teams.find((t) => t.id === loserTeamId);\n\n\tconst scoreSelect = (winScore, loseScore) => {\n\t\tcurrentPick.winnerTeamId = winnerTeamId;\n\t\tcurrentPick.loserTeamId = loserTeamId;\n\n\t\tif (winnerTeamId === currentPick.topTeamId) {\n\t\t\tcurrentPick.topTeamScore = winScore;\n\t\t\tcurrentPick.bottomTeamScore = loseScore;\n\t\t} else {\n\t\t\tcurrentPick.topTeamScore = loseScore;\n\t\t\tcurrentPick.bottomTeamScore = winScore;\n\t\t}\n\n\t\t// Update next match\n\t\tif (match.nextMatchId) {\n\t\t\tconst nextMatch = findColumnMatchById(bracket, match.nextMatchId);\n\t\t\tconst nextMatchPick = getUserPickFromBracketTarget(\n\t\t\t\tnextMatch,\n\t\t\t\tuserBracketPicks,\n\t\t\t\teventId,\n\t\t\t\teventStageId,\n\t\t\t\teventSubstageId\n\t\t\t);\n\n\t\t\tif (matchIsOnTop(bracket, columnMatch, nextMatch)) {\n\t\t\t\tnextMatchPick.topTeamId = winnerTeamId;\n\n\t\t\t\tnextMatchPick.winnerTeamId = null;\n\t\t\t\tnextMatchPick.loserTeamId = null;\n\t\t\t\tnextMatchPick.topTeamScore = 0;\n\t\t\t\tnextMatchPick.bottomTeamScore = 0;\n\t\t\t} else {\n\t\t\t\tnextMatchPick.bottomTeamId = winnerTeamId;\n\n\t\t\t\tnextMatchPick.winnerTeamId = null;\n\t\t\t\tnextMatchPick.loserTeamId = null;\n\t\t\t\tnextMatchPick.topTeamScore = 0;\n\t\t\t\tnextMatchPick.bottomTeamScore = 0;\n\t\t\t}\n\n\t\t\twipeOutFurtherPicks(nextMatch);\n\t\t}\n\n\t\tif (match.nextLooserMatchId) {\n\t\t\tconst loserMatch = findColumnMatchById(bracket, match.nextLooserMatchId);\n\t\t\tconst loserMatchPick = getUserPickFromBracketTarget(\n\t\t\t\tloserMatch,\n\t\t\t\tuserBracketPicks,\n\t\t\t\teventId,\n\t\t\t\teventStageId,\n\t\t\t\teventSubstageId\n\t\t\t);\n\n\t\t\tif (matchIsOnTop(bracket, columnMatch, loserMatch)) {\n\t\t\t\tloserMatchPick.topTeamId = loserTeamId;\n\n\t\t\t\tloserMatchPick.winnerTeamId = null;\n\t\t\t\tloserMatchPick.loserTeamId = null;\n\t\t\t\tloserMatchPick.topTeamScore = 0;\n\t\t\t\tloserMatchPick.bottomTeamScore = 0;\n\t\t\t} else {\n\t\t\t\tloserMatchPick.bottomTeamId = loserTeamId;\n\n\t\t\t\tloserMatchPick.winnerTeamId = null;\n\t\t\t\tloserMatchPick.loserTeamId = null;\n\t\t\t\tloserMatchPick.topTeamScore = 0;\n\t\t\t\tloserMatchPick.bottomTeamScore = 0;\n\t\t\t}\n\n\t\t\twipeOutFurtherPicks(loserMatch);\n\t\t}\n\n\t\tStore.set(StoreKeys.EVENT.USER.BRACKET_PICKS, userBracketPicks);\n\t\tclose();\n\t};\n\n\t/**\n\t *\n\t * @param {EventFormatBracketColumnMatch} match\n\t */\n\tconst wipeOutFurtherPicks = (match) => {\n\t\tconst bracketMatchId = getBracketMatchIdByTarget(bracket, {\n\t\t\tpart: match.part,\n\t\t\tcol: match.col,\n\t\t\tcolIndex: match.colIndex,\n\t\t});\n\t\tconst bracketMatch = findBracketMatchById(bracket, bracketMatchId);\n\n\t\t// Update next match\n\t\tif (bracketMatch.nextMatchId) {\n\t\t\tconst nextMatch = findColumnMatchById(bracket, bracketMatch.nextMatchId);\n\t\t\tconst nextMatchPick = getUserPickFromBracketTarget(\n\t\t\t\tnextMatch,\n\t\t\t\tuserBracketPicks,\n\t\t\t\teventId,\n\t\t\t\teventStageId,\n\t\t\t\teventSubstageId\n\t\t\t);\n\n\t\t\tif (matchIsOnTop(bracket, match, nextMatch)) {\n\t\t\t\tnextMatchPick.topTeamId = null;\n\n\t\t\t\tnextMatchPick.winnerTeamId = null;\n\t\t\t\tnextMatchPick.loserTeamId = null;\n\t\t\t\tnextMatchPick.topTeamScore = 0;\n\t\t\t\tnextMatchPick.bottomTeamScore = 0;\n\t\t\t} else {\n\t\t\t\tnextMatchPick.bottomTeamId = null;\n\n\t\t\t\tnextMatchPick.winnerTeamId = null;\n\t\t\t\tnextMatchPick.loserTeamId = null;\n\t\t\t\tnextMatchPick.topTeamScore = 0;\n\t\t\t\tnextMatchPick.bottomTeamScore = 0;\n\t\t\t}\n\n\t\t\twipeOutFurtherPicks(nextMatch);\n\t\t}\n\n\t\tif (bracketMatch.nextLooserMatchId) {\n\t\t\tconst loserMatch = findColumnMatchById(\n\t\t\t\tbracket,\n\t\t\t\tbracketMatch.nextLooserMatchId\n\t\t\t);\n\t\t\tconst loserMatchPick = getUserPickFromBracketTarget(\n\t\t\t\tloserMatch,\n\t\t\t\tuserBracketPicks,\n\t\t\t\teventId,\n\t\t\t\teventStageId,\n\t\t\t\teventSubstageId\n\t\t\t);\n\n\t\t\tif (matchIsOnTop(bracket, match, loserMatch)) {\n\t\t\t\tloserMatchPick.topTeamId = null;\n\n\t\t\t\tloserMatchPick.winnerTeamId = null;\n\t\t\t\tloserMatchPick.loserTeamId = null;\n\t\t\t\tloserMatchPick.topTeamScore = 0;\n\t\t\t\tloserMatchPick.bottomTeamScore = 0;\n\t\t\t} else {\n\t\t\t\tloserMatchPick.bottomTeamId = null;\n\n\t\t\t\tloserMatchPick.winnerTeamId = null;\n\t\t\t\tloserMatchPick.loserTeamId = null;\n\t\t\t\tloserMatchPick.topTeamScore = 0;\n\t\t\t\tloserMatchPick.bottomTeamScore = 0;\n\t\t\t}\n\n\t\t\twipeOutFurtherPicks(loserMatch);\n\t\t}\n\t};\n\n\tconst close = () => {\n\t\tModalHelper.closeAllModals();\n\t};\n\n\tconst selectWinner = (winner, loser) => {\n\t\tsetWinnerTeamId(winner.id);\n\t\tsetLoserTeamId(loser.id);\n\t};\n\n\tconst bracketColumn = getBracketColumnByTarget(bracket, {\n\t\tpart: columnMatch.part,\n\t\tcol: columnMatch.col,\n\t});\n\n\t// If BestOf is set to 1, remove the second click needed\n\tif (!useSeriesScore || bracketColumn.bestOf === 1) {\n\t\tscoreSelect(1, 0);\n\t\treturn <>;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tselectWinner(winnerTeam, loserTeam);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tselectWinner(loserTeam, winnerTeam);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t
\n\t\t\t\t\t\t{useSeriesScore && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{bracketColumn.bestOf === 3 && (\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t scoreSelect(2, 0)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\"Team\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t

2-0

\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t scoreSelect(2, 1)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\"Team\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t

2-1

\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{bracketColumn.bestOf === 5 && (\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t scoreSelect(3, 0)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\"Team\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t

3-0

\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t scoreSelect(3, 1)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\"Team\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t

3-1

\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t scoreSelect(3, 2)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\"Team\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t

3-2

\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{bracketColumn.bestOf === 7 && (\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t scoreSelect(4, 0)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\"Team\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t

4-0

\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t scoreSelect(4, 1)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\"Team\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t

4-1

\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t scoreSelect(4, 2)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\"Team\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t

4-2

\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t scoreSelect(4, 3)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\"Team\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t

4-3

\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t);\n}\n\nfunction TeamBlock(props) {\n\tconst { team, noClick, onClick } = props;\n\n\tconst isPlayerOrCaptain = (member) => {\n\t\treturn member.position === \"Player\" || member.position === \"Captain\";\n\t};\n\n\tconst renderTeamPlayers = (team) => {\n\t\tconst players = team.members.filter((player) => isPlayerOrCaptain(player));\n\t\tconst coach = team.members.filter((player) => player.position === \"Coach\");\n\t\tconst other = team.members.filter(\n\t\t\t(player) =>\n\t\t\t\tplayer.position !== \"Player\" &&\n\t\t\t\tplayer.position !== \"Coach\" &&\n\t\t\t\tplayer.position !== \"Captain\"\n\t\t);\n\t\tconst playerOrder = [...players, ...coach, ...other];\n\n\t\treturn playerOrder.map((member, index) => {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{isPlayerOrCaptain(member) ? {index + 1} : \"\"}\n\t\t\t\t\t\t{!isPlayerOrCaptain(member) ? (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{member.position.substring(0, 1)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t);\n\t\t});\n\t};\n\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t\"Team\n\t\t\t\t{\" \"}\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{renderTeamPlayers(team)}\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t);\n}\n\n/**\n *\n * @param {EventFormatBracket} bracket\n * @param {EventFormatBracketColumnMatch} currentMatch\n * @param {EventFormatBracketColumnMatch} targetMatch\n */\nfunction matchIsOnTop(bracket, currentMatch, nextMatch) {\n\t// Dropdown Loser scenario or Upper finals into Grand Final\n\tif (currentMatch.part === \"UB\" && nextMatch.part === \"GF\") {\n\t\treturn true;\n\t}\n\n\tif (currentMatch.part === \"UB\" && nextMatch.part === \"LB\") {\n\t\treturn currentMatch.loserPath.isTop;\n\t}\n\n\t// Lower bracket to GF is on bottom.\n\tif (currentMatch.part === \"LB\" && nextMatch.part === \"GF\") {\n\t\treturn false;\n\t}\n\n\tif (currentMatch.part === \"UB\" && nextMatch.part === \"UB\") {\n\t\tconst upperBracket = bracket.parts.find((p) => p.identifier === \"UB\");\n\t\tconst currentColumn = upperBracket.columns[currentMatch.col];\n\t\tconst nextColumn = upperBracket.columns[nextMatch.col];\n\t\t// If the match count is the same, then the next match is a dropdown and the winner is in the bottom of the next match.\n\t\tif (currentColumn.matchCount === nextColumn.matchCount) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn currentMatch.colIndex % 2 === 0;\n\t\t}\n\t}\n\n\tif (currentMatch.part === \"LB\" && nextMatch.part === \"LB\") {\n\t\tconst lowerBracket = bracket.parts.find((p) => p.identifier === \"LB\");\n\t\tconst currentColumn = lowerBracket.columns[currentMatch.col];\n\t\tconst nextColumn = lowerBracket.columns[nextMatch.col];\n\t\t// If the match count is the same, then the next match is a dropdown and the winner is in the bottom of the next match.\n\t\tif (currentColumn.matchCount === nextColumn.matchCount) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn currentMatch.colIndex % 2 === 0;\n\t\t}\n\t}\n\n\tconst upperBracket = bracket.parts.find((p) => p.identifier === \"UB\");\n\tconst currentColumn = upperBracket.columns[currentMatch.col];\n\tconst nextColumn = upperBracket.columns[nextMatch.col];\n\t// If the match count is the same, then the next match is a dropdown and the winner is in the bottom of the next match.\n\tif (currentColumn.matchCount === nextColumn.matchCount) {\n\t\treturn false;\n\t} else {\n\t\treturn currentMatch.colIndex % 2 === 0;\n\t}\n}\n\nfunction getUserPickFromBracketTarget(\n\tcolumnMatch,\n\tuserBracketPicks,\n\teventId,\n\teventStageId,\n\teventSubstageId,\n\ttopTeamId,\n\tbottomTeamId\n) {\n\tconst previousPick = userBracketPicks.find(\n\t\t(p) =>\n\t\t\tp.bracketPart === columnMatch.part &&\n\t\t\tp.bracketCol === columnMatch.col &&\n\t\t\tp.bracketColIndex === columnMatch.colIndex &&\n\t\t\tp.eventSubstageId === eventSubstageId\n\t);\n\tconst isAddingPick = !previousPick;\n\n\t/** @type {MatchPick} */\n\tconst currentPick = isAddingPick\n\t\t? {\n\t\t\t\tbracketPart: columnMatch.part,\n\t\t\t\tbracketCol: columnMatch.col,\n\t\t\t\tbracketColIndex: columnMatch.colIndex,\n\t\t\t\ttopTeamId,\n\t\t\t\ttopTeamScore: 0,\n\t\t\t\tbottomTeamId,\n\t\t\t\tbottomTeamScore: 0,\n\t\t\t\teventId,\n\t\t\t\teventStageId,\n\t\t\t\teventSubstageId,\n\t\t\t\twinnerTeamId: null,\n\t\t\t\tloserTeamId: null,\n\t\t }\n\t\t: previousPick;\n\n\tif (isAddingPick) {\n\t\tuserBracketPicks.push(currentPick);\n\t}\n\n\treturn currentPick;\n}\n","import * as React from \"react\";\nimport { Box, makeStyles } from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\n\nconst useStyles = makeStyles((theme) => ({\n\troot: {\n\t\tbackgroundColor: Colors.panelLight,\n\t\tborderRadius: 12,\n\t\tborder: \"1px solid \" + theme.palette.primary.main,\n\t\tcolor: theme.palette.primary.main,\n\t\ttextAlign: \"left\",\n\t\talignItems: \"center\",\n\t\twidth: 143,\n\t\theight: 34,\n\t\twhiteSpace: \"nowrap\",\n\t\tdisplay: \"inline-flex\",\n\t\tjustifyContent: \"center\",\n\t\tcursor: \"pointer\",\n\t\tmargin: 4,\n\t\t\"&.disabled\": {\n\t\t\topacity: 0.4,\n\t\t\tcursor: \"default\",\n\t\t\tanimation: \"none\",\n\t\t},\n\t},\n\ttextSpan: {},\n}));\n\nexport default function NameplateButton({\n\tbuttonText,\n\tnameplateId,\n\tdisabled,\n\tonClick,\n}) {\n\tconst styles = useStyles();\n\treturn (\n\t\t {\n\t\t\t\tif (!disabled) {\n\t\t\t\t\tonClick();\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t{buttonText}\n\t\t\n\t);\n}\n","import * as React from \"react\";\nimport { connect } from \"common/connect\";\nimport StoreKeys from \"common/storeKeys\";\nimport { Button, makeStyles, useMediaQuery, useTheme } from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\nimport DoubleEliminationBracket from \"bracket-system/bracket-double/double-elim-bracket\";\nimport Match from \"bracket-system/components/match\";\nimport SvgViewer from \"bracket-system/svg-viewer\";\nimport {\n\tgetHeaderNamesFromBracket,\n\tgetLockedColumns,\n} from \"common/helpers/eventFormatHelper\";\nimport { EventStageTypes } from \"common/constants/EventStageTypes\";\nimport { parsePicksIntoBracketMatches } from \"common/helpers/bracketHelper\";\nimport Store from \"common/store\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport TeamSelection from \"common/components/TeamSelection/TeamSelection\";\nimport EventHelper from \"common/helpers/eventHelper/eventHelper\";\n// eslint-disable-next-line no-unused-vars\nimport { EventFormatData } from \"common/helpers/eventFormatHelper\";\n// eslint-disable-next-line no-unused-vars\nimport { MatchPick } from \"common/types/MatchPick\";\n// eslint-disable-next-line no-unused-vars\nimport { EventStage } from \"common/types/EventStage\";\nimport UserManager from \"common/userManager\";\nimport AccountRequired from \"common/components/Modals/AccountRequired/AccountRequired\";\nimport NameplateButton from \"common/components/NameplateButton\";\nimport { GetCurrentGameId } from \"common/constants/Games\";\n\nconst useStyles = makeStyles((theme) => {\n\treturn {\n\t\tbracketWrapper: {\n\t\t\tborder: `2px solid ${Colors.panel}`,\n\t\t\tborderRadius: theme.shape.borderRadius,\n\t\t\toverflow: \"hidden\",\n\t\t\tmarginTop: theme.spacing() * 3,\n\t\t\tmarginBottom: theme.spacing() * 3,\n\t\t},\n\t};\n});\n\nconst propKeys = {\n\teventData: StoreKeys.EVENT.EVENTDATA,\n\tuserBracketPicks: StoreKeys.EVENT.USER.BRACKET_PICKS,\n\tofficialBracketPicks: StoreKeys.EVENT.OFFICIAL.BRACKET_PICKS,\n\tformat: StoreKeys.EVENT.FORMAT,\n\tstageIndex: StoreKeys.EVENT.STAGE_INDEX,\n\tsubstageIndex: StoreKeys.EVENT.SUBSTAGE_INDEX,\n\tgames: StoreKeys.GAMES,\n};\n\n/**\n * @typedef BracketEditorCProps\n * @type {object}\n * @property {any} eventData\n * @property {MatchPick[]} userBracketPicks\n * @property {MatchPick[]} officialBracketPicks\n * @property {EventFormatData} format\n * @property {number} stageIndex\n * @property {number} substageIndex\n * @property {any[]} games\n */\n\n/**\n * @param {BracketEditorCProps} props\n */\nfunction BracketEditorC({\n\teventData,\n\tuserBracketPicks,\n\tofficialBracketPicks,\n\tformat,\n\tstageIndex,\n\tsubstageIndex,\n\tgames,\n}) {\n\tconst ref = React.useRef();\n\tconst styles = useStyles();\n\tconst theme = useTheme();\n\tconst isSmall = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\n\tconst currentStage = format.stages[stageIndex];\n\t/** @type {EventStage} */\n\tconst currentEventStage = eventData.eventStages[stageIndex];\n\tconst currentSubstage = currentEventStage.eventSubstage[substageIndex];\n\tconst totalSubstages = currentEventStage.eventSubstage.length;\n\tconst bracketWidth = !isSmall\n\t\t? window.innerWidth - 382\n\t\t: window.innerWidth - 24;\n\tconst bracketHeight = !isSmall\n\t\t? window.innerHeight * 0.75\n\t\t: window.innerHeight * 0.7;\n\n\tconst useSeriesScore =\n\t\tcurrentStage?.type === EventStageTypes.Playoffs\n\t\t\t? currentStage?.playoffDetails?.useSeriesScore\n\t\t\t: currentStage?.groupStageDetails?.useSeriesScore;\n\n\tconst officialMatches = parsePicksIntoBracketMatches(\n\t\teventData,\n\t\tcurrentEventStage,\n\t\tcurrentSubstage,\n\t\tcurrentStage,\n\t\tcurrentStage.bracket,\n\t\t[],\n\t\tofficialBracketPicks\n\t);\n\n\tconst matches = parsePicksIntoBracketMatches(\n\t\teventData,\n\t\tcurrentEventStage,\n\t\tcurrentSubstage,\n\t\tcurrentStage,\n\t\tcurrentStage.bracket,\n\t\tuserBracketPicks ?? [],\n\t\tofficialBracketPicks,\n\t\ttrue\n\t);\n\n\tconst gameId = GetCurrentGameId();\n\tconst currentGame = games.find((g) => g.id === gameId);\n\n\tconst headerNames = getHeaderNamesFromBracket(currentStage.bracket);\n\tconst lockedColumns = getLockedColumns(currentStage.bracket);\n\n\tconst clickParty = (e, match, selectedTop, team) => {\n\t\tif (!UserManager.isLoggedIn()) {\n\t\t\tModalHelper.openModal();\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if match ready to pick\n\t\tif (match.participants.filter((p) => p.id !== \"\").length < 2) {\n\t\t\treturn;\n\t\t}\n\n\t\tModalHelper.openModal(, null, {\n\t\t\tmatch,\n\t\t\teventData,\n\t\t\tbracket: currentStage.bracket,\n\t\t\tuserBracketPicks,\n\t\t\tselectedTop,\n\t\t\teventId: eventData.id,\n\t\t\teventStageId: eventData.eventStages[stageIndex].id,\n\t\t\teventSubstageId:\n\t\t\t\teventData.eventStages[stageIndex].eventSubstage[substageIndex].id,\n\t\t\tuseSeriesScore,\n\t\t});\n\t};\n\n\tconst onBack = () => {\n\t\tStore.set(StoreKeys.EVENT.SUBSTAGE_INDEX, Math.max(substageIndex - 1, 0));\n\t};\n\n\tconst onNext = () => {\n\t\tStore.set(\n\t\t\tStoreKeys.EVENT.SUBSTAGE_INDEX,\n\t\t\tMath.min(substageIndex + 1, totalSubstages - 1)\n\t\t);\n\t};\n\n\tconst onSubmit = () => {\n\t\tEventHelper.submitPicks(currentGame).then(() => {\n\t\t\tStore.set(StoreKeys.EVENT.IS_EDITING, false);\n\t\t});\n\t};\n\n\tconst checkNextDisabled = () => {\n\t\treturn (\n\t\t\tcurrentStage.bracket.parts\n\t\t\t\t.flatMap((p) => p.columns.flatMap((c) => c.matches))\n\t\t\t\t.some((m) => {\n\t\t\t\t\tconst matchingPick = userBracketPicks?.find(\n\t\t\t\t\t\t(p) =>\n\t\t\t\t\t\t\tp.bracketPart === m.part &&\n\t\t\t\t\t\t\tp.bracketCol === m.col &&\n\t\t\t\t\t\t\tp.bracketColIndex === m.colIndex &&\n\t\t\t\t\t\t\tp.eventSubstageId === currentSubstage.id\n\t\t\t\t\t);\n\n\t\t\t\t\treturn matchingPick?.winnerTeamId == null;\n\t\t\t\t}) ?? true\n\t\t);\n\t};\n\n\tconst nextDisabled = checkNextDisabled();\n\tconst isSubmit = substageIndex + 1 === totalSubstages;\n\n\treturn (\n\t\t<>\n\t\t\t
\n\t\t\t\t (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\tcustomHeaderNames={headerNames}\n\t\t\t\t\tlockedColumns={lockedColumns}\n\t\t\t\t\thideSeriesScore={!useSeriesScore}\n\t\t\t\t\tonPartyClick={clickParty}\n\t\t\t\t/>\n\t\t\t
\n\t\t\t\n\t\t\t\t{substageIndex > 0 && (\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t {\n\t\t\t\t\t\tisSubmit ? onSubmit() : onNext();\n\t\t\t\t\t}}\n\t\t\t\t\tdisabled={nextDisabled}\n\t\t\t\t\tbuttonText={isSubmit ? \"SUBMIT\" : \"NEXT\"}\n\t\t\t\t\tnameplateId={isSubmit ? 32 : null}\n\t\t\t\t/>\n\t\t\t\n\t\t\n\t);\n}\n\nexport default function BracketEditor(props) {\n\treturn connect(, propKeys, props);\n}\n","import * as React from \"react\";\nimport { connect } from \"common/connect\";\nimport StoreKeys from \"common/storeKeys\";\nimport { makeStyles, useMediaQuery, useTheme } from \"@material-ui/core\";\nimport DoubleEliminationBracket from \"bracket-system/bracket-double/double-elim-bracket\";\nimport { EventStageTypes } from \"common/constants/EventStageTypes\";\nimport { Colors } from \"styles/Colors\";\nimport Match from \"bracket-system/components/match\";\nimport SvgViewer from \"bracket-system/svg-viewer\";\nimport { parsePicksIntoBracketMatches } from \"common/helpers/bracketHelper\";\nimport {\n\t// eslint-disable-next-line no-unused-vars\n\tEventFormatData,\n\tgetHeaderNamesFromBracket,\n\tgetLockedColumns,\n} from \"common/helpers/eventFormatHelper\";\nimport BracketEditor from \"./BracketEditor\";\n// eslint-disable-next-line no-unused-vars\nimport { EventStage } from \"common/types/EventStage\";\nimport UserManager from \"common/userManager\";\n\nconst useStyles = makeStyles((theme) => {\n\treturn {\n\t\tbracketWrapper: {\n\t\t\tborder: `2px solid ${Colors.panel}`,\n\t\t\tborderRadius: theme.shape.borderRadius,\n\t\t\toverflow: \"hidden\",\n\t\t},\n\t};\n});\n\nconst propKeys = {\n\teventData: StoreKeys.EVENT.EVENTDATA,\n\tformat: StoreKeys.EVENT.FORMAT,\n\tuserBracketPicks: StoreKeys.EVENT.USER.BRACKET_PICKS,\n\tuserGroupPicks: StoreKeys.EVENT.USER.GROUP_PICKS,\n\tofficialBracketPicks: StoreKeys.EVENT.OFFICIAL.BRACKET_PICKS,\n\tofficialGroupPicks: StoreKeys.EVENT.OFFICIAL.GROUP_PICKS,\n\tisEditing: StoreKeys.EVENT.IS_EDITING,\n\tstageIndex: StoreKeys.EVENT.STAGE_INDEX,\n\tsubstageIndex: StoreKeys.EVENT.SUBSTAGE_INDEX,\n\tshowOfficial: StoreKeys.EVENT.SHOW_OFFICIAL,\n};\n/**\n * @typedef BracketRendererCProps\n * @type {object}\n * @property {any} eventData\n * @property {EventFormatData} format\n * @property {MatchPick[]} userBracketPicks\n * @property {MatchPick[]} officialBracketPicks\n * @property {boolean} isEditing\n * @property {number} width\n * @property {number} stageIndex\n * @property {number} substageIndex\n * @property {boolean} showOfficial\n */\n\n/**\n * @param {BracketRendererCProps} props\n */\nfunction BracketRendererC({\n\teventData,\n\tformat,\n\tuserBracketPicks,\n\tofficialBracketPicks,\n\tisEditing,\n\twidth,\n\tstageIndex,\n\tsubstageIndex,\n\tshowOfficial,\n}) {\n\tconst ref = React.useRef();\n\tconst styles = useStyles();\n\tconst theme = useTheme();\n\tconst isSmall = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\tconst bracketWidth = !isSmall\n\t\t? window.innerWidth - 382\n\t\t: window.innerWidth - 24;\n\n\tlet baseUIHeight = isSmall ? 334 : 320;\n\tconst bottomNavHeight = 62;\n\tconst loggedIn = UserManager.isLoggedIn();\n\tlet otherUIHeight = isSmall ? baseUIHeight + bottomNavHeight : baseUIHeight;\n\tif (loggedIn) otherUIHeight += 39;\n\tconst renderHeight = Math.max(window.innerHeight - otherUIHeight, 200);\n\n\tconst eventNameLabel = document.getElementById(\"EventNameLabel\");\n\tbaseUIHeight += eventNameLabel?.clientHeight - 23;\n\n\tconst currentStage = format.stages[stageIndex];\n\t/** @type {EventStage} */\n\tconst currentEventStage = eventData.eventStages[stageIndex];\n\tconst currentSubstage = currentEventStage.eventSubstage[substageIndex];\n\tconst headerNames = getHeaderNamesFromBracket(currentStage.bracket);\n\tconst lockedColumns = getLockedColumns(currentStage.bracket);\n\tconst useSeriesScore =\n\t\tcurrentStage?.type === EventStageTypes.Playoffs\n\t\t\t? currentStage?.playoffDetails?.useSeriesScore\n\t\t\t: currentStage?.groupStageDetails?.useSeriesScore;\n\n\tconst officialMatches = parsePicksIntoBracketMatches(\n\t\teventData,\n\t\tcurrentEventStage,\n\t\tcurrentSubstage,\n\t\tcurrentStage,\n\t\tcurrentStage.bracket,\n\t\t[],\n\t\tofficialBracketPicks\n\t);\n\n\tconst matches = parsePicksIntoBracketMatches(\n\t\teventData,\n\t\tcurrentEventStage,\n\t\tcurrentSubstage,\n\t\tcurrentStage,\n\t\tcurrentStage.bracket,\n\t\tuserBracketPicks ?? [],\n\t\tofficialBracketPicks\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{isEditing && }\n\t\t\t{!isEditing && (\n\t\t\t\t
\n\t\t\t\t\t (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tcustomHeaderNames={headerNames}\n\t\t\t\t\t\tlockedColumns={lockedColumns}\n\t\t\t\t\t\thideSeriesScore={!useSeriesScore}\n\t\t\t\t\t/>\n\t\t\t\t
\n\t\t\t)}\n\t\t\n\t);\n}\n\nexport default function BracketRenderer(props) {\n\treturn connect(, propKeys, props);\n}\n","import * as React from \"react\";\nimport \"./GroupStageTeam.scss\";\nimport { targetArrayHasMatchingRecord } from \"common/helpers/arrayHelper\";\nimport { PickTypes } from \"common/constants/PickTypes\";\n\nexport class GroupStageTeam extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tshowPlayers: false,\n\t\t\tshowOfficial: false,\n\t\t\tdisabled: false,\n\t\t};\n\n\t\tthis.selector = React.createRef();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (this.props.showPlayers !== this.state.showPlayers) {\n\t\t\tthis.setState({\n\t\t\t\tshowPlayers: this.props.showPlayers,\n\t\t\t});\n\t\t}\n\t\tif (this.props.showOfficial !== this.state.showOfficial) {\n\t\t\tthis.setState({\n\t\t\t\tshowOfficial: this.props.showOfficial,\n\t\t\t});\n\t\t}\n\t}\n\n\ttogglePlayerList(e) {\n\t\tthis.setState({\n\t\t\tshowPlayers: !this.state.showPlayers,\n\t\t});\n\t\te.stopPropagation();\n\t}\n\n\tisPlayerOrCaptain(member) {\n\t\treturn member.position === \"Player\" || member.position === \"Captain\";\n\t}\n\n\tgetCardStatus() {\n\t\tif (this.props.step === 0) {\n\t\t\tif (this.props.isAdvancing) {\n\t\t\t\treturn \"advancing\";\n\t\t\t}\n\t\t} else if (this.props.step === 1) {\n\t\t\tif (!this.props.isAdvancing) {\n\t\t\t\treturn \"disabled\";\n\t\t\t}\n\n\t\t\treturn \"advancing\";\n\t\t} else if (this.props.step === 2) {\n\t\t\tif (this.props.toggleSecondTeam) {\n\t\t\t\tif (!this.props.isAdvancing) {\n\t\t\t\t\treturn \"disabled\";\n\t\t\t\t}\n\n\t\t\t\treturn \"advancing\";\n\t\t\t}\n\n\t\t\tif (this.props.toggleEliminated) {\n\t\t\t\tif (this.props.isAdvancing) {\n\t\t\t\t\treturn \"disabled\";\n\t\t\t\t}\n\n\t\t\t\treturn \"advancing\";\n\t\t\t}\n\t\t}\n\n\t\treturn \"\";\n\t}\n\trender() {\n\t\tconst correct =\n\t\t\t!this.state.showOfficial &&\n\t\t\ttargetArrayHasMatchingRecord(\n\t\t\t\tthis.props.officialGroupPicks,\n\t\t\t\t{\n\t\t\t\t\tteamId: this.props.team.id,\n\t\t\t\t\tpickTypeId: this.props.isAdvancing\n\t\t\t\t\t\t? PickTypes.Advancing\n\t\t\t\t\t\t: PickTypes.Eliminated,\n\t\t\t\t},\n\t\t\t\t[\"teamId\", \"pickTypeId\"]\n\t\t\t);\n\t\tconst cardStatus =\n\t\t\tthis.getCardStatus() +\n\t\t\t(this.props.locked ? \" locked\" : \"\") +\n\t\t\t(correct ? \" correct\" : \"\");\n\t\tconst team = this.props.team;\n\t\tconst players = team.members.filter((player) =>\n\t\t\tthis.isPlayerOrCaptain(player)\n\t\t);\n\t\tconst coach = team.members.filter((player) => player.position === \"Coach\");\n\t\tconst other = team.members.filter(\n\t\t\t(player) =>\n\t\t\t\tplayer.position !== \"Player\" &&\n\t\t\t\tplayer.position !== \"Coach\" &&\n\t\t\t\tplayer.position !== \"Captain\"\n\t\t);\n\t\tconst playerOrder = [...players, ...coach, ...other];\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t{!cardStatus.includes(\"disabled\") && this.state.showPlayers && (\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{playerOrder?.map((member, index) => (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{/* */}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\"Player\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t\t{!cardStatus.includes(\"disabled\") && !this.state.showPlayers && (\n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (!cardStatus.includes(\"disabled\")) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t(this.props.step === 0 && this.props.toggleAdvancing) ||\n\t\t\t\t\t\t\t\t\tthis.props.enableAdvancingStepOne\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tthis.props.toggleAdvancing(this.props.team.id);\n\t\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t\tthis.props.step === 1 &&\n\t\t\t\t\t\t\t\t\tthis.props.isAdvancing &&\n\t\t\t\t\t\t\t\t\tthis.props.toggleTopTeam\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tthis.props.toggleTopTeam(this.props.team.id);\n\t\t\t\t\t\t\t\t} else if (this.props.step === 2) {\n\t\t\t\t\t\t\t\t\tif (this.props.toggleSecondTeam && this.props.isAdvancing &&\n\t\t\t\t\t\t\t\t\t\t!this.props.isTopTeam) {\n\t\t\t\t\t\t\t\t\t\t\tthis.props.toggleSecondTeam(this.props.team.id);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (this.props.toggleEliminated && !this.props.isAdvancing) {\n\t\t\t\t\t\t\t\t\t\tthis.props.toggleEliminated(this.props.team.id);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{this.props.topLeftEl}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{this.props.team.logoUrl && (\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\"Team\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{this.props.team && }\n\t\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{cardStatus.includes(\"disabled\") && (\n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (!cardStatus.includes(\"disabled\")) {\n\t\t\t\t\t\t\t\tif (this.props.step === 0 && this.props.toggleAdvancing) {\n\t\t\t\t\t\t\t\t\tthis.props.toggleAdvancing(\n\t\t\t\t\t\t\t\t\t\tthis.props.team.id,\n\t\t\t\t\t\t\t\t\t\t!this.props.isAdvancing\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{this.props.team.logoUrl && (\n\t\t\t\t\t\t\t\t\"Team\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{this.props.team && }\n\t\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t);\n\t}\n}\n","import { Box, makeStyles } from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\nimport * as React from \"react\";\n\nconst classStyles = makeStyles((theme) => {\n\treturn {\n\t\tinstructionsContainer: {\n\t\t\tmarginBottom: 20,\n\t\t\tdisplay: \"flex\",\n\t\t\tjustifyContent: \"center\",\n\t\t},\n\t\tinstructions: {\n\t\t\tpadding: 8,\n\t\t\tborderRadius: 12,\n\t\t\tbackgroundColor: Colors.panelLighterColor,\n\t\t\twidth: \"100%\",\n\t\t\ttextAlign: \"center\",\n\t\t},\n\t};\n});\n\nexport default function Instructions(props) {\n\tconst { text, isEditing } = props;\n\tconst classes = classStyles(props);\n\treturn (\n\t\t<>\n\t\t\t{isEditing && (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n}\n","import * as React from \"react\";\nimport { Colors } from \"styles/Colors\";\nimport { makeStyles } from \"@material-ui/core\";\n\nconst useStyles = makeStyles((theme) => {\n\treturn {\n\t\tpageIndicators: {\n\t\t\tdisplay: \"flex\",\n\t\t\tjustifyContent: \"center\",\n\t\t\tmarginBottom: 10,\n\t\t\tmarginTop: 10,\n\t\t},\n\t\tfilledCircle: {\n\t\t\tbackgroundColor: Colors.primary,\n\t\t\tcursor: \"default\",\n\t\t},\n\t\tunfilledCircle: {\n\t\t\tbackgroundColor: Colors.panel,\n\t\t},\n\t\tcircle: {\n\t\t\theight: 8,\n\t\t\twidth: 8,\n\t\t\tborderRadius: \"50%\",\n\t\t\tmarginRight: 5,\n\t\t\tcursor: \"pointer\",\n\t\t},\n\t};\n});\n\nexport default function PageIndicators(props) {\n\tconst classNames = useStyles();\n\tlet { step, totalSteps } = props;\n\n\tlet pageIndicators = [];\n\t//MLA if time make this it's own component so it can be reused\n\tfor (let i = 0; i < totalSteps; i++) {\n\t\tconst cls =\n\t\t\tclassNames.circle +\n\t\t\t\" \" +\n\t\t\t(i === step ? classNames.filledCircle : classNames.unfilledCircle);\n\t\tpageIndicators.push(
);\n\t}\n\n\treturn
{pageIndicators}
;\n}\n","import * as React from \"react\";\nimport { GroupStageTeam } from \"common/components/GroupStageTeam/GroupStageTeam\";\nimport { PickTypes } from \"common/constants/PickTypes\";\nimport EventHelper from \"common/helpers/eventHelper/eventHelper\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport { ImageList, ImageListItem, makeStyles } from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\nimport Instructions from \"common/components/Instructions/Instructions\";\nimport PageIndicators from \"common/components/PageIndicators/PageIndicators\";\nimport { connect } from \"common/connect\";\n// eslint-disable-next-line no-unused-vars\nimport { EventFormatData } from \"common/helpers/eventFormatHelper\";\n// eslint-disable-next-line no-unused-vars\nimport { GroupStagePick } from \"common/types/GroupStagePick\";\nimport UserManager from \"common/userManager\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport AccountRequired from \"common/components/Modals/AccountRequired/AccountRequired\";\nimport NameplateButton from \"common/components/NameplateButton\";\nimport { GetCurrentGameId } from \"common/constants/Games\";\n\nconst classStyles = makeStyles((theme) => {\n\treturn {\n\t\trounded: {\n\t\t\tborderTopLeftRadius: theme.shape.borderRadius,\n\t\t\tborderTopRightRadius: theme.shape.borderRadius,\n\t\t\tborderBottomLeftRadius: theme.shape.borderRadius,\n\t\t\tborderBottomRightRadius: theme.shape.borderRadius,\n\t\t},\n\t\tgroupSection: {\n\t\t\tpaddingTop: theme.spacing() * 2,\n\t\t\tpaddingBottom: theme.spacing() * 2,\n\t\t},\n\t\tgridList: {},\n\t\ttopRow: {\n\t\t\ttextAlign: \"center\",\n\t\t\tfontSize: 12,\n\t\t\tmarginTop: 10,\n\t\t\tmarginBottom: 15,\n\t\t},\n\t\tpicks: {\n\t\t\tfloat: \"left\",\n\t\t\tcolor: Colors.primary,\n\t\t\tposition: \"absolute\",\n\t\t},\n\t\tbackgroundPanel: {\n\t\t\tpadding: 3,\n\t\t\tborderRadius: theme.shape.borderRadius,\n\t\t\tbackgroundColor: Colors.panel,\n\t\t},\n\t\tselected: {\n\t\t\tcolor: Colors.primary,\n\t\t},\n\t\tunselected: {\n\t\t\tcolor: Colors.panel,\n\t\t},\n\t\tstepLabel: {\n\t\t\tfontWeight: \"bold\",\n\t\t\tmarginRight: 10,\n\t\t\tcursor: \"pointer\",\n\t\t},\n\t\tbuttonRow: {\n\t\t\tdisplay: \"flex\",\n\t\t\tjustifyContent: \"center\",\n\t\t\tmarginBottom: 12,\n\t\t},\n\t\tnextButton: {\n\t\t\tcolor: Colors.panel,\n\t\t\tbackgroundColor: Colors.primary,\n\t\t\tborderColor: Colors.white,\n\t\t\tborderWidth: 1,\n\t\t\tborderStyle: \"solid\",\n\t\t},\n\t\tbackButton: {\n\t\t\tmarginRight: 5,\n\t\t\tcolor: Colors.white,\n\t\t\tbackgroundColor: Colors.panel,\n\t\t\tborderColor: Colors.white,\n\t\t\tborderWidth: 1,\n\t\t\tborderStyle: \"solid\",\n\t\t},\n\t\tpageIndicators: {\n\t\t\tdisplay: \"flex\",\n\t\t\tjustifyContent: \"center\",\n\t\t\tmarginBottom: 10,\n\t\t\tmarginTop: 10,\n\t\t},\n\t\tfilledCircle: {\n\t\t\tbackgroundColor: Colors.primary,\n\t\t\tcursor: \"default\",\n\t\t},\n\t\tunfilledCircle: {\n\t\t\tbackgroundColor: Colors.panel,\n\t\t},\n\t\tcircle: {\n\t\t\theight: 8,\n\t\t\twidth: 8,\n\t\t\tborderRadius: \"50%\",\n\t\t\tmarginRight: 5,\n\t\t\tcursor: \"pointer\",\n\t\t},\n\t\tnotVisible: {\n\t\t\tvisibility: \"hidden\",\n\t\t},\n\t\ttopLeftEl: {\n\t\t\tposition: \"absolute\",\n\t\t\tzIndex: 10,\n\t\t\tcolor: Colors.white,\n\t\t\ttop: -3,\n\t\t\tleft: -3,\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\tborderTopLeftRadius: 12,\n\t\t\tborderWidth: 24,\n\t\t\tborderStyle: \"solid\",\n\t\t\tborderBottomColor: \"transparent\",\n\t\t\tborderRightColor: \"transparent\",\n\t\t\topacity: 1,\n\t\t},\n\t\ttopLeftElTxt: {\n\t\t\tposition: \"absolute\",\n\t\t\twidth: 25,\n\t\t\ttop: -19,\n\t\t\tleft: -19,\n\t\t},\n\t\tthreeWin: {\n\t\t\tborderTopColor: Colors.primary,\n\t\t\tborderLeftColor: Colors.primary,\n\t\t\tcolor: Colors.greyText,\n\t\t},\n\t\tcorrectThreeWins: {\n\t\t\tborderTopColor: Colors.green,\n\t\t\tborderLeftColor: Colors.green,\n\t\t\tcolor: Colors.panel,\n\t\t},\n\t\tnoWin: {\n\t\t\tborderTopColor: Colors.panel,\n\t\t\tborderLeftColor: Colors.panel,\n\t\t\tcolor: Colors.primary,\n\t\t},\n\t\tcorrectNoWins: {\n\t\t\tborderTopColor: Colors.panel,\n\t\t\tborderLeftColor: Colors.panel,\n\t\t\tcolor: Colors.green,\n\t\t},\n\t};\n});\n\nconst propKeys = {\n\teventData: StoreKeys.EVENT.EVENTDATA,\n\tformat: StoreKeys.EVENT.FORMAT,\n\tisEditing: StoreKeys.EVENT.IS_EDITING,\n\tshowPlayers: StoreKeys.EVENT.SHOW_PLAYERS,\n\tuserGroupPicks: StoreKeys.EVENT.USER.GROUP_PICKS,\n\tofficialGroupPicks: StoreKeys.EVENT.OFFICIAL.GROUP_PICKS,\n\tbracketUser: StoreKeys.EVENT.BRACKET_USER,\n\tstageIndex: StoreKeys.EVENT.STAGE_INDEX,\n\tstep: StoreKeys.EVENT.STEP,\n\tshowOfficial: StoreKeys.EVENT.SHOW_OFFICIAL,\n\tgames: StoreKeys.GAMES,\n};\n\n/**\n * @typedef SwissStageRendererCProps\n * @type {object}\n * @property {any} eventData\n * @property {EventFormatData} format\n * @property {boolean} isEditing\n * @property {boolean} showPlayers\n * @property {GroupStagePick[]} userGroupPicks\n * @property {GroupStagePick[]} officialGroupPicks\n * @property {any} bracketUser\n * @property {number} stageIndex\n * @property {number} step\n * @property {boolean} showOfficial\n * @property {number} width\n * @property {any[]} games\n */\n\n/**\n * @param {SwissStageRendererCProps} props\n */\nfunction SwissStageRendererC({\n\teventData,\n\tformat,\n\tisEditing,\n\tshowPlayers,\n\tuserGroupPicks,\n\tofficialGroupPicks,\n\tbracketUser,\n\tstageIndex,\n\tstep,\n\tshowOfficial,\n\twidth,\n\tgames,\n}) {\n\tconst classNames = classStyles();\n\tconst [showingOfficial, setShowingOfficial] = React.useState(undefined);\n\tconst [bracketUserId, setBracketUserId] = React.useState(undefined);\n\tconst [currentStageId, setCurrentStageId] = React.useState(0);\n\tconst [teamsSelected, setTeamsSelected] = React.useState({\n\t\tadvancing: [],\n\t\tthreeWins: [],\n\t\tnoWins: [],\n\t});\n\tconst currentStage = format.stages[stageIndex];\n\tconst currentEventStage = eventData.eventStages[stageIndex];\n\tconst currentSubstage = eventData.eventStages[stageIndex].eventSubstage[0];\n\tconst gameId = GetCurrentGameId();\n\tconst currentGame = games.find((g) => g.id === gameId);\n\n\tofficialGroupPicks = officialGroupPicks.filter(\n\t\t(ogp) => ogp.eventStageId === currentEventStage.id\n\t);\n\tuserGroupPicks = userGroupPicks.filter(\n\t\t(ugp) => ugp.eventStageId === currentEventStage.id\n\t);\n\n\tReact.useEffect(() => {\n\t\tlet differentUser = bracketUserId !== bracketUser?.userId;\n\t\tlet differentStage = currentStageId !== currentEventStage?.id;\n\t\tif (differentStage) {\n\t\t\tsetCurrentStageId(currentEventStage.id);\n\t\t}\n\n\t\tif (showOfficial !== showingOfficial) {\n\t\t\tsetShowingOfficial(showOfficial);\n\n\t\t\tconst picksToShow = showOfficial ? officialGroupPicks : userGroupPicks;\n\t\t\tsetTeamsSelected({\n\t\t\t\tadvancing: picksToShow\n\t\t\t\t\t.filter((p) => p.pickTypeId === PickTypes.Advancing)\n\t\t\t\t\t.map((p) => p.teamId),\n\t\t\t\tthreeWins: picksToShow\n\t\t\t\t\t.filter((p) => p.pickTypeId === PickTypes.ThreeWins)\n\t\t\t\t\t.map((p) => p.teamId),\n\t\t\t\tnoWins: picksToShow\n\t\t\t\t\t.filter((p) => p.pickTypeId === PickTypes.NoWins)\n\t\t\t\t\t.map((p) => p.teamId),\n\t\t\t});\n\t\t} else if (\n\t\t\tdifferentUser ||\n\t\t\tdifferentStage ||\n\t\t\t(userGroupPicks?.length &&\n\t\t\t\t!teamsSelected?.advancing?.length &&\n\t\t\t\t!teamsSelected?.threeWins?.length &&\n\t\t\t\t!teamsSelected?.noWins?.length)\n\t\t) {\n\t\t\tsetBracketUserId(bracketUser?.userId);\n\t\t\tsetTeamsSelected({\n\t\t\t\tadvancing: userGroupPicks\n\t\t\t\t\t.filter((p) => p.pickTypeId === PickTypes.Advancing)\n\t\t\t\t\t.map((p) => p.teamId),\n\t\t\t\tthreeWins: userGroupPicks\n\t\t\t\t\t.filter((p) => p.pickTypeId === PickTypes.ThreeWins)\n\t\t\t\t\t.map((p) => p.teamId),\n\t\t\t\tnoWins: userGroupPicks\n\t\t\t\t\t.filter((p) => p.pickTypeId === PickTypes.NoWins)\n\t\t\t\t\t.map((p) => p.teamId),\n\t\t\t});\n\t\t}\n\t}, [\n\t\tisEditing,\n\t\tuserGroupPicks,\n\t\tbracketUserId,\n\t\tbracketUser?.id,\n\t\tteamsSelected?.noWins?.length,\n\t\tteamsSelected?.threeWins?.length,\n\t\tteamsSelected?.advancing?.length,\n\t\tshowOfficial,\n\t\tstageIndex,\n\t\tcurrentStageId,\n\t]);\n\n\t/**\n\t *\n\t * @param {number} teamId\n\t * @param {boolean} selected\n\t */\n\tconst toggleNoWin = (teamId, selected) => {\n\t\tlet newAry = [...teamsSelected.noWins];\n\t\tconst countAdvancing = newAry.length;\n\t\tif (selected) {\n\t\t\tif (\n\t\t\t\tcountAdvancing ===\n\t\t\t\tNumber(currentStage.swissStageDetails.cleanSweepLoserCount)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tnewAry.push(teamId);\n\t\t\t\tsetTeamsSelected({\n\t\t\t\t\t...teamsSelected,\n\t\t\t\t\tnoWins: newAry,\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tconst idx = newAry.indexOf(teamId);\n\t\t\tnewAry.splice(idx, 1);\n\t\t\tsetTeamsSelected({\n\t\t\t\t...teamsSelected,\n\t\t\t\tnoWins: newAry,\n\t\t\t});\n\t\t}\n\t};\n\t/**\n\t *\n\t * @param {number} teamId\n\t * @param {boolean} selected\n\t */\n\tconst toggleThreeWin = (teamId, selected) => {\n\t\tlet newAry = [...teamsSelected.threeWins];\n\t\tconst countAdvancing = newAry.length;\n\t\tif (selected) {\n\t\t\tif (\n\t\t\t\tcountAdvancing ===\n\t\t\t\tNumber(currentStage.swissStageDetails.cleanSweepWinnerCount)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tnewAry.push(teamId);\n\t\t\t\tsetTeamsSelected({\n\t\t\t\t\t...teamsSelected,\n\t\t\t\t\tthreeWins: newAry,\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tconst idx = newAry.indexOf(teamId);\n\t\t\tnewAry.splice(idx, 1);\n\t\t\tsetTeamsSelected({\n\t\t\t\t...teamsSelected,\n\t\t\t\tthreeWins: newAry,\n\t\t\t});\n\t\t}\n\t};\n\t/**\n\t *\n\t * @param {number} teamId\n\t * @param {boolean} isAdvancing\n\t */\n\tconst toggleAdvancing = (teamId, isAdvancing) => {\n\t\tif (!UserManager.isLoggedIn()) {\n\t\t\tModalHelper.openModal();\n\t\t\treturn;\n\t\t}\n\n\t\tlet newAry = [...teamsSelected.advancing];\n\t\tconst countAdvancing = newAry.length;\n\t\tif (isAdvancing) {\n\t\t\tif (\n\t\t\t\tcountAdvancing >= Number(currentStage.swissStageDetails.advancingCount)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tconst noWinTeams = teamsSelected.noWins;\n\t\t\t\tconst noneIdx = noWinTeams.indexOf(teamId);\n\t\t\t\tif (noneIdx > -1) {\n\t\t\t\t\tnoWinTeams.splice(noneIdx, 1);\n\t\t\t\t}\n\t\t\t\tnewAry.push(teamId);\n\t\t\t\tsetTeamsSelected({\n\t\t\t\t\t...teamsSelected,\n\t\t\t\t\tnoWins: noWinTeams,\n\t\t\t\t\tadvancing: newAry,\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tconst threeWinTeams = teamsSelected.threeWins;\n\t\t\tconst threeIdx = threeWinTeams.indexOf(teamId);\n\t\t\tif (threeIdx > -1) {\n\t\t\t\tthreeWinTeams.splice(threeIdx, 1);\n\t\t\t}\n\t\t\tconst idx = newAry.indexOf(teamId);\n\t\t\tnewAry.splice(idx, 1);\n\t\t\tsetTeamsSelected({\n\t\t\t\t...teamsSelected,\n\t\t\t\tthreeWins: threeWinTeams,\n\t\t\t\tadvancing: newAry,\n\t\t\t});\n\t\t}\n\t};\n\n\tconst teamClicked = (teamId, selected) => {\n\t\tif (step === 0) {\n\t\t\ttoggleAdvancing(teamId, selected);\n\t\t}\n\t\tif (step === 1) {\n\t\t\ttoggleThreeWin(teamId, selected);\n\t\t}\n\t\tif (step === 2) {\n\t\t\ttoggleNoWin(teamId, selected);\n\t\t}\n\t};\n\n\tconst renderTeam = (index, team) => {\n\t\tconst isAdvancing = teamsSelected.advancing.indexOf(team.id) > -1;\n\t\tconst notVisible =\n\t\t\tisEditing &&\n\t\t\t((step === 1 && teamsSelected.advancing.indexOf(team.id) < 0) ||\n\t\t\t\t(step === 2 && teamsSelected.advancing.indexOf(team.id) > -1));\n\t\tlet className = [classNames.groupSection, classNames.rounded];\n\t\tif (notVisible) {\n\t\t\tclassName.push(classNames.notVisible);\n\t\t}\n\n\t\tlet selected = false;\n\t\tlet topLeftEl = null;\n\t\tconst inThreeWin = teamsSelected.threeWins.indexOf(team.id) > -1;\n\t\tconst inNoWin = teamsSelected.noWins.indexOf(team.id) > -1;\n\n\t\tif (!isEditing) {\n\t\t\tif (inThreeWin) {\n\t\t\t\tconst correct =\n\t\t\t\t\t!showOfficial &&\n\t\t\t\t\tofficialGroupPicks.filter(\n\t\t\t\t\t\t(pick) =>\n\t\t\t\t\t\t\tpick.pickTypeId === PickTypes.ThreeWins && pick.teamId === team.id\n\t\t\t\t\t).length > 0;\n\t\t\t\ttopLeftEl = (\n\t\t\t\t\t\n\t\t\t\t\t\t3-0\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t} else if (inNoWin) {\n\t\t\t\tconst correct =\n\t\t\t\t\t!showOfficial &&\n\t\t\t\t\tofficialGroupPicks.filter(\n\t\t\t\t\t\t(pick) =>\n\t\t\t\t\t\t\tpick.pickTypeId === PickTypes.NoWins && pick.teamId === team.id\n\t\t\t\t\t).length > 0;\n\t\t\t\ttopLeftEl = (\n\t\t\t\t\t\n\t\t\t\t\t\t0-3\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tswitch (step) {\n\t\t\t\tcase 0:\n\t\t\t\t\tselected = isAdvancing;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tconst inThreeWin = teamsSelected.threeWins.indexOf(team.id) > -1;\n\t\t\t\t\tselected = inThreeWin;\n\t\t\t\t\tif (inThreeWin) {\n\t\t\t\t\t\ttopLeftEl = (\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t3-0\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tconst inNoWin = teamsSelected.noWins.indexOf(team.id) > -1;\n\t\t\t\t\tselected = inNoWin;\n\t\t\t\t\tif (inNoWin) {\n\t\t\t\t\t\ttopLeftEl = (\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t0-3\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn (\n\t\t\t\n\t\t\t\t {\n\t\t\t\t\t\tif (!isEditing) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tteamClicked(teamId, !selected);\n\t\t\t\t\t}}\n\t\t\t\t\ttoggleEliminated={(teamId) => {\n\t\t\t\t\t\tif (!isEditing) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tteamClicked(teamId, !selected);\n\t\t\t\t\t}}\n\t\t\t\t\ttopLeftEl={topLeftEl}\n\t\t\t\t\tisEditing={isEditing}\n\t\t\t\t\tshowPlayers={showPlayers}\n\t\t\t\t\tofficialGroupPicks={officialGroupPicks}\n\t\t\t\t\tshowOfficial={showOfficial}\n\t\t\t\t/>\n\t\t\t\n\t\t);\n\t};\n\n\tconst getInstructions = () => {\n\t\tswitch (step) {\n\t\t\tcase 0:\n\t\t\t\treturn `PICK THE ${currentStage.swissStageDetails.advancingCount} ${\n\t\t\t\t\tcurrentStage.swissStageDetails.advancingCount > 1 ? \"TEAMS\" : \"TEAM\"\n\t\t\t\t} ADVANCING TO NEXT STAGE`;\n\t\t\tcase 1:\n\t\t\t\treturn `PICK THE ${\n\t\t\t\t\tcurrentStage.swissStageDetails.cleanSweepWinnerCount\n\t\t\t\t} ${\n\t\t\t\t\tcurrentStage.swissStageDetails.cleanSweepWinnerCount > 1\n\t\t\t\t\t\t? \"TEAMS\"\n\t\t\t\t\t\t: \"TEAM\"\n\t\t\t\t} ADVANCING UNDEFEATED 3-0`;\n\t\t\tcase 2:\n\t\t\t\treturn `PICK THE ${\n\t\t\t\t\tcurrentStage.swissStageDetails.cleanSweepLoserCount\n\t\t\t\t} ${\n\t\t\t\t\tcurrentStage.swissStageDetails.cleanSweepLoserCount > 1\n\t\t\t\t\t\t? \"TEAMS\"\n\t\t\t\t\t\t: \"TEAM\"\n\t\t\t\t} THAT WILL BE ELIMINATED 0-3`;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tconst persistStateToStore = async () => {\n\t\t// Get prexisting picks.\n\t\t/** @type {GroupStagePick[]} */\n\t\tconst finalPicks = Store.get(StoreKeys.EVENT.USER.GROUP_PICKS).filter(\n\t\t\t(ugp) => ugp.eventStageId !== currentEventStage.id\n\t\t);\n\n\t\tfor (const advancingTeamId of teamsSelected.advancing) {\n\t\t\tfinalPicks.push({\n\t\t\t\tteamId: advancingTeamId,\n\t\t\t\tpickTypeId: PickTypes.Advancing,\n\t\t\t\teventStageId: currentEventStage.id,\n\t\t\t\teventSubstageId: currentSubstage.id,\n\t\t\t});\n\t\t}\n\t\tfor (const threeWinTeamId of teamsSelected.threeWins) {\n\t\t\tfinalPicks.push({\n\t\t\t\tteamId: threeWinTeamId,\n\t\t\t\tpickTypeId: PickTypes.ThreeWins,\n\t\t\t\teventStageId: currentEventStage.id,\n\t\t\t\teventSubstageId: currentSubstage.id,\n\t\t\t});\n\t\t}\n\t\tfor (const noWinTeamId of teamsSelected.noWins) {\n\t\t\tfinalPicks.push({\n\t\t\t\tteamId: noWinTeamId,\n\t\t\t\tpickTypeId: PickTypes.NoWins,\n\t\t\t\teventStageId: currentEventStage.id,\n\t\t\t\teventSubstageId: currentSubstage.id,\n\t\t\t});\n\t\t}\n\n\t\tStore.set(StoreKeys.EVENT.USER.GROUP_PICKS, finalPicks);\n\t};\n\n\tconst calculateNextStep = () => {\n\t\tlet nextStep = step;\n\n\t\t// Moving from Pick Advancing\n\t\tif (step === 0) {\n\t\t\tif (Number(currentStage.swissStageDetails.cleanSweepWinnerCount) > 0) {\n\t\t\t\tnextStep = 1;\n\t\t\t} else if (\n\t\t\t\tNumber(currentStage.swissStageDetails.cleanSweepLoserCount) > 0\n\t\t\t) {\n\t\t\t\tnextStep = 2;\n\t\t\t} else {\n\t\t\t\tnextStep = 3;\n\t\t\t}\n\t\t} else if (step === 1) {\n\t\t\tif (Number(currentStage.swissStageDetails.cleanSweepLoserCount) > 0) {\n\t\t\t\tnextStep = 2;\n\t\t\t} else {\n\t\t\t\tnextStep = 3;\n\t\t\t}\n\t\t} else if (step === 2) {\n\t\t\tnextStep = 3;\n\t\t}\n\n\t\treturn nextStep;\n\t};\n\n\tconst next = () => {\n\t\tlet nextStep = calculateNextStep();\n\n\t\tlet maxStep = 3;\n\t\tif (nextStep === maxStep) {\n\t\t\tpersistStateToStore();\n\t\t\tEventHelper.submitPicks(currentGame).then(() => {\n\t\t\t\tconst updates = {};\n\t\t\t\tupdates[StoreKeys.EVENT.IS_EDITING] = false;\n\t\t\t\tupdates[StoreKeys.EVENT.STEP] = 0;\n\t\t\t\tStore.setMany(updates);\n\t\t\t});\n\t\t} else {\n\t\t\tif (nextStep > maxStep) {\n\t\t\t\tnextStep = maxStep;\n\t\t\t}\n\t\t\tStore.set(StoreKeys.EVENT.STEP, nextStep);\n\t\t}\n\t};\n\n\tconst back = () => {\n\t\tlet backStep = step - 1;\n\t\tif (backStep < 0) {\n\t\t\tbackStep = 0;\n\t\t}\n\t\tStore.set(StoreKeys.EVENT.STEP, backStep);\n\t};\n\n\tconst nextIsDisabled = () => {\n\t\tif (step === 0) {\n\t\t\treturn (\n\t\t\t\tteamsSelected.advancing.length <\n\t\t\t\tNumber(currentStage.swissStageDetails.advancingCount)\n\t\t\t);\n\t\t} else if (step === 1) {\n\t\t\treturn (\n\t\t\t\tteamsSelected.threeWins.length <\n\t\t\t\tNumber(currentStage.swissStageDetails.cleanSweepWinnerCount)\n\t\t\t);\n\t\t} else if (step === 2) {\n\t\t\treturn (\n\t\t\t\tteamsSelected.noWins.length <\n\t\t\t\tNumber(currentStage.swissStageDetails.cleanSweepLoserCount)\n\t\t\t);\n\t\t}\n\t\treturn false;\n\t};\n\n\tconst nextDisabled = nextIsDisabled();\n\tconst isSubmit = calculateNextStep() === 3;\n\tconst nextText = calculateNextStep() === 3 ? \"SUBMIT\" : \"NEXT\";\n\tconst teams = eventData.teams.filter(\n\t\t(t) => t.eventSubstageId === currentSubstage.id\n\t);\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{teams.map((team, index) => renderTeam(index, team))}\n\t\t\t\t\t\n\t\t\t\t\t{isEditing && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\n\t\t\n\t);\n}\n\nexport default function SwissStageRenderer(props) {\n\treturn connect(, propKeys, props);\n}\n","import { GroupStageTeam } from \"common/components/GroupStageTeam/GroupStageTeam\";\nimport { PickTypes } from \"common/constants/PickTypes\";\nimport EventHelper from \"common/helpers/eventHelper/eventHelper\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport React from \"react\";\nimport { Grid, makeStyles } from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\nimport Instructions from \"common/components/Instructions/Instructions\";\nimport _ from \"lodash\";\n// eslint-disable-next-line no-unused-vars\nimport { EventFormatData } from \"common/helpers/eventFormatHelper\";\n// eslint-disable-next-line no-unused-vars\nimport { GroupStagePick } from \"common/types/GroupStagePick\";\nimport PageIndicators from \"common/components/PageIndicators/PageIndicators\";\nimport { connect } from \"common/connect\";\nimport UserManager from \"common/userManager\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport AccountRequired from \"common/components/Modals/AccountRequired/AccountRequired\";\nimport NameplateButton from \"common/components/NameplateButton\";\nimport { GetCurrentGameId } from \"common/constants/Games\";\n\nconst classStyles = makeStyles((theme) => {\n\treturn {\n\t\trounded: {\n\t\t\tborderTopLeftRadius: theme.shape.borderRadius,\n\t\t\tborderTopRightRadius: theme.shape.borderRadius,\n\t\t\tborderBottomLeftRadius: theme.shape.borderRadius,\n\t\t\tborderBottomRightRadius: theme.shape.borderRadius,\n\t\t},\n\t\tgroupSection: {\n\t\t\twidth: 96,\n\t\t\tbackgroundColor: Colors.panelLight,\n\t\t\tpaddingTop: theme.spacing(),\n\t\t\tpaddingBottom: theme.spacing(),\n\t\t\ttextAlign: \"center\",\n\n\t\t\t\"& label\": {\n\t\t\t\tpaddingBottom: theme.spacing(),\n\t\t\t},\n\t\t},\n\t\tgroupTeam: {\n\t\t\tpaddingTop: 2,\n\t\t\tpaddingBottom: 2,\n\t\t},\n\t\tgroupStageItem: {\n\t\t\tmargin: 4,\n\t\t},\n\t\ttopLeftEl: {\n\t\t\tposition: \"absolute\",\n\t\t\tzIndex: 10,\n\t\t\tcolor: Colors.white,\n\t\t\ttop: -3,\n\t\t\tleft: -3,\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\tborderTopLeftRadius: 12,\n\t\t\tborderWidth: 24,\n\t\t\tborderStyle: \"solid\",\n\t\t\tborderBottomColor: \"transparent\",\n\t\t\tborderRightColor: \"transparent\",\n\t\t\topacity: 1,\n\t\t},\n\t\ttopLeftElTxt: {\n\t\t\tposition: \"absolute\",\n\t\t\tfontSize: 14,\n\t\t\tfontWeight: 500,\n\t\t\twidth: 25,\n\t\t\ttop: -18,\n\t\t\tleft: -20,\n\t\t},\n\t\tthreeWin: {\n\t\t\tborderTopColor: Colors.primary,\n\t\t\tborderLeftColor: Colors.primary,\n\t\t\tcolor: Colors.greyText,\n\t\t},\n\t\tbuttonRow: {\n\t\t\tdisplay: \"flex\",\n\t\t\tjustifyContent: \"center\",\n\t\t\tmarginBottom: 12,\n\t\t},\n\t};\n});\n\nconst propKeys = {\n\teventData: StoreKeys.EVENT.EVENTDATA,\n\tformat: StoreKeys.EVENT.FORMAT,\n\tisEditing: StoreKeys.EVENT.IS_EDITING,\n\tshowPlayers: StoreKeys.EVENT.SHOW_PLAYERS,\n\tuserGroupPicks: StoreKeys.EVENT.USER.GROUP_PICKS,\n\tofficialGroupPicks: StoreKeys.EVENT.OFFICIAL.GROUP_PICKS,\n\tbracketUser: StoreKeys.EVENT.BRACKET_USER,\n\tstageIndex: StoreKeys.EVENT.STAGE_INDEX,\n\tstep: StoreKeys.EVENT.STEP,\n\tshowOfficial: StoreKeys.EVENT.SHOW_OFFICIAL,\n\tgames: StoreKeys.GAMES,\n};\n\n/**\n * @typedef GroupStageRendererCProps\n * @type {object}\n * @property {any} eventData\n * @property {EventFormatData} format\n * @property {boolean} isEditing\n * @property {boolean} showPlayers\n * @property {GroupStagePick[]} userGroupPicks\n * @property {GroupStagePick[]} officialGroupPicks\n * @property {any} bracketUser\n * @property {number} stageIndex\n * @property {number} step\n * @property {bool} showOfficial\n * @property {number} width\n * @property {any[]} games\n */\n\n/**\n * @param {GroupStageRendererCProps} props\n */\nfunction GroupStageRendererC({\n\teventData,\n\tformat,\n\tisEditing,\n\tshowPlayers,\n\tuserGroupPicks,\n\tofficialGroupPicks,\n\tbracketUser,\n\tstageIndex,\n\tstep,\n\tshowOfficial,\n\twidth,\n\tgames,\n}) {\n\tconst classNames = classStyles();\n\tconst currentStage = format.stages[stageIndex];\n\tconst currentEventStage = eventData.eventStages[stageIndex];\n\tconst groups = _.uniq(\n\t\t_.orderBy(\n\t\t\teventData.teams\n\t\t\t\t.filter((et) => et.eventStageId === currentEventStage.id)\n\t\t\t\t.map((team) => team.group)\n\t\t)\n\t);\n\tconst gameId = GetCurrentGameId();\n\tconst currentGame = games.find((g) => g.id === gameId);\n\n\tofficialGroupPicks = officialGroupPicks.filter(\n\t\t(ogp) => ogp.eventStageId === currentEventStage.id\n\t);\n\tuserGroupPicks = userGroupPicks.filter(\n\t\t(ugp) => ugp.eventStageId === currentEventStage.id\n\t);\n\n\tfor (const pick of userGroupPicks) {\n\t\tpick.group = currentEventStage.eventSubstage.find(\n\t\t\t(ess) => ess.id === pick.eventSubstageId\n\t\t)?.title;\n\t}\n\n\tconst updateGroupPicks = (groupPicks) => {\n\t\t/** @type {GroupStagePick[]} */\n\t\tlet finalPicks = Store.get(StoreKeys.EVENT.USER.GROUP_PICKS) ?? [];\n\t\tfinalPicks = finalPicks.filter(\n\t\t\t(p) => p.eventStageId !== currentEventStage.id\n\t\t);\n\t\tconst concatPicks = finalPicks.concat(groupPicks);\n\t\tStore.set(StoreKeys.EVENT.USER.GROUP_PICKS, finalPicks.concat(concatPicks));\n\t};\n\n\t/**\n\t *\n\t * @param {number} teamId\n\t * @param {boolean} isAdvancing\n\t */\n\tconst toggleAdvancing = (group, teamId, isAdvancing) => {\n\t\tif (!UserManager.isLoggedIn()) {\n\t\t\tModalHelper.openModal();\n\t\t\treturn;\n\t\t}\n\t\tif (!isEditing) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst eventSubstageId = currentEventStage.eventSubstage.find(\n\t\t\t(ess) => ess.title === group\n\t\t)?.id;\n\n\t\t/** @type {GroupStagePick[]} */\n\t\tlet groupStagePicks = userGroupPicks;\n\t\tconst countAdvancing = groupStagePicks.filter(\n\t\t\t(gsp) => gsp.group === group && gsp.pickTypeId === PickTypes.Advancing\n\t\t).length;\n\t\tif (isAdvancing) {\n\t\t\tif (\n\t\t\t\tcountAdvancing ===\n\t\t\t\tNumber(\n\t\t\t\t\tcurrentStage.groupStageDetails.advancingCount ??\n\t\t\t\t\t\tcurrentStage.groupStageDetails.totalAdvancing\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tgroupStagePicks.push({\n\t\t\t\t\tuserId: null,\n\t\t\t\t\teventId: null,\n\t\t\t\t\teventStageId: currentEventStage.id,\n\t\t\t\t\teventSubstageId,\n\t\t\t\t\tteamId,\n\t\t\t\t\tpickTypeId: PickTypes.Advancing,\n\t\t\t\t\tgroup,\n\t\t\t\t});\n\t\t\t\tupdateGroupPicks(groupStagePicks);\n\t\t\t}\n\t\t} else {\n\t\t\tgroupStagePicks = groupStagePicks.filter(\n\t\t\t\t(gsp) =>\n\t\t\t\t\t!(gsp.teamId === teamId && gsp.pickTypeId === PickTypes.Advancing)\n\t\t\t);\n\n\t\t\tgroupStagePicks = groupStagePicks.filter(\n\t\t\t\t(gsp) =>\n\t\t\t\t\t!(gsp.teamId === teamId && gsp.pickTypeId === PickTypes.TopTeam)\n\t\t\t);\n\n\t\t\tgroupStagePicks = groupStagePicks.filter(\n\t\t\t\t(gsp) =>\n\t\t\t\t\t!(gsp.teamId === teamId && gsp.pickTypeId === PickTypes.SecondTeam)\n\t\t\t);\n\n\t\t\tupdateGroupPicks(groupStagePicks);\n\t\t}\n\t};\n\n\t/**\n\t *\n\t * @param {string} group\n\t * @param {number} teamId\n\t * @param {boolean} isTopTeam\n\t */\n\tconst toggleTopTeam = (group, teamId, isTopTeam) => {\n\t\tconst eventSubstageId = currentEventStage.eventSubstage.find(\n\t\t\t(ess) => ess.title === group\n\t\t)?.id;\n\n\t\tif (!isEditing) {\n\t\t\treturn;\n\t\t}\n\n\t\t/** @type {GroupStagePick[]} */\n\t\tconst countTopTeam = userGroupPicks.filter(\n\t\t\t(gsp) => gsp.group === group && gsp.pickTypeId === PickTypes.TopTeam\n\t\t).length;\n\n\t\tif (isTopTeam) {\n\t\t\tif (countTopTeam === 1) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\t// Add the 1st team pick.\n\t\t\t\tuserGroupPicks.push({\n\t\t\t\t\tuserId: null,\n\t\t\t\t\teventId: null,\n\t\t\t\t\teventStageId: currentEventStage.id,\n\t\t\t\t\teventSubstageId,\n\t\t\t\t\tteamId,\n\t\t\t\t\tpickTypeId: PickTypes.TopTeam,\n\t\t\t\t\tgroup,\n\t\t\t\t});\n\n\t\t\t\t// If the team is flagged as second, remove it\n\t\t\t\tuserGroupPicks = userGroupPicks.filter(\n\t\t\t\t\t(gsp) =>\n\t\t\t\t\t\t!(gsp.teamId === teamId && gsp.pickTypeId === PickTypes.SecondTeam)\n\t\t\t\t);\n\n\t\t\t\tupdateGroupPicks(userGroupPicks);\n\t\t\t}\n\t\t} else {\n\t\t\tuserGroupPicks = userGroupPicks.filter(\n\t\t\t\t(gsp) =>\n\t\t\t\t\t!(gsp.teamId === teamId && gsp.pickTypeId === PickTypes.TopTeam)\n\t\t\t);\n\t\t\tupdateGroupPicks(userGroupPicks);\n\t\t}\n\t};\n\n\t/**\n\t *\n\t * @param {string} group\n\t * @param {number} teamId\n\t * @param {boolean} isSecondTeam\n\t */\n\tconst toggleSecondTeam = (group, teamId, isSecondTeam) => {\n\t\tconst eventSubstageId = currentEventStage.eventSubstage.find(\n\t\t\t(ess) => ess.title === group\n\t\t)?.id;\n\n\t\tif (!isEditing) {\n\t\t\treturn;\n\t\t}\n\n\t\t/** @type {GroupStagePick[]} */\n\t\tconst countSecondTeam = userGroupPicks.filter(\n\t\t\t(gsp) => gsp.group === group && gsp.pickTypeId === PickTypes.SecondTeam\n\t\t).length;\n\n\t\tconst isAlreadyFirstTeam = !!userGroupPicks.find(\n\t\t\t(gsp) => gsp.teamId === teamId && gsp.pickTypeId === PickTypes.TopTeam\n\t\t);\n\n\t\tif (isSecondTeam) {\n\t\t\tif (isAlreadyFirstTeam || countSecondTeam === 1) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tuserGroupPicks.push({\n\t\t\t\t\tuserId: null,\n\t\t\t\t\teventId: null,\n\t\t\t\t\teventStageId: currentEventStage.id,\n\t\t\t\t\teventSubstageId,\n\t\t\t\t\tteamId,\n\t\t\t\t\tpickTypeId: PickTypes.SecondTeam,\n\t\t\t\t\tgroup,\n\t\t\t\t});\n\t\t\t\tupdateGroupPicks(userGroupPicks);\n\t\t\t}\n\t\t} else {\n\t\t\tuserGroupPicks = userGroupPicks.filter(\n\t\t\t\t(gsp) =>\n\t\t\t\t\t!(gsp.teamId === teamId && gsp.pickTypeId === PickTypes.SecondTeam)\n\t\t\t);\n\t\t\tupdateGroupPicks(userGroupPicks);\n\t\t}\n\t};\n\n\tconst renderGroup = (index, group) => {\n\t\treturn (\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t{eventData.teams\n\t\t\t\t\t\t.filter((team) => team.group === group)\n\t\t\t\t\t\t.map((team, index) => renderTeam(index, group, team))}\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t};\n\n\tconst renderTeam = (index, group, team) => {\n\t\tconst notAdvancing =\n\t\t\tuserGroupPicks.filter(\n\t\t\t\t(gsp) =>\n\t\t\t\t\t!(gsp.teamId === team.id && gsp.pickTypeId === PickTypes.Advancing)\n\t\t\t).length === 0;\n\t\tconst notVisible = isEditing && step === 1 && notAdvancing;\n\t\tlet className = [classNames.groupSection, classNames.rounded];\n\t\tif (notVisible) {\n\t\t\tclassName.push(classNames.notVisible);\n\t\t}\n\n\t\tconst picksToView = showOfficial ? officialGroupPicks : userGroupPicks;\n\n\t\tconst isAdvancing =\n\t\t\tpicksToView.find(\n\t\t\t\t(gsp) =>\n\t\t\t\t\tgsp.teamId === team.id && gsp.pickTypeId === PickTypes.Advancing\n\t\t\t) != null;\n\t\tconst isTopTeam =\n\t\t\tpicksToView.find(\n\t\t\t\t(gsp) => gsp.teamId === team.id && gsp.pickTypeId === PickTypes.TopTeam\n\t\t\t) != null;\n\t\tconst isSecondTeam =\n\t\t\tpicksToView.find(\n\t\t\t\t(gsp) =>\n\t\t\t\t\tgsp.teamId === team.id && gsp.pickTypeId === PickTypes.SecondTeam\n\t\t\t) != null;\n\n\t\tconst topLeftEl = isTopTeam ? (\n\t\t\t
\n\t\t\t\t1st\n\t\t\t
\n\t\t) : isSecondTeam ? (\n\t\t\t
\n\t\t\t\t2nd\n\t\t\t
\n\t\t) : (\n\t\t\t<>\n\t\t);\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\ttoggleAdvancing(group, teamId, !isAdvancing)\n\t\t\t\t\t}\n\t\t\t\t\ttoggleTopTeam={(teamId) => toggleTopTeam(group, teamId, !isTopTeam)}\n\t\t\t\t\ttoggleSecondTeam={(teamId) =>\n\t\t\t\t\t\ttoggleSecondTeam(group, teamId, !isSecondTeam)\n\t\t\t\t\t}\n\t\t\t\t\ttopLeftEl={topLeftEl}\n\t\t\t\t\tisEditing={isEditing}\n\t\t\t\t\tshowPlayers={showPlayers}\n\t\t\t\t\tofficialGroupPicks={officialGroupPicks}\n\t\t\t\t\tshowOfficial={showOfficial}\n\t\t\t\t/>\n\t\t\t
\n\t\t);\n\t};\n\n\tconst next = () => {\n\t\tlet nextStep = step + 1;\n\t\tlet maxStep = currentStage.groupStageDetails.scoreSecondPlace\n\t\t\t? 3\n\t\t\t: currentStage.groupStageDetails.scoreFirstPlace\n\t\t\t? 2\n\t\t\t: 1;\n\t\tif (nextStep === maxStep) {\n\t\t\tEventHelper.submitPicks(currentGame).then(() => {\n\t\t\t\tconst updates = {};\n\t\t\t\tupdates[StoreKeys.EVENT.IS_EDITING] = false;\n\t\t\t\tupdates[StoreKeys.EVENT.STEP] = 0;\n\t\t\t\tStore.setMany(updates);\n\t\t\t});\n\t\t} else {\n\t\t\tif (nextStep > maxStep) {\n\t\t\t\tnextStep = maxStep;\n\t\t\t}\n\t\t\tStore.set(StoreKeys.EVENT.STEP, nextStep);\n\t\t}\n\t};\n\n\tconst back = () => {\n\t\tlet backStep = step - 1;\n\t\tif (backStep < 0) {\n\t\t\tbackStep = 0;\n\t\t}\n\t\tStore.set(StoreKeys.EVENT.STEP, backStep);\n\t};\n\n\tconst nextIsDisabled = (groups) => {\n\t\tif (step === 0) {\n\t\t\tfor (let group of groups) {\n\t\t\t\tconst countAdvancing = userGroupPicks.filter(\n\t\t\t\t\t(gsp) => gsp.group === group && gsp.pickTypeId === PickTypes.Advancing\n\t\t\t\t).length;\n\n\t\t\t\tif (\n\t\t\t\t\tcountAdvancing <\n\t\t\t\t\tNumber(\n\t\t\t\t\t\tcurrentStage.groupStageDetails.advancingCount ??\n\t\t\t\t\t\t\tcurrentStage.groupStageDetails.totalAdvancing\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (step === 1) {\n\t\t\tfor (let group of groups) {\n\t\t\t\tconst countTopTeam = userGroupPicks.filter(\n\t\t\t\t\t(gsp) => gsp.group === group && gsp.pickTypeId === PickTypes.TopTeam\n\t\t\t\t).length;\n\n\t\t\t\tif (countTopTeam < 1) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (step === 2) {\n\t\t\tfor (let group of groups) {\n\t\t\t\tconst countSecondTeam = userGroupPicks.filter(\n\t\t\t\t\t(gsp) =>\n\t\t\t\t\t\tgsp.group === group && gsp.pickTypeId === PickTypes.SecondTeam\n\t\t\t\t).length;\n\n\t\t\t\tif (countSecondTeam < 1) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\tconst getInstructions = () => {\n\t\tswitch (step) {\n\t\t\tcase 0:\n\t\t\t\treturn `PICK THE ${\n\t\t\t\t\tcurrentStage.groupStageDetails.advancingCount ??\n\t\t\t\t\tcurrentStage.groupStageDetails.totalAdvancing\n\t\t\t\t} TEAMS ADVANCING FROM EACH GROUP`;\n\t\t\tcase 1:\n\t\t\t\treturn \"PICK THE TOP TEAM FROM EACH GROUP\";\n\t\t\tcase 2:\n\t\t\t\treturn \"PICK THE SECOND PLACE TEAM FROM EACH GROUP\";\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn \"\";\n\t};\n\n\tconst calculateNextStep = () => {\n\t\tlet nextStep = step;\n\n\t\t// Moving from Pick Advancing\n\t\tif (step === 0) {\n\t\t\tif (currentStage.groupStageDetails.scoreFirstPlace) {\n\t\t\t\tnextStep = 1;\n\t\t\t} else {\n\t\t\t\tnextStep = 3;\n\t\t\t}\n\t\t}\n\t\t// Moving from Pick First Place\n\t\telse if (step === 1) {\n\t\t\tif (currentStage.groupStageDetails.scoreSecondPlace) {\n\t\t\t\tnextStep = 2;\n\t\t\t} else {\n\t\t\t\tnextStep = 3;\n\t\t\t}\n\t\t}\n\n\t\treturn nextStep;\n\t};\n\n\tconst isSubmit = calculateNextStep() === 3;\n\tconst nextText = isSubmit ? \"SUBMIT\" : \"NEXT\";\n\tconst nextDisabled = nextIsDisabled(groups);\n\tconst steps = currentStage.groupStageDetails.scoreSecondPlace\n\t\t? 3\n\t\t: currentStage.groupStageDetails.scoreFirstPlace\n\t\t? 2\n\t\t: 1;\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t{groups.length > 1 && (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{groups.map((group, index) => renderGroup(index, group))}\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t{isEditing && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\n\t\t\n\t);\n}\n\nexport default function GroupStageRenderer(props) {\n\treturn connect(, propKeys, props);\n}\n","import React from \"react\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalHeader,\n\tModalBody,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport {\n\tGetCurrentGamePrefix\n} from \"common/constants/Games\";\nimport { changeUrl } from \"../../../history\";\nimport ModalHelper from \"../../../helpers/modalHelper\";\n\nexport default function SurveyForPicksModal(props) {\n\tconst targetUrl = `${GetCurrentGamePrefix()}/survey`;\n\tconst onClick = (e) => {\n\t\te.preventDefault();\n\n\t\tModalHelper.closeModal();\n\t\tchangeUrl(targetUrl);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{props.header ?? \"Survey Based Picks\"}\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\tA Survey will be used for this stage.\n\t\t\t\t\t\tTo make your picks Click Here\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n","import * as React from \"react\";\nimport { connect } from \"common/connect\";\nimport StoreKeys from \"common/storeKeys\";\nimport styled from \"styled-components\";\nimport { Colors } from \"styles/Colors\";\nimport Store from \"common/store\";\n// eslint-disable-next-line no-unused-vars\nimport { EventFormatData } from \"common/helpers/eventFormatHelper\";\nimport { EventStageTypes } from \"common/constants/EventStageTypes\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport SurveyForPicksModal from \"common/components/Modals/SurveyForPicksModal/SurveyForPicksModal\";\n\nconst propKeys = {\n\teventData: StoreKeys.EVENT.EVENTDATA,\n\tformat: StoreKeys.EVENT.FORMAT,\n\tstageIndex: StoreKeys.EVENT.STAGE_INDEX,\n\tsubstageIndex: StoreKeys.EVENT.SUBSTAGE_INDEX,\n};\n\n/**\n * @typedef StageSelectorCProps\n * @type {object}\n * @property {any} eventData\n * @property {EventFormatData} format\n * @property {number} stageIndex\n * @property {number} substageIndex\n */\n\nconst StageLabel = styled.label`\n\tmargin: auto;\n`;\n\nconst StageButton = styled.div`\n\tdisplay: flex;\n\twidth: 100px;\n\tmargin: 4px;\n\tpadding: 4px;\n\tborder-radius: 12px;\n\ttext-align: center;\n\tpadding: 4px;\n\tword-spacing: 9999px;\n\tbackground: ${({ selected }) => (selected ? Colors.primary : Colors.panel)};\n\tcolor: ${({ selected, unlocked }) =>\n\t\tselected\n\t\t\t? Colors.panel\n\t\t\t: unlocked\n\t\t\t? Colors.primary\n\t\t\t: Colors.panelLighterColor};\n\tcursor: ${({ unlocked }) => (unlocked ? \"pointer\" : \"default\")};\n\tfont-weight: 400;\n\toverflow-wrap: break-word;\n\talign-content: center;\n\tjustify-content: center;\n\n\t${StageLabel} {\n\t\tcursor: ${({ unlocked }) => (unlocked ? \"pointer\" : \"default\")};\n\t}\n`;\n\n/**\n * @param {StageSelectorCProps} props\n */\nfunction StageSelectorC({ eventData, format, stageIndex, substageIndex }) {\n\t// For RL 2024 Finals, force into the swiss stage.\n\tif (eventData.id === 104) {\n\t\tstageIndex = 0;\n\t}\n\n\tconst currentStage = format.stages[stageIndex];\n\t/** @type {EventStage} */\n\tconst currentEventStage = eventData.eventStages[stageIndex];\n\n\tif (format.stages.length <= 1) {\n\t\treturn <>;\n\t}\n\n\tconst changeStage = (i) => {\n\t\tif (i === stageIndex) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If the playoffs are selected, prompt the survey will be used modal.\n\t\tif (eventData.id === 104 && i === 1) {\n\t\t\tModalHelper.openModal()\n\t\t}\n\n\t\tif (i > eventData.stage) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst updates = {};\n\t\tupdates[StoreKeys.EVENT.STAGE_INDEX] = i;\n\t\tupdates[StoreKeys.EVENT.SUBSTAGE_INDEX] = 0;\n\n\t\tStore.setMany(updates);\n\t};\n\n\tconst changeSubstage = (i) => {\n\t\tif (i === substageIndex) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (i >= currentEventStage.eventSubstage.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tStore.set(StoreKeys.EVENT.SUBSTAGE_INDEX, i);\n\t};\n\n\tconst isGroupStageBrackets =\n\t\tcurrentStage?.type === EventStageTypes.Group &&\n\t\tcurrentStage?.groupStageDetails?.hasGroupBrackets;\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t{format.stages.map((s, i) => {\n\t\t\t\t\tconst selected = i === stageIndex;\n\t\t\t\t\tconst unlocked = i <= eventData.stage || (eventData.id === 104 && i === 1);\n\t\t\t\t\treturn (\n\t\t\t\t\t\t unlocked && changeStage(i)}\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{s.name}\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\n\n\t\t\t{isGroupStageBrackets && currentEventStage?.eventSubstage?.length > 1 && (\n\t\t\t\t\n\t\t\t\t\t{currentEventStage.eventSubstage.map((ss, i) => {\n\t\t\t\t\t\tconst selected = i === substageIndex;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t changeSubstage(i)}\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ss.title}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n}\n\nexport default function StageSelector(props) {\n\treturn connect(, propKeys, props);\n}\n","import * as React from \"react\";\nimport { useMediaQuery, useTheme } from \"@material-ui/core\";\nimport StoreKeys from \"common/storeKeys\";\nimport { connect } from \"common/connect\";\nimport { EventStageTypes } from \"common/constants/EventStageTypes\";\nimport PicksHelper from \"common/picksHelper\";\nimport EventHeader from \"common/components/EventHeader/EventHeader\";\nimport EventFooter from \"common/components/EventFooter/EventFooter\";\nimport Store from \"common/store\";\nimport { useForceUpdate } from \"common/helpers/componentHelper\";\nimport BracketRenderer from \"./Brackets/BracketRenderer\";\nimport SwissStageRenderer from \"./SwissStage/SwissStageRenderer\";\nimport GroupStageRenderer from \"./GroupStage/GroupStageRenderer\";\n// eslint-disable-next-line no-unused-vars\nimport { EventFormatData } from \"common/helpers/eventFormatHelper\";\nimport StageSelector from \"./StageSelector\";\n\nconst propKeys = {\n\teventData: StoreKeys.EVENT.EVENTDATA,\n\tstageIndex: StoreKeys.EVENT.STAGE_INDEX,\n\tformat: StoreKeys.EVENT.FORMAT,\n\tisEditing: StoreKeys.EVENT.IS_EDITING,\n\tshowingOfficial: StoreKeys.EVENT.SHOW_OFFICIAL,\n};\n\n/**\n * @typedef EventRendererCProps\n * @type {object}\n * @property {any} eventData\n * @property {number} stageIndex\n * @property {EventFormatData} format\n * @property {boolean} isEditing\n * @property {boolean} isAdmin\n * @property {any} adminEventData\n */\n\n/**\n * @param {EventRendererCProps} props\n */\nfunction EventRendererC({\n\teventData,\n\tstageIndex,\n\tformat,\n\tisEditing,\n\tshowingOfficial,\n\tisAdmin,\n}) {\n\tconst forceUpdate = useForceUpdate();\n\tconst theme = useTheme();\n\tconst isSmall = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\n\tReact.useEffect(() => {\n\t\tconst callback = () => {\n\t\t\tforceUpdate();\n\t\t};\n\t\twindow.addEventListener(\"resize\", callback);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener(\"resize\", callback);\n\t\t};\n\t});\n\n\tif (!eventData || !format) {\n\t\treturn <>;\n\t}\n\n\tconst picksHelper = new PicksHelper(eventData);\n\tconst isCurrentStage = stageIndex === eventData?.stage;\n\tconst isLocked = !isAdmin && (!isCurrentStage || picksHelper.isLocked());\n\n\tconst onEdit = () => {\n\t\tif (isLocked) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst updates = {};\n\t\tupdates[StoreKeys.EVENT.IS_EDITING] = true;\n\t\tupdates[StoreKeys.EVENT.STEP] = 0;\n\t\tStore.setMany(updates);\n\t};\n\n\tconst onShowOfficialResults = () => {\n\t\tStore.set(\n\t\t\tStoreKeys.EVENT.SHOW_OFFICIAL,\n\t\t\t!Store.get(StoreKeys.EVENT.SHOW_OFFICIAL)\n\t\t);\n\t};\n\n\tconst currentStage = format.stages[stageIndex];\n\tconst renderWidth = !isSmall\n\t\t? window.innerWidth - 382\n\t\t: window.innerWidth - 24;\n\n\tconst isBracketStage =\n\t\tcurrentStage?.type === EventStageTypes.Playoffs ||\n\t\t(currentStage?.type === EventStageTypes.Group &&\n\t\t\tcurrentStage?.groupStageDetails?.hasGroupBrackets);\n\n\tconst isSwissStage = currentStage?.type === EventStageTypes.Swiss;\n\n\tconst isGroupStage =\n\t\tcurrentStage?.type === EventStageTypes.Group &&\n\t\t!currentStage?.groupStageDetails?.hasGroupBrackets;\n\n\tconst hasMultipleStages = format.stages.length > 0;\n\n\treturn (\n\t\t<>\n\t\t\t{(isLocked || !isEditing) && }\n\t\t\t{hasMultipleStages && !isEditing && }\n\t\t\t{isBracketStage && }\n\t\t\t{isSwissStage && }\n\t\t\t{isGroupStage && }\n\t\t\t{(isLocked || !isEditing) && (\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n}\n\nexport default function EventRenderer(props) {\n\treturn connect(, propKeys, props);\n}\n","import * as React from \"react\";\nimport { connect } from \"common/connect\";\nimport StoreKeys from \"common/storeKeys\";\nimport EventRenderer from \"../../EventRenderer/EventRenderer\";\nimport { makeStyles } from \"@material-ui/core\";\n\nconst useStyles = makeStyles(() => {\n\treturn {\n\t\tcontainer: {\n\t\t\twidth: \"100%\",\n\t\t},\n\t};\n});\n\nconst propKeys = {\n\teventData: StoreKeys.EVENT.EVENTDATA,\n};\n\nfunction PickemContentC(props) {\n\tconst classNames = useStyles();\n\n\treturn (\n\t\t
\n\t\t\t{props.eventData && }\n\t\t
\n\t);\n}\n\nexport const PickemContent = (props) => {\n\treturn connect(, propKeys, props);\n};\n","import * as React from \"react\";\nimport { BsClock } from \"react-icons/bs\";\nimport PicksHelper from \"common/picksHelper\";\nimport { useForceUpdate } from \"common/helpers/componentHelper\";\nimport { useEffect } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\n\nconst useStyles = makeStyles((theme) => ({\n\tcontainer: {\n\t\tfontSize: 12,\n\t\ttextAlign: \"center\",\n\n\t\t\"& label\": {\n\t\t\tdisplay: \"block\",\n\n\t\t\t\"& svg\": {\n\t\t\t\tmarginRight: 4,\n\t\t\t\tposition: \"relative\",\n\t\t\t\tbottom: 1,\n\t\t\t},\n\n\t\t\t\"&.clock-label\": {\n\t\t\t\t\"& svg\": {\n\t\t\t\t\tmarginRight: 8,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n}));\n\nexport default function Timer(props) {\n\tconst forceUpdate = useForceUpdate();\n\tconst picksHelper = new PicksHelper(props.eventData);\n\tconst locked = picksHelper.isLocked();\n\tconst finished = picksHelper.isFinished();\n\tconst lockTime = picksHelper.getTimeTillLock();\n\n\t/** Used to update state each second to reflect in the lock clock. */\n\tuseEffect(() => {\n\t\tif (!locked) {\n\t\t\tconst timer = window.setTimeout(() => {\n\t\t\t\tforceUpdate();\n\t\t\t}, 1000);\n\n\t\t\treturn () => {\n\t\t\t\tif (timer) {\n\t\t\t\t\twindow.clearTimeout(timer);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n\tconst classNames = useStyles();\n\n\tif (!props.eventData) {\n\t\treturn <>;\n\t}\n\n\treturn (\n\t\t
\n\t\t\t{finished && }\n\t\t\t{!finished && (\n\t\t\t\t<>\n\t\t\t\t\t{!locked && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t{locked && }\n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t);\n}\n","const signalR = require(\"@microsoft/signalr\");\n\nexport default class RealtimeHelper {\n\t/** @type {Record} */\n\tstatic connections = {};\n\n\tstatic async connect(url, onStart) {\n\t\tlet connection;\n\t\tif (!RealtimeHelper.connections[url]) {\n\t\t\tconnection = new signalR.HubConnectionBuilder().withUrl(url).build();\n\t\t\tRealtimeHelper.connections[url] = connection;\n\t\t\tawait connection.start();\n\t\t}\n\n\t\tif (onStart) {\n\t\t\tonStart(connection);\n\t\t}\n\n\t\treturn RealtimeHelper.connections[url];\n\t}\n\n\tstatic getConnection(url) {\n\t\treturn RealtimeHelper.connections[url];\n\t}\n\n\tstatic async on(url, eventName, callback) {\n\t\tconst connection = await RealtimeHelper.connect(url, null);\n\t\tconnection.on(eventName, callback);\n\t}\n\n\tstatic async off(url, eventName, callback) {\n\t\tconst connection = await RealtimeHelper.getConnection(url);\n\t\tif (!connection) {\n\t\t\treturn;\n\t\t}\n\n\t\tconnection.off(eventName, callback);\n\t}\n}\n","import * as $ from \"jquery\";\nimport React from \"react\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalBody,\n\tModalHeader,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport \"./Leaderboard.scss\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport UserManager from \"common/userManager\";\nimport {\n\tAiOutlineVerticalAlignTop,\n\tAiOutlineVerticalAlignBottom,\n\tAiOutlineSearch,\n} from \"react-icons/ai\";\nimport { FaCrown, FaUser } from \"react-icons/fa\";\nimport { VscGlobe } from \"react-icons/vsc\";\nimport RealtimeHelper from \"common/helpers/realtime\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport PicksHelper from \"common/picksHelper\";\n\nconst resultsOnScreen = 9;\nconst resultsPerLoad = 29;\nlet allowLoadOnScroll = true;\nlet isLoading = false;\nlet lastScrollTop = 0;\nlet searchTimeoutID = -1;\n\nfunction getNoPicksJsx() {\n\treturn (\n\t\t\n\t);\n}\n\nfunction Leaderboard(props) {\n\t//eventData is optional\n\tconst {\n\t\tleaderboardClass,\n\t\thasBracket,\n\t\tleaderboardHeaders,\n\t\ttableData,\n\t\tmodalTableData,\n\t\tloadData,\n\t\tloadDataAddtl,\n\t\tnoDataEl,\n\t\tfirstRow,\n\t\tlastRow,\n\t\ttotalRecords,\n\t\trowNumberToGoTo,\n\t\tuserIdToGoTo,\n\t\tsearchLeaderboard,\n\t\teventData,\n\t\ttotalEntrants,\n\t\tcurrentUserRow,\n\t} = props;\n\tconst [leaderboardOpen, setLeaderboardOpen] = React.useState(false);\n\tconst [hasMore, setHasMore] = React.useState(true);\n\n\tconst [bracketsSubmitted, setBracketsSubmitted] = React.useState(null);\n\tconst [lastBracketsSubmitted, setLastBracketsSubmitted] =\n\t\tReact.useState(null);\n\tconst [searchTerm, setSearchTerm] = React.useState(\"\");\n\tconst eventStarted = new PicksHelper(eventData).isStarted();\n\n\tReact.useEffect(() => {\n\t\tRealtimeHelper.on(\n\t\t\t\"/submissions\",\n\t\t\t\"SubmissionUpdate\",\n\t\t\tonSubmissionCountUpdate\n\t\t);\n\t\treturn function cleanup() {\n\t\t\tRealtimeHelper.off(\n\t\t\t\t\"/submissions\",\n\t\t\t\t\"SubmissionUpdate\",\n\t\t\t\tonSubmissionCountUpdate\n\t\t\t);\n\t\t};\n\t});\n\n\tReact.useEffect(\n\t\t(eventId) => {\n\t\t\tconst id = !!eventData ? eventData.id : undefined;\n\t\t\tconst bs = !!eventData ? eventData.bracketsSubmitted : undefined;\n\t\t\tif (id !== eventId) {\n\t\t\t\tsetBracketsSubmitted(bs);\n\t\t\t}\n\t\t},\n\t\t[eventData]\n\t);\n\n\tReact.useEffect(() => {\n\t\tif (leaderboardOpen) {\n\t\t\tconst resultRow = getModalTableRowById(userIdToGoTo);\n\t\t\tif (!rowNumberToGoTo || !resultRow) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst $body = getModalTableBody();\n\t\t\tlet scrollTop =\n\t\t\t\trowNumberToGoTo < resultsOnScreen + 1 ? 0 : resultRow.position().top;\n\n\t\t\t$body.scrollTop(scrollTop);\n\t\t\tlastScrollTop = scrollTop;\n\t\t}\n\t}, [rowNumberToGoTo, userIdToGoTo, leaderboardOpen]);\n\n\tconst getModalTableBody = () => {\n\t\treturn $(`.modal-table .leaderboard-body`);\n\t};\n\n\tconst getModalTableRow = () => {\n\t\treturn $(`.modal-table .leaderboard-row`);\n\t};\n\n\tconst getModalTableRowById = (id) => {\n\t\treturn $(`.modal-table .leaderboard-row[data-id=${id}]`);\n\t};\n\n\tconst getRowHeight = () => {\n\t\tconst $row = getModalTableRow();\n\t\tif (!$row) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn $row.height();\n\t};\n\n\tconst scrollToTop = () => {\n\t\tconst $body = getModalTableBody();\n\t\tisLoading = true;\n\t\tloadData(0, true, true).then(() => {\n\t\t\tallowLoadOnScroll = true;\n\t\t\tsetHasMore(true);\n\t\t\t$body.animate({ scrollTop: 0 }, \"fast\");\n\t\t\tisLoading = false;\n\t\t});\n\t};\n\n\tconst scrollToBottom = () => {\n\t\tconst $body = getModalTableBody();\n\t\tisLoading = true;\n\t\tloadData(totalRecords - 29, true, true).then(() => {\n\t\t\tallowLoadOnScroll = true;\n\t\t\tsetHasMore(true);\n\t\t\t$body.animate({ scrollTop: $body[0].scrollHeight }, \"fast\");\n\t\t\tisLoading = false;\n\t\t});\n\t};\n\n\tconst fetchMoreData = (ev) => {\n\t\tif (isLoading || !hasMore || !allowLoadOnScroll) {\n\t\t\treturn;\n\t\t}\n\t\tif (firstRow === 0 && lastRow === totalRecords) {\n\t\t\tsetHasMore(false);\n\t\t\treturn;\n\t\t}\n\t\tconst evScrollTop = ev.target.scrollTop;\n\t\tconst evScrollHeight = ev.target.scrollHeight;\n\t\tlet startRow = 0;\n\t\tlet isUp = false;\n\t\tif (evScrollTop > lastScrollTop) {\n\t\t\tstartRow = lastRow;\n\t\t\tif (evScrollTop < evScrollHeight * 0.6 || startRow === totalRecords) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\tif (evScrollTop > evScrollHeight * 0.3) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tisUp = true;\n\t\t\tstartRow = firstRow - (resultsPerLoad + 1);\n\t\t\tif (firstRow === 1) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tisLoading = true;\n\n\t\tloadData(startRow, false, isUp).then((hasData) => {\n\t\t\tisLoading = false;\n\t\t\tif (!hasData) {\n\t\t\t\t//if user scrolls too fast they might hit a 0 here so\n\t\t\t\t//set scrolltop off by one so if user scrolls we trigger event\n\t\t\t\tif (isUp && firstRow) {\n\t\t\t\t\tgetModalTableBody().scrollTop(lastScrollTop + 1);\n\t\t\t\t} else if (!isUp && lastRow < totalRecords) {\n\t\t\t\t\tgetModalTableBody().scrollTop(lastScrollTop - 1);\n\t\t\t\t}\n\n\t\t\t\tisLoading = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isUp) {\n\t\t\t\tconst rowHeight = getRowHeight();\n\t\t\t\tconst newScrollTop = rowHeight * modalTableData.length;\n\t\t\t\tgetModalTableBody().scrollTop(newScrollTop);\n\t\t\t}\n\t\t});\n\t};\n\n\tconst onSearchChange = (ev) => {\n\t\tconst value = ev.target.value.trim();\n\n\t\tsetSearchTerm(value);\n\n\t\tif (value.length > 0 && value.length < 3) {\n\t\t\treturn;\n\t\t}\n\t\tif (searchTimeoutID) {\n\t\t\tclearTimeout(searchTimeoutID);\n\t\t}\n\t\tallowLoadOnScroll = !value;\n\t\tif (!value) {\n\t\t\topenLeaderboardMe();\n\t\t\treturn;\n\t\t}\n\t\tsearchTimeoutID = window.setTimeout(() => {\n\t\t\tsearchLeaderboard(value.trim()).then(() => {\n\t\t\t\tgetModalTableBody().scrollTop(0);\n\t\t\t\tlastScrollTop = 0;\n\t\t\t});\n\t\t}, 250); //run the search code 250 milliseconds after last change\n\t};\n\tconst onSubmissionCountUpdate = (eventId, bracketsSubmitted) => {\n\t\tif (!!eventData && eventData.id === eventId) {\n\t\t\tsetBracketsSubmitted(bracketsSubmitted);\n\t\t}\n\t};\n\n\tconst openLeaderboardTop = () => {\n\t\tsetHasMore(true);\n\t\topenLeaderboard(true);\n\t};\n\n\tconst openLeaderboardMe = () => {\n\t\topenLeaderboard(false);\n\t};\n\n\tconst closeLeaderboard = () => {\n\t\tloadDataAddtl(true).then(() => {\n\t\t\tsetLeaderboardOpen(false);\n\t\t});\n\t};\n\n\t//@param fromTop: if true, will load resultsPerLoad records starting at Rank=1, if false,\n\t//will load resultsPerLoad with the user's rank in the middle (ie if user rank is 100 we'll load (resultsPerLoad - 1) / 2 results before user, user rank, and (resultsPerLoad - 1) / 2 after user\n\tconst openLeaderboard = (fromTop) => {\n\t\tSetLoading(true, \"Loading\");\n\t\tloadDataAddtl(fromTop).then(() => {\n\t\t\tsetLeaderboardOpen(true);\n\n\t\t\tModalHelper.listenForClose(closeLeaderboard.bind(this));\n\t\t\tModalHelper.listenForOpen(() => {\n\t\t\t\tsetLeaderboardOpen(false);\n\t\t\t\tModalHelper.listenForClose(() => {\n\t\t\t\t\tsetLeaderboardOpen(true);\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tModalHelper.listenForClose(closeLeaderboard.bind(this));\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tisLoading = false;\n\t\t\tSetLoading(false);\n\t\t});\n\t};\n\n\tlet bracketCountChanged = lastBracketsSubmitted !== bracketsSubmitted;\n\tif (bracketCountChanged) {\n\t\tsetTimeout(() => {\n\t\t\tsetLastBracketsSubmitted(bracketsSubmitted);\n\t\t}, 500);\n\t}\n\tconst showYourLeaderboard = UserManager.isLoggedIn() && hasBracket;\n\n\tif (!tableData || tableData.length < 1) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{noDataEl}\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{bracketsSubmitted}{\" \"}\n\t\t\t\t\t\t\t{\"Submission\" + (bracketsSubmitted !== 1 ? \"s \" : \" \")}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

{eventStarted ? \"GLOBAL TOP 10\" : \"RECENT ENTRANTS\"}

\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t{tableData.length === 0 && getNoPicksJsx()}\n\t\t\t\t{tableData.length > 0 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{leaderboardHeaders && leaderboardHeaders.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t{leaderboardHeaders.map((record, index) => {\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{record}\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{tableData.map((record, index) => {\n\t\t\t\t\t\t\t\t\t\tif (index < 10) {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{record}\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{bracketsSubmitted}{\" \"}\n\t\t\t\t\t\t\t\t\t\t{\"Submission\" + (bracketsSubmitted !== 1 ? \"s \" : \" \")}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{currentUserRow && (\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
{currentUserRow}
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t{eventStarted && (\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tGLOBAL LEADERBOARD\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{showYourLeaderboard && (\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tYOUR LEADERBOARD\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\t{leaderboardOpen && (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tGlobal Leaderboard\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t{leaderboardHeaders && leaderboardHeaders.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t{leaderboardHeaders.map((record, index) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{record}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{modalTableData.map((record) => {\n\t\t\t\t\t\t\t\t\t\t\treturn record;\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t)}\n\t\t\n\t);\n}\n\nexport default Leaderboard;\n","import * as React from \"react\";\nimport * as $ from \"jquery\";\nimport axiosWrapper from \"common/axiosWrapper\";\nimport Timer from \"common/components/Timer/Timer\";\nimport { connect } from \"common/connect\";\nimport EventHelper from \"common/helpers/eventHelper/eventHelper\";\nimport { changeUrl } from \"common/history\";\nimport PicksHelper from \"common/picksHelper\";\nimport StoreKeys from \"common/storeKeys\";\nimport { ReactComponent as CarotLeft } from \"icons/Carot_Left.svg\";\nimport { ReactComponent as CarotRight } from \"icons/Carot_Right.svg\";\nimport Store from \"common/store\";\nimport Leaderboard from \"common/components/Leaderboard/Leaderboard\";\nimport { withRouter } from \"react-router-dom\";\nimport UserManager from \"common/userManager\";\nimport UserCard from \"common/components/UserCard\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport { GetCurrentGamePrefix } from \"common/constants/Games\";\n\nconst propKeys = {\n\tleaderboard: StoreKeys.EVENT.LEADERBOARD,\n\thasBracket: StoreKeys.EVENT.HAS_BRACKET,\n\teventData: StoreKeys.EVENT.EVENTDATA,\n\tpastEventIds: StoreKeys.LeftPane.PastEventIds,\n\tpastEventIndex: StoreKeys.LeftPane.PastEventIndex,\n\tviewingPastEvents: StoreKeys.LeftPane.ViewingPastEvents,\n};\n\nfunction PickemLeftPaneC(props) {\n\tconst {\n\t\tleaderboard,\n\t\thasBracket,\n\t\teventData,\n\t\tpastEventIds,\n\t\tviewingPastEvents,\n\t} = props;\n\tlet { pastEventIndex } = props;\n\tconst picksHelper = new PicksHelper(eventData);\n\tconst eventStarted = picksHelper.isStarted();\n\tconst dateInfo = picksHelper.getEventDateRange();\n\tconst [stateObj, setStateObj] = React.useState({\n\t\titems: [],\n\t\ttotalRecords: 0,\n\t\trowNumberToGoTo: 1,\n\t\tuserIdToGoTo: null,\n\t});\n\tconst leaderboardHeaders = eventStarted\n\t\t? [``, `Name`, `Score`]\n\t\t: [``, `Name`];\n\n\tif (!!pastEventIds && !!eventData && eventData.id > 0) {\n\t\tconst actualIdx = pastEventIds.indexOf(eventData.id);\n\t\tif (actualIdx !== pastEventIndex && actualIdx > 0) {\n\t\t\tpastEventIndex = actualIdx;\n\t\t}\n\t}\n\n\tconst viewPastEvents = async () => {\n\t\tif (viewingPastEvents) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst pastEventIds = await EventHelper.getListOfPastEventIds();\n\t\tif (pastEventIds.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst pastEventId = pastEventIds[0];\n\t\tconst route = GetCurrentGamePrefix();\n\t\tchangeUrl(`${route}/event/${pastEventId}`);\n\n\t\tStore.cacheChanges(\"viewPastEvents\");\n\t\tStore.set(StoreKeys.LeftPane.PastEventIds, pastEventIds);\n\t\tStore.set(StoreKeys.LeftPane.PastEventIndex, 0);\n\t\tStore.set(StoreKeys.LeftPane.ViewingPastEvents, true);\n\t\tStore.applyChanges(\"viewPastEvents\");\n\t};\n\n\tconst viewNextEvent = async (offset) => {\n\t\tconst peIdx = pastEventIndex + offset;\n\n\t\tif (peIdx < 0 || peIdx >= pastEventIds.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst pastEventId = pastEventIds[peIdx];\n\t\tconst route = GetCurrentGamePrefix();\n\t\tchangeUrl(`${route}/event/${pastEventId}`);\n\n\t\tStore.cacheChanges(\"viewNextEvent\");\n\t\tStore.set(StoreKeys.LeftPane.PastEventIds, pastEventIds);\n\t\tStore.set(StoreKeys.LeftPane.PastEventIndex, peIdx);\n\t\tStore.set(StoreKeys.LeftPane.ViewingPastEvents, true);\n\t\tStore.applyChanges(\"viewNextEvent\");\n\t};\n\n\tconst viewLiveEvent = async () => {\n\t\tif (!viewingPastEvents) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst liveEventId = await EventHelper.getLiveEventId();\n\t\tconst route = GetCurrentGamePrefix();\n\t\tchangeUrl(`${route}/event/${liveEventId}`);\n\n\t\tStore.cacheChanges(\"viewLiveEvent\");\n\t\tStore.set(StoreKeys.LeftPane.PastEventIndex, 0);\n\t\tStore.set(StoreKeys.LeftPane.ViewingPastEvents, false);\n\t\tStore.applyChanges(\"viewLiveEvent\");\n\t};\n\n\tconst getLeaderboardData = (startRow, overwriteData, isUp) => {\n\t\tif (!eventData) {\n\t\t\treturn;\n\t\t}\n\t\tconst def = $.Deferred();\n\t\tgetLeaderboard(eventData.id, startRow).then((leaderboard) => {\n\t\t\tlet items = [...stateObj.items];\n\t\t\tlet newItems = null;\n\t\t\tif (overwriteData) {\n\t\t\t\tnewItems = leaderboard;\n\t\t\t} else {\n\t\t\t\tif (isUp) {\n\t\t\t\t\tnewItems = leaderboard.concat(items);\n\t\t\t\t} else {\n\t\t\t\t\tnewItems = items.concat(leaderboard);\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet copy = { ...stateObj };\n\t\t\tcopy.items = newItems;\n\t\t\tcopy.rowNumberToGoTo = 1;\n\t\t\tcopy.userIdToGoTo = null;\n\t\t\tsetStateObj(copy);\n\t\t\tdef.resolve(newItems.length > 0);\n\t\t});\n\t\treturn def.promise();\n\t};\n\n\tconst getLeaderboardAdditionalData = (fromTop) => {\n\t\tif (!eventData) {\n\t\t\treturn;\n\t\t}\n\t\treturn getLeaderboardAdditional(eventData.id, fromTop).then((info) => {\n\t\t\tlet itemIdx = getItemIdx(UserManager.getUserId(), info.records);\n\t\t\tlet copy = { ...stateObj };\n\t\t\tcopy.items = info.records;\n\t\t\tcopy.totalRecords = info.totalRecords;\n\t\t\tcopy.rowNumberToGoTo = fromTop || !itemIdx ? 1 : itemIdx;\n\t\t\tcopy.userIdToGoTo = fromTop ? null : UserManager.getUserId();\n\t\t\tsetStateObj(copy);\n\t\t});\n\t};\n\n\tconst searchLeaderboardData = (term) => {\n\t\tif (!eventData) {\n\t\t\treturn;\n\t\t}\n\t\treturn searchLeaderboard(eventData.id, term).then((data) => {\n\t\t\tlet copy = { ...stateObj };\n\t\t\tcopy.items = data;\n\t\t\tcopy.totalRecords = data.length;\n\t\t\tcopy.rowNumberToGoTo = 1;\n\t\t\tcopy.userIdToGoTo = null;\n\t\t\tsetStateObj(copy);\n\t\t});\n\t};\n\n\tconst getItemIdx = (id, items) => {\n\t\tif (!id || !items) {\n\t\t\treturn null;\n\t\t}\n\t\treturn items.findIndex((r) => {\n\t\t\treturn r.userId === id;\n\t\t});\n\t};\n\n\tconst leaderboardNoDataEl = (\n\t\t\n\t);\n\tconst preFirstStageAndUnlocked = !picksHelper.isStarted();\n\n\tconst openBracket = (userId) => {\n\t\tif (preFirstStageAndUnlocked) {\n\t\t\treturn;\n\t\t}\n\t\tconst event = eventData;\n\t\tconst route = GetCurrentGamePrefix();\n\t\tchangeUrl(`${route}/event/${event.id}/${userId}`);\n\t\tModalHelper.closeAllModals();\n\t};\n\n\tconst tableDataAry = !leaderboard\n\t\t? []\n\t\t: leaderboard.map((record) => {\n\t\t\t\tlet scoreClass = record.rank === 1 ? ` first` : ``;\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t
{record.rank}
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t{eventStarted && (\n\t\t\t\t\t\t\t openBracket(record.userId)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{record.totalScore}\n\t\t\t\t\t\t\t\t\"Current\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t);\n\t\t });\n\tconst modalDataAry = stateObj.items.map((record, index) => {\n\t\tlet scoreClass = record.rank === 1 ? ` first` : ``;\n\t\treturn (\n\t\t\t\n\t\t\t\t{record.rank}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{eventStarted && (\n\t\t\t\t\t openBracket(record.userId)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{record.totalScore}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t);\n\t});\n\n\tconst hasItems = !!stateObj && stateObj.items && stateObj.items.length > 0;\n\tconst leaderboardHiddenClass = preFirstStageAndUnlocked ? `hidden` : ``;\n\tconst imageUrl = eventData?.image?.startsWith(\"http\")\n\t\t? eventData?.image\n\t\t: `/images/events/${eventData?.image ?? \"RLCSX.png\"}`;\n\tconst eventUrl =\n\t\t!!eventData && !!eventData.url ? eventData.url : \"https://liquipedia.net/\";\n\treturn (\n\t\t<>\n\t\t\t{eventData && (\n\t\t\t\t<>\n\t\t\t\t\t

\n\t\t\t\t\t\tEVENT{\" \"}\n\t\t\t\t\t\t\n\t\t\t\t\t

\n\t\t\t\t\t

{eventData.nameOverride ?? eventData.name}

\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{viewingPastEvents && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t window.open(eventUrl)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t
\n\t\t\t\t\t\t{viewingPastEvents && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t)}\n\t\t\t{!eventData && (\n\t\t\t\t<>\n\t\t\t\t\t

No Current Event

\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\n\t\t\t\n\t\t\n\t);\n}\n\nconst getLeaderboard = async (eventId, startRow) => {\n\tlet route = `/get/leaderboard/${eventId}`;\n\tif (!isNaN(startRow)) {\n\t\troute += `/${startRow}`;\n\t}\n\n\treturn await axiosWrapper.getCached(`/api/picks${route}`);\n};\n\nconst getLeaderboardAdditional = async (eventId, fromTop) => {\n\treturn await axiosWrapper.getCached(\n\t\t`/api/picks/get/leaderboard/additional/${eventId}/${fromTop}`\n\t);\n};\n\nconst searchLeaderboard = async (eventId, term) => {\n\tlet route = `/search/leaderboard/${eventId}/${term}`;\n\n\treturn await axiosWrapper.getCached(`/api/picks${route}`);\n};\n\nconst PickemLeftPane = withRouter((props) =>\n\tconnect(, propKeys, props)\n);\n\nexport default PickemLeftPane;\n","import { SetLoading } from \"common/components/Loader/Loader\";\nimport EventHelper from \"common/helpers/eventHelper/eventHelper\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport * as React from \"react\";\nimport GamePickemScreen from \"./GamePickemScreen\";\nimport { PickemContent } from \"./PickemLeftPane/Content/PickemContent\";\nimport PickemLeftPane from \"./PickemLeftPane/LeftPane/PickemLeftPane\";\n\nexport default class PickemScreen extends React.Component {\n\teventId = 0;\n\tuserId = 0;\n\n\tcomponentDidMount() {\n\t\tthis.load(true);\n\t}\n\n\tcomponentDidUpdate() {\n\t\tconst eventId = this.props.match.params.eventId;\n\t\tconst userId = this.props.match.params.userId;\n\n\t\tif (this.eventId !== eventId || this.userId !== userId) {\n\t\t\tthis.load();\n\t\t}\n\t}\n\n\tasync load(onMount = false) {\n\t\tSetLoading(true, \"Loading\");\n\n\t\t/** @type {Record} */\n\t\tconst params = this.props.match.params;\n\t\tconst eventId = params.eventId;\n\t\tconst userId = params.userId;\n\n\t\tif (eventId === this.eventId && userId === this.userId) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.eventId = eventId;\n\t\tthis.userId = userId;\n\n\t\tif (this.eventId) {\n\t\t\tconst liveId = await EventHelper.getLiveEventId();\n\t\t\tif (onMount && eventId.toString() !== liveId.toString()) {\n\t\t\t\tconst pastEventIds = await EventHelper.getListOfPastEventIds();\n\t\t\t\tconst index = pastEventIds.indexOf(eventId);\n\n\t\t\t\tStore.cacheChanges(\"event\");\n\t\t\t\tStore.set(StoreKeys.LeftPane.PastEventIds, pastEventIds);\n\t\t\t\tStore.set(StoreKeys.LeftPane.PastEventIndex, index);\n\t\t\t\tStore.set(StoreKeys.LeftPane.ViewingPastEvents, true);\n\t\t\t\tStore.applyChanges(\"event\");\n\t\t\t}\n\t\t\tawait EventHelper.fullLoadEvent(Number(eventId), userId);\n\t\t} else {\n\t\t\tawait EventHelper.getLiveEvent();\n\t\t}\n\n\t\tSetLoading(false);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n","import { Grid, makeStyles } from \"@material-ui/core\";\nimport ContentHeader from \"common/components/ContentHeader/ContentHeader\";\nimport ContentPanel from \"common/components/ContentPanel/ContentPanel\";\nimport {\n\tgames,\n\tGamesEnum,\n\tGetCurrentGameId,\n\tGetCurrentGameTrophyPath,\n} from \"common/constants/Games\";\nimport * as React from \"react\";\nimport { Colors } from \"styles/Colors\";\n\nconst useStyles = makeStyles({\n\tcontainer: {\n\t\tdisplay: \"inline-block\",\n\t\twidth: \"50%\",\n\t},\n\theading: {\n\t\tcolor: Colors.pickstop,\n\t\tmarginTop: 5,\n\t\tmarginBottom: 5,\n\t},\n\ttableContainer: {\n\t\tbackgroundColor: Colors.body,\n\t\tborderRadius: 12,\n\t\tmargin: 4,\n\t\tmarginLeft: 0,\n\t},\n\ttable: {\n\t\ttextAlign: \"center\",\n\t\twidth: \"100%\",\n\t\tborderSpacing: 0,\n\t},\n\ttableHead: {\n\t\tcolor: Colors.pickstop,\n\t},\n\ttableCell: {\n\t\tborderWidth: 1,\n\t\tborderStyle: \"solid\",\n\t\tborderColor: Colors.panel,\n\t\tpadding: 5,\n\t\tfontSize: 12,\n\t\tlineHeight: \"20px\",\n\t},\n\tdiamond: {\n\t\tcolor: Colors.diamond_light,\n\t},\n\tplatinum: {\n\t\tcolor: Colors.platinum_light,\n\t},\n\tgold: {\n\t\tcolor: Colors.gold_light,\n\t},\n\tsilver: {\n\t\tcolor: Colors.silver_light,\n\t},\n\tbronze: {\n\t\tcolor: Colors.bronze_light,\n\t},\n\twood: {\n\t\tcolor: Colors.wood_light,\n\t},\n\tglobeIcon: {\n\t\tmaxHeight: 30,\n\t\tposition: \"relative\",\n\t},\n\ttrophyIcon: {\n\t\tmaxHeight: 30,\n\t\tposition: \"relative\",\n\t},\n\tmedalIcon: {\n\t\tmaxHeight: 30,\n\t\tposition: \"relative\",\n\t},\n\tprestigeIcon: {\n\t\tmaxHeight: 30,\n\t\tposition: \"relative\",\n\t\tleft: -2,\n\t},\n\trewardText: {\n\t\twidth: 84,\n\t},\n\tminiAward: {\n\t\tdisplay: \"inline-block\",\n\t\tfloat: \"left\",\n\t\tborderRadius: \"50%\",\n\t\toverflow: \"hidden\",\n\t\theight: 20,\n\t\tmarginLeft: 0,\n\t\tmarginRight: 0,\n\t},\n\tmaterialBlock: {\n\t\theight: 20,\n\t},\n\tawardCellWrapper: {\n\t\tdisplay: \"flex\",\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"space-around\",\n\t},\n\tawardCellInnerWrapper: {\n\t\twidth: 40,\n\t\tdisplay: \"flex\",\n\t\tjustifyContent: \"space-around\",\n\n\t\t\"& img\": {\n\t\t\twidth: 20,\n\t\t\tmarginLeft: 2,\n\t\t\tmarginRight: 2,\n\t\t},\n\t},\n});\n\nexport default function AwardInfo(props) {\n\tconst styles = useStyles();\n\tconst trophyImagePath = GetCurrentGameTrophyPath();\n\tconst isRocketLeague = GetCurrentGameId() === GamesEnum.RocketLeague;\n\tconst isCounterStrike = GetCurrentGameId() === GamesEnum.CounterStrike;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{isRocketLeague && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{isCounterStrike && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
EventAward
Worlds\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\tGlobe\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
Major\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\tTrophy\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t{isCounterStrike ? \"Tier 1\" : \"Regional\"}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\tMedal\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
Major\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tMajor Trophy\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\tPrestige Event
(Cologne & Katowice)\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tPrestige Trophy\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
S-Tier LAN\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\tMedal\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
RankTier
Winner\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tDiamond\n\t\t\t\t\t\t\t\t\t
Top 10\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tPlatinum\n\t\t\t\t\t\t\t\t\t
Top 10%\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tGold\n\t\t\t\t\t\t\t\t\t
Top 30%\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tSilver\n\t\t\t\t\t\t\t\t\t
Top 50%\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tBronze\n\t\t\t\t\t\t\t\t\t
Participant\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tWood\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n","import { Box, makeStyles } from \"@material-ui/core\";\nimport * as React from \"react\";\nimport * as $ from \"jquery\";\nimport { Colors } from \"styles/Colors\";\nimport Leaderboard from \"common/components/Leaderboard/Leaderboard\";\nimport UserManager from \"common/userManager\";\nimport TrophyService from \"services/TrophyService\";\nimport UserCard from \"common/components/UserCard\";\nimport ContentHeader from \"common/components/ContentHeader/ContentHeader\";\n\nconst useStyles = makeStyles({\n\troot: {\n\t\tbackgroundColor: Colors.panel,\n\t\tborderRadius: 12,\n\t\tpadding: 10,\n\t\tmarginBottom: 5,\n\t},\n\theading: {\n\t\tcolor: Colors.pickstop,\n\t\tmarginTop: 5,\n\t\tmarginBottom: 5,\n\t\tmarginleft: 10,\n\t},\n\tleaderboardDetails: {\n\t\ttextAlign: \"center\",\n\t\tmargin: \"0 10px\",\n\t\tposition: \"relative\",\n\t},\n\tfullSvg: {\n\t\tdisplay: \"inline-block\",\n\t\tposition: \"relative\",\n\t\tleft: -5,\n\t\ttop: 3,\n\t\tstroke: Colors.primary,\n\t\tfill: Colors.primary,\n\t},\n\tyourSvg: {\n\t\tdisplay: \"inline-block\",\n\t\tposition: \"relative\",\n\t\tleft: -3,\n\t\ttop: 1,\n\t\tstroke: Colors.primary,\n\t\tfill: Colors.primary,\n\t},\n});\n\nexport default function AwardLeaders(props) {\n\tconst styles = useStyles();\n\n\tconst [awardLeaderState, setAwardLeaderState] = React.useState({\n\t\titems: [],\n\t\ttotalRecords: 0,\n\t\trowNumberToGoTo: 1,\n\t\tuserIdToGoTo: null,\n\t});\n\tconst [currentUserRow, setCurrentUserRow] = React.useState(null);\n\n\tReact.useEffect(() => {\n\t\tTrophyService.getTrophyLeaderboard().then((leaderboardData) => {\n\t\t\tlet copy = { ...awardLeaderState };\n\t\t\tcopy.items = leaderboardData;\n\t\t\tsetAwardLeaderState(copy);\n\t\t});\n\t\tTrophyService.getTrophyLeaderboardUserRow(UserManager.getUserId()).then(\n\t\t\t(data) => {\n\t\t\t\tsetCurrentUserRow(data);\n\t\t\t}\n\t\t);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\tconst getLeaderboardData = (startRow, overwriteData, isUp) => {\n\t\tconst def = $.Deferred();\n\t\tTrophyService.getTrophyLeaderboard(startRow).then((leaderboard) => {\n\t\t\tlet items = [...awardLeaderState.items];\n\t\t\tlet newItems = null;\n\t\t\tif (overwriteData) {\n\t\t\t\tnewItems = leaderboard;\n\t\t\t} else {\n\t\t\t\tif (isUp) {\n\t\t\t\t\tnewItems = leaderboard.concat(items);\n\t\t\t\t} else {\n\t\t\t\t\tnewItems = items.concat(leaderboard);\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet copy = { ...awardLeaderState };\n\t\t\tcopy.items = newItems;\n\t\t\tcopy.rowNumberToGoTo = 1;\n\t\t\tcopy.userIdToGoTo = null;\n\t\t\tsetAwardLeaderState(copy);\n\t\t\tdef.resolve(newItems.length > 0);\n\t\t});\n\t\treturn def.promise();\n\t};\n\n\tconst getLeaderboardAdditionalData = (fromTop) => {\n\t\treturn TrophyService.getTrophyLeaderboardAdditional(fromTop).then(\n\t\t\t(info) => {\n\t\t\t\tlet itemIdx = getItemIdx(UserManager.getUserId(), info.records);\n\t\t\t\tlet copy = { ...awardLeaderState };\n\t\t\t\tcopy.items = info.records;\n\t\t\t\tcopy.totalRecords = info.totalRecords;\n\t\t\t\tcopy.rowNumberToGoTo = fromTop || !itemIdx ? 1 : itemIdx;\n\t\t\t\tcopy.userIdToGoTo = fromTop ? null : UserManager.getUserId();\n\t\t\t\tsetAwardLeaderState(copy);\n\t\t\t}\n\t\t);\n\t};\n\n\tconst searchLeaderboardData = (term) => {\n\t\treturn TrophyService.searchTrophyLeaderboard(term).then((data) => {\n\t\t\tlet copy = { ...awardLeaderState };\n\t\t\tcopy.items = data;\n\t\t\tcopy.totalRecords = data.length;\n\t\t\tcopy.rowNumberToGoTo = 1;\n\t\t\tcopy.userIdToGoTo = null;\n\t\t\tsetAwardLeaderState(copy);\n\t\t});\n\t};\n\n\tconst getItemIdx = (id, items) => {\n\t\tif (!id || !items) {\n\t\t\treturn null;\n\t\t}\n\t\treturn items.findIndex((r) => {\n\t\t\treturn r.userId === id;\n\t\t});\n\t};\n\n\tconst leaderboardRowJsx = (record) => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{record.rank}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{!!record.event1Name && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t{!!record.event2Name && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t{!!record.event3Name && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t{!!record.event4Name && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t{!!record.event5Name && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t\n\t\t);\n\t};\n\n\tconst currentUserRowJsx = !!currentUserRow\n\t\t? leaderboardRowJsx(currentUserRow)\n\t\t: null;\n\tconst headerJsx = ;\n\tconst tableDataAry = !awardLeaderState.items\n\t\t? []\n\t\t: awardLeaderState.items.map((record) => {\n\t\t\t\treturn leaderboardRowJsx(record);\n\t\t });\n\n\tconst modalDataAry = awardLeaderState.items.map((record, index) => {\n\t\treturn (\n\t\t\t
\n\t\t\t\t{record.rank}\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{!!record.event1Name && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t{!!record.event2Name && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t{!!record.event3Name && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t{!!record.event4Name && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t{!!record.event5Name && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t});\n\n\tif (!awardLeaderState.items || awardLeaderState.items.length < 1) {\n\t\treturn (\n\t\t\t\n\t\t\t\t{headerJsx}\n\t\t\t\tNo leaderboard data to show.\n\t\t\t\n\t\t);\n\t}\n\tconst hasItems =\n\t\t!!awardLeaderState &&\n\t\tawardLeaderState.items &&\n\t\tawardLeaderState.items.length > 0;\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t{headerJsx}\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n","import UserCard from \"common/components/UserCard\";\nimport { Grid, makeStyles } from \"@material-ui/core\";\nimport * as React from \"react\";\nimport { Colors } from \"styles/Colors\";\nimport TrophyService from \"services/TrophyService\";\nimport ContentPanel from \"common/components/ContentPanel/ContentPanel\";\nimport ContentHeader from \"common/components/ContentHeader/ContentHeader\";\nimport _ from \"lodash\";\n\nconst useStyles = makeStyles({\n\tcontainer: {\n\t\twidth: \"50%\",\n\t},\n\theading: {\n\t\tcolor: Colors.pickstop,\n\t\tmarginTop: 5,\n\t\tmarginBottom: 5,\n\t},\n\tawardContainer: {\n\t\tdisplay: \"flex\",\n\t\tflexDirection: \"column\",\n\t\tborderRadius: 12,\n\t\tmargin: 4,\n\t\ttextAlign: \"center\",\n\t\tmaxWidth: 200,\n\t},\n\tawardContainerInner: {\n\t\tborderRadius: 12,\n\t\tbackground: `transparent linear-gradient(180deg, ${Colors.diamond} 0%, transparent 50%) 0% 0% content-box`,\n\t},\n\teventName: {\n\t\tfontSize: 14,\n\t\theight: 50,\n\t\tdisplay: \"flex\",\n\t\tjustifyContent: \"center\",\n\t\tmarginTop: 10,\n\t\tmaxWidth: 150,\n\t},\n\teventAward: {\n\t\tmarginTop: 10,\n\t\twidth: 150,\n\t},\n\tawardImage: {\n\t\tmaxHeight: 150,\n\t},\n});\n\nexport default function RecentAwards(props) {\n\tconst styles = useStyles();\n\n\tconst [recentAwards, setRecentAwards] = React.useState(null);\n\n\tReact.useEffect(() => {\n\t\tTrophyService.getRecentTrophies().then((recentData) => {\n\t\t\tsetRecentAwards(recentData);\n\t\t});\n\t}, []);\n\n\tconst headerJsx = ;\n\n\tif (!recentAwards || recentAwards.length < 1) {\n\t\treturn (\n\t\t\t\n\t\t\t\t{headerJsx}\n\t\t\t\tNo recent data to show.\n\t\t\t\n\t\t);\n\t}\n\n\tconst distinctEventIds = _.uniqBy(recentAwards, (a) => a.trophy.eventId).map(\n\t\t(a) => a.trophy.eventId\n\t);\n\n\treturn (\n\t\t\n\t\t\t{headerJsx}\n\n\t\t\t\n\t\t\t\t{distinctEventIds.map((eventId, index) => {\n\t\t\t\t\tconst userIds = recentAwards\n\t\t\t\t\t\t.filter((a) => a.trophy.eventId === eventId)\n\t\t\t\t\t\t.map((a) => a.user.userId);\n\t\t\t\t\tconst trophy = recentAwards.find(\n\t\t\t\t\t\t(a) => a.trophy.eventId === eventId\n\t\t\t\t\t)?.trophy;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
{trophy?.eventName}
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{userIds.map((userId, index) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t
\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t
\n\t\t
\n\t);\n}\n","import { makeStyles } from \"@material-ui/core\";\nimport * as React from \"react\";\nimport UserManager from \"common/userManager\";\nimport { Colors } from \"styles/Colors\";\nimport UserCard from \"common/components/UserCard\";\nimport StoreKeys from \"common/storeKeys\";\nimport AwardSummary from \"./AwardSummary\";\nimport TrophyService from \"services/TrophyService\";\nimport TrophyList from \"common/components/TrophyList/TrophyList\";\nimport ContentPanel from \"common/components/ContentPanel/ContentPanel\";\nimport ContentHeader from \"common/components/ContentHeader/ContentHeader\";\nimport LookupService from \"services/LookupService\";\nimport { GetCurrentGameId } from \"common/constants/Games\";\nimport { connect } from \"common/connect\";\n\nconst useStyles = makeStyles({\n\ttopContainer: {\n\t\tdisplay: \"flex\",\n\t},\n\tsummary: {\n\t\twidth: \"100%\",\n\t\tdisplay: \"flex\",\n\t},\n\tsummaryContent: {\n\t\twidth: \"100%\",\n\t},\n\tuserInfoContainer: {\n\t\tdisplay: \"flex\",\n\t\tflexDirection: \"column\",\n\t\twidth: \"80%\",\n\t\tmaxWidth: 400,\n\t\tmargin: \"auto\",\n\t\theight: \"95%\",\n\t\talignItems: \"center\",\n\t\tcursor: \"pointer\",\n\t},\n\tdivider: {\n\t\tborder: \"1px solid \" + Colors.body,\n\t\tdisplay: \"block\",\n\t\tmarginLeft: 10,\n\t\tmarginRight: 10,\n\t},\n});\n\nconst propKeys = {\n\tuserId: StoreKeys.USER.ID,\n};\n\nfunction YourAwardsC({ userId }) {\n\tconst styles = useStyles();\n\tconst [state, setState] = React.useState({\n\t\tawards: [],\n\t\tgames: [],\n\t});\n\n\tReact.useEffect(() => {\n\t\tif (userId) {\n\t\t\tconst gameId = GetCurrentGameId();\n\t\t\tPromise.all([\n\t\t\t\tTrophyService.getYourAwards(userId, gameId),\n\t\t\t\tLookupService.getGames(),\n\t\t\t]).then(([awardData, games]) => {\n\t\t\t\tawardData = awardData.sort((a, b) => {\n\t\t\t\t\treturn b.eventId - a.eventId;\n\t\t\t\t});\n\t\t\t\tgames = games.filter((g) => g.id === gameId);\n\n\t\t\t\tsetState({\n\t\t\t\t\tawards: awardData,\n\t\t\t\t\tgames,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}, [userId]);\n\n\tconst headerJsx = ;\n\n\tif (!state.awards) {\n\t\treturn (\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{headerJsx}\n\t\t\t\t\t\t\tNo awards to show.\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{headerJsx}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t);\n}\n\nexport default function YourAwards(props) {\n\treturn connect(, propKeys, props);\n}\n","import { Grid, makeStyles } from \"@material-ui/core\";\nimport * as React from \"react\";\nimport AwardInfo from \"./AwardInfo\";\nimport AwardLeaders from \"./AwardLeaders\";\nimport RecentAwards from \"./RecentAwards\";\nimport YourAwards from \"./YourAwards\";\nimport StoreKeys from \"common/storeKeys\";\nimport { connect } from \"common/connect\";\n\nconst useStyles = makeStyles((theme) => ({\n\troot: {\n\t\tmarginTop: theme.spacing() * 2,\n\t\twidth: \"100%\",\n\t},\n}));\n\nconst propKeys = {\n\tloggedIn: StoreKeys.USER.LOGGED_IN,\n};\n\nfunction TrophyRoomScreenC({ loggedIn }) {\n\tconst styles = useStyles();\n\treturn (\n\t\t\n\t\t\t{loggedIn && (\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\t{!loggedIn && (\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n}\n\nexport default function TrophyRoomScreen(props) {\n\treturn connect(, propKeys, props);\n}\n","import CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalBody,\n\tModalHeader,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport UserCard from \"common/components/UserCard\";\nimport UserManager from \"common/userManager\";\nimport * as React from \"react\";\n\nexport default function RedeemCodeModal({ promo }) {\n\tconst userId = UserManager.getUserId();\n\tconst username = UserManager.getUsername();\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\tPromo Code Claimed!\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t{promo.rewardNamePlateStyleId && (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n","import { Button, TextField } from \"@material-ui/core\";\nimport CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalBody,\n\tModalHeader,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport RedeemCodeModal from \"common/components/Modals/RedeemCodeModal/RedeemCodeModal\";\nimport { connect } from \"common/connect\";\nimport { LocalStorageKeys } from \"common/constants/StorageKeys\";\nimport { useForceUpdate } from \"common/helpers/componentHelper\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport StoreKeys from \"common/storeKeys\";\nimport UserManager from \"common/userManager\";\nimport * as React from \"react\";\nimport PromoService from \"services/PromoService\";\n\nconst propKeys = {\n\tloadedUser: StoreKeys.USER.LOADED,\n\tloggedIn: StoreKeys.USER.LOGGED_IN,\n};\n\nfunction RedeemPromoCodeScreenC({ loadedUser, loggedIn }) {\n\tconst [code, setCode] = React.useState(\"\");\n\tconst forceUpdate = useForceUpdate();\n\tconst refresh = () => {\n\t\tforceUpdate();\n\t};\n\n\tReact.useEffect(() => {\n\t\tUserManager.onLogin(() => refresh());\n\t});\n\n\tif (loadedUser && !loggedIn) {\n\t\tlocalStorage.setItem(LocalStorageKeys.POSTLOGINURL, \"/redeem\");\n\t\tUserManager.openLoginModal();\n\n\t\treturn <>;\n\t}\n\n\tconst redeem = () => {\n\t\tPromoService.redeemCode(code).then((result) => {\n\t\t\tif (result) {\n\t\t\t\tModalHelper.openModal();\n\t\t\t} else {\n\t\t\t\tModalHelper.openModal(\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tInvalid Promo Code\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t};\n\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t setCode(e.target.value)}>\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\n\t);\n}\n\nexport default function RedeemPromoCodeScreen(props) {\n\treturn connect(, propKeys, props);\n}\n","import axiosWrapper from \"common/axiosWrapper\";\n\nconst baseUrl = \"/api/promo\";\n\nexport default class PromoService {\n\t/**\n\t * Attempt to redeem a promo code for any current promos.\n\t *\n\t * @returns {Promise} Returns if the code is valid and claimed.\n\t */\n\tstatic async redeemCode(code) {\n\t\treturn axiosWrapper.get(`${baseUrl}/redeem?code=${code}`);\n\t}\n}\n","import * as React from \"react\";\nimport { connect } from \"common/connect\";\nimport StoreKeys from \"common/storeKeys\";\nimport EventService from \"services/EventService\";\nimport Store from \"common/store\";\nimport {\n\tFormControlLabel,\n\tmakeStyles,\n\tPaper,\n\tRadio,\n\tRadioGroup,\n\tTypography,\n} from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport FatButton from \"common/components/FatButton/FatButton\";\nimport TrophyService from \"services/TrophyService\";\nimport { toast } from \"react-toastify\";\n\nconst propKeys = {\n\tevents: StoreKeys.ADMIN.GIVE_TROPHY.EVENTS,\n};\n\nconst useStyles = makeStyles((theme) => ({\n\tformControl: {\n\t\tmargin: theme.spacing(),\n\t\tminWidth: 120,\n\t\tmarginBottom: theme.spacing(2),\n\t},\n\tfullWidth: {\n\t\twidth: \"100%\",\n\t},\n\tselectInGrid: {\n\t\tminWidth: 200,\n\t},\n\tpadding: {\n\t\tpadding: theme.spacing(2),\n\t},\n\tpaper: {\n\t\tcolor: Colors.primary,\n\t\tbackgroundColor: Colors.panel,\n\t},\n\tmarginBottom: {\n\t\tmarginBottom: theme.spacing(2),\n\t},\n}));\n\nfunction GiveTrophyC({ events }) {\n\tconst [selectedEventId, setEventId] = React.useState(null);\n\tconst classes = useStyles();\n\tReact.useEffect(() => {\n\t\tif (!events) {\n\t\t\tSetLoading(true, \"Loading Events\");\n\t\t\tEventService.getEventsNotRewarded().then((events) => {\n\t\t\t\tStore.set(StoreKeys.ADMIN.GIVE_TROPHY.EVENTS, events);\n\t\t\t\tSetLoading(false);\n\t\t\t});\n\t\t}\n\t}, [events]);\n\n\tconst onEventChange = (event) => {\n\t\tconst eventId = event.target.value;\n\t\tsetEventId(eventId);\n\t};\n\n\tconst rewardTrophies = async () => {\n\t\tif (!selectedEventId) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tSetLoading(true);\n\t\t\tawait TrophyService.giveTrophies(selectedEventId);\n\t\t\tconst events = await EventService.getEventsNotRewarded();\n\t\t\tStore.set(StoreKeys.ADMIN.GIVE_TROPHY.EVENTS, events);\n\t\t\tSetLoading(false);\n\t\t\ttoast(\"Trophies Rewarded!\", { type: \"success\" });\n\t\t} catch (error) {\n\t\t\tSetLoading(false);\n\t\t\ttoast(\"Contact Lor!\", { type: \"error\" });\n\t\t}\n\t};\n\n\tif (!events?.length) {\n\t\treturn There are no events to reward trophies for.;\n\t}\n\n\treturn (\n\t\t\n\t\t\tEvents to Reward Trophies For\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{events.map((e, i) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlabel={e.nameOverride}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
\n\t\t\t {\n\t\t\t\t\trewardTrophies();\n\t\t\t\t}}\n\t\t\t\tdisabled={!selectedEventId}\n\t\t\t/>\n\t\t\n\t);\n}\n\nexport default function GiveTrophy(props) {\n\treturn connect(, propKeys, props);\n}\n","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgPickstopLogoGgNew = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"svg\",\n width: 400,\n height: 53.23893805309735,\n viewBox: \"0, 0, 400,53.23893805309735\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"svgg\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"path0\",\n d: \"M343.333 11.823 L 343.333 19.667 347.136 19.667 C 351.218 19.667,352.083 19.540,353.321 18.758 C 355.882 17.141,355.685 12.612,353.005 11.502 L 352.507 11.296 353.033 10.939 C 354.325 10.064,354.798 7.849,354.016 6.333 C 352.960 4.286,352.442 4.107,347.375 4.036 L 343.333 3.979 343.333 11.823 M358.833 11.833 L 358.833 19.667 364.750 19.667 L 370.667 19.667 370.667 18.667 L 370.667 17.667 365.917 17.667 L 361.167 17.667 361.167 15.083 L 361.167 12.500 365.417 12.500 L 369.667 12.500 369.667 11.500 L 369.667 10.500 365.417 10.500 L 361.167 10.500 361.167 8.250 L 361.167 6.000 365.667 6.000 L 370.167 6.000 370.167 5.000 L 370.167 4.000 364.500 4.000 L 358.833 4.000 358.833 11.833 M373.000 5.000 L 373.000 6.000 375.583 6.000 L 378.167 6.000 378.167 12.833 L 378.167 19.667 379.250 19.667 L 380.333 19.667 380.333 12.833 L 380.333 6.000 382.917 6.000 L 385.500 6.000 385.500 5.000 L 385.500 4.000 379.250 4.000 L 373.000 4.000 373.000 5.000 M390.879 4.458 C 390.790 4.710,390.638 5.142,390.542 5.417 C 390.446 5.692,390.199 6.329,389.994 6.833 C 389.384 8.329,388.736 10.001,388.250 11.333 C 387.766 12.659,387.121 14.325,386.507 15.833 C 386.301 16.337,386.034 17.061,385.913 17.441 C 385.792 17.821,385.574 18.361,385.430 18.641 C 384.946 19.577,385.031 19.667,386.400 19.667 L 387.633 19.667 387.966 18.625 C 388.305 17.566,388.511 16.977,388.985 15.709 L 389.250 15.001 392.344 15.001 L 395.438 15.000 395.802 15.835 C 396.003 16.294,396.167 16.749,396.167 16.846 C 396.167 16.942,396.362 17.448,396.602 17.969 C 396.841 18.490,397.102 19.085,397.181 19.292 C 397.313 19.635,397.432 19.667,398.579 19.667 C 400.005 19.667,399.999 19.675,399.417 18.401 C 399.188 17.900,399.000 17.429,399.000 17.354 C 399.000 17.279,398.892 17.000,398.759 16.734 C 398.375 15.962,397.491 13.812,397.250 13.064 C 397.129 12.686,396.875 12.074,396.686 11.704 C 396.497 11.334,396.236 10.743,396.105 10.390 C 395.594 9.012,395.133 7.879,394.742 7.037 C 394.517 6.553,394.333 6.080,394.333 5.985 C 394.333 5.890,394.134 5.405,393.890 4.906 L 393.446 4.000 392.243 4.000 C 391.081 4.000,391.035 4.016,390.879 4.458 M351.028 6.371 C 351.775 6.698,352.027 7.135,352.059 8.162 C 352.116 9.991,351.544 10.327,348.164 10.452 L 345.500 10.551 345.500 8.258 L 345.500 5.964 347.958 6.034 C 349.721 6.084,350.590 6.179,351.028 6.371 M392.550 7.075 C 392.601 7.391,392.759 7.897,392.902 8.200 C 393.148 8.724,393.396 9.394,394.245 11.833 L 394.623 12.917 392.372 12.963 C 389.804 13.016,389.888 13.042,390.227 12.305 C 390.517 11.675,391.081 10.113,391.420 9.000 C 392.195 6.455,392.394 6.115,392.550 7.075 M351.369 12.889 C 352.727 13.497,353.236 15.164,352.427 16.354 C 351.723 17.390,351.110 17.573,348.125 17.638 L 345.500 17.696 345.500 15.081 L 345.500 12.465 348.125 12.538 C 350.089 12.593,350.906 12.681,351.369 12.889 \",\n stroke: \"none\",\n fill: \"#bcbcc3\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"path1\",\n d: \"M6.000 33.859 C 4.747 34.150,4.825 33.640,4.873 41.230 L 4.917 48.083 12.157 48.127 C 17.091 48.156,19.453 48.114,19.573 47.994 C 20.517 47.050,19.537 41.290,18.044 39.000 C 17.451 38.092,14.934 35.500,14.644 35.500 C 14.561 35.500,14.213 35.315,13.871 35.089 C 12.168 33.964,8.215 33.346,6.000 33.859 \",\n stroke: \"none\",\n fill: \"#5cdc63\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"path2\",\n d: \"M7.705 0.256 C 7.222 0.387,6.607 0.609,6.338 0.747 C 6.070 0.886,5.776 1.000,5.687 1.000 C 5.313 1.000,3.519 2.363,2.667 3.295 C 1.352 4.731,1.357 4.724,0.690 6.221 L 0.083 7.583 0.039 30.379 L -0.005 53.174 21.456 53.129 L 42.917 53.083 44.250 52.614 C 47.358 51.520,50.306 48.378,50.768 45.667 C 50.807 45.438,50.913 44.890,51.003 44.450 C 51.301 42.992,51.216 10.035,50.909 8.282 C 50.557 6.271,49.356 4.085,47.839 2.697 C 47.318 2.220,45.563 1.000,45.397 1.000 C 45.331 1.000,44.783 0.794,44.180 0.542 L 43.083 0.083 25.833 0.050 C 11.284 0.021,8.446 0.054,7.705 0.256 M41.994 5.014 C 43.974 5.439,45.875 7.403,46.075 9.230 C 46.126 9.699,46.107 17.771,46.034 27.167 C 45.881 46.657,46.037 44.862,44.343 46.589 C 42.914 48.046,44.221 47.954,23.205 48.078 L 4.826 48.186 4.936 28.801 C 5.063 6.529,4.917 8.407,6.650 6.651 C 8.173 5.108,7.630 5.167,20.474 5.167 C 27.632 5.167,31.516 5.108,31.583 5.000 C 31.727 4.768,40.902 4.780,41.994 5.014 M67.450 10.439 C 67.122 10.766,67.325 42.484,67.656 42.661 C 67.838 42.759,69.101 42.833,70.568 42.833 L 73.158 42.833 73.414 42.338 C 73.630 41.920,73.666 41.015,73.646 36.525 C 73.633 33.600,73.677 31.118,73.744 31.010 C 74.060 30.498,74.839 30.424,80.833 30.328 C 87.421 30.224,87.500 30.213,88.768 29.249 C 89.655 28.574,90.169 27.941,90.699 26.870 L 91.148 25.962 91.158 21.023 C 91.167 16.134,91.075 15.094,90.545 14.080 C 90.450 13.898,90.270 13.533,90.145 13.268 C 89.817 12.571,88.634 11.461,87.624 10.901 L 86.750 10.417 77.158 10.370 C 71.882 10.344,67.513 10.375,67.450 10.439 M96.944 10.444 C 96.673 10.715,96.822 42.298,97.095 42.571 C 97.533 43.009,102.590 42.955,102.827 42.511 C 103.014 42.162,103.084 11.079,102.899 10.597 C 102.794 10.323,97.209 10.180,96.944 10.444 M113.583 10.446 C 113.064 10.560,112.167 11.059,112.167 11.232 C 112.167 11.318,112.116 11.338,112.054 11.276 C 111.892 11.115,110.544 12.649,110.320 13.248 C 110.217 13.524,110.070 13.900,109.992 14.083 C 109.527 15.184,109.480 16.562,109.531 27.500 L 109.583 38.750 110.026 39.667 C 110.533 40.715,111.338 41.616,112.369 42.286 L 113.083 42.750 120.725 42.800 C 129.577 42.857,129.449 42.874,130.913 41.438 C 132.476 39.904,132.638 39.363,132.660 35.585 C 132.682 31.674,132.975 32.000,129.433 32.000 C 126.397 32.000,126.500 31.934,126.500 33.881 C 126.500 35.122,126.266 36.149,125.933 36.368 C 125.533 36.631,116.362 36.433,116.084 36.155 C 115.816 35.887,115.664 17.802,115.924 17.124 C 116.106 16.650,116.527 16.598,120.685 16.536 C 126.065 16.456,126.276 16.512,126.443 18.083 C 126.615 19.710,126.481 19.644,129.661 19.646 C 132.758 19.648,132.667 19.723,132.665 17.199 C 132.662 13.816,131.771 12.060,129.441 10.843 L 128.466 10.333 121.191 10.353 C 117.190 10.363,113.767 10.405,113.583 10.446 M139.278 10.444 C 138.970 10.752,139.160 42.276,139.471 42.558 C 139.727 42.789,140.186 42.833,142.309 42.833 L 144.842 42.833 145.004 42.406 C 145.094 42.169,145.167 40.094,145.167 37.750 C 145.167 32.982,145.153 33.052,146.363 31.765 C 147.478 30.579,147.849 30.491,148.459 31.271 C 148.711 31.593,149.085 32.058,149.291 32.303 C 149.498 32.549,149.666 32.809,149.666 32.882 C 149.667 32.954,149.809 33.217,149.983 33.465 C 150.249 33.845,151.137 35.253,151.951 36.587 C 152.601 37.651,154.139 40.143,154.461 40.652 C 154.669 40.981,154.884 41.381,154.939 41.542 C 154.994 41.702,155.100 41.833,155.175 41.833 C 155.250 41.833,155.355 41.972,155.409 42.141 C 155.590 42.713,156.242 42.833,159.161 42.833 C 162.706 42.833,162.992 42.722,162.167 41.667 C 161.987 41.438,161.839 41.196,161.837 41.131 C 161.835 41.065,161.416 40.364,160.905 39.573 C 160.395 38.782,159.926 38.011,159.863 37.859 C 159.800 37.707,159.402 37.054,158.979 36.406 C 158.555 35.759,158.157 35.065,158.093 34.865 C 158.030 34.664,157.925 34.500,157.860 34.500 C 157.795 34.500,157.595 34.219,157.414 33.875 C 157.234 33.531,157.048 33.212,157.002 33.167 C 156.816 32.985,156.167 32.007,156.167 31.910 C 156.167 31.853,155.914 31.419,155.605 30.945 C 155.296 30.471,154.830 29.708,154.570 29.250 C 154.309 28.792,153.727 27.864,153.275 27.187 C 151.790 24.962,151.776 24.330,153.168 22.356 C 153.580 21.773,154.042 21.106,154.196 20.874 C 154.349 20.642,154.540 20.407,154.619 20.351 C 154.699 20.295,154.986 19.894,155.257 19.459 C 155.528 19.023,155.793 18.667,155.845 18.667 C 155.897 18.667,156.234 18.217,156.595 17.667 C 156.955 17.118,157.306 16.668,157.375 16.667 C 157.444 16.667,157.500 16.592,157.500 16.500 C 157.500 16.408,157.619 16.202,157.765 16.042 C 157.911 15.881,158.699 14.813,159.517 13.667 C 160.335 12.521,161.120 11.446,161.262 11.278 C 161.921 10.498,161.651 10.420,158.165 10.376 C 154.403 10.328,154.890 10.139,153.332 12.250 C 152.655 13.167,152.041 13.942,151.968 13.972 C 151.894 14.003,151.833 14.116,151.833 14.224 C 151.833 14.332,151.665 14.608,151.458 14.839 C 151.252 15.069,150.824 15.631,150.507 16.087 C 150.190 16.543,149.871 16.942,149.798 16.972 C 149.726 17.003,149.667 17.133,149.667 17.262 C 149.667 17.392,149.517 17.591,149.333 17.705 C 149.150 17.820,149.000 17.974,149.000 18.047 C 149.000 18.417,147.187 20.293,146.649 20.481 C 146.213 20.633,146.109 20.603,145.785 20.233 C 145.226 19.594,145.201 19.381,145.183 15.136 C 145.174 12.965,145.094 10.996,145.004 10.761 L 144.842 10.333 142.115 10.333 C 140.616 10.333,139.339 10.383,139.278 10.444 M168.679 10.791 C 167.698 11.297,166.618 12.401,166.042 13.490 C 165.441 14.624,165.459 24.513,166.063 25.462 C 167.763 28.131,168.837 28.467,176.063 28.592 C 183.386 28.718,182.896 28.401,182.805 32.959 L 182.750 35.669 182.277 36.075 L 181.804 36.481 177.110 36.490 C 171.565 36.502,171.955 36.643,171.840 34.587 C 171.727 32.578,171.870 32.661,168.550 32.680 L 165.849 32.696 165.739 33.429 C 165.510 34.958,165.737 38.868,166.091 39.480 C 166.270 39.790,166.503 40.193,166.609 40.375 C 166.917 40.907,167.852 41.730,168.750 42.259 L 169.583 42.750 177.192 42.792 L 184.800 42.835 185.837 42.344 C 186.584 41.991,187.102 41.585,187.686 40.894 C 189.231 39.067,189.174 39.384,189.118 32.833 L 189.069 27.083 188.610 26.029 C 188.094 24.843,187.399 23.996,186.417 23.358 C 184.851 22.341,184.993 22.361,179.001 22.340 C 171.507 22.314,171.790 22.432,171.761 19.333 C 171.737 16.619,172.010 16.493,177.865 16.517 C 182.938 16.537,182.737 16.487,182.798 17.757 C 182.888 19.616,182.975 19.663,186.286 19.615 C 189.157 19.574,189.028 19.706,189.021 16.812 C 189.015 14.521,188.937 14.156,188.188 12.917 C 187.887 12.419,186.667 11.116,186.667 11.292 C 186.667 11.343,186.535 11.270,186.375 11.129 C 185.464 10.331,185.495 10.333,177.292 10.333 L 169.567 10.333 168.679 10.791 M193.363 10.478 C 193.040 10.683,193.042 16.113,193.364 16.436 C 193.539 16.610,194.458 16.672,197.370 16.706 C 199.980 16.736,201.211 16.810,201.345 16.945 C 201.762 17.362,201.819 18.978,201.826 30.536 C 201.833 42.178,201.842 42.493,202.156 42.661 C 202.577 42.886,207.256 42.886,207.678 42.661 C 207.992 42.493,208.000 42.175,208.004 30.036 C 208.007 18.016,208.019 17.569,208.327 17.167 L 208.647 16.750 212.449 16.709 C 215.799 16.673,216.275 16.635,216.458 16.385 C 216.677 16.089,216.761 11.453,216.562 10.708 L 216.461 10.333 205.022 10.336 C 198.731 10.337,193.484 10.401,193.363 10.478 M224.417 10.726 C 222.620 11.565,221.438 13.101,221.172 14.943 C 220.895 16.858,220.949 38.111,221.233 39.055 C 221.452 39.782,222.544 41.515,222.862 41.640 C 222.941 41.671,223.098 41.788,223.211 41.900 C 224.071 42.751,224.028 42.747,232.558 42.798 L 240.532 42.846 241.558 42.340 C 242.705 41.775,243.343 41.080,244.086 39.583 L 244.583 38.583 244.631 27.250 C 244.679 15.767,244.663 15.392,244.064 13.781 C 243.557 12.418,242.223 11.115,240.760 10.554 C 240.399 10.416,238.066 10.355,232.750 10.348 L 225.250 10.337 224.417 10.726 M251.283 10.439 C 250.956 10.766,251.159 42.484,251.489 42.661 C 252.159 43.020,256.964 42.879,257.169 42.495 C 257.290 42.270,257.346 40.370,257.338 36.828 C 257.321 29.677,256.586 30.320,264.751 30.338 C 270.363 30.350,271.400 30.238,272.137 29.542 C 272.258 29.427,272.408 29.333,272.470 29.332 C 272.532 29.332,272.826 29.088,273.122 28.791 C 274.916 26.989,274.857 27.278,274.800 20.546 L 274.750 14.750 274.146 13.687 C 273.388 12.352,272.497 11.427,271.421 10.859 L 270.583 10.417 260.991 10.370 C 255.716 10.344,251.347 10.375,251.283 10.439 M288.417 10.471 C 287.673 10.721,286.334 11.568,286.247 11.843 C 286.196 12.004,286.048 12.176,285.919 12.226 C 285.658 12.326,284.965 13.748,284.684 14.761 C 284.560 15.206,284.502 19.149,284.501 27.037 L 284.500 38.657 284.926 39.620 C 285.404 40.702,285.872 41.250,287.079 42.139 L 287.908 42.750 296.162 42.750 C 305.480 42.750,304.814 42.835,306.333 41.448 C 307.981 39.944,308.000 39.822,308.000 30.988 L 308.000 23.352 307.630 23.093 C 307.163 22.766,297.805 22.702,297.105 23.020 C 296.561 23.268,296.505 23.547,296.502 26.030 C 296.499 28.840,296.492 28.833,299.506 28.833 L 301.634 28.833 301.817 29.358 C 301.920 29.654,302.000 31.041,302.000 32.541 C 302.000 35.672,301.842 36.232,300.910 36.407 C 299.764 36.622,291.379 36.487,291.053 36.249 C 290.587 35.908,290.582 17.347,291.048 16.881 C 291.423 16.505,301.150 16.416,301.518 16.785 C 301.629 16.896,301.802 17.571,301.902 18.285 L 302.083 19.583 304.811 19.629 C 308.202 19.686,308.001 19.830,307.996 17.355 C 307.988 13.755,307.293 12.276,304.932 10.833 L 304.250 10.417 296.500 10.388 C 292.237 10.372,288.600 10.409,288.417 10.471 M317.317 10.805 C 316.501 11.203,315.170 12.374,315.167 12.696 C 315.167 12.759,315.068 12.909,314.946 13.030 C 314.199 13.777,314.148 14.755,314.210 27.167 C 314.242 33.629,314.332 39.140,314.411 39.413 C 314.687 40.373,315.907 41.738,317.169 42.500 C 318.321 43.195,335.000 42.871,335.000 42.153 C 335.000 42.069,335.098 42.000,335.217 42.000 C 335.556 42.000,336.710 40.670,337.168 39.750 L 337.583 38.917 337.630 31.266 L 337.676 23.615 337.309 23.224 L 336.942 22.833 331.917 22.833 L 326.891 22.833 326.529 23.219 C 326.194 23.576,326.167 23.772,326.169 25.844 C 326.173 28.851,326.154 28.833,329.326 28.833 C 331.703 28.833,331.484 28.470,331.484 32.419 C 331.484 35.650,331.381 36.238,330.790 36.393 C 329.615 36.700,321.052 36.501,320.656 36.157 L 320.250 35.806 320.197 27.444 C 320.141 18.522,320.184 17.555,320.663 16.963 C 320.970 16.584,320.981 16.583,325.693 16.583 C 331.563 16.583,331.276 16.514,331.417 17.958 C 331.600 19.836,331.287 19.667,334.577 19.667 C 337.964 19.667,337.667 19.896,337.666 17.278 C 337.664 13.886,336.650 11.865,334.417 10.807 L 333.417 10.334 325.833 10.342 L 318.250 10.350 317.317 10.805 M23.083 16.186 C 16.328 17.909,13.088 25.132,16.171 31.593 C 16.453 32.184,16.755 32.667,16.842 32.667 C 16.929 32.667,17.000 32.770,17.000 32.897 C 17.000 33.152,19.294 35.500,19.542 35.500 C 19.628 35.500,19.898 35.639,20.141 35.809 C 22.217 37.262,25.963 37.708,28.560 36.813 C 34.094 34.906,36.656 30.358,35.733 24.083 C 34.956 18.805,28.534 14.795,23.083 16.186 M237.953 16.881 C 238.442 17.371,238.490 35.677,238.003 36.164 C 237.689 36.477,237.437 36.493,232.758 36.487 L 227.842 36.481 227.505 36.051 C 227.175 35.632,227.167 35.410,227.167 26.655 C 227.167 17.006,227.172 16.940,228.035 16.682 C 229.096 16.365,237.607 16.535,237.953 16.881 M84.079 16.862 C 84.675 17.133,84.750 17.547,84.750 20.538 L 84.750 23.159 84.288 23.621 L 83.826 24.083 79.065 24.083 L 74.304 24.083 73.892 23.604 C 73.271 22.882,73.340 17.500,73.977 16.985 C 74.456 16.597,83.263 16.490,84.079 16.862 M267.833 16.879 C 268.430 17.184,268.626 17.975,268.656 20.205 C 268.709 24.189,268.866 24.083,262.885 24.083 L 258.138 24.083 257.736 23.616 C 257.029 22.794,257.158 17.280,257.894 16.801 C 258.240 16.577,267.382 16.649,267.833 16.879 M276.750 35.670 C 272.638 36.562,272.983 42.833,277.144 42.833 C 279.636 42.833,280.978 40.839,280.491 37.863 C 280.302 36.711,278.047 35.389,276.750 35.670 \",\n stroke: \"none\",\n fill: \"#fcb304\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"path3\",\n d: \"M31.489 5.446 C 31.217 6.160,31.281 8.938,31.595 10.083 C 31.746 10.633,31.928 11.324,31.999 11.619 C 32.070 11.913,32.283 12.401,32.472 12.702 C 32.661 13.003,32.945 13.512,33.104 13.833 C 34.926 17.513,41.328 20.088,45.542 18.837 L 46.167 18.651 46.167 14.176 C 46.167 8.790,46.023 8.058,44.704 6.707 C 43.152 5.117,43.030 5.091,36.958 5.031 L 31.666 4.979 31.489 5.446 M189.060 17.000 C 189.060 17.871,189.088 18.227,189.123 17.792 C 189.157 17.356,189.157 16.644,189.123 16.208 C 189.088 15.773,189.060 16.129,189.060 17.000 M300.042 22.791 C 301.210 22.820,303.123 22.820,304.292 22.791 C 305.460 22.763,304.504 22.739,302.167 22.739 C 299.829 22.739,298.873 22.763,300.042 22.791 M329.708 22.791 C 330.877 22.820,332.790 22.820,333.958 22.791 C 335.127 22.763,334.171 22.739,331.833 22.739 C 329.496 22.739,328.540 22.763,329.708 22.791 \",\n stroke: \"none\",\n fill: \"#fc4443\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"path4\",\n d: \"M31.609 4.958 C 31.566 5.027,33.006 5.064,34.807 5.041 C 40.981 4.960,41.580 4.904,36.635 4.869 C 33.913 4.849,31.651 4.890,31.609 4.958 M193.065 13.500 C 193.065 14.737,193.092 15.244,193.124 14.625 C 193.156 14.006,193.156 12.994,193.124 12.375 C 193.092 11.756,193.065 12.262,193.065 13.500 M119.125 16.625 C 120.248 16.653,122.085 16.653,123.208 16.625 C 124.331 16.596,123.412 16.572,121.167 16.572 C 118.921 16.572,118.002 16.596,119.125 16.625 M175.532 16.624 C 176.695 16.653,178.645 16.653,179.865 16.625 C 181.085 16.596,180.133 16.573,177.750 16.573 C 175.367 16.573,174.368 16.596,175.532 16.624 M230.532 16.624 C 231.695 16.653,233.645 16.653,234.865 16.625 C 236.085 16.596,235.133 16.573,232.750 16.573 C 230.367 16.573,229.368 16.596,230.532 16.624 M294.125 16.625 C 295.340 16.653,297.327 16.653,298.542 16.625 C 299.756 16.596,298.762 16.573,296.333 16.573 C 293.904 16.573,292.910 16.596,294.125 16.625 M323.698 16.624 C 324.862 16.653,326.812 16.653,328.032 16.625 C 329.252 16.596,328.300 16.573,325.917 16.573 C 323.533 16.573,322.535 16.596,323.698 16.624 M195.792 16.791 C 196.640 16.821,198.027 16.821,198.875 16.791 C 199.723 16.761,199.029 16.736,197.333 16.736 C 195.637 16.736,194.944 16.761,195.792 16.791 M210.717 16.791 C 211.616 16.821,213.041 16.821,213.884 16.791 C 214.727 16.761,213.992 16.736,212.250 16.736 C 210.508 16.736,209.818 16.761,210.717 16.791 M171.718 19.250 C 171.719 19.800,171.750 20.005,171.787 19.705 C 171.825 19.406,171.824 18.956,171.786 18.705 C 171.748 18.455,171.717 18.700,171.718 19.250 M84.730 20.333 C 84.730 21.387,84.757 21.819,84.790 21.292 C 84.823 20.765,84.823 19.902,84.790 19.375 C 84.757 18.848,84.730 19.279,84.730 20.333 M268.564 20.500 C 268.564 21.646,268.591 22.115,268.623 21.542 C 268.656 20.969,268.656 20.031,268.623 19.458 C 268.591 18.885,268.564 19.354,268.564 20.500 M77.051 24.125 C 78.225 24.153,80.100 24.153,81.218 24.124 C 82.336 24.096,81.375 24.072,79.083 24.072 C 76.792 24.072,75.877 24.096,77.051 24.125 M260.792 24.125 C 261.915 24.153,263.752 24.153,264.875 24.125 C 265.998 24.096,265.079 24.072,262.833 24.072 C 260.587 24.072,259.669 24.096,260.792 24.125 M172.875 28.615 C 173.035 28.657,173.298 28.657,173.458 28.615 C 173.619 28.573,173.487 28.539,173.167 28.539 C 172.846 28.539,172.715 28.573,172.875 28.615 M175.375 28.615 C 175.535 28.657,175.798 28.657,175.958 28.615 C 176.119 28.573,175.987 28.539,175.667 28.539 C 175.346 28.539,175.215 28.573,175.375 28.615 M78.042 30.458 C 79.577 30.486,82.090 30.486,83.625 30.458 C 85.160 30.431,83.904 30.408,80.833 30.408 C 77.762 30.408,76.506 30.431,78.042 30.458 M261.635 30.458 C 263.131 30.486,265.531 30.486,266.969 30.458 C 268.407 30.430,267.183 30.408,264.250 30.408 C 261.317 30.408,260.140 30.430,261.635 30.458 M189.042 31.083 C 189.044 31.450,189.078 31.580,189.118 31.373 C 189.158 31.166,189.156 30.866,189.115 30.706 C 189.073 30.547,189.040 30.717,189.042 31.083 M257.408 36.583 C 257.408 39.517,257.430 40.693,257.458 39.198 C 257.486 37.702,257.486 35.302,257.458 33.865 C 257.430 32.427,257.408 33.650,257.408 36.583 \",\n stroke: \"none\",\n fill: \"#fc9c0c\",\n fillRule: \"evenodd\"\n }))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgPickstopLogoGgNew, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/PickstopLogoGGNew.f055e291.svg\";\nexport { ForwardRef as ReactComponent };","import {\n\tButton,\n\tCard,\n\tCardContent,\n\tGrid,\n\tmakeStyles,\n\tTypography,\n} from \"@material-ui/core\";\nimport { LockOutlined, LockOpen, Block } from \"@material-ui/icons\";\nimport * as React from \"react\";\nimport EventHelper from \"common/helpers/eventHelper/eventHelper\";\nimport PicksHelper from \"common/picksHelper\";\nimport { ReactComponent as PickstopLogo } from \"icons/PickstopLogoGGNew.svg\";\nimport { Colors } from \"styles/Colors\";\nimport { changeUrl } from \"common/history\";\nimport { ReactComponent as DiscordIcon } from \"icons/DiscordIcon.svg\";\nimport { ReactComponent as RedditIcon } from \"icons/RedditIcon.svg\";\n\nconst useStyles = makeStyles((theme) => ({\n\tcard: {\n\t\tcolor: Colors.primary,\n\t\tbackgroundColor: `${Colors.panel}`,\n\t\tcursor: \"pointer\",\n\t\tmargin: \"10px\",\n\t\theight: 330,\n\n\t\t\"&:hover\": {\n\t\t\tbackgroundColor: Colors.panelLight,\n\t\t},\n\t},\n\tcardContent: {\n\t\tpadding: \"0px\",\n\t\theight: \"100%\",\n\t\tposition: \"relative\",\n\t\tboxSizing: \"border-box\",\n\t\tmargin: 8,\n\t},\n\tdescription: {\n\t\tjustifyContent: \"center\",\n\t\tpadding: \"0px 20px 10px 20px\",\n\t},\n\tgameLogo: {\n\t\tmaxHeight: \"100px\",\n\t\tmargin: \"30px 0\",\n\t},\n\tgameTitle: {\n\t\twhiteSpace: \"nowrap\",\n\t},\n\tlanding: {\n\t\ttextAlign: \"center\",\n\t},\n\tlockIcon: {\n\t\tverticalAlign: \"top\",\n\t\tmarginLeft: \"2px\",\n\t},\n\tlogo: {\n\t\tmarginTop: \"30px\",\n\t\twidth: \"20rem\",\n\t},\n\ttrophy: {\n\t\tmaxHeight: \"40px\",\n\t\tverticalAlign: \"middle\",\n\t},\n\ttrophyContainer: {\n\t\talignSelf: \"center\",\n\t},\n\twelcome: {\n\t\twidth: \"80%\",\n\t},\n\teventProgress: {\n\t\tposition: \"absolute\",\n\t\tbottom: 24,\n\t\tdisplay: \"block\",\n\t\twidth: \"100%\",\n\t},\n\ticon: {\n\t\tcursor: \"pointer\",\n\t\tmargin: \"2px 4px\",\n\t},\n\tpanel: {\n\t\tbackgroundColor: Colors.panel,\n\t\twidth: \"fit-content\",\n\t\tpadding: 5,\n\t\tmarginTop: 8,\n\t\tborderRadius: 12,\n\t\tposition: \"relative\",\n\t\theight: 36,\n\t\tdisplay: \"flex\",\n\t\talignContent: \"center\",\n\t},\n}));\n\nexport default function LandingScreen() {\n\tconst styles = useStyles();\n\tconst [csInfo, setCsInfo] = React.useState({\n\t\teventName: \"\",\n\t\tpicksMessage: \"\",\n\t\tpicksIcon: <>,\n\t\tcolor: Colors.primaryDarker\n\t});\n\tconst [rlInfo, setRlInfo] = React.useState({\n\t\teventName: \"\",\n\t\tpicksMessage: \"\",\n\t\tpicksIcon: <>,\n\t\tcolor: Colors.primaryDarker\n\t});\n\n\tReact.useEffect(() => {\n\t\tconst loadCurrentEvents = async () => {\n\t\t\t// returns message and icon\n\t\t\tconst getGameInfo = (picksHelper) => {\n\t\t\t\tif (picksHelper.isFinished()) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: \"Event complete\",\n\t\t\t\t\t\tcolor: Colors.primaryDarker,\n\t\t\t\t\t\ticon: <>,\n\t\t\t\t\t};\n\t\t\t\t} else if (picksHelper.isLocked()) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: \"Picks currently locked\",\n\t\t\t\t\t\tcolor: Colors.primaryDarker,\n\t\t\t\t\t\ticon: (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: \"Picks currently open\",\n\t\t\t\t\t\tcolor: Colors.pickstopGreen,\n\t\t\t\t\t\ticon: (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst events = await EventHelper.getCurrentEvents();\n\t\t\tconst rlInfo = getGameInfo(new PicksHelper(events[0]));\n\t\t\tconst csInfo = getGameInfo(new PicksHelper(events[1]));\n\n\t\t\tsetRlInfo({\n\t\t\t\teventName: events[0].nameOverride,\n\t\t\t\tpicksMessage: rlInfo.message,\n\t\t\t\tpicksIcon: rlInfo.icon,\n\t\t\t\tcolor: rlInfo.color,\n\t\t\t});\n\n\t\t\tsetCsInfo({\n\t\t\t\teventName: events[1].nameOverride,\n\t\t\t\tpicksMessage: csInfo.message,\n\t\t\t\tpicksIcon: csInfo.icon,\n\t\t\t\tcolor: csInfo.color,\n\t\t\t});\n\t\t};\n\t\tloadCurrentEvents();\n\t}, []);\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t

\n\t\t\t\t\tWelcome to Pickstop, a web platform for free pick'em competitions.\n\t\t\t\t

\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\tPick your winning teams, compete against your friends, and earn\n\t\t\t\t\t\t\ttrophies for your global ranking.\n\t\t\t\t\t\t

\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t window.location.href = \"/cs\"}>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tCounter-Strike\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{csInfo.eventName}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{csInfo.picksMessage}\n\t\t\t\t\t\t\t\t{csInfo.picksIcon}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t window.location.href = \"/rl\"}>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tRocket League\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{rlInfo.eventName}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{rlInfo.picksMessage}\n\t\t\t\t\t\t\t\t{rlInfo.picksIcon}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tchangeUrl(\"/about-us\");\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\tstyle={{ backgroundColor: Colors.body }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tAbout Us\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\twindow.open(\"https://discord.gg/r8ujzkRYeF\", \"_blank\");\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName={styles.icon}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\twindow.open(\n\t\t\t\t\t\t\t\t\t\"https://www.reddit.com/user/pickstopgg/\",\n\t\t\t\t\t\t\t\t\t\"_blank\"\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName={styles.icon}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n","import { makeStyles } from \"@material-ui/core\";\nimport EventSelector from \"common/components/EventSelector/EventSelector\";\nimport { connect } from \"common/connect\";\nimport EventHelper from \"common/helpers/eventHelper/eventHelper\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport EventRenderer from \"components/screens/EventRenderer/EventRenderer\";\nimport * as React from \"react\";\nimport EventService from \"services/EventService\";\n\nconst useStyles = makeStyles(() => {\n\treturn {\n\t\tcontainer: {\n\t\t\twidth: \"100%\",\n\t\t},\n\t};\n});\n\nconst propKeys = {\n\tevents: StoreKeys.ADMIN.PICKS.EVENTS,\n};\n\nfunction AdminPickOverrideC(props) {\n\tconst classNames = useStyles();\n\tconst [events, setEvents] = React.useState(null);\n\n\tReact.useEffect(() => {\n\t\tif (events.length === 0) {\n\t\t\tEventService.getCurrentSeasonEvents().then((events) => {\n\t\t\t\tsetEvents(events);\n\t\t\t});\n\t\t}\n\t});\n\n\tconst onEventChange = async (eventId) => {\n\t\tawait EventHelper.fullLoadEvent(eventId);\n\t\tStore.set(StoreKeys.EVENT.IS_EDITING, false);\n\t};\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\n\t\t
\n\t);\n}\n\nexport default function AdminPickOverride(props) {\n\treturn connect(, propKeys, props);\n}\n","import { SetLoading } from \"common/components/Loader/Loader\";\nimport { GetCurrentGamePrefix } from \"common/constants/Games\";\nimport { LocalStorageKeys } from \"common/constants/StorageKeys\";\nimport { changeUrl } from \"common/history\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport UserManager from \"common/userManager\";\nimport React from \"react\";\nimport { redditSignIn } from \"./api\";\nimport * as queryString from \"query-string\";\n\nexport default class SignInReddit extends React.Component {\n\tasync componentDidMount() {\n\t\tSetLoading(true, \"Signing in with Reddit\");\n\n\t\tconst searchParams = queryString.parse(window.location.search);\n\t\tconst code = searchParams.code;\n\t\ttry {\n\t\t\tconst result = await redditSignIn(code);\n\t\t\tUserManager.handlePostLogin(result);\n\t\t\tconst route = GetCurrentGamePrefix();\n\n\t\t\tSetLoading(false);\n\t\t\tif (result.usernameIsEmail) {\n\t\t\t\tchangeUrl(route + \"/event\");\n\t\t\t} else if (result.created) {\n\t\t\t\tStore.set(StoreKeys.LOGIN_PROVIDER, \"reddit\");\n\t\t\t\tchangeUrl(\"/pick-username\");\n\t\t\t} else {\n\t\t\t\tconst redirect = localStorage.getItem(LocalStorageKeys.POSTLOGINURL);\n\t\t\t\tif (redirect) {\n\t\t\t\t\tlocalStorage.removeItem(LocalStorageKeys.POSTLOGINURL);\n\t\t\t\t\tchangeUrl(redirect);\n\t\t\t\t} else {\n\t\t\t\t\tchangeUrl(route + \"/event\");\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tSetLoading(false);\n\t\t\tconst route = GetCurrentGamePrefix();\n\t\t\tchangeUrl(route + \"/event\");\n\t\t}\n\t}\n\n\trender() {\n\t\treturn <>;\n\t}\n}\n","import { SetLoading } from \"common/components/Loader/Loader\";\nimport { GetCurrentGamePrefix } from \"common/constants/Games\";\nimport { LocalStorageKeys } from \"common/constants/StorageKeys\";\nimport { changeUrl } from \"common/history\";\nimport React from \"react\";\nimport { linkDiscord } from \"./api\";\n\nexport default class LinkDiscord extends React.Component {\n\tasync componentDidMount() {\n\t\tSetLoading(true, \"Linking Discord account\");\n\n\t\tconst code = this.props.location.search.substring(6);\n\t\ttry {\n\t\t\tawait linkDiscord(code);\n\t\t} catch (error) {}\n\n\t\tSetLoading(false);\n\t\tconst redirect = localStorage.getItem(LocalStorageKeys.POSTLINKURL);\n\t\tif (redirect) {\n\t\t\tlocalStorage.removeItem(LocalStorageKeys.POSTLINKURL);\n\t\t\tchangeUrl(redirect);\n\t\t} else {\n\t\t\tconst route = GetCurrentGamePrefix();\n\t\t\tchangeUrl(route + \"/event\");\n\t\t}\n\t}\n\n\trender() {\n\t\treturn <>;\n\t}\n}\n","import axiosWrapper from \"common/axiosWrapper\";\n// eslint-disable-next-line no-unused-vars\nimport AuthenticationResultDto from \"common/types/AuthenticationResultDto\";\n\n/**\n * Attempts discord sign in with the provided code.\n *\n * @param {string} code The discord access code.\n * @returns {Promise}\n * */\nexport const linkDiscord = async (code) => {\n\treturn await axiosWrapper.get(`api/auth/link-discord?code=${code}`);\n};\n\n/**\n * Attempts google sign in with the provided code.\n *\n * @param {string} code The google access code.\n * @returns {Promise}\n * */\nexport const linkGoogle = async (code) => {\n\treturn await axiosWrapper.get(`api/auth/link-google?code=${code}`);\n};\n\n/**\n * Attempts reddit sign in with the provided code.\n *\n * @param {string} code The reddit access code.\n * @returns {Promise}\n * */\nexport const linkReddit = async (code) => {\n\treturn await axiosWrapper.get(`api/auth/link-reddit?code=${code}`);\n};\n","import { SetLoading } from \"common/components/Loader/Loader\";\nimport { GetCurrentGamePrefix } from \"common/constants/Games\";\nimport { LocalStorageKeys } from \"common/constants/StorageKeys\";\nimport { changeUrl } from \"common/history\";\nimport React from \"react\";\nimport { linkGoogle } from \"./api\";\n\nexport default class LinkGoogle extends React.Component {\n\tasync componentDidMount() {\n\t\tSetLoading(true, \"Linking Google Account\");\n\n\t\tconst code = this.props.location.search.substring(6);\n\t\ttry {\n\t\t\tawait linkGoogle(code);\n\t\t} catch (error) {}\n\n\t\tSetLoading(false);\n\t\tconst redirect = localStorage.getItem(LocalStorageKeys.POSTLINKURL);\n\t\tif (redirect) {\n\t\t\tlocalStorage.removeItem(LocalStorageKeys.POSTLINKURL);\n\t\t\tchangeUrl(redirect);\n\t\t} else {\n\t\t\tconst route = GetCurrentGamePrefix();\n\t\t\tchangeUrl(route + \"/event\");\n\t\t}\n\t}\n\n\trender() {\n\t\treturn <>;\n\t}\n}\n","import { SetLoading } from \"common/components/Loader/Loader\";\nimport { GetCurrentGamePrefix } from \"common/constants/Games\";\nimport { LocalStorageKeys } from \"common/constants/StorageKeys\";\nimport { changeUrl } from \"common/history\";\nimport React from \"react\";\nimport { linkReddit } from \"./api\";\nimport * as queryString from \"query-string\";\n\nexport default class LinkReddit extends React.Component {\n\tasync componentDidMount() {\n\t\tSetLoading(true, \"Linking Reddit Account\");\n\n\t\tconst searchParams = queryString.parse(window.location.search);\n\t\tconst code = searchParams.code;\n\t\ttry {\n\t\t\tawait linkReddit(code);\n\t\t} catch (error) {}\n\n\t\tSetLoading(false);\n\t\tconst redirect = localStorage.getItem(LocalStorageKeys.POSTLINKURL);\n\t\tif (redirect) {\n\t\t\tlocalStorage.removeItem(LocalStorageKeys.POSTLINKURL);\n\t\t\tchangeUrl(redirect);\n\t\t} else {\n\t\t\tconst route = GetCurrentGamePrefix();\n\t\t\tchangeUrl(route + \"/event\");\n\t\t}\n\t}\n\n\trender() {\n\t\treturn <>;\n\t}\n}\n","// eslint-disable-next-line no-unused-vars\nimport { SurveyPromptAnswerDto } from \"./SurveyPromptAnswerDto\";\n\nexport class SurveyPromptDto {\n /** @type {number} */\n promptId;\n /** @type {string} */\n text;\n /** @type {boolean} */\n isMultiSelect;\n /** @type {number} */\n numberOfAnswers;\n /** @type {SurveyPromptAnswerDto[]} */\n answers;\n\n constructor() {\n this.text = \"New Prompt\";\n this.answers = [];\n }\n}\n","// eslint-disable-next-line no-unused-vars\nimport { SurveyPromptDto } from \"./SurveyPromptDto\";\n\nexport class SurveyDto {\n\t/** @type {number} */\n\tsurveyId;\n\t/** @type {string} */\n\ttitle;\n\t/** @type {string} */\n\tdescription;\n\t/** @type {Date} */\n\topenTime;\n\t/** @type {Date} */\n\tcloseTime;\n\t/** @type {SurveyPromptDto[]} */\n\tprompts;\n\n\tconstructor() {\n\t\tthis.openTime = new Date();\n\t\tthis.closeTime = new Date();\n\t\tthis.prompts = [];\n\t}\n}\n","import axiosWrapper from \"common/axiosWrapper\";\n// eslint-disable-next-line no-unused-vars\nimport { SurveyDto } from \"common/types/Survey/SurveyDto\";\n\nconst baseUrl = \"/api/survey\";\n\nexport default class SurveyService {\n\t/**\n\t * Gets the currently active survey for the user.\n\t *\n\t * @returns {Promise}\n\t */\n\tstatic async getCurrentSurvey() {\n\t\treturn await axiosWrapper.getCached(`${baseUrl}/current`);\n\t}\n\n\t/**\n\t * Gets all surveys in the system.\n\t * Note: These dto's only contain the top level data, no child data is returned.\n\t *\n\t * @returns {Promise}\n\t */\n\tstatic async getAllSurveys() {\n\t\treturn await axiosWrapper.get(`${baseUrl}/list`);\n\t}\n\n\t/**\n\t * Loads the full survey details with prompts and answers.\n\t * Note: This should be used to prompt users and for admins editing the survey prior to opening.\n\t *\n\t * @param {number} surveyId The id of the survey to fetch.\n\t * @returns {Promise}\n\t */\n\tstatic async getSpecificSurvey(surveyId) {\n\t\treturn await axiosWrapper.get(`${baseUrl}/${surveyId}`);\n\t}\n\n\t/**\n\t * Saves the survey to the backend.\n\t *\n\t * @param {SurveyDto} surveyDto The survey to save.\n\t * @returns {Promise}\n\t */\n\tstatic async saveSurvey(surveyDto) {\n\t\treturn await axiosWrapper.post(`${baseUrl}/save`, surveyDto);\n\t}\n\n\t/**\n\t * Gets the users answers from the backend.\n\t *\n\t * @param {number} surveyId The id of the survey to get answers for.\n\t * @returns {Promise}\n\t */\n\tstatic async getAnswers(surveyId) {\n\t\treturn await axiosWrapper.get(`${baseUrl}/answers?surveyId=${surveyId}`);\n\t}\n\n\t/**\n\t * Saves the users answers to the backend.\n\t *\n\t * @param {number[]} userAnswerIds The answer ids of the user.\n\t * @returns {Promise}\n\t */\n\tstatic async saveAnswers(userAnswerIds) {\n\t\treturn await axiosWrapper.post(`${baseUrl}/answers`, userAnswerIds);\n\t}\n}\n","import { Button, Container, makeStyles } from \"@material-ui/core\";\nimport { DataGrid } from \"@mui/x-data-grid\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport { connect } from \"common/connect\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\n// eslint-disable-next-line no-unused-vars\nimport { EventFormat } from \"common/types/EventFormat\";\nimport * as React from \"react\";\nimport { useEffect } from \"react\";\nimport { Colors } from \"styles/Colors\";\nimport { Add, Edit, FileCopy } from \"@material-ui/icons\";\nimport { SurveyDto } from \"common/types/Survey/SurveyDto\";\nimport SurveyService from \"services/SurveyService\";\n\nconst propKeys = {\n\tallSurveys: StoreKeys.ADMIN.SURVEYS.ALL,\n};\n\nconst classStyles = makeStyles(() => {\n\treturn {\n\t\tdataGrid: {\n\t\t\tbackgroundColor: Colors.panel,\n\t\t\t\"& .MuiTablePagination-displayedRows\": {\n\t\t\t\tcolor: Colors.primary,\n\t\t\t},\n\t\t\t\"& .MuiTablePagination-actions button\": {\n\t\t\t\tcolor: Colors.primary,\n\t\t\t\t\"&:disabled\": {\n\t\t\t\t\tcolor: Colors.panelLighterColor,\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"& .MuiDataGrid-columnHeaderTitle\": {\n\t\t\t\tcolor: Colors.primary,\n\t\t\t},\n\t\t},\n\t\tdataGridRow: {\n\t\t\tcursor: \"pointer\",\n\t\t\tcolor: Colors.primary,\n\t\t\t\"&:hover\": {\n\t\t\t\tbackgroundColor: `${Colors.panelLight}!important`,\n\t\t\t},\n\t\t\t\"&:focus-within\": {\n\t\t\t\tbackgroundColor: `${Colors.panelLighterColor}!important`,\n\t\t\t},\n\t\t},\n\t\tbutton: {\n\t\t\tcolor: Colors.primary,\n\t\t\tbackgroundColor: Colors.panelLight,\n\t\t\tmargin: \"0 10px\",\n\t\t\t\"&:disabled\": {\n\t\t\t\tcolor: Colors.panelLighterColor,\n\t\t\t\tborder: 0,\n\t\t\t},\n\t\t},\n\t};\n});\n\nconst dateFormatter = (object) => object.value.split(\"T\")[0];\n\nconst columns = [\n\t{ field: \"surveyId\", headerName: \"Survey ID\", hide: true },\n\t{ field: \"title\", headerName: \"Title\", flex: 1 },\n\t{ field: \"description\", headerName: \"Description\", flex: 1 },\n\t{\n\t\tfield: \"openTime\",\n\t\theaderName: \"Open Date\",\n\t\twidth: 150,\n\t\tvalueFormatter: dateFormatter,\n\t},\n\t{\n\t\tfield: \"closeTime\",\n\t\theaderName: \"Close Date\",\n\t\twidth: 150,\n\t\tvalueFormatter: dateFormatter,\n\t},\n\t{\n\t\tfield: \"created\",\n\t\theaderName: \"Date Created\",\n\t\twidth: 150,\n\t\tvalueFormatter: dateFormatter,\n\t},\n\t{\n\t\tfield: \"modified\",\n\t\theaderName: \"Date Modified\",\n\t\twidth: 150,\n\t\tvalueFormatter: dateFormatter,\n\t},\n];\n\n/**\n * @typedef ComponentProps\n * @type {object}\n * @property {SurveyDto} allSurveys\n */\n\n/**\n * @param {ComponentProps} props\n */\nexport function SurveySelectorC(props) {\n\tconst { allSurveys } = props;\n\tconst [rowsSelected, setRowsSelected] = React.useState([]);\n\tconst classNames = classStyles();\n\n\tuseEffect(() => {\n\t\tif (!allSurveys) {\n\t\t\tSetLoading(true, \"Getting Survey\");\n\t\t\tSurveyService.getAllSurveys().then((allSurveys) => {\n\t\t\t\tallSurveys.forEach((s) => (s.id = s.surveyId));\n\t\t\t\tStore.set(StoreKeys.ADMIN.SURVEYS.ALL, allSurveys);\n\t\t\t\tSetLoading(false);\n\t\t\t});\n\t\t}\n\t});\n\n\tfunction addSurvey() {\n\t\tStore.set(StoreKeys.ADMIN.SURVEYS.CURRENT, new SurveyDto());\n\t}\n\n\tfunction editSurvey() {\n\t\tif (rowsSelected.length) {\n\t\t\tSetLoading(true, \"Getting Survey\");\n\n\t\t\tconst surveyId = rowsSelected[0];\n\t\t\tSurveyService.getSpecificSurvey(surveyId).then((survey) => {\n\t\t\t\tStore.set(StoreKeys.ADMIN.SURVEYS.CURRENT, survey);\n\t\t\t\tSetLoading(false);\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction cloneSurvey() {\n\t\tif (rowsSelected.length) {\n\t\t\tSetLoading(true, \"Getting Survey\");\n\n\t\t\tconst surveyId = rowsSelected[0];\n\t\t\tSurveyService.getSpecificSurvey(surveyId).then((toClone) => {\n\t\t\t\tconst survey = {\n\t\t\t\t\t...toClone,\n\t\t\t\t};\n\n\t\t\t\tsurvey.surveyId = 0;\n\t\t\t\tsurvey.openTime = null;\n\t\t\t\tsurvey.closeTime = null;\n\n\t\t\t\t// Remove answers from the prompt, leave question itself.\n\t\t\t\tfor (const prompt of survey.prompts) {\n\t\t\t\t\tprompt.answers = [];\n\t\t\t\t}\n\n\t\t\t\tSetLoading(false);\n\t\t\t});\n\t\t}\n\t}\n\n\treturn (\n\t\t\n\t\t\t classNames.dataGridRow}\n\t\t\t\tonSelectionModelChange={(newRowSelected) => {\n\t\t\t\t\tsetRowsSelected(newRowSelected);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t  Edit\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t  Clone\n\t\t\t\n\t\t
\n\t);\n}\n\nfunction SurveySelector(props) {\n\treturn connect(, propKeys, props);\n}\n\nexport default SurveySelector;\n","import * as React from \"react\";\nimport { Box, Paper as MuiPaper, makeStyles } from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\n\nconst useStyles = makeStyles((theme) => {\n\treturn {\n\t\tpaper: {\n\t\t\tcolor: Colors.primary,\n\t\t\tbackgroundColor: Colors.panel,\n\t\t\toverflow: \"clip\",\n\t\t\theight: \"100%\",\n\t\t\twidth: \"100%\",\n\t\t},\n\t\tpaperInner: {\n\t\t\t\"& .MuiFormControl-root:not(:first-child)\": {\n\t\t\t\tmarginTop: 12,\n\t\t\t},\n\t\t\tboxSizing: \"border-box\",\n\t\t},\n\t};\n});\n\nexport class PaperComponentProps {\n\t/** @type {any} */\n\tchildren;\n\n\t/** @type {number} */\n\tpadding;\n\n\t/** @type {number} */\n\tmargin;\n\n\t/** @type {number} */\n\twidth;\n\n\t/** @type {number} */\n\theight;\n}\n\n/**\n * @param {PaperComponentProps} props\n */\nexport default function Paper({\n\tchildren,\n\tpadding,\n\tmargin,\n\twidth,\n\theight,\n\tonClick,\n\trootClassName,\n}) {\n\tpadding = padding === undefined || padding === null ? 8 : padding;\n\tmargin = margin === undefined || margin === null ? 8 : margin;\n\tconst classNames = useStyles();\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{children}\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n","import * as React from \"react\";\nimport { Grid } from \"@mui/material\";\nimport Paper, { PaperComponentProps } from \"../Paper/Paper\";\nimport { Box } from \"@material-ui/core\";\nimport { AddCircle } from \"@material-ui/icons\";\n\n/**\n * @typedef TileGroupProps\n * @type {object}\n * @property {any[]} items\n * @property {(o: any) => JSX.Element} component\n * @property {any} tileProps\n * @property {PaperComponentProps} paperProps\n * @property {boolean} showAddTile\n * @property {number} tileWidth\n * @property {number} tileHeight\n * @property {string} itemName\n * @property {() => void} onAdd\n */\n\n/**\n *\n * @param {TileGroupProps} props\n * @returns\n */\nexport default function TileGroup({\n items,\n tileProps,\n showAddTile,\n tileWidth,\n tileHeight,\n itemName,\n paperProps,\n component,\n onAdd,\n disableSelect,\n onSelect,\n selectedId,\n selectedIds,\n getItemId,\n selectedClassName,\n}) {\n return (\n \n {items.map((item, index) => {\n let selected = false;\n if (getItemId && (selectedIds ?? []).length > 0) {\n selected = selectedIds.includes(getItemId(item));\n } else if (getItemId && selectedId) {\n selected = getItemId(item) === selectedId;\n }\n\n return (\n \n {\n if (disableSelect || !onSelect) return;\n\n onSelect(item);\n }}\n rootClassName={selected ? selectedClassName : \"\"}\n >\n \n {component(item, index)}\n \n \n \n );\n })}\n {showAddTile && (\n \n \n \n Add {itemName}\n \n \n \n )}\n \n );\n}\n","import * as React from \"react\";\n\n// eslint-disable-next-line no-unused-vars\nimport { SurveyPromptAnswerDto } from \"common/types/Survey/SurveyPromptAnswerDto\";\nimport { Box, makeStyles } from \"@material-ui/core\";\nimport { Colors } from \"styles/Colors\";\n\nconst fillerImage =\n \"https://img.freepik.com/free-vector/square-gray-frame-light-gray-background-vector_53876-167871.jpg?size=338&ext=jpg&ga=GA1.1.1880011253.1699833600&semt=ais\";\n\nconst useStyles = makeStyles((theme) => {\n return {\n selected: {},\n default: {\n position: \"relative\",\n flexDirection: \"column\",\n display: \"flex\",\n justifyContent: \"center\",\n userSelect: \"none\",\n \"& img\": {\n margin: \"auto\",\n },\n \"& label\": {\n textAlign: \"center\",\n display: \"block\",\n userSelect: \"none\",\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n },\n },\n };\n});\n\n/**\n * @typedef ComponentProps\n * @type {object}\n * @property {SurveyPromptAnswerDto} answer\n * @property {boolean} selected\n */\n\n/**\n * @param {ComponentProps} props\n */\nexport default function SurveyAnswerTile({ answer, selected }) {\n const classNames = useStyles();\n return (\n \n {answer.text}\n \n \n );\n}\n","import {\n Box,\n Button,\n Checkbox,\n Container,\n FormControlLabel,\n FormLabel,\n Input,\n TextField,\n makeStyles,\n} from \"@material-ui/core\";\nimport { connect } from \"common/connect\";\nimport StoreKeys from \"common/storeKeys\";\nimport * as React from \"react\";\n// eslint-disable-next-line no-unused-vars\nimport { SurveyDto } from \"common/types/Survey/SurveyDto\";\nimport Store from \"common/store\";\nimport SurveyService from \"services/SurveyService\";\nimport { FormControl } from \"@mui/material\";\nimport { Colors } from \"styles/Colors\";\nimport { toMMDDYYYYWithHourMintues } from \"common/helpers/dateHelper\";\nimport { SurveyPromptDto } from \"common/types/Survey/SurveyPromptDto\";\nimport { toast } from \"react-toastify\";\nimport { AddCircle, RemoveCircle } from \"@material-ui/icons\";\nimport TileGroup from \"common/components/TileGroup/TileGroup\";\nimport Paper from \"common/components/Paper/Paper\";\n// eslint-disable-next-line no-unused-vars\nimport { SurveyPromptAnswerDto } from \"common/types/Survey/SurveyPromptAnswerDto\";\nimport SurveyAnswerTile from \"common/components/SurveyAnswerTile/SurveyAnswerTile\";\n\n/**\n * @typedef ComponentProps\n * @type {object}\n * @property {SurveyDto} current\n */\n\nconst propKeys = {\n current: StoreKeys.ADMIN.SURVEYS.CURRENT,\n};\n\nconst useStyles = makeStyles((theme) => {\n return {\n buttonRow: {\n marginTop: theme.spacing() * 2,\n marginBottom: 12,\n \"& svg\": {\n position: \"relative\",\n top: -2,\n left: -2,\n },\n },\n promptRow: {},\n promptHeader: {\n textAlign: \"left\",\n \"& th\": {\n textDecoration: \"underline\",\n },\n },\n selectedPrompt: {\n background: Colors.panelLighterColor,\n },\n };\n});\n\n/**\n * @param {ComponentProps} props\n */\nfunction SurveyEditorC({ current }) {\n const classNames = useStyles();\n const [selectedIndex, setSelectedIndex] = React.useState(null);\n const [isPreviewing, setIsPreviewing] = React.useState(false);\n const selectedPrompt = current.prompts[selectedIndex];\n\n React.useEffect(() => {\n var isCtrl = false;\n const callback = (e) => {\n if (e.keyCode === 17) {\n e.preventDefault();\n isCtrl = true;\n }\n\n if (e.keyCode === 83 && isCtrl) {\n e.preventDefault();\n save();\n }\n };\n\n window.addEventListener(\"keydown\", callback);\n return () => {\n window.removeEventListener(\"keydown\", callback);\n };\n });\n\n const save = async (isClosing) => {\n await SurveyService.saveSurvey(current).then((surveyId) => {\n if (!isClosing) {\n current.surveyId = surveyId;\n Store.set(StoreKeys.ADMIN.SURVEYS.CURRENT, current);\n }\n toast(\"Survey Saved!\", { type: \"success\" });\n });\n };\n\n const close = () => {\n Store.remove(StoreKeys.ADMIN.SURVEYS.CURRENT);\n };\n\n const saveAndClose = () => {\n save(true).then(() => {\n close();\n });\n };\n\n const updateState = () => {\n Store.set(StoreKeys.ADMIN.SURVEYS.CURRENT, current);\n };\n\n /**\n *\n * @param {React.DragEvent} e\n * @param {number} id\n */\n const onDrag = (e, index) => {\n e.dataTransfer.dropEffect = \"move\";\n e.dataTransfer.setData(\"id\", index.toString());\n };\n\n /**\n *\n * @param {React.DragEvent} e\n * @param {number} id\n */\n const onDrop = (e, index) => {\n e.preventDefault();\n\n // Move old record to current index\n const oldIndex = Number(e.dataTransfer.getData(\"id\"));\n\n // If moving forward\n const recordToMove = current.prompts.splice(oldIndex, 1)[0];\n const backend = current.prompts.splice(index);\n current.prompts.push(recordToMove);\n current.prompts = current.prompts.concat(backend);\n\n updateState();\n };\n\n const addPrompt = () => {\n current.prompts.push(new SurveyPromptDto());\n updateState();\n };\n\n const removePrompt = () => {\n if (selectedIndex) {\n current.prompts.splice(selectedIndex, 1);\n setSelectedIndex(null);\n updateState();\n }\n };\n\n const selectPrompt = (selectedIndex) => {\n setSelectedIndex(selectedIndex);\n };\n\n const addPromptAnswer = () => {\n selectedPrompt.answers.push({\n text: \"\",\n imageUrl: \"\",\n });\n updateState();\n };\n\n const removeAnswer = (index) => {\n selectedPrompt.answers.splice(index, 1);\n updateState();\n };\n\n const togglePreview = () => {\n setIsPreviewing(!isPreviewing);\n };\n\n return (\n \n \n

Survey Editor

\n
\n \n Title / Name\n {\n current.title = e.target.value;\n updateState();\n }}\n />\n \n \n Description\n {\n current.description = e.target.value;\n updateState();\n }}\n />\n \n\n {\n console.log(e.target.value);\n current.openTime = new Date(e.target.value);\n updateState();\n }}\n InputLabelProps={{\n shrink: true,\n }}\n />\n
\n\n {\n current.closeTime = new Date(e.target.value);\n updateState();\n }}\n InputLabelProps={{\n shrink: true,\n }}\n />\n
\n
\n\n
\n \n \n \n
\n
\n \n

Prompt List Editor

\n \n \n \n \n \n \n \n {\n e.preventDefault();\n }}\n onDragOver={(e) => {\n e.preventDefault();\n }}\n >\n {current.prompts?.map((value, i) => (\n selectPrompt(i)}\n draggable={true}\n key={i}\n onDragStart={(e) => onDrag(e, i)}\n onDrop={(e) => onDrop(e, i)}\n >\n \n \n \n ))}\n \n
Prompt# of Answers
{value.text}{value.answers.length}
\n
\n
\n \n \n
\n
\n\n {selectedPrompt && (\n \n

Prompt Answer Editor

\n
\n \n Question\n {\n selectedPrompt.text = e.target.value;\n updateState();\n }}\n />\n \n
\n
\n {\n selectedPrompt.isMultiSelect = e.target.checked;\n updateState();\n }}\n />\n }\n />\n
\n {selectedPrompt.isMultiSelect && (\n
\n \n # of Answers\n {\n selectedPrompt.numberOfAnswers = Number(e.target.value);\n updateState();\n }}\n />\n \n
\n )}\n \n {isPreviewing ? \"Stop Previewing\" : \"Preview \"} Answers\n \n {\n if (isPreviewing) {\n return ;\n } else {\n return (\n \n \n Text\n {\n item.text = e.target.value;\n updateState();\n }}\n />\n \n \n Image URL\n {\n item.imageUrl = e.target.value;\n updateState();\n }}\n />\n \n {\n removeAnswer(index);\n }}\n >\n Remove Answer\n \n \n );\n }\n }\n }\n showAddTile={!isPreviewing}\n paperProps={{\n padding: isPreviewing ? 0 : 8,\n margin: 0,\n }}\n tileWidth={200}\n tileHeight={224}\n maxItemsPerRow={2}\n onAdd={addPromptAnswer.bind(this)}\n />\n\n
\n \n \n \n
\n
\n )}\n
\n );\n}\n\nfunction SurveyEditor(props) {\n return connect(, propKeys, props);\n}\n\nexport default SurveyEditor;\n","import { Container } from \"@material-ui/core\";\nimport { connect } from \"common/connect\";\nimport StoreKeys from \"common/storeKeys\";\nimport * as React from \"react\";\nimport { Helmet } from \"react-helmet\";\n// eslint-disable-next-line no-unused-vars\nimport { SurveyDto } from \"common/types/Survey/SurveyDto\";\nimport SurveySelector from \"./SurveySelector\";\nimport SurveyEditor from \"./SurveyEditor\";\n\n/**\n * @typedef ComponentProps\n * @type {object}\n * @property {SurveyDto} current\n */\n\nconst propKeys = {\n\tcurrent: StoreKeys.ADMIN.SURVEYS.CURRENT,\n};\n\n/**\n * @param {ComponentProps} props\n */\nfunction SurveyBuilderC(props) {\n\tconst { current } = props;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\tPickstop - Survey Builder\n\t\t\t\n\t\t\t{!current && (\n\t\t\t\t<>\n\t\t\t\t\t

Survey Editor

\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\t{current && }\n\t\t
\n\t);\n}\n\nfunction SurveyBuilder(props) {\n\treturn connect(, propKeys, props);\n}\n\nexport default SurveyBuilder;\n","import CustomModal from \"common/components/CustomModal/CustomModal\";\nimport {\n\tModalBody,\n\tModalHeader,\n\tModalPanel,\n} from \"common/components/CustomModal/Modal/ModalFrame\";\nimport { toFriendlyDateTime } from \"common/helpers/dateHelper\";\nimport { SurveyDto } from \"common/types/Survey/SurveyDto\";\nimport * as React from \"react\";\n\nexport default function SurveyCompleteModal(props) {\n\t/** @type {SurveyDto} */\n\tconst survey = props.survey;\n\tconst dateTime = toFriendlyDateTime(survey.closeTime);\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tYour playoffs picks for RLCS Worlds 2024 have been submitted!\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t

\n\t\t\t\t\t\tYou can revisit this page at any time to modify your selections\n\t\t\t\t\t\tuntil {dateTime.toString()}\n\t\t\t\t\t

\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n\n\t//return (\n\t//\t\n\t//\t\t\n\t//\t\t\t\n\t//\t\t\t\tThank you for voting in this year's RL Pro Awards!\n\t//\t\t\t\n\t//\t\t\t\n\t//\t\t\t\t

\n\t//\t\t\t\t\tYou can revisit this page at any time to modify your selections\n\t//\t\t\t\t\tuntil {dateTime.toString()}\n\t//\t\t\t\t

\n\t//\t\t\t
\n\t//\t\t
\n\t//\t
\n\t//);\n}\n","import * as React from \"react\";\nimport { Button, makeStyles } from \"@material-ui/core\";\nimport StoreKeys from \"common/storeKeys\";\nimport { connect } from \"common/connect\";\nimport SurveyAnswerTile from \"common/components/SurveyAnswerTile/SurveyAnswerTile\";\nimport TileGroup from \"common/components/TileGroup/TileGroup\";\nimport { SurveyPromptDto } from \"common/types/Survey/SurveyPromptDto\";\nimport { SurveyDto } from \"common/types/Survey/SurveyDto\";\nimport { Colors } from \"styles/Colors\";\nimport NameplateButton from \"common/components/NameplateButton\";\nimport { SurveyPromptAnswerDto } from \"common/types/Survey/SurveyPromptAnswerDto\";\nimport SurveyService from \"services/SurveyService\";\nimport { SetLoading } from \"common/components/Loader/Loader\";\nimport UserManager from \"common/userManager\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport AccountRequired from \"common/components/Modals/AccountRequired/AccountRequired\";\nimport SurveyCompleteModal from \"./SurveyCompleteModal\";\n\n/**\n * @typedef ComponentProps\n * @type {object}\n * @property {SurveyDto} currentSurvey\n * @property {number[]} currentPicks\n */\nconst propKeys = {\n currentSurvey: StoreKeys.SURVEY.CURRENT,\n currentPicks: StoreKeys.SURVEY.PICKS,\n};\n\nconst useStyles = makeStyles((theme) => {\n return {\n buttonRow: {\n marginTop: theme.spacing() * 2,\n marginBottom: 12,\n \"& svg\": {\n position: \"relative\",\n top: -2,\n left: -2,\n },\n },\n promptHeader: {\n textAlign: \"center\",\n marginBottom: 16,\n backgroundColor: Colors.primary,\n color: Colors.panelDark,\n fontWeight: 600,\n fontSize: 16,\n width: 400,\n borderRadius: 12,\n padding: 2,\n },\n selectedAnswer: {\n boxShadow: `0px 2px 20px ${Colors.green}`,\n backgroundColor: Colors.greenPanel,\n },\n };\n});\n\n/**\n * @param {ComponentProps} props\n */\nfunction UserSurveyScreenC({ currentSurvey, currentPicks }) {\n const classNames = useStyles();\n const [answers, setAnswers] = React.useState({});\n const [promptIndex, setPromptIndex] = React.useState(0);\n\n React.useEffect(() => {\n if (currentSurvey === undefined) {\n SetLoading(true);\n } else {\n if (currentPicks === undefined) {\n if (!UserManager.isLoggedIn()) {\n SetLoading(false);\n } else {\n SurveyService.getAnswers(currentSurvey.surveyId).then(\n (userAnswers) => {\n const mappedAnswers = {};\n for (let i = 0; i < currentSurvey.prompts.length; i++) {\n const prompt = currentSurvey.prompts[i];\n mappedAnswers[prompt.promptId] = userAnswers.filter((a) =>\n prompt.answers.map((a) => a.promptAnswerId).includes(a)\n );\n }\n\n setAnswers({ ...mappedAnswers });\n SetLoading(false);\n }\n );\n }\n }\n }\n }, [currentSurvey, currentPicks]);\n\n if (!currentSurvey) {\n return (\n <>\n We are not currently gathering info here. Come back soon for future\n surveys!\n \n );\n }\n\n const onNext = () => {\n setPromptIndex(promptIndex + 1);\n };\n\n const onBack = () => {\n setPromptIndex(promptIndex - 1);\n };\n\n const onSubmit = async () => {\n SetLoading(true, \"Saving Answers\");\n let answerIds = [];\n for (const key in answers) {\n answerIds = answerIds.concat(answers[key]);\n }\n\n await SurveyService.saveAnswers(answerIds);\n ModalHelper.openModal();\n SetLoading(false);\n };\n\n /** @type {SurveyPromptDto} */\n const currentPrompt = currentSurvey.prompts[promptIndex];\n const currentPromptAnswers = answers[currentPrompt.promptId] ?? [];\n const numberOfAnswers = currentPrompt.isMultiSelect\n ? currentPrompt.numberOfAnswers\n : 1;\n\n /**\n *\n * @param {SurveyPromptAnswerDto} item\n */\n const onAnswerSelect = (item) => {\n if (!UserManager.isLoggedIn()) {\n ModalHelper.openModal();\n return;\n }\n\n if (currentPromptAnswers.includes(item.promptAnswerId)) {\n answers[currentPrompt.promptId] = answers[currentPrompt.promptId].filter(\n (a) => a !== item.promptAnswerId\n );\n } else if (currentPromptAnswers.length < numberOfAnswers) {\n answers[currentPrompt.promptId] = [\n item.promptAnswerId,\n ...currentPromptAnswers,\n ];\n }\n\n setAnswers({ ...answers });\n };\n\n const isSubmit = promptIndex === currentSurvey.prompts.length - 1;\n const surveyClosed = new Date(currentSurvey.closeTime) < new Date();\n\n // Disable if answer not selected for this prompt.\n const nextDisabled =\n (answers[currentPrompt.promptId] ?? []).length < numberOfAnswers;\n\n return (\n \n
\n
{currentPrompt.text}
\n
\n
\n {\n return (\n \n );\n }\n }\n paperProps={{\n padding: 0,\n margin: 0,\n }}\n tileWidth={200}\n tileHeight={224}\n maxItemsPerRow={2}\n disableSelect={surveyClosed}\n onSelect={onAnswerSelect}\n selectedIds={currentPromptAnswers}\n getItemId={(item) => {\n return item.promptAnswerId;\n }}\n selectedClassName={classNames.selectedAnswer}\n />\n
\n\n
\n \n {\n isSubmit ? onSubmit() : onNext();\n }}\n disabled={nextDisabled}\n buttonText={isSubmit ? \"SUBMIT\" : \"NEXT\"}\n nameplateId={isSubmit ? 32 : null}\n />\n
\n \n );\n}\n\nexport default function UserSurveyScreen(props) {\n return connect(, propKeys, props);\n}\n","var _g, _defs;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgBallotBox = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 89,\n height: 93,\n viewBox: \"0 0 89 93\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#filter0_d_1_98)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M84.375 60.4046C84.375 65.743 80.0467 65.2379 74.7083 65.2379H14.2917C8.95325 65.2379 4.625 65.743 4.625 60.4046L9.45833 26.5833C10.1664 22.3542 11.875 21.75 14.2917 21.75H74.7083C77.125 21.75 79.0366 22.2527 79.5417 26.5833L84.375 60.4046Z\",\n fill: \"#FFB300\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.875 39.875C69.875 40.8364 69.4931 41.7584 68.8133 42.4383C68.1334 43.1181 67.2114 43.5 66.25 43.5H22.75C21.7886 43.5 20.8666 43.1181 20.1867 42.4383C19.5069 41.7584 19.125 40.8364 19.125 39.875C19.125 38.9136 19.5069 37.9916 20.1867 37.3117C20.8666 36.6319 21.7886 36.25 22.75 36.25H66.25C67.2114 36.25 68.1334 36.6319 68.8133 37.3117C69.4931 37.9916 69.875 38.9136 69.875 39.875Z\",\n fill: \"#292F33\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64.4375 41.5376V7.70431C64.4375 6.42243 63.9283 5.19305 63.0219 4.28662C62.1154 3.3802 60.8861 2.87097 59.6042 2.87097H28.1875C26.9056 2.87097 25.6762 3.3802 24.7698 4.28662C23.8634 5.19305 23.3542 6.42243 23.3542 7.70431V41.5376H64.4375Z\",\n fill: \"#FFD983\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.83,\n d: \"M84.375 60.4166C84.375 59.1348 83.8658 57.9054 82.9594 56.999C82.0529 56.0925 80.8235 55.5833 79.5417 55.5833H9.45833C8.17645 55.5833 6.94708 56.0925 6.04065 56.999C5.13422 57.9054 4.625 59.1348 4.625 60.4166V79.75C4.625 81.0319 5.13422 82.2612 6.04065 83.1677C6.94708 84.0741 8.17645 84.5833 9.45833 84.5833H79.5417C80.8235 84.5833 82.0529 84.0741 82.9594 83.1677C83.8658 82.2612 84.375 81.0319 84.375 79.75V60.4166Z\",\n fill: \"#FFB300\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.36,\n d: \"M33.625 55.5833V70.0833C33.625 71.3652 34.1342 72.5946 35.0407 73.501C35.9471 74.4074 37.1765 74.9166 38.4583 74.9166H50.5417C51.8235 74.9166 53.0529 74.4074 53.9593 73.501C54.8658 72.5946 55.375 71.3652 55.375 70.0833V55.5833H33.625Z\",\n fill: \"#FFB300\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55.375 55.5833V53.1666C55.375 51.8848 54.8658 50.6554 53.9593 49.749C53.0529 48.8425 51.8235 48.3333 50.5417 48.3333H38.4583C37.1765 48.3333 35.9471 48.8425 35.0407 49.749C34.1342 50.6554 33.625 51.8848 33.625 53.1666V55.5833H55.375ZM48.125 66.4583C48.125 67.4197 47.7431 68.3418 47.0633 69.0216C46.3834 69.7014 45.4614 70.0833 44.5 70.0833C43.5386 70.0833 42.6166 69.7014 41.9367 69.0216C41.2569 68.3418 40.875 67.4197 40.875 66.4583V64.0416C40.875 63.0802 41.2569 62.1582 41.9367 61.4784C42.6166 60.7986 43.5386 60.4166 44.5 60.4166C45.4614 60.4166 46.3834 60.7986 47.0633 61.4784C47.7431 62.1582 48.125 63.0802 48.125 64.0416V66.4583Z\",\n fill: \"#FFB300\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59 12.0833C59 12.4038 58.8727 12.7111 58.6461 12.9378C58.4195 13.1644 58.1121 13.2917 57.7917 13.2917H39.6667C39.3462 13.2917 39.0389 13.1644 38.8122 12.9378C38.5856 12.7111 38.4583 12.4038 38.4583 12.0833C38.4583 11.7629 38.5856 11.4555 38.8122 11.2289C39.0389 11.0023 39.3462 10.875 39.6667 10.875H57.7917C58.1121 10.875 58.4195 11.0023 58.6461 11.2289C58.8727 11.4555 59 11.7629 59 12.0833ZM59 21.75C59 22.0705 58.8727 22.3778 58.6461 22.6044C58.4195 22.831 58.1121 22.9583 57.7917 22.9583H39.6667C39.3462 22.9583 39.0389 22.831 38.8122 22.6044C38.5856 22.3778 38.4583 22.0705 38.4583 21.75C38.4583 21.4295 38.5856 21.1222 38.8122 20.8956C39.0389 20.669 39.3462 20.5417 39.6667 20.5417H57.7917C58.1121 20.5417 58.4195 20.669 58.6461 20.8956C58.8727 21.1222 59 21.4295 59 21.75ZM59 31.4167C59 31.7371 58.8727 32.0445 58.6461 32.2711C58.4195 32.4977 58.1121 32.625 57.7917 32.625H39.6667C39.3462 32.625 39.0389 32.4977 38.8122 32.2711C38.5856 32.0445 38.4583 31.7371 38.4583 31.4167C38.4583 31.0962 38.5856 30.7889 38.8122 30.5622C39.0389 30.3356 39.3462 30.2083 39.6667 30.2083H57.7917C58.1121 30.2083 58.4195 30.3356 58.6461 30.5622C58.8727 30.7889 59 31.0962 59 31.4167Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.4167 14.5C33.7514 14.5 34.8333 13.418 34.8333 12.0834C34.8333 10.7487 33.7514 9.66669 32.4167 9.66669C31.082 9.66669 30 10.7487 30 12.0834C30 13.418 31.082 14.5 32.4167 14.5Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.4167 24.1667C33.7514 24.1667 34.8333 23.0847 34.8333 21.75C34.8333 20.4154 33.7514 19.3334 32.4167 19.3334C31.082 19.3334 30 20.4154 30 21.75C30 23.0847 31.082 24.1667 32.4167 24.1667Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.4167 33.8333C33.7514 33.8333 34.8333 32.7514 34.8333 31.4167C34.8333 30.082 33.7514 29 32.4167 29C31.082 29 30 30.082 30 31.4167C30 32.7514 31.082 33.8333 32.4167 33.8333Z\",\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"filter\", {\n id: \"filter0_d_1_98\",\n x: -3,\n y: 0,\n width: 95,\n height: 95,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",\n result: \"hardAlpha\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", {\n dy: 4\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 2\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_1_98\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_1_98\",\n result: \"shape\"\n })))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgBallotBox, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/ballot-box.ac7542c2.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _circle, _circle2, _circle3, _g, _path5, _path6, _defs;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgMedalWinner = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 87,\n height: 87,\n viewBox: \"12 12 97 97\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_1_131)\",\n filter: \"url(#filter0_d_1_131)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#filter1_d_1_131)\"\n }, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.8064 68.071L58.9459 73.3478L40.3864 105.494L35.0594 93.6135L49.8064 68.071Z\",\n fill: \"#FFB300\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.8064 68.071L40.6668 62.7943L22.1073 94.9404L35.0594 93.6135L49.8064 68.071Z\",\n fill: \"#FFB300\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62.8453 68.071L53.7058 73.3478L72.2653 105.494L77.5923 93.6135L62.8453 68.071Z\",\n fill: \"#FFB300\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62.8453 68.071L71.9849 62.7943L90.5444 94.9404L77.5923 93.6135L62.8453 68.071Z\",\n fill: \"#FFB300\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 56.0456,\n cy: 45.9371,\n r: 31.9657,\n fill: \"url(#paint0_linear_1_131)\",\n stroke: \"#765C00\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 56.0456,\n cy: 45.9372,\n r: 24.5619,\n fill: \"#A88300\"\n })), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0_1_131\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 32,\n y: 23,\n width: 50,\n height: 51\n }, _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 57.3567,\n cy: 48.5591,\n r: 24.619,\n fill: \"#C28B37\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0_1_131)\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 56.0457,\n cy: 45.9369,\n r: 24.619,\n fill: \"#C09525\"\n }))), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.1783 28.8102L61.489 39.4315L72.1103 40.7592L64.817 48.9376L66.7996 60.6742L56.1783 55.3635L45.5569 60.6742L47.5573 48.9376L40.2463 40.7592L50.8676 39.4315L56.1783 28.8102Z\",\n fill: \"url(#paint1_linear_1_131)\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.6208 26.8623L29.0834 19.2415L25.6208 11.6208L33.2415 15.0834L40.8623 11.6208L37.3996 19.2415L40.8623 26.8623L33.2415 23.3996L25.6208 26.8623Z\",\n fill: \"white\"\n })))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"filter\", {\n id: \"filter0_d_1_131\",\n x: -4,\n y: 0,\n width: 117,\n height: 117,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",\n result: \"hardAlpha\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", {\n dy: 4\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 2\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_1_131\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_1_131\",\n result: \"shape\"\n })), /*#__PURE__*/React.createElement(\"filter\", {\n id: \"filter1_d_1_131\",\n x: 21.3238,\n y: 10.8372,\n width: 80.9731,\n height: 106.409,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",\n result: \"hardAlpha\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", {\n dx: 5.48449,\n dy: 5.48449\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 3.13399\n }), /*#__PURE__*/React.createElement(\"feComposite\", {\n in2: \"hardAlpha\",\n operator: \"out\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_1_131\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_1_131\",\n result: \"shape\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_1_131\",\n x1: 56.0456,\n y1: 14.4714,\n x2: 56.0456,\n y2: 77.4028,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FFC600\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#FFDE69\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint1_linear_1_131\",\n x1: 56.1783,\n y1: 28.8102,\n x2: 56.1783,\n y2: 60.6742,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FFC600\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#FFE896\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_1_131\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 109,\n height: 109,\n fill: \"white\"\n })))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgMedalWinner, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/medal-winner.d6dae6e4.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgPolygon = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 38,\n height: 42,\n viewBox: \"0 0 38 42\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 0L37.1865 10.5V31.5L19 42L0.813467 31.5V10.5L19 0Z\",\n fill: \"#FFB300\"\n })));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgPolygon, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/polygon.3025e486.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgQuoteStart = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 37,\n height: 36,\n viewBox: \"0 0 37 36\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"quotation-mark-svgrepo-com 5\",\n clipPath: \"url(#clip0_1_190)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Vector\",\n d: \"M15.9307 2.74673L15.9307 8.75399C15.9307 9.5687 15.2519 10.2288 14.4146 10.2288C11.4271 10.2288 9.80196 13.2102 9.57673 19.0944H14.4146C15.2519 19.0944 15.9307 19.7551 15.9307 20.5696L15.9307 33.2536C15.9307 34.0679 15.2519 34.7281 14.4146 34.7281H1.51581C0.678146 34.7281 0 34.0674 0 33.2536L0 20.5696C0 17.7488 0.291906 15.1602 0.867345 12.875C1.45752 10.5318 2.36344 8.48307 3.55916 6.78546C4.78953 5.04083 6.32855 3.6718 8.13384 2.71806C9.95131 1.75855 12.0648 1.27189 14.4151 1.27189C15.2519 1.27189 15.9307 1.93202 15.9307 2.74673ZM35.4838 10.2289C36.3207 10.2289 37 9.56819 37 8.75409V2.74684C37 1.93212 36.3208 1.27199 35.4838 1.27199C33.1344 1.27199 31.0206 1.75876 29.2038 2.71817C27.3982 3.6719 25.8583 5.04094 24.6277 6.78557C23.4324 8.48317 22.5265 10.532 21.9362 12.8757C21.3611 15.1617 21.0692 17.7502 21.0692 20.5697V33.2537C21.0692 34.068 21.7482 34.7282 22.5853 34.7282L35.4837 34.7282C36.3206 34.7282 36.9993 34.0675 36.9993 33.2537L36.9993 20.5696C36.9993 19.7553 36.3207 19.0944 35.4837 19.0944H30.7148C30.9366 13.2103 32.538 10.2289 35.4838 10.2289Z\",\n fill: \"#6D597A\",\n fillOpacity: 0.28\n })))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_1_190\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 37,\n height: 36,\n fill: \"white\"\n })))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgQuoteStart, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/quote-start.ae9d9877.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgQuoteEnd = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 37,\n height: 36,\n viewBox: \"0 0 37 36\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"quotation-mark-svgrepo-com 4\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Vector\",\n d: \"M21.0693 33.2533L21.0693 27.246C21.0693 26.4313 21.7481 25.7712 22.5854 25.7712C25.5729 25.7712 27.198 22.7898 27.4233 16.9056L22.5854 16.9056C21.7481 16.9056 21.0693 16.2449 21.0693 15.4304L21.0693 2.74643C21.0693 1.93213 21.7481 1.2719 22.5854 1.2719L35.4842 1.2719C36.3219 1.2719 37 1.93264 37 2.74643L37 15.4305C37 18.2512 36.7081 20.8398 36.1327 23.125C35.5425 25.4682 34.6366 27.5169 33.4408 29.2145C32.2105 30.9592 30.6714 32.3282 28.8662 33.2819C27.0487 34.2415 24.9352 34.7281 22.5849 34.7281C21.7481 34.7281 21.0693 34.068 21.0693 33.2533ZM1.51624 25.7711C0.679311 25.7711 -3.08941e-06 26.4318 -3.16058e-06 27.2459L-3.68575e-06 33.2532C-3.75698e-06 34.0679 0.679203 34.728 1.51624 34.728C3.86558 34.728 5.97941 34.2412 7.79625 33.2818C9.60184 32.3281 11.1417 30.9591 12.3723 29.2144C13.5676 27.5168 14.4735 25.468 15.0638 23.1243C15.6389 20.8383 15.9308 18.2498 15.9308 15.4303L15.9308 2.74633C15.9308 1.93202 15.2518 1.27179 14.4147 1.27179L1.51635 1.27179C0.67942 1.27179 0.000742918 1.93254 0.000742847 2.74633L0.000741738 15.4304C0.000741667 16.2448 0.679311 16.9056 1.51634 16.9056L6.2852 16.9056C6.06336 22.7897 4.46201 25.7711 1.51624 25.7711Z\",\n fill: \"#6D597A\",\n fillOpacity: 0.28\n })))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgQuoteEnd, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/quote-end.80669ee0.svg\";\nexport { ForwardRef as ReactComponent };","import { Card, Grid, useMediaQuery } from \"@material-ui/core\";\nimport * as React from \"react\";\nimport \"./GamePickemScreen.scss\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\nimport { ReactComponent as PickstopLogo } from \"icons/PickstopLogoGGNew.svg\";\nimport { ReactComponent as BallotBox } from \"icons/ballot-box.svg\";\nimport { ReactComponent as MedalWinner } from \"icons/medal-winner.svg\";\nimport { ReactComponent as Polygon } from \"icons/polygon.svg\";\nimport { ReactComponent as TwitterIcon } from \"icons/TwitterIcon.svg\";\nimport { ReactComponent as QuoteStart } from \"icons/quote-start.svg\";\nimport { ReactComponent as QuoteEnd } from \"icons/quote-end.svg\";\nimport { ReactComponent as DiscordIcon } from \"icons/DiscordIcon.svg\";\nimport { ReactComponent as RedditIcon } from \"icons/RedditIcon.svg\";\nimport { ReactComponent as InstagramIcon } from \"icons/InstagramIcon.svg\";\nimport { changeUrl } from \"common/history\";\nimport { Colors } from \"styles/Colors\";\n\nconst useStyles = makeStyles((theme) => ({\n\tbackgroundFill: {\n\t\tbackgroundColor: \"#373737\",\n\t},\n\tcard: {\n\t\tbackgroundColor: \"#4A4A4A\",\n\t},\n\tlightCard: {\n\t\tbackgroundColor: \"#D9D9D9\",\n\t\tcolor: \"rgba(0, 0, 0, 0.9)\",\n\t},\n\twhiteCard: {\n\t\tbackgroundColor: Colors.softWhite,\n\t\tcolor: Colors.panel,\n\t},\n\twelcomePickstopHeaderContainer: {\n\t\tmarginBottom: 24,\n\t},\n\twelcomePickstop: {\n\t\tcolor: \"#FFFFFF\",\n\t\tfontFamily: \"Roboto\",\n\t\tfontStyle: \"normal\",\n\t\tfontWeight: 500,\n\t\tlineHeight: \"normal\",\n\t\tletterSpacing: 2.56,\n\t\talignSelf: \"stretch\",\n\t},\n\twelcomePickstopText: {\n\t\tcolor: \"#FBFBFB\",\n\t\tfontFamily: \"Poppins\",\n\t\tfontStyle: \"normal\",\n\t\tfontWeight: 400,\n\t\tlineHeight: \"177%\",\n\t},\n\tshapeContainer: {\n\t\tdisplay: \"flex\",\n\t\tmarginTop: 32,\n\t\tmarginBottom: 32,\n\t\talignItems: \"center\",\n\t},\n\torangeLine: {\n\t\theight: 6,\n\t\tbackgroundColor: \"#FFB300\",\n\t\tborderRadius: 3,\n\t\tmarginRight: 24,\n\t},\n\torangeLineGrow: {\n\t\tdisplay: \"flex\",\n\t\tflexGrow: 1,\n\t\theight: 6,\n\t\tbackgroundColor: \"#FFB300\",\n\t\tborderRadius: 3,\n\t\tmarginLeft: 24,\n\t\tmarginRight: 108,\n\t\tmarginBottom: 24,\n\t},\n\tquoteText: {\n\t\tmarginLeft: 40,\n\t\tmarginRight: 40,\n\t\tfontFamily: \"Poppins\",\n\t},\n\taspectRatio: {\n\t\taspectRatio: 1.77,\n\t},\n\tsocialLink: {\n\t\tcolor: Colors.pickstop,\n\t\tfontFamily: \"Poppins\",\n\n\t\t\"& a\": {\n\t\t\tdisplay: \"block\",\n\t\t},\n\t},\n\tmugShot: {\n\t\twidth: \"50%\",\n\t\tborderRadius: \"50%\",\n\t\tminWidth: 350,\n\t\tmaxWidth: 500,\n\t},\n}));\n\nexport default function AboutUsScreenWidth() {\n\tconst classes = useStyles();\n\n\tconst logoWidth = Math.max(Math.min(window.innerWidth / 2, 920), 300);\n\tconst logoHeight = logoWidth * 0.134;\n\n\tconst theme = useTheme();\n\tconst isExtraSmall = useMediaQuery(theme.breakpoints.down(\"xs\"));\n\tconst isSmall = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\tconst isMedium = useMediaQuery(theme.breakpoints.down(\"md\"));\n\t// const isLarge = useMediaQuery(theme.breakpoints.down(\"lg\"));\n\tconst isXL = useMediaQuery(theme.breakpoints.up(\"xl\"));\n\tconst fontUnit = isSmall ? 5 : isMedium ? 6 : isXL ? 8 : 7;\n\n\tconst cardMargin = isSmall ? 6 : isMedium ? 10 : isXL ? 40 : 20;\n\tconst cardPadding = isSmall ? 16 : isMedium ? 16 : isXL ? 60 : 32;\n\tconst cardRadius = isSmall ? 24 : isMedium ? 24 : isXL ? 56 : 32;\n\tconst orangeLineWidth = isSmall ? 200 : isMedium ? 350 : isXL ? 400 : 400;\n\tconst pentagonIconWidth = isSmall ? 28 : isMedium ? 28 : isXL ? 38 : 32;\n\tconst pentagonIconHeight = pentagonIconWidth * 1.11;\n\n\tconst detailCardMargin = isSmall ? 8 : isMedium ? 16 : isXL ? 50 : 25;\n\tconst detailCardPadding = isSmall ? 16 : isMedium ? 16 : isXL ? 32 : 16;\n\tconst detailCardRadius = isSmall ? 24 : isMedium ? 24 : isXL ? 48 : 36;\n\tconst detailCardWidth = isSmall ? 360 : isMedium ? 432 : isXL ? 432 : 432;\n\tconst detailCardIconWidth = isSmall ? 64 : isMedium ? 64 : isXL ? 87 : 87;\n\n\tconst quoteCardMargin = isSmall ? 8 : isMedium ? 16 : isXL ? 50 : 25;\n\tconst quoteCardPadding = isSmall ? 16 : isMedium ? 16 : isXL ? 32 : 16;\n\tconst quoteCardRadius = isSmall ? 24 : isMedium ? 24 : isXL ? 48 : 36;\n\tconst quoteCardWidth = isSmall ? 360 : isMedium ? 432 : isXL ? 540 : 540;\n\n\tconst socialIconWidth = isSmall ? 32 : isMedium ? 48 : isXL ? 64 : 64;\n\n\tconst socialLinks = isSmall\n\t\t? [\n\t\t\t\t{\n\t\t\t\t\tname: \"Discord Server\",\n\t\t\t\t\ticon: ,\n\t\t\t\t\tlink: \"https://discord.gg/fQSP624Mqf\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"Reddit Account\",\n\t\t\t\t\ticon: ,\n\t\t\t\t\tlink: \"https://www.reddit.com/user/pickstopgg/\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"RL Twitter\",\n\t\t\t\t\ticon: ,\n\t\t\t\t\tlink: \"https://twitter.com/pickstoprl\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"RL Instagram\",\n\t\t\t\t\ticon: ,\n\t\t\t\t\tlink: \"https://www.instagram.com/pickstoprl/\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"CS Twitter\",\n\t\t\t\t\ticon: ,\n\t\t\t\t\tlink: \"https://twitter.com/PickstopCS\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"CS Instagram\",\n\t\t\t\t\ticon: ,\n\t\t\t\t\tlink: \"https://www.instagram.com/pickstopcs/\",\n\t\t\t\t},\n\t\t ]\n\t\t: [\n\t\t\t\t{\n\t\t\t\t\tname: \"Discord Server\",\n\t\t\t\t\ticon: ,\n\t\t\t\t\tlink: \"https://discord.gg/fQSP624Mqf\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"RL Twitter\",\n\t\t\t\t\ticon: ,\n\t\t\t\t\tlink: \"https://twitter.com/pickstoprl\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"RL Instagram\",\n\t\t\t\t\ticon: ,\n\t\t\t\t\tlink: \"https://www.instagram.com/pickstoprl/\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"Reddit Account\",\n\t\t\t\t\ticon: ,\n\t\t\t\t\tlink: \"https://www.reddit.com/user/pickstopgg/\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"CS Twitter\",\n\t\t\t\t\ticon: ,\n\t\t\t\t\tlink: \"https://twitter.com/PickstopCS\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"CS Instagram\",\n\t\t\t\t\ticon: ,\n\t\t\t\t\tlink: \"https://www.instagram.com/pickstopcs/\",\n\t\t\t\t},\n\t\t ];\n\n\tconst quoteCardContainerStyle = {\n\t\tposition: \"relative\",\n\t\tflexDirection: isSmall ? \"row-reverse\" : \"row\",\n\t};\n\n\tconst moveToHome = () => {\n\t\tchangeUrl(\"/\");\n\t};\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
{\" \"}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tWelcome to Pickstop\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tSince 2019, we’ve been building a pick’em platform for esports\n\t\t\t\t\t\t\t\tfans to predict the outcomes of their favorite events, using\n\t\t\t\t\t\t\t\tcompetition with fellow fans to make the viewing experience more\n\t\t\t\t\t\t\t\tengaging.\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tPick’ems.\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tBefore and during a tournament, fill out your brackets for\n\t\t\t\t\t\t\t\t\t\teach stage of the event as soon as the matchups are\n\t\t\t\t\t\t\t\t\t\tannounced.\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tRanked.\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tEarn points for correct match results, rank on leaderboards,\n\t\t\t\t\t\t\t\t\t\tand win awards in pick'em leagues.\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tOur Founders\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\tDan Sellers\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\tCo-Founder & CEO\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tEx-Competitive Rocket League player and tournament organizer\n\t\t\t\t\t\t\t\t\t\t\t\tsince 2015. Has been hosting esports LAN and pick’em\n\t\t\t\t\t\t\t\t\t\t\t\tevents since 2018.\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\tBen Randall\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\tCo-Founder & Lead Developer\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tVeteran Rocket League player with over a decade of\n\t\t\t\t\t\t\t\t\t\t\t\thigh-level full stack coding experience building web\n\t\t\t\t\t\t\t\t\t\t\t\tplatforms.\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tCEO Interview (Full Story of Pickstop)\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{!isExtraSmall &&
}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tSocials\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{socialLinks.map((link) => (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{link.name}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{React.cloneElement(link.icon, {\n\t\t\t\t\t\t\t\t\t\t\t\twidth: socialIconWidth,\n\t\t\t\t\t\t\t\t\t\t\t\theight: socialIconWidth,\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n","import {\n createTheme,\n responsiveFontSizes,\n ThemeProvider,\n} from \"@material-ui/core\";\nimport LoadingComponent from \"common/components/Loader/Loader\";\nimport ModalHelper from \"common/helpers/modalHelper\";\nimport SettingsHelper from \"common/helpers/settingsHelper\";\nimport { changeUrl } from \"common/history\";\nimport Layout from \"components/Layout\";\nimport AdminScreen from \"components/screens/Admin/AdminScreen\";\nimport EventAnalytics from \"components/screens/Admin/EventAnalytics/EventAnalytics\";\nimport EventCreator from \"components/screens/Admin/EventCreator/EventCreator\";\nimport EventFormatBuilder from \"components/screens/Admin/EventFormatBuilder/EventFormatBuilder\";\nimport UserManagerScreen from \"components/screens/Admin/UserManager/UserManager\";\nimport NameplateEditor from \"components/screens/Admin/NameplateEditor/NameplateEditor\";\nimport PickData from \"components/screens/Admin/PickData/PickData\";\nimport { PickUsernameScreen } from \"components/screens/Authorization/PickUsername/PickUsernameScreen\";\nimport ResetPasswordScreen from \"components/screens/Authorization/ResetPassword/ResetPasswordScreen\";\nimport SignInDiscord from \"components/screens/Authorization/SignIn/SignInDiscord\";\nimport SignInGoogle from \"components/screens/Authorization/SignIn/SignInGoogle\";\nimport LeagueScreen from \"components/screens/Leagues/Leagues\";\nimport RocketLeagueScreen from \"components/screens/RocketLeague\";\nimport TrophyRoomScreen from \"components/screens/TrophyRoom/TrophyRoom\";\nimport React, { useEffect } from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router-dom\";\nimport { Slide, ToastContainer } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\nimport { Colors } from \"styles/Colors\";\nimport \"./App.scss\";\nimport NameplateService from \"services/NameplateService\";\nimport UserManager from \"common/userManager\";\nimport RedeemPromoCodeScreen from \"components/screens/RedeemPromoCodeScreen\";\nimport GiveTrophy from \"components/screens/Admin/GiveTrophy/GiveTrophy\";\nimport LandingScreen from \"components/screens/LandingScreen\";\nimport {\n games,\n GetCurrentGameId,\n GetCurrentGamePrefix,\n SetGameInStore,\n} from \"common/constants/Games\";\nimport AdminPickOverride from \"components/screens/Admin/AdminPickOverride/AdminPickOverride\";\nimport SignInReddit from \"components/screens/Authorization/SignIn/SignInReddit\";\nimport LinkDiscord from \"components/screens/Authorization/Link/LinkDiscord\";\nimport LinkGoogle from \"components/screens/Authorization/Link/LinkGoogle\";\nimport LinkReddit from \"components/screens/Authorization/Link/LinkReddit\";\nimport SurveyBuilder from \"components/screens/Admin/SurveyBuilder/SurveyBuilder\";\nimport SurveyService from \"services/SurveyService\";\nimport Store from \"common/store\";\nimport StoreKeys from \"common/storeKeys\";\nimport UserSurveyScreen from \"components/screens/Survey/UserSurveyScreen\";\nimport AboutUsScreen from \"components/screens/AboutUsScreen\";\n\nexport default function App() {\n useEffect(() => {\n Promise.all([\n SettingsHelper.loadSettingsFromApi(),\n NameplateService.init(),\n UserManager.getUserData(),\n new Promise((resolve) => {\n SurveyService.getCurrentSurvey().then((currentSurvey) => {\n Store.set(StoreKeys.SURVEY.CURRENT, currentSurvey);\n resolve();\n });\n }),\n ]);\n });\n\n const theme = responsiveFontSizes(\n createTheme({\n palette: {\n primary: {\n main: Colors.primary,\n },\n secondary: {\n main: Colors.pickstop,\n },\n text: {\n primary: Colors.primary,\n secondary: Colors.pickstop,\n },\n },\n spacing: 4,\n shape: {\n borderRadius: 12,\n },\n breakpoints: {\n values: {\n xs: 0,\n sm: 600,\n md: 800,\n lg: 1050,\n xl: 1920,\n },\n },\n overrides: {\n MuiInputBase: {\n input: {\n \"&:-webkit-autofill\": {\n transitionDelay: \"9999s\",\n transitionProperty: \"background-color, color\",\n },\n },\n },\n MuiTableCell: {\n root: {\n borderColor: `${Colors.body} !important`,\n padding: 4,\n },\n head: {\n color: Colors.pickstop,\n },\n body: {\n borderBottom: 0,\n },\n stickyHeader: {\n backgroundColor: Colors.panel,\n },\n },\n MuiDivider: {\n root: {\n backgroundColor: `${Colors.body} !important`,\n width: \"100%\",\n marginTop: 16,\n marginBottom: 16,\n },\n },\n },\n })\n );\n\n let showMenuTabs = true;\n showMenuTabs =\n !useRouteMatch({\n path: \"/\",\n exact: true,\n }) && showMenuTabs;\n showMenuTabs =\n !useRouteMatch({\n path: \"/about-us\",\n exact: true,\n }) && showMenuTabs;\n\n const gameRoutes = games.map((game, i) => (\n \n \n \n ));\n\n return (\n \n \n \n \n \n {gameRoutes}\n \n \n \n\n {/** Auth Routes */}\n \n \n \n \n \n \n \n \n\n {/** Admin Routes */}\n \n \n \n \n \n \n \n \n \n \n {\n const route = GetCurrentGamePrefix();\n changeUrl(route);\n return <>;\n }}\n />\n \n \n \n \n );\n}\n\nfunction RelativeRoutes() {\n let { path } = useRouteMatch();\n const currentGameId = GetCurrentGameId();\n const pathGameId = games.find((g) => path === `/${g.prefix}`)?.id;\n if (currentGameId !== pathGameId) {\n SetGameInStore(pathGameId);\n }\n\n return (\n \n \n \n \n {path === \"/rl\" && (\n \n )}\n {/* */}\n \n \n );\n}\n","import { history } from \"common/history\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Router } from \"react-router-dom\";\nimport App from \"./App\";\n\nconst baseUrl = document.getElementsByTagName(\"base\")[0].getAttribute(\"href\");\nconst rootElement = document.getElementById(\"root\");\n\nReactDOM.render(\n\t\n\t\t\n\t,\n\trootElement\n);\n"],"sourceRoot":""}