{"version":3,"sources":["Store/GlobalStore.ts","Store/ReflectionsReportStore.ts","Store/CurricularReportStore.ts","Store/CertificateReportStore.ts","Store/StoreProvider.tsx","Reports/Components/FrontNav.tsx","App.tsx","index.tsx"],"names":["GlobalStore","axios","initialised","userInfo","error","loggingIn","handleError","runInAction","initialiseAsync","a","loadUserInfo","get","user","data","setUser","id","studentId","username","firstName","lastName","catch","window","location","href","this","Axios","create","withCredentials","makeObservable","observable","ReflectionsReportStore","globalStore","experiences","selectedExperienceIds","selectedReflectionIds","selectedSkillNames","selectExperience","includes","filter","x","push","reflections","find","e","forEach","reflection","selectReflection","selected","parent","undefined","selectParent","selectSkill","name","r","skill","skillReflections","toggle","parentExperience","selectAll","length","map","flatMap","allSkills","experience","selectedExperiences","computed","selectedReflections","action","uniq","slice","copy","createViewModel","experienceTypes","selectedExperienceTypeIds","selectExperienceType","experienceType","ex","et","typeName","selectedExperienceTypes","CertificateReportStore","model","storesContext","createContext","useStores","stores","useContext","Error","LoginBlock","observer","children","Container","Row","Col","sm","Card","className","CardHeader","CardBody","Spinner","color","StoreProvider","reflectionsReportStore","curricularReportStore","CurricularReportStore","certificateReportStore","Provider","value","FrontNav","useState","isOpen","setIsOpen","url","Navbar","light","expand","NavbarBrand","NavbarToggler","onClick","Collapse","navbar","Nav","NavItem","to","App","useEffect","Font","register","family","fonts","src","fontWeight","registerHyphenationCallback","word","ReflectionsReport","Filter","lazy","Render","CurricularReport","CertificateReport","NavRouter","withRouter","fallback","showDialog","path","exact","init","dsn","release","process","SENTRYUIRELEASE","environment","hostname","integrations","BrowserTracing","Replay","maskAllText","blockAllMedia","HttpClient","tracesSampleRate","replaysSessionSampleRate","replaysOnErrorSampleRate","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.5fd18402.chunk.js","sourcesContent":["import { setUser } from '@sentry/react';\nimport Axios, { AxiosInstance } from 'axios';\nimport { makeObservable, observable, runInAction } from 'mobx';\nimport UserInfo from '../Models/UserInfo';\n\nexport default class GlobalStore {\n constructor() {\n this.axios = Axios.create({\n withCredentials: true\n });\n\n makeObservable(this, {\n initialised: observable,\n userInfo: observable,\n loggingIn: observable\n });\n }\n\n readonly axios: AxiosInstance;\n\n initialised = false;\n\n userInfo?: UserInfo;\n\n error?: Error;\n\n loggingIn = false;\n\n handleError = (error: Error) => runInAction(() => {\n this.error = error;\n });\n\n initialiseAsync = async () => {\n if (this.initialised) {\n return;\n }\n runInAction(() => {\n this.initialised = true;\n });\n runInAction(() => {\n this.loadUserInfo();\n });\n };\n\n loadUserInfo = () => {\n (async () => {\n // eslint-disable-next-line no-debugger\n const user = await this.axios.get('/api/auth/user');\n runInAction(() => {\n this.userInfo = user.data;\n });\n setUser({\n id: user.data.studentId,\n username: `${user.data.firstName} ${user.data.lastName}`\n });\n })().catch(() => {\n window.location.href = `/api/auth/login?returnUrl=${window.location.href}`;\n runInAction(() => {\n this.loggingIn = true;\n });\n });\n };\n}\n","import { AxiosInstance } from 'axios';\nimport { action, computed, makeObservable, observable, runInAction } from 'mobx';\nimport { uniq } from 'lodash';\nimport { createViewModel } from 'mobx-utils/lib/create-view-model';\nimport GlobalStore from './GlobalStore';\nimport ReflectionReportModel from '../Models/ReflectionReportModel';\n\nexport default class ReflectionsReportStore {\n constructor(globalStore: GlobalStore) {\n this.axios = globalStore.axios;\n\n makeObservable(this, {\n experiences: observable,\n initialised: observable,\n selectedExperienceIds: observable,\n selectedReflectionIds: observable,\n selectedSkillNames: observable,\n selectedExperiences: computed,\n selectedReflections: computed,\n selectExperience: action,\n selectReflection: action,\n selectSkill: action,\n selectAll: action\n });\n }\n\n axios: AxiosInstance;\n\n experiences?: ReflectionReportModel[];\n\n selectedExperienceIds: number[] = [];\n\n selectedReflectionIds: number[] = [];\n\n selectedSkillNames: string[] = [];\n\n initialised = false;\n\n get selectedExperiences() {\n return this.experiences?.filter(e => this.selectedExperienceIds.includes(e.id));\n }\n\n get allSkills() {\n if (this.experiences === undefined) {\n return undefined;\n }\n\n return uniq(this.experiences.flatMap(e => e.reflections).map(e => e.skill));\n }\n\n get selectedReflections() {\n return this.experiences?.slice()?.map(e => {\n const copy = createViewModel(e);\n copy.reflections = copy.reflections.filter(r => this.selectedReflectionIds.includes(r.id)) ?? [];\n return copy;\n })?.filter(e => e.reflections.length > 0);\n }\n\n selectExperience = (id: number) => {\n if (this.selectedExperienceIds.includes(id)) {\n this.selectedExperienceIds = this.selectedExperienceIds.filter(x => x !== id);\n } else {\n this.selectedExperienceIds.push(id);\n }\n const reflections = this.experiences?.find(e => e.id === id)?.reflections;\n reflections?.forEach(reflection => this.selectReflection(reflection.id, this.selectedExperienceIds.includes(id)));\n };\n\n selectReflection = (id: number, selected?: boolean, parent?: number | string) => {\n if (this.selectedReflectionIds.includes(id) || selected === false) {\n this.selectedReflectionIds = this.selectedReflectionIds.filter(x => x !== id);\n } else {\n this.selectedReflectionIds.push(id);\n }\n if (parent !== undefined) {\n this.selectParent(parent);\n }\n };\n\n selectSkill = (name: string) => {\n if (this.selectedSkillNames.includes(name)) {\n this.selectedSkillNames = this.selectedSkillNames.filter(x => x !== name);\n } else {\n this.selectedSkillNames.push(name);\n }\n const reflections = this.experiences?.find(e => e.reflections.find(r => r.skill === name))?.reflections;\n const skillReflections = reflections?.filter(x => x.skill === name);\n skillReflections?.forEach(reflection => this.selectReflection(reflection.id, this.selectedSkillNames.includes(name)));\n };\n\n selectParent = (parent: number | string) => {\n let toggle = false;\n if (typeof parent === 'number') {\n const parentExperience = this.experiences?.find(e => e.id === parent);\n parentExperience?.reflections.forEach(reflection => {\n if (this.selectedReflectionIds.find(r => r === reflection.id)) { toggle = true; }\n });\n if (!toggle) { this.selectExperience(parent); }\n } else if (typeof parent === 'string') {\n const reflections = this.experiences?.find(e => e.reflections.find(r => r.skill === parent))?.reflections;\n const skillReflections = reflections?.filter(x => x.skill === parent);\n skillReflections?.forEach(reflection => {\n if (this.selectedReflectionIds.find(r => r === reflection.id)) { toggle = true; }\n });\n if (!toggle) { this.selectSkill(parent); }\n }\n };\n\n selectAll = () => {\n if (this.selectedExperienceIds.length !== (this.experiences?.length ?? 0)) {\n this.selectedExperienceIds = this.experiences?.map(e => e.id) ?? [];\n this.selectedReflectionIds = this.experiences?.flatMap(e => e.reflections).map(r => r.id) ?? [];\n this.selectedSkillNames = this.allSkills ?? [];\n } else {\n this.selectedExperienceIds = [];\n this.selectedReflectionIds = [];\n this.selectedSkillNames = [];\n }\n };\n\n initialiseAsync = async () => {\n if (this.initialised) {\n return;\n }\n runInAction(() => {\n this.initialised = true;\n });\n const experience = await this.axios.get('/api/reflections');\n runInAction(() => {\n this.experiences = experience.data;\n });\n this.selectAll();\n };\n}\n","import { AxiosInstance } from 'axios';\nimport { action, computed, makeObservable, observable, runInAction } from 'mobx';\nimport { createViewModel } from 'mobx-utils/lib/create-view-model';\nimport GlobalStore from './GlobalStore';\nimport CurricularReportModel from '../Models/CurricularReportModel';\n\nexport default class ReflectionsReportStore {\n constructor(globalStore: GlobalStore) {\n this.axios = globalStore.axios;\n\n makeObservable(this, {\n experienceTypes: observable,\n initialised: observable,\n selectedExperienceTypeIds: observable,\n selectedExperienceIds: observable,\n selectedExperienceTypes: computed,\n selectedExperiences: computed,\n selectExperienceType: action,\n selectExperience: action,\n selectAll: action\n });\n }\n\n axios: AxiosInstance;\n\n experienceTypes?: CurricularReportModel[];\n\n selectedExperienceTypeIds: number[] = [];\n\n selectedExperienceIds: number[] = [];\n\n initialised = false;\n\n get selectedExperienceTypes() {\n return this.experienceTypes?.filter(e => this.selectedExperienceTypeIds.includes(e.id));\n }\n\n get selectedExperiences() {\n return this.experienceTypes?.slice()?.map(e => {\n const copy = createViewModel(e);\n copy.experiences = copy.experiences.filter(ex => this.selectedExperienceIds.includes(ex.id)) ?? [];\n return copy;\n })?.filter(e => e.experiences.length > 0);\n }\n\n selectExperienceType = (id: number) => {\n if (this.selectedExperienceTypeIds.includes(id)) {\n this.selectedExperienceTypeIds = this.selectedExperienceTypeIds.filter(x => x !== id);\n } else {\n this.selectedExperienceTypeIds.push(id);\n }\n const experiences = this.experienceTypes?.find(e => e.id === id)?.experiences;\n experiences?.forEach(experience => this.selectExperience(experience.id, this.selectedExperienceTypeIds.includes(id)));\n };\n\n selectExperience = (id: number, selected?: boolean, parent?: number) => {\n if (this.selectedExperienceIds.includes(id) || selected === false) {\n this.selectedExperienceIds = this.selectedExperienceIds.filter(x => x !== id);\n } else {\n this.selectedExperienceIds.push(id);\n }\n if (parent !== undefined) {\n this.selectParent(parent);\n }\n };\n\n selectParent = (parent: number) => {\n let toggle = false;\n const experienceType = this.experienceTypes?.find(e => e.id === parent);\n experienceType?.experiences.forEach(experience => {\n if (this.selectedExperienceIds.find(ex => ex === experience.id)) { toggle = true; }\n });\n if (!toggle) { this.selectExperienceType(parent); }\n };\n\n selectAll = () => {\n if (this.selectedExperienceTypeIds.length !== (this.experienceTypes?.length ?? 0)) {\n this.selectedExperienceTypeIds = this.experienceTypes?.map(e => e.id) ?? [];\n this.selectedExperienceIds = this.experienceTypes?.flatMap(e => e.experiences).map(ex => ex.id) ?? [];\n } else {\n this.selectedExperienceTypeIds = [];\n this.selectedExperienceIds = [];\n }\n };\n\n initialiseAsync = async () => {\n if (this.initialised) {\n return;\n }\n runInAction(() => {\n this.initialised = true;\n });\n const experience = await this.axios.get('/api/curricular');\n runInAction(() => {\n this.experienceTypes = experience.data;\n // add experience type name to experience property\n this.experienceTypes.flatMap(et => et.experiences.forEach(e => { e.typeName = et.typeName; }));\n });\n this.selectAll();\n };\n}\n","import { AxiosInstance } from 'axios';\nimport { makeObservable, observable, runInAction } from 'mobx';\nimport GlobalStore from './GlobalStore';\nimport CertificateModel from '../Models/CertificateReportModel';\n\nexport default class CertificateReportStore {\n constructor(globalStore: GlobalStore) {\n this.axios = globalStore.axios;\n\n makeObservable(this, {\n model: observable,\n initialised: observable\n });\n }\n\n axios: AxiosInstance;\n\n model?: CertificateModel;\n\n initialised = false;\n\n initialiseAsync = async () => {\n if (this.initialised) {\n return;\n }\n runInAction(() => {\n this.initialised = true;\n });\n const model = await this.axios.get('/api/careerconnect');\n runInAction(() => {\n this.model = model.data;\n });\n };\n}\n","import { observer } from 'mobx-react-lite';\nimport React, { createContext, PropsWithChildren, useContext } from 'react';\nimport { Card, CardBody, CardHeader, Col, Container, Row, Spinner } from 'reactstrap';\nimport GlobalStore from './GlobalStore';\nimport ReflectionsReportStore from './ReflectionsReportStore';\nimport CurricularReportStore from './CurricularReportStore';\nimport CertificateReportStore from './CertificateReportStore';\n\nexport interface Stores {\n globalStore: GlobalStore\n reflectionsReportStore: ReflectionsReportStore\n curricularReportStore: CurricularReportStore\n certificateReportStore: CertificateReportStore\n}\n\nexport const storesContext = createContext(undefined);\n\n/** A React Hook to use the app stores inside a provider */\nexport const useStores = () => {\n const stores = useContext(storesContext);\n if (!stores) {\n throw new Error('useStores must be used within a StoreProvider.');\n }\n return stores;\n};\n\nconst LoginBlock = observer(({ children }: PropsWithChildren) => {\n const { globalStore } = useStores();\n\n globalStore.initialiseAsync();\n\n if (globalStore.error) {\n throw globalStore.error;\n }\n\n if (globalStore.userInfo === undefined || globalStore.loggingIn) {\n return \n \n \n \n \n \n {globalStore.loggingIn ? 'Redirecting to login...' : 'Checking if you\\'re logged in...'}\n \n \n \n \n \n \n \n \n ;\n }\n\n return <>{children};\n});\n\nconst StoreProvider = ({ children }: PropsWithChildren) => {\n const globalStore = new GlobalStore();\n const stores = {\n globalStore,\n reflectionsReportStore: new ReflectionsReportStore(globalStore),\n curricularReportStore: new CurricularReportStore(globalStore),\n certificateReportStore: new CertificateReportStore(globalStore)\n };\n return (<>\n \n \n {children}\n \n \n );\n};\n\nexport default StoreProvider;\n","import React, { useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Navbar, NavbarBrand, Nav, NavItem, Collapse, NavbarToggler } from 'reactstrap';\nimport '../../App.scss';\n\nconst FrontNav = () => {\n const [isOpen, setIsOpen] = useState(false);\n const toggle = () => setIsOpen(!isOpen);\n const url = window.location.href;\n return (\n
\n {url.includes('staging') || url.includes('localhost')\n ? \n Newcastle Reporting Tool\n \n \n \n \n \n : <>}\n
\n );\n};\n\nexport default FrontNav;\n","import React, { lazy, Suspense, useEffect } from 'react';\nimport * as Sentry from '@sentry/react';\nimport { Spinner } from 'reactstrap';\nimport { BrowserRouter as Router, Redirect, Route, Switch, withRouter } from 'react-router-dom';\nimport { Font } from '@react-pdf/renderer';\nimport StoreProvider from './Store/StoreProvider';\nimport FrontNav from './Reports/Components/FrontNav';\nimport './App.scss';\n\nconst registerFont = () => {\n Font.register({ family: 'Fuse',\n fonts: [\n { src: 'https://newcastle-reporting-assets.s3.ap-southeast-2.amazonaws.com/normal.ttf' },\n { src: 'https://newcastle-reporting-assets.s3.ap-southeast-2.amazonaws.com/bold.ttf', fontWeight: 'bold' },\n { src: 'https://newcastle-reporting-assets.s3.ap-southeast-2.amazonaws.com/black.ttf', fontWeight: 'black' }\n ] });\n Font.registerHyphenationCallback(word => [word]);\n};\n\nconst App = () => {\n useEffect(() => {\n registerFont();\n }, []);\n\n const ReflectionsReport = {\n Filter: lazy(() => import('./Reports/Reflections/Pages/Filter')),\n Render: lazy(() => import('./Reports/Reflections/Pages/Render'))\n };\n const CurricularReport = {\n Filter: lazy(() => import('./Reports/Curricular/Pages/Filter')),\n Render: lazy(() => import('./Reports/Curricular/Pages/Render'))\n };\n const CertificateReport = {\n Render: lazy(() => import('./Reports/Certificate/Pages/Render'))\n };\n const NavRouter = withRouter(() => );\n return An error has occured} showDialog>\n \n \n \n Downloading Experiences\n }\n >\n \n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n ;\n};\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { HttpClient } from '@sentry/integrations';\nimport '@careerhub/chubby/scss/main.scss';\nimport { BrowserTracing, Replay, init } from '@sentry/react';\nimport App from './App';\nimport './index.scss';\n\ninit({\n dsn: 'https://90855ddd9c1f40779df21fa967cf9b1b@errors.careerhub.support/25',\n release: process.env.SENTRYUIRELEASE,\n environment: (() => {\n const hostname = window.location.hostname;\n if (hostname === 'staging.reports.newcastle.careerhub.com.au') {\n return 'Staging';\n }\n if (hostname === 'reports.newcastle.careerhub.com.au') {\n return 'Production';\n }\n return 'Development';\n })(),\n integrations: [\n new BrowserTracing(),\n new Replay({\n maskAllText: true,\n blockAllMedia: true\n }),\n new HttpClient()\n ],\n tracesSampleRate: 0.1, // track 10% of transactions\n // only record sessions if an error has occured\n replaysSessionSampleRate: 0,\n replaysOnErrorSampleRate: 1.0\n});\n\nReactDOM.render(\n ,\n document.getElementById('root')\n);\n"],"sourceRoot":""}