{"version":3,"file":"js/careerexplorerquiz.js","mappings":"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","sources":["webpack://usajobs.seekerportal/./Features/CareerExplorer/career-explorer-main.ts","webpack://usajobs.seekerportal/webpack/bootstrap","webpack://usajobs.seekerportal/webpack/runtime/define property getters","webpack://usajobs.seekerportal/webpack/runtime/hasOwnProperty shorthand","webpack://usajobs.seekerportal/./Features/CareerExplorer/career-explorer-quiz.ts"],"sourcesContent":["import { CEQuizResponse } from '../Shared/scriptts/interfaces';\nexport const NumberOfQuestions = 32;\nexport const CEResponseClientName = 'CEResponsesData';\nexport const CEResponses: CEQuizResponse = getCEResponses();\n\n// init functions\ndocument.addEventListener('DOMContentLoaded', evt => {\n initHome();\n bindHomeEvents();\n});\n\nfunction initHome() {\n const responseLength = CEResponses.responses.length;\n const responseId = CEResponses.responseId;\n\n if (responseLength < 1) {\n document.querySelector('#startButton')?.classList.remove('hidden');\n }\n else if (responseId < 1 || responseLength !== NumberOfQuestions) {\n document.querySelector('#restartButton')?.classList.remove('hidden');\n document.querySelector('#continueButton')?.classList.remove('hidden');\n document.querySelector('#quizStatusMessage')?.classList.remove('hidden');\n }\n else if (responseId > 0 && responseLength === NumberOfQuestions) {\n document.querySelector('#restartButton')?.classList.remove('hidden');\n document.querySelector('#resultsButton')?.classList.remove('hidden');\n document.querySelector('#quizStatusMessage')?.classList.remove('hidden');\n const element = document.getElementById(\"quizStatusMessage\");\n if (element) {\n element.innerHTML = \"You've already completed the quiz.\";\n }\n }\n}\n\n// event handlers\nfunction bindHomeEvents() {\n document.querySelector('#startButton')?.addEventListener('click', reStartButtonClicked);\n document.querySelector('#restartButton')?.addEventListener('click', reStartButtonClicked);\n document.querySelector('#resultsButton')?.addEventListener('click', resultsButtonClicked);\n document.querySelector('#continueButton')?.addEventListener('click', continueButtonClicked);\n}\n\nfunction reStartButtonClicked() {\n initCEResponses(); \n location.href = '/careerexplorer/quiz';\n}\n\nfunction resultsButtonClicked() {\n location.href = '/careerexplorer/results/' + CEResponses.responseId;\n}\n\nfunction continueButtonClicked() {\n CEResponses.currentQuestionIndex = (CEResponses.responses.length > 0) ? CEResponses.responses.length : 0;\n setCEResponses(CEResponses);\n location.href = '/careerexplorer/quiz';\n}\n\nexport function initCEResponses() {\n setCEResponses({ currentQuestionIndex: 0, resultsPageIndex: 0, responseId: 0, responses: [] });\n}\n\nfunction getCEResponses(): CEQuizResponse {\n let rawResponse: string | null = localStorage.getItem(CEResponseClientName);\n if (rawResponse == null) {\n initCEResponses();\n }\n return JSON.parse(localStorage.getItem(CEResponseClientName) || '{}');\n}\n\nexport function setCEResponses(ceResponse: CEQuizResponse) {\n localStorage.setItem(CEResponseClientName, JSON.stringify(ceResponse));\n} \n\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import { CEQuestion, CEQuestionResponse } from \"../Shared/scriptts/interfaces\";\nimport { setCEResponses, CEResponses, NumberOfQuestions } from \"./career-explorer-main\";\ndeclare const ceQuestionsArray: CEQuestion[];\nlet isInitialLoad = true;\n\ndocument.addEventListener('DOMContentLoaded', () => {\n document.documentElement.className += ' scroll-smooth';\n initQuiz();\n});\n\nfunction initQuiz() {\n initQuizQuestions().then(() => {\n updateProgress();\n bindEvents();\n isInitialLoad = false;\n })\n .catch(e => console.debug(e));\n}\n\nasync function initQuizQuestions(): Promise {\n return new Promise((resolve) => {\n const responseLength = CEResponses.responses.length;\n const currentQuestionIndex = CEResponses.currentQuestionIndex;\n if (responseLength === 0) {\n return resolve();\n }\n CEResponses.responses.forEach((response, i) => {\n const radio = document.querySelector(`#q${i + 1}-${response.responseValue}`);\n if (radio === null) {\n return;\n }\n displayQuestion(i + 1, false);\n setQuizRadioChecked(radio, false);\n });\n if (currentQuestionIndex === -1) {\n document.querySelector('#goToOne')?.focus();\n }\n else if (currentQuestionIndex < NumberOfQuestions) {\n const radioFocus = document.querySelector(`#q${currentQuestionIndex + 1}-${CEResponses.responses[currentQuestionIndex]?.responseValue ?? \"1\"}`);\n radioFocus?.focus();\n }\n if (responseLength === NumberOfQuestions) {\n displayFormSubmit(currentQuestionIndex === NumberOfQuestions);\n }\n resolve();\n });\n}\n\nfunction bindEvents() {\n document.querySelector('#goToOne')?.addEventListener('click', () => displayQuestion(1, true));\n document.querySelectorAll('[role=\"radiogroup\"]').forEach(radioGroup => {\n radioGroup.addEventListener('keydown', handleQuizRadioGroupKeydown);\n radioGroup.addEventListener('click', handleQuizRadioGroupClick);\n });\n document.querySelectorAll('[role=\"radio\"]').forEach(radio => {\n radio.addEventListener('focus', () => {\n CEResponses.currentQuestionIndex = parseInt(radio.getAttribute('data-name')?.substring(1) ?? \"0\") - 1;\n setCEResponses(CEResponses);\n });\n });\n document.querySelector('#submitQuiz')?.addEventListener('click', handleSubmitClicked);\n initIntersectionObserver();\n}\n\nfunction initIntersectionObserver() {\n const instructionsElement = document.querySelector('#instructions');\n const actionsElement = document.querySelector('#actions');\n const observer = new IntersectionObserver((ioEntries) => {\n ioEntries.forEach(e => {\n if (!e.isIntersecting) {\n return;\n }\n if (e.target.id === 'instructions') {\n CEResponses.currentQuestionIndex = -1;\n }\n else if (e.target.id === 'actions') {\n CEResponses.currentQuestionIndex = NumberOfQuestions;\n }\n else {\n const radioGroup = document.querySelector(`#q-${(e.target).id.substring(8)}`);\n if (radioGroup === null) {\n return;\n }\n radioGroup.focus();\n let questionID = parseInt(radioGroup.id.substring(2) ?? \"0\");\n if (questionID < 1) {\n return;\n }\n CEResponses.currentQuestionIndex = questionID - 1;\n if (CEResponses.responses.length >= questionID) {\n const responseValue = CEResponses.responses[CEResponses.currentQuestionIndex]?.responseValue ?? \"1\";\n document.querySelector(`#q${questionID}-${responseValue}`)?.focus();\n }\n else {\n document.querySelector(`#q${questionID}-1`)?.focus();\n }\n }\n setCEResponses(CEResponses);\n })\n }, {\n root: document.querySelector('#quizContainer'),\n threshold: 1\n });\n if (instructionsElement !== null) {\n observer.observe(instructionsElement);\n }\n if (actionsElement !== null) {\n observer.observe(actionsElement);\n }\n ceQuestionsArray.forEach((question, i) => {\n const questionElement = document.querySelector(`#question${i + 1}`);\n if (questionElement !== null) {\n observer.observe(questionElement);\n }\n });\n}\n\nfunction handleQuizRadioGroupKeydown(evt: KeyboardEvent) {\n switch (evt.code) {\n case 'Space':\n selectResponse(evt.target);\n setCEResponses(CEResponses);\n evt.preventDefault();\n break;\n case 'ArrowUp':\n case 'ArrowLeft':\n setPreviousQuizRadioFocus(evt.target);\n evt.preventDefault();\n break;\n case 'ArrowDown':\n case 'ArrowRight':\n setNextQuizRadioFocus(evt.target);\n evt.preventDefault();\n break;\n default:\n break;\n }\n}\n\nfunction handleQuizRadioGroupClick(evt: Event) {\n let elem: HTMLElement | null = evt.target;\n if (elem === null || elem.role === 'radio-group') {\n return;\n }\n if (elem?.hasAttribute('data-for')) {\n elem = document.querySelector(`#${elem.getAttribute('data-for')}`);\n }\n if (elem === null || elem.role !== 'radio') {\n return;\n }\n selectResponse(elem);\n setCEResponses(CEResponses);\n}\n\nfunction selectResponse(elem: HTMLElement) {\n const questionNumber = parseInt(elem.getAttribute('data-name')?.substring(1) ?? \"0\");\n setQuizRadioChecked(elem, questionNumber > CEResponses.responses.length);\n}\n\nfunction setNextQuizRadioFocus(elem: HTMLElement) {\n const radioGroup = document.querySelectorAll(`[data-name=\"${elem.getAttribute('data-name')}\"]`);\n let currentIndex = Array.from(radioGroup).findIndex(n => n.isEqualNode(elem)); \n currentIndex = (currentIndex >= radioGroup.length - 1) ? 0 : currentIndex + 1;\n radioGroup.item(currentIndex).focus();\n}\n\nfunction setPreviousQuizRadioFocus(elem: HTMLElement) {\n const radioGroup = document.querySelectorAll(`[data-name=\"${elem.getAttribute('data-name')}\"]`);\n let currentIndex = Array.from(radioGroup).findIndex(n => n.isEqualNode(elem));\n currentIndex = (currentIndex <= 0) ? radioGroup.length - 1 : currentIndex - 1;\n radioGroup.item(currentIndex).focus();\n}\n\nfunction goToNextQuestion(questionNumber: number) {\n if (questionNumber >= NumberOfQuestions) {\n displayFormSubmit();\n }\n else {\n CEResponses.currentQuestionIndex = isInitialLoad ? CEResponses.currentQuestionIndex : questionNumber;\n displayQuestion(questionNumber + 1, true);\n } \n}\n\nfunction displayQuestion(questionNumber: number, setFocus: boolean) {\n const question = document.querySelector(`#question${questionNumber}`);\n question?.classList.remove('hidden');\n if (setFocus === true) {\n setTimeout(() => {\n question?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }, 300);\n }\n}\n\nfunction displayFormSubmit(setFocus: boolean = true) {\n document.querySelector('#actions')?.classList.remove('hidden');\n if (setFocus === true) {\n CEResponses.currentQuestionIndex = NumberOfQuestions;\n setTimeout(() => {\n document.querySelector('#submitQuiz')?.focus();\n }, 300);\n setCEResponses(CEResponses);\n }\n}\n\nfunction setQuizRadioChecked(elem: HTMLElement, autoNavigate = true) {\n let currentQuestion = parseInt(elem.getAttribute('data-name')?.substring(1) ?? \"0\");\n if (currentQuestion < 1) {\n return;\n }\n document.querySelectorAll(`[data-name=\"${elem.getAttribute('data-name')}\"]`).forEach(radio => {\n radio.ariaChecked = \"false\";\n radio.tabIndex = -1;\n });\n elem.ariaChecked = \"true\";\n elem.tabIndex = 0;\n if (!isInitialLoad) {\n CEResponses.currentQuestionIndex = currentQuestion - 1;\n saveCEResponse(elem);\n updateProgress();\n }\n if (autoNavigate) {\n goToNextQuestion(currentQuestion);\n }\n else {\n displayQuestion(currentQuestion + 1, false);\n }\n}\n\nfunction saveCEResponse(elem: HTMLElement) {\n const elemValue = parseInt(elem.getAttribute('data-value') ?? \"0\");\n if (elemValue < 1) {\n return;\n }\n let responseValue: CEQuestionResponse = { questionID: ceQuestionsArray[CEResponses.currentQuestionIndex].questionID, responseValue: elemValue };\n if (getCurrentSavedResponse() !== null) {\n CEResponses.responses[CEResponses.currentQuestionIndex].responseValue = elemValue;\n } else {\n CEResponses?.responses.push(responseValue);\n }\n}\n\nfunction getCurrentSavedResponse(): CEQuestionResponse | null {\n let response = CEResponses.responses.find(rv => rv.questionID == CEResponses.currentQuestionIndex + 1);\n return (response === undefined) ? null : response;\n}\n\nfunction updateProgress() {\n const textElem = document.querySelector('#quizProgressText');\n const progressBar = document.querySelector('#quizProgress');\n const responsesLength = CEResponses.responses.length;\n\n if (responsesLength > 0) {\n document.querySelector('#progressContainer')?.classList.remove('hidden');\n }\n if (textElem !== null) {\n textElem.innerText = responsesLength.toString();\n }\n if (progressBar !== null) {\n const percentComplete = Math.round(responsesLength / NumberOfQuestions * 100);\n progressBar.style.width = `${percentComplete}%`;\n }\n}\n\nfunction handleSubmitClicked(evt: Event) {\n const loadingElem = document.querySelector('#calculatingModal');\n const button = evt.target;\n button.disabled = true;\n loadingElem?.showModal();\n const url = '/careerexplorer/saveresponses';\n const data = JSON.stringify(CEResponses);\n setCEResponses(CEResponses);\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n \"Content-Type\": \"application/json\"\n },\n body: data\n })\n .then(response => response.text())\n .then(responseData => {\n CEResponses.resultsPageIndex = 0;\n CEResponses.responseId = parseInt(responseData);\n if (CEResponses.responseId === null || isNaN(CEResponses.responseId)) {\n throw new Error('Career Explorer Controller returned non numeric response ID');\n }\n setCEResponses(CEResponses);\n setTimeout(() => {\n location.href = `/careerexplorer/results/${responseData}`;\n }, 3000);\n setTimeout(() => {\n loadingElem?.classList.add('hidden');\n button.disabled = false;\n }, 4000); \n })\n .catch(() => {\n location.href = '/error/careerexplorer';\n setTimeout(() => {\n loadingElem?.classList.add('hidden');\n button.disabled = false;\n }, 1000);\n });\n}\n"],"names":["NumberOfQuestions","CEResponseClientName","CEResponses","localStorage","getItem","initCEResponses","JSON","parse","reStartButtonClicked","location","href","resultsButtonClicked","responseId","continueButtonClicked","currentQuestionIndex","responses","length","setCEResponses","resultsPageIndex","ceResponse","setItem","stringify","document","addEventListener","evt","responseLength","querySelector","classList","remove","element","getElementById","innerHTML","initHome","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","isInitialLoad","handleQuizRadioGroupKeydown","code","selectResponse","target","preventDefault","elem","radioGroup","querySelectorAll","getAttribute","currentIndex","Array","from","findIndex","n","isEqualNode","item","focus","setPreviousQuizRadioFocus","setNextQuizRadioFocus","handleQuizRadioGroupClick","role","hasAttribute","questionNumber","parseInt","substring","setQuizRadioChecked","displayQuestion","setFocus","question","setTimeout","scrollIntoView","behavior","block","displayFormSubmit","autoNavigate","currentQuestion","forEach","radio","ariaChecked","tabIndex","elemValue","responseValue","questionID","ceQuestionsArray","response","find","rv","getCurrentSavedResponse","push","saveCEResponse","updateProgress","textElem","progressBar","responsesLength","innerText","toString","percentComplete","Math","round","style","width","handleSubmitClicked","loadingElem","button","disabled","showModal","data","fetch","method","headers","body","then","text","responseData","isNaN","Error","add","catch","documentElement","className","async","Promise","resolve","i","radioFocus","initQuizQuestions","instructionsElement","actionsElement","observer","IntersectionObserver","ioEntries","e","isIntersecting","id","root","threshold","observe","questionElement","initIntersectionObserver","console","debug"],"sourceRoot":""}