{"version":3,"sources":["App.jsx","index.jsx","common/useApi/httpClient.js","common/router/pageComponents.js","common/router/router.js","common/auth/auth.js","common/useApi/UseInvalidateEndpoint.js","common/auth/index.js","common/router/usePageInfo.js","common/useApi/delete.js","common/useApi/get.js","common/useApi/getList.js","common/useApi/patch.js","common/useApi/post.js","common/useApi/put.js","common/useApi/update.js","common/useApi/useApi.js"],"names":["Login","lazy","ChangePassword","Calendar","ProtectedRoute","Title","NotFound","UiContextProvider","then","module","default","App","queryClient","QueryClient","defaultOptions","queries","refetchOnWindowFocus","_jsx","Suspense","fallback","children","HelmetProvider","QueryClientProvider","client","Router","AuthContextProvider","_jsxs","Switch","Route","path","component","exact","Redirect","to","router","map","routeEntry","concat","link","Sentry","dsn","process","integrations","Integrations","BrowserTracing","tracesSampleRate","ReactDOM","render","React","StrictMode","document","getElementById","config","headers","Authorization","Cookie","get","xsrfCookieName","xsrfHeaderName","httpClient","axios","create","interceptors","response","use","error","status","data","detail","defaults","remove","Promise","reject","Accounting","AdminUsers","Announcements","BillingDataExtract","Exports","BillingInvoiceDataImport","Candidates","CandidatesEngaged","CandidatesReferred","Coaches","Companies","Dashboard","EmailManager","Milestones","MyHours","ProgramManager","ProgramTemplates","Programs","ReferralFirms","Reports","components","ConfigurableReports","PrebuiltReports","SurveyManager","SystemKeyValues","UploadManager","ZoomEvents","generateRouterTree","routerEntries","entry","_link","_componentName","_entry","_slicedToArray","title","subLinks","_entry2","componentName","split","join","toLowerCase","chunk","charAt","toUpperCase","slice","getRouterNestedSwitchRouteEntries","_routerSlice$find","routerSlice","arguments","length","undefined","pathEntries","replace","branch","shift","find","AuthContext","createContext","_ref","authCookie","Cookies","location","useLocation","history","useHistory","_useState","useState","_useState2","userData","setUserData","_useState3","_useState4","fetchUserData","setFetchUserData","_useApi","useApi","enabled","retry","refetch","isCandidate","_userData$group4","group","name","match","useEffect","pathname","docebo_sso_link","push","alert","Provider","value","isActionAuthorized","action","_userData$group$secti","_userData$group5","_userData$group5$sect","_userData$group5$sect2","sections","_ref2","permission","isAdmin","_userData$group","isClient","_userData$group2","isCoach","_userData$group3","isLoggedIn","refreshUser","user","UseInvalidateEndpoint","useQueryClient","endpoint","invalidateQueries","refetchActive","refetchInactive","refetchQueries","usePageInfo","getInfoFromPathEntries","entries","routes","icon","parents","locationEntry","currentEntry","_toConsumableArray","Del","useMutation","param","resolve","delete","catch","e","mutationKey","onSuccess","getQueryFunction","_ref$queryKey","queryKey","id","Get","params","useQuery","GetList","_objectSpread","keepPreviousData","Patch","_objectWithoutProperties","_excluded","patch","onSettled","Post","post","Put","rest","put","update","method","Error","del","getList"],"mappings":"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","file":"static/js/main.94ac2270.chunk.js","sourcesContent":["import React, { lazy, Suspense } from 'react'\nimport {\n BrowserRouter as Router,\n Redirect,\n Route,\n Switch,\n} from 'react-router-dom'\nimport { HelmetProvider } from 'react-helmet-async'\nimport { QueryClient, QueryClientProvider } from 'react-query'\n// eslint-disable-next-line no-unused-vars\n// import { ReactQueryDevtools } from 'react-query/devtools'\n\nimport './App.scss'\n\nimport router from './common/router'\n\nimport { AuthContextProvider } from './common/auth'\n// import { UiContextProvider } from './common/UiContext'\n\nconst Login = lazy( () => import( './pages/Login' ) )\nconst ChangePassword = lazy( () => import( './pages/ChangePassword' ) )\nconst Calendar = lazy( () => import( './pages/Calendar' ) )\nconst ProtectedRoute = lazy( () => import( './components/ProtectedRoute/ProtectedRoute' ) )\nconst Title = lazy( () => import( './components/Title' ) )\nconst NotFound = lazy( () => import( './pages/404' ) )\n\nconst UiContextProvider = lazy( () => import( './common/UiContext' )\n .then( ( module ) => ( { default: module.UiContextProvider } ) ) )\n\n\nconst App = () => {\n const queryClient = new QueryClient( { defaultOptions: { queries: { refetchOnWindowFocus: false } } } )\n\n return (\n \n \n \n \n \n \n \n <Switch>\n <Route\n path='/login'\n component={ Login }\n />\n <Route\n path='/change-password/:uid/:token'\n component={ ChangePassword }\n />\n\n <ProtectedRoute\n path='/'\n exact={ true }\n >\n <Redirect to='/dashboard' />\n </ProtectedRoute>\n <ProtectedRoute\n path='/calendar'\n component={ Calendar }\n />\n {\n router.map( ( routeEntry ) =>\n <ProtectedRoute\n key={ routeEntry.link }\n path={ `/${ routeEntry.link }` }\n component={ routeEntry.component }\n />,\n )\n }\n <ProtectedRoute path='*'><NotFound /></ProtectedRoute>\n </Switch>\n </UiContextProvider>\n {/* <ReactQueryDevtools initialIsOpen={ false } position='bottom-right' /> */}\n </AuthContextProvider>\n </Router>\n </QueryClientProvider>\n </HelmetProvider>\n </Suspense>\n )\n}\n\nexport default App\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport * as Sentry from '@sentry/react'\nimport { Integrations } from '@sentry/tracing'\n\nimport App from './App'\nimport './index.scss'\n\n// import reportWebVitals from './reportWebVitals'\n\nif ( !!process.env.REACT_APP_SENTRY_DSN ) {\n Sentry.init( {\n dsn: process.env.REACT_APP_SENTRY_DSN,\n integrations: [ new Integrations.BrowserTracing() ],\n\n // Set tracesSampleRate to 1.0 to capture 100%\n // of transactions for performance monitoring.\n // We recommend adjusting this value in production\n tracesSampleRate: 1.0,\n } )\n}\n\nReactDOM.render(\n <React.StrictMode>\n <App />\n </React.StrictMode>,\n document.getElementById( 'root' ),\n)\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\n// reportWebVitals()\n","import axios from 'axios'\nimport Cookie from 'js-cookie'\n\nconst config = {\n headers: { Authorization: Cookie.get( 'Authorization' ) },\n xsrfCookieName: 'csrftoken',\n xsrfHeaderName: 'X-CSRFToken',\n}\n\nconst httpClient = axios.create( config )\n\nhttpClient.interceptors.response.use(\n ( response ) => response,\n ( error ) => {\n if (\n 401 === error.response.status\n || ( 403 === error.response.status\n && 'Invalid token.' === error.response.data.detail )\n ) {\n httpClient.defaults.headers['Authorization'] = ''\n Cookie.remove( 'Authorization' )\n }\n return Promise.reject( error.response )\n },\n)\n\nexport default httpClient\n","import { lazy } from 'react'\n\nconst Accounting = lazy( () => import( '../../pages/Accounting/' ) )\nconst AdminUsers = lazy( () => import( '../../pages/AdminUsers' ) )\nconst Announcements = lazy( () => import( '../../pages/Announcements' ) )\nconst BillingDataExtract = lazy( () => import( '../../pages/Accounting/BillingDataExtract' ) )\nconst Exports = lazy( () => import( '../../pages/Accounting/Exports' ) )\nconst BillingInvoiceDataImport = lazy( () => import( '../../pages/Accounting/BillingInvoiceDataImport' ) )\nconst Candidates = lazy( () => import( '../../pages/Candidates' ) )\nconst CandidatesEngaged = lazy( () => import( '../../pages/CandidatesEngaged' ) )\nconst CandidatesReferred = lazy( () => import( '../../pages/CandidatesReferred' ) )\nconst Coaches = lazy( () => import( '../../pages/Coaches' ) )\nconst Companies = lazy( () => import( '../../pages/Companies' ) )\nconst Dashboard = lazy( () => import( '../../pages/Dashboard' ) )\nconst EmailManager = lazy( () => import( '../../pages/EmailManager' ) )\nconst Milestones = lazy( () => import( '../../pages/ProgramManager/Milestones' ) )\nconst MyHours = lazy( () => import( '../../pages/MyHours' ) )\nconst ProgramManager = lazy( () => import( '../../pages/ProgramManager' ) )\nconst ProgramTemplates = lazy( () => import( '../../pages/ProgramManager/ProgramTemplates' ) )\nconst Programs = lazy( () => import( '../../pages/ProgramManager/Programs' ) )\nconst ReferralFirms = lazy( () => import( '../../pages/ReferralFirms' ) )\nconst Reports = lazy( () => import( '../../pages/Reports' ) )\nconst ConfigurableReports = lazy( () => import( '../../pages/Reports/ConfigurableReports' ) )\nconst PrebuiltReports = lazy( () => import( '../../pages/Reports/PrebuiltReports' ) )\nconst SurveyManager = lazy( () => import( '../../pages/SurveyManager' ) )\nconst SystemKeyValues = lazy( () => import( '../../pages/SystemKeyValues' ) )\nconst UploadManager = lazy( () => import( '../../pages/UploadManager' ) )\nconst ZoomEvents = lazy( () => import( '../../pages/ZoomEvents' ) )\n\nexport const components = {\n Accounting,\n AdminUsers,\n Announcements,\n BillingDataExtract,\n BillingInvoiceDataImport,\n Candidates,\n CandidatesEngaged,\n CandidatesReferred,\n Coaches,\n Companies,\n ConfigurableReports,\n Dashboard,\n EmailManager,\n Exports,\n Milestones,\n MyHours,\n PrebuiltReports,\n ProgramManager,\n ProgramTemplates,\n Programs,\n ReferralFirms,\n Reports,\n SurveyManager,\n SystemKeyValues,\n UploadManager,\n ZoomEvents,\n}\n","import { components } from './pageComponents'\n\nconst generateRouterTree = ( routerEntries ) => {\n\n if( !routerEntries ) {\n return null\n }\n\n return routerEntries\n .map( ( entry ) => {\n const [\n title,\n ,\n subLinks,\n ] = entry\n let [\n ,\n link,\n ,\n componentName,\n ] = entry\n\n // if no link is given, defaults to kebab case of the title\n // If you are wondering about the operator on the line below,\n // check here: https://mzl.la/2OqxUBi\n link = link ?? title.split( ' ' )\n .join( '-' )\n .toLowerCase()\n\n // if no component name is given, defaults to PascalCase of the link\n // If you are wondering about the operator on the line below,\n // check here: https://mzl.la/2OqxUBi\n componentName = componentName ?? link.split( '-' )\n .map( ( chunk ) => chunk.charAt( 0 )\n .toUpperCase()\n + chunk.slice( 1 ),\n )\n .join( '' )\n\n // warning: recursion ahead\n return {\n component: components[componentName],\n componentName,\n link,\n subLinks: generateRouterTree( subLinks ),\n title,\n }\n\n } )\n}\n// ----- CONFIGURE YOUR ROUTES HERE -----\n// add new page components in ./pageComponents.js\n/** route entry blueprint\n * [\n * title\n * link\n * sublinks\n * componentName\n * ]\n */\nconst router = generateRouterTree( [\n [ 'Dashboard' ],\n [ 'Companies' ],\n [ 'Coaches' ],\n [ 'Candidates' ],\n [ 'Zoom Events' ],\n [\n 'Program Manager',\n 'program-manager',\n [\n [ 'Milestones' ],\n [ 'Programs' ],\n [ 'Program Templates' ],\n ],\n ],\n [ 'Upload Manager' ],\n [ 'Referral Firms' ],\n [ 'Email Manager' ],\n [ 'Announcements' ],\n [\n 'Accounting',\n 'accounting',\n [\n [ 'Billing Data Extract' ],\n [ 'Exports' ],\n [ 'Billing Invoice Data Import' ],\n ],\n ],\n [ 'Reports',\n 'reports',\n [\n [ 'Configurable Reports' ],\n [ 'Prebuilt Reports' ],\n ],\n ],\n [ 'Survey Manager' ],\n [\n 'System Key/Values',\n 'system-key-values',\n ],\n [ 'Admin Users' ],\n [ 'My Hours' ],\n [ 'Candidates Referred' ],\n [ 'Candidates Engaged' ],\n] )\n\nexport const getRouterNestedSwitchRouteEntries = (\n path,\n routerSlice = router,\n) => {\n\n const pathEntries = path.replace( /^\\//, '' ).split( '/' )\n const branch = pathEntries.shift()\n\n routerSlice = routerSlice\n .find( ( routeEntry ) => routeEntry.link === branch )?.subLinks\n\n if( 0 === pathEntries.length ) {\n return routerSlice\n }\n\n // recursion\n return getRouterNestedSwitchRouteEntries(\n pathEntries.join( '/' ),\n routerSlice )\n}\n\nexport default router","import React, { createContext, useEffect, useState } from 'react'\nimport Cookies from 'js-cookie'\n\nimport useApi from '../useApi'\nimport { useLocation, useHistory } from 'react-router-dom'\n\nconst AuthContext = createContext( {} )\n\nexport const AuthContextProvider = ( { children } ) => {\n\n const authCookie = Cookies.get( 'Authorization' )\n const location = useLocation()\n const history = useHistory()\n\n const [ userData, setUserData ] = useState( null )\n const [ fetchUserData, setFetchUserData ] = useState( false )\n\n const { data, refetch } = useApi( 'get', '/api/profile/', null, {\n enabled: false,\n refetchOnWindowFocus: false,\n retry: false,\n } )\n\n const isAdmin = () => userData?.group?.name.match( /Admin$/ )\n const isClient = () => userData?.group?.name.match( /Client$/ )\n const isCoach = () => userData?.group?.name.match( /Coach$/ )\n const isCandidate = () => userData?.group?.name.match( /Candidate$/ )\n const isLoggedIn = () => undefined !== authCookie\n\n useEffect( () => {\n // this location check is a hackaround for now, till we find a way to log out candidate\n // for candidate getting redirected to docebo\n if ( '/login' !== location.pathname && ( true === fetchUserData || !!authCookie ) ) {\n refetch()\n }\n }, [ fetchUserData, refetch, authCookie, location ] )\n\n useEffect( () => {\n if ( data ){\n if ( isCandidate() ) {\n if ( !data.docebo_sso_link ) {\n alert( 'Failed to get SSO link. Please ensure this user in the learning system and is active.' )\n } else {\n history.push( '/calendar/' )\n }\n } else {\n setUserData( data )\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ data ] )\n\n const isActionAuthorized = ( action ) =>\n userData?.group?.sections?.find( ( { name } ) => name === action )?.permission\n ?? false\n\n\n return (\n <AuthContext.Provider\n value={ {\n isActionAuthorized,\n isAdmin,\n isCandidate,\n isClient,\n isCoach,\n isLoggedIn,\n refreshUser: refetch,\n setFetchUserData,\n setUserData,\n user: userData,\n } }\n >\n {children}\n </AuthContext.Provider>\n )\n}\n\nexport default AuthContext\n","import { useQueryClient } from 'react-query'\n\nconst UseInvalidateEndpoint = () => {\n const queryClient = useQueryClient()\n\n return ( endpoint ) => {\n queryClient.invalidateQueries( endpoint, {\n refetchActive: true,\n refetchInactive: true,\n } )\n queryClient.refetchQueries( [ endpoint ] )\n }\n}\n\nexport default UseInvalidateEndpoint","export { default, AuthContextProvider } from './auth'","import { useLocation } from 'react-router-dom'\nimport router from './router'\n\nexport const usePageInfo = () => {\n const location = useLocation()\n const pathEntries = location.pathname.replace( /^\\//, '' ).split( '/' )\n\n const getInfoFromPathEntries = ( entries, routes = router, icon, parents = [] ) => {\n if( '/dashboard' === location.pathname ) {\n return {\n icon: 'Dashboard',\n title: 'Dashboard',\n }\n }\n if( '/login' === location.pathname ) {\n return { title: 'Login' }\n }\n const locationEntry = entries.shift()\n const currentEntry = routes.find( ( entry ) => entry.link === locationEntry )\n\n if( undefined === currentEntry ){\n return {\n icon: 'NotFound',\n title: 'Page not found',\n }\n }\n\n // Adding first icon\n icon = icon || currentEntry.componentName\n\n // Recursion ahead\n return null === currentEntry.subLinks || 0 === entries.length\n ? {\n icon,\n parents,\n title: currentEntry.title,\n }\n : getInfoFromPathEntries( entries, currentEntry.subLinks, icon, [\n ...parents,\n {\n link: currentEntry.link,\n title: currentEntry.title,\n },\n ] )\n }\n\n return getInfoFromPathEntries( pathEntries )\n}\n","import {\n useMutation,\n useQueryClient,\n} from 'react-query'\nimport httpClient from './httpClient'\n\nconst Del = ( endpoint ) => {\n const queryClient = useQueryClient()\n\n const deleteQueryFunction = ( param ) => new Promise( ( resolve, reject ) => {\n httpClient.delete( `${ endpoint }/${ param }/` )\n .then( ( { data } ) => {\n resolve( data )\n } )\n .catch( ( e ) => {\n reject( e )\n } )\n } )\n\n return useMutation( deleteQueryFunction, {\n mutationKey: endpoint,\n onSuccess: () => {\n queryClient.invalidateQueries( endpoint )\n },\n } )\n\n\n}\n\nexport default Del","import { useQuery } from 'react-query'\nimport httpClient from './httpClient'\n\nconst getQueryFunction = ( { queryKey: [ endpoint, id ] } ) => new Promise( ( resolve, reject ) => {\n endpoint = id ? `${ endpoint }/${ id }/` : endpoint\n httpClient.get( endpoint )\n .then( ( { data } ) => {\n resolve( data )\n } )\n .catch( ( e ) => {\n reject( e )\n } )\n} )\n\nconst Get = ( endpoint, params, config ) => useQuery( [ endpoint, params ], getQueryFunction, config )\n\nexport default Get","import { useQuery } from 'react-query'\nimport httpClient from './httpClient'\n\nconst getQueryFunction = ( { queryKey: [ endpoint, params ] } ) => new Promise( ( resolve, reject ) => {\n httpClient.get( `${ endpoint }/`, { params } )\n .then( ( { data } ) => {\n resolve( data )\n } )\n .catch( ( e ) => {\n reject( e )\n } )\n} )\n\n\nconst GetList = ( endpoint, params, config ) => useQuery( [ endpoint, params ],\n getQueryFunction,\n {\n ...config,\n keepPreviousData: true,\n } )\n\nexport default GetList","import {\n useMutation,\n useQueryClient,\n} from 'react-query'\nimport httpClient from './httpClient'\n\nconst Patch = ( endpoint, params ) => {\n const queryClient = useQueryClient()\n\n const patchQueryFunction = ( { id, ...params } ) => new Promise( ( resolve, reject ) => {\n httpClient.patch( `${ endpoint }/${ id }/`, { ...params } )\n .then( ( { data } ) => {\n resolve( data )\n } )\n .catch( ( e ) => {\n reject( e )\n } )\n } )\n\n return useMutation( patchQueryFunction, {\n // Refetch data after mutation\n onSettled: () => {\n queryClient.invalidateQueries( endpoint )\n },\n } )\n}\n\nexport default Patch","import {\n useMutation,\n useQueryClient,\n} from 'react-query'\nimport httpClient from './httpClient'\n\nconst Post = ( endpoint, params ) => {\n const queryClient = useQueryClient()\n\n const postQueryFunction = ( params ) => new Promise( ( resolve, reject ) => {\n httpClient.post(\n `${ endpoint }/`,\n { ...params },\n )\n .then( ( { data } ) => {\n resolve( data )\n } )\n .catch( ( e ) => {\n reject( e )\n } )\n } )\n\n return useMutation( postQueryFunction, {\n // Refetch data after mutation\n onSettled: () => {\n queryClient.invalidateQueries( endpoint )\n },\n } )\n}\n\nexport default Post","import {\n useMutation,\n useQueryClient,\n} from 'react-query'\n\nimport httpClient from './httpClient'\n\nconst Put = ( endpoint, params ) => {\n const queryClient = useQueryClient()\n\n const putQueryFunction = ( { id, ...rest } ) => new Promise( ( resolve, reject ) => {\n httpClient.put( `${ endpoint + id }/`, { ...rest } )\n .then( ( { data } ) => {\n resolve( data )\n } )\n .catch( ( e ) => {\n reject( e )\n } )\n } )\n\n return useMutation( putQueryFunction, {\n // Refetch data after mutation\n onSettled: () => {\n queryClient.invalidateQueries( endpoint )\n },\n } )\n}\n\nexport default Put","import Get from './get'\nimport Put from './put'\nimport Patch from './patch'\n\nconst update = ( endpoint, params, config ) => {\n\n const get = Get( endpoint, params, config )\n const put = Put( endpoint, params )\n const patch = Patch( endpoint, params )\n\n return {\n get,\n patch,\n put,\n }\n}\n\nexport default update","import del from './delete'\nimport get from './get'\nimport getList from './getList'\nimport patch from './patch'\nimport post from './post'\nimport put from './put'\nimport update from './update'\n\nconst useApi = ( method, endpoint, params = undefined, config = null ) => {\n if( !method || ! endpoint ) {\n throw new Error( 'API must be called with method and endpoint parameters' )\n }\n const methods = {\n delete: del,\n get,\n getList,\n patch,\n post,\n put,\n update,\n }\n\n // polymorphic call\n return methods[ method ]( endpoint, params, config )\n}\n\nexport default useApi"],"sourceRoot":""}