(this["webpackJsonpreact-boilerplate"]=this["webpackJsonpreact-boilerplate"]||[]).push([[0],[,,,,,,,,function(e,a,t){"use strict";var n=t(1),r=t(45),c="production"===t.n(r)()().REACT_APP_ENVIRONMENT?{apiAddress:"https://node-go-api.herokuapp.com/api/v1",endpoint:"https://play-node-go.herokuapp.com",authAddress:"https://node-go-api.herokuapp.com/auth",socketAddress:"https://node-go-api.herokuapp.com"}:{apiAddress:"http://localhost:8000/api/v1",authAddress:"http://localhost:8000/auth",endpoint:"http://localhost:3000",socketAddress:"http://localhost:8000"};a.a=Object(n.a)({},c)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,a,t){e.exports=t(118)},,,,,function(e,a,t){},,function(e,a,t){},function(e,a,t){},function(e,a,t){},,,,,function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){},function(e,a,t){"use strict";t.r(a),t.d(a,"launch",(function(){return s}));var n=t(46),r=t.n(n),c=t(8),s=function(e,a){var t=r()("".concat(c.a.socketAddress,"/").concat(e));return t.on("connected",(function(){a({type:"SOCKET",message:"CONNECTED",body:{nsp:t.nsp}})})),t.on("connect_error",(function(e){a({type:"ERR",message:"SOCKET_ERROR",body:{socketError:e}})})),t.on("error",(function(e){a({type:"ERR",message:"SOCKET_ERROR",body:{socketError:e}})})),t.on("room_connected",(function(e){a({type:"ROOMS",message:"CONNECT_ROOM",body:e})})),t.on("new_user",(function(e){console.log("new_user received"),a({type:"ROOMS",message:"NEW_USER",body:e})})),t.on("game_connected",(function(e){console.log(e),console.log("game_connected received"),a({type:"GAMES",message:"UPDATE_BOARD",body:e})})),t.on("update_board",(function(e){console.log(e),console.log("update_board received"),a({type:"GAMES",message:"UPDATE_BOARD",body:e.board})})),t}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,a){},,,function(e,a,t){},function(e,a,t){"use strict";t.r(a);var n=t(0),r=t.n(n),c=t(42),s=t.n(c),o=(t(53),t(2)),i=t.n(o),l=t(6),m=t(4),u=t(11),p=(t(55),t(56),t(57),function(){return r.a.createElement(r.a.Fragment,null,"Logo")}),d=function(e){return r.a.createElement("div",{className:"NavBar","data-testid":"NavBar"},r.a.createElement(m.b,{to:"/home"},r.a.createElement("div",{className:"NavBar__logo"},r.a.createElement(p,null))),r.a.createElement(m.b,{to:"/home"},r.a.createElement("div",{className:"NavBar__menu-item NavBar__home"},r.a.createElement("p",null,"Find a Game"))),r.a.createElement(m.b,{to:"/news"},r.a.createElement("div",{className:"NavBar__menu-item NavBar__news"},r.a.createElement("p",null,"News"))),r.a.createElement(m.b,{to:"/account"},r.a.createElement("div",{className:"NavBar__menu-item NavBar__acount"},e.user?e.user.username:r.a.createElement(r.a.Fragment,null))))},_=(t(62),function(){return r.a.createElement("nav",null)}),E=t(1),f=(t(63),t(8)),b=f.a.authAddress,h="".concat(b,"/signup"),g="".concat(b,"/login"),v=new Headers;v.append("Content-Type","application/json"),v.append("Accept","application/json"),v.append("Sec-Fetch-Site","cross-site");var y=function(e){var a;return i.a.async((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,i.a.awrap(fetch(g,{method:"POST",credentials:"include",body:JSON.stringify(e),headers:v}).then((function(e){return e.text()})).then((function(e){return JSON.parse(e)})).catch((function(e){return e})));case 2:return a=t.sent,t.abrupt("return",a);case 4:case"end":return t.stop()}}))},N=function(e){var a;return i.a.async((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,i.a.awrap(fetch(h,{method:"POST",credentials:"include",body:JSON.stringify(e),headers:v}).then((function(e){return e.text()})).then((function(e){return JSON.parse(e)})).catch((function(e){return e})));case 2:return a=t.sent,t.abrupt("return",a);case 4:case"end":return t.stop()}}))},O=(t(64),function(e){var a=e.error;return r.a.createElement("span",{className:"error error--form","data-testid":"FormError"},a)}),w=function(e){var a,t=Object(n.useState)(""),c=Object(l.a)(t,2),s=c[0],o=c[1],m=Object(n.useState)(""),u=Object(l.a)(m,2),p=u[0],d=u[1],_={type:"ERR",message:"AUTH_ERROR"},f=function(){var a,t;return i.a.async((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,i.a.awrap(y({username:s,password:p}));case 2:if(!(a=n.sent).errors){n.next=6;break}return t=a.errors,n.abrupt("return",e.dispatch(Object(E.a)({},_,{body:{authError:t}})));case 6:return n.abrupt("return",e.dispatch({type:"AUTH",message:"LOGIN",body:a}));case 7:case"end":return n.stop()}}))},b=function(a){var t;a.preventDefault(),t=f,p.length<8?e.dispatch(Object(E.a)({},_,{body:{authError:"This password is invalid"}})):/^[\w\d_.-]+$/.test(s)?t():e.dispatch(Object(E.a)({},_,{body:{authError:"This username is invalid"}}))};return r.a.createElement("div",{className:"Login","data-testid":"Login"},(a=e.state.errors)?a.auth?r.a.createElement(O,{error:a.auth}):void 0:r.a.createElement(r.a.Fragment,null),r.a.createElement("form",{className:"Login__form","data-testid":"Login__form",onSubmit:function(e){return b(e)}},r.a.createElement("label",{className:"form__label form__label--username",htmlFor:"username-input"},"Username:"),r.a.createElement("input",{name:"username",id:"username-input",className:"form__input form__input--username",type:"text",onChange:function(e){return o(e.target.value)},default:"username"}),r.a.createElement("label",{className:"form__label form__label--password",htmlFor:"password-input"},"Password:"),r.a.createElement("input",{name:"password",id:"password-input",className:"form__input form__input--password",type:"password",onChange:function(e){return d(e.target.value)},default:""}),r.a.createElement("input",{className:"form__submit",type:"submit",value:"Login!"})))},k=(t(65),function(e){var a,t=Object(n.useState)(""),c=Object(l.a)(t,2),s=c[0],o=c[1],m=Object(n.useState)(""),u=Object(l.a)(m,2),p=u[0],d=u[1],_=Object(n.useState)(""),f=Object(l.a)(_,2),b=f[0],h=f[1],g=Object(n.useState)(""),v=Object(l.a)(g,2),y=v[0],w=v[1],k={type:"ERR",message:"AUTH_ERROR"},R=function(){var a,t;return i.a.async((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,i.a.awrap(N({username:s,email:p,password:b,confirmPassword:y}));case 2:if(!(a=n.sent).errors){n.next=6;break}return t=a.errors[0].auth,n.abrupt("return",e.dispatch(Object(E.a)({},k,{body:{authError:t}})));case 6:return n.abrupt("return",e.dispatch({type:"AUTH",message:"SIGNUP",body:a}));case 7:case"end":return n.stop()}}))},S=function(a){var t;a.preventDefault(),t=R,b!==y?e.dispatch(Object(E.a)({},k,{body:{authError:"Password fields must be the same"}})):b.length<8?e.dispatch(Object(E.a)({},k,{body:{authError:"Password must be at least 8 characters"}})):/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(p)?/^[\w\d_.-]+$/.test(s)?t():e.dispatch(Object(E.a)({},k,{body:{authError:"Username can only contain letters, numbers, '_', '.', or '-'"}})):e.dispatch(Object(E.a)({},k,{body:{authError:"Please enter a valid email"}}))};return r.a.createElement("div",{className:"Signup","data-testid":"Signup"},(a=e.state.errors)?a.auth?r.a.createElement(O,{error:a.auth}):void 0:r.a.createElement(r.a.Fragment,null),r.a.createElement("form",{className:"Signup__form","data-testid":"Signup__form",onSubmit:function(e){return S(e)}},r.a.createElement("label",{className:"form__label form__label--username",htmlFor:"username-input"},"Username:"),r.a.createElement("input",{className:"form__input form__input--username",default:"username",id:"username-input",name:"username",onChange:function(e){return o(e.target.value)},type:"text"}),r.a.createElement("label",{className:"form__label form__label--email",htmlFor:"email-input"},"Email:"),r.a.createElement("input",{className:"form__input form__input--email",default:"email",id:"email-input",name:"email",onChange:function(e){return d(e.target.value)},type:"text"}),r.a.createElement("label",{className:"form__label form__label--password",htmlFor:"password-input"},"Password:"),r.a.createElement("input",{className:"form__input form__input--password",default:"",id:"password-input",name:"password",onChange:function(e){return h(e.target.value)},type:"password"}),r.a.createElement("label",{className:"form__label form__label--password",htmlFor:"confirmPassword-input"},"Confirm password:"),r.a.createElement("input",{className:"form__input form__input--password",name:"confirmPassword",id:"confirmPassword-input",type:"password",onChange:function(e){return w(e.target.value)},default:""}),r.a.createElement("input",{className:"form__submit",type:"submit",value:"Create Account!"})))}),R=function(e){var a=Object(n.useState)("login"),t=Object(l.a)(a,2),c=t[0],s=t[1],o=e.state,i=e.dispatch;return r.a.createElement(r.a.Fragment,null,r.a.createElement("div",{className:"nav__section nav__section--auth",onClick:function(){s("login")}},r.a.createElement("p",{className:"nav__section__label"},"Login"),"login"===c?r.a.createElement(w,{dispatch:i,state:o}):r.a.createElement(r.a.Fragment,null)),r.a.createElement("div",{className:"nav__section nav__section--auth",onClick:function(){s("signup")}},r.a.createElement("p",{className:"nav__section__label"},"Signup"),"signup"===c?r.a.createElement(k,{dispatch:i,state:o}):r.a.createElement(r.a.Fragment,null)))},S=(t(66),function(){return r.a.createElement("div",{className:"nav__section"},r.a.createElement("p",{className:"nav__section__label"},"New Room"))}),j=(t(67),function(){return r.a.createElement("div",{className:"nav__section"},r.a.createElement("p",{className:"nav__section__label"},"Find Room"))}),G=(t(68),function(){return r.a.createElement("div",{className:"nav__section"},r.a.createElement("p",{className:"nav__section__label"},"Library"))}),T=function(e){var a=e.state,t=e.dispatch,n=r.a.createElement(r.a.Fragment,null,r.a.createElement(j,null),r.a.createElement(S,null),r.a.createElement(G,null)),c=r.a.createElement(R,{state:a,dispatch:t});return r.a.createElement("nav",null,a.user.username?n:c)},B=function(){return r.a.createElement("nav",null)},A=(t(69),function(){return r.a.createElement("div",{className:"nav__section"},r.a.createElement("p",{className:"nav__section__label"},"Find Game"))}),C=(t(70),function(){return r.a.createElement("div",{className:"nav__section"},r.a.createElement("p",{className:"nav__section__label"},"New Game"))}),M=(t(71),function(){return r.a.createElement("div",{className:"nav__section"},r.a.createElement("p",{className:"nav__section__label"},"Room Archive"))}),x=function(e){var a=e.state,t=e.dispatch;return r.a.createElement("nav",null,r.a.createElement("h3",null,a.currentRoom.name),a.errors.joinGame?r.a.createElement(R,{state:a,dispatch:t}):r.a.createElement(r.a.Fragment,null),r.a.createElement(A,null),r.a.createElement(C,null),r.a.createElement(M,null))},F=function(e){var a=e.page,t=e.state,n=e.dispatch;return r.a.createElement("aside",{className:"Sidebar","data-testid":"Sidebar"},function(){switch(a){case"account":return r.a.createElement(_,{state:t,dispatch:n});case"home":return r.a.createElement(T,{state:t,dispatch:n});case"news":return r.a.createElement(B,{state:t,dispatch:n});case"room":return r.a.createElement(x,{state:t,dispatch:n});default:return r.a.createElement(r.a.Fragment,null)}}())},W=(t(72),function(){return r.a.createElement("div",{className:"Account","data-testid":"Account"},r.a.createElement("p",null,"Account"))}),U=f.a.apiAddress,P="".concat(U,"/games"),I=new Headers;I.append("Content-Type","application/json"),I.append("Accept","application/json"),I.append("Sec-Fetch-Site","cross-site");var J=function(e){var a;return i.a.async((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,i.a.awrap(fetch("".concat(P,"/").concat(e),{method:"GET",credentials:"include",headers:I}).then((function(e){return e.text()})).then((function(e){return JSON.parse(e)})).then((function(e){return delete Object.assign(e.game,{applicationVersion:e.game.application_version}).application_version,delete Object.assign(e.game,{boardSize:e.game.board_size}).board_size,delete Object.assign(e.game,{playerBlack:e.game.player_black}).player_black,delete Object.assign(e.game,{playerBlackRank:e.game.player_black_rank}).player_black_rank,delete Object.assign(e.game,{playerWhite:e.game.player_white}).player_white,delete Object.assign(e.game,{playerWhiteRank:e.game.player_white_rank}).player_white_rank,delete Object.assign(e.game,{capturesWhite:e.game.captures_white}).captures_white,delete Object.assign(e.game,{capturesBlack:e.game.captures_black}).captures_black,delete Object.assign(e.game,{mainTime:e.game.main_time}).main_time,delete Object.assign(e.game,{timePeriod:e.game.time_period}).time_period,delete Object.assign(e.game,{periodLength:e.game.period_length}).period_length,delete Object.assign(e.game,{overtimePeriod:e.game.overtime_period}).overtime_period,delete Object.assign(e.game,{overtimeLength:e.game.overtime_length}).overtime_length,delete Object.assign(e.game,{winType:e.game.win_type}).win_type,e})).catch((function(e){return e})));case 2:return a=t.sent,t.abrupt("return",a);case 4:case"end":return t.stop()}}))},L=(t(73),t(74),t(75),function(e){var a=e.posX,t=e.posY,n=e.user,c=e.game,s=e.dispatch,o=e.pointData,i=c.turn>0?"black":"white";return r.a.createElement("div",{className:"board__point ".concat(1===a?"board__point--top":a===c.boardSize?"board__point--bottom":""," ").concat(1===t?"board__point--left":t===c.boardSize?"board__point--right":""),onClick:function(e){return function(e){var r={type:"SOCKET",message:"MAKE_MOVE",body:{user:n,game:c,room:c.room,board:{},move:{player:i,pos:{x:a,y:t}}}};s(r)}()}},r.a.createElement("div",{className:"board__point__stone","data-stone":1===o?"black":-1===o?"white":"none"},r.a.createElement("div",{className:"board__point__dot","data-dot":function(){if("l"===o)return c.turn}()})))}),D=function(e){var a=e.game,t=e.user,n=e.dispatch,c=e.board,s="Game__board--size-".concat(a.boardSize);return r.a.createElement("div",{className:"Game__board ".concat(s)},a.id?function(a){for(var s=0,o=[];s