{"version":3,"sources":["Utils/vendor/drift.js","App/data.js","App/AppLoading.js","App/Auth/Util/Auth.js","Utils/apiService.js","Globals.js","App/Auth/data.js","App/Planner/games.js","App/Planner/Strategy/data.js","App/Planner/Tools/data.js","App/Planner/data.js","App/Planner/Tools/tools.js","App/Planner/Map/data.js","App/Insights/data.js","store.js","App/Auth/UserBar/index.js","App/Shared/Buttons/DiscordButton.js","App/Shared/Buttons/Facebook.js","App/Shared/Buttons/Twitter.js","App/Shared/Header.js","App/Planner/Map/PathLine.js","App/Planner/Map/Maps/ImageLayerMap.js","App/Planner/Map/Maps/TiledMap.js","App/Planner/Map/IconRender.js","App/Planner/Map/CurrentToolHint.js","App/Planner/Map/MapDisplay.js","App/Viewer/index.js","App/Planner/Tools/ToolDrawers/UserMapOptionsDrawer.js","App/Planner/Tools/ToolBoxes/MapToolbox.js","App/Planner/Tools/ToolButton.js","App/Planner/Tools/ToolDrawers/PlayerToolDrawer.js","App/Planner/Tools/ToolDrawers/GrenadeToolDrawer.js","App/Planner/Tools/ToolDrawers/NotesToolDrawer.js","App/Planner/Tools/ToolDrawers/valorant/ValorantAbilityToolDrawer.js","App/Planner/Tools/ToolDrawers/valorant/ValorantAgentToolDrawer.js","App/Planner/Tools/ToolBoxes/DrawingToolbox.js","App/Planner/Tools/index.js","App/Planner/Map/index.js","App/Planner/index.js","App/Home/index.js","App/Auth/AuthCallback.js","App/User/ShowDetails.js","App/User/SavedStrategies.js","App/User/ConnectionDetails.js","App/User/index.js","PrivateRoute.js","App/User/SteamCallback.js","App/Insights/HltvScoreDisplay.js","App/Insights/InsightsRow.js","App/Insights/InsightsTableContainer.js","App/Insights/index.js","App/Insights/Match/Overallstats.js","App/Insights/Match/Utilitystats.js","App/Insights/Match/RoundStat.js","App/Insights/Match/RoundStatContainer.js","App/Insights/Match/PanelContainer.js","App/Insights/Match/index.js","App/Tips/Articles/Valorant/ValorantCompositionGuide.tsx","App/Tips/Articles/index.tsx","App/Tips/index.tsx","App/Errors/NotFound.tsx","App/Tips/ArticleDisplay.tsx","App/AppRouter.tsx","App/index.js","registerServiceWorker.js","index.js"],"names":["driftLib","load","SNIPPET_VERSION","LoadApp","AppSaga","appSelectors","preloadFinished","state","app","appActions","finishPreload","type","initialState","appReducer","combineReducers","action","call","all","takeEvery","connected","connect","props","ready","children","Fragment","style","margin","width","textAlign","className","role","Auth","lock","Auth0Lock","autoclose","auth","redirectUrl","window","location","protocol","host","responseType","audience","params","scope","theme","logo","primaryColor","languageDictionary","title","handleAuthentication","Promise","res","rej","on","authResult","getUserInfo","e","checkSession","err","accessToken","error","profile","dispatch","localStorage","setItem","JSON","stringify","setSession","userActions","loggedIn","checkLoggedIn","getItem","idToken","expiresAt","this","login","bind","logout","bindEvents","show","expiresIn","Date","getTime","removeItem","returnTo","parse","callProtectedApi","method","url","data","headers","Authorization","callUnprotectedApi","axios","GetStrategies","GetUser","GetUserSteamData","UpdateUser","UnauthorisedRedirect","HandleCallback","HandleSteamCallback","HandleLogin","HandleLogout","SetupAuth","AuthSaga","response","payload","loggedOut","handleCallback","nextState","startLogin","startLogout","getUserStrategies","getUserStrategiesSuccess","getUserSuccess","getUserSteamDataSuccess","handleSteamCallback","userSelectors","user","isAuthenticated","strategies","steamData","nickname","picture","id","name","steamId","steamAccessKey","csgoShareCode","userReducer","select","put","updateResponse","push","test","hash","console","log","mapTypes","gameIds","grenadeGames","games","mapType","maps","size","default","getGame","gameId","find","game","getMap","mapId","map","defaultMapState","version","points","notes","STRATEGY_GAME_CHANGE","strategyReducers","slice","length","strategySelectors","strategy","planner","pointsByLineId","lineId","filter","point","strategyActions","setId","setGame","setMap","setPoints","setNotes","addPoint","x","y","lineIndex","resetMap","undoPoint","toolColors","circletext","inversecircletext","toolReducers","currentTool","toolActions","clearTool","setTool","toolName","toolSelectors","tools","getStrategyById","SetStoreStrategy","checkUrl","setStrategy","saveStrategy","PlannerSaga","plannerActions","strategyId","notify","router","URLSearchParams","search","get","sessionId","collaborationActions","joinSessionRequest","newId","PlannerReducer","line","radius","imgSrc","toolIds","Object","keys","HandleMapClicked","MapSaga","mapReducer","mouseLatLng","mapSelectors","mapActions","handleClick","event","latlng","handleMouseMove","lat","lng","toolDef","reduce","ans","val","MatchesLoad","GetUserMatches","MatchesLoaded","LoadInsight","InsightsSaga","mapMap","insightsActions","matchesLoad","matchesLoaded","insightsLoaded","insightsSelectors","insights","matches","matchInsights","matchByMatchId","matchId","ins","matchInsightByMatchId","insightsReducer","existingData","skip","take","matchIt","calls","match","matchInsightResponse","insight","newInsight","rootSagas","history","createHistory","reducers","AppReducer","UserReducer","MapReducer","routerReducer","form","formReducer","sagaMiddleware","createSagaMiddleware","historyMiddleware","routerMiddleware","store","createStore","applyMiddleware","run","content","onClick","Link","to","src","alt","DiscordButton","href","height","FacebookButton","TwitterButton","Header","loadApp","NavLink","exact","activeClassName","strict","React","Component","_PathLine","toolId","color","position","bounds","ImageOverlay","zIndex","borderRadius","overflow","CircleMarker","center","prevPos","endPos","distanceAlongLine","lineLengthOnTheGround","Math","sqrt","pow","resetOnZeroIndex","lines","currentLine","forEach","index","latLngs","sort","a","b","toolColor","newEnd","calculateLineEnd","key","LayerGroup","drawEnd","Polyline","positions","drawLines","propTypes","PropTypes","string","isRequired","bool","_ImageLayerMap","attribution","_TiledMap","showBranding","TileLayer","noWrap","continuousWorld","Circle","pathPoints","lastPoint","drawPos","_Canvas","passChildren","maxBounds","startZoom","minZoom","maxZoom","cx","toolActive","Map","crs","CRS","Simple","zoom","maxBoundsViscosity","onMouseMove","_Viewer","viewerLoad","undefined","_MapToolbox","gameObj","disabled","mapObj","data-toggle","aria-haspopup","aria-expanded","aria-labelledby","renderGameDropdown","renderMapDropdown","ToolButton","active","backgroundColor","PlayerToolDrawer","GrenadeToolDrawer","mapNotes","rows","placeholder","onBlur","target","value","defaultValue","ValorantAbilityToolDrawer","ValorantAgentToolDrawer","agentTools","startsWith","replace","misc","includesGrenades","isValorant","_Toolbar","activeTab","tabIndex","setState","categoryClicked","Toolbar","mapName","_Map","mapLevel","_Planner","plannerLoad","Home","_AuthCallback","_SavedStrategies","getStrategies","substring","renderStrategy","returnUrl","realmUrl","styles","UserProfile","withRouter","allow","allowSelector","component","rest","Route","render","Redirect","path","func","any","_SteamCallback","HltvScoreDisplay","hltvScore","HighLevelDisplay","TotalKills","TotalDeaths","HltvScore","addedAt","toLocaleDateString","OverallStats","PlayerName","round","colourMapper","titleMapper","UtilityDisplay","UtilityStats","utility","ExplosivesThrown","TotalEnemyExplosiveDamage","EnemyDamagePerExplosive","TotalTeammatesExplosiveDamage","FlashesThrown","TotalEnemiesFlashed","EnemiesPerFlash","TotalTeammatesFlashed","TeammatesPerFlash","SmokesThrown","FireThrown","RoundStats","roundStats","_RoundStatContainer","currentRound","roundId","totalRounds","PlayerRoundStats","class","Death","selectRound","Kills","PanelContainer","tabs","element","tab","tabClicked","ReactMarkdown","require","CompositionGuide","source","AllArticles","category","slug","article","imgUrl","Tips","backgroundImage","NotFound","ArticleDisplay","articleId","articleSlug","articleMap","AppRouter","Switch","Planner","Insights","InsightMatch","AuthCallback","SteamCallback","App","Viewer","isLocalhost","Boolean","hostname","registerValidSW","swUrl","navigator","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","controller","catch","driftt","drift","init","invoked","methods","factory","n","Array","prototype","arguments","unshift","t","o","i","ceil","document","createElement","async","crossorigin","getElementsByTagName","parentNode","insertBefore","ReactDOM","getElementById","URL","process","origin","addEventListener","fetch","status","indexOf","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.e9a33f9c.chunk.js","sourcesContent":["let driftLib;\r\n\r\nconst init = () => {\r\n (function() {\r\n if (\r\n ((driftLib = window.driftt = window.drift = window.driftt || []),\r\n !driftLib.init)\r\n )\r\n return driftLib.invoked\r\n ? void (\r\n window.console &&\r\n console.error &&\r\n console.error(\"Drift snippet included twice.\")\r\n )\r\n : ((driftLib.invoked = !0),\r\n (driftLib.methods = [\r\n \"identify\",\r\n \"config\",\r\n \"track\",\r\n \"reset\",\r\n \"debug\",\r\n \"show\",\r\n \"ping\",\r\n \"page\",\r\n \"hide\",\r\n \"off\",\r\n \"on\"\r\n ]),\r\n (driftLib.factory = function(e) {\r\n return function() {\r\n var n;\r\n return (\r\n (n = Array.prototype.slice.call(arguments)),\r\n n.unshift(e),\r\n driftLib.push(n),\r\n driftLib\r\n );\r\n };\r\n }),\r\n driftLib.methods.forEach(function(e) {\r\n driftLib[e] = driftLib.factory(e);\r\n }),\r\n (driftLib.load = function(t) {\r\n var e, n, o, i;\r\n e = 3e5;\r\n i = Math.ceil(new Date() / e) * e;\r\n o = document.createElement(\"script\");\r\n o.type = \"text/javascript\";\r\n o.async = !0;\r\n o.crossorigin = \"anonymous\";\r\n o.src =\r\n \"https://js.driftt.com/include/\" +\r\n i +\r\n \"/\" +\r\n t +\r\n \".js\";\r\n n = document.getElementsByTagName(\"script\")[0];\r\n n.parentNode.insertBefore(o, n);\r\n }));\r\n })();\r\n};\r\n\r\nconst load = () => {\r\n driftLib.SNIPPET_VERSION = \"0.3.1\";\r\n driftLib.load(\"ey3nimd4s2wx\");\r\n};\r\n\r\nexport { init, load };\r\n","import { combineReducers } from \"redux\";\r\nimport { all, call, takeEvery } from \"redux-saga/effects\";\r\n\r\nimport { load } from \"../Utils/vendor/drift\";\r\n\r\nconst APP_LOAD = \"app:LOAD\";\r\nconst APP_PRE_LOAD = \"app:PRE_LOAD\";\r\n\r\n//Selectors\r\nconst appSelectors = (function() {\r\n const app = state => state.app;\r\n const preloadFinished = state => app(state).preloadFinished;\r\n\r\n return {\r\n preloadFinished\r\n };\r\n})();\r\n\r\n// Action creators\r\nconst appActions = (function() {\r\n const finishPreload = () => ({\r\n type: APP_PRE_LOAD\r\n });\r\n\r\n return {\r\n finishPreload\r\n };\r\n})();\r\n\r\nconst initialState = {\r\n preloadFinished: false\r\n};\r\n\r\nconst appReducer = (function() {\r\n const preloadFinished = (state = initialState.preloadFinished, action) => {\r\n if (action.type === APP_PRE_LOAD) {\r\n return true;\r\n }\r\n\r\n return state;\r\n };\r\n\r\n return combineReducers({\r\n preloadFinished\r\n });\r\n})();\r\n\r\nfunction* LoadApp() {\r\n yield call(load);\r\n}\r\n\r\nfunction* AppSaga() {\r\n yield all([takeEvery(APP_LOAD, LoadApp)]);\r\n}\r\n\r\nexport {\r\n APP_LOAD,\r\n APP_PRE_LOAD,\r\n AppSaga,\r\n appActions,\r\n appSelectors,\r\n appReducer as AppReducer\r\n};\r\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport { PropTypes } from \"prop-types\";\n\nimport { appSelectors } from \"./data\";\n\nconst _AppLoading = ({ ready, children, ...rest }) => (\n \n {ready && children}\n {!ready && (\n
\n
\n

Loading, please wait...

\n
\n
\n
\n
\n )}\n
\n);\n\n_AppLoading.propTypes = {\n ready: PropTypes.bool.isRequired,\n children: PropTypes.any.isRequired\n};\n\nconst mapStateToProps = (state, props) => ({\n ready: appSelectors.preloadFinished(state)\n});\n\nconst connected = connect(mapStateToProps)(_AppLoading);\n\nexport { _AppLoading, connected as AppLoading };\n","import { Auth0Lock } from \"auth0-lock\";\r\nimport { userActions } from \"../data\";\r\nimport { appActions } from \"../../data\";\r\n\r\nclass Auth {\r\n lock = new Auth0Lock(\r\n \"v1P3KDmJ3FPWd8AZuVej6vjukkWp3VK4\",\r\n \"globalelitist.eu.auth0.com\",\r\n {\r\n autoclose: true,\r\n auth: {\r\n redirectUrl: `${window.location.protocol}//${window.location.host}/callback`,\r\n responseType: \"token\",\r\n audience: `${window.location.protocol}//${window.location.host}`,\r\n params: {\r\n scope: \"openid profile email\"\r\n }\r\n },\r\n theme: {\r\n logo: \"/images/logo-stacked.png\",\r\n primaryColor: \"#ff7811\"\r\n },\r\n languageDictionary: {\r\n title: \"Global Elitist\"\r\n }\r\n }\r\n );\r\n\r\n constructor() {\r\n this.login = this.login.bind(this);\r\n this.logout = this.logout.bind(this);\r\n this.bindEvents = this.bindEvents.bind(this);\r\n }\r\n\r\n bindEvents(dispatch) {\r\n this.dispatch = dispatch;\r\n\r\n this.lock.on(\"hide\", () => {\r\n this.checkSession();\r\n });\r\n\r\n this.handleAuthentication();\r\n }\r\n\r\n handleAuthentication = () => {\r\n try {\r\n return new Promise((res, rej) => {\r\n this.lock.on(\"authenticated\", authResult => {\r\n res(this.getUserInfo(authResult));\r\n });\r\n });\r\n } catch (e) {\r\n //noop\r\n }\r\n };\r\n\r\n checkSession = () => {\r\n this.lock.checkSession({}, (err, authResult) => {\r\n if (err) {\r\n return;\r\n }\r\n\r\n this.getUserInfo(authResult);\r\n });\r\n };\r\n\r\n getUserInfo = authResult => {\r\n new Promise((res, rej) => {\r\n // Use the token in authResult to getUserInfo() and save it to localStorage\r\n this.lock.getUserInfo(authResult.accessToken, (error, profile) => {\r\n if (error) {\r\n this.dispatch(appActions.finishPreload());\r\n rej(error);\r\n return;\r\n }\r\n\r\n localStorage.setItem(\"accessToken\", authResult.accessToken);\r\n localStorage.setItem(\"profile\", JSON.stringify(profile));\r\n\r\n this.setSession(authResult);\r\n\r\n this.dispatch(userActions.loggedIn({ ...authResult, profile }));\r\n\r\n this.dispatch(appActions.finishPreload());\r\n res();\r\n });\r\n });\r\n };\r\n\r\n login() {\r\n this.lock.show();\r\n }\r\n\r\n setSession(authResult) {\r\n // Set the time that the Access Token will expire at\r\n let expiresAt = JSON.stringify(\r\n authResult.expiresIn * 1000 + new Date().getTime()\r\n );\r\n localStorage.setItem(\"access_token\", authResult.accessToken);\r\n localStorage.setItem(\"id_token\", authResult.idToken);\r\n localStorage.setItem(\"expires_at\", expiresAt);\r\n }\r\n\r\n checkLoggedIn = () => {\r\n const accessToken = localStorage.getItem(\"access_token\");\r\n const idToken = localStorage.getItem(\"id_token\");\r\n const expiresAt = localStorage.getItem(\"expires_at\");\r\n\r\n if (accessToken && idToken && expiresAt) {\r\n this.getUserInfo({\r\n accessToken\r\n });\r\n } else {\r\n this.dispatch(appActions.finishPreload());\r\n }\r\n };\r\n\r\n logout() {\r\n // Clear Access Token and ID Token from local storage\r\n localStorage.removeItem(\"access_token\");\r\n localStorage.removeItem(\"id_token\");\r\n localStorage.removeItem(\"expires_at\");\r\n\r\n this.lock.logout({\r\n returnTo: `${window.location.protocol}//${window.location.host}`\r\n });\r\n }\r\n\r\n static isAuthenticated() {\r\n // Check whether the current time is past the\r\n // Access Token's expiry time\r\n let expiresAt = JSON.parse(localStorage.getItem(\"expires_at\"));\r\n return new Date().getTime() < expiresAt;\r\n }\r\n}\r\n\r\nexport { Auth };\r\n","import axios from \"axios\";\r\nimport { apiEndpoint } from \"../Globals\";\r\n\r\nconst callProtectedApi = (method, url, accessToken, data) => {\r\n const headers = {\r\n Authorization: `Bearer ${accessToken}`\r\n };\r\n return callUnprotectedApi(method, url, data, headers);\r\n};\r\n\r\nconst callUnprotectedApi = (method, url, data, headers) => {\r\n return axios({\r\n method,\r\n url: `${apiEndpoint}/${url}`,\r\n data,\r\n headers\r\n });\r\n};\r\n\r\nexport { callUnprotectedApi, callProtectedApi };\r\n","const apiEndpoint = \"/api\";\n\nexport { apiEndpoint };\n","import { all, call, put, select, takeEvery } from \"redux-saga/effects\";\nimport { push } from \"react-router-redux\";\nimport { combineReducers } from \"redux\";\n\nimport { Auth } from \"./Util/Auth\";\nimport { callProtectedApi } from \"../../Utils/apiService\";\nimport { init } from \"../../Utils/vendor/drift\";\n\n// constants\nconst USER_LOGIN_START = \"ge:USER_LOGIN_START\";\nconst USER_LOGIN_SUCCESS = \"ge:USER_LOGIN_SUCCESS\";\n\nconst USER_LOGOUT_START = \"ge:USER_LOGOUT_START\";\nconst USER_LOGOUT_SUCCESS = \"ge:USER_LOGOUT_SUCCESS\";\n\nconst USER_HANDLE_CALLBACK = \"ge:USER_HANDLE_CALLBACK\";\n\nconst USER_UNAUTHORISED_REDIRECT = \"ge:USER_UNAUTHORISED_REDIRECT\";\n\nconst USER_GET_STRATEGIES_START = \"ge:USER_GET_STRATEGIES_START\";\nconst USER_GET_STRATEGIES_SUCCESS = \"ge:USER_GET_STRATEGIES_SUCCESS\";\n\nconst USER_GET_USERDATA_SUCCESS = \"ge:USER_GET_USERDATA_SUCCESS\";\nconst USER_GET_USERSTEAMDATA_SUCCESS = \"ge:USER_GET_USERSTEAMDATA_SUCCESS\";\n\nconst USER_STEAM_CALLBACK = \"ge:USER_STEAM_CALLBACK\";\n\nconst auth = new Auth();\n\n// Action creators\nconst userActions = (function() {\n const startLogin = () => ({\n type: USER_LOGIN_START\n });\n\n const startLogout = () => ({\n type: USER_LOGOUT_START\n });\n\n const handleCallback = nextState => ({\n type: USER_HANDLE_CALLBACK,\n payload: nextState\n });\n\n const loggedIn = response => ({\n type: USER_LOGIN_SUCCESS,\n payload: response\n });\n\n const loggedOut = response => ({\n type: USER_LOGOUT_SUCCESS\n });\n\n const getUserStrategies = () => ({\n type: USER_GET_STRATEGIES_START\n });\n\n const getUserStrategiesSuccess = payload => ({\n type: USER_GET_STRATEGIES_SUCCESS,\n payload\n });\n\n const getUserSuccess = payload => ({\n type: USER_GET_USERDATA_SUCCESS,\n payload\n });\n\n const getUserSteamDataSuccess = payload => ({\n type: USER_GET_USERSTEAMDATA_SUCCESS,\n payload\n });\n\n const handleSteamCallback = payload => ({\n type: USER_STEAM_CALLBACK,\n payload\n });\n\n return {\n loggedIn,\n loggedOut,\n handleCallback,\n startLogin,\n startLogout,\n getUserStrategies,\n getUserStrategiesSuccess,\n getUserSuccess,\n getUserSteamDataSuccess,\n handleSteamCallback\n };\n})();\n\n// Action Selectors\nconst userSelectors = (function() {\n const auth = state => state.user;\n const isAuthenticated = state => auth(state).isAuthenticated;\n const profile = state => auth(state).profile;\n const accessToken = state => auth(state).accessToken;\n const user = state => auth(state).user;\n const steamData = state => auth(state).steamData;\n\n const strategies = state => auth(state).strategies;\n\n return {\n accessToken,\n isAuthenticated,\n profile,\n strategies,\n user,\n steamData\n };\n})();\n\nconst initialState = {\n isAuthenticated: false,\n accessToken: null,\n profile: {\n nickname: \"Test\",\n picture:\n \"https://www.gravatar.com/avatar/00000000000000000000000000000000\"\n },\n strategies: [],\n user: {\n id: null,\n name: null\n },\n steamData: {\n steamId: null,\n steamAccessKey: null,\n csgoShareCode: null\n }\n};\n\nconst userReducer = (function() {\n const isAuthenticated = (state = initialState.isAuthenticated, action) => {\n if (action.type === USER_LOGIN_SUCCESS) {\n return true;\n } else if (action.type === USER_LOGOUT_SUCCESS) {\n return false;\n }\n return state;\n };\n\n const user = (state = initialState.user, action) => {\n if (action.type === USER_GET_USERDATA_SUCCESS) {\n return action.payload;\n }\n if (action.type === USER_LOGOUT_SUCCESS) {\n return initialState.user;\n }\n\n return state;\n };\n\n const steamData = (state = initialState.steamData, action) => {\n if (action.type === USER_GET_USERSTEAMDATA_SUCCESS) {\n return action.payload;\n }\n return state;\n };\n\n const profile = (state = initialState.profile, action) => {\n if (action.type === USER_LOGIN_SUCCESS) {\n return {\n nickname: action.payload.profile.nickname,\n picture: action.payload.profile.picture\n };\n } else if (action.type === USER_LOGOUT_SUCCESS) {\n return initialState.profile;\n }\n return state;\n };\n\n const accessToken = (state = initialState.accessToken, action) => {\n if (action.type === USER_LOGIN_SUCCESS) {\n return action.payload.accessToken;\n } else if (action.type === USER_LOGOUT_SUCCESS) {\n return initialState.accessToken;\n }\n return state;\n };\n\n const strategies = (state = initialState.strategies, action) => {\n if (action.type === USER_GET_STRATEGIES_SUCCESS) {\n return action.payload;\n }\n return state;\n };\n\n return combineReducers({\n accessToken,\n isAuthenticated,\n profile,\n strategies,\n user,\n steamData\n });\n})();\n\n//Sagas\nfunction* GetStrategies() {\n const accessToken = yield select(userSelectors.accessToken);\n try {\n const response = yield call(\n callProtectedApi,\n \"get\",\n \"strategy\",\n accessToken\n );\n yield put(userActions.getUserStrategiesSuccess(response.data));\n } catch (e) {\n //noop\n }\n}\n\nfunction* GetUser() {\n const accessToken = yield select(userSelectors.accessToken);\n const response = yield call(\n callProtectedApi,\n \"get\",\n `user/current`,\n accessToken\n );\n\n yield put(userActions.getUserSuccess(response.data));\n\n yield call(UpdateUser);\n yield call(GetUserSteamData);\n}\n\nfunction* GetUserSteamData() {\n const accessToken = yield select(userSelectors.accessToken);\n const response = yield call(\n callProtectedApi,\n \"get\",\n `user/current/steamData`,\n accessToken\n );\n\n yield put(userActions.getUserSteamDataSuccess(response.data));\n}\n\nfunction* UpdateUser() {\n const accessToken = yield select(userSelectors.accessToken);\n var user = yield select(userSelectors.user);\n const profile = yield select(userSelectors.profile);\n\n if (\n user.name === initialState.user.name &&\n profile.nickname !== initialState.profile.nickname\n ) {\n user.name = profile.nickname;\n try {\n const updateResponse = yield call(\n callProtectedApi,\n \"post\",\n `user/${user.id}`,\n accessToken,\n user\n );\n\n yield put(userActions.getUserSuccess(updateResponse.data));\n } catch (e) {\n //noop\n }\n }\n}\n\nfunction* UnauthorisedRedirect() {\n yield put(push(\"/\"));\n}\n\nfunction* HandleCallback(action) {\n if (\n action.payload &&\n /access_token|id_token|error/.test(action.payload.location.hash)\n ) {\n try {\n yield call(auth.handleAuthentication);\n } catch (e) {\n console.log(`Auth error: ${e}`);\n }\n }\n\n yield put(push(\"/\"));\n}\n\nfunction* HandleSteamCallback(action) {\n console.log(action);\n\n const accessToken = yield select(userSelectors.accessToken);\n yield call(\n callProtectedApi,\n \"post\",\n `steam/claim?token=${action.payload}`,\n accessToken\n );\n yield call(GetUser);\n yield put(push(\"/user\"));\n}\n\nfunction* HandleLogin() {\n yield call(auth.login);\n}\n\nfunction* HandleLogout() {\n yield call(auth.logout);\n yield put(userActions.loggedOut());\n yield put(push(\"/\"));\n}\n\nfunction* SetupAuth(dispatch) {\n yield call(auth.bindEvents, dispatch);\n yield call(auth.checkLoggedIn);\n}\n\nfunction* AuthSaga(dispatch) {\n yield all([\n //Auth\n yield SetupAuth(dispatch),\n yield takeEvery(USER_UNAUTHORISED_REDIRECT, UnauthorisedRedirect),\n yield takeEvery(USER_LOGIN_START, HandleLogin),\n yield takeEvery(USER_LOGOUT_START, HandleLogout),\n yield takeEvery(USER_HANDLE_CALLBACK, HandleCallback),\n yield takeEvery(USER_LOGIN_SUCCESS, GetUser),\n yield takeEvery(USER_STEAM_CALLBACK, HandleSteamCallback),\n\n //User stuff\n yield takeEvery(USER_GET_STRATEGIES_START, GetStrategies)\n ]);\n}\n\nexport { userSelectors, userActions, userReducer as UserReducer, AuthSaga };\n","const mapTypes = {\n tiled: \"tiled\",\n static: \"static\"\n};\n\nconst gameIds = {\n csgo: \"csgo\",\n pubg: \"pubg\",\n apex: \"apexlegends\",\n dota2: \"dota2\",\n lol: \"lol\",\n valorant: \"valorant\"\n};\n\nconst grenadeGames = [gameIds.csgo, gameIds.apex];\n\nconst games = [\n {\n id: gameIds.csgo,\n name: \"CS:GO\",\n mapType: mapTypes.static,\n maps: [\n {\n id: \"de_dust2\",\n url: \"de_dust2.png\",\n name: \"Dust2\",\n size: [1024, 1024],\n default: true\n },\n {\n id: \"de_cache\",\n url: \"de_cache.png\",\n name: \"Cache\",\n size: [1024, 1024]\n },\n {\n id: \"de_cbble\",\n url: \"de_cbble.png\",\n name: \"Cobblestone\",\n size: [1024, 1024]\n },\n {\n id: \"de_inferno\",\n url: \"de_inferno.png\",\n name: \"Inferno\",\n size: [1024, 1024]\n },\n {\n id: \"de_mirage\",\n url: \"de_mirage.png\",\n name: \"Mirage\",\n size: [1024, 1024]\n },\n { id: \"de_nuke\", url: \"de_nuke\", name: \"Nuke\", size: [1024, 1024] },\n {\n id: \"de_overpass\",\n url: \"de_overpass.png\",\n name: \"Overpass\",\n size: [1024, 1024]\n },\n {\n id: \"de_train\",\n url: \"de_train.png\",\n name: \"Train\",\n size: [1024, 1024]\n }\n ]\n },\n {\n id: gameIds.valorant,\n name: \"VALORANT\",\n mapType: mapTypes.static,\n maps: [\n {\n id: \"haven\",\n url: \"haven.svg\",\n name: \"Haven\",\n size: [1024, 1024],\n default: true\n },\n {\n id: \"bind\",\n url: \"bind.svg\",\n name: \"Bind\",\n size: [1024, 1024],\n },\n {\n id: \"split\",\n url: \"split.svg\",\n name: \"Split\",\n size: [1024, 1024],\n }\n ]\n },\n {\n id: gameIds.apex,\n name: \"Apex Legends\",\n mapType: mapTypes.static,\n maps: [\n {\n id: \"kings-canyon\",\n url: \"kings-canyon\",\n name: \"King's Canyon\",\n size: [1015, 1015],\n default: false\n },\n {\n id: \"worlds-edge\",\n url: \"worlds-edge\",\n name: \"World's Edge\",\n size: [1440, 1440],\n default: true\n }\n ]\n },\n {\n id: gameIds.dota2,\n name: \"DotA 2\",\n mapType: mapTypes.static,\n maps: [\n {\n id: \"map\",\n url: \"map.png\",\n name: \"DotA 2\",\n size: [1140, 1101],\n default: true\n }\n ]\n },\n {\n id: gameIds.lol,\n name: \"League of Legends\",\n mapType: mapTypes.static,\n maps: [\n {\n id: \"summoners-rift\",\n url: \"summoners-rift.png\",\n name: \"Summoner's Rift\",\n size: [2000, 1833],\n default: true\n }\n ]\n }\n];\n\nconst getGame = gameId => games.find(game => game.id === gameId);\nconst getMap = (gameId, mapId) =>\n getGame(gameId).maps.find(map => map.id === mapId);\n\nexport { mapTypes, gameIds, games, getGame, getMap, grenadeGames };\n","import { combineReducers } from \"redux\";\r\nimport { games, getGame } from \"../games\";\r\n\r\nconst defaultMapState = {\r\n id: \"\",\r\n game: \"valorant\",\r\n map: \"haven\",\r\n version: 8,\r\n points: [],\r\n notes: \"\"\r\n};\r\n\r\nconst STRATEGY_GAME_CHANGE = \"ge:STRATEGY_GAME_CHANGE\";\r\nconst STRATEGY_SET_ID = \"ge:STRATEGY_SET_ID\";\r\nconst STRATEGY_MAP_CHANGE = \"ge:STRATEGY_MAP_CHANGE\";\r\nconst STRATEGY_LINE_ADD = \"ge:STRATEGY_LINE_ADD\";\r\nconst STRATEGY_LINE_POINTS = \"ge:STRATEGY_LINE_POINTS\";\r\nconst STRATEGY_NOTES = \"ge:STRATEGY_NOTES\";\r\nconst STRATEGY_LINE_POINT_UNDO = \"ge:STRATEGY_LINE_POINT_UNDO\";\r\n\r\nconst strategyConstants = {\r\n STRATEGY_GAME_CHANGE,\r\n STRATEGY_MAP_CHANGE,\r\n STRATEGY_LINE_ADD,\r\n STRATEGY_LINE_POINTS,\r\n STRATEGY_NOTES,\r\n STRATEGY_LINE_POINT_UNDO\r\n};\r\n\r\nconst strategyReducers = (function () {\r\n const id = (state = defaultMapState.id, action) => {\r\n if (action.type === STRATEGY_SET_ID) {\r\n return action.payload;\r\n }\r\n return state;\r\n };\r\n\r\n const game = (state = defaultMapState.game, action) => {\r\n if (action.type === STRATEGY_GAME_CHANGE) {\r\n return action.payload ? action.payload : state;\r\n }\r\n return state;\r\n };\r\n\r\n const map = (state = defaultMapState.map, action) => {\r\n if (action.type === STRATEGY_GAME_CHANGE && action.payload) {\r\n return games\r\n .find(game => game.id === action.payload)\r\n .maps.find(map => map.default).id;\r\n }\r\n if (action.type === STRATEGY_MAP_CHANGE) {\r\n return getGame(action.payload.gameId).maps.find(\r\n map => map.id === action.payload.map\r\n ).id;\r\n }\r\n\r\n return state;\r\n };\r\n\r\n const points = (state = defaultMapState.points, action) => {\r\n if (action.type === STRATEGY_LINE_ADD) {\r\n return [...state, action.payload];\r\n } else if (action.type === STRATEGY_LINE_POINTS) {\r\n return action.payload;\r\n } else if (action.type === STRATEGY_LINE_POINT_UNDO) {\r\n if (!!action.payload) {\r\n //Remove a specific one?\r\n }\r\n\r\n return [...state.slice(0, state.length - 1)];\r\n } else if (action.type === STRATEGY_GAME_CHANGE) {\r\n return defaultMapState.points;\r\n }\r\n\r\n return state;\r\n };\r\n\r\n const notes = (state = defaultMapState.notes, action) => {\r\n if (action.type === STRATEGY_NOTES) {\r\n return action.payload;\r\n }\r\n if (action.type === STRATEGY_GAME_CHANGE) {\r\n return defaultMapState.notes;\r\n }\r\n\r\n return state;\r\n };\r\n\r\n const version = (state = defaultMapState.version, action) => {\r\n return state;\r\n };\r\n\r\n return combineReducers({\r\n id,\r\n game,\r\n map,\r\n version,\r\n points,\r\n notes\r\n });\r\n})();\r\n\r\nconst strategySelectors = (function () {\r\n const strategy = state => state.planner.strategy;\r\n const id = state => strategy(state).id;\r\n const game = state => strategy(state).game;\r\n const map = state => strategy(state).map;\r\n const points = state => strategy(state).points;\r\n const pointsByLineId = (state, lineId) =>\r\n points(state).filter(point => point.lineId === lineId);\r\n const notes = state => strategy(state).notes;\r\n\r\n return {\r\n id,\r\n strategy,\r\n game,\r\n map,\r\n points,\r\n pointsByLineId,\r\n notes\r\n };\r\n})();\r\n\r\nconst strategyActions = (function () {\r\n const setId = id => ({\r\n type: STRATEGY_SET_ID,\r\n payload: id\r\n });\r\n\r\n const setGame = gameId => ({\r\n type: STRATEGY_GAME_CHANGE,\r\n payload: gameId\r\n });\r\n\r\n const setMap = (gameId, map) => ({\r\n type: STRATEGY_MAP_CHANGE,\r\n payload: {\r\n gameId,\r\n map\r\n }\r\n });\r\n\r\n const setPoints = point => ({\r\n type: STRATEGY_LINE_POINTS,\r\n payload: point\r\n });\r\n\r\n const setNotes = notes => ({\r\n type: STRATEGY_NOTES,\r\n payload: notes\r\n });\r\n\r\n const addPoint = (x, y, lineId, lineIndex) => ({\r\n type: STRATEGY_LINE_ADD,\r\n payload: {\r\n x,\r\n y,\r\n lineId,\r\n lineIndex\r\n }\r\n });\r\n\r\n const resetMap = () => ({\r\n type: STRATEGY_GAME_CHANGE,\r\n payload: defaultMapState.gameId\r\n });\r\n\r\n const undoPoint = () => ({\r\n type: STRATEGY_LINE_POINT_UNDO\r\n });\r\n\r\n return {\r\n setId,\r\n setGame,\r\n setMap,\r\n setPoints,\r\n setNotes,\r\n addPoint,\r\n resetMap,\r\n undoPoint\r\n };\r\n})();\r\n\r\nexport {\r\n strategyActions,\r\n strategyReducers,\r\n strategySelectors,\r\n strategyConstants\r\n};\r\n","import { combineReducers } from \"redux\";\r\n\r\nconst toolColors = {\r\n \"player-blue\": \"#6CA0DC\",\r\n \"player-yellow\": \"#FFFF00\",\r\n \"player-purple\": \"#800080\",\r\n \"player-green\": \"#00A550\",\r\n \"player-orange\": \"#FF5800\",\r\n \"grenade-smoke\": \"#aaaaaa\",\r\n \"grenade-flash\": \"#D6C237\",\r\n \"grenade-he\": \"#D66D37\",\r\n \"grenade-fire\": \"#FF0000\",\r\n \"grenade-decoy\": \"#FFbb00\",\r\n \"grenade-recon\": \"#FFbb00\",\r\n\r\n \"agent-brimstone\": \"#6b8499\",\r\n \"agent-breach\": \"#d9743c\",\r\n \"agent-cypher\": \"#bbc1bc\",\r\n \"agent-jett\": \"#649ddc\",\r\n \"agent-omen\": \"#3b3871\",\r\n \"agent-phoenix\": \"#fffa7b\",\r\n \"agent-sage\": \"#0f3441\",\r\n \"agent-sova\": \"#3e5c89\",\r\n \"agent-raze\": \"#c68e42\",\r\n \"agent-viper\": \"#296e32\",\r\n circletext: \"#000000\",\r\n inversecircletext: \"#111111\"\r\n};\r\n\r\nconst TOOL_CHANGE = \"ge:TOOL_CHANGE\";\r\n\r\nconst initialState = {\r\n currentTool: \"\"\r\n};\r\n\r\nconst toolReducers = (function () {\r\n const currentTool = (state = initialState.currentTool, action) => {\r\n if (action.type === TOOL_CHANGE) {\r\n if (action.payload === state) {\r\n return initialState.currentTool;\r\n }\r\n return action.payload;\r\n }\r\n return state;\r\n };\r\n\r\n return combineReducers({\r\n currentTool\r\n });\r\n})();\r\n\r\nconst toolActions = (function () {\r\n const setTool = toolName => ({\r\n type: TOOL_CHANGE,\r\n payload: toolName\r\n });\r\n\r\n const clearTool = () => ({\r\n type: TOOL_CHANGE,\r\n payload: initialState.currentTool\r\n });\r\n return {\r\n clearTool,\r\n setTool\r\n };\r\n})();\r\n\r\nconst toolSelectors = (function () {\r\n const tools = state => state.planner.tools;\r\n const currentTool = state => tools(state).currentTool;\r\n\r\n return {\r\n tools,\r\n currentTool\r\n };\r\n})();\r\n\r\nexport { toolActions, toolReducers, toolSelectors, toolColors };\r\n","import { combineReducers } from \"redux\";\r\nimport { all, call, put, select, takeEvery } from \"redux-saga/effects\";\r\nimport { push } from \"react-router-redux\";\r\nimport { notify } from \"react-notify-toast\";\r\n\r\nimport { strategyActions, strategySelectors } from \"./Strategy/data\";\r\nimport { toolActions, toolReducers } from \"./Tools/data\";\r\nimport { strategyReducers } from \"./Strategy/data\";\r\nimport { userSelectors } from \"../Auth/data\";\r\nimport { callUnprotectedApi, callProtectedApi } from \"../../Utils/apiService\";\r\nimport { init } from \"../../Utils/vendor/drift\";\r\nimport { collaborationActions } from \"../../Utils/collaboration\";\r\n\r\n//Consts\r\nconst PLANNER_GET_STRATEGY_ID = \"planner:GET_STRATEGY_ID\";\r\nconst PLANNER_SAVE_STRATEGY = \"planner:PLANNER_SAVE_STRATEGY\";\r\nconst PLANNER_LOAD = \"planner:PLANNER_LOAD\";\r\nconst VIEWER_LOAD = \"viewer:VIEWER_LOAD\";\r\n\r\n// Actions\r\nconst plannerActions = {\r\n getStrategy: strategyId => ({\r\n type: PLANNER_GET_STRATEGY_ID,\r\n payload: strategyId\r\n }),\r\n saveStrategy: () => ({\r\n type: PLANNER_SAVE_STRATEGY\r\n }),\r\n plannerLoad: payload => ({\r\n type: PLANNER_LOAD,\r\n payload\r\n }),\r\n viewerLoad: payload => ({\r\n type: VIEWER_LOAD,\r\n payload\r\n })\r\n};\r\n\r\n//Sagas\r\nfunction* getStrategyById(action) {\r\n const strategyId = action.payload;\r\n\r\n try {\r\n const response = yield call(\r\n callUnprotectedApi,\r\n \"get\",\r\n `strategy/${strategyId}`\r\n );\r\n\r\n const strategy = response.data;\r\n\r\n yield* SetStoreStrategy(strategy);\r\n\r\n yield put(toolActions.clearTool());\r\n\r\n notify.show(\"Loaded strategy\", \"success\");\r\n } catch (e) {\r\n console.log(\"Couldn't load strategy\");\r\n\r\n notify.show(\"Error loading strategy\", \"error\");\r\n }\r\n}\r\n\r\nfunction* SetStoreStrategy(strategy) {\r\n if (strategy.id) {\r\n yield put(strategyActions.setId(strategy.id));\r\n }\r\n yield put(strategyActions.setGame(strategy.game));\r\n yield put(strategyActions.setMap(strategy.game, strategy.map));\r\n yield put(strategyActions.setPoints(strategy.points));\r\n yield put(strategyActions.setNotes(strategy.notes));\r\n}\r\n\r\nfunction* checkUrl(action) {\r\n let strategyId = action.payload;\r\n if (!action.payload) {\r\n const location = yield select(state => state.router.location);\r\n const params = new URLSearchParams(location.search);\r\n\r\n strategyId = params.get(\"strategyId\");\r\n\r\n const sessionId = params.get(\"cSessionId\");\r\n if (sessionId) {\r\n yield put(collaborationActions.joinSessionRequest(sessionId));\r\n }\r\n }\r\n\r\n yield put(plannerActions.viewerLoad(strategyId));\r\n}\r\n\r\nfunction* setStrategy(action) {\r\n yield put(strategyActions.resetMap());\r\n yield put(toolActions.clearTool());\r\n\r\n const strategyId = action.payload;\r\n\r\n if (!!strategyId) {\r\n yield put(plannerActions.getStrategy(strategyId));\r\n }\r\n}\r\n\r\nfunction* saveStrategy() {\r\n const strategy = yield select(strategySelectors.strategy);\r\n\r\n try {\r\n const accessToken = yield select(userSelectors.accessToken);\r\n\r\n const response = yield call(\r\n callProtectedApi,\r\n \"post\",\r\n \"strategy\",\r\n accessToken,\r\n strategy\r\n );\r\n const newId = response.data.id;\r\n if (!!newId) {\r\n yield put(push(`/planner/${newId}`));\r\n\r\n notify.show(\"Saved strategy\", \"success\");\r\n }\r\n } catch (e) {\r\n console.log(\"Error saving strategy \" + e);\r\n\r\n notify.show(\"Error saving strategy\", \"error\");\r\n }\r\n}\r\n\r\nfunction* PlannerSaga() {\r\n yield all([\r\n yield takeEvery(PLANNER_GET_STRATEGY_ID, getStrategyById),\r\n yield takeEvery(PLANNER_LOAD, checkUrl),\r\n yield takeEvery(PLANNER_SAVE_STRATEGY, saveStrategy),\r\n yield takeEvery(VIEWER_LOAD, setStrategy)\r\n ]);\r\n}\r\n\r\n//Reducers\r\nconst PlannerReducer = combineReducers({\r\n strategy: strategyReducers,\r\n tools: toolReducers\r\n});\r\n\r\nexport { PlannerSaga, PlannerReducer, plannerActions, SetStoreStrategy };\r\n","const tools = {\r\n \"player-blue\": {\r\n line: true,\r\n radius: 5\r\n },\r\n \"player-yellow\": {\r\n line: true,\r\n radius: 3\r\n },\r\n \"player-purple\": {\r\n line: true,\r\n radius: 3\r\n },\r\n \"player-green\": {\r\n line: true,\r\n radius: 3\r\n },\r\n \"player-orange\": {\r\n line: true,\r\n radius: 3\r\n },\r\n \"grenade-smoke\": {\r\n line: false,\r\n radius: 20\r\n },\r\n \"grenade-flash\": {\r\n line: false,\r\n radius: 20\r\n },\r\n \"grenade-he\": {\r\n line: false,\r\n radius: 20\r\n },\r\n \"grenade-fire\": {\r\n line: false,\r\n radius: 20\r\n },\r\n \"grenade-decoy\": {\r\n line: false,\r\n radius: 20\r\n },\r\n \"grenade-recon\": {\r\n line: false,\r\n radius: 235\r\n },\r\n\r\n\r\n \"agent-brimstone\": {\r\n line: true,\r\n radius: 15,\r\n imgSrc: \"/images/tools/valorant-agents/brimstone.png\"\r\n },\r\n \"agent-breach\": {\r\n line: true,\r\n radius: 15,\r\n imgSrc: \"/images/tools/valorant-agents/breach.png\"\r\n },\r\n \"agent-cypher\": {\r\n line: true,\r\n radius: 15,\r\n imgSrc: \"/images/tools/valorant-agents/cypher.png\"\r\n },\r\n \"agent-jett\": {\r\n line: true,\r\n radius: 15,\r\n imgSrc: \"/images/tools/valorant-agents/jett.png\"\r\n },\r\n \"agent-omen\": {\r\n line: true,\r\n radius: 15,\r\n imgSrc: \"/images/tools/valorant-agents/omen.png\"\r\n },\r\n \"agent-phoenix\": {\r\n line: true,\r\n radius: 15,\r\n imgSrc: \"/images/tools/valorant-agents/phoenix.png\"\r\n },\r\n \"agent-sage\": {\r\n line: true,\r\n radius: 15,\r\n imgSrc: \"/images/tools/valorant-agents/sage.png\"\r\n },\r\n \"agent-sova\": {\r\n line: true,\r\n radius: 15,\r\n imgSrc: \"/images/tools/valorant-agents/sova.png\"\r\n },\r\n \"agent-raze\": {\r\n line: true,\r\n radius: 15,\r\n imgSrc: \"/images/tools/valorant-agents/raze.png\"\r\n },\r\n \"agent-viper\": {\r\n line: true,\r\n radius: 15,\r\n imgSrc: \"/images/tools/valorant-agents/viper.png\"\r\n }\r\n};\r\n\r\nconst toolIds = Object.keys(tools);\r\n\r\nexport { tools, toolIds };\r\n","import { all, put, select, takeEvery } from \"redux-saga/effects\";\r\nimport { toolSelectors } from \"../Tools/data\";\r\nimport { strategyActions, strategySelectors } from \"../Strategy/data\";\r\nimport { combineReducers } from \"redux\";\r\nimport { tools } from \"../Tools/tools\";\r\n\r\n//Consts\r\nconst MAP_CLICKED = \"ge:MAP_CLICKED\";\r\nconst MAP_HOVER = \"ge:MAP_HOVER\";\r\n\r\n// Reducers\r\nconst mapReducer = (function () {\r\n const mouseLatLng = (state = [0, 0], action) => {\r\n if (action.type == MAP_HOVER) {\r\n return action.payload;\r\n }\r\n\r\n return state;\r\n };\r\n\r\n return combineReducers({\r\n mouseLatLng\r\n });\r\n})();\r\n\r\n// Selectors\r\nconst mapSelectors = (function () {\r\n const map = state => state.map;\r\n const mouseLatLng = state => map(state).mouseLatLng;\r\n\r\n return {\r\n mouseLatLng\r\n };\r\n})();\r\n\r\n// Actions\r\nconst mapActions = (function () {\r\n const handleClick = event => ({\r\n type: MAP_CLICKED,\r\n payload: event.latlng\r\n });\r\n\r\n const handleMouseMove = event => ({\r\n type: MAP_HOVER,\r\n payload: event.latlng\r\n });\r\n\r\n return {\r\n handleClick,\r\n handleMouseMove\r\n };\r\n})();\r\n\r\n// Sagas\r\nfunction* HandleMapClicked(action) {\r\n const { lat, lng } = action.payload;\r\n const currentTool = yield select(toolSelectors.currentTool);\r\n const toolDef = tools[currentTool];\r\n //No tool selected\r\n if (!currentTool) {\r\n return;\r\n }\r\n\r\n let lineIndex = 0;\r\n\r\n if (toolDef.line) {\r\n const points = yield select(strategySelectors.points);\r\n\r\n if (points.length > 0) {\r\n lineIndex =\r\n points.reduce((ans, val) => {\r\n return ans.lineIndex > val.lineIndex ? ans : val;\r\n }).lineIndex + 1;\r\n }\r\n }\r\n\r\n yield put(strategyActions.addPoint(lat, lng, currentTool, lineIndex));\r\n}\r\n\r\nfunction* MapSaga() {\r\n yield all([takeEvery(MAP_CLICKED, HandleMapClicked)]);\r\n}\r\n\r\nexport { MapSaga, mapReducer, mapSelectors, mapActions };\r\n","import { all, call, put, select, take, takeEvery } from \"redux-saga/effects\";\nimport { userSelectors } from \"../Auth/data\";\nimport { callProtectedApi } from \"../../Utils/apiService\";\nimport { combineReducers } from \"redux\";\nimport { init } from \"../../Utils/vendor/drift\";\n\nconst MATCHES_LOAD = \"ge:MATCHES_LOAD\";\nconst MATCHES_LOADED = \"ge:MATCHES_LOADED\";\n\nconst INSIGHTS_LOAD = \"ge:INSIGHTS_LOAD\";\nconst INSIGHTS_LOADED = \"ge:INSIGHTS_LOADED\";\n\nconst mapMap = {\n \"de_dust2\": \"Dust II\",\n \"de_mirage\": \"Mirage\",\n \"de_cache\": \"Cache\",\n \"de_nuke\": \"Nuke\",\n \"de_overpass\": \"Overpass\",\n \"de_inferno\": \"Inferno\"\n};\n\nconst insightsActions = (() => {\n const matchesLoad = () => ({\n type: MATCHES_LOAD\n });\n\n const matchesLoaded = payload => ({\n type: MATCHES_LOADED,\n payload\n });\n\n const insightsLoaded = payload => ({\n type: INSIGHTS_LOADED,\n payload\n });\n\n return {\n matchesLoad,\n matchesLoaded,\n insightsLoaded\n };\n})();\n\nconst insightsSelectors = (() => {\n const insights = state => state.insights;\n const matches = state => insights(state).matches;\n const matchByMatchId = (state, matchId) => matches(state).filter(ins => ins.id === matchId);\n const matchInsights = state => insights(state).insights;\n const matchInsightByMatchId = (state, matchId) => matchInsights(state) && matchInsights(state).filter(ins => ins.matchId === matchId);\n\n return {\n matches,\n matchByMatchId,\n matchInsights,\n matchInsightByMatchId\n };\n})();\n\nconst insightsReducer = (() => {\n const initialState = {\n matches: [\n \n ],\n insights: [\n ]\n };\n\n const matches = (state = initialState.matches, action) => {\n if (action.type === MATCHES_LOADED) {\n return action.payload;\n }\n return state;\n };\n\n const insights = (state = initialState.insights, action) => {\n if (action.type === INSIGHTS_LOADED) {\n let existingData = state === null ? [] : state;\n return [...existingData, ...action.payload];\n }\n return state;\n };\n\n return combineReducers({\n matches,\n insights\n });\n})();\n\nfunction* MatchesLoad() {\n yield call(GetUserMatches);\n}\n\nfunction* GetUserMatches(skip = 0, take = 10) {\n const accessToken = yield select(userSelectors.accessToken);\n const response = yield call(\n callProtectedApi,\n \"get\",\n `insights/matches?skip=${skip}&take=${take}`,\n accessToken\n );\n\n yield put(insightsActions.matchesLoaded(response.data));\n}\n\nfunction* MatchesLoaded(action) {\n const accessToken = yield select(userSelectors.accessToken);\n let calls = [];\n\n\n for (var matchIt in action.payload) {\n calls.push(call(LoadInsight, action.payload[matchIt], accessToken));\n }\n\n yield all(calls);\n}\n\nfunction* LoadInsight(match, accessToken) {\n if (!match.map) {\n return;\n }\n\n const matchInsightResponse = yield call(\n callProtectedApi,\n \"get\",\n `insights/matches/${match.id}/insights`,\n accessToken\n );\n\n const matchInsights = matchInsightResponse.data.map(insight => {\n var newInsight = JSON.parse(insight.insights);\n newInsight.matchId = match.id;\n return newInsight;\n });\n\n yield put(insightsActions.insightsLoaded(matchInsights));\n}\n\nfunction* InsightsSaga() {\n yield all([\n yield takeEvery(MATCHES_LOAD, MatchesLoad),\n yield takeEvery(MATCHES_LOADED, MatchesLoaded)\n ]);\n}\n\nexport { insightsActions, insightsReducer, insightsSelectors, mapMap, InsightsSaga };\n","import { applyMiddleware, combineReducers, createStore } from \"redux\";\r\nimport createSagaMiddleware from \"redux-saga\";\r\nimport { all } from \"redux-saga/effects\";\r\nimport createHistory from \"history/createBrowserHistory\";\r\nimport { routerReducer, routerMiddleware } from \"react-router-redux\";\r\nimport { reducer as formReducer } from \"redux-form\";\r\n\r\nimport { UserReducer, AuthSaga } from \"./App/Auth/data\";\r\nimport { PlannerReducer, PlannerSaga } from \"./App/Planner/data\";\r\nimport { mapReducer as MapReducer, MapSaga } from \"./App/Planner/Map/data\";\r\nimport { AppReducer, AppSaga } from \"./App/data\";\r\nimport { InsightsSaga, insightsReducer } from \"./App/Insights/data\";\r\n// import { CollaborationSaga, collaborationReducer } from \"./Utils/collaboration\";\r\n\r\nconst history = createHistory();\r\n\r\nconst reducers = combineReducers({\r\n app: AppReducer,\r\n user: UserReducer,\r\n map: MapReducer,\r\n planner: PlannerReducer,\r\n router: routerReducer,\r\n form: formReducer,\r\n insights: insightsReducer\r\n});\r\n\r\nconst sagaMiddleware = createSagaMiddleware();\r\nconst historyMiddleware = routerMiddleware(history);\r\n\r\nconst store = createStore(\r\n reducers,\r\n applyMiddleware(sagaMiddleware, historyMiddleware)\r\n);\r\n\r\nfunction* rootSagas() {\r\n yield all([\r\n PlannerSaga(),\r\n MapSaga(),\r\n AuthSaga(store.dispatch),\r\n AppSaga(),\r\n InsightsSaga()\r\n ]);\r\n}\r\n\r\nsagaMiddleware.run(rootSagas);\r\n\r\nexport { store, history };\r\n","import \"./userbar.css\";\r\n\r\nimport React from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport { userActions, userSelectors } from \"../data\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst content = {\r\n signin: \"Register/Sign in\",\r\n signout: \"Sign out\"\r\n};\r\n\r\nconst _UserBar = ({ isAuthenticated, profile, user, login, logout }) => (\r\n
\r\n {!isAuthenticated && (\r\n
\r\n \r\n {content.signin}\r\n \r\n \r\n )}\r\n {isAuthenticated && (\r\n
\r\n \r\n
\r\n \r\n
\r\n {user.name}\r\n \r\n \r\n {content.signout}\r\n \r\n \r\n )}\r\n
\r\n);\r\n\r\nconst mapStateToProps = state => ({\r\n isAuthenticated: userSelectors.isAuthenticated(state),\r\n profile: userSelectors.profile(state),\r\n user: userSelectors.user(state)\r\n});\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n login: () => dispatch(userActions.startLogin()),\r\n logout: () => dispatch(userActions.startLogout())\r\n});\r\n\r\nconst connected = connect(mapStateToProps, mapDispatchToProps)(_UserBar);\r\n\r\nexport { connected as UserBar };\r\n","import React from \"react\";\r\n\r\nconst DiscordButton = () => (\r\n \r\n Support\r\n \r\n \r\n);\r\n\r\nexport { DiscordButton };\r\n","import React from \"react\";\r\n\r\nconst FacebookButton = () => (\r\n \r\n \r\n \r\n);\r\n\r\nexport { FacebookButton };\r\n","import React from \"react\";\r\n\r\nconst TwitterButton = () => (\r\n \r\n \r\n \r\n);\r\n\r\nexport { TwitterButton };\r\n","import React from \"react\";\r\nimport { NavLink } from \"react-router-dom\";\r\nimport { UserBar } from \"../Auth/UserBar\";\r\nimport { connect } from \"react-redux\";\r\nimport { APP_LOAD } from \"../data\";\r\nimport { DiscordButton } from \"./Buttons/DiscordButton\";\r\nimport { FacebookButton } from \"./Buttons/Facebook\";\r\nimport { TwitterButton } from \"./Buttons/Twitter\";\r\n\r\nclass Header extends React.Component {\r\n\r\n componentDidMount() {\r\n this.props.loadApp();\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n loadApp: () => dispatch({ type: APP_LOAD })\r\n});\r\n\r\nconst connected = connect(null, mapDispatchToProps)(Header);\r\n\r\nexport { connected as Header };\r\n","import React, { Component, Children } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { CircleMarker, Polyline, ImageOverlay, LayerGroup } from \"react-leaflet\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport { strategySelectors } from \"../Strategy/data\";\r\nimport { toolColors } from \"../Tools/data\";\r\nimport { tools } from \"../Tools/tools\";\r\n\r\nclass _PathLine extends Component {\r\n static propTypes = {\r\n toolId: PropTypes.string.isRequired,\r\n points: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n x: PropTypes.number.isRequired,\r\n y: PropTypes.number.isRequired,\r\n lineId: PropTypes.string.isRequired\r\n }).isRequired\r\n ).isRequired,\r\n resetOnZeroIndex: PropTypes.bool\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.toolDef = tools[props.toolId];\r\n }\r\n\r\n drawEnd(toolDef, color, position) {\r\n if (toolDef.imgSrc) {\r\n const size = toolDef.radius;\r\n const bounds = [\r\n [position[0] - size, position[1] - size - (size / 10)],\r\n [position[0] + size, position[1] + size + (size / 10)]\r\n ];\r\n return ;\r\n } else {\r\n return \r\n }\r\n\r\n }\r\n\r\n calculateLineEnd(prevPos, endPos, distanceAlongLine) {\r\n const lineLengthInMapUnits = Math.sqrt(Math.pow(prevPos[0] - endPos[0], 2) + Math.pow(prevPos[1] - endPos[1], 2));\r\n\r\n\r\n const lineLengthOnTheGround = lineLengthInMapUnits * 1;\r\n\r\n // calculate a point along the line based on distance to total length ratio\r\n const pointOnLine = [endPos[0] + (prevPos[0] - endPos[0]) * distanceAlongLine / lineLengthOnTheGround,\r\n endPos[1] + (prevPos[1] - endPos[1]) * distanceAlongLine / lineLengthOnTheGround];\r\n\r\n return pointOnLine;\r\n }\r\n\r\n drawLines() {\r\n const { toolId, points, resetOnZeroIndex } = this.props;\r\n\r\n const lines = [];\r\n let currentLine = 0;\r\n\r\n if (resetOnZeroIndex) {\r\n points.forEach((point, index) => {\r\n if (point.lineIndex === 0) {\r\n if (index !== 0) {\r\n currentLine++;\r\n }\r\n lines.push([point]);\r\n return;\r\n }\r\n\r\n lines[currentLine].push(point);\r\n });\r\n } else {\r\n lines.push(points);\r\n }\r\n\r\n\r\n return lines.map((line, index) => {\r\n const sortedPoints = line.sort((a, b) => a.lineIndex - b.lineIndex);\r\n const latLngs = sortedPoints.map(point => [point.x, point.y]);\r\n const toolColor = toolColors[toolId];\r\n const endPos = latLngs[latLngs.length - 1];\r\n\r\n\r\n if (latLngs.length > 1) {\r\n const prevPos = latLngs[latLngs.length - 2];\r\n\r\n const newEnd = this.calculateLineEnd(prevPos, endPos, this.toolDef.radius);\r\n\r\n latLngs[latLngs.length - 1] = newEnd;\r\n }\r\n\r\n return (\r\n
\r\n \r\n {latLngs.length > 0 && this.drawEnd(this.toolDef, toolColor, endPos)}\r\n {latLngs.length > 1 && }\r\n \r\n
\r\n );\r\n });\r\n }\r\n\r\n render() {\r\n return
{this.drawLines()}
;\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state, props) => ({\r\n points: strategySelectors.pointsByLineId(state, props.toolId)\r\n});\r\n\r\nconst connected = connect(mapStateToProps)(_PathLine);\r\n\r\nconnected.propTypes = {\r\n toolId: PropTypes.string.isRequired,\r\n resetOnZeroIndex: PropTypes.bool\r\n};\r\n\r\nexport { _PathLine, connected as PathLine };\r\n","import React from \"react\";\r\nimport { ImageOverlay } from \"react-leaflet\";\r\nimport { gameIds } from \"../../games\";\r\n\r\nconst csgoBranding = \"Map provided by SimpleRadar\";\r\nconst valorantBranding = \"Map provided by Blitz.gg\";\r\n\r\nconst branding = (game) => {\r\n switch (game) {\r\n case gameIds.csgo:\r\n return csgoBranding\r\n case gameIds.valorant:\r\n return valorantBranding;\r\n default:\r\n return \"\";\r\n }\r\n}\r\n\r\nconst _ImageLayerMap = ({ game, map }) => (\r\n \r\n);\r\n\r\n\r\nexport { _ImageLayerMap as ImageLayerMap };\r\n","import React from \"react\";\r\nimport { Map, TileLayer } from \"react-leaflet\";\r\nimport { connect } from \"react-redux\";\r\nimport { CRS } from \"leaflet\";\r\n\r\nimport { strategySelectors } from \"../../Strategy/data\";\r\nimport { getMap } from \"../../games\";\r\nimport { toolSelectors } from \"../../Tools/data\";\r\nimport { mapActions } from \"../data\";\r\n\r\nconst _TiledMap = ({ gameId, map, handleClick, showBranding, children }) => (\r\n www.globalelitist.com.\"\r\n : \"\"\r\n }\r\n bounds={[[0, 0], [-255, 255]]}\r\n />\r\n);\r\n\r\nexport { _TiledMap as TiledMap };\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Circle } from \"react-leaflet\";\r\n\r\nimport { strategySelectors } from \"../Strategy/data\";\r\nimport { toolColors } from \"../Tools/data\";\r\nimport { tools } from \"../Tools/tools\";\r\n\r\nconst _IconRender = ({ points, toolId }) => {\r\n const toolDef = tools[toolId];\r\n\r\n return (\r\n
\r\n {points.map((point, index) => (\r\n \r\n ))}\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state, props) => ({\r\n points: strategySelectors.pointsByLineId(state, props.toolId)\r\n});\r\n\r\nconst connected = connect(mapStateToProps)(_IconRender);\r\n\r\nconnected.propTypes = {\r\n toolId: PropTypes.string.isRequired\r\n};\r\nexport { connected as IconRender };\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Circle, Polyline } from \"react-leaflet\";\r\n\r\nimport { toolSelectors } from \"../Tools/data\";\r\nimport { strategySelectors } from \"../Strategy/data\";\r\nimport { mapSelectors } from \"./data\";\r\nimport { tools } from \"../Tools/tools\";\r\n\r\nconst CurrentToolHint = ({ currentTool, pathPoints, mouseLatLng }) => {\r\n const toolColor = \"#CCCCCC33\";\r\n\r\n if (!mouseLatLng || mouseLatLng.length === 0) {\r\n return null;\r\n }\r\n\r\n const toolDef = tools[currentTool];\r\n\r\n const children = [];\r\n\r\n children.push(\r\n \r\n );\r\n\r\n if (toolDef.line) {\r\n const sortedPoints = pathPoints.sort(\r\n (a, b) => (a.lineIndex > b.lineIndex ? 1 : -1)\r\n );\r\n const lastPoint = sortedPoints[pathPoints.length - 1];\r\n\r\n if (lastPoint) {\r\n const drawPos = [[lastPoint.x, lastPoint.y], mouseLatLng];\r\n\r\n children.push(\r\n \r\n );\r\n }\r\n }\r\n\r\n return children;\r\n};\r\n\r\nconst mapStateToProps = (state, props) => ({\r\n pathPoints: strategySelectors.pointsByLineId(state, props.currentTool),\r\n mouseLatLng: mapSelectors.mouseLatLng(state)\r\n});\r\n\r\nconst connected = connect(mapStateToProps)(CurrentToolHint);\r\n\r\nexport { connected as CurrentToolHint };\r\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport cx from \"classnames\";\nimport { Map } from \"react-leaflet\";\nimport { CRS } from \"leaflet\";\n\nimport { PathLine } from \"./PathLine\";\nimport { ImageLayerMap } from \"./Maps/ImageLayerMap\";\nimport { getMap, getGame, mapTypes } from \"../games\";\nimport { TiledMap } from \"./Maps/TiledMap\";\nimport { strategySelectors } from \"../Strategy/data\";\nimport { IconRender } from \"./IconRender\";\nimport { toolSelectors } from \"../Tools/data\";\nimport { CurrentToolHint } from \"./CurrentToolHint\";\nimport { mapActions } from \"./data\";\nimport { tools, toolIds } from \"../Tools/tools\";\n\nclass _Canvas extends Component {\n passChildren = (toolIds) => (\n
\n {toolIds.map(toolId => {\n const tool = tools[toolId];\n\n return (tool.line && ) || ;\n })}\n\n {this.props.toolId !== \"\" && (\n \n )}\n
\n );\n\n // Current state render\n // Players\n // Grenade\n\n // Paths\n // \n\n render() {\n const {\n gameId,\n map,\n mapType,\n showBranding,\n handleClick,\n handleMouseMove,\n toolId\n } = this.props;\n\n const maxBounds = [[0, 0], [...map.size]],\n center = map.size.map(size => size / 2),\n startZoom = mapType === mapTypes.static ? 0 : 2,\n minZoom = mapType === mapTypes.static ? -1 : 1,\n maxZoom = mapType === mapTypes.static ? 3 : 5,\n maxBoundsViscosity = 1;\n\n return (\n \n \n {mapType === mapTypes.static && (\n \n )}\n {mapType === mapTypes.tiled && (\n \n )}\n\n {this.passChildren(toolIds)}\n \n \n );\n }\n}\n\nconst mapStateToProps = state => {\n const gameId = strategySelectors.game(state);\n\n return {\n gameId,\n mapType: getGame(strategySelectors.game(state)).mapType,\n toolId: toolSelectors.currentTool(state),\n map: getMap(gameId, strategySelectors.map(state))\n };\n};\n\nconst mapDispatchToProps = (dispatch, props) => ({\n handleClick: event => dispatch(mapActions.handleClick(event)),\n handleMouseMove: (toolId, event) => {\n if (toolId === \"\") {\n return;\n }\n dispatch(mapActions.handleMouseMove(event));\n }\n});\n\nconst connected = connect(mapStateToProps, mapDispatchToProps)(_Canvas);\n\nexport { _Canvas, connected as Canvas };\n","import React from \"react\";\r\nimport {plannerActions} from \"../Planner/data\";\r\nimport {connect} from \"react-redux\";\r\nimport {Canvas} from \"../Planner/Map/MapDisplay\";\r\n\r\nclass _Viewer extends React.Component {\r\n componentDidMount() {\r\n this.props.viewerLoad();\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch, props) => ({\r\n viewerLoad: () => dispatch(plannerActions.viewerLoad(props.match.params.strategyId))\r\n});\r\n\r\nconst connected = connect(undefined, mapDispatchToProps)(_Viewer);\r\n\r\nexport {\r\n connected as Viewer\r\n}\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport { userSelectors } from \"../../../Auth/data\";\r\nimport { plannerActions } from \"../../data\";\r\n\r\nconst content = {\r\n title: \"Share\",\r\n explainer: \"Create a free account to start a playbook!\",\r\n save: \"Save strategy\"\r\n};\r\n\r\nconst _UserMapOptionsDrawer = ({ isAuthenticated, saveStrategy }) => (\r\n
\r\n

{content.title}

\r\n \r\n {content.save}\r\n \r\n {!isAuthenticated && (\r\n

{content.explainer}

\r\n )}\r\n
\r\n);\r\n\r\nconst mapStateToProps = state => ({\r\n isAuthenticated: userSelectors.isAuthenticated(state)\r\n});\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n saveStrategy: () => dispatch(plannerActions.saveStrategy())\r\n});\r\n\r\nconst connected = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(_UserMapOptionsDrawer);\r\n\r\nexport { _UserMapOptionsDrawer, connected as UserMapOptionsDrawer };\r\n","import React, { Component } from \"react\";\r\nimport cx from \"classnames\";\r\nimport { connect } from \"react-redux\";\r\nimport { strategyActions, strategySelectors } from \"../../Strategy/data\";\r\nimport { games, getGame } from \"../../games\";\r\nimport { UserMapOptionsDrawer } from \"../ToolDrawers/UserMapOptionsDrawer\";\r\n\r\nconst content = {\r\n gameTitle: \"Games\",\r\n changeGame: \"Change Game\",\r\n mapTitle: \"Maps\",\r\n changeMap: \"Change Map\",\r\n tools: \"Tools\",\r\n resetStrategy: \"Reset Strategy\"\r\n};\r\n\r\nclass _MapToolbox extends Component {\r\n renderGameDropdown() {\r\n const { game } = this.props;\r\n\r\n return games.map((gameObj, index) => {\r\n return (\r\n \r\n {gameObj.name}\r\n \r\n );\r\n });\r\n }\r\n\r\n renderMapDropdown() {\r\n const { game, map } = this.props;\r\n const maps = getGame(game).maps;\r\n\r\n return maps.map((mapObj, index) => {\r\n return (\r\n \r\n {!!mapObj.name ? mapObj.name : mapObj.id}\r\n \r\n );\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n

{content.gameTitle}

\r\n
\r\n \r\n {content.changeGame}\r\n \r\n \r\n {this.renderGameDropdown()}\r\n
\r\n
\r\n
\r\n
\r\n

{content.mapTitle}

\r\n
\r\n \r\n {content.changeMap}\r\n \r\n \r\n {this.renderMapDropdown()}\r\n
\r\n
\r\n \r\n
\r\n

{content.tools}

\r\n \r\n {content.resetStrategy}\r\n \r\n
\r\n \r\n {/* */}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n game: strategySelectors.game(state),\r\n map: strategySelectors.map(state)\r\n});\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n setGame: gameId => dispatch(strategyActions.setGame(gameId)),\r\n setMap: (gameId, mapId) => dispatch(strategyActions.setMap(gameId, mapId)),\r\n resetMap: () => dispatch(strategyActions.resetMap())\r\n});\r\n\r\nconst connected = connect(mapStateToProps, mapDispatchToProps)(_MapToolbox);\r\n\r\nexport { _MapToolbox, connected as MapToolbox };\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport cx from \"classnames\";\r\n\r\nimport { toolActions, toolColors, toolSelectors } from \"./data\";\r\n\r\nconst _ToolButton = ({\r\n children,\r\n toolColor,\r\n toolName,\r\n setTool,\r\n currentTool\r\n}) => (\r\n \r\n {children}\r\n \r\n );\r\n\r\n_ToolButton.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n toolColor: PropTypes.string,\r\n setTool: PropTypes.func.isRequired\r\n};\r\n\r\nconst mapStateToProps = state => ({\r\n currentTool: toolSelectors.currentTool(state)\r\n});\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n setTool: toolName => dispatch(toolActions.setTool(toolName))\r\n});\r\n\r\nconst ToolButton = connect(mapStateToProps, mapDispatchToProps)(_ToolButton);\r\n\r\nexport { _ToolButton, ToolButton };\r\n","import React from \"react\";\r\n\r\nimport {ToolButton} from \"../ToolButton\";\r\n\r\nconst content = {\r\n mapTitle: \"Players\"\r\n};\r\n\r\nconst PlayerToolDrawer = () => (\r\n
\r\n

{content.mapTitle}

\r\n
\r\n \r\n 1\r\n \r\n \r\n 2\r\n \r\n \r\n 3\r\n \r\n \r\n 4\r\n \r\n \r\n 5\r\n \r\n
\r\n
\r\n);\r\n\r\nexport {\r\n PlayerToolDrawer\r\n};\r\n","import React from \"react\";\r\n\r\nimport { ToolButton } from \"../ToolButton\";\r\n\r\nconst content = {\r\n mapTitle: \"Grenades\"\r\n};\r\n\r\nconst GrenadeToolDrawer = () => (\r\n
\r\n

{content.mapTitle}

\r\n
\r\n \r\n \r\n Smoke\r\n \r\n \r\n \r\n \r\n Grenade\r\n \r\n \r\n \r\n \r\n Flash\r\n \r\n \r\n \r\n \r\n Fire\r\n \r\n \r\n
\r\n
\r\n);\r\n\r\nexport {\r\n GrenadeToolDrawer\r\n};\r\n","import React from \"react\";\r\nimport {connect} from \"react-redux\";\r\n\r\nimport {strategyActions, strategySelectors} from \"../../Strategy/data\";\r\n\r\nconst content = {\r\n mapTitle: \"Notes\",\r\n general: \"General\",\r\n location: \"Location\",\r\n placeholder: \"Blue buys 2 flashes, orange buys a smoke...\"\r\n};\r\n\r\nconst _NotesToolDrawer = ({ mapNotes, setNotes }) => (\r\n
\r\n

{content.mapTitle}

\r\n {/*

{content.general}

*/}\r\n\r\n