{"version":3,"sources":["EmployeeDirectory.js","serviceWorker.js","index.js"],"names":["useStyles","makeStyles","theme","root","width","maxWidth","backgroundColor","palette","background","paper","typography","body1","fontSize","fontWeight","accordion","marginTop","nested","paddingLeft","spacing","dropdown1","breakpoints","down","up","dropdown2","classContainer","padding","pipeSeperator","color","marginLeft","marginRight","borderRight","greyedOut","detailsPanel","display","flexDirection","offCampus","maxHeight","position","top","info","formControl","margin","button","classArea","heading","menuItem","whiteSpace","wordBreak","progress","scrollButton","bottom","right","paperFilter","ScrollTop","props","children","classes","trigger","useScrollTrigger","disableHysteresis","threshold","React","createElement","Zoom","in","onClick","event","anchor","target","ownerDocument","document","querySelector","scrollIntoView","behavior","block","role","className","stateMachine","state","action","type","data","payload","titles","departments","titlesOpen","open","titlesFilter","displayedEmployees","departmentsOpen","departmentsFilter","titlesError","departmentsError","EmployeeDirectory","dispatch","useReducer","searchedEmployees","searchText","searchT","useRef","useLayoutEffect","async","result","axios","method","headers","crossDomain","url","resource","error","console","log","get","fetchTitles","fetchDepartments","fetchEmployees","searchFilter","array","toLowerCase","filter","item","FIRST_NAME","includes","LAST_NAME","TITLE","sort","a","b","valA","valB","stateLogic","dispatchType","controlState","DEPARTMENT","stateLogicSearched","employees","current","value","Typography","id","FormControl","TextField","InputLabelProps","shrink","undefined","label","inputRef","onChange","style","SearchIcon","aria-hidden","InputLabel","Select","autoWidth","labelId","onClose","handleTitlesClose","onOpen","handleTitlesOpen","MenuItem","key","map","index","minWidth","handleDepartmentsClose","handleDepartmentsOpen","Button","variant","handleClear","startIcon","Clear","length","CircularProgress","Grid","container","Fade","transitionDelay","Card","CardHeader","title","CardContent","List","component","aria-label","ListItem","ListItemText","primary","sanitizeHtml","replace","href","EMAIL_ADDR","inset","DEPT_PHONE","titleFilter","Fab","size","KeyboardArrowUpIcon","Boolean","window","location","hostname","match","ReactDOM","render","getElementById","navigator","serviceWorker","ready","then","registration","unregister","catch","message"],"mappings":"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","file":"static/js/main.c444c78e.chunk.js","sourcesContent":["import React, { useLayoutEffect, useReducer } from 'react';\r\nimport './App.css';\r\n\r\nimport FormControl from '@material-ui/core/FormControl';\r\n\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport MenuItem from '@material-ui/core/MenuItem'\r\nimport axios from 'axios';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\n\r\nimport Button from '@material-ui/core/Button';\r\n\r\nimport Select from '@material-ui/core/Select';\r\n\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\n\r\nimport PropTypes from \"prop-types\";\r\nimport useScrollTrigger from \"@material-ui/core/useScrollTrigger\";\r\nimport Fab from '@material-ui/core/Fab';\r\nimport KeyboardArrowUpIcon from '@material-ui/icons/KeyboardArrowUp';\r\nimport Zoom from '@material-ui/core/Zoom';\r\n\r\nimport Clear from '@material-ui/icons/Clear';\r\n\r\nimport Card from '@material-ui/core/Card';\r\nimport CardHeader from '@material-ui/core/CardHeader';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport Fade from '@material-ui/core/Fade';\r\n\r\nimport Grid from '@material-ui/core/Grid';\r\n\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\n\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport sanitizeHtml from 'sanitize-html';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: '100%',\r\n maxWidth: 900,\r\n backgroundColor: theme.palette.background.paper,\r\n\r\n },\r\n typography:{\r\n body1: {\r\n fontSize: 16,\r\n fontWeight: 'bold',\r\n },\r\n },\r\n accordion: {\r\n marginTop: 2,\r\n },\r\n nested: {\r\n paddingLeft: theme.spacing(4),\r\n },\r\n dropdown1: {\r\n [theme.breakpoints.down('sm')]: {\r\n width: 220,\r\n },\r\n [theme.breakpoints.up('md')]: {\r\n width: 300,\r\n },\r\n [theme.breakpoints.up('lg')]: {\r\n width: 400,\r\n },\r\n [theme.breakpoints.up('lg')]: {\r\n width: 420,\r\n },\r\n },\r\n dropdown2: {\r\n width: 290,\r\n },\r\n classContainer: {\r\n padding: 0,\r\n },\r\n pipeSeperator: {\r\n color: '#d8d8d8',\r\n marginLeft: 10,\r\n marginRight: 10,\r\n borderRight: '1px solid #d8d8d8'\r\n },\r\n greyedOut: {\r\n color: \"#777777\",\r\n },\r\n detailsPanel: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n offCampus: {\r\n color: \"#EB0000;\",\r\n maxHeight: 18,\r\n position: 'relative',\r\n marginLeft: -3,\r\n top: 3,\r\n\r\n },\r\n info: {\r\n color: \"#777777;\",\r\n maxHeight: 18,\r\n position: 'relative',\r\n marginLeft: -3,\r\n top: 3,\r\n\r\n },\r\n formControl: {\r\n margin: 5,\r\n\r\n },\r\n button: {\r\n margin: theme.spacing(2),\r\n },\r\n\r\n classArea: {\r\n marginTop: 20,\r\n },\r\n heading: {\r\n fontSize: 18,\r\n },\r\n menuItem: {\r\n whiteSpace: \"unset\",\r\n wordBreak: \"break-all\",\r\n },\r\n progress: {\r\n maxWidth: 800,\r\n },\r\n\r\n scrollButton: {\r\n position: 'fixed',\r\n bottom: theme.spacing(2),\r\n right: theme.spacing(2),\r\n backgroundColor: \"#A7C9FE\",\r\n color: \"#000000\",\r\n },\r\n\r\n paperFilter: {\r\n maxWidth: 180,\r\n position: 'fixed',\r\n right: 30,\r\n padding: 10,\r\n },\r\n\r\n}));\r\n\r\nfunction ScrollTop(props) {\r\n const { children } = props;\r\n const classes = useStyles();\r\n const trigger = useScrollTrigger({\r\n disableHysteresis: true,\r\n threshold: 400\r\n });\r\n\r\n const handleClickScroll = event => {\r\n const anchor = (event.target.ownerDocument || document).querySelector(\r\n \"#back-to-top-anchor\"\r\n );\r\n\r\n if (anchor) {\r\n anchor.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\r\n }\r\n };\r\n\r\n return (\r\n \r\n
\r\n {children}\r\n
\r\n
\r\n );\r\n}\r\n\r\nScrollTop.propTypes = {\r\n children: PropTypes.element.isRequired\r\n};\r\n\r\n//#region StateMachine\r\n\r\nconst stateMachine = (state, action) => {\r\n\r\n switch (action.type) {\r\n case 'initEmployees':\r\n return { ...state, data: action.payload }\r\n\r\n case 'initTitles':\r\n return { ...state, titles: action.payload }\r\n\r\n case 'initDepartments':\r\n return { ...state, departments: action.payload }\r\n\r\n case 'changeTitles':\r\n return { ...state, titlesOpen: action.open, titlesFilter: action.titlesFilter, displayedEmployees: action.displayedEmployees }\r\n\r\n case 'changeDepartments':\r\n return { ...state, departmentsOpen: action.open, departmentsFilter: action.departmentsFilter, displayedEmployees: action.displayedEmployees }\r\n\r\n case 'openTitles':\r\n return { ...state, titlesOpen: action.open }\r\n\r\n case 'titlesError':\r\n return { ...state, titlesOpen: action.open, titlesError: true }\r\n\r\n case 'openDepartments':\r\n return { ...state, departmentsOpen: action.open }\r\n\r\n case 'departmentsError':\r\n return { ...state, departmentsOpen: action.open, departmentsError: true }\r\n\r\n case 'search':\r\n return { ...state, displayedEmployees: action.payload }\r\n\r\n case 'clear':\r\n return { ...state, displayedEmployees: action.payload, departmentsFilter: '', titlesFilter: '' }\r\n\r\n default:\r\n return { ...state }\r\n }\r\n\r\n}\r\n\r\n//#endregion \r\n\r\n\r\nfunction EmployeeDirectory() {\r\n\r\n const [state, dispatch] = useReducer(stateMachine, {\r\n data: [],\r\n titles: [],\r\n departments: [],\r\n titlesFilter: '',\r\n departmentsFilter: '',\r\n titlesOpen: false,\r\n departmentsOpen: false,\r\n titlesError: false,\r\n departmentsError: false,\r\n displayedEmployees: [],\r\n searchedEmployees: [],\r\n searchText: '',\r\n }\r\n )\r\n\r\n const classes = useStyles();\r\n\r\n let searchT = React.useRef('');\r\n\r\n //#region Effects\r\n\r\n useLayoutEffect(() => {\r\n\r\n\r\n const fetchEmployees = async () => {\r\n\r\n try {\r\n\r\n const result = await axios({\r\n\r\n method: 'get',\r\n\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n\r\n 'X-DreamFactory-Api-Key': 'b6fc7ad5e0f397c4b4ac3f32799ef3d1e4dfcc2f6043566bb3c64c27860ae722'\r\n },\r\n\r\n crossDomain: true,\r\n\r\n url: 'https://dfprd.heartland.edu/api/v2/irdb_k2/_table/WEB_EMPLOYEE_DIRECTORY?order=LAST_NAME%20ASC'\r\n\r\n });\r\n\r\n dispatch({ type: 'initEmployees', payload: result.data.resource });\r\n\r\n } catch (error) {\r\n console.log(error);\r\n const result = await axios.get('employee.json');\r\n dispatch({ type: 'initEmployees', payload: result.data.resource });\r\n }\r\n\r\n\r\n };\r\n\r\n\r\n const fetchTitles = async () => {\r\n try {\r\n\r\n const result = await axios({\r\n\r\n method: 'get',\r\n\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n\r\n 'X-DreamFactory-Api-Key': '1a8c0e5a7fd6e387a56580d10ee3ed4d47e5172d593e9746b34a16b7b8eb9f71'\r\n },\r\n\r\n crossDomain: true,\r\n\r\n url: 'https://dfprd.heartland.edu/api/v2/irdb_k2/_table/WEB_EMPLOYEE_DIRECTORY_TITLES?order=TITLE%20ASC'\r\n\r\n });\r\n\r\n dispatch({ type: 'initTitles', payload: result.data.resource });\r\n\r\n } catch (error) {\r\n console.log(error);\r\n const result = await axios.get('titles.json');\r\n dispatch({ type: 'initTitles', payload: result.data.resource });\r\n }\r\n };\r\n\r\n const fetchDepartments = async () => {\r\n\r\n try {\r\n\r\n const result = await axios({\r\n\r\n method: 'get',\r\n\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n\r\n 'X-DreamFactory-Api-Key': 'd463d799c639aeafbf35f6a41b314685b4ef9f140022db2a730972872b54a163'\r\n },\r\n\r\n crossDomain: true,\r\n\r\n url: 'https://dfprd.heartland.edu/api/v2/irdb_k2/_table/WEB_EMPLOYEE_DIRECTORY_DEPT?order=DEPARTMENT%20ASC'\r\n\r\n });\r\n\r\n dispatch({ type: 'initDepartments', payload: result.data.resource });\r\n\r\n } catch (error) {\r\n console.log(error);\r\n const result = await axios.get('department.json');\r\n dispatch({ type: 'initDepartments', payload: result.data.resource });\r\n }\r\n };\r\n\r\n\r\n fetchTitles();\r\n fetchDepartments();\r\n fetchEmployees();\r\n\r\n }, []);\r\n\r\n //#endregion\r\n\r\n //#region Handlers \r\n\r\n\r\n const handleTitlesChange = event => {\r\n stateLogic(\"changeTitles\", !state.titlesOpen, event.target.value);\r\n\r\n }\r\n\r\n const handleTitlesSearched = (event) => {\r\n stateLogicSearched(\"changeTitles\", !state.titlesOpen, event.target.value);\r\n }\r\n\r\n const handleTitlesClose = () => {\r\n dispatch({ type: \"openTitles\", open: false });\r\n }\r\n\r\n const handleTitlesOpen = () => {\r\n\r\n dispatch({ type: \"openTitles\", open: true });\r\n }\r\n\r\n const handleDepartmentsChange = event => {\r\n\r\n stateLogic(\"changeDepartments\", !state.departmentsOpen, event.target.value);\r\n\r\n }\r\n\r\n const handleDepartmentsSearched = event => {\r\n stateLogicSearched(\"changeDepartments\", !state.departmentsOpen, event.target.value);\r\n\r\n }\r\n\r\n const handleDepartmentsOpen = () => {\r\n dispatch({ type: \"openDepartments\", open: true });\r\n }\r\n\r\n const handleDepartmentsClose = () => {\r\n dispatch({ type: \"openDepartments\", open: false });\r\n\r\n }\r\n\r\n const handleClear = () => {\r\n if (searchT.current.value) {\r\n searchT.current.value = \"\";\r\n }\r\n\r\n\r\n dispatch({ type: \"clear\", payload: state.data });\r\n }\r\n\r\n const searchFilter = (searchText, array) => {\r\n searchText = searchText.toLowerCase();\r\n let searchedEmployees = array.filter(item => (item.FIRST_NAME.toLowerCase().includes(searchText)) || (item.LAST_NAME.toLowerCase().includes(searchText)) || (((item.FIRST_NAME.toLowerCase()) + ' ' + (item.LAST_NAME.toLowerCase())).includes(searchText)) || (item.TITLE.toLowerCase().includes(searchText)));\r\n searchedEmployees.sort((a, b) => {\r\n let valA = '';\r\n let valB = ';'\r\n if (a.LAST_NAME.toLowerCase().includes(searchText)) {\r\n valA = 0;\r\n } else {\r\n valA = 1;\r\n }\r\n\r\n if (b.LAST_NAME.toLowerCase().includes(searchText)) {\r\n valB = 0;\r\n } else {\r\n valB = 1;\r\n }\r\n return valA - valB;\r\n }\r\n\r\n );\r\n\r\n return searchedEmployees;\r\n }\r\n\r\n const handleSearch = event => {\r\n stateLogicSearched(\"search\", null, event.target.value.toLowerCase());\r\n\r\n }\r\n\r\n const stateLogic = (dispatchType, controlState, filter) => {\r\n\r\n switch (dispatchType) {\r\n\r\n case 'changeTitles':\r\n\r\n //All blank \r\n if ((filter === '' || filter === 'ALL') &&\r\n (state.departmentsFilter === '' || state.departmentsFilter === 'ALL')) {\r\n return dispatch({ type: dispatchType, open: controlState, displayedEmployees: state.data, titlesFilter: filter });\r\n }\r\n\r\n //Titles Alone \r\n if ((filter !== '' && filter !== 'ALL') &&\r\n (state.departmentsFilter === '' || state.departmentsFilter === 'ALL')) {\r\n return dispatch({ type: dispatchType, open: controlState, displayedEmployees: state.data.filter(item => item.TITLE === filter), titlesFilter: filter });\r\n }\r\n\r\n\r\n //Department Only\r\n if ((filter === '' || filter === 'ALL') &&\r\n (state.departmentsFilter !== '' && state.departmentsFilter !== 'ALL')) {\r\n return dispatch({ type: dispatchType, open: controlState, displayedEmployees: state.data.filter(item => item.DEPARTMENT === state.departmentsFilter), titlesFilter: filter });\r\n }\r\n\r\n\r\n //Title and Department \r\n if ((filter !== '' && filter !== 'ALL') &&\r\n (state.departmentsFilter !== '' && state.departmentsFilter !== 'ALL')) {\r\n return dispatch({ type: dispatchType, open: controlState, displayedEmployees: state.data.filter(item => (item.TITLE === filter) && (item.DEPARTMENT === state.departmentsFilter)), titlesFilter: filter });\r\n }\r\n\r\n break;\r\n\r\n case 'changeDepartments':\r\n\r\n //All blank \r\n if ((state.titlesFilter === '' || state.titlesFilter === 'ALL') &&\r\n (filter === '' || filter === 'ALL')) {\r\n return dispatch({ type: dispatchType, open: controlState, displayedEmployees: state.data, departmentsFilter: filter });\r\n }\r\n\r\n //Title Alone \r\n if ((state.titlesFilter !== '' && state.titlesFilter !== 'ALL') &&\r\n (filter === '' || filter === 'ALL')) {\r\n return dispatch({ type: dispatchType, open: controlState, displayedEmployees: state.data.filter(item => item.TITLE === state.titlesFilter), departmentsFilter: filter });\r\n }\r\n\r\n\r\n\r\n //Department Only\r\n if ((state.titlesFilter === '' || state.titlesFilter === 'ALL') &&\r\n (filter !== '' && filter !== 'ALL')) {\r\n return dispatch({ type: dispatchType, open: controlState, displayedEmployees: state.data.filter(item => item.DEPARTMENT === filter), departmentsFilter: filter });\r\n }\r\n\r\n\r\n\r\n //Title and Department \r\n if ((state.titlesFilter !== '' && state.titlesFilter !== 'ALL') &&\r\n (filter !== '' && filter !== 'ALL')) {\r\n return dispatch({ type: dispatchType, open: controlState, displayedEmployees: state.data.filter(item => (item.TITLE === state.titlesFilter) && (item.DEPARTMENT === filter)), departmentsFilter: filter });\r\n }\r\n\r\n\r\n break;\r\n\r\n\r\n\r\n default:\r\n return dispatch({ type: \"clear\", payload: state.data });\r\n }\r\n\r\n\r\n }\r\n\r\n const stateLogicSearched = (dispatchType, controlState, filter) => {\r\n\r\n\r\n switch (dispatchType) {\r\n\r\n case 'changeTitles':\r\n\r\n //All blank \r\n if ((filter === '' || filter === 'ALL') &&\r\n (state.departmentsFilter === '' || state.departmentsFilter === 'ALL')) {\r\n let employees = state.data;\r\n return dispatch({ type: dispatchType, open: controlState, displayedEmployees: searchFilter(searchT.current.value, employees), titlesFilter: filter });\r\n }\r\n\r\n //Title Alone \r\n if ((filter !== '' && filter !== 'ALL') &&\r\n (state.departmentsFilter === '' || state.departmentsFilter === 'ALL')) {\r\n let employees = state.data.filter(item => item.TITLE === filter);\r\n return dispatch({ type: dispatchType, open: controlState, displayedEmployees: searchFilter(searchT.current.value, employees), titlesFilter: filter });\r\n }\r\n\r\n //Departments\r\n if ((filter === '' || filter === 'ALL') &&\r\n (state.departmentsFilter !== '' && state.departmentsFilter !== 'ALL')) {\r\n let employees = state.data.filter(item => item.DEPARTMENT === state.departmentsFilter);\r\n return dispatch({ type: dispatchType, open: controlState, displayedEmployees: searchFilter(searchT.current.value, employees), titlesFilter: filter });\r\n }\r\n\r\n\r\n //Titles and Departments\r\n if ((filter !== '' && filter !== 'ALL') &&\r\n (state.departmentsFilter !== '' && state.departmentsFilter !== 'ALL')) {\r\n let employees = state.data.filter(item => (item.TITLE === filter) && (item.DEPARTMENT === state.departmentsFilter));\r\n return dispatch({ type: dispatchType, open: controlState, displayedEmployees: searchFilter(searchT.current.value, employees), titlesFilter: filter });\r\n }\r\n\r\n break;\r\n\r\n case 'changeDepartments':\r\n\r\n //All blank \r\n if ((state.titlesFilter === '' || state.titlesFilter === 'ALL') &&\r\n (filter === '' || filter === 'ALL')) {\r\n let employees = state.data;\r\n return dispatch({ type: dispatchType, open: controlState, displayedEmployees: searchFilter(searchT.current.value, employees), departmentsFilter: filter });\r\n }\r\n\r\n //Titles Alone \r\n if ((state.titlesFilter !== '' && state.titlesFilter !== 'ALL') &&\r\n (filter === '' || filter === 'ALL')) {\r\n let employees = state.data.filter(item => item.TITLE === state.titlesFilter);\r\n return dispatch({ type: dispatchType, open: controlState, displayedEmployees: searchFilter(searchT.current.value, employees), departmentsFilter: filter });\r\n }\r\n // \r\n\r\n //Department Only\r\n if ((state.titlesFilter === '' || state.titlesFilter === 'ALL') &&\r\n (filter !== '' && filter !== 'ALL')) {\r\n let employees = state.data.filter(item => item.DEPARTMENT === filter);\r\n return dispatch({ type: dispatchType, open: controlState, displayedEmployees: searchFilter(searchT.current.value, employees), departmentsFilter: filter });\r\n }\r\n\r\n //Department and Title\r\n if ((state.titlesFilter !== '' && state.titlesFilter !== 'ALL') &&\r\n (filter !== '' && filter !== 'ALL')) {\r\n let employees = state.data.filter(item => (item.TITLE === state.titlesFilter) && (item.DEPARTMENT === filter));\r\n return dispatch({ type: dispatchType, open: controlState, displayedEmployees: searchFilter(searchT.current.value, employees), departmentsFilter: filter });\r\n }\r\n\r\n break;\r\n\r\n case 'search':\r\n\r\n //All blank \r\n if ((state.titlesFilter === '' || state.titlesFilter === 'ALL') &&\r\n (state.departmentsFilter === '' || state.departmentsFilter === 'ALL')) {\r\n let employees = state.data;\r\n return dispatch({ type: dispatchType, payload: searchFilter(searchT.current.value, employees) });\r\n }\r\n\r\n //Title only\r\n if ((state.titlesFilter !== '' && state.titlesFilter !== 'ALL') &&\r\n (state.departmentsFilter === '' || state.departmentsFilter === 'ALL')) {\r\n let employees = state.data.filter(item => item.TITLE === state.titlesFilter);\r\n return dispatch({ type: dispatchType, payload: searchFilter(searchT.current.value, employees) });\r\n }\r\n\r\n\r\n //Department only\r\n if ((state.titlesFilter === '' || state.titlesFilter === 'ALL') &&\r\n (state.departmentsFilter !== '' && state.departmentsFilter !== 'ALL')) {\r\n let employees = state.data.filter(item => item.DEPARTMENT === state.departmentsFilter);\r\n return dispatch({ type: dispatchType, payload: searchFilter(searchT.current.value, employees) });\r\n }\r\n\r\n\r\n //Titles and Department\r\n if ((state.titlesFilter !== '' && state.titlesFilter !== 'ALL') &&\r\n (state.departmentsFilter !== '' && state.departmentsFilter !== 'ALL')) {\r\n let employees = state.data.filter(item => (item.TITLE === state.titlesFilter) && (item.DEPARTMENT === state.departmentsFilter));\r\n return dispatch({ type: dispatchType, payload: searchFilter(searchT.current.value, employees) });\r\n }\r\n\r\n break;\r\n default:\r\n return dispatch({ type: \"clear\", payload: state.data });\r\n }\r\n }\r\n //#endregion\r\n\r\n return (\r\n\r\n
\r\n\r\n
\r\n

Employee Directory

\r\n The phone numbers listed are department phone numbers.\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n Filter by Title\r\n \r\n \r\n All\r\n \r\n {\r\n state.titles.map((item, index) => (\r\n {item.TITLE}\r\n ))\r\n }\r\n\r\n \r\n \r\n\r\n \r\n Filter by Department\r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n );\r\n}\r\n\r\nexport default EmployeeDirectory;\r\n\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\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import 'react-app-polyfill/ie9';\r\nimport 'react-app-polyfill/stable';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport './reactStyles.css';\r\nimport EmployeeDirectory from './EmployeeDirectory';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\n\r\nReactDOM.render(, document.getElementById('root'));\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\r\n"],"sourceRoot":""}