{"version":3,"sources":["assets/images/logo/logo-small.png","redux/navbar.js","redux/rootReducer.js","redux/store.js","configs/acl/initialAbility.js","configs/acl/ability.js","@core/components/ripple-button/index.js","serviceWorkerRegistration.js","reportWebVitals.js","index.js","configs/themeConfig.js","components/api-authorization/ApiAuthorizationConstants.js","components/api-authorization/AuthorizeService.js","redux/layout.js","utility/context/ThemeColors.js","utility/context/Can.js","assets/images/logo/logo-white.png","@core/components/spinner/Fallback-spinner.js"],"names":["getBookmarks","createAsyncThunk","axios","get","response","data","suggestions","bookmarks","updateBookmarked","id","post","layoutSlice","createSlice","name","initialState","query","reducers","handleSearchQuery","state","action","payload","extraReducers","builder","addCase","fulfilled","objectToUpdate","find","item","isBookmarked","bookmarkIndex","findIndex","x","push","splice","rootReducer","actions","navbar","layout","store","configureStore","reducer","middleware","getDefaultMiddleware","serializableCheck","initialAbility","subject","this","update","authService","getUser","userData","existingAbility","JSON","parse","ability","subscribe","Ability","Button","Ripple","className","children","onClick","rest","useState","mounted","setMounted","isRippling","setIsRippling","y","coords","setCoords","useEffect","setTimeout","classnames","e","rect","target","getBoundingClientRect","clientX","left","clientY","top","style","Boolean","window","location","hostname","match","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","LazyApp","lazy","container","document","getElementById","root","createRoot","abilityService","baseUrl","getElementsByTagName","getAttribute","queryClient","QueryClient","defaultOptions","queries","refetchOnWindowFocus","retry","render","basename","fallback","Provider","value","client","initialIsOpen","position","themeConfig","toastPosition","toastOptions","navigator","serviceWorker","ready","registration","unregister","catch","error","console","message","app","appName","appLogoImage","require","default","isRTL","skin","type","contentWidth","menu","isHidden","isCollapsed","backgroundColor","footer","customizer","scrollTop","ApplicationName","QueryParameterNames","ReturnUrl","Message","LogoutActions","LogoutCallback","Logout","LoggedOut","LoginActions","Login","LoginCallback","LoginFailed","Profile","Register","prefix","ApplicationPaths","DefaultLoginRedirectPath","ApiAuthorizationClientConfigurationUrl","ApiAuthorizationPrefix","LogOut","LogOutCallback","IdentityRegisterPath","IdentityManagePath","AuthenticationResultStatus","Redirect","Success","Fail","AuthorizeService","_callbacks","_nextSubscriptionId","_user","_isAuthenticated","_popUpDisabled","user","profile","ensureUserManagerInitialized","userManager","access_token","signinSilent","createArguments","silentUser","updateState","success","log","Error","signinPopup","popUpUser","signinRedirect","redirect","url","signinCallback","signoutPopup","undefined","signoutRedirect","signoutCallback","notifySubscribers","callback","subscription","subscriptionId","subscriptionIndex","map","element","index","found","filter","length","i","useReplaceToNavigate","status","fetch","ok","json","settings","automaticSilentRenew","includeIdTokenInSilentRenew","userStore","WebStorageStateStore","UserManager","events","addUserSignedOut","removeUser","localStorage","getItem","initialSkin","initialDirection","lastLayout","menuCollapsed","initialMenuCollapsed","footerType","navbarType","menuHidden","navbarColor","handleRTL","setItem","stringify","handleSkin","handleLayout","handleFooterType","handleNavbarType","handleMenuHidden","handleLastLayout","handleNavbarColor","handleContentWidth","handleMenuCollapsed","ThemeColors","createContext","ThemeContext","colors","setColors","getHex","color","getComputedStyle","body","getPropertyValue","trim","obj","primary","light","concat","main","secondary","danger","warning","info","dark","AbilityContext","createContextualCan","Consumer","SpinnerComponent","src","logo","alt"],"mappings":"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","file":"static/js/main.d7c37c15.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/logo-small.20f458f2.png\";","// ** Redux Imports\nimport { createSlice, createAsyncThunk } from \"@reduxjs/toolkit\"\n\n// ** Axios Imports\nimport axios from \"axios\"\n\nexport const getBookmarks = createAsyncThunk(\n \"layout/getBookmarks\",\n async () => {\n const response = await axios.get(\"/api/bookmarks/data\")\n return {\n data: response.data.suggestions,\n bookmarks: response.data.bookmarks\n }\n }\n)\n\nexport const updateBookmarked = createAsyncThunk(\n \"layout/updateBookmarked\",\n async (id) => {\n await axios.post(\"/api/bookmarks/update\", { id })\n return id\n }\n)\n\nexport const layoutSlice = createSlice({\n name: \"layout\",\n initialState: {\n query: \"\",\n bookmarks: [],\n suggestions: []\n },\n reducers: {\n handleSearchQuery: (state, action) => {\n state.query = action.payload\n }\n },\n extraReducers: (builder) => {\n builder\n .addCase(getBookmarks.fulfilled, (state, action) => {\n state.suggestions = action.payload.data\n state.bookmarks = action.payload.bookmarks\n })\n .addCase(updateBookmarked.fulfilled, (state, action) => {\n let objectToUpdate\n\n // ** find & update object\n state.suggestions.find((item) => {\n if (item.id === action.payload) {\n item.isBookmarked = !item.isBookmarked\n objectToUpdate = item\n }\n })\n\n // ** Get index to add or remove bookmark from array\n const bookmarkIndex = state.bookmarks.findIndex(\n (x) => x.id === action.payload\n )\n\n if (bookmarkIndex === -1) {\n state.bookmarks.push(objectToUpdate)\n } else {\n state.bookmarks.splice(bookmarkIndex, 1)\n }\n })\n }\n})\n\nexport const { handleSearchQuery } = layoutSlice.actions\n\nexport default layoutSlice.reducer\n","// ** Reducers Imports\nimport layout from \"./layout\"\nimport navbar from \"./navbar\"\n\nconst rootReducer = { navbar, layout }\n\nexport default rootReducer\n","// ** Redux Imports\nimport rootReducer from \"./rootReducer\"\nimport { configureStore } from \"@reduxjs/toolkit\"\n\nconst store = configureStore({\n reducer: rootReducer,\n middleware: (getDefaultMiddleware) => {\n return getDefaultMiddleware({\n serializableCheck: false\n })\n }\n})\n\nexport { store }\n","// ** Initial user ability\nexport const initialAbility = [\n {\n action: 'read',\n subject: 'Auth'\n }\n]\n\nexport const _ = undefined\n","import { Ability } from '@casl/ability'\nimport { initialAbility } from './initialAbility'\n\nimport authService from '../../components/api-authorization/AuthorizeService'\n\nclass AbilityService {\n #ability = null\n\n constructor() {\n authService.subscribe(() => this.#authenticationChanged())\n this.#ability = new Ability(initialAbility)\n\n this.#populateAuthenticationState()\n }\n\n async #authenticationChanged() {\n this.#ability.update(initialAbility)\n await this.#populateAuthenticationState()\n }\n\n async #populateAuthenticationState() {\n const userData = await authService.getUser()\n const existingAbility = userData && JSON.parse(userData.ability)\n\n if (existingAbility) { this.#ability.update(existingAbility) }\n }\n\n get Ability() {\n return this.#ability\n }\n}\n\nexport default new AbilityService()","// ** React Imports\nimport { useState, useEffect } from \"react\"\n\n// ** Third Party Components\nimport classnames from \"classnames\"\n\n// ** Reactstrap Imports\nimport { Button } from \"reactstrap\"\n\n// ** Styles\nimport \"./ripple-button.scss\"\n\nconst RippleButton = ({ className, children, onClick, ...rest }) => {\n // ** States\n const [mounted, setMounted] = useState(false)\n const [isRippling, setIsRippling] = useState(false)\n const [coords, setCoords] = useState({ x: -1, y: -1 })\n\n // ** Toggle mounted on mount & unmount\n useEffect(() => {\n setMounted(true)\n return () => setMounted(false)\n }, [])\n\n // ** Check for coords and set ripple\n useEffect(() => {\n if (mounted) {\n if (coords.x !== -1 && coords.y !== -1) {\n setIsRippling(true)\n setTimeout(() => setIsRippling(false), 500)\n } else {\n setIsRippling(false)\n }\n }\n }, [coords])\n\n // ** Reset Coords on ripple end\n useEffect(() => {\n if (mounted) {\n if (!isRippling) setCoords({ x: -1, y: -1 })\n }\n }, [isRippling])\n\n return (\n {\n const rect = e.target.getBoundingClientRect()\n setCoords({ x: e.clientX - rect.left, y: e.clientY - rect.top })\n if (onClick) {\n onClick(e)\n }\n }}\n {...rest}\n >\n {children}\n {isRippling ? (\n \n ) : null}\n \n )\n}\n\n// ** PropTypes\nRippleButton.propTypes = {\n ...Button.propTypes\n}\n\nButton.Ripple = RippleButton\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://cra.link/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(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\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 // eslint-disable-next-line eqeqeq\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://cra.link/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 // eslint-disable-next-line eqeqeq\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('No internet connection found. App is running in offline mode.')\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://cra.link/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\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","const reportWebVitals = (onPerfEntry) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry)\r\n getFID(onPerfEntry)\r\n getFCP(onPerfEntry)\r\n getLCP(onPerfEntry)\r\n getTTFB(onPerfEntry)\r\n })\r\n }\r\n}\r\n\r\nexport default reportWebVitals\r\n","// ** React Imports\nimport { Suspense, lazy } from \"react\"\nimport { createRoot } from \"react-dom/client\"\nimport { BrowserRouter } from \"react-router-dom\"\n\n// ** Redux Imports\nimport { store } from \"./redux/store\"\nimport { Provider } from \"react-redux\"\n\n// ** ThemeColors Context\nimport abilityService from './configs/acl/ability'\nimport { AbilityContext } from './utility/context/Can'\nimport { ThemeContext } from \"./utility/context/ThemeColors\"\n\n// ** ThemeConfig\nimport themeConfig from \"./configs/themeConfig\"\n\n// ** Toast\nimport { Toaster } from \"react-hot-toast\"\n\n// ** Spinner (Splash Screen)\nimport Spinner from \"./@core/components/spinner/Fallback-spinner\"\n\n// ** Ripple Button\nimport \"./@core/components/ripple-button\"\n\n// ** PrismJS\nimport \"prismjs\"\nimport \"prismjs/themes/prism-tomorrow.css\"\nimport \"prismjs/components/prism-jsx.min\"\n\n// ** React Perfect Scrollbar\nimport \"react-perfect-scrollbar/dist/css/styles.css\"\n\n// ** React Hot Toast Styles\nimport \"@styles/react/libs/react-hot-toasts/react-hot-toasts.scss\"\n\n// ** Core styles\nimport \"./@core/assets/fonts/feather/iconfont.css\"\nimport \"./@core/scss/core.scss\"\nimport \"./assets/scss/style.scss\"\n\n// ** Service Worker\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration'\nimport reportWebVitals from './reportWebVitals'\n\nimport { QueryClient, QueryClientProvider } from \"react-query\"\nimport { ReactQueryDevtools } from \"react-query/devtools\"\n\n// import signalRService from './services/signalRService'\n\n// ** Lazy load app\nconst LazyApp = lazy(() => import(\"./App\"))\n\nconst container = document.getElementById(\"root\")\nconst root = createRoot(container)\n\nconst ability = abilityService.Ability\n\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href')\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n retry: false\n }\n }\n})\n\n// signalRService()\n\nroot.render(\n \n \n }>\n \n \n \n \n \n \n \n \n \n \n \n \n)\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorkerRegistration.unregister()\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals()","// You can customize the template with the help of this file\n\n//Template config options\nconst themeConfig = {\n app: {\n appName: \"برنامج الطائف\",\n appLogoImage: require(\"@src/assets/images/logo/logo-small.png\").default\n },\n layout: {\n isRTL: true,\n skin: \"light\", // light, dark, bordered, semi-dark\n type: \"vertical\", // vertical, horizontal\n contentWidth: \"boxed\", // full, boxed\n menu: {\n isHidden: false,\n isCollapsed: false\n },\n navbar: {\n // ? For horizontal menu, navbar type will work for navMenu type\n type: \"floating\", // static , sticky , floating, hidden\n backgroundColor: \"white\" // BS color options [primary, success, etc]\n },\n footer: {\n type: \"hidden\" // static, sticky, hidden\n },\n customizer: false,\n scrollTop: true, // Enable scroll to top button\n toastPosition: \"top-right\" // top-left, top-center, top-right, bottom-left, bottom-center, bottom-right\n }\n}\n\nexport default themeConfig\n","export const ApplicationName = 'Eltaef.React'\r\n\r\nexport const QueryParameterNames = {\r\n ReturnUrl: 'returnUrl',\r\n Message: 'message'\r\n}\r\n\r\nexport const LogoutActions = {\r\n LogoutCallback: 'logout-callback',\r\n Logout: 'logout',\r\n LoggedOut: 'logged-out'\r\n}\r\n\r\nexport const LoginActions = {\r\n Login: 'login',\r\n LoginCallback: 'login-callback',\r\n LoginFailed: 'login-failed',\r\n Profile: 'profile',\r\n Register: 'register'\r\n}\r\n\r\nconst prefix = '/authentication'\r\n\r\nexport const ApplicationPaths = {\r\n DefaultLoginRedirectPath: '/',\r\n ApiAuthorizationClientConfigurationUrl: `/_configuration/${ApplicationName}`,\r\n ApiAuthorizationPrefix: prefix,\r\n Login: `${prefix}/${LoginActions.Login}`,\r\n LoginFailed: `${prefix}/${LoginActions.LoginFailed}`,\r\n LoginCallback: `${prefix}/${LoginActions.LoginCallback}`,\r\n Register: `${prefix}/${LoginActions.Register}`,\r\n Profile: `${prefix}/${LoginActions.Profile}`,\r\n LogOut: `${prefix}/${LogoutActions.Logout}`,\r\n LoggedOut: `${prefix}/${LogoutActions.LoggedOut}`,\r\n LogOutCallback: `${prefix}/${LogoutActions.LogoutCallback}`,\r\n IdentityRegisterPath: 'Identity/Account/Register',\r\n IdentityManagePath: 'Identity/Account/Manage'\r\n}\r\n","import { UserManager, WebStorageStateStore } from 'oidc-client'\r\nimport { ApplicationPaths, ApplicationName } from './ApiAuthorizationConstants'\r\n\r\nexport const AuthenticationResultStatus = {\r\n Redirect: 'redirect',\r\n Success: 'success',\r\n Fail: 'fail'\r\n}\r\n\r\nexport class AuthorizeService {\r\n _callbacks = []\r\n _nextSubscriptionId = 0\r\n _user = null\r\n _isAuthenticated = false\r\n\r\n // By default pop ups are disabled because they don't work properly on Edge.\r\n // If you want to enable pop up authentication simply set this flag to false.\r\n _popUpDisabled = true\r\n\r\n async isAuthenticated() {\r\n const user = await this.getUser()\r\n return !!user\r\n }\r\n\r\n async getUser() {\r\n if (this._user && this._user.profile) {\r\n return this._user.profile\r\n }\r\n\r\n await this.ensureUserManagerInitialized()\r\n const user = await this.userManager.getUser()\r\n\r\n return user && user.profile\r\n }\r\n\r\n async getAccessToken() {\r\n await this.ensureUserManagerInitialized()\r\n const user = await this.userManager.getUser()\r\n return user && user.access_token\r\n }\r\n\r\n // We try to authenticate the user in three different ways:\r\n // 1) We try to see if we can authenticate the user silently. This happens\r\n // when the user is already logged in on the IdP and is done using a hidden iframe\r\n // on the client.\r\n // 2) We try to authenticate the user using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 3) If the two methods above fail, we redirect the browser to the IdP to perform a traditional\r\n // redirect flow.\r\n async signIn(state) {\r\n await this.ensureUserManagerInitialized()\r\n try {\r\n const silentUser = await this.userManager.signinSilent(this.createArguments())\r\n this.updateState(silentUser)\r\n return this.success(state)\r\n } catch (silentError) {\r\n // User might not be authenticated, fallback to popup authentication\r\n console.log(\"Silent authentication error: \", silentError)\r\n\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\r\n }\r\n\r\n const popUpUser = await this.userManager.signinPopup(this.createArguments())\r\n this.updateState(popUpUser)\r\n return this.success(state)\r\n } catch (popUpError) {\r\n if (popUpError.message === \"Popup window closed\") {\r\n // The user explicitly cancelled the login action by closing an opened popup.\r\n return this.error(\"The user closed the window.\")\r\n } else if (!this._popUpDisabled) {\r\n console.log(\"Popup authentication error: \", popUpError)\r\n }\r\n\r\n // PopUps might be blocked by the user, fallback to redirect\r\n try {\r\n await this.userManager.signinRedirect(this.createArguments(state))\r\n return this.redirect()\r\n } catch (redirectError) {\r\n console.log(\"Redirect authentication error: \", redirectError)\r\n return this.error(redirectError)\r\n }\r\n }\r\n }\r\n }\r\n\r\n async completeSignIn(url) {\r\n try {\r\n await this.ensureUserManagerInitialized()\r\n const user = await this.userManager.signinCallback(url)\r\n this.updateState(user)\r\n return this.success(user && user.state)\r\n } catch (error) {\r\n console.log('There was an error signing in: ', error)\r\n return this.error('There was an error signing in.')\r\n }\r\n }\r\n\r\n // We try to sign out the user in two different ways:\r\n // 1) We try to do a sign-out using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 2) If the method above fails, we redirect the browser to the IdP to perform a traditional\r\n // post logout redirect flow.\r\n async signOut(state) {\r\n await this.ensureUserManagerInitialized()\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\r\n }\r\n\r\n await this.userManager.signoutPopup(this.createArguments())\r\n this.updateState(undefined)\r\n return this.success(state)\r\n } catch (popupSignOutError) {\r\n console.log(\"Popup signout error: \", popupSignOutError)\r\n try {\r\n await this.userManager.signoutRedirect(this.createArguments(state))\r\n return this.redirect()\r\n } catch (redirectSignOutError) {\r\n console.log(\"Redirect signout error: \", redirectSignOutError)\r\n return this.error(redirectSignOutError)\r\n }\r\n }\r\n }\r\n\r\n async completeSignOut(url) {\r\n await this.ensureUserManagerInitialized()\r\n try {\r\n const response = await this.userManager.signoutCallback(url)\r\n this.updateState(null)\r\n return this.success(response && response.data)\r\n } catch (error) {\r\n console.log(`There was an error trying to log out '${error}'.`)\r\n return this.error(error)\r\n }\r\n }\r\n\r\n updateState(user) {\r\n this._user = user\r\n this._isAuthenticated = !!this._user\r\n this.notifySubscribers()\r\n }\r\n\r\n subscribe(callback) {\r\n this._callbacks.push({ callback, subscription: this._nextSubscriptionId++ })\r\n return this._nextSubscriptionId - 1\r\n }\r\n\r\n unsubscribe(subscriptionId) {\r\n const subscriptionIndex = this._callbacks\r\n // eslint-disable-next-line no-confusing-arrow\r\n .map((element, index) => element.subscription === subscriptionId ? { found: true, index } : { found: false })\r\n .filter(element => element.found === true)\r\n if (subscriptionIndex.length !== 1) {\r\n throw new Error(`Found an invalid number of subscriptions ${subscriptionIndex.length}`)\r\n }\r\n\r\n this._callbacks.splice(subscriptionIndex[0].index, 1)\r\n }\r\n\r\n notifySubscribers() {\r\n for (let i = 0; i < this._callbacks.length; i++) {\r\n const callback = this._callbacks[i].callback\r\n callback()\r\n }\r\n }\r\n\r\n createArguments(state) {\r\n return { useReplaceToNavigate: true, data: state }\r\n }\r\n\r\n error(message) {\r\n return { status: AuthenticationResultStatus.Fail, message }\r\n }\r\n\r\n success(state) {\r\n return { status: AuthenticationResultStatus.Success, state }\r\n }\r\n\r\n redirect() {\r\n return { status: AuthenticationResultStatus.Redirect }\r\n }\r\n\r\n async ensureUserManagerInitialized() {\r\n if (this.userManager !== undefined) {\r\n return\r\n }\r\n\r\n const response = await fetch(ApplicationPaths.ApiAuthorizationClientConfigurationUrl)\r\n if (!response.ok) {\r\n throw new Error(`Could not load settings for '${ApplicationName}'`)\r\n }\r\n\r\n const settings = await response.json()\r\n settings.automaticSilentRenew = true\r\n settings.includeIdTokenInSilentRenew = true\r\n settings.userStore = new WebStorageStateStore({\r\n prefix: ApplicationName\r\n })\r\n\r\n this.userManager = new UserManager(settings)\r\n\r\n this.userManager.events.addUserSignedOut(async () => {\r\n await this.userManager.removeUser()\r\n this.updateState(undefined)\r\n })\r\n }\r\n\r\n static get instance() { \r\n // eslint-disable-next-line no-use-before-define\r\n return authService \r\n }\r\n}\r\n\r\nconst authService = new AuthorizeService()\r\n\r\nexport default authService\r\n","// ** Redux Imports\nimport { createSlice } from \"@reduxjs/toolkit\"\n\n// ** ThemeConfig Import\nimport themeConfig from \"@configs/themeConfig\"\n\nconst initialMenuCollapsed = () => {\n const item = window.localStorage.getItem(\"menuCollapsed\")\n //** Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : themeConfig.layout.menu.isCollapsed\n}\n\nconst initialDirection = () => {\n const item = window.localStorage.getItem(\"direction\")\n //** Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : themeConfig.layout.isRTL\n}\n\nconst initialSkin = () => {\n const item = window.localStorage.getItem(\"skin\")\n //** Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : themeConfig.layout.skin\n}\n\nexport const layoutSlice = createSlice({\n name: \"layout\",\n initialState: {\n skin: initialSkin(),\n isRTL: initialDirection(),\n layout: themeConfig.layout.type,\n lastLayout: themeConfig.layout.type,\n menuCollapsed: initialMenuCollapsed(),\n footerType: themeConfig.layout.footer.type,\n navbarType: themeConfig.layout.navbar.type,\n menuHidden: themeConfig.layout.menu.isHidden,\n contentWidth: themeConfig.layout.contentWidth,\n navbarColor: themeConfig.layout.navbar.backgroundColor\n },\n reducers: {\n handleRTL: (state, action) => {\n state.isRTL = action.payload\n window.localStorage.setItem(\"direction\", JSON.stringify(action.payload))\n },\n handleSkin: (state, action) => {\n state.skin = action.payload\n window.localStorage.setItem(\"skin\", JSON.stringify(action.payload))\n },\n handleLayout: (state, action) => {\n state.layout = action.payload\n },\n handleFooterType: (state, action) => {\n state.footerType = action.payload\n },\n handleNavbarType: (state, action) => {\n state.navbarType = action.payload\n },\n handleMenuHidden: (state, action) => {\n state.menuHidden = action.payload\n },\n handleLastLayout: (state, action) => {\n state.lastLayout = action.payload\n },\n handleNavbarColor: (state, action) => {\n state.navbarColor = action.payload\n },\n handleContentWidth: (state, action) => {\n state.contentWidth = action.payload\n },\n handleMenuCollapsed: (state, action) => {\n state.menuCollapsed = action.payload\n window.localStorage.setItem(\n \"menuCollapsed\",\n JSON.stringify(action.payload)\n )\n }\n }\n})\n\nexport const {\n handleRTL,\n handleSkin,\n handleLayout,\n handleLastLayout,\n handleMenuHidden,\n handleNavbarType,\n handleFooterType,\n handleNavbarColor,\n handleContentWidth,\n handleMenuCollapsed\n} = layoutSlice.actions\n\nexport default layoutSlice.reducer\n","// ** React Imports\nimport { useEffect, useState, createContext } from \"react\"\n\n// ** Create Context\nconst ThemeColors = createContext()\n\nconst ThemeContext = ({ children }) => {\n // ** State\n const [colors, setColors] = useState({})\n\n //** ComponentDidMount\n useEffect(() => {\n if (window !== \"undefined\") {\n //** Get variable value\n const getHex = (color) => window.getComputedStyle(document.body).getPropertyValue(color).trim()\n\n //** Colors obj\n const obj = {\n primary: {\n light: getHex(\"--bs-primary\").concat(\"1a\"),\n main: getHex(\"--bs-primary\")\n },\n secondary: {\n light: getHex(\"--bs-secondary\").concat(\"1a\"),\n main: getHex(\"--bs-secondary\")\n },\n success: {\n light: getHex(\"--bs-success\").concat(\"1a\"),\n main: getHex(\"--bs-success\")\n },\n danger: {\n light: getHex(\"--bs-danger\").concat(\"1a\"),\n main: getHex(\"--bs-danger\")\n },\n warning: {\n light: getHex(\"--bs-warning\").concat(\"1a\"),\n main: getHex(\"--bs-warning\")\n },\n info: {\n light: getHex(\"--bs-info\").concat(\"1a\"),\n main: getHex(\"--bs-info\")\n },\n dark: {\n light: getHex(\"--bs-dark\").concat(\"1a\"),\n main: getHex(\"--bs-dark\")\n }\n }\n\n setColors({ ...obj })\n }\n }, [])\n\n return (\n {children}\n )\n}\n\nexport { ThemeColors, ThemeContext }\n","// ** Imports createContext function\nimport { createContext } from \"react\"\n\n// ** Imports createContextualCan function\nimport { createContextualCan } from \"@casl/react\"\n\n// ** Create Context\nexport const AbilityContext = createContext()\n\n// ** Init Can Context\nexport const Can = createContextualCan(AbilityContext.Consumer)\n","export default __webpack_public_path__ + \"static/media/logo-white.3f96ae1e.png\";","// ** Logo\nimport logo from \"@src/assets/images/logo/logo-white.png\"\n\nconst SpinnerComponent = () => {\n return (\n
\n \"logo\"\n
\n
\n
\n
\n
\n
\n )\n}\n\nexport default SpinnerComponent\n"],"sourceRoot":""}