{"version":3,"sources":["features/users/usersSlice.js","app/userManager.js","api/api.js","features/SnackAlerts/snackAlertsSlice.js","slicers/plateConfigsSlice.js","components/common/Loader.js","features/locations/locationsSlice.js","features/gateways/gatewaysSlice.js","features/selections/selectionsSlice.js","i18n.js","components/common/SuspenseFallback.js","app/rootReducer.js","app/store.js","app/theme.js","app/Routes.js","features/SnackAlerts/SnackFailed.js","features/SnackAlerts/SnackSuccess.js","features/SnackAlerts/SnackAlerts.js","app/App.js","serviceWorker.js","index.js"],"names":["usersSlice","createSlice","name","initialState","data","fetchingUsers","fetchingUserEdit","user","addResult","editResult","deletedUser","signingOut","reducers","storeUser","state","action","payload","storeUsers","setAddResult","setEditResult","setDeletedUser","unsetUsersData","setFetchingUsers","setFetchingUserEdit","setSigningOut","actions","fetchUsers","id","dispatch","a","get","response","map","u","locationId","console","log","fetchUser","addUser","values","post","email","result","status","showSuccessBarT","text","showFailedBarT","editUser","put","removeUser","userId","del","process","REACT_APP_USER_MANAGER_CLIENT_ID","REACT_APP_USER_MANAGER_SCOPE","REACT_APP_USER_MANAGER_AUTHORITY","userManagerConfig","client_id","redirect_uri","window","location","protocol","hostname","port","response_type","scope","authority","silent_redirect_uri","post_logout_redirect_uri","automaticSilentRenew","filterProtocolClaims","loadUserInfo","userStore","WebStorageStateStore","store","localStorage","userManager","createUserManager","instance","axios","create","baseURL","setToken","token","defaults","headers","common","Authorization","apiRequest","path","method","request","url","then","res","catch","err","message","Promise","reject","snackType","FAILED","SUCCESS","snackAlertsSlice","open","type","translate","props","showSuccessBar","showFailedBar","closeBar","plateConfigsSlice","fetching","plateAddStatus","plateRemoveStatus","redirect","deletedGroup","deleted","fetchStart","storePlateConfigs","filter","g","concat","storePlateConfig","plateConfigurationId","setPlateAddStatus","setPlateRemoveStatus","setDeletedGroup","setPlateConfigRedirect","redirectId","unsetGroupData","fetchPlateConfigs","fetchPlateConfig","addPlateConfig","config","isGroup","addPlateConfigSingle","editPlateConfig","addPlateToConfig","serial","deletePlateConfig","group","plate","removePlateFromConfig","serialNumber","setPlateConfigMonitoring","isMonitoring","initZeroing","Loader","size","fullHeight","container","justify","alignItems","style","height","color","locationsSlice","deleting","deleteStatus","newLocationId","fetchAllStart","fetchError","fetchAllSuccess","fetchAllError","fetchSingleStart","deletingLocation","setDeleteLocationStatus","storeLocation","l","storeNewLocation","resetNewLocationId","fetchSingleSuccess","fetchSingleError","fetchLocations","fetchLocation","addLocation","editLocation","newName","deleteLocation","gatewaysSlice","isFetching","deleteError","selectedGateway","fetchSuccess","deleteSuccess","storeSelectedGateway","fetchGateways","getState","selectedLocationId","selections","addGateway","editGateway","gatewayId","deleteGateway","selectionsSlice","selectedTab","storeSelectedTab","selectTab","value","resources","en","translation","i18n","use","initReactI18next","init","lng","fallbackLng","keySeparator","interpolation","escapeValue","SuspenseFallback","rootReducer","combineReducers","oidc","oidcReducer","locations","locationsReducer","gateways","gatewaysReducer","users","usersReducer","selectionsReducer","snackAlerts","reducer","plateConfigs","root","persistConfig","key","storage","whitelist","persistedReducer","persistReducer","middleware","getDefaultMiddleware","serializableCheck","configureStore","persistor","persistStore","loadUser","white","grey","darkGrey","mediumGrey","blue","theme","createMuiTheme","breakpoints","xs","sm","md","lg","xl","laptop","palette","primary","main","secondary","contrastText","black","disabled","skidDivider","light","lightGrey","background","default","success","darkText","red","orange","lighter","lightest","dark","error","warning","typography","fontFamily","join","overrides","MuiRadio","colorSecondary","h1","fontSize","lineHeight","fontWeight","down","h2","h3","opacity","wordSpacing","letterSpacing","h4","h5","h6","body1","body2","caption","overline","fontStyle","PrivateRoute","Component","component","authed","rest","render","to","pathname","from","Login","lazy","LoginCallback","Locations","ManageLocations","Gateways","Location","EditLocation","Plate","EditPlate","PlateGroup","EditPlateGroup","UserDetails","Profile","EditProfile","NotFound","Routes","fallback","exact","useStyles","makeStyles","alert","alertText","SnackFailed","classes","useDispatch","t","useTranslation","snackState","useSelector","handelClose","Snackbar","autoHideDuration","onClose","Alert","icon","className","severity","Typography","align","variant","SnackSuccess","SnackAlerts","App","access_token","useEffect","ThemeProvider","CssBaseline","Container","maxWidth","disableGutters","Boolean","match","warn","ReactDOM","StrictMode","loading","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.e93004c0.chunk.js","sourcesContent":["import { createSlice } from '@reduxjs/toolkit';\nimport { get, post, put, del } from '../../api/api';\nimport { showFailedBarT, showSuccessBarT } from '../SnackAlerts/snackAlertsSlice';\n\n\nexport const usersSlice = createSlice({\n name: 'users',\n initialState: {\n data: [],\n fetchingUsers: false,\n fetchingUserEdit: false,\n user: null,\n addResult: null,\n editResult: null,\n deletedUser: null,\n signingOut: false,\n },\n reducers: {\n storeUser: (state, action) => {\n state.user = action.payload;\n },\n storeUsers: (state, action) => {\n state.data = action.payload;\n state.fetchingUsers = false;\n },\n setAddResult: (state, action) => {\n state.addResult = action.payload;\n },\n setEditResult: (state, action) => {\n state.editResult = action.payload;\n },\n setDeletedUser: (state, action) => {\n state.deletedUser = action.payload;\n },\n unsetUsersData: (state) => {\n state.data = [];\n },\n setFetchingUsers: (state, action) => {\n state.fetchingUsers = action.payload;\n },\n setFetchingUserEdit: (state, action) => {\n state.fetchingUserEdit = action.payload;\n },\n setSigningOut: (state, action) => {\n state.signingOut = action.payload;\n },\n },\n});\n\nexport const {\n storeUsers,\n storeUser,\n setAddResult,\n setDeletedUser,\n unsetUsersData,\n setFetchingUsers,\n setSigningOut,\n setFetchingUserEdit,\n setEditResult\n} = usersSlice.actions;\n\nexport const fetchUsers = (id) => async (dispatch) => {\n try {\n dispatch(setFetchingUsers(true));\n const response = await get(`/Locations/${id}/Users`);\n dispatch(storeUsers(response.data.map((u) => ({ ...u, locationId: id }))));\n dispatch(setFetchingUsers(false));\n } catch (err) {\n dispatch(setFetchingUsers(false));\n console.log(err);\n }\n};\n\nexport const fetchUser = () => async (dispatch) => {\n try {\n const response = await get(`/Users`);\n dispatch(storeUser(response.data));\n } catch (err) {\n console.log(err);\n }\n};\n\nexport const addUser = (id, values) => async (dispatch) => {\n try {\n const result = await post(`/Locations/${id}/Users`, {\n email: values.email,\n });\n dispatch(setAddResult(result.status));\n dispatch(fetchUsers(id));\n const text = 'userAddSuccessful'\n dispatch(showSuccessBarT({ text }))\n } catch (err) {\n dispatch(setAddResult(err.status));\n if (err.status === 404) {\n const text = 'userNotFound'\n dispatch(showFailedBarT({ text }))\n } else {\n const text = 'userAlreadyAdded'\n dispatch(showFailedBarT({ text }))\n }\n console.log(err);\n }\n};\n\nexport const editUser = (locationId, values) => async (dispatch) => {\n try {\n dispatch(setFetchingUserEdit(true));\n await put('/Users', values);\n dispatch(setFetchingUserEdit(false));\n if (locationId !== null) {\n dispatch(fetchUsers(locationId));\n } else {\n dispatch(fetchUser());\n }\n } catch (err) {\n dispatch(setFetchingUserEdit(false));\n const text = 'editingProfileFailed'\n dispatch(showFailedBarT({ text }))\n console.log(err);\n throw err\n }\n};\n\nexport const removeUser = (locationId, userId) => async (dispatch) => {\n try {\n await del(`/Locations/${locationId}/Users/${userId}`);\n dispatch(setDeletedUser(userId));\n dispatch(fetchUsers(locationId));\n } catch (err) {\n const text = 'userDeletedFromLocation'\n dispatch(showFailedBarT({ text }))\n console.log(err);\n }\n};\n\nexport default usersSlice.reducer;\n","/* eslint-disable max-len */\n/* eslint-disable no-undef */\nimport { WebStorageStateStore } from 'oidc-client'\nimport { createUserManager } from 'redux-oidc'\n\nconst {\n REACT_APP_USER_MANAGER_CLIENT_ID,\n REACT_APP_USER_MANAGER_SCOPE,\n REACT_APP_USER_MANAGER_AUTHORITY,\n} = process.env;\n\nconst userManagerConfig = {\n client_id: REACT_APP_USER_MANAGER_CLIENT_ID,\n redirect_uri: `${window.location.protocol}//${window.location.hostname}${window.location.port ? `:${window.location.port}` : ''}/callback`,\n response_type: 'token',\n scope: REACT_APP_USER_MANAGER_SCOPE,\n authority: REACT_APP_USER_MANAGER_AUTHORITY,\n silent_redirect_uri: `${window.location.protocol}//${window.location.hostname}${window.location.port ? `:${window.location.port}` : ''}/silent_renew.html`,\n post_logout_redirect_uri: `${window.location.protocol}//${window.location.hostname}${window.location.port ? `:${window.location.port}` : ''}/login`,\n automaticSilentRenew: true,\n filterProtocolClaims: true,\n loadUserInfo: true,\n userStore: new WebStorageStateStore({ store: localStorage })\n}\n\nconst userManager = createUserManager(userManagerConfig)\n\nexport default userManager\n","import axios from 'axios'\nimport { shallowEqual, useSelector } from 'react-redux'\n\nconst {\n REACT_APP_API_URL,\n} = process.env;\n\nconst instance = axios.create({ baseURL: REACT_APP_API_URL });\n\nexport const getToken = async () => {\n const { access_token } = useSelector(state => state.user, shallowEqual)\n return access_token\n}\n\nexport const setToken = async (token) => {\n instance.defaults.headers.common.Authorization = `Bearer ${token}`\n}\n\nconst apiRequest = async (path, method, data = null) => {\n return instance.request({\n url: path,\n method,\n data\n })\n .then(res => res)\n .catch(err => {\n console.log('Request failed with error message:', err.message)\n return Promise.reject(err.response)\n })\n}\n\nexport const get = async (path) => apiRequest(path, 'GET')\n\nexport const post = async (path, data) => apiRequest(path, 'POST', data)\n\nexport const del = async (path, data = null) => apiRequest(path, 'DELETE', data)\n\nexport const put = async (path, data) => apiRequest(path, 'PUT', data)\n\nexport const patch = async (path, data) => apiRequest(path, 'PATCH', data)\n","import { createSlice } from '@reduxjs/toolkit';\n\nexport const snackType = {\n FAILED: 'failed',\n SUCCESS: 'success'\n}\n\nconst initialState = {\n open: false,\n type: null,\n text: null,\n translate: false,\n props: {}\n}\n\nexport const snackAlertsSlice = createSlice({\n name: 'snackAlerts',\n initialState,\n reducers: {\n showSuccessBar: (state, action) => {\n state.open = true;\n state.type = snackType.SUCCESS;\n state.text = action.payload;\n },\n showFailedBar: (state, action) => {\n state.open = true;\n state.type = snackType.FAILED;\n state.text = action.payload;\n },\n showSuccessBarT: (state, action) => {\n state.open = true;\n state.type = snackType.SUCCESS;\n state.text = action.payload.text;\n state.props = action.payload.props;\n state.translate = true;\n },\n showFailedBarT: (state, action) => {\n state.open = true;\n state.type = snackType.FAILED;\n state.text = action.payload.text;\n state.props = action.payload.props;\n state.translate = true;\n },\n closeBar: (state) => {\n state.open = false;\n state.type = null;\n state.text = null;\n state.translate = false;\n state.props = {}\n },\n },\n});\n\nexport const {\n showSuccessBar,\n showFailedBar,\n showSuccessBarT,\n showFailedBarT,\n closeBar,\n} = snackAlertsSlice.actions;\n","import { createSlice } from '@reduxjs/toolkit';\nimport { get, post, put, del } from '../api/api';\n\nimport {\n showFailedBarT,\n showSuccessBarT,\n} from '../features/SnackAlerts/snackAlertsSlice';\n\nexport const plateConfigsSlice = createSlice({\n name: 'plateConfigs',\n initialState: {\n data: [],\n fetching: false,\n // fetchError: null,\n locationId: null,\n plateAddStatus: null,\n plateRemoveStatus: null,\n redirect: {\n id: null,\n type: null,\n },\n deletedGroup: {\n deleted: false,\n name: '',\n },\n },\n reducers: {\n fetchStart: (state, action) => {\n state.fetching = true;\n state.locationId = action.payload;\n },\n storePlateConfigs(state, action) {\n state.fetching = false;\n state.data = state.data\n .filter((g) => g.locationId !== state.locationId)\n .concat(action.payload);\n },\n storePlateConfig(state, action) {\n state.fetching = false;\n state.data = state.data\n .filter(\n (g) => g.plateConfigurationId !== action.payload.plateConfigurationId\n )\n .concat(action.payload);\n },\n setPlateAddStatus(state, action) {\n state.plateAddStatus = action.payload;\n },\n setPlateRemoveStatus(state, action) {\n state.plateRemoveStatus = action.payload;\n },\n setDeletedGroup: (state, action) => {\n state.deletedGroup = action.payload;\n },\n setPlateConfigRedirect: (state, action) => {\n state.redirectId.id = action.payload.id;\n state.redirectId.type = action.payload.type;\n },\n },\n});\n\nexport const {\n fetchStart,\n storePlateConfigs,\n storePlateConfig,\n setPlateAddStatus,\n setPlateRemoveStatus,\n setDeletedGroup,\n unsetGroupData,\n setPlateConfigRedirect,\n} = plateConfigsSlice.actions;\n\nexport const fetchPlateConfigs = (id) => async (dispatch) => {\n try {\n dispatch(fetchStart(id));\n const response = await get(`/PlateConfigurations?locationId=${id}`);\n dispatch(storePlateConfigs(response.data));\n } catch (err) {\n console.log(err);\n }\n};\n\nexport const fetchPlateConfig = (id) => async (dispatch) => {\n try {\n dispatch(fetchStart(id));\n const response = await get(`/PlateConfigurations/${id}`);\n dispatch(storePlateConfig(response.data));\n } catch (err) {\n console.log(err);\n }\n};\n\nexport const addPlateConfig = (id, config) => async (dispatch) => {\n try {\n const result = await post(`/PlateConfigurations`, {\n ...config,\n locationId: id,\n isGroup: true,\n });\n dispatch(storePlateConfig(result.data));\n // Redirect to plate page?\n // dispatch(setPlateConfigRedirect(result.data.plateGroupId));\n } catch (err) {\n console.log(err);\n }\n};\nexport const addPlateConfigSingle = (id, config) => async (dispatch) => {\n try {\n const result = await post(`/PlateConfigurations`, {\n ...config,\n locationId: id,\n isGroup: false,\n });\n dispatch(storePlateConfig(result.data));\n // Redirect to plate page?\n // dispatch(setPlateConfigRedirect(result.data.plateGroupId));\n } catch (err) {\n const text = 'plateAddFailed';\n dispatch(showFailedBarT({ text }));\n console.log(err);\n }\n};\n\nexport const editPlateConfig = (id, values) => async (dispatch) => {\n try {\n const result = await put(`/PlateConfigurations/${id}`, values);\n dispatch(storePlateConfig(result.data));\n } catch (err) {\n console.log(err);\n }\n};\n\nexport const addPlateToConfig = (locationId, serial) => async (dispatch) => {\n try {\n await post(\n `/PlateConfigurations/${locationId}/Plates?serialNumber=${serial}`\n );\n dispatch(showSuccessBarT({ text: 'plateCreated' }));\n dispatch(fetchPlateConfig(locationId));\n } catch (err) {\n dispatch(showFailedBarT({ text: 'plateAddFailed' }));\n console.log(err);\n }\n};\n\nexport const deletePlateConfig =\n (id, locationId, name, isGroup) => async (dispatch) => {\n try {\n await del(`/PlateConfigurations/${id}`);\n dispatch(fetchPlateConfigs(locationId));\n\n if (isGroup) {\n const text = 'groupDeleted';\n const props = { group: name };\n dispatch(showSuccessBarT({ text, props }));\n } else {\n const text = 'plateDeleted';\n const props = { plate: name };\n dispatch(showSuccessBarT({ text, props }));\n }\n } catch (err) {\n if (isGroup) {\n dispatch(showFailedBarT({ text: 'groupDeleteFailed' }));\n } else {\n dispatch(showFailedBarT({ text: 'plateDeleteFailed' }));\n }\n console.log(err);\n throw err;\n }\n };\n\nexport const removePlateFromConfig = (id, values) => async (dispatch) => {\n try {\n await del(`/PlateConfigurations/${id}/Plates/${values.serialNumber}`);\n dispatch(showSuccessBarT({ text: 'plateRemoved' }));\n dispatch(fetchPlateConfig(id));\n } catch (err) {\n dispatch(showFailedBarT({ text: 'plateRemoveFailed' }));\n console.log(err);\n }\n};\n\nexport const setPlateConfigMonitoring =\n (id, isMonitoring) => async (dispatch) => {\n try {\n const result = await post(`/PlateConfigurations/${id}/SetMonitoring`, {\n plateConfigurationId: id,\n isMonitoring,\n });\n dispatch(storePlateConfig(result.data));\n } catch (err) {\n const text = 'monitoringFailed';\n dispatch(showFailedBarT({ text }));\n console.log(err);\n }\n };\n\nexport const initZeroing = (id) => async (dispatch) => {\n try {\n const result = await post(`/PlateConfigurations/${id}/ActivateZeroing`, {\n plateConfigurationId: id,\n });\n dispatch(storePlateConfig(result.data));\n } catch (err) {\n const text = 'zeroingFailed';\n dispatch(showFailedBarT({ text }));\n console.log(err);\n throw err;\n }\n};\n","import React from 'react';\n\nimport Grid from '@material-ui/core/Grid'\nimport { CircularProgress } from '@material-ui/core';\n\nfunction Loader({ size = 80, fullHeight = false }) {\n return (\n \n \n \n );\n}\n\nexport default Loader;\n","import { createSlice } from '@reduxjs/toolkit';\r\nimport { get, post, put, del } from '../../api/api';\r\n\r\nimport {\r\n showFailedBarT,\r\n showSuccessBarT,\r\n} from '../SnackAlerts/snackAlertsSlice';\r\n\r\nconst initialState = {\r\n data: [],\r\n locationId: null,\r\n fetching: false,\r\n deleting: false,\r\n deleteStatus: null,\r\n newLocationId: null,\r\n}\r\n\r\nexport const locationsSlice = createSlice({\r\n name: 'locations',\r\n initialState,\r\n reducers: {\r\n fetchAllStart: (state) => {\r\n state.fetching = true;\r\n state.fetchError = null;\r\n },\r\n fetchAllSuccess: (state, action) => {\r\n state.fetching = false;\r\n state.data = action.payload;\r\n },\r\n fetchAllError: (state, action) => {\r\n state.fetching = false;\r\n state.fetchError = action.payload;\r\n },\r\n fetchSingleStart: (state, action) => {\r\n state.fetching = true;\r\n state.fetchError = null;\r\n state.locationId = action.payload;\r\n },\r\n deletingLocation: (state, action) => {\r\n state.deleting = action.payload;\r\n },\r\n setDeleteLocationStatus: (state, action) => {\r\n state.deleteStatus = action.payload;\r\n },\r\n storeLocation: (state, action) => {\r\n state.data = state.data\r\n .filter((l) => l.locationId !== state.locationId)\r\n .concat(action.payload);\r\n },\r\n storeNewLocation: (state, action) => {\r\n state.data = state.data.concat(action.payload);\r\n state.newLocationId = action.payload?.locationId\r\n },\r\n resetNewLocationId: (state) => {\r\n state.newLocationId = null\r\n },\r\n },\r\n});\r\n\r\nexport const {\r\n fetchAllStart,\r\n fetchAllSuccess,\r\n fetchAllError,\r\n storeLocation,\r\n storeNewLocation,\r\n resetNewLocationId,\r\n fetchSingleStart,\r\n fetchSingleSuccess,\r\n fetchSingleError,\r\n deletingLocation,\r\n setDeleteLocationStatus\r\n} = locationsSlice.actions;\r\n\r\nexport const fetchLocations = () => async (dispatch) => {\r\n try {\r\n dispatch(fetchAllStart());\r\n const response = await get('/locations');\r\n dispatch(fetchAllSuccess(response.data));\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n};\r\n\r\nexport const fetchLocation = (id) => async (dispatch) => {\r\n try {\r\n dispatch(fetchSingleStart(id));\r\n const response = await get(`/locations/${id}`);\r\n dispatch(storeLocation(response.data));\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n};\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nexport const addLocation = (values) => async (dispatch) => {\r\n try {\r\n const response = await post('/locations', values);\r\n dispatch(storeNewLocation(response.data));\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n};\r\n\r\nexport const editLocation = (values) => async (dispatch) => {\r\n try {\r\n const { id, newName } = values;\r\n await put(`/locations/${id}`, { name: newName });\r\n dispatch(fetchLocations());\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n};\r\n\r\nexport const deleteLocation = (id) => async (dispatch) => {\r\n try {\r\n dispatch(deletingLocation(true));\r\n await del(`/locations/${id}`);\r\n dispatch(deletingLocation(false));\r\n const text = 'deletingLocationSuccess'\r\n dispatch(showSuccessBarT({ text }));\r\n dispatch(fetchLocations());\r\n } catch (err) {\r\n const text = 'deletingLocationFailed'\r\n dispatch(showFailedBarT({ text }))\r\n dispatch(deletingLocation(false));\r\n console.log(err);\r\n throw err\r\n }\r\n};\r\n\r\nexport default locationsSlice.reducer;\r\n","import { createSlice } from '@reduxjs/toolkit';\nimport { get, post, put, del } from '../../api/api';\n\nexport const gatewaysSlice = createSlice({\n name: 'gateways',\n initialState: {\n data: [],\n isFetching: false,\n fetchError: null,\n deleteError: null,\n selectedGateway: null,\n },\n reducers: {\n fetchStart: (state) => {\n state.isFetching = true;\n state.fetchError = null;\n },\n fetchSuccess: (state, action) => {\n state.isFetching = false;\n state.data = action.payload;\n },\n fetchError: (state, action) => {\n state.isFetching = false;\n state.fetchError = action.payload;\n },\n deleteSuccess: (state) => {\n state.deleteError = null;\n },\n deleteError: (state, action) => {\n state.deleteError = action.payload;\n },\n storeSelectedGateway: (state, action) => {\n state.selectedGateway = action.payload;\n },\n },\n});\n\nexport const {\n fetchStart,\n fetchSuccess,\n fetchError,\n deleteSuccess,\n deleteError,\n storeSelectedGateway,\n} = gatewaysSlice.actions;\n\nexport const fetchGateways = () => async (dispatch, getState) => {\n try {\n const { selectedLocationId } = getState().selections;\n dispatch(fetchStart());\n const response = await get(`/gateways/location/${selectedLocationId}`);\n dispatch(fetchSuccess(response.data));\n } catch (err) {\n dispatch(fetchError(err));\n console.log(err);\n }\n};\n\nexport const addGateway = (values) => async (dispatch, getState) => {\n try {\n const { selectedLocationId } = getState().selections;\n const response = await post('/gateways', { ...values, locationId: selectedLocationId });\n dispatch(storeSelectedGateway(response.data));\n dispatch(fetchGateways());\n } catch (err) {\n console.log(err);\n }\n};\n\nexport const editGateway = (values) => async (dispatch) => {\n try {\n const gatewayId = values.selectedGateway.gatewayId;\n await put(`/gateways/${gatewayId}`, { name: values.newName });\n dispatch(fetchGateways());\n } catch (err) {\n console.log(err);\n }\n};\n\nexport const deleteGateway = (values) => async (dispatch) => {\n try {\n const gatewayId = values.selectedGateway.gatewayId;\n await del(`/gateways/${gatewayId}`);\n dispatch(fetchGateways());\n dispatch(deleteSuccess());\n } catch (err) {\n dispatch(deleteError(err));\n console.log(err);\n }\n};\n\nexport default gatewaysSlice.reducer;\n","import { createSlice } from '@reduxjs/toolkit';\n\nexport const selectionsSlice = createSlice({\n name: 'selections',\n initialState: {\n selectedTab: 0, // Plates = 0. If Gateways view is added back make this 1.\n },\n reducers: {\n storeSelectedTab(state, action) {\n state.selectedTab = action.payload;\n },\n },\n});\n\nexport const {\n storeSelectedTab,\n} = selectionsSlice.actions;\n\nexport const selectTab = (value) => (dispatch) => {\n dispatch(storeSelectedTab(value));\n};\n\nexport default selectionsSlice.reducer;\n","import i18n from 'i18next'\nimport { initReactI18next } from 'react-i18next'\n\nimport en from './locales/en'\n\nconst resources = {\n en: {\n translation: en\n }\n}\n\ni18n\n .use(initReactI18next)\n .init({\n resources,\n lng: 'en',\n fallbackLng: 'en',\n keySeparator: false,\n interpolation: {\n escapeValue: false\n }\n })\n\nexport default i18n\n","import React from 'react'\nimport Loader from './Loader';\n\nconst SuspenseFallback = () => (\n \n)\n\nexport default SuspenseFallback\n","import { combineReducers } from '@reduxjs/toolkit';\nimport { reducer as oidcReducer } from 'redux-oidc';\n\nimport locationsReducer from '../features/locations/locationsSlice';\nimport gatewaysReducer from '../features/gateways/gatewaysSlice';\nimport usersReducer from '../features/users/usersSlice';\nimport selectionsReducer from '../features/selections/selectionsSlice';\nimport { snackAlertsSlice } from '../features/SnackAlerts/snackAlertsSlice';\nimport { plateConfigsSlice } from '../slicers/plateConfigsSlice';\n\nconst rootReducer = () =>\n combineReducers({\n oidc: oidcReducer,\n locations: locationsReducer,\n gateways: gatewaysReducer,\n users: usersReducer,\n selections: selectionsReducer,\n snackAlerts: snackAlertsSlice.reducer,\n plateConfigs: plateConfigsSlice.reducer,\n });\n\nexport default rootReducer;\n","import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit';\r\nimport { persistStore, persistReducer } from 'redux-persist';\r\nimport storage from 'redux-persist/lib/storage';\r\nimport { loadUser } from 'redux-oidc';\r\n\r\nimport rootReducer from './rootReducer';\r\nimport userManager from './userManager';\r\n\r\nconst root = rootReducer();\r\n\r\nconst persistConfig = {\r\n key: 'root',\r\n storage: storage,\r\n whitelist: ['oidc'],\r\n};\r\n\r\nconst persistedReducer = persistReducer(persistConfig, root);\r\n\r\nconst defaultMiddlewareConfig = {\r\n serializableCheck: false,\r\n};\r\n\r\nconst middleware = [...getDefaultMiddleware(defaultMiddlewareConfig)];\r\n\r\nconst store = configureStore({\r\n reducer: persistedReducer,\r\n middleware,\r\n});\r\n\r\nexport const persistor = persistStore(store);\r\n\r\nloadUser(store, userManager);\r\n\r\nexport default store;\r\n","/* eslint-disable quote-props */\nimport { unstable_createMuiStrictModeTheme as createMuiTheme } from '@material-ui/core';\n\nconst primaryColor = '#2B255C';\nconst secondaryColor = '#000';\nconst black = '#000';\nconst white = '#FFF';\nconst grey = '#F7F7F7';\nconst darkGrey = '#757575';\nconst lightGrey = '#9E9E9E';\nconst mediumGrey = '#C2C2C2';\nconst green = '#4CAF50';\nconst darkGreen = '#1E4620'\nconst red = '#F05F10';\nconst darkRed = '#621B16';\nconst orange = '#F25930';\nconst blue = '#103551';\n\nconst theme = createMuiTheme({\n breakpoints: {\n values: {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1232,\n xl: 1920,\n laptop: 1024,\n },\n },\n palette: {\n primary: {\n main: primaryColor,\n },\n secondary: {\n main: secondaryColor,\n contrastText: '#ffcc00',\n },\n black: {\n main: black,\n secondary: '#1F1F1F',\n disabled: 'rgb(0, 0, 0, 0.38)',\n },\n white: {\n main: white,\n },\n grey: {\n main: grey,\n secondary: '#616161',\n skidDivider: '#E0E0E0',\n light: '#E6E6E6',\n },\n darkGrey: {\n main: darkGrey,\n },\n lightGrey: {\n main: lightGrey,\n secondary: '#BDBDBD',\n },\n mediumGrey: {\n main: mediumGrey,\n },\n background: {\n grey: grey,\n mediumGrey: mediumGrey,\n white: white,\n default: '#CDD5DC',\n },\n success: {\n main: green,\n darkText: darkGreen,\n text: '#1E4620',\n background: '#EDF7ED'\n },\n red: {\n main: red,\n },\n orange: {\n main: orange,\n },\n blue: {\n main: blue,\n light: '#9BABB9',\n lighter: '#CDD5DC',\n lightest: '#EDF1F4',\n dark: '#7C8C9A',\n },\n error: {\n main: '#F05F10',\n light: '#F88078',\n dark: '#E31B0C',\n },\n warning: {\n main: '#FF9800',\n text: '#621B16',\n darkText: darkRed,\n background: '#FEECEB'\n },\n },\n typography: {\n fontFamily: [\n '-apple-system',\n 'BlinkMacSystemFont',\n '\"Segoe UI\"',\n 'Montserrat',\n '\"Helvetica Neue\"',\n 'Arial',\n 'sans-serif',\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n '\"Segoe UI Symbol\"',\n ].join(','),\n },\n overrides: {\n MuiRadio: {\n root: {\n color: blue,\n },\n colorSecondary: {\n '&$checked': {\n color: blue,\n },\n },\n },\n },\n});\n\ntheme.typography.h1 = {\n fontFamily: 'Montserrat',\n fontSize: 36,\n lineHeight: '42px',\n color: blue,\n fontWeight: 600,\n [theme.breakpoints.down('xs')]: {\n fontSize: 24,\n lineHeight: '30px',\n },\n};\n\ntheme.typography.h2 = {\n fontFamily: 'Montserrat',\n fontSize: '28px',\n lineHeight: '32px',\n fontWeight: 500,\n color: blue,\n [theme.breakpoints.down('xs')]: {\n fontSize: '22px',\n lineHeight: '26px',\n },\n};\n\ntheme.typography.h3 = {\n fontFamily: 'Montserrat',\n fontSize: '20px',\n fontWeight: 600,\n color: '#757575',\n lineHeight: '22px',\n opacity: '0.9',\n wordSpacing: 1,\n letterSpacing: 1,\n [theme.breakpoints.down('xs')]: {\n fontSize: '16px',\n },\n};\n\ntheme.typography.h4 = {\n fontFamily: 'Montserrat',\n fontSize: 15,\n color: blue,\n fontWeight: 400,\n lineHeight: '14px',\n [theme.breakpoints.down('xs')]: {\n fontSize: 13,\n lineHeight: '12px',\n },\n};\n\ntheme.typography.h5 = {\n fontFamily: 'Montserrat',\n fontSize: 14,\n color: blue,\n fontWeight: 600,\n lineHeight: '16px',\n [theme.breakpoints.down('xs')]: {\n fontSize: 12,\n lineHeight: '14px',\n },\n};\n\ntheme.typography.h6 = {\n fontFamily: 'Montserrat',\n fontSize: 16,\n color: blue,\n fontWeight: 600,\n lineHeight: '24px',\n [theme.breakpoints.down('xs')]: {\n fontSize: 14,\n },\n};\n\ntheme.typography.body1 = {\n fontFamily: 'Montserrat',\n fontSize: 20,\n color: blue,\n fontWeight: 700,\n lineHeight: '20px',\n wordSpacing: 2,\n [theme.breakpoints.down('xs')]: {\n fontSize: 18,\n lineHeight: '18px',\n },\n};\n\ntheme.typography.body2 = {\n fontFamily: 'Montserrat',\n fontSize: 20,\n color: blue,\n fontWeight: 500,\n lineHeight: '20px',\n wordSpacing: 2,\n [theme.breakpoints.down('xs')]: {\n fontSize: 16,\n lineHeight: '18px',\n },\n};\n\ntheme.typography.caption = {\n fontFamily: 'Montserrat',\n fontSize: 12,\n color: darkGrey,\n fontWeight: 500,\n lineHeight: '14px',\n wordSpacing: 2,\n [theme.breakpoints.down('xs')]: {\n fontSize: 11,\n lineHeight: '18px',\n },\n};\n\ntheme.typography.overline = {\n fontFamily: 'Montserrat',\n fontStyle: 'normal',\n fontSize: '12px',\n fontWeight: 600,\n lineHeight: '15px',\n [theme.breakpoints.down('xs')]: {\n fontSize: 11,\n lineHeight: '18px',\n },\n};\n\nexport default theme;\n","import React, { lazy, Suspense } from 'react';\nimport { Route, Redirect, Switch } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nimport SuspenseFallback from '../components/common/SuspenseFallback';\n\nfunction PrivateRoute({ component: Component, authed, ...rest }) {\n return (\n \n authed === true ? (\n \n ) : (\n \n )\n }\n />\n );\n}\n\nconst Login = lazy(() => import('../features/login/Login'));\nconst LoginCallback = lazy(() => import('../features/login/LoginCallback'));\nconst Locations = lazy(() => import('../features/locations/Locations'));\nconst ManageLocations = lazy(() =>\n import('../features/locations/ManageLocations')\n);\nconst Gateways = lazy(() => import('../features/gateways/Gateways'));\nconst Location = lazy(() => import('../features/location/Location'));\nconst EditLocation = lazy(() => import('../features/location/EditLocation'));\nconst Plate = lazy(() => import('../features/plate/Plate'));\nconst EditPlate = lazy(() => import('../features/plate/EditPlate'));\nconst PlateGroup = lazy(() => import('../features/group/PlateGroup'));\nconst EditPlateGroup = lazy(() => import('../features/group/EditPlateGroup'));\nconst UserDetails = lazy(() => import('../features/users/UserDetails'));\nconst Profile = lazy(() => import('../features/profile/Profile'));\nconst EditProfile = lazy(() => import('../features/profile/EditProfile'));\nconst NotFound = lazy(() => import('../features/navigation/NotFound'));\n\nconst Routes = (props) => {\n const { authed } = props;\n\n return (\n }>\n \n }\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nRoutes.propTypes = {\n component: PropTypes.element,\n};\n\nexport default Routes;\n","import React from 'react'\n\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport Alert from '@material-ui/lab/Alert';\n\nimport { snackType, closeBar } from './snackAlertsSlice'\n\nconst useStyles = makeStyles((theme) => ({\n alert: {\n // backgroundColor: theme.palette.black.secondary,\n color: theme.palette.warning.darkText,\n },\n alertText: {\n // padding: 10,\n color: theme.palette.warning.darkText,\n },\n\n}));\n\nexport const SnackFailed = () => {\n\n const classes = useStyles()\n const dispatch = useDispatch();\n const { t } = useTranslation();\n\n const snackState = useSelector((state) => state.snackAlerts)\n\n const handelClose = () => {\n dispatch(closeBar())\n }\n\n const open = snackState?.open && snackState?.type === snackType.FAILED\n const text = snackState.translate ? t(snackState?.text, snackState.props) : snackState?.text\n\n return (\n \n \n \n {text}\n \n \n \n )\n}\n\n","import React from 'react'\n\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport Alert from '@material-ui/lab/Alert';\n\nimport { snackType, closeBar } from './snackAlertsSlice'\n\nconst useStyles = makeStyles((theme) => ({\n alert: {\n // backgroundColor: theme.palette.black.secondary,\n color: theme.palette.success.darkText,\n },\n alertText: {\n // padding: 10,\n color: theme.palette.success.darkText,\n },\n}));\n\nexport const SnackSuccess = () => {\n\n const classes = useStyles()\n const dispatch = useDispatch();\n const { t } = useTranslation();\n\n const snackState = useSelector((state) => state.snackAlerts)\n\n const handelClose = () => {\n dispatch(closeBar())\n }\n\n const open = snackState?.open && snackState?.type === snackType.SUCCESS\n const text = snackState.translate ? t(snackState?.text, snackState.props) : snackState?.text\n\n return (\n \n \n \n {text}\n \n \n \n )\n}\n","import React from 'react';\n\nimport { SnackFailed } from './SnackFailed'\nimport { SnackSuccess } from './SnackSuccess'\n\n\nexport const SnackAlerts = () => {\n return (\n <>\n \n \n \n );\n}\n\n","import React from 'react';\r\nimport { useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { BrowserRouter as Router } from 'react-router-dom';\r\n\r\nimport { ThemeProvider } from '@material-ui/core';\r\nimport CssBaseline from '@material-ui/core/CssBaseline';\r\nimport Container from '@material-ui/core/Container';\r\n\r\nimport theme from './theme';\r\nimport Routes from './Routes';\r\nimport { setToken } from '../api/api';\r\nimport { fetchUser } from '../features/users/usersSlice';\r\n\r\nimport { SnackAlerts } from '../features/SnackAlerts/SnackAlerts'\r\n\r\nfunction App() {\r\n const dispatch = useDispatch();\r\n const authed = useSelector((state) => state.oidc.user) !== null;\r\n const token = useSelector(\r\n (state) => state.oidc.user && state.oidc.user.access_token\r\n );\r\n\r\n useEffect(() => {\r\n if (token) {\r\n setToken(token);\r\n dispatch(fetchUser());\r\n }\r\n }, [token]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","/* eslint-disable eqeqeq */\r\n/* eslint-disable no-eq-null */\r\n/* eslint-disable no-use-before-define */\r\n// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n)\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href)\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config)\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n )\r\n })\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config)\r\n }\r\n })\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing\r\n if (installingWorker == null) {\r\n return\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n )\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration)\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.')\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error)\r\n })\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' }\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type')\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload()\r\n })\r\n })\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config)\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n )\r\n })\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister()\r\n })\r\n }\r\n}\r\n","import 'core-js/stable'\r\n\r\nimport React from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport { Provider } from 'react-redux'\r\nimport { PersistGate } from 'redux-persist/integration/react'\r\nimport { OidcProvider } from 'redux-oidc'\r\nimport SuspenseFallback from './components/common/SuspenseFallback';\r\n\r\nimport './i18n'\r\nimport './index.css'\r\n\r\nimport store, { persistor } from './app/store'\r\nimport App from './app/App'\r\n\r\nimport userManager from './app/userManager'\r\nimport * as serviceWorker from './serviceWorker'\r\n\r\n// TODO FIX WARNINGS\r\nconsole.warn = () => {}\r\n\r\nconst render = Component => {\r\n ReactDOM.render(\r\n \r\n \r\n } persistor={persistor}>\r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n )\r\n}\r\n\r\nrender(App)\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister()\r\n"],"sourceRoot":""}