{"version":3,"sources":["hooks/use-alert-info.js","components/alert/snackbar-item.js","contexts/alert/alert-context.js","hooks/use-alert.js","components/alert/index.js","conventions/constants.js","services/log-out.js","contexts/auth-context.js","services/use-api.js","hooks/use-login-menu.js","components/main/menu/login-menu.js","hooks/use-password-change-menu.js","components/main/menu/password-change-menu.js","components/main/menu/logout-confirmation.js","hooks/use-personal-menu-content.js","contexts/local-context.js","hooks/with-auth.js","components/main/menu/personal-menu-content.js","components/main/menu/personal-menu.js","components/main/header.js","components/main/footer-anchor.js","components/main/footer.js","components/main/table/delete-button.js","components/main/table/lookup-elements.js","components/main/table/common-row.js","components/main/table/expandable-row.js","components/main/table/row.js","components/main/table/index.js","contexts/file-upload-context.js","services/file-download.js","hooks/use-download-control.js","components/main/management/download-control.js","hooks/use-upload-control.js","components/main/management/upload-control.js","components/main/management/file-management.js","components/main/index-render-props.js","components/main/index.js","routes/index.js","contexts/alert/alert-reducer.js","contexts/alert/alert-state.js","App.js","serviceWorker.js","reportWebVitals.js","index.js"],"names":["useAlertInfo","colors","levels","id","name","icons","success","icon","filled","SuccessIcon","outlined","SuccessIconOutlined","color","critical","CriticalError","CriticalErrorIconOutlined","error","ErrorIcon","ErrorIconOutlined","warning","WarningIcon","WarningIconOutlined","info","InfoIcon","InfoIconOutlined","getTypeId","index","getTypeName","getIcon","filedOrOutlined","getIconColor","TransitionRight","props","Slide","direction","SnackbarItem","alert","msg","type","duration","open","handleClose","handleExited","classesMaterial","makeStyles","backgroundColor","Icon","Snackbar","ContentProps","classes","root","anchorOrigin","vertical","horizontal","TransitionComponent","disableWindowBlurListener","autoHideDuration","onClose","TransitionProps","onExited","message","css","action","IconButton","key","onClick","AlertContext","createContext","useAlert","useContext","removeAlert","useState","setOpen","snackPack","setSnackPack","alertData","setAlertData","useEffect","length","shift","event","reason","Alert","ContextKeys","StorageKeys","Colors","PwdRegex","LogOut","execute","sid","axios","create","headers","post","process","Promise","resolve","AuthContext","AuthProvider","children","sidInStorage","localStorage","getItem","setSid","logoutUser","onSidChange","useCallback","console","log","setItem","Provider","value","useApi","setAlert","cancelSource","CancelToken","source","isCanceled","isCancel","api","cancelToken","token","getErrorMessage","errorData","response","data","title","Array","isArray","join","getErrorMessageFromData","statusText","getData","resource","get","postData","payload","showResponse","status","window","clear","location","reload","useLoginMenu","password","setPassword","canLogin","setCanLogin","isValidPwd","pwd","test","authenticate","a","preventDefault","Password","then","onAuthenticate","catch","ex","updatePassword","target","LoginMenu","React","forwardRef","ref","MenuItem","noValidate","autoComplete","TextField","label","variant","required","onChange","Button","disabled","usePasswordChangeMenu","currentPassword","setCurrentPassword","newPassword","setNewPassword","repeatedPassword","setRepeatedPassword","isValidCurrentPassword","setIsValidCurrentPassword","isValidNewPassword","setIsValidNewPassword","isValidRepeatedPassword","setIsValidRepeatedPassword","canChange","setCanChange","changePassword","CurrentPassword","NewPassword","RepeatedPassword","setAnchorEl","changeCurrentPassword","changeNewPassword","changeRepeatedPassword","stopPropagationForTab","stopPropagation","PasswordChangeMenu","onSubmit","e","onKeyDown","LogoutConfirmation","close","Dialog","DialogTitle","DialogActions","disableRipple","autoFocus","usePersonalMenuContent","isAuthenticated","anchorEl","isMenuOpen","Boolean","openDialog","setOpenDialog","timer","useRef","checkIsAuthenticated","clearTimeout","current","setTimeout","minTimeoutCycle","handleAuthenticateResult","handleProfileMenuOpen","currentTarget","handleMenuClose","showLogoutConfirmation","LocalContext","LocalProvider","isLocal","setIsLocal","getIsLocal","withAuth","Component","edge","AccountCircle","Menu","Header","AppBar","position","Toolbar","src","FooterAnchor","href","alt","rel","Footer","className","DeleteButton","row","removeRow","serialNumber","titleAccess","LookupElements","remoteTachoDownload","map","x","i","link","tooltip","text","CommonRow","TableRow","Hidden","xlUp","TableCell","size","component","scope","smDown","align","version","lgDown","oem","mdDown","voltage","boudrate","xsDown","useRowStyles","cellLeft","textAlign","ExpandableRow","style","paddingBottom","paddingTop","colSpan","Collapse","in","timeout","unmountOnExit","Box","margin","Table","TableBody","mdUp","lgUp","smUp","Row","Fragment","LookupTable","rows","removeAllRows","TableContainer","Paper","TableHead","FileUploadContext","FileUploadProvider","fileUploaded","setFileUploaded","FileDownload","download","url","fileName","method","responseType","document","createElement","URL","createObjectURL","Blob","setAttribute","body","appendChild","click","useDownloadControl","fileList","setFileList","selectedFile","setSelectedFile","getList","fileUrl","finally","anchorRef","selectedIndex","setSelectedIndex","handleClick","handleMenuItemClick","contains","handleToggle","prevOpen","ariaControls","undefined","ariaExpanded","Grid","container","alignItems","item","xs","ButtonGroup","Popper","role","transition","disablePortal","placement","Grow","transformOrigin","ClickAwayListener","onClickAway","MenuList","option","selected","useUploadControl","loading","setLoading","browseFile","getElementById","onBrowseFile","element","files","file","formData","FormData","append","errors","entries","progress","CircularProgress","accept","hidden","border","IndexRenderProps","setRows","setSerialNumber","isFilterValid","setIsFilterValid","find","number","forEach","entry","newSerialNumbers","filter","includes","concat","onFilterChange","sn","rowsLeft","Main","footer","useMemo","Routes","exact","path","to","AlertReducer","state","AlertState","useReducer","dispatch","App","isLocalhost","hostname","match","registerValidSW","swUrl","config","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","onSuccess","workerOnStateChange","checkValidServiceWorker","fetch","contentType","indexOf","ready","unregister","handleValidationResponse","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","publicUrl","origin","addEventListener","addLoadEventListener"],"mappings":"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","file":"static/js/main.557cf6e0.chunk.js","sourcesContent":["\r\n\r\nimport SuccessIcon from \"@material-ui/icons/CheckCircle\";\r\nimport SuccessIconOutlined from \"@material-ui/icons/CheckCircleOutlineOutlined\";\r\nimport CriticalError from \"@material-ui/icons/Cancel\";\r\nimport CriticalErrorIconOutlined from \"@material-ui/icons/CancelOutlined\";\r\nimport ErrorIcon from \"@material-ui/icons/Error\";\r\nimport ErrorIconOutlined from \"@material-ui/icons/ErrorOutlineOutlined\";\r\nimport WarningIcon from \"@material-ui/icons/Warning\";\r\nimport WarningIconOutlined from \"@material-ui/icons/ReportProblemOutlined\";\r\nimport InfoIcon from \"@material-ui/icons/Info\";\r\nimport InfoIconOutlined from \"@material-ui/icons/InfoOutlined\";\r\n\r\nconst useAlertInfo = () => {\r\n const colors = {\r\n success: \"#007E33\",\r\n error: \"#CC0000\",\r\n warning: \"#FFA000\",\r\n info: \"#2196f3\"\r\n };\r\n\r\n const levels = {\r\n 0: { id: \"critical\", name: \"Critical error\" },\r\n 1: { id: \"error\", name: \"Error\" },\r\n 2: { id: \"warning\", name: \"Warning\" },\r\n 3: { id: \"info\", name: \"Information\" },\r\n };\r\n\r\n const icons = {\r\n success: {\r\n icon: { filled: SuccessIcon, outlined: SuccessIconOutlined },\r\n color: colors.success,\r\n },\r\n critical: {\r\n icon: {\r\n filled: CriticalError,\r\n outlined: CriticalErrorIconOutlined,\r\n },\r\n color: colors.error,\r\n },\r\n error: {\r\n icon: { filled: ErrorIcon, outlined: ErrorIconOutlined },\r\n color: colors.error,\r\n },\r\n warning: {\r\n icon: { filled: WarningIcon, outlined: WarningIconOutlined },\r\n color: colors.warning,\r\n },\r\n info: {\r\n icon: { filled: InfoIcon, outlined: InfoIconOutlined },\r\n color: colors.info,\r\n },\r\n };\r\n\r\n const getTypeId = index => levels[index].id;\r\n\r\n const getTypeName = index => levels[index].name;\r\n\r\n const getIcon = (name, filled = false) => {\r\n const filedOrOutlined = filled ? \"filled\" : \"outlined\";\r\n return icons[name] ? icons[name].icon[filedOrOutlined] : icons.info.icon[filedOrOutlined];\r\n };\r\n \r\n const getIconColor = name => icons[name].color;\r\n\r\n return { getTypeId, getTypeName, getIcon, getIconColor };\r\n};\r\n\r\nexport default useAlertInfo;\r\n","/** @jsxRuntime classic */\r\n/** @jsx jsx */\r\nimport { css, jsx } from \"@emotion/react\";\r\n\r\nimport PropTypes from \"prop-types\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport useAlertInfo from \"../../hooks/use-alert-info\";\r\nimport Snackbar from \"@material-ui/core/Snackbar\";\r\nimport Slide from \"@material-ui/core/Slide\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\n\r\nconst TransitionRight = props => ;\r\n\r\nconst SnackbarItem = ({\r\n alert: { msg, type, duration },\r\n open,\r\n handleClose,\r\n handleExited,\r\n}) => {\r\n const { getIcon, getIconColor } = useAlertInfo();\r\n\r\n const classesMaterial = makeStyles(() => ({\r\n success: { backgroundColor: getIconColor(\"success\"), },\r\n critical: { backgroundColor: getIconColor(\"error\"), },\r\n error: { backgroundColor: getIconColor(\"error\"), },\r\n warning: { backgroundColor: getIconColor(\"warning\"), },\r\n info: { backgroundColor: getIconColor(\"info\"), },\r\n }))();\r\n\r\n const Icon = getIcon(type, true);\r\n\r\n return (\r\n \r\n \r\n {msg}\r\n \r\n }\r\n action={[\r\n \r\n \r\n ,\r\n ]}\r\n />\r\n );\r\n};\r\n\r\nSnackbarItem.propTypes = {\r\n alert: PropTypes.object.isRequired,\r\n open: PropTypes.bool.isRequired,\r\n handleClose: PropTypes.func.isRequired,\r\n handleExited: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default SnackbarItem;\r\n","import { createContext } from \"react\";\r\n\r\nconst AlertContext = createContext();\r\n\r\nexport default AlertContext;\r\n","import { useContext, useState, useEffect } from \"react\";\r\nimport AlertContext from \"../contexts/alert/alert-context\";\r\n\r\nconst useAlert = () => {\r\n const { alert, removeAlert } = useContext(AlertContext);\r\n const [open, setOpen] = useState(false);\r\n const [snackPack, setSnackPack] = useState([]);\r\n const [alertData, setAlertData] = useState(alert || { msg: null, type: null, duration: 6000 });\r\n\r\n useEffect(() => {\r\n alert && alert.msg !== null\r\n ? setSnackPack([...snackPack, alert])\r\n : setOpen(false);\r\n // eslint-disable-next-line\r\n }, [alert]);\r\n\r\n useEffect(() => {\r\n if (snackPack.length > 0) {\r\n if (!alert || !alertData.msg) {\r\n setAlertData(snackPack.shift());\r\n setOpen(true);\r\n } else if (alertData.msg && open) {\r\n setOpen(false);\r\n }\r\n }\r\n // eslint-disable-next-line\r\n }, [snackPack, alertData, open]);\r\n\r\n const handleClose = (event, reason) => {\r\n if (reason === \"clickaway\") return;\r\n\r\n removeAlert();\r\n };\r\n\r\n const handleExited = () => setAlertData({ type: null, msg: null, duration: 6000 });\r\n\r\n return ({\r\n alertData,\r\n open,\r\n handleClose,\r\n handleExited\r\n });\r\n};\r\n\r\nexport default useAlert;","import React from \"react\";\r\nimport SnackbarItem from \"./snackbar-item\";\r\nimport useAlert from \"../../hooks/use-alert\";\r\n\r\nconst Alert = () => {\r\n\r\n const { alertData,\r\n open,\r\n handleClose,\r\n handleExited } = useAlert();\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Alert;\r\n","export const ContextKeys = {\r\n SetAlert: \"SetAlert\",\r\n RemoveAlert: \"RemoveAlert\", \r\n}\r\nexport const StorageKeys = {\r\n Sid: \"SID\"\r\n}\r\nexport const Colors = {\r\n TeltonikaBlue: \"#0054A6\",\r\n GrayBorder: \"#e0e4ea\",\r\n GrayText: \"#808080\",\r\n SwampColor: \"#3d4c61\",\r\n White: \"rgb(255,255,255)\",\r\n Smooth: \"rgb(73, 73, 73)\",\r\n Silver: \"#CCCCCC\"\r\n};\r\n\r\nexport const PwdRegex=/^.*[^\\s]{6,30}$/;\r\n","import axios from \"axios\";\r\n\r\nconst LogOut = () => {\r\n\r\n const execute = (sid) => sid ?\r\n axios.create({ headers: { \"SID\": sid } })\r\n .post(`${process.env.PUBLIC_URL}/logout`) :\r\n Promise.resolve();\r\n\r\n return {\r\n execute,\r\n };\r\n};\r\n\r\nexport default LogOut;\r\n","import React, { createContext, useState, useEffect, useCallback } from \"react\";\r\nimport { StorageKeys } from \"../conventions/constants\";\r\nimport LogOut from \"../services/log-out\";\r\n\r\nexport const AuthContext = createContext();\r\n\r\nconst AuthProvider = ({ children }) => {\r\n const sidInStorage = localStorage.getItem(StorageKeys.Sid);\r\n const [sid, setSid] = useState(sidInStorage && sidInStorage !== \"false\" ? sidInStorage : false);\r\n const { execute: logoutUser } = LogOut();\r\n\r\n const onSidChange = useCallback(() => {\r\n console.log(`AuthProvider.onSidChange:${sid}`);\r\n localStorage.setItem(StorageKeys.Sid, sid);\r\n if (!sid) {\r\n logoutUser(sid);\r\n }\r\n }, [logoutUser, sid]);\r\n\r\n useEffect(() => onSidChange(), [onSidChange, sid]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport { AuthProvider };\r\n\r\n","import { useContext } from \"react\";\r\nimport axios from \"axios\";\r\nimport AlertContext from \"../contexts/alert/alert-context\";\r\nimport { StorageKeys } from \"../conventions/constants\";\r\nimport { AuthContext } from \"../contexts/auth-context\";\r\n\r\n\r\nconst useApi = () => {\r\n const { setAlert } = useContext(AlertContext);\r\n const { sid } = useContext(AuthContext);\r\n\r\n const CancelToken = axios.CancelToken;\r\n const cancelSource = CancelToken.source();\r\n const isCanceled = axios.isCancel;\r\n\r\n const getSid = () => {\r\n return sid !== \"false\" ? (sid || localStorage.getItem(StorageKeys.Sid)) : sid;\r\n };\r\n\r\n const api = axios.create({\r\n cancelToken: cancelSource.token,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"SID\": getSid()\r\n },\r\n });\r\n\r\n const getData = resource => {\r\n console.log(`API.getData: ${resource}`);\r\n return api.get(resource);\r\n };\r\n\r\n const postData = (resource, payload) => {\r\n console.log(`API.postData: ${resource}`);\r\n return api.post(resource, payload);\r\n };\r\n\r\n const getErrorMessageFromData = (error, errorData) => Array.isArray(errorData) ? errorData.join(\". \") : (error.message || errorData);\r\n\r\n\r\n const getErrorMessage = (error) => {\r\n const errorData = error.response && error.response.data;\r\n\r\n if (!errorData) {\r\n return error.response ? error.response.statusText : error.message;\r\n }\r\n\r\n if (errorData.title) {\r\n return errorData.title;\r\n }\r\n\r\n return getErrorMessageFromData(error, errorData);\r\n };\r\n\r\n const showResponse = error => {\r\n console.log(`API.showResponse()`);\r\n\r\n const status = error.response ? error.response.status : error.status;\r\n\r\n if (status === 401) {\r\n setAlert(\"Unauthorized connection to API\", \"error\", 6000);\r\n window.localStorage.clear();\r\n return window.location.reload();\r\n }\r\n\r\n const message = getErrorMessage(error);\r\n setAlert(message, \"error\", 6000);\r\n };\r\n\r\n return {\r\n api,\r\n cancelSource,\r\n isCanceled,\r\n getData,\r\n postData,\r\n showResponse,\r\n };\r\n};\r\n\r\nexport default useApi;\r\n","import { useState, useEffect } from 'react';\r\nimport useApi from \"../services/use-api\";\r\nimport { PwdRegex } from \"../conventions/constants\";\r\n\r\nconst useLoginMenu = (props) => {\r\n const [password, setPassword] = useState(\"\");\r\n const [canLogin, setCanLogin] = useState(false);\r\n const { postData, showResponse } = useApi();\r\n\r\n useEffect(() => {\r\n setCanLogin(isValidPwd(password));\r\n }, [password]);\r\n\r\n const authenticate = async (event) => {\r\n event.preventDefault();\r\n await postData(`${process.env.PUBLIC_URL}/auth`, { Password: password })\r\n .then(response => props.onAuthenticate(response.data))\r\n .catch(ex => showResponse(ex));\r\n }\r\n\r\n const isValidPwd = (pwd) => PwdRegex.test(pwd);\r\n\r\n const updatePassword = (event) => {\r\n event.preventDefault();\r\n setPassword(event.target.value);\r\n };\r\n\r\n return ({ authenticate, canLogin, updatePassword });\r\n};\r\n\r\nexport default useLoginMenu;","/** @jsxRuntime classic */\r\n/** @jsx jsx */\r\nimport { css, jsx } from \"@emotion/react\";\r\nimport React from 'react';\r\nimport { MenuItem, Button, TextField } from '@material-ui/core';\r\nimport ExitToAppIcon from '@material-ui/icons/ExitToApp';\r\nimport useLoginMenu from \"../../../hooks/use-login-menu\";\r\n\r\n\r\nconst LoginMenu = React.forwardRef((props, ref) => {\r\n const { authenticate, canLogin, updatePassword } = useLoginMenu(props);\r\n\r\n return (\r\n \r\n
\r\n

Login to manage

\r\n
\r\n \r\n
\r\n \r\n \r\n
);\r\n});\r\n\r\nexport default LoginMenu;","import { useState, useEffect, useContext } from 'react';\r\nimport useApi from \"../services/use-api\";\r\nimport { PwdRegex } from \"../conventions/constants\";\r\nimport AlertContext from \"../contexts/alert/alert-context\";\r\n\r\n\r\n\r\nconst usePasswordChangeMenu = (props) => {\r\n const [currentPassword, setCurrentPassword] = useState(\"\");\r\n const [newPassword, setNewPassword] = useState(\"\");\r\n const [repeatedPassword, setRepeatedPassword] = useState(\"\");\r\n const [isValidCurrentPassword, setIsValidCurrentPassword] = useState(false);\r\n const [isValidNewPassword, setIsValidNewPassword] = useState(false);\r\n const [isValidRepeatedPassword, setIsValidRepeatedPassword] = useState(false);\r\n const [canChange, setCanChange] = useState(false);\r\n const { setAlert } = useContext(AlertContext);\r\n const { postData, showResponse } = useApi();\r\n\r\n const changePassword = async (event) => {\r\n event.preventDefault();\r\n await postData(`${process.env.PUBLIC_URL}/change-password`, {\r\n CurrentPassword: currentPassword,\r\n NewPassword: newPassword,\r\n RepeatedPassword: repeatedPassword\r\n }).then(response => {\r\n if (response.data) {\r\n setAlert(\"Password changed successfully\", \"success\", 6000);\r\n props.setAnchorEl(null);\r\n } else {\r\n setAlert(\"Password not changed due to incorrect data\", \"warning\", 6000);\r\n }\r\n }).catch(ex => showResponse(ex));\r\n }\r\n\r\n\r\n useEffect(() => {\r\n if (isValidCurrentPassword !== PwdRegex.test(currentPassword)) {\r\n setIsValidCurrentPassword(!isValidCurrentPassword);\r\n }\r\n if (isValidNewPassword !== PwdRegex.test(newPassword)) {\r\n setIsValidNewPassword(!isValidNewPassword);\r\n }\r\n if (isValidRepeatedPassword !== (PwdRegex.test(repeatedPassword) && newPassword === repeatedPassword)) {\r\n setIsValidRepeatedPassword(!isValidRepeatedPassword);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [currentPassword, newPassword, repeatedPassword]);\r\n\r\n useEffect(() => {\r\n if (canChange !== isValidCurrentPassword && isValidNewPassword && isValidRepeatedPassword) {\r\n setCanChange(!canChange);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isValidCurrentPassword, isValidNewPassword, isValidRepeatedPassword]);\r\n\r\n\r\n const changeCurrentPassword = (event) => setCurrentPassword(event.target.value);\r\n const changeNewPassword = (event) => setNewPassword(event.target.value);\r\n const changeRepeatedPassword = (event) => setRepeatedPassword(event.target.value);\r\n const stopPropagationForTab = (event) => event.key === \"Tab\" ? event.stopPropagation() : true;\r\n\r\n return ({\r\n isValidCurrentPassword,\r\n isValidNewPassword,\r\n isValidRepeatedPassword,\r\n canChange,\r\n changePassword,\r\n changeCurrentPassword,\r\n changeNewPassword,\r\n changeRepeatedPassword,\r\n stopPropagationForTab\r\n });\r\n};\r\n\r\nexport default usePasswordChangeMenu;","/** @jsxRuntime classic */\r\n/** @jsx jsx */\r\nimport { css, jsx } from \"@emotion/react\";\r\nimport React from 'react';\r\nimport { MenuItem, Button, TextField } from '@material-ui/core';\r\nimport VpnKeyIcon from '@material-ui/icons/VpnKey';\r\nimport usePasswordChangeMenu from \"../../../hooks/use-password-change-menu\";\r\n\r\n\r\n\r\nconst PasswordChangeMenu = React.forwardRef((props, ref) => {\r\n\r\n const {\r\n isValidCurrentPassword,\r\n isValidNewPassword,\r\n isValidRepeatedPassword,\r\n canChange,\r\n changePassword,\r\n changeCurrentPassword,\r\n changeNewPassword,\r\n changeRepeatedPassword,\r\n stopPropagationForTab\r\n } = usePasswordChangeMenu(props);\r\n\r\n return (\r\n\r\n \r\n
{ e.preventDefault(); }}>\r\n

Change password

\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 PasswordChangeMenu;","/** @jsxRuntime classic */\r\n/** @jsx jsx */\r\nimport { css, jsx } from \"@emotion/react\";\r\nimport { useContext, Fragment } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { AuthContext } from \"../../../contexts/auth-context\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport { Colors } from \"../../../conventions/constants\";\r\n\r\n\r\nconst LogoutConfirmation = ({ open, close }) => {\r\n const { setSid } = useContext(AuthContext);\r\n\r\n\r\n const logoutUser = () => {\r\n close();\r\n setSid(false);\r\n }\r\n\r\n return (\r\n \r\n \r\n {\"Are you sure you want to log out?\"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nLogoutConfirmation.propTypes = {\r\n open: PropTypes.bool.isRequired,\r\n close: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default LogoutConfirmation;\r\n","import { useContext, useState, useRef, useEffect } from 'react';\r\nimport { AuthContext } from \"../contexts/auth-context\";\r\nimport AlertContext from \"../contexts/alert/alert-context\";\r\nimport useApi from '../services/use-api';\r\n\r\nconst minTimeoutCycle = 30000;\r\n\r\nconst usePersonalMenuContent = (isAuthenticated) => {\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n let isMenuOpen = Boolean(!!anchorEl);\r\n const [openDialog, setOpenDialog] = useState(false);\r\n\r\n const { setSid } = useContext(AuthContext);\r\n const { setAlert } = useContext(AlertContext);\r\n const { getData } = useApi();\r\n\r\n\r\n let timer = useRef();\r\n\r\n const checkIsAuthenticated = () => {\r\n return getData(`${process.env.PUBLIC_URL}/auth`)\r\n .then(response => {\r\n window.clearTimeout(timer.current);\r\n\r\n if (isAuthenticated && !response.data) {\r\n window.localStorage.clear();\r\n return window.location.reload();\r\n }\r\n\r\n timer.current = window.setTimeout(() => checkIsAuthenticated(), minTimeoutCycle * 2);\r\n console.log(`checkIsAuthenticated -> isAuthenticated: ${isAuthenticated}, response: ${response.data}`);\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n timer.current = window.setTimeout(() => checkIsAuthenticated(), minTimeoutCycle);\r\n return () => window.clearTimeout(timer.current);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isAuthenticated]);\r\n\r\n\r\n const handleAuthenticateResult = (success) => {\r\n setSid(success)\r\n if (success) {\r\n setAnchorEl(null);\r\n }\r\n setAlert(success ? \"Login succeeded\" : \"Login failed\", success ? \"success\" : \"warning\", 6000);\r\n };\r\n\r\n\r\n const handleProfileMenuOpen = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleMenuClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const showLogoutConfirmation = () => {\r\n setOpenDialog(true);\r\n }\r\n\r\n return ({\r\n anchorEl,\r\n setAnchorEl,\r\n isMenuOpen,\r\n openDialog,\r\n setOpenDialog,\r\n handleAuthenticateResult,\r\n handleProfileMenuOpen,\r\n handleMenuClose,\r\n showLogoutConfirmation\r\n });\r\n};\r\n\r\nexport default usePersonalMenuContent;","import React, { createContext, useState, useEffect, useCallback } from \"react\";\r\nimport api from \"../services/use-api\";\r\n\r\nexport const LocalContext = createContext();\r\n\r\n\r\nconst LocalProvider = ({ children }) => {\r\n const [isLocal, setIsLocal] = useState(false);\r\n const { getData, showResponse } = api();\r\n\r\n const getIsLocal = useCallback(async () => {\r\n await getData(`${process.env.PUBLIC_URL}/local-check`)\r\n .then(response => setIsLocal(response.data))\r\n .catch(ex => showResponse(ex));\r\n }, [getData, showResponse]);\r\n\r\n useEffect(() => {\r\n console.log(`LocalProvider: ${isLocal}`);\r\n getIsLocal();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport { LocalProvider };","import React, { useContext } from \"react\";\r\nimport { AuthContext } from \"../contexts/auth-context\";\r\nimport { LocalContext } from \"../contexts/local-context\";\r\n\r\nconst withAuth = (Component) => {\r\n return (props) => {\r\n const { sid } = useContext(AuthContext);\r\n const { isLocal } = useContext(LocalContext);\r\n const isAuthenticated = sid && sid !== \"false\" && isLocal;\r\n\r\n return ();\r\n };\r\n};\r\n\r\nexport default withAuth;","/** @jsxRuntime classic */\r\n/** @jsx jsx */\r\nimport { css, jsx } from \"@emotion/react\";\r\nimport { AccountCircle } from '@material-ui/icons';\r\nimport { Menu, IconButton } from '@material-ui/core';\r\nimport ExitToAppIcon from '@material-ui/icons/ExitToApp';\r\nimport LoginMenu from \"./login-menu\";\r\nimport PasswordChangeMenu from \"./password-change-menu\";\r\nimport LogoutConfirmation from \"./logout-confirmation\";\r\n\r\nimport usePersonalMenuContent from \"../../../hooks/use-personal-menu-content\";\r\nimport withAuth from \"../../../hooks/with-auth\";\r\n\r\n\r\nconst PersonalMenuContent = ({ isAuthenticated }) => {\r\n const {\r\n anchorEl,\r\n setAnchorEl,\r\n isMenuOpen,\r\n openDialog,\r\n setOpenDialog,\r\n handleAuthenticateResult,\r\n handleProfileMenuOpen,\r\n handleMenuClose,\r\n showLogoutConfirmation\r\n } = usePersonalMenuContent(isAuthenticated);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {!isAuthenticated ?\r\n :\r\n }\r\n \r\n {isAuthenticated ? \r\n \r\n : null}\r\n setOpenDialog(false)} />\r\n
\r\n );\r\n};\r\n\r\nexport default withAuth(PersonalMenuContent);","import React from 'react';\r\nimport PersonalMenuContent from \"./personal-menu-content\";\r\nimport withAuth from '../../../hooks/with-auth';\r\n\r\n\r\nconst PersonalMenu = React.forwardRef((props, ref) => {\r\n return (props.isLocal ? : null);\r\n});\r\n\r\nexport default withAuth(PersonalMenu);","/** @jsxRuntime classic */\r\n/** @jsx jsx */\r\nimport { css, jsx } from \"@emotion/react\";\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\n\r\nimport { Colors } from \"../../conventions/constants\";\r\nimport PersonalMenu from \"./menu/personal-menu\";\r\n\r\n\r\nconst Header = () => {\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Header;","const FooterAnchor = ({ href, src, alt }) => {\r\n return (\r\n \r\n {alt}\r\n );\r\n};\r\n\r\nexport default FooterAnchor;","/** @jsxRuntime classic */\r\n/** @jsx jsx */\r\nimport { css, jsx } from \"@emotion/react\";\r\nimport FooterAnchor from \"./footer-anchor\";\r\n\r\n\r\nconst Footer = () => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Footer;","\r\n/** @jsxRuntime classic */\r\n/** @jsx jsx */\r\nimport { css, jsx } from \"@emotion/react\";\r\nimport DeleteForeverIcon from '@material-ui/icons/DeleteForever';\r\nimport { Colors } from \"../../../conventions/constants\";\r\n\r\nconst DeleteButton = ({ row, removeRow }) => {\r\n\r\n const remove = () => removeRow(row.serialNumber);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default DeleteButton;","/** @jsxRuntime classic */\r\n/** @jsx jsx */\r\nimport { css, jsx } from \"@emotion/react\";\r\nimport { Colors } from \"../../../conventions/constants\";\r\n\r\nconst LookupElements = ({ row }) => {\r\n return (\r\n (row.remoteTachoDownload || [])\r\n .map((x, i) => x.link ?\r\n \r\n {x.text}\r\n :\r\n \r\n {x.text}\r\n ));\r\n};\r\n\r\nexport default LookupElements;","import IconButton from '@material-ui/core/IconButton';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\r\nimport KeyboardArrowUpIcon from '@material-ui/icons/KeyboardArrowUp';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport DeleteButton from \"./delete-button\";\r\nimport LookupElements from \"./lookup-elements\";\r\n\r\nconst CommonRow = ({ row, removeRow, open, setOpen }) => {\r\n\r\n return (\r\n \r\n \r\n \r\n setOpen(!open)}>\r\n {open ? : }\r\n \r\n \r\n \r\n \r\n {row.serialNumber}\r\n \r\n \r\n {row.version}\r\n \r\n \r\n {row.oem}\r\n {row.type}\r\n \r\n \r\n {row.voltage}\r\n {row.boudrate}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CommonRow;","/** @jsxRuntime classic */\r\n/** @jsx jsx */\r\nimport { css, jsx } from \"@emotion/react\";\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Box from '@material-ui/core/Box';\r\nimport Collapse from '@material-ui/core/Collapse';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport LookupElements from \"./lookup-elements\";\r\n\r\n\r\nconst useRowStyles = makeStyles({\r\n cellLeft: {\r\n textAlign: 'left !important',\r\n },\r\n});\r\n\r\nconst ExpandableRow = ({ row, open }) => {\r\n const classes = useRowStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n VERSION:\r\n {row.version}\r\n \r\n \r\n \r\n OEM:\r\n {row.oem}\r\n \r\n \r\n TYPE:\r\n {row.type}\r\n \r\n \r\n \r\n VOLTAGE:\r\n {row.voltage}\r\n \r\n \r\n BOUDRATE:\r\n {row.boudrate}\r\n \r\n \r\n \r\n \r\n REMOTE DOWNLOAD:\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ExpandableRow;","import React from 'react';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport CommonRow from \"./common-row\";\r\nimport ExpandableRow from \"./expandable-row\";\r\n\r\n\r\nconst Row = ({ row, removeRow }) => {\r\n const [open, setOpen] = React.useState(false);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Row;","/** @jsxRuntime classic */\r\n/** @jsx jsx */\r\nimport { css, jsx } from \"@emotion/react\";\r\nimport { Fragment } from 'react';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport { Colors } from \"../../../conventions/constants\"\r\nimport Row from \"./row\";\r\n\r\n\r\nconst LookupTable = ({ rows, removeRow, removeAllRows }) => {\r\n\r\n const hasNoContent = () => !rows || !rows.length;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n SERIAL NUMBER\r\n \r\n VERSION\r\n \r\n \r\n OEM\r\n TYPE\r\n \r\n \r\n VOLTAGE\r\n BOUDRATE\r\n \r\n \r\n REMOTE DOWNLOAD\r\n \r\n CLEAR\r\n \r\n \r\n \r\n {rows.map((row) => ())}\r\n \r\n
\r\n
\r\n
List is empty
\r\n
\r\n );\r\n};\r\n\r\nexport default LookupTable;","import React, { createContext, useState } from \"react\";\r\n\r\nexport const FileUploadContext = createContext();\r\n\r\nconst FileUploadProvider = ({ children }) => {\r\n const [fileUploaded, setFileUploaded] = useState(false);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default FileUploadProvider;\r\n\r\n","\r\nimport axios from \"axios\";\r\n\r\nconst FileDownload = (sid) => {\r\n\r\n const download = (url, fileName) => axios({\r\n url: url,\r\n method: 'GET',\r\n responseType: 'blob', // important\r\n headers: {\r\n \"SID\": sid\r\n },\r\n }).then((response) => {\r\n const link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(new Blob([response.data]));\r\n link.setAttribute('download', fileName);\r\n document.body.appendChild(link);\r\n link.click();\r\n });\r\n\r\n return {\r\n download\r\n };\r\n\r\n};\r\n\r\nexport default FileDownload;","import React, { useContext, useEffect, useState, useCallback } from 'react';\r\nimport { FileUploadContext } from \"../contexts/file-upload-context\";\r\nimport useApi from \"../services/use-api\";\r\nimport FileDownload from \"../services/file-download\";\r\n\r\n\r\nconst useDownloadControl = (sid, isAuthenticated) => {\r\n const { fileUploaded, setFileUploaded } = useContext(FileUploadContext);\r\n const [fileList, setFileList] = useState([]);\r\n const [selectedFile, setSelectedFile] = useState(\"\");\r\n const { getData, showResponse } = useApi();\r\n const { download } = FileDownload(sid);\r\n\r\n const getList = useCallback(async () => {\r\n if (isAuthenticated) {\r\n await getData(`${process.env.PUBLIC_URL}/list-files`)\r\n .then(response => setFileList(response.data))\r\n .catch(ex => showResponse(ex));\r\n } else {\r\n Promise.resolve();\r\n }\r\n }, [getData, showResponse, isAuthenticated]);\r\n\r\n useEffect(() => {\r\n getList();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (selectedFile) {\r\n const fileUrl = `${process.env.PUBLIC_URL}/download?fileName=${selectedFile}`;\r\n download(fileUrl, selectedFile)\r\n .finally(() => setSelectedFile(null));\r\n }\r\n }, [download, selectedFile]);\r\n\r\n useEffect(() => {\r\n console.log(`DownloadControl.fileUploaded: ${fileUploaded}`)\r\n if (fileUploaded) {\r\n getList();\r\n setFileUploaded(false);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [fileUploaded, setFileUploaded]);\r\n\r\n const [open, setOpen] = React.useState(false);\r\n const anchorRef = React.useRef(null);\r\n const [selectedIndex, setSelectedIndex] = React.useState(1);\r\n\r\n const handleClick = () => {\r\n setSelectedFile(fileList[selectedIndex]);\r\n };\r\n\r\n const handleMenuItemClick = (event, index) => {\r\n setSelectedIndex(index);\r\n setOpen(false);\r\n };\r\n\r\n const handleToggle = () => {\r\n setOpen((prevOpen) => !prevOpen);\r\n };\r\n\r\n const handleClose = (event) => {\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n return;\r\n }\r\n\r\n setOpen(false);\r\n };\r\n\r\n return ({\r\n anchorRef,\r\n fileList,\r\n selectedIndex,\r\n open,\r\n handleClick,\r\n handleMenuItemClick,\r\n handleClose,\r\n handleToggle\r\n })\r\n};\r\n\r\nexport default useDownloadControl;\r\n\r\n","/** @jsxRuntime classic */\r\n/** @jsx jsx */\r\nimport { css, jsx } from \"@emotion/react\";\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Button from '@material-ui/core/Button';\r\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\r\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\r\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\r\nimport Grow from '@material-ui/core/Grow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Popper from '@material-ui/core/Popper';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport MenuList from '@material-ui/core/MenuList';\r\nimport GetAppIcon from '@material-ui/icons/GetApp';\r\nimport { Colors } from \"../../../conventions/constants\";\r\nimport useDownloadControl from \"../../../hooks/use-download-control\";\r\nimport withAuth from \"../../../hooks/with-auth\";\r\n\r\nconst DownloadControl = ({ sid, isAuthenticated }) => {\r\n\r\n const {\r\n anchorRef,\r\n fileList,\r\n selectedIndex,\r\n open,\r\n handleClick,\r\n handleMenuItemClick,\r\n handleClose,\r\n handleToggle\r\n } = useDownloadControl(sid, isAuthenticated);\r\n\r\n const ariaControls = open ? 'split-button-menu' : undefined;\r\n const ariaExpanded = open ? 'true' : undefined;\r\n\r\n return (\r\n isAuthenticated ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {({ TransitionProps, placement }) => (\r\n \r\n \r\n \r\n \r\n {fileList.map((option, index) => (\r\n handleMenuItemClick(event, index)}\r\n >\r\n {option}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n : null);\r\n};\r\n\r\nexport default withAuth(DownloadControl);","import { useContext, useState } from 'react';\r\nimport { FileUploadContext } from \"../contexts/file-upload-context\";\r\nimport useApi from \"../services/use-api\";\r\nimport AlertContext from '../contexts/alert/alert-context';\r\n\r\n\r\nconst useUploadControl = () => {\r\n const { setFileUploaded } = useContext(FileUploadContext);\r\n const { setAlert } = useContext(AlertContext);\r\n const [loading, setLoading] = useState(false);\r\n const { postData, showResponse } = useApi();\r\n\r\n const browseFile = () => {\r\n document.getElementById(\"newSourceFile\").click();\r\n }\r\n\r\n const onBrowseFile = () => {\r\n var element = document.getElementById(\"newSourceFile\");\r\n if (element.files && element.files.length > 0) {\r\n setLoading(true);\r\n let file = element.files[0];\r\n let formData = new FormData();\r\n formData.append('name', file.name);\r\n formData.append('file_attachment', file);\r\n\r\n postData(`${process.env.PUBLIC_URL}/file-upload`, formData)\r\n .then(response => {\r\n const errors = response.data.errors || 0;\r\n const message = `Entries created: ${response.data.entries || 0},\r\nErrors/overrides ocurred: ${errors}.\r\nTo view uploaded data use URL: ${window.location.href}test`\r\n setAlert(message, errors ? \"warning\" : \"success\", 60000);\r\n setFileUploaded(true);\r\n }).catch(ex => {\r\n showResponse(ex);\r\n }).finally(() => {\r\n formData = null;\r\n document.getElementById(\"newSourceFile\").value = \"\";\r\n setLoading(false);\r\n });\r\n }\r\n }\r\n\r\n\r\n return ({\r\n loading,\r\n setLoading,\r\n browseFile,\r\n onBrowseFile\r\n });\r\n};\r\n\r\nexport default useUploadControl;","/** @jsxRuntime classic */\r\n/** @jsx jsx */\r\nimport { css, jsx } from \"@emotion/react\";\r\nimport { Button } from '@material-ui/core';\r\nimport PublishIcon from '@material-ui/icons/Publish';\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport useUploadControl from \"../../../hooks/use-upload-control\";\r\nimport withAuth from \"../../../hooks/with-auth\";\r\n\r\n\r\nconst UploadControl = ({ isAuthenticated }) => {\r\n\r\n const {\r\n loading,\r\n browseFile,\r\n onBrowseFile\r\n } = useUploadControl();\r\n\r\n const progress = loading ? : null;\r\n \r\n return (\r\n isAuthenticated ?\r\n
\r\n \r\n \r\n
: null);\r\n\r\n};\r\n\r\nexport default withAuth(UploadControl);","/** @jsxRuntime classic */\r\n/** @jsx jsx */\r\nimport { css, jsx } from \"@emotion/react\";\r\nimport { Colors } from \"../../../conventions/constants\"\r\nimport DownloadControl from \"./download-control\";\r\nimport UploadControl from \"./upload-control\";\r\nimport withAuth from \"../../../hooks/with-auth\";\r\n\r\n\r\nconst FileManagement = ({ isAuthenticated }) => {\r\n\r\n return (\r\n isAuthenticated ?\r\n
\r\n File management\r\n
\r\n \r\n \r\n
\r\n
: null);\r\n};\r\n\r\nexport default withAuth(FileManagement);","import { useState, useContext, useEffect } from 'react';\r\nimport useApi from \"../../services/use-api\";\r\nimport AlertContext from \"../../contexts/alert/alert-context\";\r\n\r\nconst IndexRenderProps = (props) => {\r\n\r\n const [rows, setRows] = useState([]);\r\n const [serialNumber, setSerialNumber] = useState(\"\");\r\n const [isFilterValid, setIsFilterValid] = useState(false);\r\n const { setAlert } = useContext(AlertContext);\r\n const { getData, isCanceled, showResponse } = useApi();\r\n\r\n const minFilterLengthToSearch = 14;\r\n\r\n const find = async () => {\r\n if (isFilterValid) {\r\n const number = serialNumber;\r\n await getData(`${process.env.PUBLIC_URL}/find?serialNumber=${number}`)\r\n .then(({ data }) => {\r\n if (!data.entries || !data.entries.length) {\r\n return setAlert(`No data found using Serial Number \"${serialNumber}\"`, 'warning', 6000);\r\n }\r\n data.entries.forEach(entry => entry.serialNumber = number);\r\n const newSerialNumbers = data.entries.map(x => x.serialNumber);\r\n return setRows(rows\r\n .filter(x => x.serialNumber && !newSerialNumbers.includes(x.serialNumber))\r\n .concat(data.entries));\r\n }).catch(ex => !isCanceled(ex) ? showResponse(ex) : null);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n find();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [serialNumber, isFilterValid]);\r\n\r\n const onFilterChange = (event) => {\r\n var value = event.target.value;\r\n setSerialNumber(value);\r\n setIsFilterValid(value.length >= minFilterLengthToSearch)\r\n };\r\n\r\n\r\n\r\n const removeRow = (sn) => {\r\n const rowsLeft = rows.filter(x => x.serialNumber && x.serialNumber !== sn);\r\n return setRows(rowsLeft.length ? rowsLeft : []);\r\n };\r\n\r\n const removeAllRows = () => {\r\n setRows([]);\r\n };\r\n\r\n return props.children({\r\n serialNumber,\r\n rows,\r\n isFilterValid,\r\n find,\r\n onFilterChange,\r\n removeRow,\r\n removeAllRows\r\n });\r\n};\r\n\r\nexport default IndexRenderProps;","/** @jsxRuntime classic */\r\n/** @jsx jsx */\r\nimport { css, jsx } from \"@emotion/react\";\r\nimport { useMemo, Fragment } from 'react';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport Button from '@material-ui/core/Button';\r\nimport Header from \"./header\";\r\nimport Footer from \"./footer\";\r\nimport LookupTable from \"./table\";\r\nimport \"../../css/footer.css\";\r\nimport { Colors } from \"../../conventions/constants\"\r\nimport FileManagement from \"./management/file-management\";\r\nimport IndexRenderProps from \"./index-render-props\";\r\n\r\nconst Main = () => {\r\n\r\n const footer = useMemo(() =>