{"version":3,"sources":["assets/login.svg","assets/account-plus.svg","assets/logout.svg","assets/plus-box-outline.svg","api/Firebase.ts","app/features/user/userSlice.ts","app/features/joke/jokeSlice.ts","app/rootReducer.ts","app/store.ts","app/features/MainHeader.tsx","app/features/user/AuthErrorPopup.tsx","app/features/user/Login.tsx","app/features/user/SignUp.tsx","assets/darth-vader-icon.svg","app/features/joke/Joke.tsx","app/features/joke/AddJoke.tsx","app/App.tsx","index.tsx"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_ref2","d","SvgLogin","_ref","svgRef","title","titleId","props","xmlns","xmlnsXlink","width","height","viewBox","ref","id","ForwardRef","SvgAccountPlus","SvgLogout","SvgPlusBoxOutline","app","firebase","initializeApp","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","measurementId","SESSION","auth","Auth","Persistence","login","email","password","setPersistence","signInWithEmailAndPassword","logout","signOut","signUp","createUserWithEmailAndPassword","getJokes","database","orderByChild","once","j","jokes","toJSON","jokeList","entries","joke","formatted","text","converted","createdBy","push","reverse","createJoke","deleteJoke","child","remove","editJoke","dateCreated","Date","getTime","set","userSlice","createSlice","name","initialState","userId","reducers","authSuccess","state","payload","errors","undefined","authFailure","actions","userSelector","user","jokeSlice","isLoading","hasErrors","setLoading","fetchJokesSuccess","fetchJokesFailure","addJokeSuccess","unshift","addJokeFailure","deleteJokeSuccess","filter","deleteJokeFailure","editJokeSuccess","index","findIndex","editJokeFailure","jokesSelector","rootReducer","combineReducers","reducer","store","configureStore","useAppDispatch","useDispatch","MainHeader","useSelector","dispatch","history","useHistory","handleLogout","a","Firebase","window","sessionStorage","removeItem","then","className","to","onClick","AuthErrorPopup","content","Login","useState","setEmail","setPassword","useEffect","onSubmit","e","data","preventDefault","userData","setItem","uid","htmlFor","type","required","value","onChange","placeholder","SignUp","confirm","setConfirm","code","message","minLength","fill","fillRule","stroke","strokeWidth","transform","SvgDarthVaderIcon","xmlnssketch","Joke","setContent","isEditing","setIsEditing","removeJoke","modifyJoke","catch","err","console","log","readOnly","AddJoke","setJoke","jokeText","raw","createdId","addJoke","App","storedId","getItem","checkSessionStorage","exact","path","map","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.563e0d83.chunk.js","sourcesContent":["function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10,17V14H3V10H10V7L15,12L10,17M10,2H19A2,2 0 0,1 21,4V20A2,2 0 0,1 19,22H10A2,2 0 0,1 8,20V18H10V20H19V4H10V6H8V4A2,2 0 0,1 10,2Z\"\n});\n\nfunction SvgLogin(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogin);\nexport default __webpack_public_path__ + \"static/media/login.bb7ea960.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z\"\n});\n\nfunction SvgAccountPlus(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgAccountPlus);\nexport default __webpack_public_path__ + \"static/media/account-plus.55007819.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16,17V14H9V10H16V7L21,12L16,17M14,2A2,2 0 0,1 16,4V6H14V4H5V20H14V18H16V20A2,2 0 0,1 14,22H5A2,2 0 0,1 3,20V4A2,2 0 0,1 5,2H14Z\"\n});\n\nfunction SvgLogout(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogout);\nexport default __webpack_public_path__ + \"static/media/logout.29d0a004.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M11,7H13V11H17V13H13V17H11V13H7V11H11V7Z\"\n});\n\nfunction SvgPlusBoxOutline(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPlusBoxOutline);\nexport default __webpack_public_path__ + \"static/media/plus-box-outline.f0b5072e.svg\";\nexport { ForwardRef as ReactComponent };","import firebase from 'firebase/app'\nimport 'firebase/auth'\nimport 'firebase/database'\nimport {IJoke} from \"../app/features/joke/Joke\";\n\nconst config = {\n apiKey: 'AIzaSyAekpSSAJLdeYeynhvMcFKXYYvAEOvDSBE',\n authDomain: 'dad-a-base-3.firebaseapp.com',\n databaseURL: 'https://dad-a-base-3.firebaseio.com',\n projectId: 'dad-a-base-3',\n storageBucket: 'dad-a-base-3.appspot.com',\n messagingSenderId: '679660816580',\n appId: '1:679660816580:web:d6d287bdb803127fb72191',\n measurementId: 'G-MHJFN86LCQ'\n}\n\nexport default {\n app: firebase.initializeApp(config),\n SESSION: firebase.auth.Auth.Persistence.SESSION,\n async login (email: string, password: string) {\n const firebase = this.app\n await firebase.auth().setPersistence(this.SESSION)\n return await firebase.auth()\n .signInWithEmailAndPassword(email, password)\n },\n async logout () {\n const firebase = this.app;\n return await firebase.auth().signOut();\n },\n async signUp (email: string, password: string) {\n const firebase = this.app;\n return await firebase.auth().createUserWithEmailAndPassword(email, password);\n },\n async getJokes () {\n const firebase = this.app;\n const j = await firebase.database().ref('/jokes').orderByChild('createdDate').once('value');\n const jokes = j.toJSON();\n\n if(jokes !== null) {\n const jokeList: IJoke[] = [];\n for(const [id, joke] of Object.entries(jokes)) {\n const converted = joke as IRawJoke;\n const formatted: IJoke = {\n id: id,\n text: converted.joke,\n createdBy: converted.createdBy\n };\n jokeList.push(formatted);\n }\n return jokeList.reverse();\n }\n\n return [];\n },\n async createJoke (joke: IRawJoke) {\n const firebase = this.app\n return firebase.database().ref('/jokes').push(joke).key;\n },\n async deleteJoke (id: string) {\n const firebase = this.app;\n return firebase.database().ref('/jokes').child(id).remove();\n },\n async editJoke (joke: IJoke) {\n const firebase = this.app;\n const converted: IRawJoke = {\n joke: joke.text,\n createdBy: joke.createdBy,\n dateCreated: new Date().getTime()\n }\n return firebase.database().ref('/jokes').child(joke.id).set(converted);\n }\n}\n\nexport interface IRawJoke {\n createdBy: string;\n dateCreated: number;\n joke: string;\n}\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { AppDispatch } from \"../../store\";\nimport { RootState } from \"../../rootReducer\";\nimport { ILoginData } from \"./Login\";\nimport Firebase from \"../../../api/Firebase\";\nimport { ISignUpData } from \"./SignUp\";\n\nconst initialState: IUserState = {\n userId: '',\n};\n\nexport const userSlice = createSlice({\n name: 'user',\n initialState,\n reducers: {\n authSuccess: (state, { payload }: PayloadAction) => {\n state.userId = payload;\n state.errors = undefined;\n },\n authFailure: (state, { payload }: PayloadAction) => {\n state.userId = '';\n state.errors = payload;\n },\n }\n});\n\nexport const { authSuccess, authFailure } = userSlice.actions;\nexport const userSelector = (state: RootState) => state.user;\n\nexport const checkSessionStorage = (dispatch: AppDispatch) => {\n const storedId = window.sessionStorage.getItem('userId');\n if(storedId !== null) {\n dispatch(authSuccess(storedId));\n }\n};\n\nexport const login = (data: ILoginData) => {\n return async (dispatch: AppDispatch) => {\n\n try {\n const userData = await Firebase.login(data.email, data.password);\n window.sessionStorage.setItem('userId', userData.user!.uid);\n dispatch(authSuccess(userData.user!.uid));\n } catch (err) {\n dispatch(authFailure(err));\n }\n }\n};\n\nexport const logout = () => {\n return async (dispatch: AppDispatch) => {\n\n try {\n await Firebase.logout();\n window.sessionStorage.removeItem('userId');\n dispatch(authSuccess(''));\n } catch (err) {\n dispatch(authFailure(err));\n }\n }\n};\n\nexport const signUp = (data: ISignUpData) => {\n return async (dispatch: AppDispatch) => {\n\n if(data.password === data.confirm) {\n try {\n const userData = await Firebase.signUp(data.email, data.password);\n window.sessionStorage.setItem('userId', userData.user!.uid);\n dispatch(authSuccess(userData.user!.uid));\n } catch (err) {\n dispatch(authFailure(err));\n }\n } else {\n const noMatch: IAuthError = {\n code: 400,\n message: 'Passwords do not match',\n errors: []\n }\n dispatch(authFailure(noMatch));\n }\n }\n}\n\ninterface IUserState {\n userId: string;\n errors?: IAuthError;\n}\n\ninterface IAuthErrorDetails {\n domain: string;\n message: string;\n reason: string;\n}\n\nexport interface IAuthError {\n code: number;\n errors: IAuthErrorDetails[];\n message: string;\n}\n","import { IJoke } from \"./Joke\";\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { RootState } from \"../../rootReducer\";\nimport { AppDispatch } from \"../../store\";\nimport Firebase, { IRawJoke } from \"../../../api/Firebase\";\n\nconst initialState: IJokeState = {\n jokes: [],\n isLoading: false,\n hasErrors: false\n}\n\nexport const jokeSlice = createSlice({\n name: 'jokes',\n initialState,\n reducers: {\n setLoading: state => {\n state.isLoading = true;\n },\n fetchJokesSuccess: (state, { payload }: PayloadAction) => {\n state.jokes = payload;\n state.isLoading = false;\n state.hasErrors = false;\n },\n fetchJokesFailure: state => {\n state.isLoading = false;\n state.hasErrors = true;\n },\n addJokeSuccess: (state, { payload }: PayloadAction) => {\n state.jokes.unshift(payload);\n state.isLoading = false;\n state.hasErrors = false;\n },\n addJokeFailure: state => {\n state.isLoading = false;\n state.hasErrors = true;\n },\n deleteJokeSuccess: (state, {payload}: PayloadAction) => {\n state.jokes = state.jokes.filter((joke: IJoke) => joke.id !== payload);\n state.isLoading = false;\n state.hasErrors = false;\n },\n deleteJokeFailure: state => {\n state.isLoading = false;\n state.hasErrors = true;\n },\n editJokeSuccess: (state, {payload}: PayloadAction) => {\n const index = state.jokes.findIndex((joke: IJoke) => joke.id === payload.id);\n if(index !== -1) {\n state.jokes[index].text = payload.text;\n state.isLoading = false;\n state.hasErrors = false;\n }\n },\n editJokeFailure: state => {\n state.isLoading = false;\n state.hasErrors = true;\n }\n }\n});\n\nexport const fetchJokes = () => {\n return async (dispatch: AppDispatch) => {\n dispatch(setLoading());\n\n try {\n const jokes = await Firebase.getJokes();\n dispatch(fetchJokesSuccess(jokes));\n } catch (error) {\n dispatch(fetchJokesFailure());\n }\n }\n};\n\nexport const addJoke = (jokeText: string, userId: string) => {\n return async (dispatch: AppDispatch) => {\n dispatch(setLoading());\n\n try {\n const raw: IRawJoke = {\n createdBy: userId,\n dateCreated: new Date().getTime(),\n joke: jokeText\n };\n const createdId = await Firebase.createJoke(raw);\n const createdJoke: IJoke = {\n text: jokeText,\n createdBy: userId,\n id: createdId!,\n }\n dispatch(addJokeSuccess(createdJoke));\n } catch (err) {\n dispatch(addJokeFailure());\n }\n };\n}\n\nexport const deleteJoke = (id: string) => {\n return async (dispatch: AppDispatch) => {\n dispatch(setLoading());\n\n try {\n await Firebase.deleteJoke(id);\n dispatch(deleteJokeSuccess(id));\n } catch (err) {\n dispatch(deleteJokeFailure());\n }\n };\n}\n\nexport const editJoke = (joke: IJoke) => {\n return async (dispatch: AppDispatch) => {\n dispatch(setLoading());\n\n try {\n await Firebase.editJoke(joke);\n dispatch(editJokeSuccess(joke));\n } catch (err) {\n dispatch(editJokeFailure());\n }\n }\n}\n\nexport interface IJokeState {\n jokes: IJoke[];\n isLoading: boolean;\n hasErrors: boolean;\n}\n\nexport const { setLoading,\n fetchJokesSuccess,\n fetchJokesFailure,\n addJokeSuccess,\n addJokeFailure,\n deleteJokeSuccess,\n deleteJokeFailure,\n editJokeSuccess,\n editJokeFailure } = jokeSlice.actions;\n\nexport const jokesSelector = (state: RootState) => state.jokes;\n","import { combineReducers } from \"@reduxjs/toolkit\";\nimport { jokeSlice } from \"./features/joke/jokeSlice\";\nimport { userSlice } from \"./features/user/userSlice\";\n\nconst rootReducer = combineReducers({\n jokes: jokeSlice.reducer,\n user: userSlice.reducer\n});\n\nexport type RootState = ReturnType;\n\nexport default rootReducer;\n","import { configureStore, ThunkAction, Action } from \"@reduxjs/toolkit\";\nimport rootReducer, { RootState } from \"./rootReducer\";\nimport { useDispatch } from \"react-redux\";\n\nconst store = configureStore({\n reducer: rootReducer\n});\n\n\nexport type AppDispatch = typeof store.dispatch;\nexport const useAppDispatch = () => useDispatch();\nexport type AppThunk = ThunkAction\n\nexport default store;\n","import React from 'react';\nimport { ReactComponent as LoginIcon } from \"../../assets/login.svg\";\nimport { ReactComponent as SignUpIcon } from \"../../assets/account-plus.svg\";\nimport { ReactComponent as LogoutIcon } from \"../../assets/logout.svg\";\nimport { ReactComponent as AddJokeIcon } from \"../../assets/plus-box-outline.svg\";\nimport { Link, useHistory } from 'react-router-dom';\nimport { useSelector } from \"react-redux\";\nimport { logout, userSelector } from \"./user/userSlice\";\nimport { useAppDispatch } from \"../store\";\n\nconst MainHeader: React.FC = () => {\n const {userId} = useSelector(userSelector);\n const dispatch = useAppDispatch();\n const history = useHistory();\n const handleLogout = () => {\n dispatch(logout()).then(() => {\n history.push('/');\n });\n };\n\n const renderLinks = () => {\n if(userId !== '') {\n return (\n <>\n handleLogout()} className=\"main-header__links__logout\">Logout\n Add Joke\n \n );\n }\n\n return (\n <>\n Login\n Sign Up\n \n );\n };\n return (\n
\n

Dad-A-Base

\n
\n {renderLinks()}\n
\n
\n );\n};\n\n\nexport default MainHeader;\n","import React from \"react\";\n\nconst AuthErrorPopup: React.FC = ({title, content}) => {\n return (\n
\n

{title}

\n

{content}

\n
\n );\n};\n\nexport default AuthErrorPopup;\n\nexport interface IAuthError {\n title: string;\n content: string;\n}\n","import React, { FormEvent, useEffect, useState } from \"react\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport { useAppDispatch } from \"../../store\";\nimport { login, userSelector } from \"./userSlice\";\nimport { useSelector } from \"react-redux\";\nimport AuthErrorPopup from \"./AuthErrorPopup\";\n\nconst Login: React.FC = () => {\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const dispatch = useAppDispatch();\n const history = useHistory();\n const {errors, userId} = useSelector(userSelector);\n\n const handleSubmit = (e: FormEvent) => {\n e.preventDefault();\n const loginData: ILoginData = {\n email: email,\n password: password\n }\n dispatch(login(loginData));\n }\n\n useEffect(() => {\n if(userId !== '' && errors === undefined) {\n history.push('/');\n }\n }, [userId, errors]);\n\n const renderErrorPopup = () => {\n if(errors !== undefined) {\n return \n }\n\n return null;\n }\n\n return (\n
\n
\n \n {setEmail(e.target.value)}}\n placeholder=\"Email Address\"\n />\n\n \n {setPassword(e.target.value)}}\n placeholder=\"Password\"\n />\n\n
\n \n
\n
\n\n

Don't have an account? Sign Up!

\n\n {renderErrorPopup()}\n
\n );\n};\n\nexport default Login;\n\nexport interface ILoginData {\n email: string;\n password: string;\n}\n","import React, { FormEvent, useEffect, useState } from 'react';\nimport { Link, useHistory } from \"react-router-dom\";\nimport { ILoginData } from \"./Login\";\nimport { useAppDispatch } from \"../../store\";\nimport { signUp, userSelector } from \"./userSlice\";\nimport { useSelector } from \"react-redux\";\nimport AuthErrorPopup from \"./AuthErrorPopup\";\n\nconst SignUp: React.FC = () => {\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [confirm, setConfirm] = useState('');\n const dispatch = useAppDispatch();\n const history = useHistory();\n const {userId, errors} = useSelector(userSelector);\n\n const handleSubmit = (e: FormEvent) => {\n e.preventDefault();\n const data: ISignUpData = {\n email: email,\n password: password,\n confirm: confirm\n }\n\n dispatch(signUp(data));\n\n }\n\n useEffect(() => {\n if(userId !== '' && errors === undefined) {\n history.push('/');\n }\n }, [userId, errors]);\n\n const renderErrorPopup = () => {\n if(errors !== undefined) {\n return \n }\n\n return null;\n }\n\n return (\n
\n
\n \n {setEmail(e.target.value)}}\n placeholder=\"Email Address\"\n />\n\n \n setPassword(e.target.value)}\n placeholder=\"Password\"\n minLength={6}\n />\n\n \n setConfirm(e.target.value)}\n placeholder=\"Confirm Password\"\n minLength={6}\n />\n\n
\n \n
\n
\n\n

Already have an account? Login!

\n\n {renderErrorPopup()}\n
\n );\n};\n\nexport default SignUp;\n\nexport interface ISignUpData extends ILoginData {\n confirm: string;\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"desc\", null);\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"defs\", null);\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\",\n id: \"Page-1\",\n stroke: \"none\",\n strokeWidth: 1\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"star-wars-copy\",\n transform: \"translate(-252.000000, -1251.000000)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"darth-vader\",\n transform: \"translate(252.000000, 1251.000000)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M204,177 C205.944,175.494 210.702,174.024 212.496,172.428 L180,95.25 C180,95.25 151.146,9 115.548,9 L100.452,9 C64.854,9 36,95.25 36,95.25 L3.504,172.428 C5.298,174.024 10.056,175.494 12,177 L204,177 Z\",\n fill: \"#323232\",\n id: \"Fill-1\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48,117 L72,159 L102,117 L48,117 Z\",\n fill: \"#505050\",\n id: \"Fill-3\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144,159 L168,117 L114,117 L144,159 Z\",\n fill: \"#505050\",\n id: \"Fill-5\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54,103.5 C54,99.378 56.22,93.342 58.932,90.096 C58.932,90.096 66.534,81 82.002,81 C89.844,81 95.316,84.378 95.316,84.378 C98.994,86.646 102,91.878 102,96 L102,107.25 C102,109.314 98.4,111 94.002,111 L61.998,111 C57.6,111 54,107.622 54,103.5\",\n fill: \"#000000\",\n id: \"Fill-7\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M154.0002,111 L122.0022,111 C117.5982,111 113.9982,109.314 113.9982,107.25 L113.9982,96 C113.9982,91.872 117.0102,86.646 120.6822,84.378 C120.6822,84.378 126.1542,81 134.0022,81 C149.4642,81 157.0662,90.096 157.0662,90.096 C159.7782,93.342 161.9982,99.378 161.9982,103.5 C161.9982,107.628 158.3982,111 154.0002,111\",\n fill: \"#000000\",\n id: \"Fill-9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M180,81 L180,67.452 C180,32.598 152.322,4.284 117.756,3.114 C116.106,1.218 113.706,0 111,0 L105,0 C102.294,0 99.894,1.218 98.244,3.114 C63.678,4.284 36,32.598 36,67.452 L36,81 L0,177 L12,177 L43.668,99.906 C51.798,79.59 63.06,70.926 81.342,70.926 C93.84,70.926 101.574,80.688 102,81 L114,81 C114.426,80.688 122.16,70.926 134.658,70.926 C152.94,70.926 164.202,79.59 172.32,99.876 L204,177 L216,177 L180,81 Z\",\n fill: \"#000000\",\n id: \"Fill-11\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M53.919,63 C52.371,63 51.111,61.746 51.111,60.192 C51.111,36.99 69.987,18.114 93.195,18.114 C94.743,18.114 95.997,19.368 95.997,20.922 C95.997,22.47 94.743,23.724 93.195,23.724 C73.083,23.724 56.727,40.086 56.727,60.192 C56.727,61.746 55.467,63 53.919,63\",\n fill: \"#1A1A1A\",\n id: \"Fill-13\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M108,117 C104.688,117 102,119.682 102,123 L102,129 L114,129 L114,123 C114,119.682 111.312,117 108,117 M153,177 C149.688,177 147,179.688 147,183 C147,186.312 149.688,189 153,189 C156.312,189 159,186.312 159,183 C159,179.688 156.312,177 153,177 M63,177 C59.688,177 57,179.688 57,183 C57,186.312 59.688,189 63,189 C66.312,189 69,186.312 69,183 C69,179.688 66.312,177 63,177\",\n fill: \"#FFFFFF\",\n id: \"Fill-15\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M158.745,172.5306 L167.997,117.0006 L143.997,159.0006 L119.997,125.4006 L119.997,123.0006 C119.997,116.3826 114.621,111.0006 107.997,111.0006 C101.379,111.0006 95.997,116.3826 95.997,123.0006 L95.997,125.4006 L71.997,159.0006 L47.997,117.0006 L57.255,172.5306 C53.547,174.5766 50.997,178.4766 50.997,183.0006 C50.997,189.6186 56.379,195.0006 62.997,195.0006 C67.425,195.0006 71.247,192.5706 73.329,189.0006 L142.671,189.0006 C144.747,192.5706 148.575,195.0006 152.997,195.0006 C159.621,195.0006 164.997,189.6186 164.997,183.0006 C164.997,178.4766 162.453,174.5766 158.745,172.5306\",\n fill: \"#000000\",\n id: \"Fill-17\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M84,177 L96,177 L96,145.458 L84,161.916 L84,177 Z\",\n fill: \"#323232\",\n id: \"Fill-20\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M120,145.4574 L120,176.9994 L132,176.9994 L132,161.9154 L120,145.4574 Z\",\n fill: \"#323232\",\n id: \"Fill-22\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M102,177 L114,177 L114,141 L102,141 L102,177 Z\",\n fill: \"#323232\",\n id: \"Fill-24\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M108,117 C104.688,117 102,119.682 102,123 L102,129 L114,129 L114,123 C114,119.682 111.312,117 108,117 M153,177 C149.688,177 147,179.688 147,183 C147,186.312 149.688,189 153,189 C156.312,189 159,186.312 159,183 C159,179.688 156.312,177 153,177 M63,177 C59.688,177 57,179.688 57,183 C57,186.312 59.688,189 63,189 C66.312,189 69,186.312 69,183 C69,179.688 66.312,177 63,177\",\n fill: \"#FFFFFF\",\n id: \"Fill-26\"\n}))));\n\nfunction SvgDarthVaderIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n height: \"195px\",\n viewBox: \"0 0 216 195\",\n width: \"216px\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnssketch: \"http://www.bohemiancoding.com/sketch/ns\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDarthVaderIcon);\nexport default __webpack_public_path__ + \"static/media/darth-vader-icon.1789ba67.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState } from \"react\";\nimport { ReactComponent as Vader } from \"../../../assets/darth-vader-icon.svg\";\nimport { useSelector } from \"react-redux\";\nimport { userSelector } from \"../user/userSlice\";\nimport { useAppDispatch } from \"../../store\";\nimport { deleteJoke, editJoke } from \"./jokeSlice\";\nimport TextareaAutosize from \"react-textarea-autosize\";\n\nconst Joke: React.FC = ({text, id,createdBy}) => {\n const {userId} = useSelector(userSelector);\n const [content, setContent] = useState(text);\n const [isEditing, setIsEditing] = useState(false);\n const dispatch = useAppDispatch();\n\n const removeJoke = () => {\n dispatch(deleteJoke(id));\n };\n\n const cancelEdit = () => {\n setContent(text);\n setIsEditing(false);\n };\n\n const modifyJoke = () => {\n const edited: IJoke = {\n id: id,\n createdBy: userId,\n text: content\n }\n dispatch(editJoke(edited)).then(() => {\n setIsEditing(false);\n }).catch(err => console.log(err));\n }\n\n const renderEditPanel = () => {\n if(userId === createdBy) {\n if(isEditing) {\n return (\n
\n \n \n
\n );\n }\n\n return (\n
\n \n \n
\n );\n }\n\n return null;\n }\n\n return (\n
\n \n
\n setContent(e.target.value)}\n readOnly={!isEditing}\n />\n {renderEditPanel()}\n
\n\n
\n );\n};\n\nexport default Joke;\n\nexport interface IJoke {\n text: string;\n id: string;\n createdBy: string;\n}\n","import React, { FormEvent, useEffect, useState } from 'react';\nimport TextareaAutosize from 'react-textarea-autosize';\nimport { useAppDispatch } from \"../../store\";\nimport { addJoke, jokesSelector } from \"./jokeSlice\";\nimport { useSelector } from \"react-redux\";\nimport { userSelector } from \"../user/userSlice\";\nimport { useHistory } from \"react-router-dom\";\n\nconst AddJoke: React.FC = () => {\n const [joke, setJoke] = useState('');\n const {userId} = useSelector(userSelector);\n const dispatch = useAppDispatch();\n const history = useHistory();\n\n const handleSubmit = (e: FormEvent) => {\n e.preventDefault();\n dispatch(addJoke(joke, userId))\n .then(() => {\n history.push('/')\n }).catch((err: string) => {\n console.log(err);\n });\n };\n\n return (\n
\n \n {setJoke(e.target.value)}}\n required\n />\n
\n \n
\n \n );\n};\n\nexport default AddJoke;\n","import React, { useEffect } from 'react';\r\nimport { Switch, Route } from \"react-router-dom\";\r\nimport MainHeader from \"./features/MainHeader\";\r\nimport Login from './features/user/Login';\r\nimport SignUp from \"./features/user/SignUp\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { fetchJokes, jokesSelector } from \"./features/joke/jokeSlice\";\r\nimport { useAppDispatch } from \"./store\";\r\nimport Joke from \"./features/joke/Joke\";\r\nimport { checkSessionStorage } from \"./features/user/userSlice\";\r\nimport AddJoke from \"./features/joke/AddJoke\";\r\n\r\nconst App = () => {\r\n const dispatch = useAppDispatch();\r\n const {jokes, isLoading, hasErrors} = useSelector(jokesSelector);\r\n\r\n useEffect(() => {\r\n dispatch(fetchJokes());\r\n }, [dispatch]);\r\n\r\n useEffect(() => {\r\n checkSessionStorage(dispatch);\r\n }, []);\r\n\r\n const renderJokes = () => {\r\n if(isLoading) return

Fetching jokes...

\r\n if(hasErrors) return

Error fetching jokes.

\r\n\r\n return jokes.map(joke => );\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n {renderJokes()}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default App;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './app/App';\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport { Provider } from \"react-redux\";\r\nimport store from './app/store';\r\n\r\n\r\n\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n"],"sourceRoot":""}