{"version":3,"sources":["actions/index.js","components/EntryBox.js","components/Lobby.js","components/AnswerEntry.js","components/Leaderboard.js","components/Results.js","components/Voting.js","components/GameSelection.js","components/Game.js","registerServiceWorker.js","reducers/playerInfoReducer.js","reducers/gameInformationReducer.js","reducers/uiStateReducer.js","reducers/index.js","signalRMiddleware.js","index.js"],"names":["startNewRound","type","EntryBox","props","handleChange","event","setState","value","target","handleSubmit","state","invalidName","submitPlayerName","preventDefault","this","visible","onSubmit","FormControl","placeholder","onChange","Button","className","React","Component","connect","name","payload","Lobby","handleClick","isPrivate","groupCode","players","map","player","index","onClick","gameInfo","AnswerEntry","updateAnswerEntry","submitAnswer","answerEntryText","handleHelpMe","getHelpWord","acro","timer","answerSubmitted","answerInvalid","helpWord","currentCountdown","uiState","answer","text","Leaderboard","leaderboard","entry","playerName","points","leaderBoard","Results","results","result","votes","Voting","id","voteForAnswer","showAnswers","answers","e","answerId","GameSelection","handlePublicJoinSubmit","joinPublicGame","handleCreatePrivateSubmit","createPrivateGame","handlePrivateJoinSubmit","joinPrivateGame","toUpperCase","aria-label","aria-describedby","Game","componentDidMount","signalrStart","ReactGA","initialize","pageview","gameState","nameEntered","renderGame","renderLobbyArea","isLocalhost","Boolean","window","location","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","controller","console","log","catch","error","initialState","combineReducers","playerInfo","action","Object","assign","hubConnection","HubConnectionBuilder","withUrl","build","store","createStore","reducers","applyMiddleware","thunk","next","on","dispatch","connectionCount","numOfGames","start","err","invoke","success","word","ReactDOM","render","Container","document","getElementById","URL","process","origin","addEventListener","fetch","response","status","headers","get","indexOf","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.68c8d400.chunk.js","sourcesContent":["export const connectToHub = () => {\n return { type: 'CONNECT_TO_HUB', payload: null };\n};\n\nexport const newAcronym = (acronym) => {\n return { type: 'NEW_ACRONYM', payload: acronym};\n};\n\nexport const signalrStart = () => {\n return { type: 'SIGNALR_START' };\n};\n\nexport const joinPublicGame = () => {\n return { type: 'SIGNALR_JOIN_PUBLIC' };\n};\n\nexport const joinPrivateGame = (groupCode) => {\n return { type: 'SIGNALR_JOIN_PRIVATE_GAME', payload: groupCode };\n};\n\nexport const createPrivateGame = () => {\n return { type: 'SIGNALR_CREATE_PRIVATE' };\n};\n\nexport const submitPlayerName = (name) => {\n return { type: 'SIGNALR_SUBMIT_NAME', payload: name };\n};\n\nexport const startNewRound = () => {\n return { type: 'SIGNALR_START_ROUND'};\n};\n\nexport const submitAnswer = (answer) => {\n return { type: 'SUBMIT_ANSWER', payload: answer};\n};\n\nexport const voteForAnswer = (answerId) => {\n return { type: 'VOTE_FOR_ANSWER', payload: answerId};\n};\n\nexport const updateAnswerEntry = (text) => {\n return { type: 'ANSWER_ENTRY_CHANGED', payload: text};\n}\n\nexport const getHelpWord = () => {\n return { type: 'SIGNALR_GET_HELP_WORD'};\n};\n\n\n\n\n\n","import React from 'react';\nimport { FormControl, Button } from 'react-bootstrap';\nimport { connect } from 'react-redux';\n\nimport { submitPlayerName } from '../actions';\n\nclass EntryBox extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n value: '',\n invalidName: false\n };\n }\n\n handleChange = (event) => {\n this.setState({value: event.target.value});\n }\n \n handleSubmit = (event) => {\n if ( this.state.value ) {\n this.setState({ invalidName: false }); \n this.props.submitPlayerName(this.state.value);\n }\n else\n this.setState({ invalidName: true });\n event.preventDefault();\n } \n \n render() {\n if ( !this.props.visible )\n return null;\n\n return ( \n
\n\n \n
\n {this.state.invalidName &&
Can you just enter a name, please?
}\n
\n \n \n );\n }\n}\n\nexport default connect(null, { submitPlayerName })(EntryBox);","import React from 'react';\nimport { Button } from 'react-bootstrap';\n\nimport { connect } from 'react-redux';\nimport { startNewRound } from '../actions';\n\nclass Lobby extends React.Component {\n\n handleClick = (event) => {\n this.props.startNewRound();\n event.preventDefault();\n }\n \n render() {\n if ( !this.props.visible )\n return null;\n\n return (\n
\n

PLAYERS

\n {this.props.isPrivate &&\n
\n

PRIVATE GAME CODE:

\n

{this.props.groupCode}

\n

Give this code to your friends so they can join your game!


\n
\n }\n

JOINED SO FAR:

\n
    \n {this.props.players.map((player, index) =>\n
  • \n {player.name}\n
  • )\n }\n
\n

\n \n

\n

When everyone has joined, press Start Round!

\n \n \n
\n\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n return { \n groupCode : state.gameInfo.groupCode,\n players: state.gameInfo.players,\n isPrivate: state.gameInfo.isPrivate\n };\n}\n\nexport default connect( mapStateToProps, { startNewRound })(Lobby);","import React from 'react';\nimport { FormControl, Button} from 'react-bootstrap';\n\nimport { connect } from 'react-redux';\nimport { submitAnswer, updateAnswerEntry, getHelpWord } from '../actions';\n\nclass AnswerEntry extends React.Component {\n\n handleChange = (event) => {\n this.props.updateAnswerEntry(event.target.value);\n }\n \n handleSubmit = (event) => { \n this.props.submitAnswer(this.props.answerEntryText); \n event.preventDefault();\n } \n\n handleHelpMe = (event) => {\n this.props.getHelpWord();\n event.preventDefault();\n } \n\n render() {\n if ( !this.props.visible )\n return null;\n\n return (\n
\n

ANSWER TIME!

\n

{this.props.acro}

\n

{this.props.timer}

\n\n {!this.props.answerSubmitted && \n
\n
\n \n

\n {this.props.answerInvalid &&
DOESN'T MATCH
}\n \n \n

\n\n { !this.props.helpWord && }\n

{this.props.helpWord}

\n
\n }\n\n {this.props.answerSubmitted &&

Be patient you crackhead, people are still thinking.

}\n\n
\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n return { \n groupCode : state.gameInfo.groupCode,\n acro: state.gameInfo.acro,\n timer: state.gameInfo.currentCountdown,\n answerSubmitted: state.uiState.answerSubmitted,\n answerInvalid: state.uiState.answerInvalid,\n answerEntryText: state.uiState.answerEntryText,\n helpWord: state.uiState.helpWord\n };\n}\n\nexport default connect(mapStateToProps, { submitAnswer, updateAnswerEntry, getHelpWord } )(AnswerEntry);","import React from 'react';\n\nimport { connect } from 'react-redux';\n\n\nclass Leaderboard extends React.Component { \n \n render() {\n\n return (\n
\n

LEADERBOARD

\n
    \n {this.props.leaderboard.map((entry, index) =>\n
  • \n

    {entry.playerName}

    \n

    {entry.points} POINTS

    \n
    \n
  • \n )}\n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n return { \n leaderboard : state.gameInfo.leaderBoard\n };\n}\n\nexport default connect(mapStateToProps )(Leaderboard);","import React from 'react';\nimport { Button } from 'react-bootstrap';\n\nimport { connect } from 'react-redux';\n\nimport { startNewRound } from '../actions';\nimport Leaderboard from './Leaderboard';\n\nclass Results extends React.Component { \n\n handleClick = (event) => {\n this.props.startNewRound();\n event.preventDefault();\n }\n \n render() {\n if ( !this.props.visible )\n return null;\n\n return (\n
\n

RESULTS!

\n\n
    \n {this.props.results.map((result, index) =>\n
  • \n

    \"{result.answer}\"

    \n

    {result.playerName}

    \n

    VOTES: {result.votes}

    \n
    \n
  • \n )}\n
\n\n
\n \n
\n \n\n
\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n return { \n results : state.gameInfo.results\n };\n}\n\nexport default connect(mapStateToProps, {startNewRound})(Results);","import React from 'react';\nimport { Button } from 'react-bootstrap';\nimport { connect } from 'react-redux';\n\nimport {voteForAnswer} from '../actions';\n\nclass Voting extends React.Component {\n\n\n handleClick = (id, event) =>\n {\n this.props.voteForAnswer(id);\n event.preventDefault();\n }\n \n render() {\n if ( !this.props.visible )\n return null;\n\n return (\n
\n

VOTE!

\n

Click to vote on the best!

\n

{this.props.timer}

\n \n {this.props.showAnswers && \n
    \n {this.props.answers.map((answer) =>\n
  • \n \n\n \n
  • \n )}\n
\n }\n\n {!this.props.showAnswers && \n

Be PATIENT while slower humans vote.

\n }\n
\n );\n }\n}\n\n\nconst mapStateToProps = (state) => {\n return { \n answers : state.gameInfo.answers,\n timer: state.gameInfo.currentCountdown,\n showAnswers: state.uiState.showAnswers\n };\n}\n\n\nexport default connect(mapStateToProps, {voteForAnswer})(Voting);","import React from 'react';\nimport {FormControl, Button } from 'react-bootstrap';\n\nimport { connect } from 'react-redux';\nimport { joinPublicGame, joinPrivateGame, createPrivateGame } from '../actions';\n\nclass GameSelection extends React.Component {\n constructor(props) {\n super(props);\n this.state = {value: ''};\n \n }\n\n handlePublicJoinSubmit = (event) => { \n this.props.joinPublicGame();\n event.preventDefault();\n }\n\n handleCreatePrivateSubmit = (event) => { \n this.props.createPrivateGame();\n event.preventDefault();\n }\n\n handlePrivateJoinSubmit = (event) => {\n this.props.joinPrivateGame(this.state.value);\n event.preventDefault();\n } \n\n handleChange = (event) => {\n this.setState({value: event.target.value.toUpperCase()});\n }\n \n render() {\n if ( !this.props.visible )\n return null;\n\n return (\n
\n \n

\n\n \n

\n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n\n );\n }\n}\n\nexport default connect(null, { joinPublicGame, joinPrivateGame, createPrivateGame })(GameSelection);","import React from \"react\";\nimport EntryBox from \"./EntryBox\";\nimport Lobby from \"./Lobby\";\nimport AnswerEntry from \"./AnswerEntry\";\nimport Results from \"./Results\";\nimport Voting from \"./Voting\";\nimport GameSelection from \"./GameSelection\";\nimport { connect } from \"react-redux\";\nimport { signalrStart } from \"../actions/\";\nimport ReactGA from \"react-ga\";\n\nclass Game extends React.Component {\n constructor(props) {\n\n super(props)\n ReactGA.initialize(\"G-PDS9TS3ND4\");\n ReactGA.pageview(\"Home\");\n }\n\n renderLobbyArea() {\n return (\n
\n

ACROPOCALYPSE

\n
\n

\n 1. Create a private game or join a random public game\n

\n

\n 2. Get an Acronym, come up with something funny\n

\n

3. Vote for the most offensive

\n
\n\n \n \n\n
\n
\n
\n );\n }\n\n renderGame() {\n return (\n
\n \n \n \n \n
\n
\n
\n );\n }\n\n render() {\n if (!this.props.nameEntered) return this.renderLobbyArea();\n else return this.renderGame();\n }\n\n componentDidMount = () => {\n this.props.signalrStart();\n };\n}\n\nconst mapStateToProps = (state) => {\n return {\n groupCode: state.gameInfo.groupCode,\n gameState: state.gameInfo.gameState,\n nameEntered: state.uiState.nameEntered,\n };\n};\n\nexport default connect(mapStateToProps, { signalrStart })(Game);\n","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport default function register() {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://goo.gl/SC7cgQ'\n );\n });\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log('New content is available; please refresh.');\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","const initialState = {\n playerName: null\n}\n\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'SIGNALR_SUBMIT_NAME':\n return {\n playerName: action.payload\n };\n default:\n return state;\n }\n};","const initialState = {\n currentCountdown: 0,\n gameState: null,\n answers: [],\n players: [],\n acro : null,\n isPrivate : false,\n groupCode: null,\n results: [],\n leaderBoard: []\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'TIMER_TICK':\n return Object.assign({}, state, {\n currentCountdown: action.payload\n }) \n case 'GAME_STATE':\n return Object.assign({}, state, {\n gameState: action.payload\n }) \n case 'NEW_ACRONYM':\n return Object.assign({}, state, {\n acro: action.payload\n }) \n case 'NEW_GROUP_CODE':\n return Object.assign({}, state, {\n groupCode: action.payload\n }) \n case 'NEW_PRIVATE_GAME':\n return Object.assign({}, state, {\n groupCode: action.payload,\n isPrivate: true\n }) \n case 'NEW_ANSWERS':\n return Object.assign({}, state, {\n answers: action.payload\n }) \n case 'NEW_PLAYERS':\n return Object.assign({}, state, {\n players: action.payload\n }) \n case 'NEW_RESULTS':\n return Object.assign({}, state, {\n results: action.payload\n }) \n case \"SIGNALR_JOIN_PRIVATE_GAME\":\n return Object.assign({}, state, {\n groupCode: action.payload,\n isPrivate: true\n }) \n case \"NEW_LEADERBOARD\":\n console.log(action.payload)\n return Object.assign({}, state, { \n leaderBoard: action.payload\n }) \n \n default:\n return state;\n }\n};\n","const initialState = { \n nameEntered: false,\n showAnswers: true,\n answerSubmitted: false,\n answerInvalid: false,\n answerEntryText: \"\",\n helpWord: null\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'SIGNALR_SUBMIT_NAME':\n return Object.assign({}, state, {\n nameEntered: true\n }) \n case 'NEW_ROUND_STARTED':\n return Object.assign({}, state, {\n showAnswers: true,\n answerSubmitted: false,\n answerInvalid: false,\n answerEntryText: \"\",\n helpWord: null\n }) \n case 'VOTE_FOR_ANSWER':\n return Object.assign({}, state, {\n showAnswers: false\n }) \n case 'ANSWER_SUBMIT_RESULT':\n return Object.assign({}, state, {\n answerSubmitted: action.payload,\n answerInvalid: !action.payload\n }) \n case 'ANSWER_ENTRY_CHANGED':\n return Object.assign({}, state, {\n answerEntryText: action.payload\n }) \n case 'NEW_HELP_WORD':\n return Object.assign({}, state, {\n helpWord: action.payload\n })\n default:\n return state;\n }\n};","import { combineReducers } from 'redux'\nimport playerInfoReducer from './playerInfoReducer';\nimport gameInformationReducer from './gameInformationReducer';\nimport uiStateReducer from './uiStateReducer';\n\nexport default combineReducers({ \n playerInfo: playerInfoReducer,\n gameInfo: gameInformationReducer,\n uiState: uiStateReducer\n});\n","import { HubConnectionBuilder } from '@aspnet/signalr';\n\nconst hubConnection = new HubConnectionBuilder().withUrl(\"/commHub\").build();\n\nexport const signalRMiddleware = (store) => {\n return (next) => (action) => {\n switch ( action.type ) {\n case \"SIGNALR_START\":\n // Add all the handlers here\n hubConnection.on('GameState', (gameState) => { \n store.dispatch({ type: \"GAME_STATE\", payload: gameState });\n });\n \n hubConnection.on('TimerTick', (currentCountdown) => {\n store.dispatch({ type: \"TIMER_TICK\", payload: currentCountdown });\n });\n \n hubConnection.on('Answers', (answers) => {\n store.dispatch({ type: \"NEW_ANSWERS\", payload: answers });\n });\n \n hubConnection.on('RoundStart', (acro) => {\n store.dispatch({ type: \"NEW_ACRONYM\", payload: acro });\n store.dispatch({ type: \"NEW_ROUND_STARTED\"} );\n });\n \n hubConnection.on('Acronym', (acro) => {\n store.dispatch({ type: \"NEW_ACRONYM\", payload: acro });\n });\n \n hubConnection.on('ConnectionCount', (connectionCount) => {\n //this.setState( {connectionCount} );\n });\n \n hubConnection.on('Players', (players) => {\n store.dispatch({ type: \"NEW_PLAYERS\", payload: players });\n });\n \n hubConnection.on('Results', (results) => {\n store.dispatch({ type: \"NEW_RESULTS\", payload: results });\n });\n \n hubConnection.on('NumOfGames', (numOfGames) => {\n //this.setState( {numOfGames} );\n });\n\n hubConnection.on('Leaderboard', (leaderboard) => {\n store.dispatch({ type: \"NEW_LEADERBOARD\", payload: leaderboard });\n });\n \n // Connect the Hub\n hubConnection\n .start()\n .then(console.log('Connection started from middleware!'))\n .catch(err => console.log('Error while establishing connection'));\n break;\n case \"SIGNALR_PLAYER_NAME\":\n hubConnection.invoke(\"SetName\", action.payload);\n break;\n case \"SIGNALR_JOIN_PUBLIC\":\n hubConnection.invoke(\"JoinPublicGame\").then( (groupCode) => {\n store.dispatch({ type: \"NEW_GROUP_CODE\", payload: groupCode});\n });\n break;\n case \"SIGNALR_JOIN_PRIVATE_GAME\":\n hubConnection.invoke(\"JoinPrivateGame\", action.payload);\n break;\n case \"SIGNALR_CREATE_PRIVATE\":\n hubConnection.invoke(\"CreateNewGame\").then( (groupCode) => {\n store.dispatch({ type: \"NEW_PRIVATE_GAME\", payload: groupCode} );\n });\n break;\n case \"SIGNALR_SUBMIT_NAME\":\n hubConnection.invoke(\"SetName\", action.payload); \n break;\n case \"SIGNALR_START_ROUND\":\n hubConnection.invoke(\"StartNewRound\");\n break;\n case \"SUBMIT_ANSWER\":\n hubConnection.invoke(\"ValidateAnswer\", action.payload).then( (success) => {\n if ( success ) \n hubConnection.invoke(\"SubmitAnswer\", action.payload);\n store.dispatch({ type: 'ANSWER_SUBMIT_RESULT', payload: success });\n });\n break;\n case \"VOTE_FOR_ANSWER\":\n hubConnection.invoke(\"VoteForAnswer\", action.payload);\n break;\n case \"SIGNALR_GET_HELP_WORD\":\n hubConnection.invoke(\"WordForLetter\").then( (word) => {\n store.dispatch({ type: \"NEW_HELP_WORD\", payload: word});\n });\n break;\n\n \n }\n return next(action);\n };\n};","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport Game from \"./components/Game\";\nimport registerServiceWorker from \"./registerServiceWorker\";\nimport { Container } from \"react-bootstrap\";\nimport { Provider } from \"react-redux\";\nimport { createStore, applyMiddleware } from \"redux\";\nimport thunk from \"redux-thunk\";\n\nimport reducers from \"./reducers\";\nimport { signalRMiddleware } from \"./signalRMiddleware\";\n\nconst store = createStore(reducers, applyMiddleware(thunk, signalRMiddleware));\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById(\"root\")\n);\n\nregisterServiceWorker();\n"],"sourceRoot":""}