{"version":3,"sources":["components/loader/styles.module.css","routes/constants.js","routes/page-not-found/index.js","utils/utils.js","routes/login/constants.js","hooks/use-fetch/constants.js","hooks/use-fetch/index.js","components/loader/index.js","routes/login/index.js","routes/logout/constants.js","routes/logout/index.js","App.js","index.js","routes/page-not-found/styles.module.css"],"names":["module","exports","PAGE_PATH","PageNotFound","className","styles","container","box","message","getQueryParam","name","queryString","window","location","search","hash","split","val","URLSearchParams","get","QUERY_PARAMETERS","HTTP_METHOD","useFetch","url","options","React","data","setData","error","setError","loading","setLoading","abortController","AbortController","signal","a","fetch","response","ok","json","aborted","text","Error","doFetch","abort","Loader","ellipsis","Authenticator","token","nextUrl","method","FetchConstants","headers","body","JSON","stringify","href","document","referrer","Login","Utils","LoginConstants","console","log","Logout","LogoutConstants","App","path","RouteConstants","component","baseUrl","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","render","basename"],"mappings":"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","file":"static/js/main.a92dc1f0.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__2xS2B\",\"ellipsis\":\"styles_ellipsis__1Os4q\",\"lds-ellipsis1\":\"styles_lds-ellipsis1__LPD8_\",\"lds-ellipsis2-ltr\":\"styles_lds-ellipsis2-ltr__1FA1I\",\"lds-ellipsis3\":\"styles_lds-ellipsis3__2mVw8\",\"lds-ellipsis2-rtl\":\"styles_lds-ellipsis2-rtl__2MgIS\"};","export const PAGE_PATH = {\r\n LOGIN: \"/Login\",\r\n LOG_OUT: \"/Logout\",\r\n PAGE_NOT_FOUND: \"/\"\r\n};","import styles from \"./styles.module.css\";\r\nimport * as React from \"react\";\r\n\r\nconst PageNotFound = () => {\r\n return (\r\n
\r\n
\r\n 404: Sorry, we can't find that page\r\n
\r\n
\r\n );\r\n};\r\n\r\nPageNotFound.propTypes = {\r\n \r\n};\r\n\r\nexport default PageNotFound;","import * as Constants from \"utils/constants\";\r\n\r\nexport function getLanguage() {\r\n var languageWithoutRegionCode = navigator.language.split('-')[0];\r\n switch (languageWithoutRegionCode) {\r\n case \"en\": return Constants.LANGUAGE.ENGLISH;\r\n case \"es\": return Constants.LANGUAGE.SPANISH;\r\n default: throw Error(`Unsupported language '${languageWithoutRegionCode}' provided.`);\r\n }\r\n}\r\n\r\nexport function getQueryParam(name) {\r\n var queryString = window.location.search;\r\n if (queryString === \"\")\r\n queryString = window.location.hash.split('?')[1];\r\n var params = new URLSearchParams(queryString);\r\n var val = params.get(name);\r\n if (!val)\r\n return null;\r\n return val;\r\n}","export const QUERY_PARAMETERS = {\r\n TOKEN: \"token\",\r\n NEXT_URL: \"nextUrl\"\r\n};","export const HTTP_METHOD = {\r\n GET: \"GET\",\r\n POST: \"POST\",\r\n PUT: \"PUT\",\r\n DELETE: \"DELETE\",\r\n};\r\n\r\nexport const API_STATUS = {\r\n PENDING: \"API_PENDING\",\r\n SUCCESS: \"API_SUCCESS\",\r\n ERROR: \"API_ERROR\",\r\n};","import * as React from \"react\";\r\n\r\nconst useFetch = (url, options) => {\r\n const [data, setData] = React.useState(null)\r\n const [error, setError] = React.useState(null);\r\n const [loading, setLoading] = React.useState(true);\r\n\r\n React.useEffect(() => {\r\n const abortController = new AbortController();\r\n const signal = abortController.signal;\r\n\r\n const doFetch = async () => {\r\n try {\r\n const response = await fetch(url, options);\r\n\r\n if (response.ok) {\r\n const json = await response.json();\r\n\r\n if (!signal.aborted)\r\n setData(json);\r\n }\r\n else {\r\n const text = await response.text();\r\n throw new Error(text);\r\n }\r\n }\r\n catch (error) {\r\n if (!signal.aborted)\r\n setError(error);\r\n }\r\n finally {\r\n if (!signal.aborted)\r\n setLoading(false);\r\n }\r\n };\r\n\r\n doFetch(url, options);\r\n \r\n return () => {\r\n abortController.abort();\r\n };\r\n }, [url, options]);\r\n \r\n return { data, loading, error };\r\n};\r\n\r\nexport default useFetch;","import styles from \"./styles.module.css\";\r\nimport * as React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nconst Loader = () => {\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\nLoader.propTypes = {\r\n message: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default Loader;","import * as Utils from \"utils/utils\";\r\nimport * as LoginConstants from \"routes/login/constants\";\r\nimport * as React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport * as FetchConstants from \"hooks/use-fetch/constants\";\r\nimport useFetch from \"hooks/use-fetch\";\r\nimport Loader from \"components/loader\";\r\n\r\nconst Login = () => {\r\n const token = Utils.getQueryParam(LoginConstants.QUERY_PARAMETERS.TOKEN);\r\n const nextUrl = Utils.getQueryParam(LoginConstants.QUERY_PARAMETERS.NEXT_URL);\r\n\r\n if (token) {\r\n return (\r\n \r\n );\r\n }\r\n else {\r\n console.log(\"No token present.\");\r\n window.location.href = `${document.referrer}?ssoError=1`;\r\n }\r\n};\r\n\r\nconst Authenticator = ({ token, nextUrl }) => {\r\n // Without memoizing this value, useFetch gets called over and over again\r\n const url = React.useMemo(() => (\"api/Authentication/SetCookie\"), []);\r\n\r\n // Without memoizing this value, useFetch gets called over and over again\r\n const options = React.useMemo(() => ({\r\n method: FetchConstants.HTTP_METHOD.POST,\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify({ token: token })\r\n }), [token]);\r\n\r\n const { loading, error } = useFetch(url, options);\r\n \r\n if (loading) {\r\n return (\r\n \r\n );\r\n }\r\n else if (error) {\r\n window.location.href = `${document.referrer}?ssoError=1`;\r\n }\r\n else {\r\n window.location.href = nextUrl ?? document.referrer;\r\n }\r\n};\r\n\r\nAuthenticator.propTypes = {\r\n token: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default Login;","export const QUERY_PARAMETERS = {\r\n NEXT_URL: \"nextUrl\"\r\n};","import * as Utils from \"utils/utils\";\r\nimport * as LogoutConstants from \"routes/logout/constants\";\r\nimport * as React from \"react\";\r\nimport * as FetchConstants from \"hooks/use-fetch/constants\";\r\nimport useFetch from \"hooks/use-fetch\";\r\nimport Loader from \"components/loader\";\r\n\r\nconst Logout = () => {\r\n // Without memoizing this value, useFetch gets called over and over again\r\n const url = React.useMemo(() => (\"api/Authentication/ExpireCookie\"), []);\r\n\r\n // Without memoizing this value, useFetch gets called over and over again\r\n const options = React.useMemo(() => ({\r\n method: FetchConstants.HTTP_METHOD.POST\r\n }), []);\r\n\r\n const { loading, error } = useFetch(url, options);\r\n\r\n if (loading) {\r\n return (\r\n \r\n );\r\n }\r\n else if (error) {\r\n window.location.href = `${document.referrer}?ssoError=1`;\r\n }\r\n else {\r\n const nextUrl = Utils.getQueryParam(LogoutConstants.QUERY_PARAMETERS.NEXT_URL);\r\n window.location.href = nextUrl ?? document.referrer;\r\n }\r\n};\r\n\r\nLogout.propTypes = {\r\n \r\n};\r\n\r\nexport default Logout;","import \"global.css\";\r\nimport * as React from \"react\";\r\nimport { Route, Switch } from \"react-router-dom\"\r\nimport * as RouteConstants from \"routes/constants\";\r\nimport PageNotFound from \"routes/page-not-found\";\r\nimport Login from \"routes/login\";\r\nimport Logout from \"routes/logout\";\r\n\r\nconst App = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default App;","import 'bootstrap/dist/css/bootstrap.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { HashRouter } from 'react-router-dom';\r\nimport App from 'App';\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);","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__1yXGI\",\"box\":\"styles_box__2LszU\",\"message\":\"styles_message__2-__6\"};"],"sourceRoot":""}