{"version":3,"sources":["configs/themeConfig.js","redux/navbar.js","redux/rootReducer.js","redux/store.js","configs/acl/ability.js","@core/components/ripple-button/index.js","serviceWorker.js","index.js","utility/context/ThemeColors.js","auth/utils.js","utility/Utils.js","configs/acl/initialAbility.js","auth/jwt/jwtDefaultConfig.js","auth/jwt/jwtWetuService.js","auth/jwt/jwtWetuConfig.js","auth/jwt/useJwt.js","redux/pageAlert.js","redux/layout.js","utility/context/Can.js","redux/account.js","redux/authentication.js","views/components/FallbackSpinner.js","assets/images/logo/wetu.svg"],"names":["themeConfig","app","appName","appLogoImage","require","default","layout","isRTL","skin","routerTransition","type","contentWidth","menu","isHidden","isCollapsed","navbar","backgroundColor","footer","customizer","scrollTop","getBookmarks","createAsyncThunk","a","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","actions","rootReducer","account","auth","pageAlert","store","configureStore","reducer","middleware","getDefaultMiddleware","serializableCheck","userData","isUserLoggedIn","getUserData","DemographicStepCompleted","UserRole","ability","initialAbility","subject","existingAbility","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","LazyApp","lazy","ReactDOM","render","fallback","FallbackSpinner","Provider","value","newestOnTop","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister","ThemeColors","createContext","ThemeContext","colors","setColors","getHex","color","getComputedStyle","body","getPropertyValue","trim","obj","primary","light","concat","main","secondary","success","danger","warning","info","dark","Cookies","useJwt","jwtConfig","identifierTokenCookieName","cookie","jwt_decode","selectThemeColors","theme","primary25","neutral10","neutral20","neutral30","loginEndpoint","registerEndpoint","refreshEndpoint","logoutEndpoint","tokenType","storageTokenKeyName","storageRefreshTokenKeyName","JwtService","jwtOverrideConfig","jwtDefaultConfig","isAlreadyFetchingAccessToken","subscribers","this","interceptors","request","use","config","error","Promise","reject","originalRequest","status","_retry","refreshToken","accessToken","jwt","onAccessTokenFetched","withCredentials","url","process","remove","path","domain","self","redirectUrl","ancestorOrigins","href","isIframe","dashboardBaseUrl","pathname","filter","callback","args","refreshTokenId","isAccessTokenCookiePersistant","isRefreshTokenCookiePersistant","jwtWetuConfig","pageAlertSlice","message","show","title","canClose","handlePageAlertDismiss","handlePageAlertInit","undefined","lastLayout","footerType","navbarType","menuHidden","menuCollapsed","navbarColor","handleRTL","localStorage","setItem","JSON","stringify","handleSkin","handleLayout","handleFooterType","handleNavbarType","handleMenuHidden","handleLastLayout","handleNavbarColor","handleContentWidth","handleMenuCollapsed","handleRouterTransition","AbilityContext","createContextualCan","Consumer","getCountryCode","country","toLowerCase","accountSlice","companyName","countryCode","phoneNumber","surname","website","handleDemographics","handleType","authSlice","handleLogin","borderLeft"],"mappings":"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","file":"static/js/main.29c70a6d.chunk.js","sourcesContent":["// You can customize the template with the help of this file\n\n//Template config options\nconst themeConfig = {\n app: {\n appName: 'Wetu',\n appLogoImage: require('@src/assets/images/logo/wetu.svg').default\n },\n layout: {\n isRTL: false,\n skin: 'light', // light, dark, bordered, semi-dark\n routerTransition: 'fadeIn', // fadeIn, fadeInLeft, zoomIn, none or check this for more transition https://animate.style/\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: 'static' // static, sticky, hidden\n },\n customizer: false,\n scrollTop: true // Enable scroll to top button\n }\n}\n\nexport default themeConfig\n","// ** Redux Imports\nimport { createSlice, createAsyncThunk } from '@reduxjs/toolkit'\n\n// ** Axios Imports\nimport axios from 'axios'\n\nexport const getBookmarks = createAsyncThunk('layout/getBookmarks', 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\nexport const updateBookmarked = createAsyncThunk('layout/updateBookmarked', async id => {\n await axios.post('/api/bookmarks/update', { id })\n return id\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(x => x.id === action.payload)\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 account from './account'\nimport navbar from './navbar'\nimport layout from './layout'\nimport auth from './authentication'\nimport pageAlert from './pageAlert'\n\nconst rootReducer = {\n account,\n auth,\n navbar,\n layout,\n pageAlert\n}\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","import { Ability } from '@casl/ability'\nimport { getUserData, isUserLoggedIn } from '@src/auth/utils'\nimport { initialAbility } from './initialAbility'\n\nlet userData = null \n\n// * Handles auto fetching previous abilities if already logged in user\nif (isUserLoggedIn()) {\n userData = getUserData()\n\n if (!userData.DemographicStepCompleted && userData.UserRole === 'Admin') {\n userData.ability = [...initialAbility, { action: 'read', subject: 'updateAccount' }]\n }\n}\n\nconst existingAbility = userData ? userData.ability : null\n\nexport default new Ability(existingAbility || initialAbility)\n","// ** 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 )\n}\n\n// ** PropTypes\nRippleButton.propTypes = {\n ...Button.propTypes\n}\n\nButton.Ripple = RippleButton\n","/*eslint-disable */\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n)\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href)\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets see https://github.com/facebook/create-react-app/issues/2374\n return\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config)\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n )\n })\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config)\n }\n })\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing\n if (installingWorker === null) {\n return\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n )\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration)\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.')\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration)\n }\n }\n }\n }\n }\n })\n .catch(error => {\n console.error('Error during service worker registration:', error)\n })\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type')\n if (response.status === 404 || (contentType !== null && contentType.indexOf('javascript') === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload()\n })\n })\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config)\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.')\n })\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister()\n })\n }\n}\n","// ** React Imports\nimport { Suspense, lazy } from 'react'\nimport ReactDOM from 'react-dom'\n\n// ** Redux Imports\nimport { Provider } from 'react-redux'\nimport { store } from './redux/store'\n\n// ** Intl, CASL & ThemeColors Context\nimport ability from './configs/acl/ability'\nimport { ToastContainer } from 'react-toastify'\nimport { AbilityContext } from './utility/context/Can'\nimport { ThemeContext } from './utility/context/ThemeColors'\n\n// ** Spinner (Splash Screen)\nimport FallbackSpinner from '@src/views/components//FallbackSpinner'\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 Toastify\nimport '@styles/react/libs/toastify/toastify.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 serviceWorker from './serviceWorker'\n\n// ** Lazy load app\nconst LazyApp = lazy(() => import('./App'))\n\nReactDOM.render(\n \n }>\n \n \n \n \n \n \n \n ,\n document.getElementById('root')\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\nserviceWorker.unregister()\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 {children}\n}\n\nexport { ThemeColors, ThemeContext }\n","import useJwt from '@src/auth/jwt/useJwt'\nimport Cookies from 'js-cookie'\nimport jwt_decode from \"jwt-decode\"\n\nexport const isUserLoggedIn = () => {\n return !!Cookies.get(useJwt.jwtConfig.identifierTokenCookieName)\n}\n\nexport const getUserData = () => {\n const cookie = Cookies.get(useJwt.jwtConfig.identifierTokenCookieName)\n\n if (cookie) {\n return jwt_decode(cookie)\n }\n\n return {}\n}\n\n/**\n * This function is used for demo purpose route navigation\n * In real app you won't need this function because your app will navigate to same route for each users regardless of ability\n * Please note role field is just for showing purpose it's not used by anything in frontend\n * We are checking role just for ease\n * NOTE: If you have different pages to navigate based on user ability then this function can be useful. However, you need to update it.\n * @param {String} userRole Role of user\n */\nexport const getHomeRouteForLoggedInUser = userRole => {\n if (userRole === 'admin') return '/'\n if (userRole === 'client') return { name: 'access-control' }\n return { name: 'auth-login' }\n}\n","// ** Checks if an object is empty (returns boolean)\nexport const isObjEmpty = obj => Object.keys(obj).length === 0\n\n// ** Returns K format from a number\nexport const kFormatter = num => (num > 999 ? `${(num / 1000).toFixed(1)}k` : num)\n\n// ** Converts HTML to string\nexport const htmlToString = html => html.replace(/<\\/?[^>]+(>|$)/g, '')\n\n// ** Checks if the passed date is today\nconst isToday = date => {\n const today = new Date()\n return (\n /* eslint-disable operator-linebreak */\n date.getDate() === today.getDate() &&\n date.getMonth() === today.getMonth() &&\n date.getFullYear() === today.getFullYear()\n /* eslint-enable */\n )\n}\n\n/**\n ** Format and return date in Humanize format\n ** Intl docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format\n ** Intl Constructor: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat\n * @param {String} value date to format\n * @param {Object} formatting Intl object to format with\n */\nexport const formatDate = (value, formatting = { month: 'short', day: 'numeric', year: 'numeric' }) => {\n if (!value) return value\n return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value))\n}\n\n// ** Returns short month of passed date\nexport const formatDateToMonthShort = (value, toTimeForCurrentDay = true) => {\n const date = new Date(value)\n let formatting = { month: 'short', day: 'numeric' }\n\n if (toTimeForCurrentDay && isToday(date)) {\n formatting = { hour: 'numeric', minute: 'numeric' }\n }\n\n return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value))\n}\n\n/**\n ** Return if user is logged in\n ** This is completely up to you and how you want to store the token in your frontend application\n * ? e.g. If you are using cookies to store the application please update this function\n */\nexport const isUserLoggedIn = () => localStorage.getItem('userData')\nexport const getUserData = () => JSON.parse(localStorage.getItem('userData'))\n\n/**\n ** This function is used for demo purpose route navigation\n ** In real app you won't need this function because your app will navigate to same route for each users regardless of ability\n ** Please note role field is just for showing purpose it's not used by anything in frontend\n ** We are checking role just for ease\n * ? NOTE: If you have different pages to navigate based on user ability then this function can be useful. However, you need to update it.\n * @param {String} userRole Role of user\n */\nexport const getHomeRouteForLoggedInUser = userRole => {\n if (userRole === 'admin') return '/'\n if (userRole === 'client') return '/access-control'\n return '/login'\n}\n\n// ** React Select Theme Colors\nexport const selectThemeColors = theme => ({\n ...theme,\n colors: {\n ...theme.colors,\n primary25: '#6CB7411a', // for option hover bg-color\n primary: '#6CB741', // for selected option bg-color\n neutral10: '#6CB741', // for tags bg-color\n neutral20: '#ededed', // for input border-color\n neutral30: '#ededed' // for input hover border-color\n }\n})\n","// ** Initial user ability\nexport const initialAbility = [\n {\n action: 'read',\n subject: 'login'\n },\n {\n action: 'read',\n subject: 'register'\n },\n {\n action: 'read',\n subject: 'updatePassword'\n },\n {\n action: 'read',\n subject: 'verifying'\n }\n]\n\nexport const _ = undefined\n","// ** Auth Endpoints\nexport default {\n loginEndpoint: '/jwt/login',\n registerEndpoint: '/jwt/register',\n refreshEndpoint: '/jwt/refresh-token',\n logoutEndpoint: '/jwt/logout',\n\n // ** This will be prefixed in authorization header with token\n // ? e.g. Authorization: Bearer \n tokenType: 'Bearer',\n\n // ** Value of this property will be used as key to store JWT token in storage\n storageTokenKeyName: 'accessToken',\n storageRefreshTokenKeyName: 'refreshToken'\n}\n","import useJwt from '@src/auth/jwt/useJwt'\nimport jwtDefaultConfig from './jwtDefaultConfig'\nimport axios from 'axios'\nimport Cookies from 'js-cookie'\n\nexport default class JwtService {\n // ** jwtConfig <= Will be used by this service\n jwtConfig = { ...jwtDefaultConfig }\n\n // ** For Refreshing Token\n isAlreadyFetchingAccessToken = false\n\n // ** For Refreshing Token\n subscribers = []\n\n constructor(jwtOverrideConfig) {\n this.jwtConfig = { ...this.jwtConfig, ...jwtOverrideConfig }\n\n // ** Request Interceptor\n axios.interceptors.request.use(\n config => {\n return config\n },\n error => Promise.reject(error)\n )\n\n axios.interceptors.response.use(\n response => {\n return response\n },\n async error => {\n const originalRequest = error.config\n if (error.response && error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true\n try {\n const response = await this.refreshToken()\n const accessToken = response.data.jwt\n this.onAccessTokenFetched(accessToken)\n return await axios(originalRequest, { withCredentials: true })\n } catch {\n let url = 'wetu.com'\n const subDomain = process.env.REACT_APP_SUB_DOMAIN\n if (subDomain) {\n url = `${subDomain}.${url}`\n }\n Cookies.remove(useJwt.jwtConfig.identifierTokenCookieName, { path: '/', domain: url })\n Cookies.remove(useJwt.jwtConfig.identifierTokenCookieName, { path: '/', domain: `.${url}` })\n const location = window.self.location\n let redirectUrl = `/Login`\n if (location && (location.ancestorOrigins || location.href)) {\n const isIframe = window.self !== window.top\n const dashboardBaseUrl = isIframe && location.ancestorOrigins && location.ancestorOrigins[0] ? location.ancestorOrigins[0] : null\n redirectUrl = `/Login?ReturnUrl=${dashboardBaseUrl ? `${dashboardBaseUrl}/${location.pathname}` : location.href}`\n }\n window.top.location.href = redirectUrl\n }\n }\n\n return Promise.reject(error)\n }\n )\n }\n\n onAccessTokenFetched(accessToken) {\n this.subscribers = this.subscribers.filter(callback => callback(accessToken))\n }\n\n addSubscriber(callback) {\n this.subscribers.push(callback)\n }\n\n login(...args) {\n return axios.post(this.jwtConfig.loginEndpoint, ...args)\n }\n\n register(...args) {\n return axios.post(this.jwtConfig.registerEndpoint, ...args)\n }\n\n async refreshToken() {\n return await axios.post(this.jwtConfig.refreshEndpoint, {\n accessToken: \"\",\n refreshTokenId: \"\",\n isAccessTokenCookiePersistant: false,\n isRefreshTokenCookiePersistant: false\n }, { withCredentials: true })\n }\n}\n","// ** Auth Endpoints\nexport default {\n loginEndpoint: `${process.env.REACT_APP_ACCOUNT_API_URL}/User/Login`,\n registerEndpoint: `${process.env.REACT_APP_ACCOUNT_API_URL}/Account/Register`,\n refreshEndpoint: `${process.env.REACT_APP_ACCOUNT_API_URL}/User/RefreshAccessToken`,\n \n identifierTokenCookieName: `wetu_id_token_${process.env.REACT_APP_ENV}`\n}\n","import JwtService from './jwtWetuService'\nimport jwtWetuConfig from './jwtWetuConfig'\n\nfunction useJwt(jwtOverrideConfig) {\n const jwt = new JwtService(jwtOverrideConfig)\n \n return {\n jwt\n }\n }\n\nconst { jwt } = useJwt(jwtWetuConfig)\n\nexport default jwt\n","// ** Redux Imports\nimport { createSlice } from '@reduxjs/toolkit'\n\nexport const pageAlertSlice = createSlice({\n name: 'pageAlert',\n initialState: {\n message: \"\",\n show: false,\n title: \"\",\n type: \"\",\n canClose: true\n },\n reducers: {\n handlePageAlertDismiss: (state) => {\n state.show = false\n },\n handlePageAlertInit: (state, action) => {\n state.message = action.payload.message\n state.show = true\n state.title = action.payload.title\n state.type = action.payload.type\n if (action.payload.canClose !== undefined) {\n state.canClose = action.payload.canClose\n } else {\n state.canClose = true\n }\n }\n }\n})\n\nexport const {\n handlePageAlertDismiss,\n handlePageAlertInit\n} = pageAlertSlice.actions\n\nexport default pageAlertSlice.reducer\n","// ** Redux Imports\nimport { createSlice } from '@reduxjs/toolkit'\n\n// ** ThemeConfig Import\nimport themeConfig from '@configs/themeConfig'\n\nexport const layoutSlice = createSlice({\n name: 'layout',\n initialState: {\n skin: themeConfig.layout.skin,\n isRTL: themeConfig.layout.isRTL,\n layout: themeConfig.layout.type,\n lastLayout: themeConfig.layout.type,\n footerType: themeConfig.layout.footer.type,\n navbarType: themeConfig.layout.navbar.type,\n menuHidden: themeConfig.layout.menu.isHidden,\n contentWidth: themeConfig.layout.contentWidth,\n menuCollapsed: themeConfig.layout.menu.isCollapsed,\n routerTransition: themeConfig.layout.routerTransition,\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('menuCollapsed', JSON.stringify(action.payload))\n },\n handleRouterTransition: (state, action) => {\n state.routerTransition = action.payload\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 handleRouterTransition\n} = layoutSlice.actions\n\nexport default layoutSlice.reducer\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","// ** Redux Imports\nimport { createSlice, createAsyncThunk } from '@reduxjs/toolkit'\n\n// ** Axios Imports\nimport axios from 'axios'\n\nexport const getCountryCode = createAsyncThunk('account/getCountryCode', async () => {\n const response = await axios.get('https://ipinfo.io/json?token=a4caeb5dee960f')\n \n return response.data.country ? response.data.country.toLowerCase() : 'za'\n})\n\nexport const accountSlice = createSlice({\n name: 'account',\n initialState: {\n companyName: '',\n country: '',\n countryCode: '',\n name: '',\n phoneNumber: '',\n surname: '',\n type: '',\n website: ''\n },\n reducers: {\n handleDemographics: (state, action) => {\n state.companyName = action.payload.companyName\n state.country = action.payload.country\n state.countryCode = action.payload.countryCode\n state.name = action.payload.name\n state.phoneNumber = action.payload.phoneNumber\n state.surname = action.payload.surname\n state.website = action.payload.website\n },\n handleType: (state, action) => {\n state.type = action.payload\n }\n },\n extraReducers: builder => {\n builder\n .addCase(getCountryCode.fulfilled, (state, action) => {\n state.countryCode = action.payload\n })\n }\n})\n\nexport const { \n handleType,\n handleDemographics\n } = accountSlice.actions\n\nexport default accountSlice.reducer\n","import { createSlice } from '@reduxjs/toolkit'\nimport { getUserData } from '@src/auth/utils'\n\nconst initialUser = () => {\n return { ...getUserData() }\n}\n\nexport const authSlice = createSlice({\n name: 'authentication',\n initialState: {\n userData: initialUser()\n },\n reducers: {\n handleLogin: (state, action) => {\n state.userData = action.payload\n }\n }\n})\n\nexport const { \n handleLogin\n} = authSlice.actions\n\nexport default authSlice.reducer\n","import { ThemeContext } from '@src/utility/context/ThemeColors'\nimport { selectThemeColors } from '@utils'\n\nconst FallbackSpinner = () => {\n return (\n \n )\n}\n\nexport default FallbackSpinner","export default __webpack_public_path__ + \"static/media/wetu.e927e31f.svg\";"],"sourceRoot":""}