{"version":3,"sources":["actions/notification.js","components/notifications/NotificationDecorator.js","actions/wheelerheirs.axios.js","actions/users.service.js","actions/apievents.js","components/form-wrappers/form-fields.js","components/user-profile/UserProfileForm.js","components/user-profile/UserProfileEditDialog.js","components/navigation/NavHelmet.js","actions/auth.service.js","components/form-wrappers/FormPage.js","components/registration/RegistrationForm.js","components/login/LoginForm.js","components/recovery/RecoveryForm.js","components/security/PrivateRoute.js","components/homepage/HomeCard.js","components/homepage/HomePage.js","actions/document.service.js","components/dropzone/FileUploadMini.js","components/documents/DocumentUpload.js","components/documents/ParanoidConfirm.js","components/documents/DeleteFileAction.js","components/documents/DocumentFile.js","components/documents/DocumentFolder.js","components/documents/DocumentDisplay.js","components/documents/DocumentPage.js","actions/calendar.service.js","components/calendar/calendar.js","components/form-wrappers/DatePickerField.js","components/reservation/ReservationFormFields.js","components/reservation/ReservationForm.js","components/reservation/ReservationDialog.js","components/reservation/ReservationFab.js","components/reservation/ReservationEditDialog.js","components/calendar/CalendarPage.js","components/user-management/UserManagementForm.js","components/user-management/UserManagementEditDialog.js","components/user-management/UserTableRow.js","components/user-management/UserTable.js","components/user-management/UserManagementPage.js","components/recovery/ResetPasswordForm.js","App.js","serviceWorker.js","reducers/index.js","index.js","images/wh.svg"],"names":["showErrorAlert","error","message","dispatch","getState","response","status","showAlert","severity","options","position","horizontal","vertical","type","payload","notifications","concat","open","connect","state","queue","hideAlert","id","map","item","index","deleteAlert","filter","props","handleClose","event","reason","notification","length","children","Snackbar","autoHideDuration","onClose","anchorOrigin","onExited","Alert","requestConfigInterceptor","jwt","config","headers","authorization","token","client","axios","create","baseURL","validateStatus","interceptors","request","use","getAllUsers","a","user","accessToken","get","then","users","data","success","catch","getUserProfile","patchUser","username","patch","clearEvent","eventName","renderSwitch","input","label","meta","touched","Switch","checked","value","onChange","color","margin","renderTextField","custom","TextField","renderCheckbox","FormControlLabel","control","Checkbox","useStyles","makeStyles","theme","form","width","display","flexDirection","spacing","reduxForm","validate","values","errors","password","confirmPassword","classes","handleSubmit","pristine","submitting","autoComplete","className","onSubmit","Field","name","component","autoCorrect","spellCheck","required","Button","variant","disabled","appBar","title","marginLeft","flex","ownProps","shouldClose","apiEvents","PATCH_NEW_USER_EVENT","initialValues","useState","isOpen","setOpen","Dialog","maxWidth","aria-labelledby","AppBar","Toolbar","IconButton","edge","onClick","aria-label","Typography","firstName","lastName","marginRight","cursor","spacer","flexGrow","RedirectButton","history","link","push","isAuthed","isAdmin","permissionLevel","logout","useHistory","root","height","justifyContent","alignItems","alignSelf","FormPage","card","padding","img","objectFit","shouldRedirect","CREATE_NEW_USER_EVENT","createUser","post","to","pathname","from","location","Card","raised","CardMedia","image","logo","splitLinks","FETCH_USER_INFO_EVENT","login","jwtDecode","Link","href","marginTop","fontSize","POST_START_RESET_PASSWORD_EVENT","startResetPasswordProcess","email","shouldRender","withRouter","Component","rest","render","button","HomeCard","description","buttonText","buttonLink","icon","flexWrap","HomePage","style","getAllDocuments","documentList","baseStyle","borderWidth","borderRadius","borderColor","borderStyle","backgroundColor","outline","transition","fontFamily","activeStyle","acceptStyle","rejectStyle","FileUploadMini","onDrop","useCallback","acceptedFiles","file","uploadCallback","useDropzone","accept","acceptedTypes","minSize","maxSize","isDragActive","getRootProps","getInputProps","isDragReject","isDragAccept","rejectedFiles","useMemo","isFileTooLarge","size","uploadDocument","folder","document","formData","FormData","append","ListItem","key","ParanoidConfirm","useTheme","fullScreen","useMediaQuery","breakpoints","down","DialogTitle","DialogContent","DialogContentText","resource","confirm","DialogActions","autoFocus","deleteDocument","delete","getDocument","responseType","res","blob","window","URL","webkitURL","createObjectURL","ListItemIcon","ListItemText","primary","noWrap","ListItemSecondaryAction","innerList","documents","folderName","ExpandLess","ExpandMore","Collapse","in","timeout","unmountOnExit","List","disablePadding","paper","documentFrame","border","FETCH_CURRENT_DOCUMENT_EVENT","console","log","currentDocument","currentDocumentName","src","Object","keys","useEffect","toUpperCase","eventsToGroups","events","pending","groups","idOpen","tracks","elements","forEach","rooms","room","start","Date","end","family","boxShadow","textTransform","fullEvent","approved","group","getAllEvents","getPendingEvents","getFullYear","days","d","setDate","getDate","valueOf","useAsGrid","cells","DatePickerField","onBlur","inputProps","others","format","toISOString","date","parse","twoColumns","gridTemplateColumns","columnGap","dontDisplay","undefined","ReservationFormFields","longButton","createReservation","reservation","deleteReservation","updateReservation","put","declineReservation","createSubmitButton","action","actionText","entries","setHours","utils","MomentUtils","getButtonsForForm","ReservationDialog","fab","bottom","right","extendedIcon","closeModal","POST_RESERVATION_EVENT","Fab","SELECT_CALENDAR_EVENT","adults","newRooms","reduce","acc","cur","calendar","pendingCalendar","pendingGroup","matchingGroup","find","selectEvent","scale","zoom","timebar","now","enableSticky","scrollToNow","clickElement","element","deleteUser","userId","nodata","enabled","close","UserTableRow","TableRow","TableCell","scope","table","Table","TableHead","align","TableBody","UserManagementPage","POST_RESET_PASSWORD_EVENT","resetPasswordSecure","useParams","createMuiTheme","palette","green","secondary","App","CssBaseline","ThemeProvider","Fragment","NavHelmet","exact","path","LoginForm","RecoveryForm","ResetPasswordForm","CalendarPage","DocumentPage","Boolean","hostname","match","reducer","basicReducer","defaultState","actionName","combineReducers","formReducer","includes","removedAction","persistReducer","storage","store","createStore","reducers","applyMiddleware","thunk","persist","persistStore","ReactDOM","StrictMode","loading","persistor","getElementById","navigator","serviceWorker","ready","registration","unregister","module","exports"],"mappings":"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","file":"static/js/main.cdefa180.chunk.js","sourcesContent":["export const showErrorAlert = (error, message) => (dispatch, getState) => {\n if(error.response.status < 500) {\n showAlert(\"error\", message)(dispatch, getState);\n } else {\n showAlert(\"error\", \"UhOh, Wheeler Heirs may be having some issues, please try again later\")(dispatch, getState);\n }\n}\n\nexport const showAlert = (severity, message, options) => (\n dispatch,\n getState\n) => {\n const position =\n options && options.position\n ? options.position\n : { horizontal: \"center\", vertical: \"bottom\" };\n\n dispatch({\n type: \"NOTIFY\",\n payload: getState().notifications.concat({\n open: true,\n severity,\n message,\n position,\n }),\n });\n};\n\nexport const hideAlert = (id) => (dispatch, getState) => {\n const queue = getState().notifications.map((item, index) =>\n index === id ? { ...item, open: false } : item\n );\n\n dispatch({\n type: \"NOTIFY\",\n payload: queue,\n });\n};\n\nexport const deleteAlert = (id) => (dispatch, getState) => {\n const queue = getState().notifications.filter((item, index) => index !== id);\n\n dispatch({\n type: \"NOTIFY\",\n payload: queue,\n });\n};\n","import React from \"react\";\nimport Alert from \"@material-ui/lab/Alert\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport {connect} from \"react-redux\";\nimport {deleteAlert, hideAlert} from \"../../actions/notification\";\n\nfunction NotificationDecorator(props) {\n const handleClose = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n\n props.hideAlert(0);\n };\n\n const handleExited = () => {\n props.deleteAlert(0);\n };\n\n const notification = props.queue.length >= 1 ? props.queue[0] : false;\n\n return (\n <>\n {props.children}\n {notification && (\n \n \n {notification.message}\n \n \n )}\n \n );\n}\n\nexport default connect(\n (state) => ({\n queue: state.notifications,\n }),\n { hideAlert, deleteAlert }\n)(NotificationDecorator);\n","import axios from \"axios\";\n\nconst requestConfigInterceptor = (jwt) => (config) => {\n if(jwt !== null)\n config.headers.authorization = `Bearer ${jwt}`;\n\n return config;\n};\n\nexport default (token = null, config = {}) => {\n const client = axios.create({\n baseURL: `/v1/wheelerheirs`,\n validateStatus: function (status) {\n return status < 400; // Resolve only if the status code is less than 500\n },\n ...config\n });\n\n client.interceptors.request.use(\n requestConfigInterceptor(token)\n );\n return client;\n};\n","import client from './wheelerheirs.axios';\nimport {showErrorAlert} from \"./notification\";\n\nexport const getAllUsers = () => async (dispatch, getState) => {\n await client(getState().user.accessToken).get('/users')\n .then((users) => {\n dispatch({\n type: \"FETCH_USERS\",\n payload: users.data\n });\n\n dispatch({\n type: \"FETCH_USERS_EVENT\",\n payload: {\n success: true\n },\n });\n })\n .catch((error) => {\n showErrorAlert(error, \"Could not get all users, we are not sure what happened\")(dispatch, getState);\n\n dispatch({\n type: \"FETCH_USERS_EVENT\",\n payload: {\n success: false,\n error\n },\n });\n });\n};\n\nexport const getUserProfile = (user) => async (dispatch, getState) => {\n await client(getState().user.accessToken).get(`/users/${user}`)\n .then((user) => {\n dispatch({\n type: \"FETCH_USER_PROFILE\",\n payload: user.data\n });\n\n dispatch({\n type: \"FETCH_USER_PROFILE_EVENT\",\n payload: {\n success: true\n },\n });\n })\n .catch((error) => {\n showErrorAlert(error, \"Could not get your user profile, we are not sure what happened\")(dispatch, getState);\n\n dispatch({\n type: \"FETCH_USER_PROFILE_EVENT\",\n payload: {\n success: false,\n error\n },\n });\n });\n};\n\nexport const createUser = (user) => async (dispatch, getState) => {\n await client(getState().user.accessToken).post(`/users`, user)\n .then((user) => user.data)\n .then((user) => {\n dispatch({\n type: \"CREATE_NEW_USER_EVENT\",\n payload: {\n success: true\n },\n });\n })\n .catch((error) => {\n showErrorAlert(error, \"Could not register, the form may contain invalid data.\")(dispatch, getState);\n\n dispatch({\n type: \"CREATE_NEW_USER_EVENT\",\n payload: {\n success: false,\n error\n },\n });\n });\n};\n\nexport const patchUser = (username, user) => async (dispatch, getState) => {\n await client(getState().user.accessToken).patch(`/users/${username}`, user)\n .then((user) => user.data)\n .then((user) => {\n if(username === getState().user.username)\n getUserProfile(username)(dispatch, getState);\n\n getAllUsers()(dispatch, getState);\n\n dispatch({\n type: \"PATCH_NEW_USER_EVENT\",\n payload: {\n success: true\n },\n });\n })\n .catch((error) => {\n showErrorAlert(error, \"Could not update user, the form may contain invalid data.\")(dispatch, getState);\n\n dispatch({\n type: \"PATCH_NEW_USER_EVENT\",\n payload: {\n success: false,\n error\n },\n });\n });\n};\n\nexport const deleteUser = (userId) => async (dispatch, getState) => {\n await client(getState().user.accessToken).delete(`/users/${userId}`)\n .then((nodata) => {\n getAllUsers()(dispatch, getState);\n })\n .catch((error) => {\n showErrorAlert(error, \"Could not delete user, we are not sure what happened\")(dispatch, getState);\n });\n};\n\nexport const startResetPasswordProcess = (email) => async (dispatch, getState) => {\n await client(getState().user.accessToken).post(`/users/reset`, {email})\n .then(() => {\n dispatch({\n type: \"POST_START_RESET_PASSWORD_EVENT\",\n payload: {\n success: true\n },\n });\n })\n .catch((error) => {\n dispatch({\n type: \"POST_START_RESET_PASSWORD_EVENT\",\n payload: {\n success: false,\n error\n },\n });\n });\n};\n\nexport const resetPasswordSecure = (password, username, token) => async (dispatch, getState) => {\n await client(getState().user.accessToken).post(`/users/${username}/reset/${token}`, {password})\n .then(() => {\n dispatch({\n type: \"POST_RESET_PASSWORD_EVENT\",\n payload: {\n success: true\n },\n });\n })\n .catch((error) => {\n dispatch({\n type: \"POST_RESET_PASSWORD_EVENT\",\n payload: {\n success: false,\n error\n },\n });\n });\n};","export const clearEvent = (eventName) => (dispatch) => {\n dispatch({\n type: eventName,\n payload: \"DELETE\",\n });\n};","import React from \"react\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Switch from \"@material-ui/core/Switch\";\n\nexport const renderSwitch = ({input, label, meta: {touched, error}, ...custom}) => (\n \n {label}\n \n \n);\n\nexport const renderTextField = ({input, label, meta: {touched, error}, ...custom}) => (\n \n);\n\nexport const renderCheckbox = ({ input, label }) => (\n \n }\n label={label}\n />\n);","import React from 'react';\nimport {connect} from 'react-redux';\nimport {Field, reduxForm} from \"redux-form\";\nimport {renderTextField} from \"../form-wrappers/form-fields\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport Button from \"@material-ui/core/Button\";\nimport {patchUser} from \"../../actions/users.service\";\nimport {clearEvent} from \"../../actions/apievents\";\n\nconst useStyles = makeStyles((theme) => ({\n form: {\n width: \"350px\",\n display: \"flex\",\n flexDirection: \"column\",\n margin: theme.spacing(4)\n }\n}));\n\nconst validate = values => {\n const errors = {}\n\n if (values.password !== values.confirmPassword) {\n errors.password = 'Passwords must match!'\n errors.confirmPassword = 'Passwords must match!'\n }\n\n return errors\n}\n\nconst UserProfileForm = props => {\n const classes = useStyles();\n const { handleSubmit, pristine, submitting} = props;\n\n const onSubmit = values => {\n const {confirmPassword, ...user} = values;\n\n return props.patchUser(\n props.username,\n user);\n }\n\n return (\n
\n \n \n \n \n \n \n \n );\n};\n\nexport default connect(\n null,\n {patchUser, clearEvent}\n)(reduxForm({\n form: 'UserProfileForm',\n validate\n})(UserProfileForm));","import React, {useState} from 'react';\nimport {connect} from 'react-redux';\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport {clearEvent} from \"../../actions/apievents\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport UserProfileForm from \"./UserProfileForm\";\nimport AccountCircleIcon from \"@material-ui/icons/AccountCircle\";\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n}));\n\nconst UserProfileEditDialog = props => {\n const classes = useStyles();\n const { shouldClose, initialValues } = props;\n const [isOpen, setOpen] = useState(false);\n\n const handleClose = () => {\n setOpen(false);\n }\n\n const handleOpen = () => {\n setOpen(true);\n }\n\n if(shouldClose && isOpen) {\n handleClose();\n props.clearEvent(\"PATCH_NEW_USER_EVENT\");\n }\n\n return (\n <>\n \n \n \n \n \n \n \n Edit {`${initialValues.firstName} ${initialValues.lastName}`}\n \n \n \n \n \n\n handleOpen()}\n >\n \n \n \n );\n};\n\nexport default connect(\n (state, ownProps) => ({\n shouldClose: state.apiEvents.PATCH_NEW_USER_EVENT && state.apiEvents.PATCH_NEW_USER_EVENT.success,\n initialValues: state.user\n }),\n {clearEvent}\n)(UserProfileEditDialog);","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport AppBar from '@material-ui/core/AppBar';\nimport {useHistory} from \"react-router-dom\";\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport {connect} from \"react-redux\";\nimport Button from \"@material-ui/core/Button\";\nimport {logout} from \"../../actions/auth.service\";\nimport UserProfileEditDialog from \"../user-profile/UserProfileEditDialog\";\n\nconst useStyles = makeStyles(theme => ({\n title: {\n marginRight: theme.spacing(4),\n cursor: \"pointer\"\n },\n spacer: {\n flexGrow: 1,\n },\n}));\n\nconst RedirectButton = (history, link, name) => {\n return (\n <>\n );\n};\n\nconst NavBar = (props) => {\n const classes = useStyles();\n const {isAuthed, isAdmin} = props;\n const history = useHistory();\n\n if(!isAuthed)\n return null;\n\n return (\n
\n \n \n history.push(\"/home\")}>\n WheelerHeirs\n \n {RedirectButton(history, \"/documents\", \"Documents\")}\n {RedirectButton(history, \"/calendar\", \"Calendar\")}\n {isAdmin && RedirectButton(history, \"/user-management\", \"User Management\")}\n \n
\n \n
\n
\n
\n );\n}\n\nexport default connect((state) => (\n {\n isAuthed: state.user.accessToken ? true : false,\n isAdmin: state.user && state.user.permissionLevel >= 2048\n }),\n{logout})(NavBar);","import client from './wheelerheirs.axios';\nimport jwtDecode from 'jwt-decode';\nimport {getUserProfile} from \"./users.service\";\nimport {showErrorAlert} from \"./notification\";\n\nexport const login = (username, password) => async (dispatch, getState) => {\n await client().post(`/auth`, {username, password})\n .then((user) => user.data)\n .then((user) => {\n dispatch({\n type: \"FETCH_USER_INFO\",\n payload: {\n accessToken: user.accessToken,\n ...jwtDecode(user.accessToken)\n },\n });\n\n getUserProfile(username)(dispatch, getState);\n\n dispatch({\n type: \"FETCH_USER_INFO_EVENT\",\n payload: {\n success: true\n },\n });\n })\n .catch((error) => {\n if(error.response.status === 403) {\n showErrorAlert(error, \"Account awaiting approval, please wait for an admin to approve your account before signing in.\")(dispatch, getState);\n } else {\n showErrorAlert(error, \"Username or Password was Incorrect\")(dispatch, getState);\n }\n\n dispatch({\n type: \"FETCH_USER_INFO_EVENT\",\n payload: {\n success: false,\n error\n },\n });\n });\n};\n\nexport const logout = () => async dispatch => {\n dispatch({\n type: \"FETCH_USER_INFO\",\n payload: {\n logout: true\n }\n });\n};\n","import React from 'react';\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n alignSelf: \"center\"\n }\n}));\n\nconst FormPage = (props) => {\n const classes = useStyles();\n\n return (\n
\n {props.children}\n
\n );\n};\n\nexport default FormPage;","import React from 'react';\nimport {connect} from 'react-redux';\nimport {Field, reduxForm} from \"redux-form\";\nimport {renderTextField} from \"../form-wrappers/form-fields\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport Card from \"@material-ui/core/Card\";\nimport Button from \"@material-ui/core/Button\";\nimport logo from '../../images/wh.svg';\nimport CardMedia from \"@material-ui/core/CardMedia\";\nimport FormPage from \"../form-wrappers/FormPage\";\nimport {createUser} from \"../../actions/users.service\";\nimport {clearEvent} from \"../../actions/apievents\";\nimport {Redirect} from \"react-router-dom\";\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n width: \"350px\",\n padding: theme.spacing(2)\n },\n form: {\n display: \"flex\",\n flexDirection: \"column\"\n },\n img: {\n objectFit: \"contain\"\n }\n}));\n\nconst validate = values => {\n const errors = {}\n\n if (values.password !== values.confirmPassword) {\n errors.password = 'Passwords must match!'\n errors.confirmPassword = 'Passwords must match!'\n }\n\n return errors\n}\n\nconst RegistrationForm = props => {\n const classes = useStyles();\n const { shouldRedirect, handleSubmit, pristine, submitting} = props;\n\n const onSubmit = values => {\n const {confirmPassword, ...user} = values;\n\n return props.createUser(user);\n }\n\n if(shouldRedirect) {\n props.clearEvent(\"CREATE_NEW_USER_EVENT\");\n return \n }\n\n return (\n \n \n \n
\n \n \n \n \n \n \n \n \n
\n
\n );\n};\n\nexport default connect(\n (state) => ({\n shouldRedirect: state.apiEvents.CREATE_NEW_USER_EVENT && state.apiEvents.CREATE_NEW_USER_EVENT.success\n }),\n {createUser, clearEvent}\n)(reduxForm({\n form: 'RegistrationForm',\n validate\n})(RegistrationForm));","import React from 'react';\nimport {connect} from 'react-redux';\nimport {Field, reduxForm} from \"redux-form\";\nimport {renderTextField} from \"../form-wrappers/form-fields\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport Card from \"@material-ui/core/Card\";\nimport Button from \"@material-ui/core/Button\";\nimport logo from '../../images/wh.svg';\nimport CardMedia from \"@material-ui/core/CardMedia\";\nimport FormPage from \"../form-wrappers/FormPage\";\nimport {login} from \"../../actions/auth.service\";\nimport {clearEvent} from \"../../actions/apievents\";\nimport {Redirect} from \"react-router-dom\";\nimport Link from \"@material-ui/core/Link\";\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n width: \"350px\",\n padding: theme.spacing(2),\n margin: theme.spacing(2)\n },\n form: {\n display: \"flex\",\n flexDirection: \"column\"\n },\n img: {\n objectFit: \"contain\"\n },\n splitLinks: {\n display: \"flex\",\n justifyContent: \"space-around\",\n }\n}));\n\nconst LoginForm = props => {\n const classes = useStyles();\n const { handleSubmit, pristine, submitting, shouldRedirect } = props;\n\n const onSubmit = values => {\n props.login(values.username, values.password);\n };\n\n if(shouldRedirect) {\n props.clearEvent(\"FETCH_USER_INFO_EVENT\");\n\n return \n }\n\n return (\n \n \n \n
\n \n\n \n \n \n
\n \n
\n \n Forgot Password?\n \n {/**/}\n {/* I need an account!*/}\n {/**/}\n
\n
\n
\n );\n};\n\nexport default connect((state) => ({\n shouldRedirect: state.apiEvents.FETCH_USER_INFO_EVENT && state.apiEvents.FETCH_USER_INFO_EVENT.success\n}), {login, clearEvent})(reduxForm({\n form: 'LoginForm'\n})(LoginForm));","import React from 'react';\nimport {connect} from 'react-redux';\nimport {Field, reduxForm} from \"redux-form\";\nimport {renderTextField} from \"../form-wrappers/form-fields\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport Card from \"@material-ui/core/Card\";\nimport Button from \"@material-ui/core/Button\";\nimport logo from '../../images/wh.svg';\nimport CardMedia from \"@material-ui/core/CardMedia\";\nimport FormPage from \"../form-wrappers/FormPage\";\nimport Typography from \"@material-ui/core/Typography\";\nimport {startResetPasswordProcess} from \"../../actions/users.service\";\nimport {Redirect} from \"react-router-dom\";\nimport {clearEvent} from \"../../actions/apievents\";\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n width: \"350px\",\n padding: theme.spacing(2)\n },\n form: {\n display: \"flex\",\n flexDirection: \"column\"\n },\n img: {\n objectFit: \"contain\"\n },\n message: {\n marginTop: theme.spacing(2),\n fontSize: 16\n }\n}));\n\nconst RecoveryForm = props => {\n const classes = useStyles();\n const { shouldRedirect, handleSubmit, pristine, submitting } = props;\n\n const onSubmit = values => props.startResetPasswordProcess(values.email);\n\n if(shouldRedirect) {\n props.clearEvent(\"POST_START_RESET_PASSWORD_EVENT\");\n\n return \n }\n\n return (\n \n \n \n
\n \n If you have forgotten your password please enter the E-Mail associated with your account.\n You should receive an E-Mail shortly after with instructions on how to reset your password.\n \n \n \n \n
\n
\n );\n};\n\nexport default connect((state) => ({\n shouldRedirect: state.apiEvents.POST_START_RESET_PASSWORD_EVENT && state.apiEvents.POST_START_RESET_PASSWORD_EVENT.success\n}), {startResetPasswordProcess, clearEvent})(reduxForm({\n form: 'RecoveryForm'\n})(RecoveryForm));","import React from 'react';\nimport { connect } from 'react-redux';\nimport { Route, Redirect, withRouter } from 'react-router-dom'\n\nconst PrivateRoute = (props) => {\n const { shouldRender, component: Component, ...rest } = props;\n return (\n {\n return shouldRender ? (\n \n ) : (\n \n )\n }}\n />\n );\n}\n\nexport default connect((state) => ({\n shouldRender: state.user.accessToken ? true : false\n}), null)(withRouter(PrivateRoute));","import React from 'react';\nimport Card from \"@material-ui/core/Card\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport DescriptionIcon from '@material-ui/icons/Description';\nimport logo from \"../../images/wh.svg\";\nimport CardMedia from \"@material-ui/core/CardMedia\";\nimport Button from \"@material-ui/core/Button\";\nimport {useHistory} from \"react-router-dom\";\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n width: \"350px\",\n padding: theme.spacing(2),\n margin: theme.spacing(4),\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n },\n button: {\n marginTop: theme.spacing(2)\n }\n}));\n\nconst HomeCard = (props) => {\n const classes = useStyles();\n const history = useHistory();\n\n const {title, description, buttonText, buttonLink, icon} = props;\n\n return (\n \n {icon}\n \n {title}\n \n \n {description}\n \n \n \n );\n};\n\nexport default HomeCard;","import React from 'react';\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport HomeCard from \"./HomeCard\";\nimport DescriptionIcon from \"@material-ui/icons/Description\";\nimport EventIcon from '@material-ui/icons/Event';\nimport PersonIcon from '@material-ui/icons/Person';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n flexWrap: \"wrap\",\n marginTop: theme.spacing(6)\n }\n}));\n\nconst HomePage = (props) => {\n const classes = useStyles();\n\n return (\n
\n }\n />\n }\n />\n
\n );\n};\n\nexport default HomePage;","import client from './wheelerheirs.axios';\nimport {showErrorAlert} from \"./notification\";\n\nexport const getAllDocuments = () => async (dispatch, getState) => {\n await client(getState().user.accessToken).get('/documents')\n .then((documentList) => {\n dispatch({\n type: \"FETCH_DOCUMENTS\",\n payload: documentList.data\n });\n\n dispatch({\n type: \"FETCH_DOCUMENTS_EVENT\",\n payload: {\n success: true\n },\n });\n })\n .catch((error) => {\n showErrorAlert(error, \"Could not get documents, we are not sure what happened\")(dispatch, getState);\n\n dispatch({\n type: \"FETCH_DOCUMENTS_EVENT\",\n payload: {\n success: false,\n error\n },\n });\n });\n};\n\nexport const getDocument = (folder, document) => async (dispatch, getState) => {\n await client(getState().user.accessToken).get(`/documents/${folder}/${document}`, {responseType: 'blob'})\n .then((res) => res.data)\n .then((blob) => (window.URL || window.webkitURL).createObjectURL(blob))\n .then((data) => {\n dispatch({\n type: \"FETCH_CURRENT_DOCUMENT_EVENT\",\n payload: {\n success: true,\n data,\n document\n },\n });\n })\n .catch((error) => {\n showErrorAlert(error, \"Could not get a document, we are not sure what happened\")(dispatch, getState);\n\n dispatch({\n type: \"FETCH_CURRENT_DOCUMENT_EVENT\",\n payload: {\n success: false,\n error\n },\n });\n });\n};\n\nexport const uploadDocument = (folder, document) => async (dispatch, getState) => {\n const formData = new FormData();\n formData.append(\"document\", document);\n\n await client(getState().user.accessToken).post(`/documents/${folder}`, formData)\n .then(() => {\n getAllDocuments()(dispatch, getState);\n\n dispatch({\n type: \"UPLOAD_DOCUMENT_EVENT\",\n payload: {\n success: true\n },\n });\n })\n .catch((error) => {\n showErrorAlert(error, \"Could not upload a document, we are not sure what happened\")(dispatch, getState);\n\n dispatch({\n type: \"UPLOAD_DOCUMENT_EVENT\",\n payload: {\n success: false,\n error\n },\n });\n });\n}\n\nexport const deleteDocument = (folder, document) => async (dispatch, getState) => {\n await client(getState().user.accessToken).delete(`/documents/${folder}/${document}`)\n .then(() => {\n getAllDocuments()(dispatch, getState);\n\n dispatch({\n type: \"DELETE_DOCUMENT_EVENT\",\n payload: {\n success: true\n },\n });\n })\n .catch((error) => {\n showErrorAlert(error, \"Could not delete a document, we are not sure what happened\")(dispatch, getState);\n\n dispatch({\n type: \"DELETE_DOCUMENT_EVENT\",\n payload: {\n success: false,\n error\n },\n });\n });\n}\n","import React, { useMemo, useCallback } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\n\nconst baseStyle = {\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"45px\",\n borderWidth: 1,\n borderRadius: 0,\n borderColor: \"#aaaaaa\",\n borderStyle: \"dashed\",\n backgroundColor: \"#fafafa\",\n color: \"#bdbdbd\",\n outline: \"none\",\n transition: \"border .24s ease-in-out\",\n fontFamily: \"Roboto\",\n fontSize: \"1.2rem\"\n};\n\nconst activeStyle = {\n backgroundColor: \"#2196f3\"\n};\n\nconst acceptStyle = {\n backgroundColor: \"#99ffce\"\n};\n\nconst rejectStyle = {\n backgroundColor: \"#ffb3c2\"\n};\n\nexport default function FileUploadMini(props) {\n const maxSize = 1024 * 1000 * 1000;\n\n const onDrop = useCallback(acceptedFiles => {\n acceptedFiles.map(file => {\n props.uploadCallback(file);\n });\n }, []);\n\n const {\n isDragActive,\n getRootProps,\n getInputProps,\n isDragReject,\n isDragAccept,\n acceptedFiles,\n rejectedFiles\n } = useDropzone({\n onDrop,\n accept: props.acceptedTypes,\n minSize: 0,\n maxSize\n });\n\n const style = useMemo(\n () => ({\n ...baseStyle,\n ...(isDragActive ? activeStyle : {}),\n ...(isDragAccept ? acceptStyle : {}),\n ...(isDragReject ? rejectStyle : {})\n }),\n [isDragActive, isDragReject]\n );\n\n const isFileTooLarge = rejectedFiles &&\n rejectedFiles.length > 0 && rejectedFiles[0].size > maxSize;\n\n return (\n
\n \n {!isDragActive &&

Click here or drop a file to upload!

}\n {isDragActive && !isDragReject &&

Drop it like it's HOT!

}\n {isDragReject &&

File type not accepted, sorry!

}\n {isFileTooLarge && (\n
File is too large.
\n )}\n
\n );\n}\n","import React from 'react';\nimport {connect} from 'react-redux';\nimport ListItem from \"@material-ui/core/ListItem\";\nimport FileUploadMini from \"../dropzone/FileUploadMini\";\nimport {uploadDocument} from \"../../actions/document.service\";\n\nconst DocumentUpload = props => {\n const {isAdmin, folder, uploadDocument} = props;\n\n if(!isAdmin)\n return null;\n\n return (\n \n uploadDocument(folder, file)}\n acceptedTypes={\"application/pdf\"}\n />\n \n );\n};\n\nexport default connect((state) => ({\n isAdmin: state.user && state.user.permissionLevel\n}), {uploadDocument})(DocumentUpload);","import React from \"react\";\nimport Button from \"@material-ui/core/Button\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\nimport { useTheme } from \"@material-ui/core/styles\";\n\nconst ParanoidConfirm = (props) => {\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\n const handleClose = () => {\n props.handleClose();\n };\n\n return (\n \n \n {\"Delete Confirmation\"}\n \n \n \n Do you really want to delete the {props.resource}{\" \"}\n {props.confirm}.\n \n \n \n \n \n \n \n );\n}\n\nexport default ParanoidConfirm;\n","import React, {useState} from 'react';\nimport {connect} from 'react-redux';\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport {deleteDocument} from \"../../actions/document.service\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport ParanoidConfirm from \"./ParanoidConfirm\";\n\nconst DeleteFileAction = props => {\n const [isOpen, setOpen] = useState(false);\n const {isAdmin, folder, document, deleteDocument} = props;\n\n if(!isAdmin)\n return null;\n\n return (\n <>\n setOpen(true)}\n >\n \n \n setOpen(false)}\n handleSubmit={() => {\n deleteDocument(folder, document);\n setOpen(false);\n }}\n resource={\"document\"}\n confirm={document}\n />\n \n );\n};\n\nexport default connect((state) => ({\n isAdmin: state.user.permissionLevel >= 2048\n}), {deleteDocument})(DeleteFileAction);","import React, {useState} from 'react';\nimport {connect} from 'react-redux';\nimport DeleteFileAction from \"./DeleteFileAction\";\nimport ListItemIcon from \"@material-ui/core/ListItemIcon\";\nimport InsertDriveFileIcon from \"@material-ui/icons/InsertDriveFile\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport Typography from \"@material-ui/core/Typography\";\nimport {getDocument} from \"../../actions/document.service\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport ListItemSecondaryAction from \"@material-ui/core/ListItemSecondaryAction\";\n\nconst DocumentFile = props => {\n const { folder, document, getDocument } = props;\n\n return (\n getDocument(folder, document)}\n >\n \n \n \n \n {document}\n \n }\n />\n \n \n \n \n );\n}\n\nexport default connect(null, {getDocument})(DocumentFile);","import React, {useState} from 'react';\nimport {connect} from 'react-redux';\nimport ListItem from \"@material-ui/core/ListItem\";\nimport ListItemIcon from \"@material-ui/core/ListItemIcon\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\nimport {ExpandLess, ExpandMore} from \"@material-ui/icons\";\nimport Collapse from \"@material-ui/core/Collapse\";\nimport DocumentUpload from \"./DocumentUpload\";\nimport DocumentFile from \"./DocumentFile\";\nimport List from \"@material-ui/core/List\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxWidth: \"600px\"\n },\n innerList: {\n width: \"100%\",\n maxWidth: \"550px\"\n }\n}));\n\nconst DocumentFolder = props => {\n const [isOpen, setOpen] = useState(false);\n\n const classes = useStyles();\n const {folder, folderName, documents} = props;\n\n return (\n <>\n {\n setOpen(!isOpen);\n }}\n >\n \n \n \n \n {isOpen ? : }\n \n \n \n \n {documents.map(document => )}\n \n \n \n );\n};\n\nexport default connect((state, ownProps) => {\n return {\n documents: state.documents[ownProps.folder]\n }\n}, null)(DocumentFolder);","import React from 'react';\nimport {connect} from 'react-redux';\nimport {clearEvent} from \"../../actions/apievents\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport CloseIcon from '@material-ui/icons/Close';\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst useStyles = makeStyles((theme) => ({\n paper: {\n width: '100%',\n height: '100%'\n },\n documentFrame: {\n width: '100%',\n height: '100%',\n border: 'none'\n },\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n}));\n\nconst DocumentDisplay = props => {\n const classes = useStyles();\n const {currentDocument, currentDocumentName, clearEvent} = props;\n\n const handleClose = () => {\n clearEvent(\"FETCH_CURRENT_DOCUMENT_EVENT\");\n };\n\n return (\n \n \n \n \n \n \n \n {currentDocumentName}\n \n \n \n \n \n );\n};\n\nexport default connect((state) => {\n const event = state.apiEvents.FETCH_CURRENT_DOCUMENT_EVENT;\n\n console.log(state);\n\n return {\n currentDocument: event && event.success ? event.data : null,\n currentDocumentName: event && event.success ? event.document : null\n };\n}, {clearEvent})(DocumentDisplay);","import React, {useEffect} from 'react';\nimport {connect} from 'react-redux';\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport {getAllDocuments} from \"../../actions/document.service\";\nimport List from \"@material-ui/core/List\";\nimport DocumentFolder from \"./DocumentFolder\";\nimport DocumentDisplay from \"./DocumentDisplay\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n marginTop: theme.spacing(6)\n }\n}));\n\nconst DocumentPage = (props) => {\n const classes = useStyles();\n const {getAllDocuments, documents} = props;\n\n useEffect(() => {\n getAllDocuments();\n }, [getAllDocuments]);\n\n return (\n \n {documents.map((folderName) => {\n return \n })}\n \n \n );\n};\n\nexport default connect((state) => {\n return {\n documents: Object.keys(state.documents)\n }\n}, {getAllDocuments})(DocumentPage);","import client from \"./wheelerheirs.axios\";\nimport {clearEvent} from \"./apievents\";\nimport {showAlert, showErrorAlert} from \"./notification\";\n\nconst eventsToGroups = (events, pending = false) => {\n let groups = {\n \"Linger Bedroom\": {\n id: \"Linger Bedroom\",\n title: \"Linger Bedroom\",\n idOpen: false,\n tracks: [],\n elements: []\n },\n \"Longer Bedroom\": {\n id: \"Longer Bedroom\",\n title: \"Longer Bedroom\",\n idOpen: false,\n tracks: [],\n elements: []\n },\n \"Sunset\": {\n id: \"Sunset\",\n title: \"Sunset\",\n idOpen: false,\n tracks: [],\n elements: []\n },\n \"Citadel\": {\n id: \"Citadel\",\n title: \"Citadel\",\n idOpen: false,\n tracks: [],\n elements: []\n },\n \"Sunrise\": {\n id: \"Sunrise\",\n title: \"Sunrise\",\n idOpen: false,\n tracks: [],\n elements: []\n },\n \"WeeHoos\": {\n id: \"WeeHoos\",\n title: \"WeeHoos\",\n idOpen: false,\n tracks: [],\n elements: []\n },\n \"Dining Porch Couch\": {\n id: \"Dining Porch Couch\",\n title: \"Dining Porch Couch\",\n idOpen: false,\n tracks: [],\n elements: []\n },\n \"Attic\": {\n id: \"Attic\",\n title: \"Attic\",\n idOpen: false,\n tracks: [],\n elements: []\n },\n\n };\n\n events.forEach((event) => {\n event.rooms.forEach(room => {\n if(!groups[room]) {\n groups[room] = {\n id: room,\n title: room,\n idOpen: false,\n tracks: [],\n elements: []\n }\n }\n\n groups[room].elements.push({\n id: event.id,\n start: new Date(event.start),\n end: new Date(event.end),\n title: event.family,\n style: {\n backgroundColor: pending ? \"#ff3d00\" : \"#4caf50\",\n borderRadius: \"4px\",\n boxShadow: \"1px 1px 0px rgba(0, 0, 0, 0.25)\",\n color: \"#000000\",\n textTransform: \"capitalize\"\n },\n fullEvent: {...event, approved: !pending}\n });\n })\n });\n\n return Object.keys(groups).map(group => groups[group]);\n}\n\nexport const selectEvent = (event) => async (dispatch, getState) => {\n dispatch({\n type: \"SELECT_CALENDAR_EVENT\",\n payload: {\n success: true,\n event\n },\n });\n}\n\nexport const getAllEvents = () => async (dispatch, getState) => {\n await client(getState().user.accessToken).get(`/calendar/events`)\n .then((events) => {\n console.log(events);\n dispatch({\n type: \"FETCH_CALENDAR\",\n payload: eventsToGroups(events.data),\n });\n\n dispatch({\n type: \"FETCH_CALENDAR_EVENT\",\n payload: {\n success: true\n },\n });\n })\n .catch((error) => {\n showErrorAlert(error, \"We are not sure what happened here?\")(dispatch, getState);\n\n dispatch({\n type: \"FETCH_CALENDAR_EVENT\",\n payload: {\n success: false,\n error\n },\n });\n });\n};\n\nexport const getPendingEvents = () => async (dispatch, getState) => {\n await client(getState().user.accessToken).get(`/calendar/events?pending`)\n .then((events) => {\n dispatch({\n type: \"FETCH_CALENDAR_PENDING\",\n payload: eventsToGroups(events.data, true),\n });\n\n dispatch({\n type: \"FETCH_CALENDAR_PENDING_EVENT\",\n payload: {\n success: true\n },\n });\n })\n .catch((error) => {\n showErrorAlert(error, \"We are not sure what happened here?\")(dispatch, getState);\n\n dispatch({\n type: \"FETCH_CALENDAR_PENDING_EVENT\",\n payload: {\n success: false,\n error\n },\n });\n });\n};\n\nexport const createReservation = (reservation, approved) => async (dispatch, getState) => {\n await client(getState().user.accessToken).post(`/calendar/events${approved ? \"?approved\" : \"\"}`, reservation)\n .then(() => {\n getAllEvents()(dispatch, getState);\n getPendingEvents()(dispatch, getState);\n\n if(approved)\n clearEvent(\"SELECT_CALENDAR_EVENT\")(dispatch, getState);\n\n dispatch({\n type: \"POST_RESERVATION_EVENT\",\n payload: {\n success: true\n },\n });\n })\n .catch((error) => {\n showErrorAlert(error, `Error ${approved ? \"approving\" : \"creating\"} reservation, reservation may contain invalid data.`)(dispatch, getState);\n\n dispatch({\n type: \"POST_RESERVATION_EVENT\",\n payload: {\n success: false,\n error\n },\n });\n });\n};\n\nexport const deleteReservation = (reservation, pending = false) => async (dispatch, getState) => {\n await client(getState().user.accessToken).delete(`/calendar/events/${reservation.id}${pending ? \"?pending\" : \"\"}`)\n .then(() => {\n getAllEvents()(dispatch, getState);\n getPendingEvents()(dispatch, getState);\n\n clearEvent(\"SELECT_CALENDAR_EVENT\")(dispatch, getState);\n\n dispatch({\n type: \"DELETE_APPROVED_RESERVATION_EVENT\",\n payload: {\n success: true\n },\n });\n })\n .catch((error) => {\n showErrorAlert(error, \"We are not sure what happened here?\")(dispatch, getState);\n\n dispatch({\n type: \"DELETE_APPROVED_RESERVATION_EVENT\",\n payload: {\n success: false,\n error\n },\n });\n });\n};\n\nexport const updateReservation = (reservation) => async (dispatch, getState) => {\n await client(getState().user.accessToken).put(`/calendar/events/${reservation.id}`, reservation)\n .then(() => {\n getAllEvents()(dispatch, getState);\n getPendingEvents()(dispatch, getState);\n\n clearEvent(\"SELECT_CALENDAR_EVENT\")(dispatch, getState);\n\n dispatch({\n type: \"UPDATE_APPROVED_RESERVATION_EVENT\",\n payload: {\n success: true\n },\n });\n })\n .catch((error) => {\n showErrorAlert(error, \"Could not update reservation, reservation may contain invalid data\")(dispatch, getState);\n\n dispatch({\n type: \"UPDATE_APPROVED_RESERVATION_EVENT\",\n payload: {\n success: false,\n error\n },\n });\n });\n};\n\nexport const declineReservation = (reservation) => async (dispatch, getState) => {\n await client(getState().user.accessToken).post(`/calendar/events/${reservation.id}/decline`, reservation)\n .then(() => {\n clearEvent(\"SELECT_CALENDAR_EVENT\")(dispatch, getState);\n\n dispatch({\n type: \"DECLINE_RESERVATION_EVENT\",\n payload: {\n success: true\n },\n });\n })\n .catch((error) => {\n showErrorAlert(error, \"Could not ask for more details, we arnt sure what happened here\")(dispatch, getState);\n\n dispatch({\n type: \"DECLINE_RESERVATION_EVENT\",\n payload: {\n success: false,\n error\n },\n });\n });\n};\n","export const start = new Date(new Date().getFullYear(), 0, 1);\nexport const end = new Date(new Date().getFullYear(), 11, 31);\n\nexport const months = () => ({\n id: \"months\",\n title: \"Months\",\n style: {},\n useAsGrid: true,\n cells: [\n {id: \"m0\", title: \"Jan\", start: new Date(new Date().getFullYear(), 0, 1), end: new Date(new Date().getFullYear(), 1, 1)},\n {id: \"m1\", title: \"Feb\", start: new Date(new Date().getFullYear(), 1, 1), end: new Date(new Date().getFullYear(), 2, 1)},\n {id: \"m2\", title: \"Mar\", start: new Date(new Date().getFullYear(), 2, 1), end: new Date(new Date().getFullYear(), 3, 1)},\n {id: \"m3\", title: \"Apr\", start: new Date(new Date().getFullYear(), 3, 1), end: new Date(new Date().getFullYear(), 4, 1)},\n {id: \"m4\", title: \"May\", start: new Date(new Date().getFullYear(), 4, 1), end: new Date(new Date().getFullYear(), 5, 1)},\n {id: \"m5\", title: \"Jun\", start: new Date(new Date().getFullYear(), 5, 1), end: new Date(new Date().getFullYear(), 6, 1)},\n {id: \"m6\", title: \"Jul\", start: new Date(new Date().getFullYear(), 6, 1), end: new Date(new Date().getFullYear(), 7, 1)},\n {id: \"m7\", title: \"Aug\", start: new Date(new Date().getFullYear(), 7, 1), end: new Date(new Date().getFullYear(), 8, 1)},\n {id: \"m8\", title: \"Sep\", start: new Date(new Date().getFullYear(), 8, 1), end: new Date(new Date().getFullYear(), 9, 1)},\n {id: \"m9\", title: \"Oct\", start: new Date(new Date().getFullYear(), 9, 1), end: new Date(new Date().getFullYear(), 10, 1)},\n {id: \"m10\", title: \"Nov\", start: new Date(new Date().getFullYear(), 10, 1), end: new Date(new Date().getFullYear(), 11, 1)},\n {id: \"m11\", title: \"Dec\", start: new Date(new Date().getFullYear(), 11, 1), end: new Date(new Date().getFullYear() + 1, 0, 1)}\n ]\n});\n\nexport const days = () => {\n let days = [];\n\n for (let d = new Date(start); d <= end; d.setDate(d.getDate() + 1)) {\n days.push({\n id: \"d\" + d.valueOf(),\n title: `${d.getDate()}`,\n start: new Date(d),\n end: new Date(new Date(d).setDate(d.getDate() + 1))\n })\n }\n\n return {\n id: \"days\",\n title: \"Days\",\n style: {},\n useAsGrid: true,\n cells: days\n };\n};","import {KeyboardDatePicker} from \"@material-ui/pickers\";\nimport React from \"react\";\n\nconst DatePickerField = props => {\n const {\n meta: { submitting, error, touched },\n input: { onBlur, value, ...inputProps },\n ...others\n } = props;\n\n const onChange = date => {\n Date.parse(date) ? inputProps.onChange(date.toISOString()) : inputProps.onChange(null);\n };\n\n return (\n onBlur(value ? new Date(value).toISOString() : null)}\n error={error && touched}\n onChange={onChange}\n margin=\"normal\"\n />\n );\n};\n\nexport default DatePickerField;\n","import React from 'react';\nimport {Field} from \"redux-form\";\nimport {renderCheckbox, renderTextField} from \"../form-wrappers/form-fields\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport DatePickerField from \"../form-wrappers/DatePickerField\";\n\nconst useStyles = makeStyles((theme) => ({\n twoColumns: {\n width: \"100%\",\n display: \"grid\",\n gridTemplateColumns: \"48% 48%\",\n columnGap: theme.spacing(2)\n },\n dontDisplay: {\n display: \"none\"\n }\n}));\n\nconst required = value => value ? undefined : 'Required';\n\nconst ReservationFormFields = props => {\n const classes = useStyles();\n\n return (\n <>\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n );\n};\n\nexport default ReservationFormFields;","import React from 'react';\nimport {connect} from 'react-redux';\nimport {reduxForm} from \"redux-form\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport Button from \"@material-ui/core/Button\";\nimport MomentUtils from \"@date-io/moment\";\nimport {MuiPickersUtilsProvider} from \"@material-ui/pickers\";\nimport ReservationFormFields from \"./ReservationFormFields\";\nimport {\n createReservation,\n declineReservation,\n deleteReservation,\n updateReservation\n} from \"../../actions/calendar.service\";\nimport {showAlert} from \"../../actions/notification\";\n\nconst useStyles = makeStyles((theme) => ({\n form: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: theme.spacing(4)\n },\n longButton: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n marginTop: theme.spacing(2)\n },\n twoColumns: {\n width: \"100%\",\n display: \"grid\",\n gridTemplateColumns: \"48% 48%\",\n columnGap: theme.spacing(2)\n },\n}));\n\nconst ReservationForm = props => {\n const classes = useStyles();\n const { handleSubmit, submitting, approved } = props;\n\n const onSubmit = values => {\n const {action, ...rest} = values;\n\n let reservation = {\n rooms: []\n }\n\n console.log(rest);\n\n for (let [key, value] of Object.entries(rest)) {\n if(typeof value === \"boolean\" && value)\n reservation.rooms.push(key);\n else\n reservation[key] = value;\n }\n\n if(reservation.rooms.length === 0) {\n props.showAlert(\"warning\", \"You must select at lease 1 room to reserve!\");\n return;\n }\n\n let start = new Date(reservation.start);\n start.setHours(13, 0, 0, 0);\n\n let end = new Date(reservation.end);\n end.setHours(11, 0, 0, 0);\n\n reservation.start = start;\n reservation.end = end;\n\n switch(action) {\n case \"edit\": return props.updateReservation(reservation);\n case \"delete\": return props.deleteReservation(reservation);\n case \"approve\":return props.createReservation(reservation, true);\n case \"decline\": return props.deleteReservation(reservation);\n case \"deletePending\": return props.deleteReservation(reservation, true);\n case \"reservation\": return props.createReservation(reservation, false);\n default:\n break;\n }\n }\n\n const createSubmitButton = (action, actionText) => {\n return (\n onSubmit({...values, action}))}>\n {actionText}\n \n );\n }\n\n const getButtonsForForm = () => {\n switch(approved) {\n case true:\n return (\n
\n {createSubmitButton(\"edit\", \"Edit and Save\")}\n {createSubmitButton(\"delete\", \"Delete Reservation\")}\n
\n );\n case false:\n return (\n <>\n
\n {createSubmitButton(\"approve\", \"Approve Reservation\")}\n {createSubmitButton(\"decline\", \"Request More Info\")}\n
\n
\n {createSubmitButton(\"deletePending\", \"Delete Pending Reservation\")}\n
\n \n );\n default:\n return createSubmitButton(\"reservation\", \"Apply For Reservation\");\n }\n };\n\n return (\n \n
\n \n {getButtonsForForm()}\n \n
\n );\n};\n\nexport default connect(\n null,\n {createReservation, deleteReservation, updateReservation, declineReservation, showAlert})(\n reduxForm({\n form: 'ReservationForm'\n })(ReservationForm)\n);","import React, {useState} from 'react';\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport ReservationForm from \"./ReservationForm\";\n\nconst useStyles = makeStyles((theme) => ({\n paper: {\n width: '100%'\n },\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n}));\n\nconst ReservationDialog = props => {\n const classes = useStyles();\n const {initialValues, handleClose, isOpen, approved} = props;\n\n return (\n \n \n \n \n \n \n \n Reservation Form\n \n \n \n \n \n );\n};\n\nexport default (ReservationDialog);","import React, {useState} from 'react';\nimport {connect} from 'react-redux';\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport ReservationDialog from \"./ReservationDialog\";\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\nimport Fab from \"@material-ui/core/Fab\";\nimport {clearEvent} from \"../../actions/apievents\";\n\nconst useStyles = makeStyles((theme) => ({\n fab: {\n position: \"fixed\",\n bottom: theme.spacing(4),\n right: theme.spacing(4)\n },\n extendedIcon: {\n marginRight: theme.spacing(1),\n },\n}));\n\nconst ReservationFab = props => {\n const [isOpen, setOpen] = useState(false);\n const classes = useStyles();\n\n const handleClose = () => {\n setOpen(false);\n }\n\n const handleOpen = () => {\n setOpen(true);\n }\n\n if(props.closeModal && isOpen) {\n props.clearEvent(\"POST_RESERVATION_EVENT\");\n setOpen(false);\n }\n\n return (\n <>\n \n \n \n Make A Reservation\n \n \n );\n};\n\nexport default connect((state) => ({\n closeModal: state.apiEvents.POST_RESERVATION_EVENT && state.apiEvents.POST_RESERVATION_EVENT.success\n}), {clearEvent})(ReservationFab);","import React from 'react';\nimport {connect} from 'react-redux';\nimport ReservationDialog from \"./ReservationDialog\";\nimport {clearEvent} from \"../../actions/apievents\";\n\nconst ReservationEditDialog = props => {\n\n const {event, clearEvent} = props;\n\n const handleClose = () => {\n clearEvent(\"SELECT_CALENDAR_EVENT\");\n }\n\n if(!event)\n return null;\n\n const {id, family, adults, children, rooms, start, end, approved} = event;\n const newRooms = rooms.reduce((acc, cur) => ({\n [cur]: true,\n ...acc\n }), {});\n\n return (\n \n );\n};\n\nexport default connect((state) => ({\n event: state.apiEvents.SELECT_CALENDAR_EVENT ? state.apiEvents.SELECT_CALENDAR_EVENT.event : null\n}), {clearEvent})(ReservationEditDialog);","import React, {useEffect} from 'react';\nimport {connect} from 'react-redux';\nimport Timeline from 'react-timelines';\nimport {getAllEvents, getPendingEvents, selectEvent} from \"../../actions/calendar.service\";\nimport {days, end, months, start} from \"./calendar\";\n\nimport 'react-timelines/lib/css/style.css';\nimport ReservationFab from \"../reservation/ReservationFab\";\nimport ReservationEditDialog from \"../reservation/ReservationEditDialog\";\n\nconst CalendarPage = props => {\n const {isAdmin, groups, getAllEvents, getPendingEvents, selectEvent} = props;\n\n console.log(groups);\n\n useEffect(() => {\n getAllEvents();\n getPendingEvents();\n }, [getAllEvents, getPendingEvents]);\n\n const clickEvent = element => {\n if(!isAdmin)\n return;\n\n selectEvent(element.fullEvent);\n }\n\n return (\n <>\n \n \n \n \n );\n};\n\nexport default connect((state) => {\n let groups = [...state.calendar];\n\n if(state.user.permissionLevel >= 2048) {\n state.pendingCalendar.forEach(pendingGroup => {\n const matchingGroup = groups.find(group => group.id === pendingGroup.id);\n\n if(!matchingGroup) {\n groups.push(pendingGroup);\n } else {\n matchingGroup.elements = [...matchingGroup.elements, ...pendingGroup.elements]\n }\n });\n }\n\n return {\n isAdmin: state.user.permissionLevel >= 2048,\n groups: groups\n }\n}, {getAllEvents, getPendingEvents, selectEvent})(CalendarPage);","import React from 'react';\nimport {connect} from 'react-redux';\nimport {Field, reduxForm} from \"redux-form\";\nimport {renderSwitch, renderTextField} from \"../form-wrappers/form-fields\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport Button from \"@material-ui/core/Button\";\nimport {deleteUser, patchUser} from \"../../actions/users.service\";\nimport {clearEvent} from \"../../actions/apievents\";\n\nconst useStyles = makeStyles((theme) => ({\n form: {\n width: \"350px\",\n display: \"flex\",\n flexDirection: \"column\",\n margin: theme.spacing(4)\n }\n}));\n\nconst UserManagementForm = props => {\n const classes = useStyles();\n const { handleSubmit, pristine, submitting} = props;\n\n const onSubmit = values => {\n const {isAdmin, enabled, ...user} = values;\n\n return props.patchUser(\n props.username,\n {\n ...user,\n enabled: enabled,\n permissionLevel: isAdmin ? 2048 : 1\n });\n }\n\n const deleteUser = () => {\n props.deleteUser(props.initialValues.username);\n props.close();\n }\n\n return (\n
\n \n \n \n \n \n \n \n \n\n \n \n );\n};\n\nexport default connect(\n null,\n {patchUser, deleteUser, clearEvent}\n)(reduxForm({\n form: 'UserManagementForm'\n})(UserManagementForm));","import React, {useState} from 'react';\nimport {connect} from 'react-redux';\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport Button from \"@material-ui/core/Button\";\nimport {clearEvent} from \"../../actions/apievents\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport UserManagementForm from \"./UserManagementForm\";\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n}));\n\nconst UserManagementEditDialog = props => {\n const classes = useStyles();\n const { shouldClose, initialValues, username } = props;\n const [isOpen, setOpen] = useState(false);\n\n const handleClose = () => {\n setOpen(false);\n }\n\n const handleOpen = () => {\n setOpen(true);\n }\n\n if(shouldClose && isOpen) {\n handleClose();\n props.clearEvent(\"PATCH_NEW_USER_EVENT\");\n }\n\n return (\n <>\n \n \n \n \n \n \n \n Edit {`${initialValues.firstName} ${initialValues.lastName}`}\n \n \n \n \n \n \n \n );\n};\n\nexport default connect(\n (state, ownProps) => ({\n shouldClose: state.apiEvents.PATCH_NEW_USER_EVENT && state.apiEvents.PATCH_NEW_USER_EVENT.success,\n initialValues: state.users.find(user => user.username === ownProps.username)\n }),\n {clearEvent}\n)(UserManagementEditDialog);","import React from 'react';\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport UserManagementEditDialog from \"./UserManagementEditDialog\";\n\nconst UserTableRow = props => {\n const {user} = props;\n\n return (\n \n \n {user.firstName} {user.lastName}\n \n {user.username}\n {user.email}\n {user.permissionLevel}\n \n \n \n \n );\n};\n\nexport default UserTableRow;","import React, {useEffect} from 'react';\nimport {connect} from 'react-redux';\nimport Table from \"@material-ui/core/Table\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport UserTableRow from \"./UserTableRow\";\nimport {getAllUsers} from \"../../actions/users.service\";\n\nconst useStyles = makeStyles((theme) => ({\n table: {\n maxWidth: 1200,\n margin: theme.spacing(4),\n }\n}));\n\nconst UserTable = props => {\n const classes = useStyles();\n const {users, getAllUsers} = props;\n\n useEffect(() => {\n getAllUsers();\n }, [getAllUsers]);\n\n return (\n \n \n \n Name\n Username\n E-Mail\n Permission Level\n Edit\n \n \n \n {users.map((user) => )}\n \n
\n );\n};\n\nexport default connect(state => ({ users: state.users }), { getAllUsers })(UserTable);","import React from 'react';\nimport UserTable from \"./UserTable\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\"\n }\n}));\n\nconst UserManagementPage = props => {\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n};\n\nexport default UserManagementPage;","import React from 'react';\nimport {connect} from 'react-redux';\nimport {Field, reduxForm} from \"redux-form\";\nimport {useParams, Redirect} from 'react-router-dom';\nimport {renderTextField} from \"../form-wrappers/form-fields\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport Card from \"@material-ui/core/Card\";\nimport Button from \"@material-ui/core/Button\";\nimport logo from '../../images/wh.svg';\nimport CardMedia from \"@material-ui/core/CardMedia\";\nimport FormPage from \"../form-wrappers/FormPage\";\nimport {resetPasswordSecure} from \"../../actions/users.service\";\nimport {clearEvent} from \"../../actions/apievents\";\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n width: \"350px\",\n padding: theme.spacing(2)\n },\n form: {\n display: \"flex\",\n flexDirection: \"column\"\n },\n img: {\n objectFit: \"contain\"\n },\n message: {\n marginTop: theme.spacing(2),\n fontSize: 16\n }\n}));\n\nconst validate = values => {\n const errors = {}\n\n if (values.password !== values.confirmPassword) {\n errors.password = 'Passwords must match!'\n errors.confirmPassword = 'Passwords must match!'\n }\n\n return errors\n}\n\nconst ResetPasswordForm = props => {\n const classes = useStyles();\n const { shouldRedirect, handleSubmit, pristine, submitting } = props;\n let { username, token } = useParams();\n\n const onSubmit = values => props.resetPasswordSecure(values.password, username, token);\n\n if(shouldRedirect) {\n props.clearEvent(\"POST_RESET_PASSWORD_EVENT\");\n\n return \n }\n\n return (\n \n \n \n
\n \n \n \n \n
\n
\n );\n};\n\nexport default connect((state) => ({\n shouldRedirect: state.apiEvents.POST_RESET_PASSWORD_EVENT && state.apiEvents.POST_RESET_PASSWORD_EVENT.success\n}), {resetPasswordSecure, clearEvent})(reduxForm({\n form: 'ResetPasswordForm',\n validate\n})(ResetPasswordForm));","import React from 'react';\nimport {createMuiTheme, CssBaseline} from \"@material-ui/core\";\n\nimport NotificationDecorator from \"./components/notifications/NotificationDecorator\";\nimport {BrowserRouter, Switch, Route} from \"react-router-dom\";\nimport NavHelmet from \"./components/navigation/NavHelmet\";\nimport {ThemeProvider} from \"@material-ui/styles\";\nimport green from \"@material-ui/core/colors/green\";\nimport RegistrationForm from \"./components/registration/RegistrationForm\";\nimport LoginForm from \"./components/login/LoginForm\";\nimport RecoveryForm from \"./components/recovery/RecoveryForm\";\nimport PrivateRoute from \"./components/security/PrivateRoute\";\nimport HomePage from \"./components/homepage/HomePage\";\nimport DocumentPage from \"./components/documents/DocumentPage\";\nimport CalendarPage from \"./components/calendar/CalendarPage\";\nimport UserManagementPage from \"./components/user-management/UserManagementPage\";\nimport ResetPasswordForm from \"./components/recovery/ResetPasswordForm\";\n\nconst theme = createMuiTheme({\n palette: {\n primary: green,\n secondary: green,\n }\n});\n\nconst App = (props) => {\n return (\n
\n \n \n \n \n \n \n \n \n {/**/}\n \n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\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 subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\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.0/8 are 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 function register(config) {\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.href);\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/facebook/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. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\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://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\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 // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.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, config);\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\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import { combineReducers } from 'redux';\nimport { reducer as formReducer } from 'redux-form';\nimport {persistReducer} from \"redux-persist\";\nimport storage from \"redux-persist/lib/storage\";\n\nconst localStorageReducer = (key, reducer) => {\n return persistReducer({ key, storage }, reducer);\n};\n\nconst basicReducer = (defaultState, actionName) => (state = defaultState, action) => {\n switch (action.type) {\n case actionName:\n return action.payload;\n default:\n return state;\n }\n};\n\nconst userProfileReducer = (state = {}, action) => {\n\n switch (action.type) {\n case \"FETCH_USER_INFO\":\n case \"FETCH_USER_PROFILE\":\n if(action.payload.logout) {\n return {};\n }\n\n return {...state, ...action.payload};\n default:\n return state;\n }\n}\n\nconst apiEventsReducer = (state = {}, action) => {\n if(!action.type.includes(\"_EVENT\"))\n return state;\n\n if(action.payload === \"DELETE\") {\n const {[action.type]: value, ...removedAction} = state;\n return removedAction;\n }\n\n return {...state, [action.type]: action.payload};\n};\n\nexport default combineReducers({\n form: formReducer,\n notifications: basicReducer([], \"NOTIFY\"),\n apiEvents: apiEventsReducer,\n user: localStorageReducer(\"user\", userProfileReducer),\n users: basicReducer([], 'FETCH_USERS'),\n documents: basicReducer([], 'FETCH_DOCUMENTS'),\n calendar: basicReducer([], \"FETCH_CALENDAR\"),\n pendingCalendar: basicReducer([], \"FETCH_CALENDAR_PENDING\")\n});","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\nimport {applyMiddleware, createStore} from \"redux\";\nimport { persistStore } from 'redux-persist';\nimport reducers from \"./reducers\";\nimport thunk from \"redux-thunk\";\nimport {Provider} from \"react-redux\";\nimport {PersistGate} from \"redux-persist/integration/react\";\n\nconst store = createStore(reducers, applyMiddleware(thunk));\nconst persist = persistStore(store);\n\nReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n\n","module.exports = __webpack_public_path__ + \"static/media/wh.5342fe1a.svg\";"],"sourceRoot":""}