{"version":3,"sources":["components/Layout.js","components/GoogleMapsAutocomplete.js","components/Home.js","components/JobDetails.js","App.js","registerServiceWorker.js","index.js"],"names":["Layout","Container","this","props","children","Component","displayName","name","autocompleteService","current","geocoderService","useStyles","makeStyles","theme","icon","color","palette","text","secondary","marginRight","spacing","GoogleMaps","classes","React","useState","address","inputValue","setInputValue","options","setOptions","loaded","useRef","window","document","querySelector","src","position","id","script","createElement","setAttribute","appendChild","loadScript","_env_","REACT_APP_MAPS_KEY","fetchGeocoder","useMemo","throttle","request","callback","geocode","fetchAutocomplete","getPlacePredictions","initializeGeocoder","google","maps","Geocoder","console","log","useEffect","active","places","AutocompleteService","input","results","newOptions","handleUseMyLocation","e","a","navigator","geolocation","getCurrentPosition","location","lat","parseFloat","coords","latitude","lng","longitude","onAddressChange","formatted_address","geometry","handleSelectRadiusChange","onSelectRadiusChange","handleChange","description","Grid","container","item","xs","Tooltip","title","IconButton","style","marginTop","onClick","Room","Autocomplete","width","getOptionLabel","option","filterOptions","x","autoComplete","includeInputInList","filterSelectedOptions","value","onChange","event","newValue","onInputChange","newInputValue","renderInput","params","TextField","label","helperText","fullWidth","renderOption","structured_formatting","matches","main_text_matched_substrings","parts","parse","main_text","map","match","offset","length","alignItems","LocationOn","className","part","index","key","fontWeight","highlight","Typography","variant","secondary_text","select","marginLeft","radius","MenuItem","Home","newAddress","setState","fetchJobs","handleSubmit","submitRequest","handleMoreInformation","b","history","push","setSelectedKeywords","keywords","target","state","searchResults","officeNumber","parseInt","selectRadiusOpen","loading","isMapsLibLoaded","bind","requestOptions","method","headers","body","JSON","stringify","distance","fetch","then","response","isJson","get","includes","json","data","ok","error","message","status","Promise","reject","catch","alert","Card","elevation","textAlign","component","gutterbottom","jobPostings","filter","job_title","toLowerCase","job_description","CardContent","Link","office_number","replace","job_location","charLimit","readMoreText","Button","size","readLessText","readMoreClassName","readLessClassName","CardActions","returnNoResults","paddingBottom","margin","maxWidth","Paper","LinearProgress","returnSearchResults","JobDetails","getback","goBack","jobdetails","gutterBottom","border","boxShadow","Divider","returnDetailIfNotEmpty","job_industry","job_type","job_skills","padding","dangerouslySetInnerHTML","__html","sanitizeHtml","office_name","contact_name","startIcon","Call","href","contact_telephone","Email","application_email","open","application_url","returnjobResult","App","createTheme","primary","light","main","dark","contrastText","ThemeProvider","exact","path","isLocalhost","Boolean","hostname","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","baseUrl","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","render","basename","URL","process","origin","addEventListener","indexOf","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.d12e3be0.chunk.js","sourcesContent":["import React, { Component } from 'react';\r\nimport { Container } from 'reactstrap';\r\n\r\nexport class Layout extends Component {\r\n static displayName = Layout.name;\r\n\r\n render () {\r\n return (\r\n
\r\n \r\n {this.props.children}\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport {\r\n Room,\r\n LocationOn\r\n} from '@material-ui/icons';\r\nimport {\r\n TextField,\r\n Grid,\r\n Typography,\r\n MenuItem,\r\n Tooltip,\r\n IconButton\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport parse from 'autosuggest-highlight/parse';\r\nimport throttle from 'lodash/throttle';\r\n\r\nfunction loadScript(src, position, id) {\r\n if (!position) {\r\n return;\r\n }\r\n\r\n const script = document.createElement('script');\r\n script.setAttribute('async', '');\r\n script.setAttribute('id', id);\r\n script.src = src;\r\n position.appendChild(script);\r\n}\r\n\r\nconst autocompleteService = { current: null };\r\nconst geocoderService = { current: null };\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n icon: {\r\n color: theme.palette.text.secondary,\r\n marginRight: theme.spacing(2),\r\n },\r\n}));\r\n\r\nexport default function GoogleMaps(props) {\r\n const classes = useStyles();\r\n const [inputValue, setInputValue] = React.useState(props.address);\r\n const [options, setOptions] = React.useState([]);\r\n const loaded = React.useRef(false);\r\n\r\n if (typeof window !== 'undefined' && !loaded.current) {\r\n if (!document.querySelector('#google-maps')) {\r\n loadScript(\r\n `https://maps.googleapis.com/maps/api/js?key=${window._env_.REACT_APP_MAPS_KEY}&libraries=places`,\r\n document.querySelector('head'),\r\n 'google-maps',\r\n );\r\n }\r\n\r\n loaded.current = true;\r\n }\r\n\r\n const fetchGeocoder = React.useMemo(\r\n () =>\r\n throttle((request, callback) => {\r\n geocoderService.current.geocode(request, callback);\r\n }, 200),\r\n [],\r\n );\r\n\r\n const fetchAutocomplete = React.useMemo(\r\n () =>\r\n throttle((request, callback) => {\r\n autocompleteService.current.getPlacePredictions(request, callback);\r\n }, 200),\r\n [],\r\n );\r\n\r\n let initializeGeocoder = () => {\r\n if (!geocoderService.current && window.google) {\r\n geocoderService.current = new window.google.maps.Geocoder();\r\n }\r\n\r\n if (!geocoderService.current) {\r\n console.log(\"geocoderService was not initialized properly\");\r\n return undefined;\r\n }\r\n }\r\n\r\n let initializeAutocomplete = () => {\r\n if (!autocompleteService.current && window.google) {\r\n autocompleteService.current = new window.google.maps.places.AutocompleteService();\r\n }\r\n\r\n if (!autocompleteService.current) {\r\n\r\n console.log(\"autocompleteService was not initialized properly\");\r\n return undefined;\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n let active = true;\r\n\r\n initializeAutocomplete();\r\n initializeGeocoder();\r\n\r\n if (inputValue === '') {\r\n setOptions(props.address ? [props.address] : []);\r\n return undefined;\r\n }\r\n\r\n fetchAutocomplete({ input: inputValue }, (results) => {\r\n if (active) {\r\n let newOptions = [];\r\n\r\n if (props.address) {\r\n newOptions = [props.address];\r\n }\r\n\r\n if (results) {\r\n newOptions = [...newOptions, ...results];\r\n }\r\n\r\n setOptions(newOptions);\r\n }\r\n });\r\n\r\n return () => {\r\n active = false;\r\n };\r\n }, [props.address, inputValue, fetchAutocomplete]);\r\n\r\n let handleUseMyLocation = async (e) => {\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition((position) => {\r\n initializeGeocoder();\r\n fetchGeocoder(({\r\n location: {\r\n lat: parseFloat(position.coords.latitude),\r\n lng: parseFloat(position.coords.longitude)\r\n }\r\n }), results => {\r\n if (results) {\r\n props.onAddressChange(\r\n results[0].formatted_address,\r\n results[0].geometry.location.lat(),\r\n results[0].geometry.location.lng());\r\n } else {\r\n props.onAddressChange(null, null, null);\r\n }\r\n });\r\n })\r\n }\r\n }\r\n\r\n let handleSelectRadiusChange = async (e) => {\r\n props.onSelectRadiusChange(e);\r\n }\r\n\r\n let handleChange = async (address) => {\r\n initializeGeocoder();\r\n if (address) {\r\n fetchGeocoder({\r\n address: address.description\r\n }, results => {\r\n if (results) {\r\n props.onAddressChange(\r\n results[0].formatted_address,\r\n results[0].geometry.location.lat(),\r\n results[0].geometry.location.lng());\r\n }\r\n });\r\n } else {\r\n props.onAddressChange(null, null, null);\r\n }\r\n }\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 (typeof option === 'string' ? option : option.description)}\r\n filterOptions={(x) => x}\r\n options={options}\r\n autoComplete\r\n includeInputInList\r\n filterSelectedOptions\r\n value={props.address}\r\n onChange={(event, newValue) => {\r\n setOptions(newValue ? [newValue, ...options] : options);\r\n handleChange(newValue);\r\n }}\r\n onInputChange={(event, newInputValue) => {\r\n setInputValue(newInputValue);\r\n }}\r\n renderInput={(params) => (\r\n \r\n )}\r\n renderOption={(option) => {\r\n if (option.structured_formatting) {\r\n const matches = option.structured_formatting.main_text_matched_substrings;\r\n const parts = parse(\r\n option.structured_formatting.main_text,\r\n matches.map((match) => [match.offset, match.offset + match.length]),\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {parts.map((part, index) => (\r\n \r\n {part.text}\r\n \r\n ))}\r\n\r\n \r\n {option.structured_formatting.secondary_text}\r\n \r\n \r\n \r\n );\r\n }\r\n }}\r\n />\r\n \r\n \r\n \r\n Unlimited\r\n 1\r\n 2\r\n 5\r\n 10\r\n 25\r\n 50\r\n 100\r\n 250\r\n \r\n \r\n \r\n\r\n );\r\n}\r\n","import React, { Component } from 'react';\r\nimport {\r\n Button,\r\n CardContent,\r\n Typography,\r\n TextField,\r\n Grid,\r\n Card,\r\n CardActions,\r\n Paper,\r\n LinearProgress,\r\n Link\r\n} from '@material-ui/core';\r\nimport ReactReadMoreReadLess from \"react-read-more-read-less\";\r\nimport GoogleMaps from './GoogleMapsAutocomplete';\r\n\r\nexport class Home extends Component {\r\n static displayName = Home.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n searchResults: [],\r\n keywords: null,\r\n officeNumber: parseInt(this.props.match.params.officeNumber),\r\n radius: \"\",\r\n latitude: null,\r\n longitude: null,\r\n selectRadiusOpen: false,\r\n loading: true,\r\n address: \"\",\r\n isMapsLibLoaded: false,\r\n }\r\n\r\n this.setSelectedKeywords = this.setSelectedKeywords.bind(this);\r\n }\r\n\r\n async componentDidMount() {\r\n if (this.state.officeNumber) {\r\n await this.submitRequest();\r\n }\r\n }\r\n\r\n handleChange = async (newAddress, latitude, longitude) => {\r\n this.setState({\r\n address: newAddress,\r\n latitude: latitude,\r\n longitude: longitude\r\n });\r\n if (!newAddress) {\r\n // had to force the fetch to not use lat,lng,radius due to a race condition in the async call and when state\r\n // is finally propagated\r\n await this.fetchJobs(null);\r\n }\r\n };\r\n\r\n handleSubmit = async () => {\r\n await this.submitRequest();\r\n }\r\n\r\n handleMoreInformation = async (a, b) => {\r\n this.props.history.push('/' + a + '/' + b);\r\n }\r\n\r\n setSelectedKeywords = async (event) => {\r\n this.setState({\r\n keywords: event.target.value\r\n });\r\n\r\n }\r\n\r\n handleSelectRadiusChange = async (event) => {\r\n this.setState({\r\n radius: event.target.value\r\n });\r\n }\r\n\r\n async submitRequest() {\r\n let requestOptions;\r\n if (this.state.latitude\r\n && this.state.longitude\r\n && this.state.radius) {\r\n console.log(`Fetching by lat,lng,radius ${this.state.latitude}, ${this.state.longitude}, ${this.state.radius}`);\r\n requestOptions = {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({\r\n latitude: this.state.latitude,\r\n longitude: this.state.longitude,\r\n distance: parseInt(this.state.radius)\r\n })\r\n };\r\n }\r\n\r\n await this.fetchJobs(requestOptions);\r\n }\r\n\r\n async fetchJobs(requestOptions) {\r\n this.setState({\r\n loading: true\r\n });\r\n\r\n if (!requestOptions) {\r\n requestOptions = {\r\n method: 'GET'\r\n };\r\n }\r\n\r\n await fetch(`/api/jobboard/jobs/${this.state.officeNumber}`, requestOptions)\r\n .then(async (response) => {\r\n let isJson = response.headers.get('content-type')?.includes('application/json');\r\n let data = isJson && await response.json();\r\n\r\n if (!response.ok) {\r\n let error = (data && data.message) || response.status;\r\n return Promise.reject(error);\r\n }\r\n\r\n this.setState({ searchResults: data });\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n alert(\"failed to call the api\");\r\n });\r\n\r\n this.setState({ loading: false });\r\n }\r\n\r\n returnNoResults() {\r\n return (\r\n \r\n \r\n No results found\r\n \r\n );\r\n }\r\n\r\n returnSearchResults() {\r\n if (this.state.searchResults?.length === 0) {\r\n this.returnNoResults();\r\n }\r\n else {\r\n let jobPostings = this.state.searchResults.filter((data) => {\r\n if (this.state.keywords == null) {\r\n return data;\r\n } else if (\r\n data.job_title.toLowerCase().includes(this.state.keywords.toLowerCase())\r\n || data.job_description.toLowerCase().includes(this.state.keywords.toLowerCase())) {\r\n return data;\r\n }\r\n }).map(data => {\r\n return (\r\n \r\n \r\n \r\n this.handleMoreInformation(data.office_number, data.id)}>\r\n {data.job_title.replace(/(<([^>]+)>)/gi, \"\")}\r\n \r\n \r\n \r\n {data.job_location}\r\n \r\n \r\n\r\n Read more >>}\r\n readLessText={}\r\n readMoreClassName=\"read-more-less--more\"\r\n readLessClassName=\"read-more-less--less\"\r\n\r\n >\r\n {data.job_description.replace(/(<([^>]+)>)/gi, \"\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n });\r\n\r\n return jobPostings.length === 0\r\n ? this.returnNoResults()\r\n : jobPostings;\r\n }\r\n }\r\n\r\n render() {\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\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Search\r\n \r\n \r\n \r\n \r\n \r\n\r\n {\r\n this.state.loading ? : this.returnSearchResults()\r\n }\r\n
\r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport {\r\n Button,\r\n CardContent,\r\n Typography,\r\n Card,\r\n CardActions,\r\n LinearProgress,\r\n Divider,\r\n \r\n} from '@material-ui/core';\r\nimport sanitizeHtml from 'sanitize-html';\r\nimport {\r\n Email,\r\n Call\r\n } from '@material-ui/icons';\r\n\r\n\r\nexport class JobDetails extends Component {\r\n static displayName = JobDetails.name;\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n jobdetails: null,\r\n officeNumber: this.props.match.params.officeNumber,\r\n id: this.props.match.params.id,\r\n loading: true\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n let requestOptions;\r\n requestOptions = {\r\n method: 'GET'\r\n };\r\n await fetch(`/api/jobboard/jobs/${this.state.officeNumber}/${this.state.id}`, requestOptions)\r\n .then(async (response) => {\r\n let isJson = response.headers.get('content-type')?.includes('application/json');\r\n let data = isJson && await response.json();\r\n if (!response.ok) {\r\n let error = (data && data.message) || response.status;\r\n return Promise.reject(error);\r\n }\r\n this.setState({\r\n jobdetails: data,\r\n loading: false\r\n });\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n alert(\"failed to call the api\");\r\n });\r\n\r\n }\r\n getback = () => {\r\n this.props.history.goBack();\r\n }\r\n returnNoResults() {\r\n return (\r\n \r\n \r\n No Data found\r\n \r\n );\r\n }\r\n\r\n returnDetailIfNotEmpty(title, value, color, variant){\r\n if (value){\r\n return ({title ? title + \": \" : \"\"}{value})\r\n }\r\n else{\r\n return;\r\n }\r\n }\r\n\r\n returnjobResult() {\r\n if (this.state.jobdetails?.length === 0) {\r\n this.returnNoResults();\r\n }\r\n else {\r\n return (\r\n \r\n \r\n {this.state.jobdetails.job_title.replace(/(<([^>]+)>)/gi, \"\")}\r\n \r\n {this.returnDetailIfNotEmpty(\"Location\", this.state.jobdetails.job_location, \"textSecondary\", \"subtitle2\")}\r\n {this.returnDetailIfNotEmpty(\"Industry\", this.state.jobdetails.job_industry, \"textSecondary\", \"subtitle2\")}\r\n {this.returnDetailIfNotEmpty(\"Type\", this.state.jobdetails.job_type, \"textSecondary\", \"subtitle2\")}\r\n {this.returnDetailIfNotEmpty(\"Skills\", this.state.jobdetails.job_skills, \"textSecondary\", \"subtitle2\")}\r\n \r\n
\r\n \r\n Office: {this.state.jobdetails.office_name}\r\n Contact: {this.state.jobdetails.contact_name}\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 render() {\r\n return (\r\n
\r\n {\r\n this.state.loading ? : this.returnjobResult()\r\n }\r\n
\r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { Route } from 'react-router';\r\nimport { Layout } from './components/Layout';\r\nimport { Home } from './components/Home';\r\nimport { JobDetails } from './components/JobDetails';\r\nimport { \r\n ThemeProvider,\r\n createTheme\r\n} from '@material-ui/core/styles';\r\n\r\nexport default class App extends Component {\r\n static displayName = App.name;\r\n\r\n render() {\r\n const theme = createTheme({\r\n palette: {\r\n primary: {\r\n light: '#0096D6',\r\n main: '#0077c0',\r\n dark: '#005288',\r\n contrastText: '#fff'\r\n },\r\n secondary: {\r\n main: '#6639b7',\r\n contrastText: '#fff'\r\n },\r\n }\r\n });\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","// In production, we register a service worker to serve assets from local cache.\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 the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\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.1/8 is 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 default function register () {\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);\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/facebookincubator/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. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW (swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\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 }\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) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').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);\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 'bootstrap/dist/css/bootstrap.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\nimport registerServiceWorker from './registerServiceWorker';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement);\r\n\r\nregisterServiceWorker();\r\n\r\n"],"sourceRoot":""}