{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/QuestionOption/QuestionOption.scss?332f","webpack:///./src/components/ExamClock/ExamClock.scss?55c7","webpack:///./src/views/auth/AuthTemplate/AuthTemplate.scss?e750","webpack:///./src/components/nav/NotificationMenu/NotificationMenu.scss?de3b","webpack:///./src/views/student/BookmarkedQuestions/BookmarkedQuestions.scss?f10e","webpack:///./src/components/nav/UnauthNavbar/UnauthNavbar.scss?a69c","webpack:///./src/views/payment/PaymentDetails/PaymentDetails.scss?24d7","webpack:///./src/components/AnnexureViewer/AnnexureViewer.scss?e035","webpack:///./src/components/ContentSelector/ContentSelector.scss?d3a4","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/assets/img/logo/nav_small.png","webpack:///./src/components/AnnexureItem/AnnexureItem.scss?4b21","webpack:///./src/components/QuestionCard/QuestionCard.scss?e0fa","webpack:///./src/App.html","webpack:///./src/components/nav/NavList/NavList.html","webpack:///./src/components/nav/ResourcesURL.js","webpack:///./src/components/nav/NavList/NavList.js","webpack:///./src/components/nav/NavList/NavList.js?06f5","webpack:///./src/components/nav/NavList/NavList.vue","webpack:///./src/components/nav/UserMenu/UserMenu.html","webpack:///./src/components/nav/UserMenu/UserMenu.js","webpack:///./src/components/nav/UserMenu/UserMenu.js?d483","webpack:///./src/components/nav/UserMenu/UserMenu.vue","webpack:///./src/components/nav/NotificationMenu/NotificationMenu.html","webpack:///./src/components/nav/NotificationMenu/NotificationMenu.js","webpack:///./src/components/nav/NotificationMenu/NotificationMenu.js?6b4e","webpack:///./src/components/nav/NotificationMenu/NotificationMenu.vue","webpack:///./src/components/TrialBanner/TrialBanner.html","webpack:///./src/components/TrialBanner/TrialBanner.js","webpack:///./src/components/TrialBanner/TrialBanner.js?7ea0","webpack:///./src/components/TrialBanner/index.vue","webpack:///./src/App.js","webpack:///./src/App.js?60ab","webpack:///./src/App.vue","webpack:///./src/registerServiceWorker.js","webpack:///./src/views/admin/Dashboard/Dashboard.html","webpack:///./src/components/ContentSelector/ContentSelector.html","webpack:///./src/components/ContentSelector/ContentSelector.js","webpack:///./src/components/ContentSelector/ContentSelector.js?39f2","webpack:///./src/components/ContentSelector/index.vue","webpack:///./src/components/ExamSelector/ExamSelector.html","webpack:///./src/components/ExamSelector/ExamSelector.js","webpack:///./src/components/ExamSelector/ExamSelector.js?d577","webpack:///./src/components/ExamSelector/index.vue","webpack:///./src/components/ExamHistoryCard/ExamHistoryCard.html","webpack:///./src/components/ExamHistoryCard/ExamHistoryCard.js","webpack:///./src/components/ExamHistoryCard/ExamHistoryCard.js?3cbf","webpack:///./src/components/ExamHistoryCard/index.vue","webpack:///./src/views/admin/Dashboard/Dashboard.js","webpack:///./src/views/admin/Dashboard/Dashboard.js?b851","webpack:///./src/views/admin/Dashboard/Dashboard.vue","webpack:///./src/views/student/Subscriptions/Subscriptions.html","webpack:///./src/components/nav/UnauthNavbar/UnauthNavbar.html","webpack:///./src/components/nav/UnauthNavbar/UnauthNavbar.js","webpack:///./src/components/nav/UnauthNavbar/UnauthNavbar.js?0158","webpack:///./src/components/nav/UnauthNavbar/index.vue","webpack:///./src/api/PaymentVariables.js","webpack:///./src/views/student/Subscriptions/Subscriptions.js","webpack:///./src/views/student/Subscriptions/Subscriptions.js?cf55","webpack:///./src/views/student/Subscriptions/index.vue","webpack:///./src/views/auth/Login/Login.html","webpack:///./src/views/auth/AuthTemplate/AuthTemplate.html","webpack:///./src/views/auth/AuthTemplate/AuthTemplate.js","webpack:///./src/views/auth/AuthTemplate/AuthTemplate.js?b70c","webpack:///./src/views/auth/AuthTemplate/index.vue","webpack:///./src/mixins/ValidationMessages.js","webpack:///./src/views/auth/Login/Login.js","webpack:///./src/views/auth/Login/Login.js?e852","webpack:///./src/views/auth/Login/index.vue","webpack:///./src/views/auth/Logout/Logout.html","webpack:///./src/views/auth/Logout/Logout.js","webpack:///./src/views/auth/Logout/Logout.js?0b08","webpack:///./src/views/auth/Logout/index.vue","webpack:///./src/views/auth/ForgotPassword/ForgotPassword.html","webpack:///./src/views/auth/ForgotPassword/ForgotPassword.js","webpack:///./src/views/auth/ForgotPassword/ForgotPassword.js?2a90","webpack:///./src/views/auth/ForgotPassword/index.vue","webpack:///./src/views/auth/ResetPassword/ResetPassword.html","webpack:///./src/plugins/CustomValidators.js","webpack:///./src/views/auth/ResetPassword/ResetPassword.js","webpack:///./src/views/auth/ResetPassword/ResetPassword.js?c79b","webpack:///./src/views/auth/ResetPassword/index.vue","webpack:///./src/views/auth/Register/Register.html","webpack:///./src/views/auth/Register/Register.js","webpack:///./src/views/auth/Register/Register.js?fd0e","webpack:///./src/views/auth/Register/index.vue","webpack:///./src/views/student/Cart/Cart.html","webpack:///./src/views/student/Cart/Cart.js","webpack:///./src/views/student/Cart/Cart.js?1730","webpack:///./src/views/student/Cart/index.vue","webpack:///./src/views/student/CustomExam/CustomExam.html","webpack:///./src/views/student/CustomExam/CustomExam.js","webpack:///./src/views/student/CustomExam/CustomExam.js?554d","webpack:///./src/views/student/CustomExam/index.vue","webpack:///./src/views/student/ExamResults/ExamResults.html","webpack:///./src/components/ExamResultsCard/ExamResultsCard.html","webpack:///./src/components/ExamResultsCard/ExamResultsCard.js","webpack:///./src/components/ExamResultsCard/ExamResultsCard.js?a324","webpack:///./src/components/ExamResultsCard/index.vue","webpack:///./src/components/QuestionCard/QuestionCard.html","webpack:///./src/components/BookmarkButton/BookmarkButton.html","webpack:///./src/components/BookmarkButton/BookmarkButton.js","webpack:///./src/components/BookmarkButton/BookmarkButton.js?d7fb","webpack:///./src/components/BookmarkButton/index.vue","webpack:///./src/components/AnnexureViewer/AnnexureViewer.html","webpack:///./src/components/AnnexureItem/AnnexureItem.html","webpack:///./src/components/AnnexureItem/AnnexureItem.js","webpack:///./src/components/AnnexureItem/AnnexureItem.js?8438","webpack:///./src/components/AnnexureItem/index.vue","webpack:///./src/components/annexures/Image/AnnexureImage.html","webpack:///./src/components/annexures/Image/AnnexureImage.js","webpack:///./src/components/annexures/Image/AnnexureImage.js?864a","webpack:///./src/components/annexures/Image/index.vue","webpack:///./src/components/annexures/Pdf/AnnexurePdf.html","webpack:///./src/components/annexures/Pdf/AnnexurePdf.js","webpack:///./src/components/annexures/Pdf/AnnexurePdf.js?1de1","webpack:///./src/components/annexures/Pdf/index.vue","webpack:///./src/components/AnnexureViewer/AnnexureViewer.js","webpack:///./src/components/AnnexureViewer/AnnexureViewer.js?af25","webpack:///./src/components/AnnexureViewer/index.vue","webpack:///./src/components/QuestionOption/QuestionOption.html","webpack:///./src/components/QuestionOption/QuestionOption.js","webpack:///./src/components/QuestionOption/QuestionOption.js?32ce","webpack:///./src/components/QuestionOption/index.vue","webpack:///./src/components/QuestionCard/QuestionCard.js","webpack:///./src/components/QuestionCard/QuestionCard.js?f5fe","webpack:///./src/components/QuestionCard/index.vue","webpack:///./src/components/NoContentCard/NoContentCard.html","webpack:///./src/components/NoContentCard/NoContentCard.js","webpack:///./src/components/NoContentCard/NoContentCard.js?0581","webpack:///./src/components/NoContentCard/index.vue","webpack:///./src/api/exams/model.js","webpack:///./src/api/bookmarks/model.js","webpack:///./src/views/student/ExamResults/ExamResults.js","webpack:///./src/views/student/ExamResults/ExamResults.js?e368","webpack:///./src/views/student/ExamResults/index.vue","webpack:///./src/views/student/MockExam/MockExam.html","webpack:///./src/views/student/MockExam/MockExam.js","webpack:///./src/views/student/MockExam/MockExam.js?2da3","webpack:///./src/views/student/MockExam/index.vue","webpack:///./src/views/student/ExamQuestion/ExamQuestion.html","webpack:///./src/components/ExamNavigator/ExamNavigator.html","webpack:///./src/components/QuestionPaginator/QuestionPaginator.html","webpack:///./src/components/QuestionPaginator/QuestionPaginator.js","webpack:///./src/components/QuestionPaginator/QuestionPaginator.js?919c","webpack:///./src/components/QuestionPaginator/index.vue","webpack:///./src/components/ExamNavigator/ExamNavigator.js","webpack:///./src/components/ExamNavigator/ExamNavigator.js?36cc","webpack:///./src/components/ExamNavigator/index.vue","webpack:///./src/components/ExamClock/ExamClock.html","webpack:///./src/components/ExamClock/ExamClock.js","webpack:///./src/components/ExamClock/ExamClock.js?50ca","webpack:///./src/components/ExamClock/index.vue","webpack:///./src/components/MissedQuestions/MissedQuestions.html","webpack:///./src/components/MissedQuestions/MissedQuestions.js","webpack:///./src/components/MissedQuestions/MissedQuestions.js?7683","webpack:///./src/components/MissedQuestions/index.vue","webpack:///./src/components/BookmarkedQuestions/BookmarkedQuestions.html","webpack:///./src/components/BookmarkedQuestions/BookmarkedQuestions.js","webpack:///./src/components/BookmarkedQuestions/BookmarkedQuestions.js?74bd","webpack:///./src/components/BookmarkedQuestions/index.vue","webpack:///./src/views/student/ExamQuestion/ExamQuestion.js","webpack:///./src/views/student/ExamQuestion/ExamQuestion.js?9f0c","webpack:///./src/views/student/ExamQuestion/index.vue","webpack:///./src/views/student/BookmarkedQuestions/BookmarkedQuestions.html","webpack:///./src/components/FilterSelect/FilterSelect.html","webpack:///./src/components/FilterSelect/FilterSelect.js","webpack:///./src/components/FilterSelect/FilterSelect.js?b09f","webpack:///./src/components/FilterSelect/index.vue","webpack:///./src/views/student/BookmarkedQuestions/BookmarkedQuestions.js","webpack:///./src/views/student/BookmarkedQuestions/BookmarkedQuestions.js?77c6","webpack:///./src/views/student/BookmarkedQuestions/index.vue","webpack:///./src/views/payment/PaymentSuccess/PaymentSuccess.html","webpack:///./src/views/payment/PaymentSuccess/PaymentSuccess.js","webpack:///./src/views/payment/PaymentSuccess/PaymentSuccess.js?1e73","webpack:///./src/views/payment/PaymentSuccess/index.vue","webpack:///./src/views/payment/PaymentFailure/PaymentFailure.html","webpack:///./src/views/payment/PaymentFailure/PaymentFailure.js","webpack:///./src/views/payment/PaymentFailure/PaymentFailure.js?cb27","webpack:///./src/views/payment/PaymentFailure/index.vue","webpack:///./src/views/payment/PaymentProviders/PaymentProviders.html","webpack:///./src/views/payment/PaymentProviders/PaymentProviders.js","webpack:///./src/views/payment/PaymentProviders/PaymentProviders.js?f082","webpack:///./src/views/payment/PaymentProviders/index.vue","webpack:///./src/views/payment/PaymentDetails/PaymentDetails.html","webpack:///./src/api/BaseUrl.js","webpack:///./src/api/subscriptions/CompleteSimplifySubscriptionPayment.js","webpack:///./src/api/SimplifyKey.js","webpack:///./src/views/payment/PaymentDetails/PaymentDetails.js","webpack:///./src/views/payment/PaymentDetails/PaymentDetails.js?51f1","webpack:///./src/views/payment/PaymentDetails/index.vue","webpack:///./src/views/student/ExamHistory/ExamHistory.html","webpack:///./src/views/student/ExamHistory/ExamHistory.js","webpack:///./src/views/student/ExamHistory/ExamHistory.js?32cf","webpack:///./src/views/student/ExamHistory/index.vue","webpack:///./src/views/student/Contact/Contact.html","webpack:///./src/api/messages/Contact.js","webpack:///./src/views/student/Contact/Contact.js","webpack:///./src/views/student/Contact/Contact.js?c49b","webpack:///./src/views/student/Contact/index.vue","webpack:///./src/views/auth/SendVerification/SendVerification.html","webpack:///./src/views/auth/SendVerification/SendVerification.js","webpack:///./src/views/auth/SendVerification/SendVerification.js?ef0c","webpack:///./src/views/auth/SendVerification/index.vue","webpack:///./src/views/auth/Verify/Verify.html","webpack:///./src/views/auth/Verify/Verify.js","webpack:///./src/views/auth/Verify/Verify.js?4629","webpack:///./src/views/auth/Verify/index.vue","webpack:///./src/api/auth/Register.js","webpack:///./src/api/auth/Login.js","webpack:///./src/api/auth/Logout.js","webpack:///./src/api/auth/Verify.js","webpack:///./src/api/auth/ResetPassword.js","webpack:///./src/store/modules/auth.js","webpack:///./src/api/messages/MarkReadNotifications.js","webpack:///./src/api/messages/FetchNotifications.js","webpack:///./src/store/modules/messages.js","webpack:///./src/api/subscriptions/Checkout.js","webpack:///./src/api/FrontEndUrl.js","webpack:///./src/api/PayfastProcessUrl.js","webpack:///./src/api/payfast/queryBuilder.js","webpack:///./src/store/modules/cart.js","webpack:///./src/api/subscriptions/subscriptions.js","webpack:///./src/api/subscriptions/FetchUserSubscriptions.js","webpack:///./src/store/modules/subscriptions.js","webpack:///./src/api/exams/fetchSubjectsAndCategories.js","webpack:///./src/api/exams/fetchCategoryCounts.js","webpack:///./src/api/exams/fetchCustomExam.js","webpack:///./src/api/exams/fetchMockExam.js","webpack:///./src/api/exams/fetchMockExamNames.js","webpack:///./src/api/exams/fetchExamHistory.js","webpack:///./src/api/exams/saveExamProgress.js","webpack:///./src/store/modules/exam.js","webpack:///./src/api/bookmarks/fetchBookmarkedQuestions.js","webpack:///./src/api/bookmarks/bookmarkQuestion.js","webpack:///./src/api/bookmarks/updateBookmark.js","webpack:///./src/api/bookmarks/removeBookmark.js","webpack:///./src/store/modules/bookmarks.js","webpack:///./src/api/annexures/model.js","webpack:///./src/api/annexures/fetchAnnexure.js","webpack:///./src/store/modules/annexures.js","webpack:///./src/api/payment/Providers.js","webpack:///./src/store/modules/paymentProviders.js","webpack:///./src/store/index.js","webpack:///./src/router/AuthGuards.js","webpack:///./src/router/index.js","webpack:///./src/plugins/vuetify.js","webpack:///./src/mixins/logoutUnauthorized.js","webpack:///./src/main.js","webpack:///./src/components/QuestionPaginator/QuestionPaginator.scss?cad8","webpack:///./src/components/BookmarkButton/BookmarkButton.scss?0796","webpack:///./src/views/student/ExamHistory/ExamHistory.scss?5723","webpack:///./src/components/nav/UserMenu/UserMenu.css?4c6d","webpack:///./src/App.vue?d3c9","webpack:///./src/views/student/Subscriptions/Subscriptions.css?ce9c","webpack:///./src/views/student/Cart/Cart.scss?7c9c","webpack:///./src/views/student/ExamQuestion/ExamQuestion.scss?54c6","webpack:///./src/views/student/MockExam/MockExam.css?ecc3","webpack:///./src/assets/img/logo/QB stack black.png","webpack:///./src/components/ExamNavigator/ExamNavigator.scss?98d1","webpack:///./src/assets/img/logo/nav_large.png","webpack:///./src/views/student/ExamResults/ExamResults.scss?00e1","webpack:///./src/components/ExamResultsCard/ExamResultsCard.scss?3015","webpack:///./src/views/admin/Dashboard/Dashboard.scss?ed06","webpack:///./src/views/student/CustomExam/CustomExam.scss?a0e7","webpack:///./src/components/ExamSelector/ExamSelector.scss?9ec0","webpack:///./src/components/FilterSelect/FilterSelect.scss?5c0e"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","jsonpScriptSrc","p","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","map","webpackContext","req","id","webpackContextResolve","code","keys","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","model","callback","$$v","drawer","expression","_e","$vuetify","breakpoint","smAndDown","on","$event","ref","navLogo","lgAndDown","staticRenderFns","_v","resourcesURL","process","resourceURL","component","VList","VListItem","VListItemContent","VListItemTitle","scopedSlots","_u","fn","_g","_s","getUsername","computed","mapGetters","VMenu","notificationsClosed","class","hasUnreadNotifications","_l","notification","index","notifications","unread","domProps","sanitize","title","formatDate","date","content","createNamespacedHelpers","mapState","notificationsEmpty","methods","$store","dispatch","dateString","moment","utcOffset","format","upgradeTags","html","indexOf","replace","sanitizeHtml","allowedTags","allowedAttributes","a","selfClosing","transformTags","_","attribs","tagName","href","rel","parser","lowerCaseTags","VCard","VCardSubtitle","VCardText","VCardTitle","VDivider","VIcon","isAuthenticated","isTrialSubscription","VContainer","components","NavList","UserMenu","NotificationMenu","TrialBanner","updateTimer","logoTimeout","created","listenersArray","updateUserData","startTimer","reloadNavLogo","beforeDestroy","clearTimer","watch","newVal","oldVal","xsOnly","smallNavLogo","mapActions","refreshUserSubscriptions","refreshNotifications","setInterval","clearInterval","$refs","loadImage","VApp","VAppBar","VAppBarNavIcon","VContent","VImg","VNavigationDrawer","VSpacer","VToolbarTitle","VToolbar","register","ready","log","registered","cached","updatefound","updated","offline","incompleteCustom","smOnly","incompleteMock","proxy","noSubscriptions","unexpiredSubscriptions","sub","active","activate","shortName","subscription","setActiveSubscription","VAvatar","VBtn","VCardActions","VCol","VRow","_t","incompleteExam","typeClass","to","action","props","String","required","default","hasIncompleteExam","toLowerCase","ContentSelector","ExamSelector","ExamHistoryCard","syncExamProgress","hasIncompleteCustom","hasIncompleteMock","toggle","smAndUp","relation","getRelationShortName","isActiveSubscription","getExpiryDate","dataLoading","option","formatPrice","price","optionActive","period","access","questionLimit","mockExamLimit","trialActiveOrExpired","addOptionToCart","buttonText","getPaymentProviders","paymentProviders","paymentProvidersArr","split","verifyProviders","providers","validProviders","filter","includes","element","getRoute","provider","routeName","getPaymentLocaleDetails","paymentSymbols","Locale","Currency","configLocal","paymentSymbol","find","x","toString","Vue","extend","UnauthNavbar","selectedSubscription","subscriptions","activeSubscription","options","userActiveOptions","userSub","getUserSubscriptionById","anyOptionActive","some","subscriptionExpired","fetchData","getSubscriptionById","userSubscriptions","us","localeDetails","paymentVariables","toLocaleString","style","currency","displayDate","expiryDate","expired","optionKey","subscriptionId","isTrial","addToCart","$router","mapMutations","VProgressCircular","VSlideGroup","VSlideItem","info","loginError","login","$v","$invalid","loading","errorMessages","email","$set","showPassword","password","noLogo","subtitle","showError","showInfo","preventDefault","$emit","disabled","textButton","Boolean","VAlert","VForm","customMessages","field","validator","res","$anyError","entries","$params","params","min","AuthTemplate","redirect","details","validations","minLength","mixins","ValidationMessages","$touch","emptyCart","VTextField","logout","actionText","showConfirmation","sendEmail","username","resetPasswordError","resetPassword","showConfirmPassword","confirmPassword","phoneNumber","helpers","regex","hasUpperCase","hasLowerCase","hasSpecialCharacter","hasDigit","token","jwtDecode","Username","sameAsPassword","sameAs","$props","registerError","surname","phoneDebounced","phone","showConfirm","passwordRepeat","stopPropagation","termsAndConditions","alphaNum","accepted","val","debounce","setError","VCheckbox","VTooltip","item","isNonItem","description","duration","removeFromCart","checkoutCart","EMPTY_KEY","TOTAL_KEY","$route","query","parseInt","getContents","optionToDisplay","getDuration","exec","decodePeriod","humanize","RangeError","defaultProvider","isDefault","div","getElementById","noCharge","providerName","checkoutSimplify","checkoutPayfast","display","displayOptions","total","reduce","acc","subscriptionOptions","VSimpleTable","subjects","pickSubject","categories","pickCategory","inclusionOptions","inclusionDataLoading","inclusionDisabled","filters","maxQuestions","categoryNotSelected","durationOptions","durationMenuProps","timedSelected","durationDisplay","durationFocus","pickDuration","durationDisplayClass","timeSelect","isMenuActive","_b","mousedown","timeSelectClick","click","text","inputValue","durationPicker","selectingHour","updateDurationDisplayClass","durationDisplayHours","selectingMinute","durationDisplayMinutes","durationType","displays","submissions","durationUnlimited","buttonDisabled","createExam","momentDurationFormatSetup","InclusionTypes","EVERYTHING","EXCLUDE_ANSWERED","PREVIOUSLY_INCORRECT","PREVIOUSLY_CORRECT","DurationTypes","UNLIMITED","TIMED","durations","INCLUSION_SELECTION","DURATION_SELECTION","durationMoment","durationString","subject","category","inclusion","submission","questionCount","closeOnContentClick","closeOnClick","maxHeight","asMilliseconds","questionCounts","trim","durationMilliseconds","fetchSubjectOptions","getActiveSubscription","fetchBookmarkedQuestions","fetchCounts","subjectId","subcategoryId","$nextTick","setMenuProp","time","defaultCallback","menu","updateDimensions","getActiveId","VSelect","VSlider","VTimePicker","filterItems","applyFilters","selected","filterBy","removeFilters","exam","question","expandedQuestionId","number","toggleExpanded","correctPercent","passed","examDuration","examDate","correctCount","start","end","diff","questionNumber","assign","raw","isBookmarked","answered","expanded","answerExplanation","annexures","answer","annexureWrapperClass","hasNotes","notes","tag","showDialog","note","addTag","search","invalidTag","removeTag","tags","removeLoading","removeOrCancel","updateLoading","addOrUpdateBookmark","getBookmarks","bookmark","suggestedTags","sortedTags","bookmarkId","refreshFromStore","bookmarked","removeBookmark","updateBookmark","tagNames","addBookmark","examId","questionId","VChip","VDialog","topMargin","wrapperClass","annexure","column","maxWidth","showAnnexure","currentAnnexure","vimeoWidth","url","annexureData","buttonClass","onClick","isPlainLink","hasPrev","currentPage","pageCount","hasNext","numPage","pdf","AnnexureItem","AnnexureImage","AnnexurePdf","vueVimeoPlayer","Array","noTopMargin","isLink","getAnnexureData","width","fetchAnnexure","cardClass","cardColor","flat","onCard","showResults","alwaysShowResults","onlyAnswers","noHighlight","noClick","dense","noLetter","forceSelect","forceIncorrect","isSelected","isCorrectAnswer","fromCharCode","charCodeAt","order","questionAnswered","isOptionCorrect","isOptionSelected","correct","incorrect","answerQuestion","answerKey","BookmarkButton","AnnexureViewer","QuestionOption","Number","b","hasExplanation","SANITIZE_OPTIONS","AnnexureType","ITEM","LINK","AnswerDisplay","AT_THE_END","AFTER_EACH_QUESTION","SubmissionType","MANUAL","AUTO","isVimeoUrl","test","apiOptionMap","api","Annexure","annexureName","annexureID","annexureUrl","linkName","Question","annexureMap","optionMap","dirty","meta","optionsSorted","sort","lhs","rhs","answerKeys","studentAnswerKeys","reportURL","questionReportingLink","questionText","questionOptions","annexureLink","answerAnnexures","answerAnnexureLink","isCorrect","userAnswerKeys","fromAPI","Date","sync","isArray","every","ans","categoryId","k","finished","valueOf","started","fromRaw","Exam","questionMap","questions","sorted","idMap","cur","ind","activeSubscriptionId","answerDisplay","submissionType","passMark","getQuestionById","startQuestion","finishQuestion","showAnswersInExam","q","getSyncUnit","completeSync","answeredCorrectly","Math","round","ANSWER_FILTERS","CORRECT","INCORRECT","Bookmark","questionRaw","QuestionCard","ExamResultsCard","NoContentCard","filterableQuestions","noQuestions","now","mockExams","instructions","disableButton","fetchExams","mockExam","mobileDrawer","isLastQuestion","isFirstQuestion","finishClicked","timeup","xlOnly","finishDialog","hasUnansweredQuestions","endExam","searchQuery","currentQuestionId","row","rowNum","isFiller","getColor","onFirstPage","prevPage","paginatorDisplay","onLastPage","nextPage","ROWS_PER_PAGE","QUESTIONS_PER_ROW","groupArray","array","groupSize","idx","rows","totalQuestions","filler","from","pages","page","firstOnPage","lastOnPage","highest","first","last","showPaginator","currentQuestion","QuestionPaginator","integer","minValue","maxValue","gotoQuestion","isExpired","examDisplay","questionDisplay","interval","examStore","startOf","questionStart","untimed","NaN","stopTrim","clone","subtract","updateNow","autoSubmit","SIZES","randomSize","faker","random","createFakeOption","answerIndex","uuid","lorem","lines","createFakeAnnexure","word","boolean","createFakeQuestion","optionsLength","paragraphs","internet","ExamNavigator","ExamClock","MissedQuestions","BookmarkedQuestions","setStartTime","createDebugData","debugExamOverrides","syncTimerId","timesUp","clearSyncTimer","mounted","createFakeExam","startExam","doSync","beforeRouteUpdate","next","nextId","getQuestionByNumber","beforeRouteLeave","showExplanationCard","setSyncTimer","fakeExam","commerce","productName","commit","finishExam","filterOptions","noBookmarks","menuProps","defaultMenuOptions","onDefaultFiltersChange","setDefaultMenu","showCategories","showSubjects","selectCategory","selectTag","include","slot","showTags","removeFilter","formatFilter","Menus","DEFAULT","SUBJECTS","CATEGORIES","TAGS","subjectsAndCategories","bookmarkedQuestions","appliedFilters","uniqueTags","Set","showDefaultMenu","categoriesActive","tagsActive","subjectsActive","cat","removeAnswerFilter","hasMatchingTag","tagList","hasMatchingCategory","catList","checkAnswer","FilterSelect","newValue","getBookmarkedQuestions","bookmarkedPromise","subjectPromise","correctFilter","clearCart","hasProviders","retry","payNow","selectedProviderName","getSelectedProvider","navigate","dataScKey","paymentName","paymentDescription","paymentReference","paymentAmount","dataColor","completeSimplifyPayment","TotalPrice","Description","Token","PaymentId","Profile","axios","post","apiBase","withCredentials","catch","router","response","status","simplifyKey","SimplifyCommerce","listenToEvents","listenerIndex","findIndex","listener","removeEventListener","form","remove","addSimplifyScript","iframe","getElementsByName","addEventListener","loadHostedPayments","once","providerDetails","getProviderParams","paymentId","totalPrice","nodeName","hostedPayments","hostedPaymentCallback","operation","parseFloat","amount","reference","user","getUser","cardToken","Email","Name","Surname","Phone","contactNumber","externalScript","EventTarget","addEventListenerBase","changeFilter","noExams","EXAM_HISTORY_FILTERS","PASSED","FAILED","MOCK","CUSTOM","ExamTypes","firstFilter","passedApplied","f","failedApplied","mockExamApplied","customApplied","filterableExams","getPastExams","values","pastExams","exam1","exam2","forEach","submit","openInNewTab","contact","contactModel","firstName","lastName","responseType","goTo","VTextarea","resend","verified","verify","registerModel","emailAddress","newPassword","loginModel","userIdentifier","validateStatus","profile","userId","put","headers","Authorization","forgotPassword","forgotPasswordModel","resetPasswordModel","uniqueId","UniqueId","state","currentUser","namespaced","getters","mutations","setCurrentUser","actions","root","userData","markReadNotifications","notificationIds","notificationsModel","userID","notificationID","then","fetchNotifications","notificationHeading","notificationText","notificationDate","notificationFlag","getUnreadNotifications","setNotifications","setAsRead","markAllAsRead","rootState","auth","checkout","providerId","checkoutModel","paymentProviderId","so","subscriptionOptionKey","createInput","input","QueryBuilder","merchantId","merchantKey","returnUrl","frontEndUrl","cancelUrl","notifyUrl","baseUrl","notifyURL","itemName","itemDescription","passphrase","URLSearchParams","append","generatePreSignatureQuery","md5","generateSignature","build","children","PayfastProccessUrl","method","entry","providerParams","selectedProvider","optionMapper","payfastParams","shouldRedirect","PayfastQueryBuilder","simplifyParams","clearTrials","setPaymentDetails","setSelectedProvider","getSubscriptionContent","obj","subscriptionName","subscriptionShortName","subscriptionRelation","subscriptionPrice","subscriptionLength","subscriptionPeriod","subscriptionAccess","fetchUserSubscriptions","subscriptionStartDate","expiry","subscriptionExpiryDate","SubscriptionOption","pick","UserSubscription","unexpired","activeSubscriptionMap","hasSubscriptions","hasUnexpiredSubscriptions","trial","getSubscriptions","populateAndSetUserSubscriptions","userSubs","activeSub","newUserSubs","clearForLogout","repopulateForLogin","setUserSubscriptions","pushActiveSubscription","SubscriptionsStore","fetchSubjectsAndCategories","body","activeSubcriptionId","subjectName","subcategories","subcategoryName","everythingCount","excludePreviouslyAnsweredCount","previouslyIncorrectlyAnsweredCount","previouslyCorrectlyAnsweredCount","fetchCategoryCounts","ActiveSubscriptionId","SubjectId","CategoryId","fetchCustomExam","numberOfQuestions","fetchMockExam","mockExamId","fetchMockExamNames","mockExamDetails","mockExamName","mockExamNotes","mockExamInstructions","ann","links","annexureLinks","link","fetchExamHistory","exams","correctlyAnswered","passmark","startDate","endDate","mapQuestionSyncUnit","unit","startTime","toJSON","endTime","mapSyncUnit","questionAnswers","saveExamProgress","syncUnit","getWrappedExam","examSyncMutex","AwaitLock","unsyncedExams","isDirty","setExam","pushUnsyncedExam","popUnsyncedExam","ue","fetchSubjects","fetchMockExamOptions","rootGetters","fetchCustomExamQuestions","saveUnsyncedExams","loadUnsyncedExam","acquireAsync","release","ExamStore","bookmarkQuestion","delete","allTags","tagFreqs","count","localeCompare","tf","setQuestions","removeBookmarkedQuestion","updateBookmarkedQuestion","BookmarksStore","UNKNOWN","PDF","IMAGE","AnnexureBuilder","presets","mimetype","rawdata","Uint8Array","dataUrl","base64","btoa","Uint8ToString","u8a","CHUNK_SZ","subarray","join","loadHTMLResponse","storeAnnexure","locale","providerLocale","providerDescription","storeProviders","fetchProviders","use","Vuex","Store","messages","cart","bookmarks","plugins","createPersistedState","requireUnauthenticated","matched","record","allowAnonymous","store","VueRouter","routes","path","authenticated","Login","Logout","ForgotPassword","SendVerification","Verify","route","ResetPassword","Register","Subscriptions","Dashboard","Cart","PaymentProviders","PaymentDetails","CustomExam","MockExam","ExamResults","ExamQuestion","ExamHistory","ad","PaymentSuccess","PaymentFailure","Contact","beforeEnter","open","base","scrollBehavior","y","beforeEach","authGuards","Vuetify","icons","iconfont","dropdown","theme","themes","light","primary","secondary","accent","notLogoutOrRetry","config","__isRetryRequest","is401","notAuthScreen","vm","interceptors","Vuelidate","productionTip","vuetify","logoutUnauthorized","render","h","App","$mount"],"mappings":"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Ac,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,gBAAiB,OACjB,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX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","file":"js/app.794b2c3b.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"pdfjsWorker\":\"pdfjsWorker\"}[chunkId]||chunkId) + \".\" + {\"pdfjsWorker\":\"3991bb43\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./QuestionOption.scss?vue&type=style&index=0&id=3174181f&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./QuestionOption.scss?vue&type=style&index=0&id=3174181f&scoped=true&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ExamClock.scss?vue&type=style&index=0&id=bc3e829e&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ExamClock.scss?vue&type=style&index=0&id=bc3e829e&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./AuthTemplate.scss?vue&type=style&index=0&id=c71f8770&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./AuthTemplate.scss?vue&type=style&index=0&id=c71f8770&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./NotificationMenu.scss?vue&type=style&index=0&id=60224ce1&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./NotificationMenu.scss?vue&type=style&index=0&id=60224ce1&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./BookmarkedQuestions.scss?vue&type=style&index=0&id=04eaf3cf&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./BookmarkedQuestions.scss?vue&type=style&index=0&id=04eaf3cf&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./UnauthNavbar.scss?vue&type=style&index=0&id=65e581a3&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./UnauthNavbar.scss?vue&type=style&index=0&id=65e581a3&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./PaymentDetails.scss?vue&type=style&index=0&id=7cbf1cd4&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./PaymentDetails.scss?vue&type=style&index=0&id=7cbf1cd4&scoped=true&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./AnnexureViewer.scss?vue&type=style&index=0&id=3b56058b&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./AnnexureViewer.scss?vue&type=style&index=0&id=3b56058b&scoped=true&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ContentSelector.scss?vue&type=style&index=0&id=3cd4b91e&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ContentSelector.scss?vue&type=style&index=0&id=3cd4b91e&scoped=true&lang=scss&\"","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-SG\": \"cdab\",\n\t\"./en-SG.js\": \"cdab\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","module.exports = \"data:image/png;base64,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\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./AnnexureItem.scss?vue&type=style&index=0&id=2cf1010f&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./AnnexureItem.scss?vue&type=style&index=0&id=2cf1010f&scoped=true&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./QuestionCard.scss?vue&type=style&index=0&id=4fcce20b&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./QuestionCard.scss?vue&type=style&index=0&id=4fcce20b&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-app',[(_vm.isAuthenticated)?_c('v-navigation-drawer',{staticClass:\"mt-12\",attrs:{\"height\":\"unset\",\"temporary\":\"\",\"app\":\"\",\"hide-overlay\":\"\"},model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}},[_c('nav-list')],1):_vm._e(),(_vm.isAuthenticated)?_c('v-app-bar',{attrs:{\"color\":_vm.$vuetify.breakpoint.smAndDown ? '#f1f3f5' : 'white',\"flat\":_vm.$vuetify.breakpoint.smAndDown,\"app\":\"\",\"dense\":\"\"}},[_c('v-app-bar-nav-icon',{on:{\"click\":function($event){_vm.drawer = true}}}),(_vm.$vuetify.breakpoint.smAndDown)?_c('v-spacer'):_vm._e(),_c('v-toolbar-title',[_c('v-card',{staticClass:\"no-global\",attrs:{\"color\":\"transparent\",\"to\":{ name: 'Root' },\"tile\":\"\",\"flat\":\"\"}},[_c('v-img',{ref:\"navLogo\",attrs:{\"src\":_vm.navLogo}})],1)],1),_c('v-spacer'),_c('user-menu'),_c('notification-menu')],1):_vm._e(),_c('v-content',[_c('trial-banner'),_c('v-container',{staticClass:\"d-block\",attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown,\"fill-height\":\"\"}},[_c('router-view')],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-list',{staticClass:\"px-0\"},[_c('v-list-item',{attrs:{\"to\":{ name: 'Dashboard' }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Dashboard\")])],1)],1),_c('v-list-item',{attrs:{\"to\":{ name: 'CustomExam' }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Custom Exam\")])],1)],1),_c('v-list-item',{attrs:{\"to\":{ name: 'MockExam' }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Mock Exam\")])],1)],1),_c('v-list-item',{attrs:{\"to\":{ name: 'ExamHistory' }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Exam History\")])],1)],1),_c('v-list-item',{attrs:{\"to\":{ name: 'BookmarkedQuestions' }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Bookmarked Questions\")])],1)],1),_c('v-list-item',{attrs:{\"href\":_vm.resourcesURL,\"target\":\"_blank\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Resources\")])],1)],1),_c('v-list-item',{attrs:{\"to\":{ name: 'Contact' }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Contact Us\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default process.env.VUE_APP_RESOURCES_URL\n","import resourceURL from '../ResourcesURL'\nexport default {\n name: 'NavList',\n data: () => ({\n resourcesURL: resourceURL === undefined ? 'http://quest.alesco.co.za/index.php/resources/free-resources' : resourceURL\n // if no resourceURL is specified in environment variables, then default back to old URL.\n })\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./NavList.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./NavList.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NavList.html?vue&type=template&id=26c8170b&\"\nimport script from \"./NavList.js?vue&type=script&lang=js&\"\nexport * from \"./NavList.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\ninstallComponents(component, {VList,VListItem,VListItemContent,VListItemTitle})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-menu',{attrs:{\"min-width\":\"256\",\"left\":\"\",\"bottom\":\"\",\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-list-item',_vm._g({staticClass:\"user-menu-activator\",attrs:{\"color\":\"black\",\"link\":\"\"}},on),[_vm._v(\" \"+_vm._s(_vm.getUsername)+\" \")])]}}])},[_c('v-list',[_c('v-list-item',{attrs:{\"to\":{ name: 'Subscriptions' }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Subscriptions\")])],1)],1),_c('v-list-item',{attrs:{\"to\":{ name: 'Cart' }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Cart\")])],1)],1),_c('v-list-item',{attrs:{\"to\":{ name: 'Logout' }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Logout\")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\n\nexport default {\n name: 'UserMenu',\n computed: mapGetters('auth', ['getUsername'])\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./UserMenu.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./UserMenu.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UserMenu.html?vue&type=template&id=2a044dda&\"\nimport script from \"./UserMenu.js?vue&type=script&lang=js&\"\nexport * from \"./UserMenu.js?vue&type=script&lang=js&\"\nimport style0 from \"./UserMenu.css?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\ninstallComponents(component, {VList,VListItem,VListItemContent,VListItemTitle,VMenu})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-menu',{attrs:{\"max-width\":\"390\",\"transition\":\"slide-y-transition\",\"bottom\":\"\"},on:{\"update:return-value\":_vm.notificationsClosed},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-list-item',_vm._g({class:'activator mr-n3' + (_vm.hasUnreadNotifications ? ' unread' : '')},on),[_c('v-icon',[_vm._v(\"notifications_none\")])],1)]}}])},[_c('v-card',{staticClass:\"no-global pb-dec\"},[_c('v-card-title',{staticClass:\"justify-end subtitle-1 mb-dec pa-dec pt-5\"},[_vm._v(\" Notifications \")]),_c('v-divider'),_c('v-list',{staticClass:\"pa-0\"},_vm._l((_vm.notifications),function(notification,index){return _c('div',{key:notification.id},[_c('v-list-item',{staticClass:\"ma-0 pa-0\"},[_c('v-card',{class:'no-global flex-grow-1 ma-dec pa-dec' + (index === _vm.notifications.length - 1 ? ' mb-0' : ''),attrs:{\"color\":notification.unread ? 'secondary' : '',\"flat\":\"\"}},[_c('div',{staticClass:\"d-flex justify-space-between align-center\"},[_c('v-card-title',{staticClass:\"subtitle-1 ma-0 justify-start\",domProps:{\"innerHTML\":_vm._s(_vm.sanitize(notification.title))}}),_c('v-card-subtitle',{staticClass:\"pa-0 black--text\"},[_vm._v(\" \"+_vm._s(_vm.formatDate(notification.date))+\" \")])],1),_c('v-card-text',{domProps:{\"innerHTML\":_vm._s(_vm.sanitize(notification.content))}})],1)],1),(index < _vm.notifications.length - 1)?_c('v-divider'):_vm._e()],1)}),0),(_vm.notificationsEmpty)?_c('v-card-text',[_vm._v(\" No new notifications \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { createNamespacedHelpers } from 'vuex'\nimport sanitizeHtml from 'sanitize-html'\nimport moment from 'moment'\n\nconst { mapState, mapGetters } = createNamespacedHelpers('messages')\n\nexport default {\n name: 'NotificationMenu',\n computed: {\n ...mapState(['notifications']),\n ...mapGetters(['hasUnreadNotifications']),\n notificationsEmpty () {\n return this.notifications.length === 0\n }\n },\n methods: {\n notificationsClosed () {\n this.$store.dispatch('messages/markAllAsRead')\n },\n formatDate: dateString => moment(dateString).utcOffset('+00:00').format('hh:mm A DD-MM-YYYY'),\n upgradeTags (html) {\n while (html.indexOf('<br>') !== -1) {\n html = html.replace('<br>', '
')\n }\n return html\n },\n sanitize (html) {\n if (html !== undefined && html.indexOf('<br>') !== -1) {\n html = this.upgradeTags(html)\n }\n return sanitizeHtml(html, {\n allowedTags: ['b', 'i', 'em', 'strong', 'a', 'br', 'p', 'br'],\n allowedAttributes: {\n a: ['href', 'target', 'rel']\n },\n selfClosing: ['br'],\n transformTags: {\n a: (_, attribs) => ({\n tagName: 'a',\n attribs: {\n href: attribs.href,\n rel: 'noopener noreferrer',\n target: '_blank'\n }\n })\n },\n parser: {\n lowerCaseTags: true\n }\n })\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./NotificationMenu.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./NotificationMenu.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NotificationMenu.html?vue&type=template&id=60224ce1&scoped=true&\"\nimport script from \"./NotificationMenu.js?vue&type=script&lang=js&\"\nexport * from \"./NotificationMenu.js?vue&type=script&lang=js&\"\nimport style0 from \"./NotificationMenu.scss?vue&type=style&index=0&id=60224ce1&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"60224ce1\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardSubtitle } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\ninstallComponents(component, {VCard,VCardSubtitle,VCardText,VCardTitle,VDivider,VIcon,VList,VListItem,VMenu})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isAuthenticated && _vm.isTrialSubscription)?_c('v-card',{staticClass:\"pa-0\",attrs:{\"color\":\"secondary\"}},[_c('v-container',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_vm._v(\" You are limited to a trial period and content availability. Please purchase a subscription for unlimited access. \")])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\n\nexport default {\n name: 'TrialBanner',\n computed: {\n ...mapGetters('subscriptions', ['isTrialSubscription']),\n ...mapGetters('auth', ['isAuthenticated'])\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./TrialBanner.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./TrialBanner.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TrialBanner.html?vue&type=template&id=bbc9fe54&\"\nimport script from \"./TrialBanner.js?vue&type=script&lang=js&\"\nexport * from \"./TrialBanner.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCard,VContainer})\n","import { mapGetters, mapActions } from 'vuex'\nimport NavList from '@/components/nav/NavList/NavList.vue'\nimport UserMenu from '@/components/nav/UserMenu/UserMenu.vue'\nimport NotificationMenu from '@/components/nav/NotificationMenu/NotificationMenu.vue'\nimport TrialBanner from '@/components/TrialBanner'\nimport smallNavLogo from '@/assets/img/logo/nav_small.png'\nimport navLogo from '@/assets/img/logo/nav_large.png'\n\nexport default {\n name: 'App',\n components: {\n NavList,\n UserMenu,\n NotificationMenu,\n TrialBanner\n },\n data: () => ({\n drawer: false,\n updateTimer: null,\n logoTimeout: null\n }),\n created () {\n window.listenersArray = []\n if (this.isAuthenticated) {\n this.updateUserData()\n this.startTimer()\n this.reloadNavLogo()\n }\n },\n beforeDestroy () {\n this.clearTimer()\n this.clearTimeout()\n },\n watch: {\n isAuthenticated (newVal, oldVal) {\n if (newVal === oldVal) {\n return\n }\n\n if (newVal) {\n this.startTimer()\n this.reloadNavLogo()\n } else {\n this.clearTimer()\n this.clearTimeout()\n }\n }\n },\n computed: {\n navLogo () {\n if (this.$vuetify.breakpoint.xsOnly) {\n return smallNavLogo\n }\n\n return navLogo\n },\n ...mapGetters('auth', ['isAuthenticated'])\n },\n methods: {\n ...mapActions('subscriptions', ['refreshUserSubscriptions']),\n ...mapActions('messages', ['refreshNotifications']),\n updateUserData () {\n if (!this.isAuthenticated) {\n return\n }\n\n this.refreshUserSubscriptions()\n this.refreshNotifications()\n },\n startTimer () {\n this.clearTimer()\n\n this.updateTimer = setInterval(() => {\n this.updateUserData()\n }, 60 * 60 * 1000)\n },\n clearTimer () {\n if (this.updateTimer === null) {\n return\n }\n\n clearInterval(this.updateTimer)\n\n this.updateTimer = null\n },\n clearTimeout () {\n if (this.logoTimeout === null) {\n return\n }\n\n clearTimeout(this.logoTimeout)\n\n this.logoTimeout = null\n },\n reloadNavLogo () {\n this.clearTimeout()\n\n this.logoTimeout = setTimeout(() => {\n if (this.$refs.navLogo) {\n this.$refs.navLogo.loadImage()\n }\n }, 1000)\n }\n }\n}\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/eslint-loader/index.js??ref--13-0!./App.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/eslint-loader/index.js??ref--13-0!./App.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.html?vue&type=template&id=71b91194&scoped=true&\"\nimport script from \"./App.js?vue&type=script&lang=js&\"\nexport * from \"./App.js?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=71b91194&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"71b91194\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VAppBarNavIcon } from 'vuetify/lib/components/VAppBar';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VContent } from 'vuetify/lib/components/VContent';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VApp,VAppBar,VAppBarNavIcon,VCard,VContainer,VContent,VImg,VNavigationDrawer,VSpacer,VToolbarTitle})\n","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready () {\n console.log(\n 'App is being served from cache by a service worker.\\n' +\n 'For more details, visit https://goo.gl/AFskqB'\n )\n },\n registered () {\n console.log('Service worker has been registered.')\n },\n cached () {\n console.log('Content has been cached for offline use.')\n },\n updatefound () {\n console.log('New content is downloading.')\n },\n updated () {\n console.log('New content is available; please refresh.')\n },\n offline () {\n console.log('No internet connection found. App is running in offline mode.')\n },\n error (error) {\n console.error('Error during service worker registration:', error)\n }\n })\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"align-stretch\",attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[(_vm.$vuetify.breakpoint.xsOnly)?_c('v-row',[_c('v-col',[_c('content-selector')],1)],1):_vm._e(),_c('v-row',[_c('exam-selector',{attrs:{\"type\":\"Custom\",\"action\":\"Create\",\"incomplete-exam\":_vm.incompleteCustom,\"to\":{ name: 'CustomExam' }},scopedSlots:_vm._u([(_vm.$vuetify.breakpoint.smOnly && _vm.incompleteMock)?{key:\"prepend\",fn:function(){return [_c('content-selector')]},proxy:true}:null],null,true)},[_vm._v(\" Customize exam parameters to test yourself in particular subjects and their categories. \")]),_c('exam-selector',{attrs:{\"type\":\"Mock\",\"action\":\"Select\",\"incomplete-exam\":_vm.incompleteMock,\"to\":{ name: 'MockExam' }},scopedSlots:_vm._u([(_vm.$vuetify.breakpoint.smOnly && !_vm.incompleteMock)?{key:\"prepend\",fn:function(){return [_c('content-selector')]},proxy:true}:null],null,true)},[_vm._v(\" These are practice exam questions and realistic mock exams to prepare you for the SACAA written exams. \")]),(_vm.$vuetify.breakpoint.smOnly)?_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('exam-history-card')],1):_vm._e(),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\",\"md\":\"4\"}},[(_vm.$vuetify.breakpoint.mdAndUp)?_c('content-selector'):_vm._e(),_c('v-card',[_c('v-card-title',[_c('v-icon',{attrs:{\"x-large\":\"\"}},[_vm._v(\" bookmark_border \")]),_vm._v(\" Bookmarked Questions \")],1),_c('v-card-subtitle',[_vm._v(\" View your bookmarked questions to create notes and tags on each question for further study or remove them from the list when complete. \")]),_c('v-card-actions',[_c('v-btn',{attrs:{\"color\":\"primary\",\"to\":{ name: 'BookmarkedQuestions' },\"disabled\":_vm.noSubscriptions}},[_vm._v(\" View \")])],1)],1),(!_vm.$vuetify.breakpoint.smOnly)?_c('exam-history-card'):_vm._e()],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.unexpiredSubscriptions.length !== 1)?_c('v-card',[_c('v-card-title',[(_vm.hasUnexpiredSubscriptions)?[_vm._v(\" Active Subscription \")]:[_vm._v(\" No Subscription \")]],2),_c('v-card-subtitle',[(_vm.hasUnexpiredSubscriptions)?[_vm._v(\" Switch between active content to view available content for selected subscription. \")]:[_vm._v(\" You are not able to view any content as you have no active subscription, please purchase a subscription to continue. \")]],2),(_vm.hasUnexpiredSubscriptions)?_c('v-row',{staticClass:\"justify-center\"},_vm._l((_vm.unexpiredSubscriptions),function(sub){return _c('v-col',{key:sub.id,class:'d-flex justify-center align-center py-0' + (sub.active ? ' active' : '')},[_c('v-btn',{class:(sub.active ? 'headline white' : 'disabled') + '--text',attrs:{\"large\":sub.active,\"ripple\":false,\"icon\":\"\"},on:{\"click\":function($event){return _vm.activate(sub)}}},[_c('v-avatar',{attrs:{\"color\":\"primary\",\"size\":sub.active ? 64 : 48}},[_vm._v(\" \"+_vm._s(sub.shortName)+\" \")])],1)],1)}),1):_c('v-card-actions',{staticClass:\"flex-column\"},[_c('v-btn',{attrs:{\"color\":\"primary\",\"to\":{ name: 'Subscriptions' }}},[_vm._v(\" Subscriptions \")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { createNamespacedHelpers } from 'vuex'\n\nconst { mapActions, mapGetters } = createNamespacedHelpers('subscriptions')\n\nexport default {\n name: 'ContentSelector',\n computed: {\n ...mapGetters(['hasUnexpiredSubscriptions', 'unexpiredSubscriptions'])\n },\n methods: {\n ...mapActions(['setActiveSubscription']),\n activate (subscription) {\n this.setActiveSubscription(subscription.id)\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./ContentSelector.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./ContentSelector.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ContentSelector.html?vue&type=template&id=3cd4b91e&scoped=true&\"\nimport script from \"./ContentSelector.js?vue&type=script&lang=js&\"\nexport * from \"./ContentSelector.js?vue&type=script&lang=js&\"\nimport style0 from \"./ContentSelector.scss?vue&type=style&index=0&id=3cd4b91e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3cd4b91e\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardSubtitle } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VAvatar,VBtn,VCard,VCardActions,VCardSubtitle,VCardTitle,VCol,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-col',{staticClass:\"d-flex flex-column\",attrs:{\"cols\":\"12\",\"sm\":\"6\",\"md\":\"4\"}},[_vm._t(\"prepend\"),(_vm.hasIncompleteExam)?_c('v-card',[_c('v-card-title',[_vm._v(\" Continue Incomplete \"+_vm._s(_vm.type)+\" Exam \")]),_c('v-card-subtitle',[_c('p',[_vm._v(\" \"+_vm._s(_vm.incompleteExam.name)+\" \")]),_c('p',[_vm._v(\" Date created \"+_vm._s(_vm.formatDate(_vm.incompleteExam.created))+\" \")])]),_c('v-card-actions',[_c('v-btn',{attrs:{\"color\":\"primary\",\"disabled\":_vm.noSubscriptions}},[_vm._v(\" Continue \")])],1)],1):_vm._e(),_c('v-card',{class:_vm.typeClass},[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.type)+\" Exam \")]),_c('v-card-subtitle',{staticClass:\"text--primary\"},[_vm._t(\"default\")],2),_c('v-spacer'),_c('v-card-actions',{class:_vm.noSubscriptions ? 'lighten' : ''},[_c('v-btn',{attrs:{\"color\":\"primary\",\"disabled\":_vm.noSubscriptions,\"to\":_vm.to}},[_vm._v(\" \"+_vm._s(_vm.action)+\" \")])],1)],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\nimport moment from 'moment'\n\nexport default {\n name: 'ExamSelector',\n props: {\n type: {\n type: String,\n required: true\n },\n action: {\n type: String,\n required: true\n },\n incompleteExam: {\n type: Object,\n default: null\n },\n to: {\n type: [Object, String],\n required: true\n }\n },\n computed: {\n hasIncompleteExam () {\n return this.incompleteExam !== null\n },\n typeClass () {\n const type = this.type.toLowerCase()\n\n return `${type}-exam`\n },\n ...mapGetters('subscriptions', ['noSubscriptions'])\n },\n methods: {\n formatDate (date) {\n return moment(date).format('YYYY-MM-DD')\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./ExamSelector.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./ExamSelector.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExamSelector.html?vue&type=template&id=56c5a82b&scoped=true&\"\nimport script from \"./ExamSelector.js?vue&type=script&lang=js&\"\nexport * from \"./ExamSelector.js?vue&type=script&lang=js&\"\nimport style0 from \"./ExamSelector.scss?vue&type=style&index=0&id=56c5a82b&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"56c5a82b\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardSubtitle } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardSubtitle,VCardTitle,VCol,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',{staticClass:\"d-flex flex-column\"},[_c('v-icon',{attrs:{\"x-large\":\"\"}},[_vm._v(\" history \")]),_vm._v(\" Exam History \")],1),_c('v-card-subtitle',[_vm._v(\" View your completed exams to see when and what your achievements were and observe your success rate. \")]),_c('v-card-actions',{staticClass:\"justify-center\"},[_c('v-btn',{attrs:{\"color\":\"primary\",\"to\":{ name: 'ExamHistory' },\"disabled\":_vm.noSubscriptions}},[_vm._v(\" View \")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\n\nexport default {\n name: 'ExamHistoryCard',\n computed: mapGetters('subscriptions', ['noSubscriptions'])\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./ExamHistoryCard.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./ExamHistoryCard.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExamHistoryCard.html?vue&type=template&id=e4d6a90e&\"\nimport script from \"./ExamHistoryCard.js?vue&type=script&lang=js&\"\nexport * from \"./ExamHistoryCard.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardSubtitle } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardSubtitle,VCardTitle,VIcon})\n","import ContentSelector from '@/components/ContentSelector'\nimport ExamSelector from '@/components/ExamSelector'\nimport ExamHistoryCard from '@/components/ExamHistoryCard'\nimport { mapGetters, mapActions } from 'vuex'\n\nexport default {\n name: 'Dashboard',\n components: {\n ContentSelector,\n ExamSelector,\n ExamHistoryCard\n },\n data: () => ({\n incompleteCustom: null,\n incompleteMock: null\n }),\n created () {\n this.syncExamProgress()\n },\n computed: {\n hasIncompleteCustom () {\n return this.incompleteCustom !== null\n },\n hasIncompleteMock () {\n return this.incompleteMock !== null\n },\n ...mapGetters('subscriptions', ['noSubscriptions'])\n },\n methods: {\n ...mapActions('exam', ['syncExamProgress'])\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Dashboard.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Dashboard.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Dashboard.html?vue&type=template&id=f9b2cbce&scoped=true&\"\nimport script from \"./Dashboard.js?vue&type=script&lang=js&\"\nexport * from \"./Dashboard.js?vue&type=script&lang=js&\"\nimport style0 from \"./Dashboard.scss?vue&type=style&index=0&id=f9b2cbce&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f9b2cbce\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardSubtitle } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardSubtitle,VCardTitle,VCol,VContainer,VIcon,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('unauth-navbar'),_c('v-row',[_c('v-col',[_c('p',{staticClass:\"headline\"},[_vm._v(\" Subscriptions \")]),_c('p',[_vm._v(\" We offer a complete solution with Private Pilot, Commercial Pilot, Airline Transport Pilot, and Integrated Airline Transport Pilot License Subscriptions including the new IR (Operational Procedures) examination. \")])])],1),_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-slide-group',{staticClass:\"px-md-12\",attrs:{\"center-active\":\"\",\"show-arrows\":\"\",\"mandatory\":\"\"}},_vm._l((_vm.subscriptions),function(subscription){return _c('v-slide-item',{key:subscription.id,scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar active = ref.active;\nvar toggle = ref.toggle;\nreturn [_c('v-card',{staticClass:\"d-flex flex-column align-center ma-4 pa-7\",attrs:{\"width\":_vm.$vuetify.breakpoint.smAndUp ? '250' : 'calc(100vw - 156px)',\"color\":active ? 'active' : '',\"ripple\":false},on:{\"click\":function($event){toggle(); _vm.activate(subscription)}}},[_c('v-row',{staticClass:\"ma-center\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('div',{staticClass:\"big-circle text-center\"},[_vm._v(\" \"+_vm._s(subscription.shortName)+\" \"),(subscription.relation != 0)?_c('div',{staticClass:\"small-circle mt-11 ml-n3\"},[_vm._v(\" \"+_vm._s(_vm.getRelationShortName(subscription.relation))+\" \")]):_vm._e()])]),_c('v-card-text',{staticClass:\"subtitle-2 pt-7 ma-0 text-center\"},[_vm._v(\" \"+_vm._s(subscription.name)+\" \")]),_c('v-spacer',{staticClass:\"ma-0\"}),(_vm.isActiveSubscription(subscription.id))?_c('v-card-text',{staticClass:\"pt-2 ma-0 text-center\"},[_vm._v(\" \"+_vm._s(_vm.getExpiryDate(subscription.id))+\" \")]):_vm._e()],1)]}}],null,true)})}),1)],1),(!_vm.dataLoading)?_c('v-row',[_c('v-col',[_c('p',[_vm._v(\" Please select subscription to view relevant information \")])])],1):_vm._e(),_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-slide-group',{staticClass:\"mx-0\",attrs:{\"center-active\":\"\",\"show-arrows\":\"\"}},_vm._l((_vm.options),function(option){return _c('v-slide-item',{key:option.key,staticClass:\"ma-4\"},[_c('v-card',{staticClass:\"d-flex flex-column align-center py-10\",attrs:{\"width\":_vm.$vuetify.breakpoint.smAndUp ? '320' : 'calc(100vw - 156px)'}},[_c('v-card-title',{staticClass:\"headline mb-0\"},[_vm._v(\" \"+_vm._s(_vm.formatPrice(option.price))+\" \")]),(_vm.optionActive(option.key))?_c('v-card-text',{staticClass:\"headline my-5\"},[_vm._v(\" Owned \")]):_c('v-spacer',{staticClass:\"ma-0\"}),_c('v-card-text',{staticClass:\"mb-3\"},[(option.period == 1)?[_vm._v(\" \"+_vm._s(option.length)+\" \"+_vm._s(option.length == 1 ? 'Day' : 'Days')+\" \")]:(option.period == 2)?[_vm._v(\" \"+_vm._s(option.length)+\" \"+_vm._s(option.length == 1 ? 'Month' : 'Months')+\" \")]:[_vm._v(\" \"+_vm._s(option.length)+\" \"+_vm._s(option.length == 1 ? 'Year' : 'Years')+\" \")]],2),_c('v-card-text',{staticClass:\"mb-8\"},[_vm._v(\" \"+_vm._s(option.access)+\" \")]),_c('v-card-text',{staticClass:\"mb-3\"},[_vm._v(\" \"+_vm._s(option.questionLimit)+\" \")]),_c('v-card-text',{staticClass:\"mb-8\"},[_vm._v(\" \"+_vm._s(option.mockExamLimit)+\" \")]),_c('v-card-actions',{staticClass:\"pa-0 ma-0\"},[_c('v-btn',{attrs:{\"color\":\"primary\",\"disabled\":_vm.trialActiveOrExpired(option)},on:{\"click\":function($event){return _vm.addOptionToCart(option)}}},[_vm._v(\" \"+_vm._s(_vm.buttonText)+\" \")])],1)],1)],1)}),1)],1),(_vm.dataLoading)?_c('v-progress-circular',{attrs:{\"color\":\"secondary\",\"size\":\"50\",\"indeterminate\":\"\"}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.isAuthenticated)?_c('div',[_c('v-navigation-drawer',{staticClass:\"mt-12\",attrs:{\"height\":\"unset\",\"temporary\":\"\",\"app\":\"\",\"hide-overlay\":\"\"},model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}},[_c('v-list',{staticClass:\"px-0\"},[_c('v-list-item',{attrs:{\"href\":\"http://questionbank.co.za/CAA_INFORMATION_NEW.aspx\",\"target\":\"_blank\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Resources\")])],1)],1),_c('v-list-item',{attrs:{\"to\":{ name: 'Contact' }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Contact Us\")])],1)],1)],1)],1),_c('v-app-bar',{attrs:{\"color\":_vm.$vuetify.breakpoint.smAndDown ? '#f1f3f5' : 'white',\"flat\":_vm.$vuetify.breakpoint.smAndDown,\"app\":\"\",\"dense\":\"\"}},[_c('v-app-bar-nav-icon',{on:{\"click\":function($event){_vm.drawer = true}}}),(_vm.$vuetify.breakpoint.smAndDown)?_c('v-spacer'):_vm._e(),_c('v-toolbar-title',[_c('v-card',{staticClass:\"no-global\",attrs:{\"color\":\"transparent\",\"to\":{ name: 'Root' },\"tile\":\"\",\"flat\":\"\"}},[_c('v-img',{attrs:{\"src\":_vm.navLogo}})],1)],1),_c('v-spacer'),_c('v-menu',{attrs:{\"min-width\":\"256\",\"left\":\"\",\"bottom\":\"\",\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-list-item',_vm._g({staticClass:\"user-menu-activator mr-n3\",attrs:{\"color\":\"black\",\"link\":\"\"}},on),[_vm._v(\" Not Logged In \")])]}}],null,false,2079064649)},[_c('v-list',[_c('v-list-item',{attrs:{\"to\":{ name: 'Subscriptions' }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Subscriptions\")])],1)],1),_c('v-list-item',{attrs:{\"to\":{ name: 'Cart' }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Cart\")])],1)],1),_c('v-list-item',{attrs:{\"to\":{ name: 'Register' }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Create Account\")])],1)],1),_c('v-list-item',{attrs:{\"to\":{ name: 'Login' }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Login\")])],1)],1)],1)],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\nimport smallNavLogo from '@/assets/img/logo/nav_small.png'\nimport navLogo from '@/assets/img/logo/nav_large.png'\n\nexport default {\n name: 'UnauthNavbar',\n data: () => ({\n drawer: false\n }),\n computed: {\n ...mapGetters('auth', ['isAuthenticated']),\n navLogo () {\n if (this.$vuetify.breakpoint.xsOnly) {\n return smallNavLogo\n }\n\n return navLogo\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./UnauthNavbar.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./UnauthNavbar.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UnauthNavbar.html?vue&type=template&id=65e581a3&scoped=true&\"\nimport script from \"./UnauthNavbar.js?vue&type=script&lang=js&\"\nexport * from \"./UnauthNavbar.js?vue&type=script&lang=js&\"\nimport style0 from \"./UnauthNavbar.scss?vue&type=style&index=0&id=65e581a3&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"65e581a3\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VAppBarNavIcon } from 'vuetify/lib/components/VAppBar';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VAppBar,VAppBarNavIcon,VCard,VImg,VList,VListItem,VListItemContent,VListItemTitle,VMenu,VNavigationDrawer,VSpacer,VToolbarTitle})\n","export function getPaymentProviders () {\n const paymentProviders = process.env.VUE_APP_PAYMENT_PROVIDERS\n let paymentProvidersArr = []\n if (paymentProviders !== undefined && paymentProviders.length > 0) {\n paymentProvidersArr = paymentProviders.split(';')\n if (paymentProvidersArr.length > 0) {\n paymentProvidersArr = verifyProviders(paymentProvidersArr)\n }\n }\n return paymentProvidersArr\n};\n\nfunction verifyProviders (providers) {\n const validProviders = ['Payfast', 'Simplify']\n providers.filter(p => validProviders.includes(p))\n providers = providers.map(element => getRoute(element))\n return providers\n};\n\nfunction getRoute (provider) {\n switch (provider) {\n case 'Simplify':\n provider = {\n name: 'Simplify',\n routeName: 'PaymentDetails'\n }\n break\n case 'Payfast':\n default:\n provider = {\n name: 'Payfast',\n routeName: 'Cart'\n }\n break\n }\n return provider\n};\n\nexport function getPaymentLocaleDetails () {\n const paymentSymbols = [\n { Locale: 'en-ZA', Currency: 'ZAR' },\n { Locale: 'en-AU', Currency: 'AUD' }\n ]\n const configLocal = process.env.VUE_APP_PAYMENT_LOCALE\n if (configLocal !== undefined) {\n const paymentSymbol = paymentSymbols.find(x => x.Locale === configLocal.toString())\n if (paymentSymbol !== undefined) {\n return paymentSymbol\n }\n }\n return paymentSymbols[0]\n};\n","import Vue from 'vue'\nimport UnauthNavbar from '@/components/nav/UnauthNavbar'\nimport { mapMutations, mapGetters } from 'vuex'\nimport moment from 'moment'\nimport * as paymentVariables from '@/api/PaymentVariables'\n\nexport default Vue.extend({\n name: 'Subscriptions',\n components: {\n UnauthNavbar\n },\n data: () => ({\n selectedSubscription: null,\n subscriptions: [],\n dataLoading: false\n }),\n computed: {\n activeSubscription () {\n if (this.selectedSubscription !== null) {\n return this.selectedSubscription\n }\n\n if (this.subscriptions.length !== 0) {\n return this.subscriptions[0]\n }\n\n return null\n },\n options () {\n if (this.activeSubscription === null) {\n return []\n }\n\n return this.activeSubscription.options\n },\n userActiveOptions () {\n if (this.activeSubscription === null) {\n return []\n }\n\n const userSub = this.getUserSubscriptionById(this.activeSubscription.id)\n\n if (userSub !== null) {\n return userSub.options\n }\n\n return []\n },\n anyOptionActive () {\n return this.options\n .map(o => o.key)\n .some(key => this.userActiveOptions.some(o => o.key === key))\n },\n buttonText () {\n if (this.activeSubscription !== null && this.subscriptionExpired(this.activeSubscription.id)) {\n return 'Renew'\n }\n\n if (this.anyOptionActive) {\n return 'Extend'\n }\n\n return 'Add to Cart'\n },\n ...mapGetters('subscriptions', ['userSubscriptions']),\n ...mapGetters('paymentProviders', ['providers'])\n },\n created () {\n this.fetchData()\n },\n methods: {\n async fetchData () {\n try {\n this.dataLoading = true\n this.paymentProviders = await this.$store.dispatch('paymentProviders/fetchProviders')\n this.subscriptions = await this.$store.dispatch('subscriptions/getSubscriptions')\n } finally {\n this.dataLoading = false\n }\n },\n getSubscriptionById (id) {\n return this.subscriptions.find(subscription => subscription.id === id) || null\n },\n getUserSubscriptionById (id) {\n return this.userSubscriptions.find(us => us.id === id) || null\n },\n activate (subscription) {\n this.selectedSubscription = subscription\n },\n isActiveSubscription (id) {\n return this.userSubscriptions.some(us => us.id === id)\n },\n getRelationShortName (id) {\n const sub = this.getSubscriptionById(id)\n\n if (sub === null) {\n return null\n }\n\n return sub.shortName\n },\n formatPrice (price) {\n const localeDetails = paymentVariables.getPaymentLocaleDetails()\n return price.toLocaleString(localeDetails.Locale, {\n style: 'currency',\n currency: localeDetails.Currency\n })\n .replace(/,/, '.')\n },\n getExpiryDate (id) {\n const userSub = this.getUserSubscriptionById(id)\n const displayDate = moment(userSub.expiryDate).format('DD-MM-YYYY')\n\n return `${userSub.expired ? 'Expired' : 'Expiry'} ${displayDate}`\n },\n subscriptionExpired (id) {\n return this.isActiveSubscription(id) &&\n this.getUserSubscriptionById(id).expired\n },\n async addOptionToCart (option) {\n const optionKey = option.key\n const subscriptionId = this.subscriptions.find(s => s.options.some(o => o.key === optionKey)).id\n const isTrial = option.price === 0\n\n await this.addToCart({\n subscriptionId,\n optionKey,\n isTrial\n })\n\n this.$router.push({ name: 'Cart' })\n },\n trialActiveOrExpired (option) {\n return option.price === 0 &&\n (\n this.anyOptionActive ||\n this.optionActive(option.key)\n )\n },\n optionActive (key) {\n return this.userActiveOptions.some(o => o.key === key)\n },\n ...mapMutations('cart', ['addToCart'])\n }\n})\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Subscriptions.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Subscriptions.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Subscriptions.html?vue&type=template&id=f3e8e94e&scoped=true&\"\nimport script from \"./Subscriptions.js?vue&type=script&lang=js&\"\nexport * from \"./Subscriptions.js?vue&type=script&lang=js&\"\nimport style0 from \"./Subscriptions.css?vue&type=style&index=0&id=f3e8e94e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f3e8e94e\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSlideGroup } from 'vuetify/lib/components/VSlideGroup';\nimport { VSlideItem } from 'vuetify/lib/components/VSlideGroup';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VContainer,VProgressCircular,VRow,VSlideGroup,VSlideItem,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('auth-template',{attrs:{\"title\":\"Login\",\"info\":_vm.info,\"error\":_vm.loginError},on:{\"submit\":_vm.login},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{staticClass:\"long\",attrs:{\"color\":\"primary\",\"type\":\"submit\",\"disabled\":_vm.$v.$invalid,\"loading\":_vm.loading}},[_vm._v(\" Login \")]),_c('p',{staticClass:\"my-4\"},[_vm._v(\" or \")]),_c('v-btn',{attrs:{\"to\":\"/register\",\"text\":\"\"}},[_vm._v(\" Create Account \")])]},proxy:true}])},[_c('v-text-field',{attrs:{\"label\":\"Username or Email\",\"type\":\"email\",\"autocomplete\":\"username email\",\"inputmode\":\"email\",\"error-messages\":_vm.errorMessages('email'),\"autofocus\":\"\",\"outlined\":\"\",\"required\":\"\"},model:{value:(_vm.$v.email.$model),callback:function ($$v) {_vm.$set(_vm.$v.email, \"$model\", $$v)},expression:\"$v.email.$model\"}}),_c('v-text-field',{attrs:{\"label\":\"Password\",\"autocomplete\":\"current-password\",\"type\":_vm.showPassword? 'text' : 'password',\"append-icon\":_vm.showPassword ? 'visibility' : 'visibility_off',\"error-messages\":_vm.errorMessages('password'),\"outlined\":\"\",\"required\":\"\"},on:{\"click:append\":function($event){_vm.showPassword = !_vm.showPassword}},model:{value:(_vm.$v.password.$model),callback:function ($$v) {_vm.$set(_vm.$v.password, \"$model\", $$v)},expression:\"$v.password.$model\"}}),_c('v-row',[_c('v-col',{staticClass:\"text-right\"},[_c('router-link',{staticClass:\"text--secondary\",attrs:{\"to\":\"/forgot-password\"}},[_vm._v(\" Forgot Password? \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"align-content-center\",attrs:{\"fluid\":\"\",\"fill-height\":\"\"}},[_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"md\":\"6\",\"xl\":\"4\"}},[(!_vm.noLogo)?_c('v-card',{staticClass:\"mt-2 mb-3 pa-0\",attrs:{\"to\":\"/\",\"ripple\":false,\"flat\":\"\",\"tile\":\"\"}},[_c('v-img',{attrs:{\"src\":require(\"@/assets/img/logo/QB stack black.png\"),\"height\":\"125\",\"contain\":\"\"}})],1):_vm._e(),_c('v-card',[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c('v-card-subtitle',{staticClass:\"mb-0\"},[_vm._t(\"subtitle\",[_vm._v(\" \"+_vm._s(_vm.subtitle)+\" \")])],2),(_vm.showError || _vm.error !== '')?_c('v-alert',{attrs:{\"type\":\"error\"}},[_vm._t(\"error\",[_vm._v(\" \"+_vm._s(_vm.error)+\" \")])],2):_vm._e(),(_vm.showInfo || _vm.info !== '')?_c('v-alert',{attrs:{\"type\":\"info\"}},[_vm._t(\"info\",[_vm._v(\" \"+_vm._s(_vm.info)+\" \")])],2):_vm._e(),_c('v-form',{staticClass:\"mb-0\",on:{\"submit\":function($event){$event.preventDefault();return _vm.$emit('submit')}}},[_vm._t(\"default\"),_c('v-card-actions',{staticClass:\"flex-column justify-space-between\"},[_vm._t(\"actions\",[_c('v-btn',{staticClass:\"long\",attrs:{\"color\":\"primary\",\"type\":\"submit\",\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"to\":_vm.to,\"text\":_vm.textButton}},[_vm._v(\" \"+_vm._s(_vm.action)+\" \")])]),_vm._t(\"append-actions\")],2)],2)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\n name: 'AuthTemplate',\n props: {\n title: {\n type: String,\n required: true\n },\n subtitle: {\n type: String,\n default: 'Welcome to Question Bank, we hope you brought your thinking cap'\n },\n action: {\n type: String,\n default: 'Submit'\n },\n disabled: {\n type: Boolean,\n default: false\n },\n loading: {\n type: Boolean,\n default: false\n },\n error: {\n type: String,\n default: ''\n },\n showError: {\n type: Boolean,\n default: false\n },\n info: {\n type: String,\n default: ''\n },\n showInfo: {\n type: Boolean,\n default: false\n },\n noLogo: {\n type: Boolean,\n default: false\n },\n to: {\n type: [String, Object],\n required: false\n },\n textButton: {\n type: Boolean,\n default: false\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./AuthTemplate.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./AuthTemplate.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AuthTemplate.html?vue&type=template&id=c71f8770&scoped=true&\"\nimport script from \"./AuthTemplate.js?vue&type=script&lang=js&\"\nexport * from \"./AuthTemplate.js?vue&type=script&lang=js&\"\nimport style0 from \"./AuthTemplate.scss?vue&type=style&index=0&id=c71f8770&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c71f8770\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardSubtitle } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardActions,VCardSubtitle,VCardTitle,VCol,VContainer,VForm,VImg,VRow})\n","export default customMessages => ({\n methods: {\n errorMessages: function (field) {\n customMessages = customMessages || {}\n const validator = this.$v[field]\n const res = []\n\n if (validator === undefined || !validator.$anyError) {\n return res\n }\n for (const [name, { type, ...params }] of Object.entries(validator.$params)) {\n if (validator[name]) {\n continue\n }\n\n if (customMessages[field] !== undefined && customMessages[field][name] !== undefined) {\n res.push(customMessages[field][name])\n continue\n }\n\n switch (type) {\n case 'required':\n res.push('Required Field')\n break\n case 'email':\n res.push('Invalid Email')\n break\n case 'minLength':\n res.push(`Must be at least ${params.min} characters long`)\n break\n case 'alphaNum':\n res.push('Field may only contain letters and numbers')\n break\n case 'numeric':\n res.push('Field may only contain numbers')\n break\n case 'phoneNumber':\n res.push('Must be a valid phone number')\n break\n default:\n res.push('MISSING VALIDATION MESSAGE')\n }\n }\n\n return res\n }\n }\n})\n","import AuthTemplate from '@/views/auth/AuthTemplate'\nimport ValidationMessages from '@/mixins/ValidationMessages'\nimport { required, minLength } from 'vuelidate/lib/validators'\nimport { mapGetters } from 'vuex'\n\nexport default {\n name: 'Login',\n components: {\n AuthTemplate\n },\n props: {\n redirect: {\n type: [String, Object],\n default: () => ({ name: 'Dashboard' })\n },\n info: {\n type: String,\n default: ''\n }\n },\n computed: {\n ...mapGetters('cart', ['emptyCart']),\n details () {\n const { email, password } = this\n return { email, password }\n }\n },\n data: () => {\n return {\n email: '',\n password: '',\n loginError: '',\n showPassword: false,\n loading: false\n }\n },\n validations: {\n email: { required },\n password: { required, minLength: minLength(5) }\n },\n mixins: [\n ValidationMessages()\n ],\n methods: {\n async login () {\n this.loginError = ''\n\n if (this.$v.$invalid) {\n this.$v.$touch()\n return\n }\n\n try {\n this.loading = true\n await this.$store.dispatch('auth/login', this.details)\n\n if (this.emptyCart) {\n this.$router.push(this.redirect)\n } else {\n this.$router.push({ name: 'Cart' })\n }\n } catch (error) {\n switch (error) {\n case 'User has attempted multiple times to login with incorrect details, user is now blocked.':\n this.loginError = 'This account has been locked due to too many login failed login attempts.'\n break\n case 'User\\'s email is not verified.':\n this.loginError = 'This account has not been activated. Please check your email for your activation link.'\n break\n default:\n this.loginError = 'Something went wrong while trying to login, please check your credentials'\n }\n } finally {\n this.loading = false\n }\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Login.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Login.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Login.html?vue&type=template&id=7a5e0790&\"\nimport script from \"./Login.js?vue&type=script&lang=js&\"\nexport * from \"./Login.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCol,VRow,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('auth-template',{attrs:{\"title\":\"Logout\",\"subtitle\":\"Logging you out\",\"no-logo\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-progress-circular',{attrs:{\"color\":\"secondary\",\"indeterminate\":\"\"}})]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import AuthTemplate from '@/views/auth/AuthTemplate'\n\nexport default {\n name: 'Logout',\n components: {\n AuthTemplate\n },\n created () {\n this.logout()\n },\n methods: {\n async logout () {\n try {\n await this.$store.dispatch('exam/syncExamProgress')\n } finally {\n await this.$store.dispatch('auth/logout')\n this.$router.push('/')\n }\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Logout.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Logout.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Logout.html?vue&type=template&id=63dde285&\"\nimport script from \"./Logout.js?vue&type=script&lang=js&\"\nexport * from \"./Logout.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\ninstallComponents(component, {VProgressCircular})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('auth-template',{attrs:{\"title\":\"Forgot Password?\",\"subtitle\":\"Oh no! You can reset your password here.\",\"action\":_vm.actionText,\"loading\":_vm.loading,\"disabled\":_vm.$v.$invalid,\"error\":_vm.error,\"show-info\":_vm.showConfirmation},on:{\"submit\":_vm.sendEmail},scopedSlots:_vm._u([{key:\"info\",fn:function(){return [_vm._v(\" You will receive an email with password reset instructions if this email account exists in our system. If you do not receive an email, please \"),_c('router-link',{attrs:{\"to\":{ name: 'Contact' }}},[_vm._v(\" contact support. \")])]},proxy:true}])},[_c('v-text-field',{attrs:{\"label\":\"Email\",\"type\":\"email\",\"autocomplete\":\"email\",\"inputmode\":\"email\",\"error-messages\":_vm.errorMessages('email'),\"outlined\":\"\",\"required\":\"\"},on:{\"input\":function($event){_vm.showConfirmation = false}},model:{value:(_vm.$v.email.$model),callback:function ($$v) {_vm.$set(_vm.$v.email, \"$model\", $$v)},expression:\"$v.email.$model\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import AuthTemplate from '@/views/auth/AuthTemplate'\nimport ValidationMessages from '@/mixins/ValidationMessages'\nimport { required, email } from 'vuelidate/lib/validators'\n\nexport default {\n name: 'ForgotPassword',\n components: {\n AuthTemplate\n },\n mixins: [\n ValidationMessages()\n ],\n data: () => {\n return {\n email: '',\n error: '',\n loading: false,\n showConfirmation: false\n }\n },\n validations: {\n email: { email, required }\n },\n computed: {\n actionText () {\n if (this.showConfirmation) {\n return 'Resend Email'\n }\n\n return 'Send Email'\n }\n },\n methods: {\n async sendEmail () {\n this.error = ''\n\n if (this.$v.$invalid) {\n this.$v.$touch()\n return\n }\n try {\n this.loading = true\n await this.$store.dispatch('auth/forgotPassword', this.email)\n this.showConfirmation = true\n } catch (_) {\n this.error = 'Something went wrong while trying to reset your password'\n this.showConfirmation = false\n } finally {\n this.loading = false\n }\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./ForgotPassword.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./ForgotPassword.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ForgotPassword.html?vue&type=template&id=5b1d4781&\"\nimport script from \"./ForgotPassword.js?vue&type=script&lang=js&\"\nexport * from \"./ForgotPassword.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('auth-template',{attrs:{\"action\":\"Reset Password\",\"title\":\"Change Password\",\"subtitle\":'Create a new password here ' + _vm.username + '.',\"disabled\":_vm.$v.$invalid,\"loading\":_vm.loading,\"error\":_vm.resetPasswordError},on:{\"submit\":_vm.resetPassword}},[_c('v-text-field',{attrs:{\"label\":\"Password\",\"autocomplete\":\"new-password\",\"type\":_vm.showPassword? 'text' : 'password',\"append-icon\":_vm.showPassword ? 'mdi-eye' : 'mdi-eye-off',\"error-messages\":_vm.errorMessages('password'),\"outlined\":\"\",\"required\":\"\"},on:{\"click:append\":function($event){_vm.showPassword = !_vm.showPassword}},model:{value:(_vm.$v.password.$model),callback:function ($$v) {_vm.$set(_vm.$v.password, \"$model\", $$v)},expression:\"$v.password.$model\"}}),_c('v-text-field',{attrs:{\"label\":\"Password Confirmation\",\"autocomplete\":\"new-password\",\"type\":_vm.showConfirmPassword? 'text' : 'password',\"append-icon\":_vm.showConfirmPassword ? 'mdi-eye' : 'mdi-eye-off',\"error-messages\":_vm.errorMessages('confirmPassword'),\"outlined\":\"\",\"required\":\"\"},on:{\"click:append\":function($event){_vm.showConfirmPassword = !_vm.showConfirmPassword}},model:{value:(_vm.$v.confirmPassword.$model),callback:function ($$v) {_vm.$set(_vm.$v.confirmPassword, \"$model\", $$v)},expression:\"$v.confirmPassword.$model\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { helpers } from 'vuelidate/lib/validators'\n\nexport const phoneNumber = helpers.regex('phoneNumber', /^\\s*\\+?\\s*\\d[\\s\\d]*$/)\n\nexport const hasUpperCase = helpers.regex('password', /[A-Z]/)\n\nexport const hasLowerCase = helpers.regex('password', /[a-z]/)\n\nexport const hasSpecialCharacter = helpers.regex('password', /[#?!@$%^&*-]/)\n\nexport const hasDigit = helpers.regex('password', /[0-9]/)\n","import AuthTemplate from '@/views/auth/AuthTemplate'\nimport { required, minLength, sameAs } from 'vuelidate/lib/validators'\nimport jwtDecode from 'jwt-decode'\nimport { hasUpperCase, hasLowerCase, hasSpecialCharacter, hasDigit } from '@/plugins/CustomValidators'\nimport ValidationMessages from '@/mixins/ValidationMessages'\n\nexport default {\n name: 'ResetPassword',\n components: {\n AuthTemplate\n },\n props: {\n token: {\n type: String,\n required: true\n }\n },\n data: () => {\n return {\n password: '',\n confirmPassword: '',\n showPassword: false,\n showConfirmPassword: false,\n resetPasswordError: '',\n loading: false\n }\n },\n computed: {\n username () {\n return jwtDecode(this.token).Username\n }\n },\n validations: {\n password: {\n required,\n minLength: minLength(5),\n hasUpperCase,\n hasLowerCase,\n hasSpecialCharacter,\n hasDigit\n },\n confirmPassword: { sameAsPassword: sameAs('password') }\n },\n mixins: [\n ValidationMessages({\n confirmPassword: {\n sameAsPassword: 'Passwords must match'\n },\n password: {\n hasLowerCase: 'Password must have atleast 1 lower case character',\n hasUpperCase: 'Password must have atleast 1 upper case character',\n hasDigit: 'Password must have atleast 1 number',\n hasSpecialCharacter: 'Password must have atleast 1 special character'\n }\n })\n ],\n methods: {\n async resetPassword () {\n this.resetPasswordError = ''\n if (this.$v.$invalid) {\n this.$v.$touch()\n return\n }\n if (this.$v.$invalid) {\n this.$v.$touch()\n return\n }\n try {\n this.loading = true\n await this.$store.dispatch('auth/resetPassword', { password: this.password, token: this.$props.token })\n this.$router.push({\n name: 'Login',\n params: {\n info: 'Password changed successfully.'\n }\n })\n } catch (_) {\n this.resetPasswordError = 'Something went wrong while trying to reset your password'\n } finally {\n this.loading = false\n }\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./ResetPassword.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./ResetPassword.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ResetPassword.html?vue&type=template&id=1c1ad3de&\"\nimport script from \"./ResetPassword.js?vue&type=script&lang=js&\"\nexport * from \"./ResetPassword.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('auth-template',{attrs:{\"title\":\"Create Account\",\"subtitle\":\"Complete the following details to create your new account\",\"action\":\"Next\",\"disabled\":_vm.$v.$invalid,\"loading\":_vm.loading,\"error\":_vm.registerError},on:{\"submit\":_vm.register}},[_c('v-text-field',{attrs:{\"label\":\"Username\",\"type\":\"text\",\"autocomplete\":\"username\",\"error-messages\":_vm.errorMessages('username'),\"outlined\":\"\",\"required\":\"\"},model:{value:(_vm.$v.username.$model),callback:function ($$v) {_vm.$set(_vm.$v.username, \"$model\", $$v)},expression:\"$v.username.$model\"}}),_c('v-text-field',{attrs:{\"label\":\"Name\",\"type\":\"text\",\"autocomplete\":\"given-name\",\"error-messages\":_vm.errorMessages('name'),\"outlined\":\"\",\"required\":\"\"},model:{value:(_vm.$v.name.$model),callback:function ($$v) {_vm.$set(_vm.$v.name, \"$model\", $$v)},expression:\"$v.name.$model\"}}),_c('v-text-field',{attrs:{\"label\":\"Surname\",\"type\":\"text\",\"autocomplete\":\"family-name\",\"error-messages\":_vm.errorMessages('surname'),\"outlined\":\"\",\"required\":\"\"},model:{value:(_vm.$v.surname.$model),callback:function ($$v) {_vm.$set(_vm.$v.surname, \"$model\", $$v)},expression:\"$v.surname.$model\"}}),_c('v-text-field',{attrs:{\"label\":\"Phone Number\",\"type\":\"tel\",\"autocomplete\":\"tel\",\"inputmode\":\"tel\",\"error-messages\":_vm.errorMessages('phone'),\"outlined\":\"\"},on:{\"input\":function($event){return _vm.phoneDebounced()}},model:{value:(_vm.phone),callback:function ($$v) {_vm.phone=$$v},expression:\"phone\"}}),_c('v-text-field',{attrs:{\"label\":\"Email\",\"type\":\"email\",\"autocomplete\":\"email\",\"inputmode\":\"email\",\"error-messages\":_vm.errorMessages('email'),\"outlined\":\"\",\"required\":\"\"},model:{value:(_vm.$v.email.$model),callback:function ($$v) {_vm.$set(_vm.$v.email, \"$model\", $$v)},expression:\"$v.email.$model\"}}),_c('v-text-field',{attrs:{\"label\":\"Password\",\"autocomplete\":\"new-password\",\"type\":_vm.showPassword ? 'text' : 'password',\"append-icon\":_vm.showPassword ? 'visibility' : 'visibility_off',\"error-messages\":_vm.errorMessages('password'),\"outlined\":\"\",\"required\":\"\"},on:{\"click:append\":function($event){_vm.showPassword = !_vm.showPassword}},model:{value:(_vm.$v.password.$model),callback:function ($$v) {_vm.$set(_vm.$v.password, \"$model\", $$v)},expression:\"$v.password.$model\"}}),_c('v-text-field',{attrs:{\"label\":\"Password Confirmation\",\"autocomplete\":\"new-password\",\"type\":_vm.showConfirm ? 'text' : 'password',\"append-icon\":_vm.showConfirm ? 'visibility' : 'visibility_off',\"error-messages\":_vm.errorMessages('passwordRepeat'),\"outlined\":\"\",\"required\":\"\"},on:{\"click:append\":function($event){_vm.showConfirm = !_vm.showConfirm}},model:{value:(_vm.$v.passwordRepeat.$model),callback:function ($$v) {_vm.$set(_vm.$v.passwordRepeat, \"$model\", $$v)},expression:\"$v.passwordRepeat.$model\"}}),_c('v-checkbox',{scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',[_vm._v(\" I agree to the \"),_c('v-tooltip',{scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('a',_vm._g({attrs:{\"target\":\"_blank\",\"href\":\"http://quest.alesco.co.za/index.php/terms-conditions\"},on:{\"click\":function($event){$event.stopPropagation();}}},on),[_vm._v(\" Terms and Conditions. \")])]}}])})],1)]},proxy:true}]),model:{value:(_vm.$v.termsAndConditions.$model),callback:function ($$v) {_vm.$set(_vm.$v.termsAndConditions, \"$model\", $$v)},expression:\"$v.termsAndConditions.$model\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import AuthTemplate from '@/views/auth/AuthTemplate'\nimport { required, sameAs, minLength, email, alphaNum } from 'vuelidate/lib/validators'\nimport { phoneNumber, hasUpperCase, hasLowerCase, hasSpecialCharacter, hasDigit } from '@/plugins/CustomValidators'\nimport debounce from 'lodash.debounce'\nimport ValidationMessages from '@/mixins/ValidationMessages'\n\nexport default {\n name: 'Register',\n components: {\n AuthTemplate\n },\n data: () => {\n return {\n username: '',\n name: '',\n surname: '',\n email: '',\n phone: '',\n password: '',\n passwordRepeat: '',\n registerError: '',\n loading: false,\n showPassword: false,\n showConfirm: false,\n termsAndConditions: false\n }\n },\n validations: {\n username: { required, alphaNum },\n name: { required },\n surname: { required },\n email: { required, email },\n phone: { phoneNumber },\n password: {\n required,\n minLength: minLength(5),\n hasUpperCase,\n hasLowerCase,\n hasSpecialCharacter,\n hasDigit\n },\n passwordRepeat: { required, sameAsPassword: sameAs('password') },\n termsAndConditions: { accepted: val => val === true }\n },\n mixins: [\n ValidationMessages({\n passwordRepeat: {\n sameAsPassword: 'Passwords must match'\n },\n password: {\n hasLowerCase: 'Password must have atleast 1 lower case character',\n hasUpperCase: 'Password must have atleast 1 upper case character',\n hasDigit: 'Password must have atleast 1 number',\n hasSpecialCharacter: 'Password must have atleast 1 special character'\n }\n })\n ],\n created () {\n this.phoneDebounced = debounce(this.$v.phone.$touch, 1000)\n },\n methods: {\n async register () {\n this.loading = false\n\n if (this.$v.$invalid) {\n this.$v.$touch()\n return\n }\n\n try {\n this.loading = true\n await this.$store.dispatch('auth/register', this.details)\n this.$router.push({ name: 'SendVerification', params: { details: this.details } })\n } catch (e) {\n this.setError(e)\n } finally {\n this.loading = false\n }\n },\n setError (error) {\n switch (error) {\n case 'InvalidPassword':\n this.registerError = 'Password is invalid.'\n break\n case 'A user with that username already exists.':\n this.registerError = 'User with the same username already exists.'\n break\n case 'A user with that email already exists.':\n this.registerError = 'User with the same email address already exists.'\n break\n default:\n this.registerError = 'Something went wrong while trying to register your account.'\n }\n }\n },\n computed: {\n details () {\n const { username, name, surname, email, phone, password, termsAndConditions } = this\n return { username, name, surname, email, phone, password, termsAndConditions }\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Register.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Register.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Register.html?vue&type=template&id=52627f50&\"\nimport script from \"./Register.js?vue&type=script&lang=js&\"\nexport * from \"./Register.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VCheckbox,VTextField,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('unauth-navbar'),_c('div',{staticClass:\"d-none\",attrs:{\"id\":\"form-container\"}}),_c('v-row',[_c('v-col',{staticClass:\"pb-0\"},[_c('p',{staticClass:\"headline ma-0\"},[_vm._v(\" Cart \")])])],1),_c('v-row',[_c('v-col',{staticClass:\"pt-0\"},[(_vm.$vuetify.breakpoint.smAndUp)?_c('v-simple-table',[_c('thead',{staticClass:\"font-weight-bold\"},[_c('tr',[_c('th',[_vm._v(\"Description\")]),_c('th',[_vm._v(\"Duration\")]),_c('th',[_vm._v(\"Access\")]),_c('th',[_vm._v(\"Price\")]),_c('th')])])]):_vm._e(),_c('v-card',{staticClass:\"py-0 mt-0\",attrs:{\"loading\":_vm.loading}},[(_vm.$vuetify.breakpoint.smAndUp)?_c('v-simple-table',[_c('tbody',_vm._l((_vm.display),function(item){return _c('tr',{key:item.id,class:_vm.isNonItem(item.id) ? 'no-hl' : ''},[_c('td',[_vm._v(_vm._s(item.description))]),_c('td',{staticClass:\"text-capitalize\"},[_vm._v(_vm._s(item.duration))]),_c('td',[_vm._v(_vm._s(item.access))]),_c('td',[_vm._v(_vm._s(item.price))]),_c('td',[(!_vm.isNonItem(item.id))?_c('v-btn',{attrs:{\"height\":\"20\",\"width\":\"20\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.removeFromCart(item.id)}}},[_c('v-icon',[_vm._v(\" clear \")])],1):_vm._e()],1)])}),0)]):_c('div',{staticClass:\"mt-5\"},_vm._l((_vm.display),function(item,i){return _c('div',{key:item.id},[(i !== 0)?_c('v-divider'):_vm._e(),_c('div',{staticClass:\"d-flex justify-space-between pa-5\"},[_c('div',[_c('div',[_vm._v(\" \"+_vm._s(item.description)+\" \")]),(!_vm.isNonItem(item.id))?_c('div',[_vm._v(\" \"+_vm._s(item.duration)+\" \")]):_vm._e(),(!_vm.isNonItem(item.id))?_c('div',[_vm._v(\" \"+_vm._s(item.access)+\" \")]):_vm._e()]),_c('div',{staticClass:\"d-flex flex-column-reverse justify-space-between align-end\"},[_c('div',[_vm._v(\" \"+_vm._s(item.price)+\" \")]),(!_vm.isNonItem(item.id))?_c('v-btn',{attrs:{\"height\":\"20\",\"width\":\"20\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.removeFromCart(item.id)}}},[_c('v-icon',[_vm._v(\" clear \")])],1):_vm._e()],1)])],1)}),0)],1)],1)],1),_c('v-row',[_c('v-col',{staticClass:\"d-flex flex-column flex-sm-row justify-end\"},[(_vm.error)?_c('v-alert',{staticClass:\"flex-grow-1 mb-0\",attrs:{\"type\":\"error\"}},[_vm._v(\" \"+_vm._s(_vm.error)+\" \")]):_vm._e(),_c('v-btn',{attrs:{\"color\":\"primary\",\"to\":{ name: 'Subscriptions' },\"text\":\"\"}},[_vm._v(\" Add More \")]),_c('v-btn',{staticClass:\"long\",attrs:{\"color\":\"primary\",\"loading\":_vm.loading,\"disabled\":_vm.emptyCart},on:{\"click\":_vm.checkoutCart}},[_vm._v(\" Checkout \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapActions, mapState, mapMutations, mapGetters } from 'vuex'\nimport UnauthNavbar from '@/components/nav/UnauthNavbar'\nimport moment from 'moment'\nimport * as paymentVariables from '@/api/PaymentVariables'\n\nconst EMPTY_KEY = 'EMPTY_CART'\nconst TOTAL_KEY = 'TOTAL'\n\nexport default {\n name: 'Cart',\n components: {\n UnauthNavbar\n },\n data: () => ({\n options: [],\n loading: false,\n error: ''\n }),\n created () {\n if ((!!this.$route.query.subscription) && (!!this.$route.query.option)) {\n const subscriptionId = parseInt(this.$route.query.subscription)\n const optionKey = this.$route.query.option\n\n this.addToCart({ subscriptionId, optionKey })\n\n // Clear query from url\n this.$router.replace({ name: 'Cart' })\n }\n\n this.fetchData()\n },\n methods: {\n async fetchData () {\n this.loading = true\n\n try {\n this.paymentProviders = await this.$store.dispatch('paymentProviders/fetchProviders')\n this.options = await this.getContents()\n } finally {\n this.loading = false\n }\n },\n optionToDisplay (option) {\n return {\n id: option.key,\n description: option.subscription.name,\n duration: this.getDuration(option),\n access: /^.*((full|limited) access).*$/i.exec(option.access)[1],\n price: this.formatPrice(option.price)\n }\n },\n formatPrice (price) {\n const localeDetails = paymentVariables.getPaymentLocaleDetails()\n return price.toLocaleString(localeDetails.Locale, {\n style: 'currency',\n currency: localeDetails.Currency\n })\n .replace(/,/, '.')\n },\n getDuration (option) {\n return moment\n .duration(option.length, this.decodePeriod(option.period))\n .humanize()\n .replace(/^a/, '1')\n },\n decodePeriod (period) {\n switch (period) {\n case 1:\n return 'days'\n case 2:\n return 'months'\n case 3:\n return 'years'\n default:\n throw new RangeError(`Cannot decode period = ${period}`)\n }\n },\n async checkoutCart () {\n this.loading = true\n\n if (!this.isAuthenticated) {\n this.$router.push({\n name: 'Login',\n params: {\n info: 'Please login or create an account to checkout.'\n }\n })\n return\n }\n\n try {\n const defaultProvider = this.providers.find(p => p.isDefault === true)\n const div = document.getElementById('form-container')\n let noCharge = false\n switch (defaultProvider.providerName) {\n case 'Simplify':\n noCharge = await this.checkoutSimplify()\n if (noCharge) {\n this.$router.push({ name: 'PaymentSuccess' })\n }\n break\n case 'Payfast':\n noCharge = await this.checkoutPayfast({ div })\n if (noCharge) {\n this.$router.push({ name: 'PaymentSuccess' })\n }\n break\n default:\n throw new RangeError('System Environment Variables not set correctly.')\n }\n } catch (e) {\n this.error = 'An error has occured and checkout could not be completed.'\n } finally {\n this.loading = false\n }\n },\n isNonItem (optionKey) {\n return optionKey === TOTAL_KEY || optionKey === EMPTY_KEY\n },\n ...mapActions('cart', ['getContents', 'checkoutPayfast', 'checkoutSimplify']),\n ...mapMutations('cart', ['addToCart', 'removeFromCart'])\n },\n computed: {\n ...mapState('cart', ['subscriptionOptions']),\n ...mapGetters('auth', ['isAuthenticated']),\n ...mapGetters('cart', ['emptyCart']),\n ...mapGetters('paymentProviders', ['providers']),\n display () {\n return [...this.displayOptions, this.total]\n },\n displayOptions () {\n if (!this.emptyCart) {\n return this.options.map(this.optionToDisplay)\n }\n\n return [{\n id: EMPTY_KEY,\n description: 'You have no items in your cart.',\n duration: '',\n access: '',\n price: ''\n }]\n },\n total () {\n const price = this.options.reduce((acc, o) => acc + o.price, 0)\n\n return {\n id: TOTAL_KEY,\n description: 'Total',\n access: '',\n duration: '',\n price: this.formatPrice(price)\n }\n }\n },\n watch: {\n subscriptionOptions () {\n this.fetchData()\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Cart.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Cart.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Cart.html?vue&type=template&id=7e51c491&scoped=true&\"\nimport script from \"./Cart.js?vue&type=script&lang=js&\"\nexport * from \"./Cart.js?vue&type=script&lang=js&\"\nimport style0 from \"./Cart.scss?vue&type=style&index=0&id=7e51c491&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7e51c491\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\ninstallComponents(component, {VAlert,VBtn,VCard,VCol,VContainer,VDivider,VIcon,VRow,VSimpleTable})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[_c('p',{staticClass:\"headline\"},[_vm._v(\" Exam Setup \")]),_c('p',{staticClass:\"subtitle-1\"},[_vm._v(\" Create your own customised exams with a selection of subjects, categories and exam parameters \")]),_c('p',{staticClass:\"title\"},[_vm._v(\" Content \")])])],1),_c('v-row',[_c('v-col',[_c('v-row',{staticClass:\"elevation-2\",attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\",\"md\":\"3\"}},[_c('v-card',{staticClass:\"no-global\",attrs:{\"tile\":\"\",\"flat\":\"\"}},[_c('label',{staticClass:\"caption text-uppercase pl-3\"},[_vm._v(\" Subject \")]),_c('v-select',{attrs:{\"placeholder\":\"Select subject\",\"item-text\":\"name\",\"items\":_vm.subjects,\"loading\":_vm.dataLoading,\"no-data-text\":\"No subjects\",\"flat\":\"\",\"hide-details\":\"\",\"return-object\":\"\",\"solo\":\"\"},on:{\"change\":_vm.pickSubject}})],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\",\"md\":\"3\"}},[_c('v-card',{staticClass:\"no-global\",attrs:{\"tile\":\"\",\"flat\":\"\"}},[_c('label',{staticClass:\"caption text-uppercase pl-3\"},[_vm._v(\"Category\")]),_c('v-select',{attrs:{\"items\":_vm.categories,\"item-text\":\"name\",\"return-object\":\"\",\"disabled\":_vm.categories.length === 0,\"placeholder\":\"Select category\",\"hide-details\":\"\",\"solo\":\"\",\"flat\":\"\"},on:{\"change\":_vm.pickCategory}})],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\",\"md\":\"3\"}},[_c('v-card',{staticClass:\"no-global\",attrs:{\"tile\":\"\",\"flat\":\"\"}},[_c('label',{staticClass:\"caption text-uppercase pl-3\"},[_vm._v(\"Inclusion\")]),_c('v-select',{attrs:{\"items\":_vm.inclusionOptions,\"loading\":_vm.inclusionDataLoading,\"disabled\":_vm.inclusionDataLoading,\"item-disabled\":_vm.inclusionDisabled,\"hide-details\":\"\",\"solo\":\"\",\"flat\":\"\"},model:{value:(_vm.filters.inclusion),callback:function ($$v) {_vm.$set(_vm.filters, \"inclusion\", $$v)},expression:\"filters.inclusion\"}})],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\",\"md\":\"3\"}},[_c('v-card',{staticClass:\"no-global\",attrs:{\"tile\":\"\",\"flat\":\"\"}},[_c('label',{staticClass:\"caption text-uppercase\"},[_vm._v(\"Amount of questions\")]),_c('v-slider',{staticClass:\"pt-2 ma-0 pa-0\",attrs:{\"min\":\"0\",\"max\":_vm.maxQuestions,\"disabled\":_vm.categoryNotSelected},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_c('v-text-field',{staticClass:\"centered-text mt-n1\",attrs:{\"type\":\"number\",\"min\":\"0\",\"max\":_vm.maxQuestions,\"disabled\":_vm.categoryNotSelected},model:{value:(_vm.filters.questionCount),callback:function ($$v) {_vm.$set(_vm.filters, \"questionCount\", $$v)},expression:\"filters.questionCount\"}})]},proxy:true},{key:\"append\",fn:function(){return [_c('p',{staticClass:\"max-count mt-1 text-no-wrap\"},[_vm._v(\"of \"+_vm._s(_vm.maxQuestions))])]},proxy:true}]),model:{value:(_vm.filters.questionCount),callback:function ($$v) {_vm.$set(_vm.filters, \"questionCount\", $$v)},expression:\"filters.questionCount\"}})],1)],1)],1)],1)],1),_c('v-row',[_c('v-col',[_c('p',{staticClass:\"title\"},[_vm._v(\" Parameters \")])])],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"9\"}},[_c('v-row',{staticClass:\"elevation-2\",attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\",\"md\":\"4\"}},[_c('v-card',{staticClass:\"no-global\",attrs:{\"tile\":\"\",\"flat\":\"\"}},[_c('label',{staticClass:\"caption text-uppercase pl-3\"},[_vm._v(\"Time\")]),_c('v-select',{ref:\"timeSelect\",attrs:{\"items\":_vm.durationOptions,\"menu-props\":_vm.durationMenuProps,\"suffix\":_vm.timedSelected ? _vm.durationDisplay : '',\"hide-details\":\"\",\"solo\":\"\",\"flat\":\"\"},on:{\"focus\":_vm.durationFocus},scopedSlots:_vm._u([(_vm.timedSelected)?{key:\"append-item\",fn:function(){return [_c('div',{staticClass:\"d-flex justify-center\"},[_c('v-time-picker',{ref:\"durationPicker\",staticClass:\"pa-0 elevation-0\",attrs:{\"color\":\"primary\",\"format\":\"24hr\",\"max\":\"11:59\",\"value\":_vm.durationDisplay,\"no-title\":\"\"},on:{\"input\":_vm.pickDuration,\"click:hour\":function($event){_vm.durationDisplayClass = 'selecting-minute'},\"click:minute\":function($event){_vm.$refs.timeSelect.isMenuActive = false}}})],1)]},proxy:true}:null,{key:\"item\",fn:function(ref){\nvar item = ref.item;\nvar attrs = ref.attrs;\nvar on = ref.on;\nreturn [_c('v-list-item',_vm._b({on:{\"mousedown\":on.mousedown,\"click\":function($event){return _vm.timeSelectClick(item, on.click)}}},'v-list-item',attrs,false),[_vm._v(\" \"+_vm._s(item.text)+\" \"),_c('v-spacer'),(item.value === 1 && attrs.inputValue)?_c('span',{class:_vm.durationDisplayClass},[_c('span',{on:{\"mousedown\":function($event){$event.stopPropagation();},\"!click\":function($event){$event.stopPropagation();_vm.$refs.durationPicker.selectingHour = true, _vm.updateDurationDisplayClass()}}},[_vm._v(\" \"+_vm._s(_vm.durationDisplayHours)+\" \")]),_vm._v(\" : \"),_c('span',{on:{\"mousedown\":function($event){$event.stopPropagation();},\"click\":function($event){$event.stopPropagation();_vm.$refs.durationPicker.selectingMinute = true, _vm.updateDurationDisplayClass()}}},[_vm._v(\" \"+_vm._s(_vm.durationDisplayMinutes)+\" \")])]):_vm._e()],1)]}}],null,true),model:{value:(_vm.durationType),callback:function ($$v) {_vm.durationType=$$v},expression:\"durationType\"}})],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\",\"md\":\"4\"}},[_c('v-card',{staticClass:\"no-global\",attrs:{\"tile\":\"\",\"flat\":\"\"}},[_c('label',{staticClass:\"caption text-uppercase pl-3\"},[_vm._v(\"Answer display\")]),_c('v-select',{attrs:{\"items\":_vm.displays,\"item-text\":\"name\",\"hide-details\":\"\",\"solo\":\"\",\"flat\":\"\"},model:{value:(_vm.filters.display),callback:function ($$v) {_vm.$set(_vm.filters, \"display\", $$v)},expression:\"filters.display\"}})],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-card',{staticClass:\"no-global\",attrs:{\"tile\":\"\",\"flat\":\"\"}},[_c('label',{staticClass:\"caption text-uppercase pl-3\"},[_vm._v(\"Submission\")]),_c('v-select',{attrs:{\"item-text\":\"name\",\"items\":_vm.submissions,\"disabled\":_vm.durationUnlimited,\"hide-details\":\"\",\"solo\":\"\",\"flat\":\"\"},model:{value:(_vm.filters.submission),callback:function ($$v) {_vm.$set(_vm.filters, \"submission\", $$v)},expression:\"filters.submission\"}})],1)],1)],1)],1)],1),_c('v-row',[_c('v-col',[_c('v-btn',{staticClass:\"long createExam\",attrs:{\"color\":\"primary\",\"disabled\":_vm.buttonDisabled,\"loading\":_vm.loading},on:{\"click\":_vm.createExam}},[_vm._v(\" Create Exam \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\nimport moment from 'moment'\nimport momentDurationFormatSetup from 'moment-duration-format'\n\nmomentDurationFormatSetup(moment)\n\n/**\n * Enums\n */\n// TODO: Move these enums into their own file\nexport const InclusionTypes = {\n EVERYTHING: 0,\n EXCLUDE_ANSWERED: 1,\n PREVIOUSLY_INCORRECT: 2,\n PREVIOUSLY_CORRECT: 3\n}\n\nconst DurationTypes = {\n UNLIMITED: 0,\n TIMED: 1\n}\n\nconst displays = [{ name: 'At The End', value: 0 }, { name: 'After Each Question', value: 1 }]\nconst durations = [{ name: 'Unlimited', value: 0 }, { name: 'Timed', value: 1 }]\n\nconst submissions = [{ name: 'Manual', value: 0 }, { name: 'Automated', value: 1 }]\n\nconst INCLUSION_SELECTION = [\n {\n text: 'Everything',\n value: InclusionTypes.EVERYTHING\n },\n {\n text: 'Exclude Previously Answered',\n value: InclusionTypes.EXCLUDE_ANSWERED\n },\n {\n text: 'Previously Incorrectly Answered',\n value: InclusionTypes.PREVIOUSLY_INCORRECT\n },\n {\n text: 'Previously Correctly Answered',\n value: InclusionTypes.PREVIOUSLY_CORRECT\n }\n]\n\nconst DURATION_SELECTION = [\n {\n text: 'Unlimited',\n value: DurationTypes.UNLIMITED\n },\n {\n text: 'Timed',\n value: DurationTypes.TIMED\n }\n]\n\nexport default {\n name: 'CustomExam',\n data: () => {\n return {\n subjects: [],\n categories: [],\n durationMoment: moment.duration(0),\n durationString: '00:00',\n durationDisplayClass: 'selecting-hour',\n displays,\n durations,\n inclusionOptions: INCLUSION_SELECTION,\n durationOptions: DURATION_SELECTION,\n durationType: DurationTypes.UNLIMITED,\n submissions,\n filters: {\n subject: null,\n category: null,\n display: 0,\n inclusion: 0,\n submission: 0,\n questionCount: 0\n },\n loading: false,\n dataLoading: false,\n inclusionDataLoading: false,\n durationMenuProps: {\n closeOnContentClick: false,\n closeOnClick: false,\n maxHeight: 3400\n }\n }\n },\n watch: {\n durationType (newVal) {\n if (newVal === DurationTypes.UNLIMITED) {\n this.filters.submission = 0\n }\n },\n maxQuestions (newVal) {\n this.filters.questionCount = newVal\n }\n },\n computed: {\n ...mapGetters('subscriptions', ['getActiveSubscription', 'getActiveId']),\n timedSelected () {\n return this.durationType === DurationTypes.TIMED\n },\n categoryNotSelected () {\n return this.filters.category === null\n },\n buttonDisabled () {\n return this.filters.category === null ||\n this.filters.questionCount === 0 ||\n (\n !this.durationUnlimited &&\n this.durationMoment.asMilliseconds() === 0\n )\n },\n maxQuestions () {\n return this.filters.category === null ? 0 : this.filters.category.questionCounts[this.filters.inclusion]\n },\n durationDisplay () {\n return this.durationMoment.format('hh:mm', { trim: false })\n },\n durationDisplayHours () {\n return this.durationDisplay.split(':')[0]\n },\n durationDisplayMinutes () {\n return this.durationDisplay.split(':')[1]\n },\n durationUnlimited () {\n return this.durationType === DurationTypes.UNLIMITED\n },\n durationMilliseconds () {\n if (this.durationUnlimited) {\n return 0\n }\n\n return this.durationMoment.asMilliseconds()\n }\n },\n created () {\n this.fetchSubjectOptions()\n },\n methods: {\n async createExam () {\n this.loading = true\n try {\n await this.$store.dispatch('exam/fetchCustomExamQuestions', {\n ...this.filters,\n duration: this.durationMilliseconds,\n subscriptionId: this.getActiveSubscription.id\n })\n this.fetchBookmarkedQuestions()\n this.$router.push({ name: 'StartExam' })\n } catch (_) {\n } finally {\n this.loading = false\n }\n },\n async fetchSubjectOptions () {\n try {\n this.dataLoading = true\n this.subjects = await this.$store.dispatch('exam/fetchSubjects', this.getActiveSubscription)\n } finally {\n this.dataLoading = false\n }\n },\n async fetchCounts () {\n try {\n this.inclusionDataLoading = true\n this.filters.category.questionCounts = await this.$store.dispatch('exam/fetchCounts',\n { id: this.getActiveSubscription.id, subjectId: this.filters.subject.id, subcategoryId: this.filters.category.id })\n } finally {\n this.filters.inclusion = InclusionTypes.EVERYTHING\n this.filters.questionCount = this.maxQuestions\n this.inclusionDataLoading = false\n }\n },\n updateDurationDisplayClass () {\n this.$nextTick(function () {\n if (!this.$refs.durationPicker) {\n return\n }\n\n if (this.$refs.durationPicker.selectingHour) {\n this.durationDisplayClass = 'selecting-hour'\n return\n }\n\n if (this.$refs.durationPicker.selectingMinute) {\n this.durationDisplayClass = 'selecting-minute'\n }\n })\n },\n pickSubject (subject) {\n this.filters.subject = subject\n this.categories = subject.categories\n this.filters.category = null\n this.filters.questionCount = 0\n },\n pickCategory (category) {\n this.filters.category = category\n this.fetchCounts()\n },\n inclusionDisabled (inclusion) {\n if (this.filters.category === null) {\n return true\n }\n\n return this.filters.category.questionCounts[inclusion.value] === 0\n },\n setMenuProp () {\n this.durationMenuProps.closeOnContentClick = true\n },\n pickDuration (time) {\n this.durationMoment = moment.duration(time)\n },\n durationFocus () {\n if (this.$refs.durationPicker) {\n this.$refs.durationPicker.selectingHour = true\n this.updateDurationDisplayClass()\n }\n },\n timeSelectClick (item, defaultCallback) {\n if (item.value === DurationTypes.UNLIMITED) {\n defaultCallback()\n return\n }\n\n this.durationType = item.value\n this.$refs.timeSelect.$refs.menu.updateDimensions()\n this.updateDurationDisplayClass()\n },\n async fetchBookmarkedQuestions () {\n await this.$store.dispatch('bookmarks/fetchBookmarkedQuestions', this.getActiveId)\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./CustomExam.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./CustomExam.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CustomExam.html?vue&type=template&id=51089411&scoped=true&\"\nimport script from \"./CustomExam.js?vue&type=script&lang=js&\"\nexport * from \"./CustomExam.js?vue&type=script&lang=js&\"\nimport style0 from \"./CustomExam.scss?vue&type=style&index=0&id=51089411&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"51089411\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSlider } from 'vuetify/lib/components/VSlider';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTimePicker } from 'vuetify/lib/components/VTimePicker';\ninstallComponents(component, {VBtn,VCard,VCol,VContainer,VListItem,VRow,VSelect,VSlider,VSpacer,VTextField,VTimePicker})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"d-flex flex-column flex-sm-row justify-space-between\",attrs:{\"cols\":\"12\"}},[_c('p',{staticClass:\"headline my-0\"},[_vm._v(\"Exam Results\")]),_c('v-btn',{staticClass:\"long\",attrs:{\"color\":\"primary\",\"to\":{ name: 'Dashboard' }}},[_vm._v(\" Done \")])],1),_c('v-col',{staticClass:\"mt-1 mt-sm-0\"},[_c('div',{staticClass:\"d-flex flex-row justify-start align-center flex-wrap filter-wrapper\"},[_c('v-select',{staticClass:\"flex-grow-0\",attrs:{\"items\":_vm.filterItems,\"label\":\"Filter\",\"hide-details\":\"\",\"solo\":\"\",\"flat\":\"\"},on:{\"change\":_vm.applyFilters},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}}),(_vm.filterBy !== '')?_c('v-chip',{staticClass:\"ml-5\",attrs:{\"color\":\"secondary text--primary\",\"close\":\"\"},on:{\"click:close\":_vm.removeFilters}},[_vm._v(\" \"+_vm._s(_vm.filterBy)+\" \")]):_vm._e()],1)])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('exam-results-card',{attrs:{\"exam\":_vm.exam}})],1)],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_vm._l((_vm.filterableQuestions),function(question){return _c('question-card',{key:question.id,attrs:{\"question\":question,\"expanded\":_vm.expandedQuestionId === question.id,\"question-number\":question.number},on:{\"toggleExpanded\":function($event){return _vm.toggleExpanded(question)}}})}),(_vm.noQuestions)?_c('no-content-card',{attrs:{\"message\":\"No questions found\"}}):_vm._e()],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"no-global d-flex align-center mt-5\"},[_c('v-progress-circular',{staticClass:\"headline ma-5\",attrs:{\"rotate\":\"270\",\"size\":\"97\",\"value\":_vm.exam.correctPercent,\"color\":_vm.exam.passed ? '#8ac63f' : '#d50000'}},[_vm._v(\" \"+_vm._s(_vm.exam.correctPercent)+\"% \")]),_c('div',{staticClass:\"headers\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.exam.name)+\" \")]),_c('p',[_vm._v(\" Time spent \"+_vm._s(_vm.examDuration)+\" - Date \"+_vm._s(_vm.examDate)+\" \")]),_c('p',[_vm._v(\" Correct \"+_vm._s(_vm.exam.correctCount)+\" of \"+_vm._s(_vm.exam.questionCount)+\" Questions \")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import moment from 'moment'\n\nexport default {\n name: 'ExamResultsCard',\n props: {\n exam: Object\n },\n computed: {\n examDuration () {\n const start = moment(this.exam.start)\n const end = moment(this.exam.end)\n return moment.duration(end.diff(start)).format('hh:mm:ss', { trim: false })\n },\n examDate () {\n return moment(this.exam.start).format('YYYY-MM-DD')\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./ExamResultsCard.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./ExamResultsCard.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExamResultsCard.html?vue&type=template&id=91a7ba1e&scoped=true&\"\nimport script from \"./ExamResultsCard.js?vue&type=script&lang=js&\"\nexport * from \"./ExamResultsCard.js?vue&type=script&lang=js&\"\nimport style0 from \"./ExamResultsCard.scss?vue&type=style&index=0&id=91a7ba1e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"91a7ba1e\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\ninstallComponents(component, {VCard,VProgressCircular})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"no-global d-flex flex-column flex-sm-row pa-5 mt-5\",attrs:{\"width\":\"100%\"}},[_c('div',{staticClass:\"flex-grow-1\"},[_c('div',{staticClass:\"question-wrapper\"},[_c('div',[_c('p',{class:(_vm.questionNumber === undefined ? 'text-16' : 'headline mt-n1') + ' text-center'},[_vm._v(\" \"+_vm._s(_vm.questionNumber === undefined ? (\"ID \" + (_vm.question.id)) : _vm.questionNumber)+\" \")]),(_vm.$vuetify.breakpoint.xsOnly)?_c('div',[_c('bookmark-button',{attrs:{\"question\":Object.assign({}, _vm.question.raw, {isBookmarked: true})}})],1):_vm._e()]),_c('p',{staticClass:\"text-14\",domProps:{\"innerHTML\":_vm._s(_vm.question.text)}})]),_c('div',{staticClass:\"options-wrapper\"},[(!_vm.question.answered)?_c('question-option',{attrs:{\"question\":_vm.question,\"option\":{text: 'No answer submitted'},\"flat\":\"\",\"no-click\":\"\",\"no-highlight\":\"\",\"always-show-results\":\"\",\"dense\":\"\",\"force-incorrect\":\"\",\"force-select\":\"\",\"no-letter\":\"\"}}):_vm._e(),_vm._l((_vm.question.options),function(option){return _c('question-option',{key:option.key,attrs:{\"question\":_vm.question,\"option\":option,\"only-answers\":!_vm.expanded,\"flat\":\"\",\"no-click\":\"\",\"no-highlight\":\"\",\"always-show-results\":\"\",\"dense\":\"\"}})})],2),(_vm.expanded)?[(_vm.hasExplanation)?_c('div',{staticClass:\"text-wrapper text-14\"},[_c('p',[_vm._v(\" Explanation \")]),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.question.answerExplanation)}})]):_vm._e(),_c('v-card-actions',{staticClass:\"d-flex flex-wrap pa-0 mt-0\"},[_c('annexure-viewer',{attrs:{\"annexures\":_vm.question.annexures.answer}})],1)]:_vm._e()],2),(_vm.$vuetify.breakpoint.xsOnly && _vm.expanded)?_c('v-divider',{staticClass:\"mt-5\"}):_vm._e(),_c('div',{staticClass:\"side-bar ml-sm-5\"},[_c('div',{class:_vm.annexureWrapperClass},[(_vm.expanded)?_c('annexure-viewer',{attrs:{\"max-width\":_vm.$vuetify.breakpoint.smAndUp ? '244' : 'calc(100vw - 90px)',\"annexures\":_vm.question.annexures.question,\"column\":\"\",\"no-top-margin\":\"\"}}):_vm._e(),(_vm.$vuetify.breakpoint.smAndUp)?_c('div',{staticClass:\"ml-5\"},[_c('bookmark-button',{attrs:{\"question\":Object.assign({}, _vm.question.raw, {isBookmarked: true})}})],1):_vm._e()],1),_c('v-spacer'),(_vm.hasNotes && _vm.expanded)?_c('div',{staticClass:\"d-flex flex-column\"},[_c('p',{staticClass:\"subtitle-2 ma-0\"},[_vm._v(\"Notes\")]),_c('p',{staticClass:\"my-1\"},[_vm._v(_vm._s(_vm.notes))])]):_vm._e(),_c('div',[_c('div',{staticClass:\"chip-wrapper\"},_vm._l((_vm.tags),function(tag){return (_vm.expanded)?_c('v-chip',{key:tag,attrs:{\"color\":\"black--text secondary\"}},[_vm._v(\" \"+_vm._s(tag)+\" \")]):_vm._e()}),1),_c('v-btn',{staticClass:\"ml-1\",attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.$emit('toggleExpanded')}}},[_c('v-icon',[_vm._v(\" \"+_vm._s(_vm.expanded ? 'mdi-chevron-up' : 'mdi-chevron-down')+\" \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"width\":_vm.$vuetify.breakpoint.smAndDown ? '100%' : '50%',\"persistent\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({staticClass:\"primary white--text\",attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(_vm._s(_vm.isBookmarked ? 'bookmark' :'bookmark_outline'))])],1)]}}]),model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('v-card',{staticClass:\"no-global pa-5 pb-0\"},[_c('v-card-title',{staticClass:\"flex-nowrap pa-5 mx-n5 mt-n5 disabled headline font-weight-regular text-truncate\"},[_c('span',{staticClass:\"flex-grow-1\",domProps:{\"innerHTML\":_vm._s(_vm.question.text)}}),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.showDialog = false}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1),_c('v-text-field',{attrs:{\"label\":\"Leave note on bookmark...\",\"hide-details\":\"\",\"outlined\":\"\"},model:{value:(_vm.note),callback:function ($$v) {_vm.note=$$v},expression:\"note\"}}),_c('v-divider'),_c('v-form',{staticClass:\"d-flex justify-start\",on:{\"submit\":function($event){$event.preventDefault();return _vm.addTag($event)}}},[_c('v-text-field',{staticClass:\"ultra-dense flex-grow-0\",attrs:{\"placeholder\":\"Tag...\",\"prepend-inner-icon\":\"search\",\"autocomplete\":\"off\",\"outlined\":\"\",\"hide-details\":\"\",\"rounded\":\"\",\"dense\":\"\",\"no-data\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}}),_c('v-btn',{attrs:{\"type\":\"submit\",\"height\":\"30\",\"disabled\":_vm.invalidTag,\"text\":\"\"}},[_vm._v(\" Add \")])],1),_c('div',{staticClass:\"chip-wrapper\"},[_vm._l((_vm.tags),function(tag){return _c('v-chip',{key:tag,staticClass:\"text--primary\",attrs:{\"color\":\"secondary\",\"close-icon\":\"mdi-close\",\"close\":\"\",\"small\":\"\"},on:{\"click:close\":function($event){return _vm.removeTag(tag)}}},[_vm._v(\" \"+_vm._s(tag)+\" \")])}),_vm._l((_vm.suggestedTags),function(tag){return _c('v-chip',{key:tag,staticClass:\"text--primary\",attrs:{\"color\":\"secondary\",\"outlined\":\"\",\"small\":\"\"},on:{\"click\":function($event){return _vm.tags.push(tag)}}},[_vm._v(\" \"+_vm._s(tag)+\" \")])})],2),_c('div',{staticClass:\"mx-n5\"},[_c('v-divider'),_c('div',{staticClass:\"d-flex justify-end\"},[_c('v-btn',{attrs:{\"loading\":_vm.removeLoading,\"text\":\"\"},on:{\"click\":_vm.removeOrCancel}},[_vm._v(\" \"+_vm._s(_vm.isBookmarked ? 'Remove' : 'Cancel')+\" \")]),_c('v-btn',{attrs:{\"text\":\"\",\"loading\":_vm.updateLoading},on:{\"click\":_vm.addOrUpdateBookmark}},[_vm._v(\" \"+_vm._s(_vm.isBookmarked ? 'Update' : 'Add Bookmark')+\" \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapActions, mapGetters } from 'vuex'\n\nexport default {\n name: 'BookmarkButton',\n props: {\n question: {\n type: Object,\n required: true\n }\n },\n data: () => ({\n tags: [],\n updateLoading: false,\n removeLoading: false,\n showDialog: false,\n note: '',\n search: ''\n }),\n computed: {\n ...mapGetters('exam', ['exam']),\n ...mapGetters('subscriptions', ['getActiveId']),\n ...mapGetters('bookmarks', ['getBookmarks', 'sortedTags']),\n isBookmarked () {\n return this.getBookmarks.some(bookmark => {\n return bookmark.question.id === this.question.id\n })\n },\n suggestedTags () {\n return this.sortedTags\n .filter(t => !this.tags.includes(t))\n .filter(t => t.includes(this.search))\n .slice(0, 10)\n },\n bookmarkId () {\n return this.getBookmarks.find(bookmark => bookmark.question.id === this.question.id).id\n },\n invalidTag () {\n return this.search.trim() === '' || this.tags.includes(this.search.trim())\n }\n },\n created () {\n this.refreshFromStore()\n },\n watch: {\n isBookmarked () {\n this.refreshFromStore()\n },\n showDialog (newVal) {\n if (newVal) {\n this.refreshFromStore()\n }\n }\n },\n methods: {\n ...mapActions('bookmarks', ['addBookmark', 'updateBookmark', 'removeBookmark', 'fetchBookmarkedQuestions']),\n refreshFromStore () {\n if (this.isBookmarked) {\n const bookmarked = this.getBookmarks.find(bookmark => bookmark.question.id === this.question.id)\n this.note = bookmarked.notes\n this.tags = bookmarked.tags.slice()\n } else {\n this.note = ''\n this.tags = []\n }\n },\n removeTag (tag) {\n this.tags.splice(this.tags.indexOf(tag), 1)\n },\n async removeOrCancel () {\n if (!this.isBookmarked) {\n this.showDialog = false\n return\n }\n\n try {\n this.removeLoading = true\n\n await this.removeBookmark(this.bookmarkId)\n await this.fetchBookmarkedQuestions(this.getActiveId)\n } finally {\n this.removeLoading = false\n this.showDialog = false\n }\n },\n async addOrUpdateBookmark () {\n this.updateLoading = true\n try {\n if (this.isBookmarked) {\n await this.updateBookmark({\n bookmarkId: this.bookmarkId,\n tagNames: this.tags,\n note: this.note\n })\n } else {\n await this.addBookmark({\n examId: this.exam.id,\n questionId: this.question.id,\n tags: this.tags,\n note: this.note\n })\n }\n\n await this.fetchBookmarkedQuestions(this.getActiveId)\n } finally {\n this.updateLoading = false\n this.showDialog = false\n }\n },\n addTag () {\n if (this.invalidTag) {\n return\n }\n\n this.tags.push(this.search.trim())\n this.search = ''\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./BookmarkButton.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./BookmarkButton.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BookmarkButton.html?vue&type=template&id=2655f7da&scoped=true&\"\nimport script from \"./BookmarkButton.js?vue&type=script&lang=js&\"\nexport * from \"./BookmarkButton.js?vue&type=script&lang=js&\"\nimport style0 from \"./BookmarkButton.scss?vue&type=style&index=0&id=2655f7da&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2655f7da\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardTitle,VChip,VDialog,VDivider,VForm,VIcon,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.topMargin ? 'mt-5' : ''},[(_vm.annexures.length > 0)?_c('div',{class:_vm.wrapperClass},_vm._l((_vm.annexures),function(annexure){return _c('annexure-item',{key:annexure.name,attrs:{\"annexure\":annexure,\"column\":_vm.column,\"max-width\":_vm.maxWidth},on:{\"click\":function($event){return _vm.showAnnexure(annexure)}}})}),1):_vm._e(),_c('v-dialog',{attrs:{\"height\":\"min-content\",\"width\":\"min-content\",\"scrollable\":\"\"},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('v-card',{staticClass:\"no-global pa-5\",attrs:{\"height\":\"min-content\",\"width\":\"min-content\",\"min-width\":_vm.loading ? '50vw' : '',\"loading\":_vm.loading}},[(_vm.currentAnnexure !== null)?[(_vm.currentAnnexure.isLink)?[_c('div',{staticClass:\"d-flex justify-center\"},[(_vm.currentAnnexure.isVimeoLink)?_c('v-card',{staticClass:\"pa-0 no-global\",attrs:{\"width\":\"min-content\"}},[_c('v-toolbar',{attrs:{\"dense\":\"\",\"flat\":\"\"}},[_c('v-spacer'),_c('v-toolbar-title',[_vm._v(\" \"+_vm._s(_vm.currentAnnexure.name)+\" \")]),_c('v-spacer')],1),_c('v-divider'),_c('div',{staticClass:\"pa-sm-5\"},[_c('vue-vimeo-player',{attrs:{\"player-width\":_vm.vimeoWidth,\"video-url\":_vm.currentAnnexure.url}})],1)],1):_vm._e()],1)]:(_vm.annexureData !== null)?[(_vm.annexureData.isPdf)?_c('annexure-pdf',{attrs:{\"annexure-data\":_vm.annexureData}}):(_vm.annexureData.isImage)?_c('annexure-image',{attrs:{\"annexure-data\":_vm.annexureData}}):(_vm.annexureData.isUnknown)?_c('p',[_vm._v(\" Unknown annexure type \")]):_vm._e()]:_vm._e()]:_vm._e()],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-btn',{class:_vm.buttonClass,attrs:{\"color\":\"secondary\",\"width\":\"unset\",\"target\":\"_blank\",\"href\":_vm.href,\"max-width\":_vm.maxWidth},on:{\"click\":_vm.onClick}},[_c('v-icon',[_vm._v(\" crop_original \")]),_c('span',[_vm._v(\" \"+_vm._s(_vm.annexure.name)+\" \")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\n name: 'AnnexureItem',\n props: {\n annexure: {\n type: Object,\n required: true\n },\n column: {\n type: Boolean,\n default: false\n },\n maxWidth: {\n type: String,\n required: false\n }\n },\n computed: {\n href () {\n if (this.annexure.isPlainLink) {\n return this.annexure.url\n }\n },\n buttonClass () {\n return {\n 'black--text': true,\n column: this.column,\n 'has-max-width': !!this.maxWidth\n }\n }\n },\n methods: {\n onClick () {\n if (!this.annexure.isPlainLink) {\n this.$emit('click')\n }\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./AnnexureItem.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./AnnexureItem.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AnnexureItem.html?vue&type=template&id=2cf1010f&scoped=true&\"\nimport script from \"./AnnexureItem.js?vue&type=script&lang=js&\"\nexport * from \"./AnnexureItem.js?vue&type=script&lang=js&\"\nimport style0 from \"./AnnexureItem.scss?vue&type=style&index=0&id=2cf1010f&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2cf1010f\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.annexureData.isImage)?_c('v-card',{staticClass:\"pa-0 no-global\",attrs:{\"width\":\"50vw\"}},[_c('v-toolbar',{attrs:{\"dense\":\"\",\"flat\":\"\"}},[_c('v-spacer'),_c('v-toolbar-title',[_vm._v(\" \"+_vm._s(_vm.annexureData.name)+\" \")]),_c('v-spacer')],1),_c('v-divider'),_c('v-img',{attrs:{\"src\":_vm.annexureData.data}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\n name: 'AnnexureImage',\n props: {\n annexureData: {\n type: Object,\n required: true\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./AnnexureImage.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./AnnexureImage.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AnnexureImage.html?vue&type=template&id=2ab459bf&\"\nimport script from \"./AnnexureImage.js?vue&type=script&lang=js&\"\nexport * from \"./AnnexureImage.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VCard,VDivider,VImg,VSpacer,VToolbar,VToolbarTitle})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.annexureData.isPdf)?_c('v-card',{staticClass:\"pa-0 no-global\",attrs:{\"width\":\"50vw\"}},[_c('v-toolbar',{attrs:{\"dense\":\"\",\"flat\":\"\"}},[_c('v-btn',{attrs:{\"disabled\":!_vm.hasPrev,\"icon\":\"\"},on:{\"click\":function($event){_vm.currentPage -= 1}}},[_c('v-icon',[_vm._v(\" chevron_left \")])],1),_c('v-spacer'),_c('v-toolbar-title',[_vm._v(\" \"+_vm._s(_vm.annexureData.name)+\" - \"+_vm._s(_vm.currentPage)+\" / \"+_vm._s(_vm.pageCount)+\" \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"disabled\":!_vm.hasNext,\"icon\":\"\"},on:{\"click\":function($event){_vm.currentPage += 1}}},[_c('v-icon',[_vm._v(\" chevron_right \")])],1)],1),_c('v-divider'),_c('pdf',{attrs:{\"src\":_vm.annexureData.data,\"page\":_vm.currentPage},on:{\"num-pages\":_vm.numPage}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import pdf from 'vue-pdf'\n\nexport default {\n name: 'AnnexurePdf',\n components: {\n pdf\n },\n data: () => ({\n pageCount: 0,\n currentPage: 1\n }),\n props: {\n annexureData: {\n type: Object,\n required: true\n }\n },\n computed: {\n hasPrev () {\n return this.pageCount !== 0 && this.currentPage > 1\n },\n hasNext () {\n return this.currentPage < this.pageCount\n }\n },\n methods: {\n numPage (val) {\n if (val) {\n this.pageCount = val\n }\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./AnnexurePdf.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./AnnexurePdf.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AnnexurePdf.html?vue&type=template&id=77c84db6&\"\nimport script from \"./AnnexurePdf.js?vue&type=script&lang=js&\"\nexport * from \"./AnnexurePdf.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VBtn,VCard,VDivider,VIcon,VSpacer,VToolbar,VToolbarTitle})\n","import { vueVimeoPlayer } from 'vue-vimeo-player'\nimport AnnexureItem from '@/components/AnnexureItem'\nimport AnnexureImage from '@/components/annexures/Image'\nimport AnnexurePdf from '@/components/annexures/Pdf'\nimport { mapActions } from 'vuex'\n\nexport default {\n name: 'AnnexureViewer',\n components: {\n AnnexureItem,\n AnnexureImage,\n AnnexurePdf,\n vueVimeoPlayer\n },\n props: {\n annexures: {\n type: Array,\n required: true\n },\n column: {\n type: Boolean,\n default: false\n },\n noTopMargin: {\n type: Boolean,\n default: false\n },\n maxWidth: {\n type: String,\n required: false\n }\n },\n data: () => ({\n showDialog: false,\n currentAnnexure: null,\n annexureData: null,\n loading: false\n }),\n watch: {\n currentAnnexure (val) {\n if (val === null || val.isLink) {\n return\n }\n\n this.getAnnexureData()\n }\n },\n computed: {\n wrapperClass () {\n return {\n 'annexure-wrapper': true,\n 'flex-column': this.column,\n 'd-flex': this.column,\n 'align-end': this.column && this.$vuetify.breakpoint.smAndUp,\n 'align-start': this.column && this.$vuetify.breakpoint.xsOnly\n }\n },\n topMargin () {\n return this.annexures.length > 0 && !this.noTopMargin\n },\n vimeoWidth () {\n if (this.$vuetify.breakpoint.smAndUp) {\n return undefined\n }\n\n return this.$vuetify.breakpoint.width - 88\n }\n },\n methods: {\n ...mapActions('annexures', ['fetchAnnexure']),\n showAnnexure (annexure) {\n this.currentAnnexure = annexure\n this.showDialog = true\n },\n async getAnnexureData () {\n this.annexureData = null\n this.loading = true\n\n try {\n this.annexureData = await this.fetchAnnexure(this.currentAnnexure)\n } finally {\n this.loading = false\n }\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./AnnexureViewer.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./AnnexureViewer.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AnnexureViewer.html?vue&type=template&id=3b56058b&scoped=true&\"\nimport script from \"./AnnexureViewer.js?vue&type=script&lang=js&\"\nexport * from \"./AnnexureViewer.js?vue&type=script&lang=js&\"\nimport style0 from \"./AnnexureViewer.scss?vue&type=style&index=0&id=3b56058b&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3b56058b\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VCard,VDialog,VDivider,VSpacer,VToolbar,VToolbarTitle})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.display)?_c('v-card',_vm._g({class:_vm.cardClass,attrs:{\"color\":_vm.cardColor,\"flat\":_vm.flat}},_vm.onCard),[_c('v-card-title',{staticClass:\"ma-0 mr-5\"},[_c('div',[_vm._v(\" \"+_vm._s(_vm.text)+\" \")])]),_c('v-card-text',{staticClass:\"ma-0 subtitle-1\",domProps:{\"innerHTML\":_vm._s(_vm.option.text)}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapMutations } from 'vuex'\n\nexport default {\n name: 'QuestionOption',\n props: {\n option: {\n type: Object,\n required: true\n },\n question: {\n type: Object,\n required: true\n },\n showResults: {\n type: Boolean,\n default: false\n },\n alwaysShowResults: {\n type: Boolean,\n default: false\n },\n onlyAnswers: {\n type: Boolean,\n default: false\n },\n flat: {\n type: Boolean,\n default: false\n },\n noHighlight: {\n type: Boolean,\n default: false\n },\n noClick: {\n type: Boolean,\n default: false\n },\n dense: {\n type: Boolean,\n default: false\n },\n noLetter: {\n type: Boolean,\n default: false\n },\n forceSelect: {\n type: Boolean,\n default: false\n },\n forceIncorrect: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n onCard () {\n const res = {}\n\n if (!this.noClick) {\n res.click = this.answer\n }\n\n return res\n },\n display () {\n return !this.onlyAnswers || this.isSelected || this.isCorrectAnswer\n },\n text () {\n if (this.noLetter) {\n return ''\n }\n\n return String.fromCharCode('A'.charCodeAt(0) + this.option.order)\n },\n questionAnswered () {\n return this.question.answered\n },\n isCorrectAnswer () {\n return !this.forceIncorrect && this.question.isOptionCorrect(this.option.key)\n },\n isSelected () {\n return this.forceSelect || this.question.isOptionSelected(this.option.key)\n },\n cardColor () {\n if (!this.noHighlight && this.isSelected) {\n return 'disabled'\n }\n\n return ''\n },\n cardClass () {\n const res = {\n dense: this.dense\n }\n\n if (this.showResults || this.alwaysShowResults) {\n if (this.isCorrectAnswer && (this.questionAnswered || this.alwaysShowResults)) {\n res.correct = true\n }\n\n if (this.isSelected && !this.isCorrectAnswer) {\n res.incorrect = true\n }\n }\n\n return res\n }\n },\n methods: {\n ...mapMutations('exam', ['answerQuestion']),\n answer () {\n if (this.noClick) {\n return\n }\n\n this.answerQuestion({\n questionId: this.question.id,\n answerKey: this.option.key\n })\n\n this.$emit('answer')\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./QuestionOption.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./QuestionOption.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuestionOption.html?vue&type=template&id=3174181f&scoped=true&\"\nimport script from \"./QuestionOption.js?vue&type=script&lang=js&\"\nexport * from \"./QuestionOption.js?vue&type=script&lang=js&\"\nimport style0 from \"./QuestionOption.scss?vue&type=style&index=0&id=3174181f&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3174181f\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\ninstallComponents(component, {VCard,VCardText,VCardTitle})\n","import BookmarkButton from '@/components/BookmarkButton'\nimport AnnexureViewer from '@/components/AnnexureViewer'\nimport QuestionOption from '@/components/QuestionOption'\nimport { mapGetters } from 'vuex'\n\nexport default {\n name: 'QuestionCard',\n components: {\n BookmarkButton,\n AnnexureViewer,\n QuestionOption\n },\n props: {\n question: Object,\n questionNumber: Number,\n expanded: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n ...mapGetters('bookmarks', ['getBookmarks']),\n isBookmarked () {\n return this.getBookmarks.some(b => {\n return b.question.id === this.question.id\n })\n },\n annexureWrapperClass () {\n return {\n 'mt-5': this.question.annexures.question.length > 0,\n 'mt-sm-0': this.question.annexures.question.length > 0,\n 'justify-start': this.$vuetify.breakpoint.xsOnly\n }\n },\n notes () {\n return this.isBookmarked ? this.getBookmarks.find(b => b.question.id === this.question.id).notes : ''\n },\n tags () {\n return this.isBookmarked ? this.getBookmarks.find(b => b.question.id === this.question.id).tags : []\n },\n hasNotes () {\n return this.isBookmarked && this.notes !== ''\n },\n hasExplanation () {\n return this.question.answerExplanation !== null && this.question.answerExplanation !== ''\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./QuestionCard.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./QuestionCard.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuestionCard.html?vue&type=template&id=4fcce20b&scoped=true&\"\nimport script from \"./QuestionCard.js?vue&type=script&lang=js&\"\nexport * from \"./QuestionCard.js?vue&type=script&lang=js&\"\nimport style0 from \"./QuestionCard.scss?vue&type=style&index=0&id=4fcce20b&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4fcce20b\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VChip,VDivider,VIcon,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"no-global text-center mt-5\"},[_c('v-card-text',[_vm._v(\" \"+_vm._s(_vm.message)+\" \")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nexport default {\n name: 'NoContentCard',\n props: {\n message: {\n type: String,\n default: 'No content'\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./NoContentCard.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./NoContentCard.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NoContentCard.html?vue&type=template&id=3900589c&\"\nimport script from \"./NoContentCard.js?vue&type=script&lang=js&\"\nexport * from \"./NoContentCard.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\ninstallComponents(component, {VCard,VCardText})\n","import sanitizeHtml from 'sanitize-html'\n\nconst SANITIZE_OPTIONS = {\n allowedTags: ['b', 'i', 'em', 'strong', 'ul', 'ol', 'li', 'br', 'div'],\n parser: {\n lowerCaseTags: true\n }\n}\n\nexport const AnnexureType = {\n ITEM: 0,\n LINK: 1\n}\n\nexport const AnswerDisplay = {\n AT_THE_END: 0,\n AFTER_EACH_QUESTION: 1\n}\n\nexport const SubmissionType = {\n MANUAL: 0,\n AUTO: 1\n}\n\nfunction isVimeoUrl (url) {\n return /^https?:\\/\\/vimeo.com\\//i.test(url)\n}\n\nfunction sanitize (html) {\n if (html === undefined || html === null) {\n return null\n }\n\n return sanitizeHtml(html, SANITIZE_OPTIONS)\n}\n\nfunction apiOptionMap (api) {\n return {\n key: api.key,\n text: sanitize(api.option),\n order: api.order\n }\n}\n\nclass Annexure {\n static fromAPI (api) {\n let raw\n\n if (api.annexureName !== undefined) {\n raw = {\n type: AnnexureType.ITEM,\n id: api.annexureID,\n name: api.annexureName\n }\n } else {\n raw = {\n type: AnnexureType.LINK,\n url: api.annexureUrl,\n name: api.linkName\n }\n }\n\n return new Annexure(raw)\n }\n\n static fromRaw (raw) {\n return new Annexure(raw)\n }\n\n constructor (raw) {\n this.name = raw.name\n this.type = raw.type\n\n if (raw.type === AnnexureType.ITEM) {\n this.id = raw.id\n } else {\n this.url = raw.url\n }\n }\n\n get isItem () {\n return this.type === AnnexureType.ITEM\n }\n\n get isLink () {\n return this.type === AnnexureType.LINK\n }\n\n get isVimeoLink () {\n return this.isLink && isVimeoUrl(this.url)\n }\n\n get isPlainLink () {\n return this.isLink && !isVimeoUrl(this.url)\n }\n}\n\nexport class Question {\n static fromAPI (api, index) {\n const raw = {\n id: api.id,\n number: index + 1,\n reportURL: api.questionReportingLink,\n text: sanitize(api.questionText),\n answerExplanation: sanitize(api.answerExplanation),\n options: api.questionOptions,\n annexures: {\n question: [...api.annexures, ...api.annexureLink],\n answer: [...api.answerAnnexures, ...api.answerAnnexureLink]\n },\n answerKeys: api.questionOptions.filter(o => o.isCorrect).map(o => o.key),\n studentAnswerKeys: api.userAnswerKeys\n }\n\n return new Question(raw, Annexure.fromAPI, apiOptionMap)\n }\n\n static fromRaw (raw) {\n return new Question(raw)\n }\n\n constructor (raw, annexureMap, optionMap) {\n if (raw === undefined || raw === null) {\n raw = {}\n }\n\n if (raw.raw !== undefined) {\n // Don't recurse\n raw = raw.raw\n }\n\n if (raw.dirty === undefined) {\n raw.dirty = {}\n }\n\n if (raw.meta === undefined) {\n raw.meta = {}\n }\n\n if (raw.annexures === undefined) {\n raw.annexures = {}\n }\n\n if (raw.annexures.question === undefined) {\n raw.annexures.question = []\n }\n\n if (raw.annexures.answer === undefined) {\n raw.annexures.answer = []\n }\n\n if (annexureMap) {\n raw.annexures.question = raw.annexures.question.map(annexureMap)\n raw.annexures.answer = raw.annexures.answer.map(annexureMap)\n }\n\n if (raw.options === undefined) {\n raw.options = []\n }\n\n if (optionMap) {\n raw.options = raw.options.map(optionMap)\n }\n\n if (!raw.meta.optionsSorted) {\n /**\n * Sorting is expensive - make sure we only do it once\n */\n raw.options.sort((lhs, rhs) => lhs.order - rhs.order)\n\n raw.meta.optionsSorted = true\n }\n\n if (raw.answerKeys === undefined) {\n raw.answerKeys = []\n }\n\n if (raw.studentAnswerKeys === undefined) {\n raw.studentAnswerKeys = []\n }\n\n if (raw.start === undefined) {\n raw.start = null\n }\n\n if (raw.end === undefined) {\n raw.end = null\n }\n\n this.raw = raw\n }\n\n startQuestion () {\n this.start = new Date()\n }\n\n finishQuestion () {\n this.end = new Date()\n }\n\n getSyncUnit () {\n if (!this.dirty) {\n return null\n }\n\n const sync = {\n id: this.raw.id\n }\n\n if (this.raw.dirty.start) {\n sync.start = this.raw.start\n }\n\n if (this.raw.dirty.end) {\n sync.end = this.raw.end\n }\n\n if (this.raw.dirty.studentAnswerKeys) {\n sync.studentAnswerKeys = this.raw.studentAnswerKeys.slice()\n }\n\n return sync\n }\n\n completeSync (sync) {\n /**\n * If a value has been synced and hasn't changed,\n * remove the dirty mark.\n */\n if (this.raw.dirty.start && sync.start === this.raw.start) {\n this.raw.dirty.start = false\n }\n\n if (this.raw.dirty.end && sync.end === this.raw.end) {\n this.raw.dirty.end = false\n }\n\n if (this.raw.dirty.studentAnswerKeys &&\n Array.isArray(sync.studentAnswerKeys) &&\n sync.studentAnswerKeys.every(key => this.raw.studentAnswerKeys.includes(key))) {\n this.raw.dirty.studentAnswerKeys = false\n }\n }\n\n isOptionSelected (optionKey) {\n return this.studentAnswerKeys.includes(optionKey)\n }\n\n isOptionCorrect (optionKey) {\n return this.answerKeys.includes(optionKey)\n }\n\n get started () {\n return this.raw.start !== null\n }\n\n get finished () {\n return this.raw.end !== null\n }\n\n get answered () {\n return this.studentAnswerKeys.length === this.answerKeys.length\n }\n\n get answeredCorrectly () {\n return this.answered && this.answerKeys.every(ans => this.studentAnswerKeys.includes(ans))\n }\n\n get dirty () {\n return false || // This makes sure the following are properly coerced to booleans\n this.raw.dirty.studentAnswerKeys ||\n this.raw.dirty.start ||\n this.raw.dirty.end\n }\n\n get hasExplanation () {\n return !!this.raw.answerExplanation\n }\n\n /**\n * Nothing but proxy getters and setters after this point\n */\n\n get id () {\n return this.raw.id\n }\n\n set id (value) {\n this.raw.id = value\n }\n\n get number () {\n return this.raw.number\n }\n\n set number (value) {\n this.raw.number = value\n }\n\n get reportURL () {\n return this.raw.reportURL\n }\n\n set reportURL (value) {\n this.raw.reportURL = value\n }\n\n get text () {\n return this.raw.text\n }\n\n set text (value) {\n this.raw.text = value\n }\n\n get subjectId () {\n return this.raw.subjectId\n }\n\n set subjectId (value) {\n this.raw.subjectId = value\n }\n\n get categoryId () {\n return this.raw.categoryId\n }\n\n set categoryId (value) {\n this.raw.categoryId = value\n }\n\n get answerExplanation () {\n return this.raw.answerExplanation\n }\n\n set answerExplanation (value) {\n this.raw.answerExplanation = value\n }\n\n get answerKeys () {\n return this.raw.answerKeys\n }\n\n set answerKeys (value) {\n this.raw.answerKeys = value\n }\n\n get studentAnswerKeys () {\n return this.raw.studentAnswerKeys\n }\n\n set studentAnswerKeys (keys) {\n /**\n * Don't set answers that aren't options\n */\n keys = keys.filter(k => this.options.some(o => o.key === k))\n\n /**\n * If the answers haven't changed, do nothing\n */\n if (keys.every(k => this.studentAnswerKeys.includes(k)) &&\n this.studentAnswerKeys.every(k => keys.includes(k))) {\n return\n }\n\n /**\n * If we're changing our answer, then the\n * question is no longer finished.\n */\n if (this.finished) {\n this.end = null\n }\n\n this.raw.studentAnswerKeys = keys\n this.raw.dirty.studentAnswerKeys = true\n }\n\n get start () {\n if (this.raw.start === null) {\n return null\n }\n\n return new Date(this.raw.start)\n }\n\n set start (value) {\n if (this.finished) {\n return\n }\n\n this.raw.start = (new Date(value)).valueOf()\n this.raw.dirty.start = true\n }\n\n get end () {\n if (this.raw.end === null) {\n return null\n }\n\n return new Date(this.raw.end)\n }\n\n set end (value) {\n /**\n * Don't end a question before it's been started\n * or before it's been answered\n */\n if (!this.started || !this.answered) {\n return\n }\n\n this.raw.end = (new Date(value)).valueOf()\n this.raw.dirty.end = true\n }\n\n get options () {\n return this.raw.options\n }\n\n get annexures () {\n return {\n question: this.raw.annexures.question.map(Annexure.fromRaw),\n answer: this.raw.annexures.answer.map(Annexure.fromRaw)\n }\n }\n}\n\nclass Exam {\n static fromAPI (api) {\n const raw = {\n id: api.examId,\n name: sanitize(api.name),\n questions: api.questions,\n duration: api.duration,\n subscriptionId: api.activeSubscriptionId,\n answerDisplay: api.answerDisplay,\n submissionType: api.submissionType,\n passMark: api.passMark\n }\n\n if (raw.passMark === undefined || raw.passMark === null) {\n raw.passMark = 75\n }\n\n return new Exam(raw, Question.fromAPI)\n }\n\n static fromRaw (raw) {\n return new Exam(raw)\n }\n\n constructor (raw, questionMap) {\n if (raw === undefined || raw === null) {\n raw = {}\n }\n\n if (raw.raw !== undefined) {\n // Don't recurse\n raw = raw.raw\n }\n\n if (questionMap) {\n raw.questions = raw.questions.map(questionMap)\n } else {\n raw.questions = raw.questions.map(Question.fromRaw)\n }\n\n if (raw.dirty === undefined) {\n raw.dirty = {}\n }\n\n if (raw.meta === undefined) {\n raw.meta = {}\n }\n\n if (!raw.meta.sorted) {\n /**\n * Sorting is expensive - make sure we only do it once\n */\n raw.questions.sort((lhs, rhs) => lhs.number - rhs.number)\n\n raw.meta.sorted = true\n }\n\n if (raw.start === undefined) {\n raw.start = null\n }\n\n if (raw.end === undefined) {\n raw.end = null\n }\n\n if (raw.idMap === undefined) {\n /**\n * Creates a lookup table to convert question ids to their array index\n */\n\n raw.idMap = raw.questions.reduce((acc, cur, ind) => ({\n ...acc,\n [cur.id]: ind\n }), {})\n }\n\n this.raw = raw\n }\n\n startQuestion (questionId) {\n if (this.finished) {\n return\n }\n\n const question = this.getQuestionById(questionId)\n\n if (question !== undefined) {\n question.startQuestion()\n }\n }\n\n finishQuestion (questionId) {\n if (this.finished) {\n return\n }\n\n const question = this.getQuestionById(questionId)\n\n if (question !== undefined) {\n question.finishQuestion()\n }\n }\n\n answerQuestion (questionId, answerKeys) {\n if (this.finished) {\n return\n }\n\n const question = this.getQuestionById(questionId)\n\n if (question === undefined) {\n return\n }\n\n if (this.showAnswersInExam && question.answered) {\n return\n }\n\n question.studentAnswerKeys = answerKeys\n }\n\n startExam () {\n this.start = new Date()\n }\n\n finishExam () {\n this.end = new Date()\n }\n\n getSyncUnit () {\n if (!this.dirty) {\n return {}\n }\n\n const questions = this.questions.filter(q => q.dirty).map(q => q.getSyncUnit())\n\n const sync = {\n id: this.id,\n subscriptionId: this.subscriptionId,\n questions\n }\n\n if (this.raw.dirty.start) {\n sync.start = this.raw.start\n }\n\n if (this.raw.dirty.end) {\n sync.end = this.raw.end\n }\n\n return sync\n }\n\n completeSync (sync) {\n /**\n * If a value has been synced and hasn't changed,\n * remove the dirty mark.\n */\n if (this.raw.dirty.start && sync.start === this.raw.start) {\n this.raw.dirty.start = false\n }\n\n if (this.raw.dirty.end && sync.end === this.raw.end) {\n this.raw.dirty.end = false\n }\n\n for (const question of sync.questions) {\n this.getQuestionById(question.id).completeSync(question)\n }\n }\n\n getQuestionById (questionId) {\n const index = this.idMap[questionId]\n\n if (index === undefined) {\n return undefined\n }\n\n return this.questions[index]\n }\n\n getQuestionByNumber (questionNumber) {\n return this.questions[questionNumber - 1]\n }\n\n get started () {\n return this.raw.start !== null\n }\n\n get finished () {\n return this.raw.end !== null\n }\n\n get untimed () {\n return this.duration === 0\n }\n\n get showAnswersInExam () {\n return this.answerDisplay === AnswerDisplay.AFTER_EACH_QUESTION\n }\n\n get dirty () {\n return false || // This makes sure the following are properly coerced to booleans\n this.raw.dirty.start ||\n this.raw.dirty.end ||\n this.raw.questions.some(q => q.dirty)\n }\n\n get questionCount () {\n return this.questions.length\n }\n\n get correctCount () {\n return this.questions.filter(q => q.answeredCorrectly).length\n }\n\n get correctPercent () {\n return Math.round(this.correctCount / this.questionCount * 100)\n }\n\n get passed () {\n return this.correctPercent >= this.passMark\n }\n\n get autoSubmit () {\n return this.submissionType === SubmissionType.AUTO\n }\n\n /**\n * Nothing but proxy getters and setters after this point\n */\n\n get id () {\n return this.raw.id\n }\n\n set id (value) {\n this.raw.id = value\n }\n\n get name () {\n return this.raw.name\n }\n\n set name (value) {\n this.raw.name = value\n }\n\n get duration () {\n return this.raw.duration\n }\n\n set duration (value) {\n this.raw.duration = value\n }\n\n get subscriptionId () {\n return this.raw.subscriptionId\n }\n\n set subscriptionId (value) {\n this.raw.subscriptionId = value\n }\n\n get answerDisplay () {\n return this.raw.answerDisplay\n }\n\n set answerDisplay (value) {\n this.raw.answerDisplay = value\n }\n\n get submissionType () {\n return this.raw.submissionType\n }\n\n set submissionType (value) {\n this.raw.submissionType = value\n }\n\n get passMark () {\n return this.raw.passMark\n }\n\n set passMark (value) {\n this.raw.passMark = value\n }\n\n get start () {\n if (this.raw.start === null) {\n return null\n }\n\n return new Date(this.raw.start)\n }\n\n set start (value) {\n /**\n * It's probably paranoid to check to see that an exam\n * that hasn't been started is finished, but the check\n * is basically free and this function shouldn't be called\n * too often anyway. We also make sure an exam is never\n * started more than once.\n */\n if (this.started || this.finished) {\n return\n }\n\n this.raw.start = (new Date(value)).valueOf()\n this.raw.dirty.start = true\n }\n\n get end () {\n if (this.raw.end === null) {\n return null\n }\n\n return new Date(this.raw.end)\n }\n\n set end (value) {\n /**\n * Make sure that an exam is never finished before it's\n * started. Also make sure an exam is only finished once.\n */\n if (!this.started || this.finished) {\n return\n }\n\n this.raw.end = (new Date(value)).valueOf()\n this.raw.dirty.end = true\n }\n\n get questions () {\n return this.raw.questions\n }\n\n get idMap () {\n return this.raw.idMap\n }\n}\nexport default Exam\n","import { Question } from '@/api/exams/model.js'\n\nexport const ANSWER_FILTERS = {\n CORRECT: 'Correctly Answered',\n INCORRECT: 'Incorrectly Answered'\n}\n\nexport class Bookmark {\n static fromAPI (bookmark) {\n const questionRaw = { ...bookmark.question, userAnswerKeys: bookmark.userAnswerKeys }\n const question = Question.fromAPI(questionRaw)\n delete question.raw.number // Since the question isn't part of an exam\n const raw = {\n id: bookmark.bookmarkId,\n tags: bookmark.tagNames,\n notes: bookmark.notes,\n subjectId: bookmark.question.subjectId,\n categoryId: bookmark.question.subcategoryId,\n question\n }\n\n return new Bookmark(raw)\n }\n\n constructor (raw) {\n if (raw.raw) {\n raw = raw.raw // Prevent recursion\n }\n\n this.raw = raw\n }\n\n get question () {\n return new Question(this.raw.question) // Make sure it's wrapped\n }\n\n /* Add in getters and setters for id, tags, and notes */\n\n get id () {\n return this.raw.id\n }\n\n set id (id) {\n this.raw.id = id\n }\n\n get tags () {\n return this.raw.tags\n }\n\n set tags (tags) {\n this.raw.tags = tags\n }\n\n set notes (notes) {\n this.raw.notes = notes\n }\n\n get notes () {\n return this.raw.notes\n }\n\n set subjectId (subjectId) {\n this.raw.subjectId = subjectId\n }\n\n get subjectId () {\n return this.raw.subjectId\n }\n\n set categoryId (categoryId) {\n this.raw.categoryId = categoryId\n }\n\n get categoryId () {\n return this.raw.categoryId\n }\n}\n","import ExamResultsCard from '@/components/ExamResultsCard'\nimport QuestionCard from '@/components/QuestionCard'\nimport NoContentCard from '@/components/NoContentCard'\nimport moment from 'moment'\nimport { mapGetters } from 'vuex'\nimport { ANSWER_FILTERS } from '@/api/bookmarks/model.js'\n\nexport default {\n name: 'ExamResults',\n components: {\n QuestionCard,\n ExamResultsCard,\n NoContentCard\n },\n created () {\n this.getBookmarks()\n this.filterableQuestions = this.exam.questions\n },\n computed: {\n ...mapGetters('exam', ['exam']),\n ...mapGetters('subscriptions', ['getActiveId']),\n noQuestions () {\n return this.filterableQuestions.length === 0\n },\n examDate () {\n return moment(Date.now()).format('DD-MM-YYYY')\n }\n },\n data: () => {\n return {\n active: false,\n filterItems: [ANSWER_FILTERS.CORRECT, ANSWER_FILTERS.INCORRECT],\n filterBy: '',\n selected: '',\n filterableQuestions: [],\n expandedQuestionId: null\n }\n },\n methods: {\n toggleExpanded (question) {\n if (this.expandedQuestionId === question.id) {\n this.expandedQuestionId = null\n } else {\n this.expandedQuestionId = question.id\n }\n },\n async getBookmarks () {\n await this.$store.dispatch('bookmarks/fetchBookmarkedQuestions', this.getActiveId)\n },\n applyFilters (filter) {\n this.filterBy = filter\n this.$nextTick(() => {\n this.selected = ''\n })\n this.filterableQuestions = this.exam.questions.filter(question => { // filter by correct or incorrect answers\n return this.filterBy === '' ? true : this.filterBy === ANSWER_FILTERS.CORRECT ? question.answeredCorrectly : !question.answeredCorrectly\n })\n },\n removeFilters () {\n this.filterBy = ''\n this.filterableQuestions = this.exam.questions\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./ExamResults.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./ExamResults.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExamResults.html?vue&type=template&id=7dc9a74f&scoped=true&\"\nimport script from \"./ExamResults.js?vue&type=script&lang=js&\"\nexport * from \"./ExamResults.js?vue&type=script&lang=js&\"\nimport style0 from \"./ExamResults.scss?vue&type=style&index=0&id=7dc9a74f&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7dc9a74f\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\ninstallComponents(component, {VBtn,VChip,VCol,VContainer,VRow,VSelect})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('p',{staticClass:\"headline mb-0\"},[_vm._v(\"Mock Exam Selection\")]),_c('p',{staticClass:\"subtitle-1\"},[_vm._v(\"Test yourself with simulated SACAA examinations set up by our experts.\")]),_c('p',{staticClass:\"title my-0 py-5\"},[_vm._v(\"Content\")]),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\",\"md\":\"3\"}},[_c('v-card',[_c('label',{staticClass:\"caption text-uppercase pl-3\"},[_vm._v(\"Exam\")]),_c('v-select',{attrs:{\"item-text\":\"name\",\"placeholder\":\"Select exam\",\"items\":_vm.mockExams,\"loading\":_vm.dataLoading,\"no-data-text\":\"No mock exams\",\"hide-details\":\"\",\"flat\":\"\",\"return-object\":\"\",\"solo\":\"\"},model:{value:(_vm.exam),callback:function ($$v) {_vm.exam=$$v},expression:\"exam\"}})],1)],1)],1),(_vm.exam !== null)?_c('div',[_c('p',{staticClass:\"title mt-5 mb-0\"},[_vm._v(\" Notes \")]),_c('p',{staticClass:\"mt-3 mb-0\"},[_vm._v(_vm._s(_vm.exam.notes))])]):_vm._e(),(_vm.exam !== null)?_c('div',[_c('p',{staticClass:\"title mt-5 mb-0\"},[_vm._v(\" Instructions \")]),_c('p',{staticClass:\"mt-3 mb-0\"},[_vm._v(_vm._s(_vm.exam.instructions))])]):_vm._e(),(_vm.exam !== null)?_c('div',[_c('p',{staticClass:\"title mt-5 mb-0\"},[_vm._v(\" Duration \")]),_c('p',{staticClass:\"mt-3 mb-0\"},[_vm._v(_vm._s(_vm.duration))])]):_vm._e(),_c('v-btn',{staticClass:\"long createExam\",attrs:{\"color\":\"primary\",\"disabled\":_vm.disableButton,\"loading\":_vm.loading},on:{\"click\":_vm.createExam}},[_vm._v(\"Create exam\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\nimport moment from 'moment'\n\nexport default {\n name: 'MockExam',\n computed: {\n disableButton () {\n return this.exam === null\n },\n duration () {\n return this.exam.duration === null ? 'Unlimited' : `${moment.duration(this.exam.duration).format('hh:mm:ss')} (hh:mm:ss)`\n },\n ...mapGetters('subscriptions', ['getActiveSubscription', 'getActiveId'])\n },\n created () {\n this.fetchExams()\n },\n data: () => {\n return {\n mockExams: [],\n exam: null,\n loading: false,\n dataLoading: false\n }\n },\n methods: {\n async createExam () {\n try {\n this.loading = true\n await this.$store.dispatch('exam/fetchMockExam', { mockExam: this.exam, activeSubscriptionId: this.getActiveSubscription.id })\n this.fetchBookmarkedQuestions()\n this.$router.push({ name: 'StartExam' })\n } finally {\n this.loading = false\n }\n },\n async fetchExams () {\n try {\n this.dataLoading = true\n const options = await this.$store.dispatch('exam/fetchMockExamOptions')\n this.mockExams = options.mockExams\n } finally {\n this.dataLoading = false\n }\n },\n async fetchBookmarkedQuestions () {\n await this.$store.dispatch('bookmarks/fetchBookmarkedQuestions', this.getActiveId)\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./MockExam.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./MockExam.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MockExam.html?vue&type=template&id=5748ea91&scoped=true&\"\nimport script from \"./MockExam.js?vue&type=script&lang=js&\"\nexport * from \"./MockExam.js?vue&type=script&lang=js&\"\nimport style0 from \"./MockExam.css?vue&type=style&index=0&id=5748ea91&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5748ea91\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\ninstallComponents(component, {VBtn,VCard,VCol,VContainer,VRow,VSelect})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"9\"}},[_c('p',{staticClass:\"headline ma-0\"},[_vm._v(\" Question \"+_vm._s(_vm.number)+\" of \"+_vm._s(_vm.exam.questions.length)+\" \")]),(_vm.$vuetify.breakpoint.smAndDown)?_c('div',{staticClass:\"d-flex justify-space-between\"},[_c('div',{staticClass:\"mr-5\"},[_c('bookmark-button',{attrs:{\"question\":_vm.question}})],1),_c('div',{staticClass:\"d-flex\"},[(!_vm.mobileDrawer && _vm.isLastQuestion)?_c('div',{staticClass:\"d-flex\"},[_c('p',{staticClass:\"font-size-18 mb-0 submit\"},[_vm._v(\"Submit exam\")]),_c('v-btn',{attrs:{\"text\":\"\",\"icon\":\"\",\"color\":\"black\"}},[_c('v-icon',[_vm._v(\"arrow_forward\")])],1)],1):_vm._e(),_c('v-btn',{class:(_vm.isLastQuestion ? 'blinker' : 'primary') + ' white--text',attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.mobileDrawer = true}}},[_c('v-icon',{staticClass:\"rot-45\"},[_vm._v(\" fullscreen \")])],1)],1)]):_vm._e(),_c('div',{staticClass:\"d-flex mt-5\"},[(_vm.$vuetify.breakpoint.mdAndUp)?_c('div',{staticClass:\"mr-5\"},[_c('bookmark-button',{attrs:{\"question\":_vm.question}})],1):_vm._e(),_c('div',[_c('p',{staticClass:\"font-size-18 mb-0\",domProps:{\"innerHTML\":_vm._s(_vm.question.text)}}),_c('annexure-viewer',{attrs:{\"annexures\":_vm.question.annexures.question}})],1)]),_c('div',_vm._l((_vm.question.options),function(option){return _c('question-option',{key:option.key,attrs:{\"question\":_vm.question,\"option\":option,\"show-results\":_vm.exam.showAnswersInExam,\"no-click\":_vm.exam.showAnswersInExam && _vm.question.answered},on:{\"answer\":_vm.questionAnswered}})}),1),_c('div',{staticClass:\"d-flex justify-space-between\"},[_c('v-btn',{attrs:{\"color\":\"primary\",\"disabled\":_vm.isFirstQuestion,\"to\":{ name: 'ExamQuestion', params: { number: (\"\" + (this.questionNumber - 1)) } }}},[_vm._v(\" Previous \")]),_c('v-btn',{attrs:{\"color\":\"primary\",\"disabled\":_vm.isLastQuestion,\"to\":{ name: 'ExamQuestion', params: { number: (\"\" + (this.questionNumber + 1)) } }}},[_vm._v(\" Next \")])],1),(_vm.showExplanationCard)?_c('v-card',{staticClass:\"no-global pa-5\"},[_c('v-card-title',{staticClass:\"d-block font-weight-bold font-size-18\"},[_vm._v(\" Explanation \")]),(_vm.question.hasExplanation)?_c('v-card-text',{staticClass:\"pa-0 font-size-18\",domProps:{\"innerHTML\":_vm._s(_vm.question.answerExplanation)}}):_vm._e(),_c('annexure-viewer',{attrs:{\"annexures\":_vm.question.annexures.answer}})],1):_vm._e(),_c('div',{staticClass:\"font-size-18\"},[_vm._v(\" If you would like to provide feedback on this question or report an error with the question \"),_c('a',{staticClass:\"plain-link\",attrs:{\"target\":\"_blank\",\"href\":_vm.question.reportURL}},[_vm._v(\" click here. \")])])],1),(_vm.$vuetify.breakpoint.mdAndUp)?_c('v-col',{staticClass:\"d-flex flex-column align-stretch\",attrs:{\"md\":\"3\"}},[_c('v-btn',{attrs:{\"width\":\"unset\",\"color\":\"primary\"},on:{\"click\":_vm.finishClicked}},[_vm._v(\" Submit Exam \")]),_c('exam-clock',{attrs:{\"current-question-id\":_vm.id},on:{\"timeup\":_vm.timeup}}),_c('bookmarked-questions',{attrs:{\"current-question-id\":_vm.id}}),_c('missed-questions',{attrs:{\"current-question-id\":_vm.id}}),_c('exam-navigator',{attrs:{\"current-question-id\":_vm.id}})],1):_vm._e()],1),(_vm.$vuetify.breakpoint.smAndDown)?_c('v-navigation-drawer',{attrs:{\"width\":\"310\",\"temporary\":\"\",\"fixed\":\"\",\"right\":\"\"},model:{value:(_vm.mobileDrawer),callback:function ($$v) {_vm.mobileDrawer=$$v},expression:\"mobileDrawer\"}},[_c('v-container',[_c('v-row',[_c('v-col',{staticClass:\"d-flex flex-column align-stretch pt-0\"},[_c('div',{staticClass:\"d-flex justify-end\"},[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.mobileDrawer = false}}},[_c('v-icon',[_vm._v(\" close \")])],1)],1),_c('v-btn',{attrs:{\"width\":\"unset\",\"color\":\"primary\"},on:{\"click\":_vm.finishClicked}},[_vm._v(\" Submit Exam \")]),_c('exam-clock',{attrs:{\"current-question-id\":_vm.id},on:{\"timeup\":_vm.timeup}}),_c('bookmarked-questions',{attrs:{\"current-question-id\":_vm.id}}),_c('missed-questions',{attrs:{\"current-question-id\":_vm.id}}),_c('exam-navigator',{attrs:{\"current-question-id\":_vm.id}})],1)],1)],1)],1):_vm._e(),_c('v-dialog',{attrs:{\"width\":_vm.$vuetify.breakpoint.smAndDown ? '100%' : _vm.$vuetify.breakpoint.xlOnly ? '500px' : '50%',\"persistent\":\"\"},model:{value:(_vm.finishDialog),callback:function ($$v) {_vm.finishDialog=$$v},expression:\"finishDialog\"}},[_c('v-card',{staticClass:\"no-global pa-5\"},[_c('v-card-title',[_vm._v(\" Submit Exam \")]),_c('v-card-text',[_vm._v(\" Are you sure you wish to end the exam and submit? \"+_vm._s(_vm.hasUnansweredQuestions ? 'You still have unanswered questions.' : '')+\" \")]),_c('v-card-actions',{class:'d-flex flex-gutters ' + (_vm.$vuetify.breakpoint.xsOnly ? 'flex-column' : 'flex-row-reverse')},[_c('v-btn',{staticClass:\"primary\",attrs:{\"block\":_vm.$vuetify.breakpoint.xsOnly},on:{\"click\":_vm.endExam}},[_vm._v(\" Submit Exam \")]),_c('v-btn',{attrs:{\"block\":_vm.$vuetify.breakpoint.xsOnly,\"text\":\"\"},on:{\"click\":function($event){_vm.finishDialog = false}}},[_vm._v(\" Cancel \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"no-global pa-5\"},[(!_vm.expanded)?_c('form',{staticClass:\"d-flex justify-stretch align-center\",on:{\"submit\":function($event){$event.preventDefault();return _vm.search($event)}}},[_c('v-text-field',{attrs:{\"placeholder\":\"Go to question...\",\"prepend-inner-icon\":\"search\",\"clearable\":\"\",\"dense\":\"\",\"hide-details\":\"\",\"solo\":\"\",\"rounded\":\"\"},model:{value:(_vm.searchQuery),callback:function ($$v) {_vm.searchQuery=$$v},expression:\"searchQuery\"}}),_c('v-btn',{attrs:{\"color\":\"primary\",\"type\":\"submit\",\"disabled\":_vm.$v.$invalid,\"text\":\"\",\"icon\":\"\"}},[_vm._v(\" Go \")])],1):_vm._e(),_c('v-card-title',{staticClass:\"title font-weight-regular mb-0\"},[_vm._v(\" Navigate Questions \"),(_vm.expanded)?_c('v-btn',{staticClass:\"abs-right mr-5\",attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.expanded = false}}},[_c('v-icon',[_vm._v(\"clear\")])],1):_vm._e()],1),(!_vm.expanded)?_c('v-card-actions',{staticClass:\"d-flex flex-column pa-0 mt-5\"},[_c('v-btn',{attrs:{\"color\":\"primary\",\"large\":\"\",\"fab\":\"\"},on:{\"click\":function($event){_vm.expanded = true}}},[_c('v-icon',{staticClass:\"rot-45\",attrs:{\"large\":\"\"}},[_vm._v(\" fullscreen \")])],1)],1):_c('question-paginator',{attrs:{\"questions\":_vm.questions,\"current-question-id\":_vm.currentQuestionId}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-card-actions',{staticClass:\"d-flex flex-column pa-0 mt-5\"},[_c('v-container',{staticClass:\"pa-0\"},_vm._l((_vm.page),function(row,rowNum){return _c('v-row',{key:'page' + _vm.currentPage + 'row' + rowNum,attrs:{\"no-gutters\":\"\"}},_vm._l((row),function(question){return _c('v-col',{key:question.id,attrs:{\"width\":\"30\"}},[(!question.isFiller)?_c('v-btn',{staticClass:\"body-1\",attrs:{\"color\":_vm.getColor(question),\"to\":{ name: 'ExamQuestion', params: { number: (\"\" + (question.number)) } },\"tile\":\"\"}},[_vm._v(\" \"+_vm._s(question.number)+\" \")]):_vm._e()],1)}),1)}),1)],1),(_vm.showPaginator)?_c('div',{staticClass:\"mt-5 d-flex align-center justify-space-between\"},[_c('v-btn',{attrs:{\"disabled\":_vm.onFirstPage,\"icon\":\"\"},on:{\"click\":_vm.prevPage}},[_c('v-icon',[_vm._v(\"chevron_left\")])],1),_vm._v(\" \"+_vm._s(_vm.paginatorDisplay)+\" \"),_c('v-btn',{attrs:{\"disabled\":_vm.onLastPage,\"icon\":\"\"},on:{\"click\":_vm.nextPage}},[_c('v-icon',[_vm._v(\"chevron_right\")])],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\n\nconst ROWS_PER_PAGE = 8\nconst QUESTIONS_PER_ROW = 5\n\n/**\n * Takes an array of n elements and\n * returns an array of { ceil(n / groupSize) } arrays\n * where each sub-array contains at most groupSize elements\n * such that the first sub-array contains the first groupSize number elements of the original array\n * the second sub-array contains the second groupSize number of elements and so on.\n *\n * i.e.\n * For input array [x{0}, x{1}, x{2}, ..., x{n-1}],\n * outputs:\n * [\n * [x{0}, x{1}, ..., x{groupSize - 1}],\n * [x{groupSize}, ..., x{groupSize * 2 - 1}],\n * ...,\n * [..., x{n - 2}, x{n - 1}]\n * ]\n *\n * Notes:\n * 1. Every sub-array except the last one, is guaranteed to have length of groupSize\n * the last sub-array will have 0 < lenght <= groupSize.\n * 2. The order of the input elements is preserved in the output\n */\nfunction groupArray (array, groupSize) {\n return array.reduce((acc, cur, idx) => {\n if (idx % groupSize === 0) {\n return [...acc, [cur]]\n }\n\n return [...acc.slice(0, -1), [...acc.slice(-1)[0], cur]]\n }, [])\n}\n\nexport default {\n name: 'QuestionPaginator',\n props: {\n questions: {\n type: Array,\n required: true\n },\n currentQuestionId: {\n type: Number,\n required: true\n }\n },\n data: () => ({\n currentPage: 1\n }),\n watch: {\n 'pages.length' (newVal) {\n if (newVal === 0) {\n this.currentPage = 1\n return\n }\n\n if (this.currentPage > newVal) {\n this.currentPage = newVal\n }\n }\n },\n computed: {\n ...mapGetters('exam', ['exam']),\n rows () {\n const diff = QUESTIONS_PER_ROW - (this.totalQuestions % QUESTIONS_PER_ROW)\n\n const filler = Array.from({ length: diff }, (_, i) => ({\n id: `filler${i}`,\n isFiller: true\n }))\n\n const questions = [...this.questions, ...filler]\n\n return groupArray(questions, QUESTIONS_PER_ROW)\n },\n pages () {\n return groupArray(this.rows, ROWS_PER_PAGE)\n },\n page () {\n return this.pages[this.currentPage - 1]\n },\n totalQuestions () {\n return this.questions.length\n },\n onFirstPage () {\n return this.currentPage === 1\n },\n onLastPage () {\n return this.currentPage === this.pages.length\n },\n firstOnPage () {\n return (this.currentPage - 1) * ROWS_PER_PAGE * QUESTIONS_PER_ROW + 1\n },\n lastOnPage () {\n const highest = (this.currentPage) * ROWS_PER_PAGE * QUESTIONS_PER_ROW\n\n return Math.min(highest, this.totalQuestions)\n },\n paginatorDisplay () {\n const first = this.firstOnPage\n const last = this.lastOnPage\n const total = this.totalQuestions\n\n return `${first} - ${last} of ${total}`\n },\n showPaginator () {\n return this.pages.length > 1\n },\n currentQuestion () {\n return this.exam.getQuestionById(this.currentQuestionId)\n }\n },\n methods: {\n getColor (question) {\n if (question.id === this.currentQuestionId) {\n return 'secondary black--text'\n }\n\n if (question.answered) {\n return 'disabled-light black--text'\n }\n\n if (question.number < this.currentQuestion.number) {\n return 'primary'\n }\n\n return 'disabled black--text'\n },\n prevPage () {\n if (this.onFirstPage) {\n return\n }\n\n this.currentPage -= 1\n },\n nextPage () {\n if (this.onLastPage) {\n return\n }\n\n this.currentPage += 1\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./QuestionPaginator.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./QuestionPaginator.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuestionPaginator.html?vue&type=template&id=11cd749e&scoped=true&\"\nimport script from \"./QuestionPaginator.js?vue&type=script&lang=js&\"\nexport * from \"./QuestionPaginator.js?vue&type=script&lang=js&\"\nimport style0 from \"./QuestionPaginator.scss?vue&type=style&index=0&id=11cd749e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"11cd749e\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCardActions,VCol,VContainer,VIcon,VRow})\n","import QuestionPaginator from '@/components/QuestionPaginator'\nimport { required, integer, minValue, maxValue } from 'vuelidate/lib/validators'\nimport { mapGetters } from 'vuex'\n\nexport default {\n name: 'ExamNavigator',\n components: {\n QuestionPaginator\n },\n props: {\n currentQuestionId: {\n type: Number,\n required: true\n }\n },\n data: () => ({\n expanded: false,\n searchQuery: ''\n }),\n validations () {\n return {\n searchQuery: {\n required,\n integer,\n minValue: minValue(1),\n maxValue: maxValue(this.questions.length)\n }\n }\n },\n computed: {\n ...mapGetters('exam', ['exam']),\n questions () {\n return this.exam.questions\n }\n },\n methods: {\n search () {\n if (this.$v.$invalid) {\n this.$v.$touch()\n return\n }\n\n const number = parseInt(this.searchQuery) - 1\n\n this.searchQuery = ''\n\n this.gotoQuestion(this.questions[number])\n },\n gotoQuestion (question) {\n if (question.id === this.currentQuestionId) {\n return\n }\n\n this.$router.push({ name: 'ExamQuestion', params: { number: `${question.number}` } })\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./ExamNavigator.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./ExamNavigator.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExamNavigator.html?vue&type=template&id=5e652431&scoped=true&\"\nimport script from \"./ExamNavigator.js?vue&type=script&lang=js&\"\nexport * from \"./ExamNavigator.js?vue&type=script&lang=js&\"\nimport style0 from \"./ExamNavigator.scss?vue&type=style&index=0&id=5e652431&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5e652431\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardTitle,VIcon,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"no-global\",attrs:{\"color\":_vm.isExpired ? 'error' : 'primary',\"dark\":\"\"}},[_c('div',{staticClass:\"d-flex justify-space-between caption mb-1\"},[_c('div',[_vm._v(\" Overall Time (\"+_vm._s(_vm.durationDisplay)+\") \")]),_c('div',[_vm._v(\" Current Question \")])]),_c('div',{staticClass:\"d-flex justify-space-between\"},[_c('div',{staticClass:\"d-flex align-center\"},[_c('v-icon',{attrs:{\"size\":\"20\"}},[_vm._v(\"access_time\")]),_c('span',{domProps:{\"innerHTML\":_vm._s(' ')}}),_c('span',[_vm._v(\" \"+_vm._s(_vm.examDisplay)+\" \")])],1),_c('span',[_vm._v(\" \"+_vm._s(_vm.questionDisplay)+\" \")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import moment from 'moment'\nimport momentDurationFormatSetup from 'moment-duration-format'\nimport { mapGetters } from 'vuex'\n\nmomentDurationFormatSetup(moment)\n\nexport default {\n name: 'ExamClock',\n props: {\n currentQuestionId: {\n type: Number,\n required: true\n }\n },\n data: () => ({\n now: null,\n interval: null\n }),\n created () {\n this.startTimer()\n },\n beforeDestroy () {\n this.clearTimer()\n },\n watch: {\n currentQuestionId () {\n this.startTimer()\n }\n },\n computed: {\n ...mapGetters('exam', { examStore: 'exam' }),\n start () {\n return moment(this.examStore.start).startOf('second')\n },\n questionStart () {\n return moment(this.examStore.getQuestionById(this.currentQuestionId).start).startOf('second')\n },\n duration () {\n if (this.examStore.untimed) {\n // Represent untimed exam as invalid duration\n return moment.duration(NaN)\n }\n\n return moment.duration(this.examStore.duration)\n },\n question () {\n return moment.duration(this.now.diff(this.questionStart))\n },\n exam () {\n return moment.duration(this.now.diff(this.start))\n },\n durationDisplay () {\n if (this.examStore.untimed) {\n return 'unlimited'\n }\n\n return this.duration.format('hh:mm:ss')\n },\n examDisplay () {\n if (this.examStore.untimed) {\n return this.exam.format('hh:mm:ss', { stopTrim: 'm' })\n }\n\n return this.duration.clone().subtract(this.exam).format('hh:mm:ss', { stopTrim: 'm' })\n },\n questionDisplay () {\n return this.question.format('hh:mm:ss', { stopTrim: 'm' })\n },\n isExpired () {\n if (this.examStore.untimed) {\n return false\n }\n\n return this.duration.asMilliseconds() - this.exam.asMilliseconds() < 0\n }\n },\n methods: {\n startTimer () {\n this.clearTimer()\n\n this.interval = setInterval(() => {\n this.updateNow()\n }, 1000)\n\n this.updateNow()\n },\n clearTimer () {\n if (this.interval !== null) {\n clearInterval(this.interval)\n this.interval = null\n }\n },\n updateNow () {\n this.now = moment().startOf('second')\n\n if (this.examStore.autoSubmit && this.isExpired) {\n this.clearTimer()\n this.$emit('timeup')\n }\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./ExamClock.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./ExamClock.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExamClock.html?vue&type=template&id=bc3e829e&scoped=true&\"\nimport script from \"./ExamClock.js?vue&type=script&lang=js&\"\nexport * from \"./ExamClock.js?vue&type=script&lang=js&\"\nimport style0 from \"./ExamClock.scss?vue&type=style&index=0&id=bc3e829e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bc3e829e\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VCard,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.questions.length > 0)?_c('v-card',{staticClass:\"no-global pa-5\"},[_c('v-card-title',{staticClass:\"title font-weight-regular mb-0\"},[_vm._v(\" Missed Questions \")]),_c('question-paginator',{attrs:{\"questions\":_vm.questions,\"current-question-id\":_vm.currentQuestionId}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\nimport QuestionPaginator from '@/components/QuestionPaginator'\n\nexport default {\n name: 'MissedQuestions',\n components: {\n QuestionPaginator\n },\n props: {\n currentQuestionId: {\n type: Number,\n required: true\n }\n },\n computed: {\n ...mapGetters('exam', ['exam']),\n questions () {\n const question = this.exam.getQuestionById(this.currentQuestionId)\n\n return this.exam.questions\n .slice(0, question.number - 1)\n .filter(q => !q.answered)\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./MissedQuestions.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./MissedQuestions.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MissedQuestions.html?vue&type=template&id=0cbc0566&\"\nimport script from \"./MissedQuestions.js?vue&type=script&lang=js&\"\nexport * from \"./MissedQuestions.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\ninstallComponents(component, {VCard,VCardTitle})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.questions.length > 0)?_c('v-card',{staticClass:\"no-global pa-5\"},[_c('v-card-title',{staticClass:\"title font-weight-regular mb-0\"},[_vm._v(\" Bookmarked Questions \")]),_c('question-paginator',{attrs:{\"questions\":_vm.questions,\"current-question-id\":_vm.currentQuestionId}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\nimport QuestionPaginator from '@/components/QuestionPaginator'\n\nexport default {\n name: 'BookmarkedQuestions',\n components: {\n QuestionPaginator\n },\n props: {\n currentQuestionId: {\n type: Number,\n required: true\n }\n },\n computed: {\n ...mapGetters('exam', ['exam']),\n ...mapGetters('bookmarks', ['getBookmarks']),\n questions () {\n return this.exam.questions\n .filter(q => this.getBookmarks.some(b => b.question.id === q.id))\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./BookmarkedQuestions.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./BookmarkedQuestions.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BookmarkedQuestions.html?vue&type=template&id=5682c9a8&\"\nimport script from \"./BookmarkedQuestions.js?vue&type=script&lang=js&\"\nexport * from \"./BookmarkedQuestions.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\ninstallComponents(component, {VCard,VCardTitle})\n","import ExamNavigator from '@/components/ExamNavigator'\nimport ExamClock from '@/components/ExamClock'\nimport faker from 'faker'\nimport Exam, { AnswerDisplay, SubmissionType } from '@/api/exams/model'\nimport QuestionOption from '@/components/QuestionOption'\nimport MissedQuestions from '@/components/MissedQuestions'\nimport BookmarkedQuestions from '@/components/BookmarkedQuestions'\nimport AnnexureViewer from '@/components/AnnexureViewer'\nimport BookmarkButton from '@/components/BookmarkButton'\nimport { mapGetters, mapMutations, mapActions } from 'vuex'\n\nconst SIZES = [240, 360, 480, 960, 1280]\n\nconst randomSize = () => SIZES[faker.random.number() % SIZES.length]\n\nconst createFakeOption = answerIndex => (_, i) => ({\n key: faker.random.uuid(),\n order: i,\n text: i === answerIndex ? 'The correct answer' : faker.lorem.lines(1)\n})\n\nconst createFakeAnnexure = () => ({\n type: 1, // Link\n name: faker.random.word(),\n url: faker.random.boolean() ? `https://loremflickr.com/${randomSize()}/${randomSize()}/kitten,animal/all?lock=${faker.random.number()}` : 'https://vimeo.com/345923079/a63cad1bd1'\n})\n\nconst createFakeQuestion = (_, i) => {\n const optionsLength = 2 + faker.random.number() % 8\n const answer = faker.random.number() % optionsLength\n\n const options = Array.from({ length: optionsLength }, createFakeOption(answer))\n const answerKey = options[answer].key\n\n return {\n id: faker.random.number(),\n number: i + 1,\n text: faker.lorem.paragraphs(3),\n reportURL: faker.internet.url(),\n answerExplanation: faker.lorem.paragraphs(2),\n answerKeys: [answerKey],\n options,\n annexures: {\n question: Array.from({ length: faker.random.number() % 3 }, createFakeAnnexure),\n answer: Array.from({ length: faker.random.number() % 3 }, createFakeAnnexure)\n }\n }\n}\n\nexport default {\n name: 'ExamQuestion',\n components: {\n ExamNavigator,\n ExamClock,\n QuestionOption,\n MissedQuestions,\n BookmarkedQuestions,\n BookmarkButton,\n AnnexureViewer\n },\n props: {\n number: {\n type: String,\n required: true\n },\n setStartTime: {\n type: Boolean,\n default: false\n },\n createDebugData: {\n type: Boolean,\n default: false\n },\n debugExamOverrides: {\n type: Object,\n default: () => ({})\n }\n },\n data: () => ({\n syncTimerId: null,\n mobileDrawer: false,\n finishDialog: false,\n timesUp: false\n }),\n beforeDestroy () {\n this.clearSyncTimer()\n },\n mounted () {\n if (this.createDebugData) {\n this.createFakeExam()\n }\n\n if (this.setStartTime) {\n this.startExam()\n }\n\n this.startQuestion(this.id)\n\n this.doSync()\n },\n beforeRouteUpdate (to, from, next) {\n if (this.exam === null) {\n return next()\n }\n\n const nextId = this.exam.getQuestionByNumber(parseInt(to.params.number)).id\n\n this.finishQuestion(this.id)\n this.startQuestion(nextId)\n\n this.doSync()\n\n return next()\n },\n beforeRouteLeave (to, from, next) {\n if (this.exam === null) {\n return next()\n }\n\n this.finishQuestion(this.id)\n\n this.doSync()\n\n return next()\n },\n computed: {\n ...mapGetters('exam', ['exam']),\n id () {\n return this.question.id\n },\n showExplanationCard () {\n return this.question.answered &&\n this.exam.showAnswersInExam &&\n (\n this.question.hasExplanation ||\n this.question.annexures.answer.length > 0\n )\n },\n questionNumber () {\n return parseInt(this.number)\n },\n question () {\n return this.exam.getQuestionByNumber(this.questionNumber)\n },\n isFirstQuestion () {\n return this.questionNumber === 1\n },\n isLastQuestion () {\n return this.questionNumber === this.exam.questions.length\n },\n hasUnansweredQuestions () {\n return this.exam.questions.some(q => !q.answered)\n }\n },\n methods: {\n ...mapMutations('exam', ['startExam', 'finishExam', 'startQuestion', 'finishQuestion']),\n ...mapActions('exam', ['syncExamProgress']),\n doSync () {\n this.clearSyncTimer()\n\n this.syncExamProgress()\n },\n clearSyncTimer () {\n if (this.syncTimerId !== null) {\n clearTimeout(this.syncTimerId)\n\n this.syncTimerId = null\n }\n },\n setSyncTimer () {\n /**\n * Only sync after 30 seconds to avoid hammering the backend\n */\n this.clearSyncTimer()\n\n this.syncTimerId = setTimeout(() => {\n this.doSync()\n }, 30000)\n },\n questionAnswered () {\n if (!this.isLastQuestion && this.question.answered && this.exam.answerDisplay === AnswerDisplay.AT_THE_END) {\n return this.$router.push({\n name: 'ExamQuestion',\n params: {\n number: `${this.questionNumber + 1}`\n }\n })\n }\n\n this.setSyncTimer()\n },\n createFakeExam () {\n const questions = this.debugExamOverrides.questionCount ? this.debugExamOverrides.questionCount : 40 + faker.random.number() % 61\n\n const fakeExam = new Exam({\n id: 123,\n name: faker.commerce.productName(),\n duration: 180 * 60 * 1000,\n subscriptionId: 456,\n answerDisplay: AnswerDisplay.AFTER_EACH_QUESTION,\n submissionType: SubmissionType.MANUAL,\n passMark: 75,\n questions: Array.from({ length: questions }, createFakeQuestion),\n ...this.debugExamOverrides\n })\n\n this.$store.commit('exam/setExam', fakeExam)\n },\n timeup () {\n this.timesUp = true\n this.finishClicked()\n },\n finishClicked () {\n if (this.exam.autoSubmit && this.timesUp) {\n this.finishDialog = false\n this.endExam()\n this.timesUp = false\n } else {\n this.finishDialog = true\n }\n },\n endExam () {\n this.finishQuestion(this.id)\n this.finishExam()\n\n this.doSync()\n\n this.$router.push({ name: 'ExamResults' })\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./ExamQuestion.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./ExamQuestion.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExamQuestion.html?vue&type=template&id=c2fede36&scoped=true&\"\nimport script from \"./ExamQuestion.js?vue&type=script&lang=js&\"\nexport * from \"./ExamQuestion.js?vue&type=script&lang=js&\"\nimport style0 from \"./ExamQuestion.scss?vue&type=style&index=0&id=c2fede36&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c2fede36\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VContainer,VDialog,VIcon,VNavigationDrawer,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('p',{staticClass:\"headline ma-0\"},[_vm._v(\" Bookmarked Questions \")]),_c('filter-select',{attrs:{\"filters\":_vm.filterOptions,\"bookmarkedQuestions\":_vm.filterableQuestions,\"subjectsAndCategories\":_vm.subjects},on:{\"applyFilters\":_vm.applyFilters}})],1)],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',_vm._l((_vm.filterableQuestions),function(bookmark){return _c('QuestionCard',{key:bookmark.question.id,attrs:{\"question\":bookmark.question,\"expanded\":_vm.expandedQuestionId === bookmark.question.id},on:{\"toggleExpanded\":function($event){return _vm.toggleExpanded(bookmark.question)}}})}),1)],1),(_vm.noBookmarks && !_vm.dataLoading)?_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('no-content-card',{attrs:{\"message\":\"No bookmarks found\"}})],1)],1):_vm._e(),(_vm.dataLoading)?_c('v-progress-circular',{attrs:{\"color\":\"secondary\",\"size\":\"50\",\"indeterminate\":\"\"}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-row justify-start align-center mb-n5 flex-wrap filter-wrapper\"},[_c('v-select',{staticClass:\"flex-grow-0\",attrs:{\"label\":\"Filter\",\"menu-props\":_vm.menuProps,\"items\":_vm.defaultMenuOptions,\"hide-details\":\"\",\"solo\":\"\",\"flat\":\"\"},on:{\"change\":_vm.onDefaultFiltersChange,\"focus\":_vm.setMenuProp},scopedSlots:_vm._u([(_vm.subjectsActive)?{key:\"no-data\",fn:function(){return [_c('v-list',{staticClass:\"pa-0\"},[_c('v-list-item',{staticClass:\"px-2\",on:{\"click\":_vm.setDefaultMenu}},[_c('v-icon',[_vm._v(\" keyboard_arrow_left \")]),_c('v-list-item-title',{staticClass:\"pl-1\"},[_vm._v(\" Subjects \")])],1),(_vm.subjects.length > 0)?_c('v-divider',{attrs:{\"horizontal\":\"\"}}):_vm._e(),_vm._l((_vm.subjects),function(subject){return _c('v-list-item',{key:subject.id,staticClass:\"pl-8\",on:{\"click\":function($event){return _vm.showCategories(subject)}}},[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(subject.name)+\" \")]),_c('v-icon',[_vm._v(\" keyboard_arrow_right \")])],1)}),(_vm.subjects.length === 0)?_c('v-list-item',[_c('v-list-item-title',[_vm._v(\" You have no bookmarks \")])],1):_vm._e()],2)]},proxy:true}:(_vm.categoriesActive)?{key:\"no-data\",fn:function(){return [_c('v-list',{staticClass:\"pa-0\"},[_c('v-list-item',{key:\"categoriesHeader\",staticClass:\"px-2\",on:{\"click\":_vm.showSubjects}},[_c('v-icon',[_vm._v(\" keyboard_arrow_left \")]),_c('v-list-item-title',{staticClass:\"pl-1\"},[_vm._v(\" Subject / \"+_vm._s(_vm.subject.name)+\" \")])],1),(_vm.categories.length > 0)?_c('v-divider',{attrs:{\"horizontal\":\"\"}}):_vm._e(),_vm._l((_vm.categories),function(category){return _c('v-list-item',{key:category.id,staticClass:\"pl-8\",on:{\"click\":function($event){return _vm.selectCategory(category)}}},[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(category.name)+\" \")])],1)})],2)]},proxy:true}:(_vm.tagsActive)?{key:\"no-data\",fn:function(){return [_c('v-list',{staticClass:\"pa-0\"},[_c('v-list-item',{staticClass:\"px-2\",on:{\"click\":_vm.setDefaultMenu}},[_c('v-icon',[_vm._v(\" keyboard_arrow_left \")]),_c('v-list-item-title',{staticClass:\"pl-1\"},[_vm._v(\" Tags \")])],1),_c('v-divider',{attrs:{\"horizontal\":\"\"}}),(_vm.tags.length === 0)?_c('v-list-item',{staticClass:\"pl-8\"},[_c('v-list-item-title',[_vm._v(\" You have not created any tags. \")])],1):_vm._e(),_vm._l((_vm.tags),function(tag){return _c('v-list-item',{staticClass:\"pl-8\",on:{\"click\":function($event){return _vm.selectTag(tag)}}},[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(tag)+\" \")])],1)})],2)]},proxy:true}:null],null,true),model:{value:(_vm.include),callback:function ($$v) {_vm.include=$$v},expression:\"include\"}},[(_vm.showDefaultMenu)?_c('template',{slot:\"prepend-item\"},[_c('v-list',{staticClass:\"pa-0\"},[_c('v-list-item',{on:{\"click\":_vm.showSubjects}},[_c('v-list-item-title',[_vm._v(\" Subjects \")]),_c('v-icon',[_vm._v(\" keyboard_arrow_right \")])],1),_c('v-list-item',{on:{\"click\":_vm.showTags}},[_c('v-list-item-title',[_vm._v(\" Tags \")]),_c('v-icon',[_vm._v(\" keyboard_arrow_right \")])],1)],1)],1):_vm._e()],2),_vm._l((_vm.appliedFilters),function(filter){return _c('v-chip',{attrs:{\"color\":\"secondary text--primary\",\"close\":\"\"},on:{\"click:close\":function($event){return _vm.removeFilter(filter)}}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatFilter(filter))+\" \")])])})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\n\nconst Menus = {\n DEFAULT: 'DEFAULT',\n SUBJECTS: 'SUBJECTS',\n CATEGORIES: 'CATEGORIES',\n TAGS: 'TAGS'\n}\n\nexport default {\n name: 'FilterSelect',\n props: {\n filters: {\n type: Array,\n required: true\n },\n subjectsAndCategories: {\n type: Array,\n required: true\n },\n bookmarkedQuestions: {\n type: Array,\n required: true\n }\n },\n computed: {\n ...mapGetters('bookmarks', ['getBookmarks']),\n subjects () {\n if (!this.subjectsAndCategories) {\n return []\n }\n\n return this.subjectsAndCategories\n },\n defaultMenuOptions () {\n return this.menu === Menus.DEFAULT ? this.filters : []\n },\n appliedFilters () {\n const includes = this.filterBy.include === '' ? [] : [this.filterBy.include]\n return [...this.filterBy.tags, ...this.filterBy.categories, ...includes]\n },\n tags () {\n /**\n * get tags from the questions in the store\n * the questions passed as props are (sometimes) filtered\n * */\n const tags = this.getBookmarks.reduce((acc, cur) => [...acc, ...cur.tags], [])\n const uniqueTags = [...new Set(tags)]\n return uniqueTags.filter(tag => {\n return !this.filterBy.tags.some(t => t === tag)\n })\n },\n showDefaultMenu () {\n return this.menu === Menus.DEFAULT\n },\n categoriesActive () {\n return this.menu === Menus.CATEGORIES\n },\n tagsActive () {\n return this.menu === Menus.TAGS\n },\n subjectsActive () {\n return this.menu === Menus.SUBJECTS\n },\n categories () {\n if (this.subject === null) {\n return []\n }\n\n return this.subjects.find(sub => sub.id === this.subject.id).categories\n }\n },\n data: () => {\n return {\n active: false,\n subject: null,\n menu: Menus.DEFAULT,\n include: '',\n menuProps: {\n closeOnContentClick: false,\n maxHeight: 500\n },\n filterBy: {\n include: '',\n tags: [],\n categories: []\n }\n }\n },\n methods: {\n showSubjects () {\n this.$nextTick(() => {\n this.menu = Menus.SUBJECTS\n })\n },\n showCategories (subject) {\n this.$nextTick(() => {\n this.subject = subject\n this.menu = Menus.CATEGORIES\n })\n },\n showTags () {\n this.$nextTick(() => {\n this.menu = Menus.TAGS\n })\n },\n setMenuProp () {\n this.menuProps.closeOnContentClick = false\n this.setDefaultMenu()\n },\n selectTag (tag) {\n if (!this.filterBy.tags.some(t => t === tag)) {\n this.filterBy.tags.push(tag)\n }\n this.setDefaultMenu()\n this.menuProps.closeOnContentClick = true\n this.applyFilters()\n },\n selectCategory (category) {\n if (!this.filterBy.categories.some(cat => cat.categoryId === category.id)) {\n this.filterBy.categories.push({ subjectId: this.subject.id, categoryId: category.id })\n }\n this.setDefaultMenu()\n this.menuProps.closeOnContentClick = true\n this.applyFilters()\n },\n setDefaultMenu () {\n this.$nextTick(() => {\n this.menu = Menus.DEFAULT\n })\n },\n removeFilter (filter) {\n if (this.filterBy.categories.some(cat => cat.categoryId === filter.categoryId)) {\n this.filterBy.categories = this.filterBy.categories.filter(cat => cat !== filter)\n } else if (this.filterBy.tags.some(cat => cat === filter)) {\n this.filterBy.tags = this.filterBy.tags.filter(tag => tag !== filter)\n } else {\n this.filterBy.include = ''\n }\n\n this.applyFilters()\n },\n applyFilters () {\n this.$emit('applyFilters', this.filterBy)\n },\n onDefaultFiltersChange () {\n this.filterBy.include = this.include\n this.$nextTick(() => { this.include = '' })\n this.applyFilters()\n },\n formatFilter (filter) {\n if (typeof filter === 'string') {\n return filter\n }\n\n const subject = this.subjects.find(subject => subject.id === filter.subjectId)\n const category = subject.categories.find(cat => cat.id === filter.categoryId)\n\n return `${subject.name}/${category.name}`\n },\n removeAnswerFilter () {\n this.filterBy.include = ''\n this.applyFilters()\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./FilterSelect.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./FilterSelect.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FilterSelect.html?vue&type=template&id=4ef24383&scoped=true&\"\nimport script from \"./FilterSelect.js?vue&type=script&lang=js&\"\nexport * from \"./FilterSelect.js?vue&type=script&lang=js&\"\nimport style0 from \"./FilterSelect.scss?vue&type=style&index=0&id=4ef24383&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4ef24383\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\ninstallComponents(component, {VChip,VDivider,VIcon,VList,VListItem,VListItemTitle,VSelect})\n","import { mapState, mapGetters, mapActions } from 'vuex'\nimport QuestionCard from '@/components/QuestionCard'\nimport FilterSelect from '@/components/FilterSelect'\nimport NoContentCard from '@/components/NoContentCard'\nimport { ANSWER_FILTERS, Bookmark } from '@/api/bookmarks/model.js'\n\nconst hasMatchingTag = tagList => bookmark => tagList.some(tag => bookmark.tags.includes(tag))\nconst hasMatchingCategory = catList => bookmark => catList.map(c => c.categoryId).includes(bookmark.categoryId)\nconst checkAnswer = isCorrect => bookmark => bookmark.question.answeredCorrectly === isCorrect\n\nexport default {\n name: 'BookmarkedQuestions',\n components: {\n QuestionCard,\n FilterSelect,\n NoContentCard\n },\n computed: {\n ...mapGetters('subscriptions', ['getActiveId', 'getActiveSubscription']),\n ...mapState('bookmarks', ['bookmarkedQuestions']),\n noBookmarks () {\n return this.filterableQuestions.length === 0\n }\n },\n watch: {\n /**\n * when removing a bookmark, it should remove it from the stored list,\n * this makes sure it is removed from filterableQuestion too\n */\n bookmarkedQuestions (newValue) {\n newValue = newValue.map(value => new Bookmark(value))\n this.filterableQuestions = this.filterableQuestions.filter(question => {\n return newValue.some(bookmark => bookmark.question.id === question.question.id)\n })\n }\n },\n created () {\n this.getBookmarkedQuestions()\n },\n data: () => ({\n expandedQuestionId: null,\n filterOptions: [ANSWER_FILTERS.CORRECT, ANSWER_FILTERS.INCORRECT],\n filterableQuestions: [],\n subjects: [],\n dataLoading: false\n }),\n methods: {\n ...mapActions('exam', ['fetchSubjects']),\n async getBookmarkedQuestions () {\n try {\n this.dataLoading = true\n\n const bookmarkedPromise = this.$store.dispatch('bookmarks/fetchBookmarkedQuestions', this.getActiveId)\n const subjectPromise = this.$store.dispatch('exam/fetchSubjects', this.getActiveSubscription)\n\n this.subjects = (await Promise.all([subjectPromise, bookmarkedPromise]))[0]\n this.filterableQuestions = this.bookmarkedQuestions\n /**\n * Only show subjects that have been bookmarked on the filter\n */\n this.subjects = this.subjects.filter(sub => {\n return this.bookmarkedQuestions.find(bookmark => bookmark.subjectId === sub.id)\n })\n\n /**\n * Only return the categories (within subjects) for questions that have been bookmarked\n */\n this.subjects = this.subjects.map(sub => {\n return {\n ...sub,\n categories: sub.categories.filter(cat => this.bookmarkedQuestions.find(bookmark => bookmark.categoryId === cat.id))\n }\n })\n } finally {\n this.dataLoading = false\n }\n },\n toggleExpanded (question) {\n this.expandedQuestionId = this.expandedQuestionId === question.id ? null : question.id\n },\n applyFilters (filters) {\n this.filterableQuestions = this.bookmarkedQuestions\n\n if (filters.tags.length > 0) {\n this.filterableQuestions = this.filterableQuestions.filter(hasMatchingTag(filters.tags))\n }\n\n if (filters.categories.length > 0) {\n this.filterableQuestions = this.filterableQuestions.filter(hasMatchingCategory(filters.categories))\n }\n\n if (filters.include !== '') {\n const correctFilter = filters.include === ANSWER_FILTERS.CORRECT\n this.filterableQuestions = this.filterableQuestions.filter(checkAnswer(correctFilter))\n }\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./BookmarkedQuestions.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./BookmarkedQuestions.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BookmarkedQuestions.html?vue&type=template&id=04eaf3cf&scoped=true&\"\nimport script from \"./BookmarkedQuestions.js?vue&type=script&lang=js&\"\nexport * from \"./BookmarkedQuestions.js?vue&type=script&lang=js&\"\nimport style0 from \"./BookmarkedQuestions.scss?vue&type=style&index=0&id=04eaf3cf&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"04eaf3cf\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCol,VContainer,VProgressCircular,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('auth-template',{attrs:{\"title\":\"Payment Successful\",\"subtitle\":\"You have completed your purchase.\",\"action\":\"Done\",\"to\":{ name: 'Dashboard' },\"no-logo\":\"\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import AuthTemplate from '@/views/auth/AuthTemplate'\nimport { mapActions, mapMutations } from 'vuex'\n\nexport default {\n name: 'PaymentSuccess',\n components: {\n AuthTemplate\n },\n created () {\n this.refreshUserSubscriptions()\n this.clearCart()\n },\n methods: {\n ...mapMutations('cart', ['clearCart']),\n ...mapActions('subscriptions', ['refreshUserSubscriptions'])\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./PaymentSuccess.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./PaymentSuccess.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PaymentSuccess.html?vue&type=template&id=171075a4&\"\nimport script from \"./PaymentSuccess.js?vue&type=script&lang=js&\"\nexport * from \"./PaymentSuccess.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"align-content-center\",attrs:{\"fluid\":\"\",\"fill-height\":\"\"}},[_c('div',{staticClass:\"d-none\",attrs:{\"id\":\"form-container\"}}),_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"md\":\"6\",\"xl\":\"4\"}},[_c('v-card',[_c('v-card-title',[_vm._v(\" Payment Failed \")]),_c('v-card-subtitle',{staticClass:\"mb-0\"},[(_vm.hasProviders)?_vm._t(\"subtitle\",[_vm._v(\" Your payment failed, please try again or select a different payment provider: \")]):_vm._e(),(!_vm.hasProviders)?_vm._t(\"subtitle\",[_vm._v(\" No payment providers available, please contact support. \")]):_vm._e()],2),_c('v-form',{staticClass:\"mb-0\",on:{\"submit\":function($event){$event.preventDefault();return _vm.$emit('submit')}}},[_c('v-card-actions',{staticClass:\"flex-column justify-space-between\"},[_vm._t(\"actions\",[_c('h2',{staticClass:\"pad-5\"},[_c('v-btn',{attrs:{\"color\":\"primary\",\"type\":\"submit\",\"loading\":_vm.loading},on:{\"click\":_vm.retry}},[_vm._v(\" Retry \")])],1)])],2),_c('v-card-actions',{staticClass:\"flex-column justify-space-between\"},[_vm._t(\"actions\",_vm._l((_vm.providers),function(provider){return _c('h2',{staticClass:\"pad-5\"},[_c('v-btn',{attrs:{\"color\":\"primary\",\"type\":\"submit\"},on:{\"click\":function($event){return _vm.payNow(provider.providerName)}}},[_vm._v(\" \"+_vm._s(provider.providerName)+\" \")])],1)}))],2)],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapActions, mapGetters } from 'vuex'\n\nexport default {\n name: 'PaymentFailure',\n components: {\n },\n data: () => ({\n error: '',\n loading: false,\n providers: []\n }),\n created () {\n this.fetchData()\n },\n computed: {\n console: () => console,\n hasProviders () {\n return this.providers.length > 0\n }\n },\n methods: {\n ...mapActions('cart', ['checkoutPayfast', 'checkoutSimplify']),\n ...mapGetters('cart', ['getSelectedProvider']),\n async fetchData () {\n this.loading = true\n\n try {\n this.providers = await this.$store.dispatch('paymentProviders/fetchProviders')\n } finally {\n this.loading = false\n }\n },\n async retry () {\n try {\n const selectedProviderName = this.getSelectedProvider()\n this.error = ''\n this.loading = true\n let noCharge = false\n const div = document.getElementById('form-container')\n switch (selectedProviderName) {\n case 'Simplify':\n noCharge = await this.checkoutSimplify()\n if (noCharge) {\n this.$router.push({ name: 'PaymentSuccess' })\n }\n break\n case 'Payfast':\n noCharge = await this.checkoutPayfast({ div })\n if (noCharge) {\n this.$router.push({ name: 'PaymentSuccess' })\n }\n break\n default:\n throw new RangeError('Selected provider not set correctly.')\n }\n } catch (e) {\n this.error = 'An error has occured and checkout could not be completed.'\n } finally {\n this.loading = false\n }\n },\n async payNow (providerName) {\n try {\n this.error = ''\n this.loading = true\n\n const div = document.getElementById('form-container')\n switch (providerName) {\n case 'Simplify':\n await this.checkoutSimplify()\n break\n case 'Payfast':\n await this.checkoutPayfast({ div })\n break\n default:\n throw new RangeError('Selected provider not set correctly.')\n }\n } catch (e) {\n this.error = 'An error has occured and checkout could not be completed.'\n } finally {\n this.loading = false\n }\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./PaymentFailure.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./PaymentFailure.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PaymentFailure.html?vue&type=template&id=3f20330e&\"\nimport script from \"./PaymentFailure.js?vue&type=script&lang=js&\"\nexport * from \"./PaymentFailure.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardSubtitle } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardSubtitle,VCardTitle,VCol,VContainer,VForm,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"align-content-center\",attrs:{\"fluid\":\"\",\"fill-height\":\"\"}},[_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"md\":\"6\",\"xl\":\"4\"}},[_c('v-card',[_c('v-card-title',[_vm._v(\" Payment Providers \")]),_c('v-card-subtitle',{staticClass:\"mb-0\"},[(_vm.hasProviders)?_vm._t(\"subtitle\",[_vm._v(\" Please select your prefered payment provider: \")]):_vm._e(),(!_vm.hasProviders)?_vm._t(\"subtitle\",[_vm._v(\" No payment providers available, please contact support. \")]):_vm._e()],2),_c('v-form',{staticClass:\"mb-0\"},[_vm._t(\"default\"),_c('v-card-actions',{staticClass:\"flex-column justify-space-between\"},[_vm._t(\"actions\",_vm._l((_vm.providers),function(provider){return _c('h2',[_c('button',{on:{\"click\":function($event){return _vm.navigate(provider)}}},[_vm._v(\" \"+_vm._s(provider.name)+\" \")])])})),_vm._t(\"append-actions\")],2)],2)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import AuthTemplate from '@/views/auth/AuthTemplate'\nimport { mapActions } from 'vuex'\nimport * as paymentVariables from '@/api/PaymentVariables'\n\nexport default {\n name: 'PaymentProviders',\n components: {\n AuthTemplate\n },\n data: () => ({\n error: '',\n loading: false,\n providers: []\n }),\n created () {\n this.providers = paymentVariables.getPaymentProviders()\n },\n computed: {\n hasProviders () {\n return this.providers.length > 0\n }\n },\n methods: {\n ...mapActions('cart', ['checkoutPayfast']),\n async navigate (provider) {\n let noCharge = false\n let div = {}\n switch (provider.name) {\n case 'Simplify':\n noCharge = await this.checkoutSimplify()\n if (noCharge) {\n this.$router.push({ name: 'PaymentSuccess' })\n }\n this.$router.push({ name: provider.routeName })\n break\n case 'Payfast':\n // do payfast redirect with checkoutPayfast\n div = document.getElementById('form-container')\n noCharge = await this.checkoutPayfast({ div })\n if (noCharge) {\n this.$router.push({ name: 'PaymentSuccess' })\n }\n break\n }\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./PaymentProviders.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./PaymentProviders.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PaymentProviders.html?vue&type=template&id=508c79c1&\"\nimport script from \"./PaymentProviders.js?vue&type=script&lang=js&\"\nexport * from \"./PaymentProviders.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardSubtitle } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCard,VCardActions,VCardSubtitle,VCardTitle,VCol,VContainer,VForm,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"align-content-center\",attrs:{\"fluid\":\"\",\"fill-height\":\"\"}},[_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"md\":\"4\",\"xl\":\"4\"}},[_c('v-card',[_c('v-card-title',[_vm._v(\" Payment Details \")]),_c('v-card-subtitle',{staticClass:\"mb-0\"},[(_vm.loading)?_vm._t(\"subtitle\",[_vm._v(\" Loading your payment gateway... \")]):_vm._t(\"subtitle\",[_vm._v(\" Please enter your payment details below: \")])],2),_c('v-card-subtitle',{staticClass:\"mb-0\"},[_vm._v(\" As part of our continuous improvement through change and to excel in service delivery, we have expanded and added international exposure to our product offering and as such we are now charging in AUD. \")]),_c('v-card-subtitle',{staticClass:\"mb-0\"},[_vm._v(\" Do not be concerned, we will ensure that you do not pay more than the quoted local ZAR price. \")]),_c('div',{attrs:{\"id\":\"iframe\"}},[_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"md\":\"2\",\"xl\":\"2\"}}),_c('v-col',{staticClass:\"d-flex justify-center\",attrs:{\"md\":\"8\",\"xl\":\"8\"}},[(_vm.loading)?_c('v-progress-circular',{attrs:{\"color\":\"secondary\",\"size\":\"100\",\"indeterminate\":\"\"}}):_vm._e(),_c('iframe',{attrs:{\"name\":\"my-hosted-form\",\"data-sc-key\":_vm.dataScKey,\"data-name\":_vm.paymentName,\"data-description\":_vm.paymentDescription,\"data-reference\":_vm.paymentReference,\"data-amount\":_vm.paymentAmount,\"data-color\":_vm.dataColor,\"data-operation\":\"create.token\",\"hidden\":_vm.loading}})],1),_c('v-col',{attrs:{\"md\":\"2\",\"xl\":\"2\"}})],1)],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default process.env.VUE_APP_API_URL\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\nimport router from '@/router'\n\nasync function completeSimplifyPayment ({ TotalPrice, Currency, Description, Token, PaymentId, Profile }) {\n const data = {\n Currency: Currency,\n Description: Description,\n Token: Token,\n TotalPrice: TotalPrice,\n PaymentId: PaymentId,\n Profile: Profile\n }\n const response = await axios.post(\n `${apiBase}/Subscription/CompleteSimplifySubscriptionPayment`,\n data,\n {\n withCredentials: true\n }\n ).catch(() => {\n router.push({ name: 'PaymentFailure' })\n })\n if (response && response.status === 200) {\n router.push({ name: 'PaymentSuccess' })\n return true\n }\n}\n\nexport default completeSimplifyPayment\n","export default process.env.VUE_APP_SIMPLIFY_KEY\n","import completeSimplifyPayment from '@/api/subscriptions/CompleteSimplifySubscriptionPayment'\nimport { mapGetters } from 'vuex'\nimport simplifyKey from '@/api/SimplifyKey'\n\nexport default {\n name: 'PaymentDetails',\n data: () => ({\n dataScKey: simplifyKey,\n dataColor: '#12B830',\n loading: true\n }),\n created () {\n window.SimplifyCommerce = undefined\n this.listenToEvents()\n if (window.listenersArray.length > 0) {\n const listenerIndex = window.listenersArray.findIndex(x => x.listener !== undefined && x.listener.name === 'c')\n if (listenerIndex > 0) {\n window.removeEventListener('message', window.listenersArray[listenerIndex].listener)\n }\n window.listenersArray = []\n }\n const form = document.getElementById('simplify-checkout-form')\n if (form !== null) {\n form.remove()\n }\n const script = document.getElementById('simplifyScript')\n if (script !== null) {\n script.remove()\n this.addSimplifyScript()\n } else {\n this.addSimplifyScript()\n }\n },\n mounted () {\n var iframe = document.getElementsByName('my-hosted-form')[0]\n iframe.addEventListener('load', this.loadHostedPayments.bind(this), true, { once: true })\n },\n computed: {\n ...mapGetters('cart', ['getProviderParams']),\n providerDetails () {\n return this.getProviderParams\n },\n paymentName () {\n return this.providerDetails.paymentName\n },\n paymentDescription () {\n return this.providerDetails.paymentDescription\n },\n paymentReference () {\n return this.providerDetails.paymentId\n },\n paymentAmount () {\n return this.providerDetails.totalPrice * 100\n }\n },\n methods: {\n ...mapGetters('auth', ['getUser']),\n loadHostedPayments (event) {\n if (event.target.nodeName === 'IFRAME') {\n if (window.SimplifyCommerce && this.loading) {\n this.loading = false\n // eslint-disable-next-line\n const hostedPayments = window.SimplifyCommerce.hostedPayments(\n this.hostedPaymentCallback.bind(this),\n {\n operation: 'create.token'\n }\n )\n }\n }\n },\n async hostedPaymentCallback (response) {\n // TODO: Pass token to the server & use Simplify's API to make a payment\n var totalPrice = parseFloat(response.amount)\n var paymentId = parseInt(response.reference)\n var user = this.getUser()\n await completeSimplifyPayment({\n Currency: 'AUD',\n Description: this.paymentDescription,\n Token: response.cardToken,\n TotalPrice: totalPrice,\n PaymentId: paymentId,\n Profile: {\n Email: user.email,\n Name: user.name,\n Surname: user.surname,\n Phone: user.contactNumber\n }\n })\n },\n addSimplifyScript () {\n var externalScript = document.createElement('script')\n\n externalScript.setAttribute('src', 'https://www.simplify.com/commerce/simplify.pay.js')\n externalScript.setAttribute('id', 'simplifyScript')\n externalScript.setAttribute('type', 'text/javascript')\n\n document.head.appendChild(externalScript)\n },\n listenToEvents () {\n EventTarget.prototype.addEventListenerBase = EventTarget.prototype.addEventListener\n EventTarget.prototype.addEventListener = function (type, listener) {\n window.listenersArray.push({ target: this, type: type, listener: listener })\n this.addEventListenerBase(type, listener)\n }\n }\n },\n beforeDestroy () {\n EventTarget.prototype.addEventListener = EventTarget.prototype.addEventListenerBase\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./PaymentDetails.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./PaymentDetails.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PaymentDetails.html?vue&type=template&id=7cbf1cd4&scoped=true&\"\nimport script from \"./PaymentDetails.js?vue&type=script&lang=js&\"\nexport * from \"./PaymentDetails.js?vue&type=script&lang=js&\"\nimport style0 from \"./PaymentDetails.scss?vue&type=style&index=0&id=7cbf1cd4&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7cbf1cd4\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardSubtitle } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCard,VCardSubtitle,VCardTitle,VCol,VContainer,VProgressCircular,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{staticClass:\"pb-0\"},[_c('p',{staticClass:\"headline ma-0\"},[_vm._v(\" Exam History \")]),_c('div',{staticClass:\"d-flex flex-row justify-start align-center\"},[_c('v-select',{staticClass:\"flex-grow-0\",attrs:{\"label\":\"Filter\",\"items\":_vm.filterOptions,\"hide-details\":\"\",\"solo\":\"\",\"flat\":\"\"},on:{\"change\":_vm.changeFilter},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}}),_vm._l((_vm.filters),function(filter){return _c('v-chip',{staticClass:\"ml-5\",attrs:{\"color\":\"secondary text--primary\",\"close\":\"\"},on:{\"click:close\":function($event){return _vm.removeFilter(filter)}}},[_c('span',[_vm._v(\" \"+_vm._s(filter)+\" \")])])})],2)])],1),_vm._l((_vm.filterableExams),function(exam){return _c('v-row',{key:exam.id,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('ExamResultsCard',{attrs:{\"exam\":exam}})],1)],1)}),(_vm.noExams && !_vm.dataLoading)?_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('no-content-card',{attrs:{\"message\":\"No previous exams found\"}})],1)],1):_vm._e(),(_vm.dataLoading)?_c('v-progress-circular',{attrs:{\"color\":\"secondary\",\"size\":\"50\",\"indeterminate\":\"\"}}):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import ExamResultsCard from '@/components/ExamResultsCard'\nimport NoContentCard from '@/components/NoContentCard'\nimport { mapGetters } from 'vuex'\n\nconst EXAM_HISTORY_FILTERS = {\n PASSED: 'Passed',\n FAILED: 'Failed',\n MOCK: 'Mock Exam',\n CUSTOM: 'Custom Exam'\n}\n\nexport const ExamTypes = {\n MOCK: 0,\n CUSTOM: 1\n}\n\nexport default {\n name: 'ExamHistory',\n components: {\n ExamResultsCard,\n NoContentCard\n },\n computed: {\n ...mapGetters('subscriptions', ['getActiveSubscription']),\n firstFilter () {\n return this.filters.length === 1\n },\n passedApplied () {\n return this.filters.some(f => f === EXAM_HISTORY_FILTERS.PASSED)\n },\n failedApplied () {\n return this.filters.some(f => f === EXAM_HISTORY_FILTERS.FAILED)\n },\n mockExamApplied () {\n return this.filters.some(f => f === EXAM_HISTORY_FILTERS.MOCK)\n },\n customApplied () {\n return this.filters.some(f => f === EXAM_HISTORY_FILTERS.CUSTOM)\n },\n noExams () {\n return this.filterableExams.length === 0\n }\n },\n created () {\n this.getPastExams()\n },\n data: () => {\n return {\n filterOptions: Object.values(EXAM_HISTORY_FILTERS),\n filters: [],\n filterableExams: [],\n pastExams: [],\n selected: '',\n dataLoading: false\n }\n },\n methods: {\n async getPastExams () {\n try {\n this.dataLoading = true\n this.pastExams = await this.$store.dispatch('exam/fetchExamHistory', this.getActiveSubscription.id)\n this.pastExams.sort((exam1, exam2) => {\n return exam2.end - exam1.end\n })\n this.filterableExams = this.pastExams\n } finally {\n this.dataLoading = false\n }\n },\n changeFilter (filter) {\n this.$nextTick(() => {\n this.selected = null\n })\n // if filter was applied, remove it\n if (this.filters.some(f => f === filter)) {\n this.filters = this.filters.filter(f => f !== filter)\n } else {\n this.filters.push(filter)\n }\n\n // swap passed and failed filters whenever both are applied\n if (this.failedApplied && filter === EXAM_HISTORY_FILTERS.PASSED) {\n this.filters = this.filters.filter(f => f !== EXAM_HISTORY_FILTERS.FAILED)\n } else if (this.passedApplied && filter === EXAM_HISTORY_FILTERS.FAILED) {\n this.filters = this.filters.filter(f => f !== EXAM_HISTORY_FILTERS.PASSED)\n } else if (this.mockExamApplied && filter === EXAM_HISTORY_FILTERS.CUSTOM) {\n this.filters = this.filters.filter(f => f !== EXAM_HISTORY_FILTERS.MOCK)\n } else if (this.customApplied && filter === EXAM_HISTORY_FILTERS.MOCK) {\n this.filters = this.filters.filter(f => f !== EXAM_HISTORY_FILTERS.CUSTOM)\n }\n this.applyFilters()\n },\n applyFilters () {\n this.filterableExams = this.pastExams\n\n this.filters.forEach(filter => {\n switch (filter) {\n case EXAM_HISTORY_FILTERS.PASSED:\n this.filterableExams = this.pastExams.filter(exam => {\n /**\n * return exam if passed and does not already exist in the filterableExam list\n * @firstFilter used to stop the duplicate check in filterableExams\n */\n return exam.passed && (this.firstFilter || !this.filterableExams.some(test => {\n return test.id === exam.id\n }))\n })\n break\n case EXAM_HISTORY_FILTERS.FAILED:\n this.filterableExams = this.pastExams.filter(exam => {\n return !exam.passed && (this.firstFilter || !this.filterableExams.some(test => {\n return test.id === exam.id\n }))\n })\n break\n case EXAM_HISTORY_FILTERS.MOCK:\n this.filterableExams = this.pastExams.filter(exam => {\n return exam.type === ExamTypes.MOCK && (this.firstFilter || !this.filterableExams.some(test => {\n return test.id === exam.id\n }))\n })\n break\n case EXAM_HISTORY_FILTERS.CUSTOM:\n this.filterableExams = this.filterableExams = this.pastExams.filter(exam => {\n return exam.type === ExamTypes.CUSTOM && (this.firstFilter || !this.filterableExams.some(test => {\n return test.id === exam.id\n }))\n })\n break\n }\n })\n },\n removeFilter (filter) {\n this.filters = this.filters.filter(f => f !== filter)\n this.applyFilters()\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./ExamHistory.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./ExamHistory.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExamHistory.html?vue&type=template&id=5bace84f&scoped=true&\"\nimport script from \"./ExamHistory.js?vue&type=script&lang=js&\"\nexport * from \"./ExamHistory.js?vue&type=script&lang=js&\"\nimport style0 from \"./ExamHistory.scss?vue&type=style&index=0&id=5bace84f&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bace84f\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\ninstallComponents(component, {VChip,VCol,VContainer,VProgressCircular,VRow,VSelect})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('unauth-navbar'),_c('auth-template',{attrs:{\"title\":\"Contact Us\",\"disabled\":_vm.$v.$invalid || _vm.info !== '',\"error\":_vm.error,\"info\":_vm.info,\"loading\":_vm.loading,\"no-logo\":\"\"},on:{\"submit\":_vm.submit},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(){return [_vm._v(\" Please complete the form below to get in touch. \")]},proxy:true}])},[_c('v-text-field',{attrs:{\"label\":\"Name\",\"error-messages\":_vm.errorMessages('name'),\"outlined\":\"\",\"required\":\"\"},model:{value:(_vm.$v.name.$model),callback:function ($$v) {_vm.$set(_vm.$v.name, \"$model\", $$v)},expression:\"$v.name.$model\"}}),_c('v-text-field',{attrs:{\"label\":\"Surname\",\"error-messages\":_vm.errorMessages('surname'),\"outlined\":\"\",\"required\":\"\"},model:{value:(_vm.$v.surname.$model),callback:function ($$v) {_vm.$set(_vm.$v.surname, \"$model\", $$v)},expression:\"$v.surname.$model\"}}),_c('v-text-field',{attrs:{\"label\":\"Email\",\"type\":\"email\",\"error-messages\":_vm.errorMessages('email'),\"outlined\":\"\",\"required\":\"\"},model:{value:(_vm.$v.email.$model),callback:function ($$v) {_vm.$set(_vm.$v.email, \"$model\", $$v)},expression:\"$v.email.$model\"}}),_c('v-text-field',{attrs:{\"label\":\"Phone Number\",\"type\":\"tel\",\"error-messages\":_vm.errorMessages('phone'),\"outlined\":\"\",\"required\":\"\"},on:{\"input\":function($event){return _vm.phoneDebounced()}},model:{value:(_vm.phone),callback:function ($$v) {_vm.phone=$$v},expression:\"phone\"}}),_c('v-textarea',{attrs:{\"label\":\"Describe your request here\",\"row-height\":\"32\",\"rows\":\"3\",\"error-messages\":_vm.errorMessages('text'),\"auto-grow\":\"\",\"outlined\":\"\",\"required\":\"\"},model:{value:(_vm.$v.text.$model),callback:function ($$v) {_vm.$set(_vm.$v.text, \"$model\", $$v)},expression:\"$v.text.$model\"}}),_c('v-card-text',{staticClass:\"text-center\"},[_vm._v(\" By submitting this form, you accept our privacy policy. \")])],1),_c('button',{attrs:{\"role\":\"link\"},on:{\"click\":function($event){return _vm.openInNewTab('http://questionbank.co.za/index.php/contact-us')}}},[_vm._v(\" Go to Contact Us \")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\n\nfunction contact ({ username, name, surname, email, phone, text }) {\n const contactModel = {\n username,\n firstName: name,\n lastName: surname,\n email,\n text,\n phoneNumber: phone\n }\n\n return axios.post(\n `${apiBase}/UnAuthorized/Contact`,\n contactModel,\n {\n responseType: 'text'\n }\n )\n}\n\nexport default contact\n","import AuthTemplate from '@/views/auth/AuthTemplate'\nimport UnauthNavbar from '@/components/nav/UnauthNavbar'\nimport ValidationMessages from '@/mixins/ValidationMessages'\nimport contact from '@/api/messages/Contact'\nimport { required, email } from 'vuelidate/lib/validators'\nimport { mapState, mapGetters } from 'vuex'\nimport debounce from 'lodash.debounce'\nimport { phoneNumber } from '@/plugins/CustomValidators'\n\nexport default {\n name: 'Contact',\n components: {\n AuthTemplate,\n UnauthNavbar\n },\n data: () => ({\n username: null,\n name: '',\n surname: '',\n email: '',\n phone: '',\n text: '',\n error: '',\n info: '',\n loading: false\n }),\n validations: {\n name: { required },\n surname: { required },\n email: { required, email },\n phone: { required, phoneNumber },\n text: { required }\n },\n mixins: [\n ValidationMessages()\n ],\n created () {\n if (this.isAuthenticated) {\n this.username = this.user.username\n this.name = this.user.name\n this.surname = this.user.surname\n this.email = this.user.email\n this.phone = this.user.contactNumber\n }\n\n this.phoneDebounced = debounce(this.$v.phone.$touch, 1000)\n },\n computed: {\n ...mapState('auth', { user: 'currentUser' })\n },\n methods: {\n ...mapGetters('auth', ['isAuthenticated']),\n async submit () {\n this.error = ''\n\n if (this.$v.$invalid) {\n this.$v.$touch()\n return\n }\n\n try {\n this.loading = true\n\n await contact(this)\n\n this.$vuetify.goTo(0)\n this.info = 'Your message has been sent to our support team.'\n this.loading = false\n\n await new Promise(resolve => setTimeout(resolve, 5000))\n\n this.$router.push({ name: 'Root' })\n } catch (_) {\n this.error = 'Something went wrong while trying to contact our team.'\n } finally {\n this.loading = false\n }\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Contact.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Contact.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Contact.html?vue&type=template&id=4d486936&\"\nimport script from \"./Contact.js?vue&type=script&lang=js&\"\nexport * from \"./Contact.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VCardText,VTextField,VTextarea})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('auth-template',{attrs:{\"title\":\"Verification\",\"subtitle\":\"Check your email for your verification link to continue\",\"action\":\"Resend Link\",\"loading\":_vm.loading,\"info\":_vm.info,\"error\":_vm.error,\"text-button\":\"\"},on:{\"submit\":_vm.resend}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import AuthTemplate from '@/views/auth/AuthTemplate'\n\nexport default {\n name: 'SendVerification',\n components: {\n AuthTemplate\n },\n props: {\n details: {\n type: Object,\n required: true\n }\n },\n data: () => {\n return {\n info: '',\n error: '',\n loading: false\n }\n },\n methods: {\n async resend () {\n this.info = ''\n\n try {\n this.loading = true\n await this.$store.dispatch('auth/register', this.details)\n this.info = 'Your verification link has been resent, please check your email.'\n } catch (_) {\n this.error = 'Something went wrong while trying to resend your verification link.'\n } finally {\n this.loading = false\n }\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./SendVerification.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./SendVerification.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SendVerification.html?vue&type=template&id=a6a2b0a0&\"\nimport script from \"./SendVerification.js?vue&type=script&lang=js&\"\nexport * from \"./SendVerification.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('auth-template',{attrs:{\"action\":\"Login\",\"title\":_vm.title,\"subtitle\":_vm.subtitle,\"loading\":_vm.loading,\"disabled\":_vm.showError,\"show-error\":_vm.showError,\"to\":{ name: 'Login', params: { redirect: { name: 'Subscriptions' } }}},scopedSlots:_vm._u([{key:\"error\",fn:function(){return [_vm._v(\" Something has gone wrong while trying to verify your account. If this problem persists, please \"),_c('router-link',{staticClass:\"white--text font-weight-medium\",attrs:{\"to\":{ name: 'Contact' }}},[_vm._v(\" contact support. \")])]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import AuthTemplate from '@/views/auth/AuthTemplate'\n\nexport default {\n name: 'Verify',\n components: {\n AuthTemplate\n },\n props: {\n token: {\n type: String,\n required: true\n }\n },\n data: () => {\n return {\n showError: false,\n loading: false,\n verified: false\n }\n },\n created () {\n this.verify()\n },\n computed: {\n title () {\n if (this.verified) {\n return 'Successfully Verified'\n }\n\n if (this.showError) {\n return 'Error'\n }\n\n return 'Verifying'\n },\n subtitle () {\n if (this.verified) {\n return 'Put on your thinking cap!'\n }\n\n if (this.showError) {\n return ''\n }\n\n return 'Please be patient while we verify your account'\n }\n },\n methods: {\n async verify () {\n try {\n this.loading = true\n await this.$store.dispatch('auth/verify', this.token)\n this.verified = true\n } catch (_) {\n this.showError = true\n } finally {\n this.loading = false\n }\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Verify.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Verify.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Verify.html?vue&type=template&id=6c1a6a92&\"\nimport script from \"./Verify.js?vue&type=script&lang=js&\"\nexport * from \"./Verify.js?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\n\n/**\n * Convenience function to hit the registration endpoint.\n * Returns a promise\n * Promise resolves upon successful API call, rejects otherwise\n */\nasync function register ({ name, surname, username, email, phone, password }) {\n const registerModel = {\n firstName: name,\n lastName: surname,\n username: username,\n emailAddress: email,\n phoneNumber: phone,\n newPassword: password\n }\n try {\n return await axios.post(\n `${apiBase}/UnAuthorized/Register`,\n registerModel\n )\n } catch (e) {\n throw e.response && e.response.data ? e.response.data : e\n }\n}\n\nexport default register\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\n\n/**\n * Convenience function for login endpoint\n * Returns a promise\n * Promise resolves with user details upon success\n * rejects otherwise\n */\nasync function login ({ email, password }) {\n const loginModel = {\n userIdentifier: email,\n password\n }\n try {\n const res = await axios.post(\n `${apiBase}/UnAuthorized/Login`,\n loginModel,\n {\n withCredentials: true,\n validateStatus: status => status === 200\n }\n )\n\n return {\n id: res.data.profile.userId,\n username: res.data.profile.username,\n email: res.data.profile.email,\n name: res.data.profile.name,\n surname: res.data.profile.surname,\n contactNumber: res.data.profile.contactNumber\n }\n } catch (e) {\n throw e.response && e.response.data ? e.response.data : e\n }\n}\n\nexport default login\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\n\nfunction logout () {\n return axios.post(\n `${apiBase}/Disconnect/Logout`,\n null,\n {\n withCredentials: true,\n responseType: 'text'\n }\n )\n}\n\nexport default logout\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\n\nfunction verify (token) {\n return axios.put(\n `${apiBase}/Verify/ApproveMember`,\n null,\n {\n headers: {\n Authorization: `bearer ${token}`\n }\n }\n )\n}\n\nexport default verify\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\nimport jwtDecode from 'jwt-decode'\n\n/**\n * Convenience function for forgot password endpoint\n * Returns a promise\n * Promise resolves upon success\n * rejects otherwise\n */\nexport function forgotPassword (email) {\n const forgotPasswordModel = {\n emailAddress: email\n }\n\n return axios.post(\n `${apiBase}/UnAuthorized/ForgotPassword`,\n forgotPasswordModel,\n {\n responseType: 'text'\n }\n )\n}\n\n/**\n * Convenience function for reset password endpoint\n * Returns a promise\n * Promise resolves upon success\n * rejects otherwise\n */\n\nexport function resetPassword ({ token, password }) {\n const user = jwtDecode(token)\n\n const resetPasswordModel = {\n uniqueId: user.UniqueId,\n newPassword: password\n }\n\n return axios.post(\n `${apiBase}/ResetPassword/Reset`,\n resetPasswordModel,\n {\n headers: {\n Authorization: `bearer ${token}`\n }\n }\n )\n}\n","import register from '@/api/auth/Register'\nimport login from '@/api/auth/Login'\nimport logout from '@/api/auth/Logout'\nimport verify from '@/api/auth/Verify'\nimport { resetPassword, forgotPassword } from '@/api/auth/ResetPassword'\n\nconst state = {\n currentUser: null\n}\n\nconst namespaced = true\n\nconst getters = {\n isAuthenticated (state) {\n return state.currentUser !== null\n },\n getUsername (state) {\n return state.currentUser && state.currentUser.username ? state.currentUser.username : ''\n },\n getUser (state) {\n return state.currentUser\n }\n}\n\nconst mutations = {\n setCurrentUser (state, user) {\n state.currentUser = user\n }\n}\n\nconst actions = {\n login: async ({ commit, dispatch }, data) => {\n const user = await login(data)\n commit('setCurrentUser', user)\n\n await dispatch('messages/refreshNotifications', undefined, { root: true })\n await dispatch('subscriptions/repopulateForLogin', undefined, { root: true })\n await dispatch('exam/repopulateForLogin', undefined, { root: true })\n },\n logout: async ({ commit, dispatch }) => {\n // We don't actually care if the API call fails,\n // clear the current user anyway\n await dispatch('exam/clearForLogout', undefined, { root: true })\n await dispatch('subscriptions/clearForLogout', undefined, { root: true })\n commit('messages/setNotifications', [], { root: true })\n commit('setCurrentUser', null)\n\n // Catch any error and ignore to prevent it from bubbling\n logout().catch(() => {})\n },\n register: async (_, userData) => {\n // if the api call fails, this will throw,\n // otherwise it'll return a success message\n await register(userData)\n },\n forgotPassword: async (_, email) => {\n await forgotPassword(email)\n },\n resetPassword: async (_, data) => {\n await resetPassword(data)\n },\n async verify (_, token) {\n await verify(token)\n }\n}\n\nexport default {\n state,\n getters,\n mutations,\n actions,\n namespaced\n}\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\n\nfunction markReadNotifications ({ notificationIds, user }) {\n const notificationsModel = {\n userID: user.id,\n notifications: notificationIds.map(id => ({\n notificationID: id\n }))\n }\n\n return axios.post(\n `${apiBase}/Notification/SetSeenNotifications`,\n notificationsModel,\n {\n withCredentials: true\n }\n )\n .then(res => res.data)\n}\n\nexport default markReadNotifications\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\n\nasync function fetchNotifications () {\n const res = await axios.get(\n `${apiBase}/Notification/GetNotifications`,\n {\n withCredentials: true\n }\n )\n\n return res.data.notifications.map(notification => ({\n id: notification.notificationID,\n title: notification.notificationHeading,\n content: notification.notificationText,\n date: notification.notificationDate,\n unread: !notification.notificationFlag\n }))\n}\n\nexport default fetchNotifications\n","import markReadNotifications from '@/api/messages/MarkReadNotifications'\nimport fetchNotifications from '@/api/messages/FetchNotifications'\n\nconst namespaced = true\n\nconst state = {\n notifications: []\n}\n\nconst getters = {\n hasUnreadNotifications (state) {\n return state.notifications.some(n => n.unread)\n },\n getUnreadNotifications (state) {\n return state.notifications.filter(n => n.unread)\n }\n}\n\nconst mutations = {\n setNotifications (state, notifications) {\n state.notifications.splice(0)\n notifications.forEach(notification => {\n state.notifications.push(notification)\n })\n },\n setAsRead (state, notificationIds) {\n state.notifications\n .filter(n => notificationIds.includes(n.id))\n .forEach(n => { n.unread = false })\n }\n}\n\nconst actions = {\n markAllAsRead: async ({ state, getters, rootState, commit }) => {\n if (!getters.hasUnreadNotifications) {\n return\n }\n\n const notificationIds = getters.getUnreadNotifications.map(n => n.id)\n const user = rootState.auth.currentUser\n\n commit('setAsRead', notificationIds)\n\n await markReadNotifications({ notificationIds, user })\n },\n async refreshNotifications ({ commit }) {\n const notifications = await fetchNotifications()\n\n commit('setNotifications', notifications)\n }\n}\n\nexport default {\n namespaced,\n state,\n getters,\n mutations,\n actions\n}\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\n\nasync function checkout ({ providerId, subscriptionOptions, user }) {\n const checkoutModel = {\n paymentProviderId: providerId,\n subscriptions: subscriptionOptions.map(so => ({\n userId: user.id,\n subscriptionId: so.subscription,\n subscriptionOptionKey: so.option\n }))\n }\n\n const res = await axios.post(\n `${apiBase}/Subscription/InitiateSubscriptionPayment`,\n checkoutModel,\n {\n withCredentials: true\n }\n )\n\n return res.data\n}\n\nexport default checkout\n","export default process.env.VUE_APP_FRONTEND_URL\n","export default process.env.VUE_APP_PAYFAST_PROCESS_URL\n","import md5 from 'md5'\nimport frontEndUrl from '../FrontEndUrl'\nimport baseUrl from '../BaseUrl.js'\nimport PayfastProccessUrl from '../PayfastProcessUrl'\n\nfunction createInput (name, value) {\n const input = document.createElement('input')\n input.name = name\n input.value = value\n return input\n}\n\nexport default class QueryBuilder {\n constructor (api) {\n this.merchantId = api.merchantId\n this.merchantKey = api.merchantKey\n this.returnUrl = `${frontEndUrl}/payment/success`\n this.cancelUrl = `${frontEndUrl}/payment/failed`\n this.notifyUrl = `${baseUrl}/${api.notifyURL}`\n this.amount = api.totalPrice\n this.paymentId = api.paymentId\n this.itemName = api.paymentName\n this.itemDescription = api.paymentDescription\n this.passphrase = api.passphrase\n }\n\n generatePreSignatureQuery () {\n const params = new URLSearchParams()\n params.append('merchant_id', this.merchantId)\n params.append('merchant_key', this.merchantKey)\n params.append('return_url', this.returnUrl)\n params.append('cancel_url', this.cancelUrl)\n params.append('notify_url', this.notifyUrl)\n params.append('m_payment_id', this.paymentId)\n params.append('amount', this.amount)\n params.append('item_name', this.itemName)\n params.append('item_description', this.itemDescription)\n params.append('passphrase', this.passphrase)\n return params\n }\n\n generateSignature () {\n const params = this.generatePreSignatureQuery()\n\n return md5(params.toString())\n }\n\n build () {\n const params = this.generatePreSignatureQuery()\n params.append('signature', this.generateSignature())\n return params\n }\n\n /**\n * This is a *disgusting* hack, but it appears to be the\n * only way to get the job done.\n */\n submit (div) {\n const params = this.build()\n\n for (const c of div.children) {\n c.remove()\n }\n\n const form = document.createElement('form')\n form.action = `${PayfastProccessUrl}`\n form.method = 'post'\n\n for (const entry of params) {\n form.appendChild(createInput(...entry))\n }\n\n div.appendChild(form)\n\n form.submit()\n }\n}\n","import checkout from '@/api/subscriptions/Checkout'\nimport PayfastQueryBuilder from '@/api/payfast/queryBuilder'\nimport router from '@/router'\n\nconst state = {\n subscriptionOptions: [],\n providerParams: {},\n selectedProvider: ''\n}\n\nconst namespaced = true\n\nconst optionMapper = subscriptions => ({ subscription: id, option: key }) => {\n const sub = subscriptions.find(s => s.id === id)\n\n if (sub === undefined) {\n throw new RangeError('Invalid subscription id')\n }\n\n if (!sub.options.some(o => o.key === key)) {\n throw new RangeError('Invalid option key')\n }\n\n const option = sub.options.find(o => o.key === key)\n\n const subscription = { ...sub }\n delete subscription.options\n\n return { ...option, subscription }\n}\n\nconst getters = {\n emptyCart (state) {\n return state.subscriptionOptions.length === 0\n },\n getProviderParams (state) {\n return state.providerParams\n },\n getSelectedProvider (state) {\n return state.selectedProvider\n }\n}\n\nconst actions = {\n getContents: async ({ state, dispatch }) => {\n if (state.subscriptionOptions.length === 0) {\n return []\n }\n\n const subscriptions = await dispatch('subscriptions/getSubscriptions', null, { root: true })\n\n return state.subscriptionOptions.map(optionMapper(subscriptions))\n },\n checkoutPayfast: async ({ state, rootState, commit }, { div }) => {\n commit('setSelectedProvider', { provider: 'Payfast' })\n const subscriptionOptions = state.subscriptionOptions\n const user = rootState.auth.currentUser\n const provider = rootState.paymentProviders.providers.find(p => p.providerName === state.selectedProvider)\n const providerId = provider.id\n if (subscriptionOptions.length === 0) {\n return\n }\n\n const payfastParams = await checkout({ providerId, subscriptionOptions, user })\n\n commit('clearTrials')\n\n if (payfastParams.shouldRedirect) {\n commit('setPaymentDetails', { providerParams: payfastParams })\n const query = new PayfastQueryBuilder(payfastParams)\n query.submit(div)\n return // Control should never actually reach this point\n }\n\n return true\n },\n checkoutSimplify: async ({ state, rootState, commit }) => {\n commit('setSelectedProvider', { provider: 'Simplify' })\n const subscriptionOptions = state.subscriptionOptions\n const user = rootState.auth.currentUser\n const provider = rootState.paymentProviders.providers.find(p => p.providerName === state.selectedProvider)\n const providerId = provider.id\n\n if (subscriptionOptions.length === 0) {\n return\n }\n\n const simplifyParams = await checkout({ providerId, subscriptionOptions, user })\n\n commit('clearTrials')\n\n if (simplifyParams.shouldRedirect) {\n commit('setPaymentDetails', { providerParams: simplifyParams })\n router.push({ name: 'PaymentDetails' })\n return false\n }\n\n return true\n }\n}\n\nconst mutations = {\n addToCart (state, { subscriptionId, optionKey, isTrial }) {\n isTrial = !!isTrial\n\n if (!state.subscriptionOptions.find(so => so.subscription === subscriptionId && so.option === optionKey)) {\n state.subscriptionOptions.push({\n subscription: subscriptionId,\n option: optionKey,\n isTrial\n })\n }\n },\n removeFromCart (state, optionKey) {\n const i = state.subscriptionOptions.findIndex(so => so.option === optionKey)\n\n if (i === -1) {\n throw new RangeError('Invalid subscription option key')\n }\n\n state.subscriptionOptions.splice(i, 1)\n },\n clearCart (state) {\n state.subscriptionOptions = []\n },\n clearTrials (state) {\n state.subscriptionOptions = state.subscriptionOptions.filter(so => !so.isTrial)\n },\n setPaymentDetails (state, { providerParams }) {\n state.providerParams = providerParams\n },\n setSelectedProvider (state, { provider }) {\n state.selectedProvider = provider\n }\n}\n\nexport default {\n namespaced,\n state,\n getters,\n mutations,\n actions\n}\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\n\nfunction getSubscriptionContent () {\n return axios.get(\n `${apiBase}/UnAuthorized/GetSubscriptionContent`,\n {\n withCredentials: true\n }\n )\n .then(res => res.data.map(obj => {\n return {\n id: obj.subscriptionId,\n name: obj.subscriptionName,\n shortName: obj.subscriptionShortName,\n relation: obj.subscriptionRelation,\n options: obj.subscriptionOptions.map(option => {\n return {\n key: option.key,\n questionLimit: option.questionLimit,\n mockExamLimit: option.mockExamLimit,\n price: option.subscriptionPrice,\n length: option.subscriptionLength,\n period: option.subscriptionPeriod,\n access: option.subscriptionAccess\n }\n })\n }\n }))\n}\n\nexport default getSubscriptionContent\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\n\nasync function fetchUserSubscriptions () {\n const res = await axios.get(\n `${apiBase}/Subscription/GetUserSubscriptions`,\n {\n withCredentials: true\n }\n )\n\n return res.data.map(us => ({\n id: us.subscriptionId,\n name: us.subscriptionName,\n shortName: us.subscriptionShortName,\n options: us.subscriptionOptions.map(o => ({\n key: o.subscriptionOptionKey,\n start: o.subscriptionStartDate,\n expiry: o.subscriptionExpiryDate,\n isTrial: o.isTrial\n }))\n }))\n}\n\nexport default fetchUserSubscriptions\n","import pick from 'lodash.pick'\nimport getSubscriptionContent from '@/api/subscriptions/subscriptions'\nimport fetchUserSubscriptions from '@/api/subscriptions/FetchUserSubscriptions'\n\nclass SubscriptionOption {\n static create (raw) {\n return new SubscriptionOption(raw)\n }\n\n constructor (raw) {\n Object.assign(this, pick(raw, 'key', 'start', 'expiry', 'isTrial'))\n }\n\n get unexpired () {\n return !this.expired\n }\n\n get expired () {\n return new Date(this.expiry) < new Date()\n }\n}\n\nclass UserSubscription {\n static create (raw) {\n return new UserSubscription(raw)\n }\n\n constructor (raw) {\n Object.assign(this, pick(raw, 'id', 'name', 'shortName', 'active'))\n this.options = raw.options.map(SubscriptionOption.create)\n }\n\n get expiryDate () {\n return this.options\n .map(o => new Date(o.expiry))\n .reduce((acc, cur) => (acc < cur) ? cur : acc)\n }\n\n get unexpired () {\n return !this.expired\n }\n\n get expired () {\n return this.options.every(o => o.expired)\n }\n\n get trial () {\n return this.options\n .filter(o => o.unexpired)\n .every(o => o.isTrial)\n }\n}\n\nconst state = {\n userSubscriptions: [],\n activeSubscriptionMap: {}\n}\n\nconst namespaced = true\n\nconst getters = {\n getActiveId (state) {\n return state.userSubscriptions.find(sub => sub.active).id\n },\n getActiveSubscription (state) {\n return state.userSubscriptions.find(sub => sub.active)\n },\n hasSubscriptions (state) {\n return state.userSubscriptions.length !== 0\n },\n hasUnexpiredSubscriptions (_, getters) {\n return getters.unexpiredSubscriptions.length !== 0\n },\n noSubscriptions (_, getters) {\n return !getters.hasSubscriptions\n },\n unexpiredSubscriptions (_, getters) {\n return getters.userSubscriptions\n .filter(us => us.unexpired)\n },\n userSubscriptions (state) {\n return state.userSubscriptions\n .map(UserSubscription.create)\n },\n isTrialSubscription (_, getters) {\n const active = getters.getActiveSubscription\n\n if (!active) {\n return false\n }\n\n return UserSubscription.create(active).trial\n }\n}\n\nconst actions = {\n getSubscriptions: () => {\n return getSubscriptionContent()\n },\n populateAndSetUserSubscriptions ({ state, commit, dispatch, getters, rootState }, userSubscriptions) {\n const userId = rootState.auth.currentUser.id\n\n if (getters.getActiveSubscription) {\n const subscriptionId = getters.getActiveId\n\n commit('pushActiveSubscription', { userId, subscriptionId })\n }\n\n const userSubs = userSubscriptions.map(us => ({\n ...us,\n active: false\n }))\n\n commit('setUserSubscriptions', userSubs)\n\n if (userSubscriptions.length === 0) {\n return\n }\n\n const activeSub = state.activeSubscriptionMap[userId]\n\n if (!!activeSub && userSubs.some(us => us.id === activeSub)) {\n commit('setActiveSubscription', activeSub)\n } else {\n const subscriptionId = userSubs[0].id\n\n commit('pushActiveSubscription', { userId, subscriptionId })\n commit('setActiveSubscription', subscriptionId)\n }\n },\n setActiveSubscription ({ commit, rootState }, subscriptionId) {\n const userId = rootState.auth.currentUser.id\n\n commit('pushActiveSubscription', { userId, subscriptionId })\n commit('setActiveSubscription', subscriptionId)\n },\n async refreshUserSubscriptions ({ dispatch }) {\n const newUserSubs = await fetchUserSubscriptions()\n\n await dispatch('populateAndSetUserSubscriptions', newUserSubs)\n },\n clearForLogout ({ commit, getters, rootState }) {\n const userId = rootState.auth.currentUser.id\n const subscriptionId = getters.getActiveId\n\n commit('pushActiveSubscription', { userId, subscriptionId })\n commit('setUserSubscriptions', [])\n },\n async repopulateForLogin ({ state, rootState, commit, dispatch }) {\n const userSubs = await fetchUserSubscriptions()\n await dispatch('populateAndSetUserSubscriptions', userSubs)\n\n const userId = rootState.auth.currentUser.id\n const activeSub = state.activeSubscriptionMap[userId]\n\n if (!!activeSub && userSubs.some(us => us.id === activeSub)) {\n commit('setActiveSubscription', activeSub)\n }\n }\n}\n\nconst mutations = {\n setUserSubscriptions (state, userSubscriptions) {\n state.userSubscriptions = userSubscriptions.map(raw => new UserSubscription(raw))\n },\n setActiveSubscription (state, subscriptionId) {\n state.userSubscriptions.forEach(us => {\n us.active = us.id === subscriptionId\n })\n },\n pushActiveSubscription (state, { userId, subscriptionId }) {\n state.activeSubscriptionMap[userId] = subscriptionId\n }\n}\n\nconst SubscriptionsStore = {\n state,\n getters,\n actions,\n mutations,\n namespaced\n}\n\nexport default SubscriptionsStore\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\nimport { InclusionTypes } from '@/views/student/CustomExam/CustomExam'\n\nasync function fetchSubjectsAndCategories ({ id, options }) {\n const body = {\n activeSubcriptionId: id,\n subscriptionOptionKey: options[0].key\n }\n const res = await axios.post(\n `${apiBase}/Exam/SubjectAndSubcategory`,\n body,\n {\n withCredentials: true\n }\n )\n return res.data.subjectsAndCategories.map(sub => ({\n name: sub.subjectName,\n id: sub.subjectId,\n categories: sub.subcategories.map(cat => ({\n id: cat.subcategoryId,\n name: cat.subcategoryName,\n questionCounts: {\n [InclusionTypes.EVERYTHING]: cat.everythingCount,\n [InclusionTypes.EXCLUDE_ANSWERED]: cat.excludePreviouslyAnsweredCount,\n [InclusionTypes.PREVIOUSLY_INCORRECT]: cat.previouslyIncorrectlyAnsweredCount,\n [InclusionTypes.PREVIOUSLY_CORRECT]: cat.previouslyCorrectlyAnsweredCount\n }\n }))\n }))\n}\n\nexport default fetchSubjectsAndCategories\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\nimport { InclusionTypes } from '@/views/student/CustomExam/CustomExam'\n\nasync function fetchCategoryCounts ({ id, subjectId, subcategoryId }) {\n const data = {\n ActiveSubscriptionId: id,\n SubjectId: subjectId,\n CategoryId: subcategoryId\n }\n const res = await axios.post(\n `${apiBase}/Exam/SubcategoryInclusionCount`,\n data,\n {\n withCredentials: true\n }\n )\n return {\n [InclusionTypes.EVERYTHING]: res.data.everythingCount,\n [InclusionTypes.EXCLUDE_ANSWERED]: res.data.excludePreviouslyAnsweredCount,\n [InclusionTypes.PREVIOUSLY_INCORRECT]: res.data.previouslyIncorrectlyAnsweredCount,\n [InclusionTypes.PREVIOUSLY_CORRECT]: res.data.previouslyCorrectlyAnsweredCount\n }\n}\n\nexport default fetchCategoryCounts\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\nimport Exam from './model'\n\nasync function fetchCustomExam ({ duration, subject, category, questionCount, inclusion, submission, subscriptionId, display }) {\n const data = {\n duration,\n inclusion,\n answerDisplay: display,\n subjectId: subject.id,\n subcategoryId: category.id,\n numberOfQuestions: questionCount,\n activeSubscriptionId: subscriptionId,\n submissionType: submission\n }\n\n const res = await axios.post(\n `${apiBase}/Exam/CustomExam`,\n data,\n {\n withCredentials: true\n }\n )\n\n return Exam.fromAPI({\n name: `${subject.name} - ${category.name}`,\n ...res.data\n })\n}\n\nexport default fetchCustomExam\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\nimport Exam from './model'\n\nasync function fetchMockExam ({ activeSubscriptionId, mockExam }) {\n const data = {\n activeSubscriptionId,\n mockExamId: mockExam.id\n }\n const res = await axios.post(\n `${apiBase}/Exam/MockExam`,\n data,\n {\n withCredentials: true\n }\n )\n\n return Exam.fromAPI({\n name: mockExam.name,\n ...res.data\n })\n}\n\nexport default fetchMockExam\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\n\nasync function fetchMockExamNames ({ subscriptionId }) {\n const res = await axios.get(\n `${apiBase}/Exam/MockExamDetails/${subscriptionId}`,\n {\n withCredentials: true\n }\n )\n return {\n display: res.data.answerDisplay,\n mockExams: res.data.mockExamDetails.map(exam => {\n return {\n name: exam.mockExamName,\n id: exam.mockExamId,\n notes: exam.mockExamNotes,\n instructions: exam.mockExamInstructions,\n duration: exam.duration,\n annexures: exam.annexures.map(ann => {\n return {\n name: ann.annexureName,\n id: ann.annexureID\n }\n }),\n links: exam.annexureLinks.map(link => {\n return {\n text: link.linkName,\n url: link.annexureUrl\n }\n })\n }\n })\n }\n}\n\nexport default fetchMockExamNames\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\nimport { ExamTypes } from '@/views/student/ExamHistory/ExamHistory.js'\n\nasync function fetchExamHistory (subscriptionId) {\n const res = await axios.get(\n `${apiBase}/Exam/ExamHistory/${subscriptionId}`,\n {\n withCredentials: true\n }\n )\n return res.data.exams.map(exam => {\n /**\n * Just calculate the fields from the Exam model\n * that are used by ExamResultsCard\n */\n let name\n let type\n\n if (exam.mockExamName) {\n name = exam.mockExamName\n type = ExamTypes.MOCK\n } else {\n name = `${exam.subjectName} - ${exam.subcategoryName}`\n type = ExamTypes.CUSTOM\n }\n\n const correctCount = exam.correctlyAnswered\n const questionCount = exam.totalQuestions\n\n const correctPercent = Math.round(correctCount / questionCount * 100)\n\n const passMark = exam.passmark ? exam.passmark : 75\n\n const passed = correctPercent >= passMark\n\n return {\n id: exam.examId,\n name,\n start: new Date(exam.startDate),\n end: new Date(exam.endDate),\n correctCount,\n questionCount,\n correctPercent,\n passMark,\n passed,\n type\n }\n })\n}\n\nexport default fetchExamHistory\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\n\nfunction mapQuestionSyncUnit (unit) {\n const res = {\n questionId: unit.id\n }\n\n if (unit.start) {\n res.startTime = (new Date(unit.start)).toJSON()\n }\n\n if (unit.end) {\n res.endTime = (new Date(unit.end)).toJSON()\n }\n\n if (Array.isArray(unit.studentAnswerKeys)) {\n res.answerKeys = unit.studentAnswerKeys.slice()\n }\n\n return res\n}\n\nfunction mapSyncUnit (unit) {\n const res = {\n examId: unit.id,\n activeSubscriptionId: unit.subscriptionId\n }\n\n if (unit.start) {\n res.startDate = (new Date(unit.start)).toJSON()\n }\n\n if (unit.end) {\n res.endDate = (new Date(unit.end)).toJSON()\n }\n\n if (unit.questions) {\n res.questionAnswers = unit.questions.map(mapQuestionSyncUnit)\n }\n\n return res\n}\n\nasync function saveExamProgress (syncUnit) {\n const data = mapSyncUnit(syncUnit)\n\n await axios.post(\n `${apiBase}/Exam/ExamProgress`,\n data,\n {\n withCredentials: true,\n responseType: 'text'\n }\n )\n}\n\nexport default saveExamProgress\n","import Exam from '@/api/exams/model'\nimport AwaitLock from 'await-lock'\nimport fetchSubjectsAndCategories from '@/api/exams/fetchSubjectsAndCategories'\nimport fetchCategoryCounts from '@/api/exams/fetchCategoryCounts'\nimport fetchCustomExam from '@/api/exams/fetchCustomExam'\nimport fetchMockExam from '@/api/exams/fetchMockExam'\nimport fetchMockExamNames from '@/api/exams/fetchMockExamNames'\nimport fetchExamHistory from '@/api/exams/fetchExamHistory'\nimport saveExamProgress from '@/api/exams/saveExamProgress'\n\n/**\n * Unfortunately, we *need* to use a global here: every instances\n * needs to await on the same lock and if we try and put it in the\n * VueX state it'll be stripped. Also, we don't want it to persist\n * across page reloads.\n */\nwindow.examSyncMutex = new AwaitLock()\n\nfunction getWrappedExam (state) {\n if (state.exam === null) {\n return null\n }\n\n return new Exam(state.exam)\n}\n\nconst namespaced = true\n\nconst state = {\n exam: null,\n unsyncedExams: []\n}\n\nconst getters = {\n exam (state) {\n /**\n * This has to be done in a getter because VueX\n * will strip any complex logic from the model\n */\n return getWrappedExam(state)\n },\n isDirty (_, getters) {\n const exam = getters.exam\n\n if (exam === null) {\n return false\n }\n\n return exam.dirty\n },\n syncUnit (_, getters) {\n const exam = getters.exam\n\n if (exam === null) {\n return []\n }\n\n return exam.getSyncUnit()\n }\n}\n\nconst mutations = {\n setExam (state, exam) {\n if (exam !== null && exam.raw !== undefined) {\n state.exam = exam.raw\n return\n }\n\n state.exam = exam\n },\n pushUnsyncedExam (state, { userId, exam }) {\n if (exam === null || !exam.dirty) {\n return\n }\n\n state.unsyncedExams.push({ userId, exam })\n state.exam = null\n },\n popUnsyncedExam (state, userId) {\n const index = state.unsyncedExams.findIndex(ue => ue.userId === userId)\n\n if (index < 0) {\n return\n }\n\n const exam = state.unsyncedExams[index].exam\n\n state.unsyncedExams.splice(index, 1)\n\n if (exam.raw !== undefined) {\n state.exam = exam.raw\n return\n }\n\n state.exam = exam\n },\n startExam (state) {\n const exam = getWrappedExam(state)\n\n if (exam === null) {\n return\n }\n\n exam.startExam()\n },\n finishExam (state) {\n const exam = getWrappedExam(state)\n\n if (exam === null) {\n return\n }\n\n exam.finishExam()\n },\n startQuestion (state, id) {\n const exam = getWrappedExam(state)\n\n if (exam === null) {\n return\n }\n\n exam.startQuestion(id)\n },\n finishQuestion (state, id) {\n const exam = getWrappedExam(state)\n\n if (exam === null) {\n return\n }\n\n exam.finishQuestion(id)\n },\n answerQuestion (state, { questionId, answerKey }) {\n const exam = getWrappedExam(state)\n\n if (exam === null) {\n return\n }\n\n exam.answerQuestion(questionId, [answerKey])\n },\n completeSync (state, syncUnit) {\n const exam = getWrappedExam(state)\n\n if (exam === null) {\n return\n }\n\n exam.completeSync(syncUnit)\n }\n}\n\nconst actions = {\n async fetchSubjects (_, data) {\n return await fetchSubjectsAndCategories(data)\n },\n async fetchCounts (_, data) {\n return await fetchCategoryCounts(data)\n },\n async fetchMockExamOptions ({ rootGetters }) {\n const subscriptionId = rootGetters['subscriptions/getActiveId']\n return await fetchMockExamNames({ subscriptionId })\n },\n async fetchCustomExamQuestions ({ commit, dispatch }, filters) {\n const exam = await fetchCustomExam(filters)\n commit('setExam', exam)\n },\n async fetchMockExam ({ commit }, data) {\n const exam = await fetchMockExam(data)\n commit('setExam', exam)\n },\n async fetchExamHistory (_, subscriptionId) {\n return await fetchExamHistory(subscriptionId)\n },\n async saveUnsyncedExams ({ getters, commit, rootState }) {\n const userId = rootState.auth.currentUser.id\n const exam = getters.exam\n\n commit('pushUnsyncedExam', { userId, exam })\n },\n async loadUnsyncedExam ({ commit, rootState }) {\n await window.examSyncMutex.acquireAsync()\n try {\n const userId = rootState.auth.currentUser.id\n\n commit('popUnsyncedExam', userId)\n } finally {\n window.examSyncMutex.release()\n }\n },\n async syncExamProgress ({ getters, commit }) {\n try {\n /**\n * Data syncing is one of the few tasks where\n * we're _ever_ going to need a mutex in JS\n */\n await window.examSyncMutex.acquireAsync()\n\n if (!getters.isDirty) {\n return\n }\n\n const syncUnit = getters.syncUnit\n\n await saveExamProgress(syncUnit)\n\n commit('completeSync', syncUnit)\n } finally {\n window.examSyncMutex.release()\n }\n },\n async clearForLogout ({ commit, dispatch }) {\n await dispatch('saveUnsyncedExams')\n commit('setExam', null)\n },\n async repopulateForLogin ({ dispatch }) {\n await dispatch('loadUnsyncedExam')\n /**\n * Begin syncing any unsynced data in the background\n */\n dispatch('syncExamProgress')\n }\n}\n\nconst ExamStore = {\n state,\n getters,\n actions,\n mutations,\n namespaced\n}\n\nexport default ExamStore\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\nimport { Bookmark } from '@/api/bookmarks/model.js'\n\nasync function fetchBookmarkedQuestions (subscriptionId) {\n const res = await axios.get(\n `${apiBase}/Bookmark/BookmarkedQuestions/${subscriptionId}`,\n {\n withCredentials: true\n }\n )\n\n return res.data.map(bookmark => {\n return Bookmark.fromAPI(bookmark)\n })\n}\n\nexport default fetchBookmarkedQuestions\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\n\nasync function bookmarkQuestion ({ questionId, tags, note, examId }) {\n const data = {\n examId,\n note,\n tagNames: tags,\n questionId\n }\n await axios.post(\n `${apiBase}/Bookmark/BookmarkQuestion`,\n data,\n {\n withCredentials: true,\n responseType: 'text'\n }\n )\n}\n\nexport default bookmarkQuestion\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\n\nasync function updateBookmark ({ bookmarkId, tagNames, note }) {\n const data = {\n note,\n tagNames,\n bookmarkId\n }\n await axios.put(\n `${apiBase}/Bookmark/Bookmark`,\n data,\n {\n withCredentials: true,\n responseType: 'text'\n }\n )\n}\n\nexport default updateBookmark\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\n\nasync function removeBookmark (bookmarkId) {\n await axios.delete(\n `${apiBase}/Bookmark/Bookmark/${bookmarkId}`,\n {\n withCredentials: true,\n responseType: 'text'\n }\n )\n}\n\nexport default removeBookmark\n","import fetchBookmarkedQuestions from '@/api/bookmarks/fetchBookmarkedQuestions.js'\nimport bookmarkQuestion from '@/api/bookmarks/bookmarkQuestion.js'\nimport updateBookmark from '@/api/bookmarks/updateBookmark.js'\nimport removeBookmark from '@/api/bookmarks/removeBookmark.js'\nimport { Bookmark } from '@/api/bookmarks/model.js'\n\nconst namespaced = true\n\nconst state = {\n bookmarkedQuestions: []\n}\n\nconst getters = {\n getBookmarks (state) {\n return state.bookmarkedQuestions.map(bookmark => new Bookmark(bookmark))\n },\n allTags (_, getters) {\n const tags = getters.getBookmarks.reduce((acc, cur) => [...acc, ...cur.tags], [])\n\n return [...new Set(tags)]\n },\n sortedTags (_, getters) {\n const tags = getters.getBookmarks.reduce((acc, cur) => [...acc, ...cur.tags], [])\n const tagFreqs = []\n\n for (const tag of getters.allTags) {\n const count = tags.filter(t => t === tag).length\n\n tagFreqs.push({ tag, count })\n }\n\n // Sort by count and then alphabetically\n tagFreqs.sort((lhs, rhs) => (rhs.count - lhs.count) * 10000 + lhs.tag.localeCompare(rhs.tag))\n\n return tagFreqs.map(tf => tf.tag)\n }\n}\n\nconst mutations = {\n setQuestions (state, questions) {\n state.bookmarkedQuestions = questions\n },\n removeBookmarkedQuestion (state, bookmarkId) {\n state.bookmarkedQuestions = state.bookmarkedQuestions.filter(bookmark => bookmark.id !== bookmarkId)\n },\n updateBookmarkedQuestion (state, { bookmarkId, tagNames, note }) {\n state.bookmarkedQuestions = state.bookmarkedQuestions.map(bookmark => {\n return bookmark.id === bookmarkId ? { ...bookmark, note: note, tags: tagNames } : bookmark\n })\n }\n}\n\nconst actions = {\n async addBookmark (_, data) {\n await bookmarkQuestion(data)\n },\n async updateBookmark ({ commit }, data) {\n await updateBookmark(data)\n commit('updateBookmarkedQuestion', data)\n },\n async removeBookmark ({ commit }, bookmarkId) {\n await removeBookmark(bookmarkId)\n commit('removeBookmarkedQuestion', bookmarkId)\n },\n async fetchBookmarkedQuestions ({ commit }, data) {\n const questions = await fetchBookmarkedQuestions(data)\n commit('setQuestions', questions)\n }\n}\n\nconst BookmarksStore = {\n state,\n getters,\n actions,\n mutations,\n namespaced\n}\n\nexport default BookmarksStore\n","const AnnexureType = {\n UNKNOWN: 0,\n PDF: 1,\n IMAGE: 2\n}\n\nexport class AnnexureBuilder {\n constructor (presets) {\n this.annexure = { ...presets }\n }\n\n loadHTMLResponse (res) {\n this.annexure.data = res.data\n this.annexure.mimetype = res.headers['content-type'].trim()\n\n return this\n }\n\n build () {\n return new Annexure(this.annexure)\n }\n}\n\nclass Annexure {\n constructor (raw) {\n this.id = raw.id\n this.name = raw.name\n this.mimetype = raw.mimetype\n this.rawdata = raw.data\n }\n\n get type () {\n switch (true) {\n case (/^(x-)?application\\/pdf$/i.test(this.mimetype)):\n return AnnexureType.PDF\n case (/^image\\//i.test(this.mimetype)):\n return AnnexureType.IMAGE\n default:\n return AnnexureType.UNKNOWN\n }\n }\n\n get isPdf () {\n return this.type === AnnexureType.PDF\n }\n\n get isImage () {\n return this.type === AnnexureType.IMAGE\n }\n\n get isUnknown () {\n return this.type === AnnexureType.UNKNOWN\n }\n\n get data () {\n switch (this.type) {\n case AnnexureType.PDF:\n return {\n data: new Uint8Array(this.rawdata)\n }\n case AnnexureType.IMAGE:\n return this.dataUrl\n case AnnexureType.UNKNOWN:\n return new Uint8Array(this.rawdata)\n }\n }\n\n get dataUrl () {\n const base64 = btoa(Uint8ToString(new Uint8Array(this.rawdata)))\n\n return `data:${this.mimetype};base64,${base64}`\n }\n}\n\nfunction Uint8ToString (u8a) {\n const CHUNK_SZ = 0x8000\n const c = []\n\n for (var i = 0; i < u8a.length; i += CHUNK_SZ) {\n c.push(String.fromCharCode(...u8a.subarray(i, i + CHUNK_SZ)))\n }\n\n return c.join('')\n}\n\nexport default Annexure\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\nimport { AnnexureBuilder } from './model'\n\nasync function fetchAnnexure ({ id, name }) {\n const data = {\n annexureID: id\n }\n\n const res = await axios.post(\n `${apiBase}/Exam/Annexure`,\n data,\n {\n withCredentials: true,\n responseType: 'arraybuffer'\n }\n )\n\n return new AnnexureBuilder({ id, name }).loadHTMLResponse(res).build()\n}\n\nexport default fetchAnnexure\n","import fetchAnnexure from '@/api/annexures/fetchAnnexure'\n\nconst namespaced = true\n\nconst actions = {\n async fetchAnnexure ({ commit }, { id, name }) {\n const annexure = await fetchAnnexure({ id, name })\n\n commit('storeAnnexure', annexure)\n\n return annexure\n }\n}\n\nconst mutations = {\n storeAnnexure (state, annexure) {\n // TODO: Cache this somewhere, it can't go in local storage.\n }\n}\n\nexport default {\n namespaced,\n mutations,\n actions\n}\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\n\nexport function getPaymentProviders () {\n return axios.get(\n `${apiBase}/PaymentProvider/GetPaymentProviders`,\n {\n withCredentials: true\n }\n )\n .then(res => res.data.map(obj => {\n return {\n id: obj.id,\n providerName: obj.providerName,\n locale: obj.providerLocale,\n providerDescription: obj.providerDescription,\n isDefault: obj.isDefault,\n currency: obj.currency\n }\n }))\n}\n","import { getPaymentProviders } from '@/api/payment/Providers'\n\nconst namespaced = true\n\nconst state = {\n providers: []\n}\n\nconst getters = {\n providers (state) {\n return state.providers\n }\n}\n\nconst mutations = {\n storeProviders (state, providers) {\n state.providers = providers\n }\n}\n\nconst actions = {\n async fetchProviders ({ commit }) {\n const providers = await getPaymentProviders()\n commit('storeProviders', providers)\n return providers\n }\n}\n\nexport default {\n namespaced,\n state,\n getters,\n mutations,\n actions\n}\n","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport auth from './modules/auth'\nimport messages from './modules/messages'\nimport cart from './modules/cart'\nimport subscriptions from './modules/subscriptions'\nimport exam from './modules/exam'\nimport bookmarks from './modules/bookmarks'\nimport createPersistedState from 'vuex-persistedstate'\nimport annexures from './modules/annexures'\nimport paymentProviders from './modules/paymentProviders'\n\nVue.use(Vuex)\n\nexport default new Vuex.Store({\n modules: {\n auth,\n messages,\n subscriptions,\n cart,\n exam,\n bookmarks,\n annexures,\n paymentProviders\n },\n plugins: [\n createPersistedState()\n ]\n})\n","import store from '@/store'\n\nexport default (to, from, next) => {\n const requireUnauthenticated = to.matched.some(record => record.meta.requireUnauthenticated)\n const allowAnonymous = to.matched.some(record => record.meta.allowAnonymous)\n\n if (store.getters['auth/isAuthenticated']) {\n if (requireUnauthenticated) {\n next('/')\n } else {\n next()\n }\n\n return\n }\n\n if (requireUnauthenticated || allowAnonymous) {\n next()\n return\n }\n\n next({ name: 'Login', params: { redirect: to } })\n}\n","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport Dashboard from '@/views/admin/Dashboard/Dashboard.vue'\nimport Subscriptions from '@/views/student/Subscriptions'\nimport Login from '@/views/auth/Login'\nimport Logout from '@/views/auth/Logout'\nimport ForgotPassword from '@/views/auth/ForgotPassword'\nimport ResetPassword from '@/views/auth/ResetPassword'\nimport Register from '@/views/auth/Register'\nimport Cart from '@/views/student/Cart'\nimport CustomExam from '@/views/student/CustomExam'\nimport ExamResults from '@/views/student/ExamResults'\nimport MockExam from '@/views/student/MockExam'\nimport ExamQuestion from '@/views/student/ExamQuestion'\nimport BookmarkedQuestions from '@/views/student/BookmarkedQuestions'\nimport PaymentSuccess from '@/views/payment/PaymentSuccess'\nimport PaymentFailure from '@/views/payment/PaymentFailure'\nimport PaymentProviders from '@/views/payment/PaymentProviders'\nimport PaymentDetails from '@/views/payment/PaymentDetails'\nimport ExamHistory from '@/views/student/ExamHistory'\nimport Contact from '@/views/student/Contact'\nimport SendVerification from '@/views/auth/SendVerification'\nimport Verify from '@/views/auth/Verify'\nimport store from '@/store'\nimport authGuards from './AuthGuards'\nimport { AnswerDisplay, SubmissionType } from '@/api/exams/model'\n\nVue.use(VueRouter)\n\nconst routes = [\n {\n path: '/',\n name: 'Root',\n redirect: () => {\n const authenticated = store.getters['auth/isAuthenticated']\n return {\n name: authenticated ? 'Dashboard' : 'Login'\n }\n }\n },\n {\n path: '/login',\n name: 'Login',\n component: Login,\n props: true,\n meta: {\n requireUnauthenticated: true\n }\n },\n {\n path: '/logout',\n name: 'Logout',\n component: Logout\n },\n {\n path: '/forgot-password',\n name: 'ForgotPassword',\n component: ForgotPassword,\n meta: {\n requireUnauthenticated: true\n }\n },\n {\n path: '/send-verification',\n name: 'SendVerification',\n component: SendVerification,\n props: true,\n meta: {\n requireUnauthenticated: true\n }\n },\n {\n path: '/verify',\n name: 'Verify',\n component: Verify,\n props: (route) => ({ token: route.query.token }),\n meta: {\n requireUnauthenticated: true\n }\n },\n {\n path: '/reset-password/:token',\n name: 'ResetPassword',\n component: ResetPassword,\n meta: {\n requireUnauthenticated: true\n },\n props: true\n },\n {\n path: '/register',\n name: 'Register',\n component: Register,\n meta: {\n requireUnauthenticated: true\n }\n },\n {\n path: '/subscriptions',\n name: 'Subscriptions',\n component: Subscriptions,\n meta: {\n allowAnonymous: true\n }\n },\n {\n path: '/dashboard',\n name: 'Dashboard',\n component: Dashboard\n },\n {\n path: '/cart',\n name: 'Cart',\n component: Cart,\n meta: {\n allowAnonymous: true\n }\n },\n {\n path: '/payment/providers',\n name: 'PaymentProviders',\n component: PaymentProviders,\n meta: {\n allowAnonymous: true\n }\n },\n {\n path: '/payment/details',\n name: 'PaymentDetails',\n component: PaymentDetails,\n meta: {\n allowAnonymous: true\n }\n },\n {\n path: '/exam-setup/custom',\n name: 'CustomExam',\n component: CustomExam\n },\n {\n path: '/exam-setup/mock',\n name: 'MockExam',\n component: MockExam\n },\n {\n path: '/exam/results',\n name: 'ExamResults',\n component: ExamResults\n },\n {\n path: '/exam/question/:number',\n name: 'ExamQuestion',\n props: true,\n component: ExamQuestion\n },\n {\n path: '/exam/history',\n name: 'ExamHistory',\n component: ExamHistory\n },\n {\n path: '/exam/start',\n name: 'StartExam',\n redirect: {\n name: 'ExamQuestion',\n params: {\n number: '1',\n setStartTime: true\n }\n }\n },\n {\n path: '/exam/create',\n redirect: to => {\n const debugExamOverrides = {}\n\n if (to.query.submit && to.query.submit.toLowerCase() === 'auto') {\n debugExamOverrides.submissionType = SubmissionType.AUTO\n }\n\n if (to.query.ad && to.query.ad.toLowerCase() === 'end') {\n debugExamOverrides.answerDisplay = AnswerDisplay.AT_THE_END\n }\n\n if (to.query.passmark) {\n debugExamOverrides.passMark = parseInt(to.query.passmark)\n }\n\n if (to.query.count) {\n debugExamOverrides.questionCount = parseInt(to.query.count)\n }\n\n return {\n name: 'ExamQuestion',\n params: {\n number: '1',\n setStartTime: true,\n createDebugData: true,\n debugExamOverrides\n },\n query: {}\n }\n }\n },\n {\n path: '/questions/bookmarked',\n name: 'BookmarkedQuestions',\n props: true,\n component: BookmarkedQuestions\n },\n {\n path: '/payment/success',\n name: 'PaymentSuccess',\n component: PaymentSuccess\n },\n {\n path: '/payment/failed',\n name: 'PaymentFailure',\n component: PaymentFailure\n },\n {\n path: '/contact',\n name: 'Contact',\n component: Contact,\n beforeEnter (to, from, next) {\n window.open('http://questionbank.co.za/index.php/contact-us', '_blank')\n }\n }\n]\n\nconst router = new VueRouter({\n mode: 'history',\n base: '/',\n routes,\n scrollBehavior: () => ({ x: 0, y: 0 })\n})\n\nrouter.beforeEach(authGuards)\n\nexport default router\n","import 'material-design-icons-iconfont/dist/material-design-icons.css'\nimport Vue from 'vue'\nimport Vuetify from 'vuetify/lib/framework'\nimport '@/styles/global.scss'\n\nVue.use(Vuetify)\n\nexport default new Vuetify({\n icons: {\n iconfont: 'md',\n values: {\n dropdown: 'keyboard_arrow_down'\n }\n },\n theme: {\n themes: {\n light: {\n primary: '#1a488e',\n secondary: '#ffbb00',\n accent: '#8c9eff',\n error: '#d50000',\n disabled: '#d2d7dd',\n info: '#d2d7dd',\n 'disabled-light': '#f1f3f5'\n }\n }\n }\n})\n","import axios from 'axios'\nimport apiBase from '@/api/BaseUrl'\n\nfunction notLogoutOrRetry (err) {\n return err.config &&\n !err.config.__isRetryRequest &&\n err.config.url.toLowerCase() !== `${apiBase}/Disconnect/Logout`.toLowerCase()\n}\n\nfunction is401 (err) {\n return err.response && err.response.status === 401\n}\n\nfunction notAuthScreen (vm) {\n if (!vm || !vm.$route || !vm.$route.meta) {\n return true\n }\n\n return !(vm.$route.meta.requireUnauthenticated || vm.$route.name === 'Logout')\n}\n\nexport default {\n created: function () {\n axios.interceptors.response.use(\n undefined,\n async err => {\n if (is401(err) && notAuthScreen(this) && notLogoutOrRetry(err)) {\n // If the user gets an Unauthorized, logout and redirect to login page\n try {\n await this.$store.dispatch('auth/logout')\n } finally {\n this.$router.push({\n name: 'Login',\n params: {\n redirect: {\n ...this.$route\n }\n }\n })\n }\n }\n\n throw err\n }\n )\n }\n}\n","import Vue from 'vue'\nimport App from './App.vue'\nimport './registerServiceWorker'\nimport router from './router'\nimport store from './store'\nimport vuetify from './plugins/vuetify'\nimport Vuelidate from 'vuelidate'\nimport logoutUnauthorized from '@/mixins/logoutUnauthorized'\n\nVue.use(Vuelidate)\n\nVue.config.productionTip = false\n\nnew Vue({\n router,\n store,\n vuetify,\n mixins: [logoutUnauthorized],\n render: h => h(App)\n}).$mount('#app')\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./QuestionPaginator.scss?vue&type=style&index=0&id=11cd749e&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./QuestionPaginator.scss?vue&type=style&index=0&id=11cd749e&scoped=true&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./BookmarkButton.scss?vue&type=style&index=0&id=2655f7da&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./BookmarkButton.scss?vue&type=style&index=0&id=2655f7da&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ExamHistory.scss?vue&type=style&index=0&id=5bace84f&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ExamHistory.scss?vue&type=style&index=0&id=5bace84f&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!./UserMenu.css?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!./UserMenu.css?vue&type=style&index=0&lang=css&\"","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=71b91194&scoped=true&lang=css&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=71b91194&scoped=true&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!./Subscriptions.css?vue&type=style&index=0&id=f3e8e94e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!./Subscriptions.css?vue&type=style&index=0&id=f3e8e94e&scoped=true&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./Cart.scss?vue&type=style&index=0&id=7e51c491&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./Cart.scss?vue&type=style&index=0&id=7e51c491&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ExamQuestion.scss?vue&type=style&index=0&id=c2fede36&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ExamQuestion.scss?vue&type=style&index=0&id=c2fede36&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!./MockExam.css?vue&type=style&index=0&id=5748ea91&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!./MockExam.css?vue&type=style&index=0&id=5748ea91&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/QB stack black.2da022e0.png\";","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ExamNavigator.scss?vue&type=style&index=0&id=5e652431&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ExamNavigator.scss?vue&type=style&index=0&id=5e652431&scoped=true&lang=scss&\"","module.exports = \"data:image/png;base64,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\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ExamResults.scss?vue&type=style&index=0&id=7dc9a74f&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ExamResults.scss?vue&type=style&index=0&id=7dc9a74f&scoped=true&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ExamResultsCard.scss?vue&type=style&index=0&id=91a7ba1e&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ExamResultsCard.scss?vue&type=style&index=0&id=91a7ba1e&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./Dashboard.scss?vue&type=style&index=0&id=f9b2cbce&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./Dashboard.scss?vue&type=style&index=0&id=f9b2cbce&scoped=true&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./CustomExam.scss?vue&type=style&index=0&id=51089411&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./CustomExam.scss?vue&type=style&index=0&id=51089411&scoped=true&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ExamSelector.scss?vue&type=style&index=0&id=56c5a82b&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./ExamSelector.scss?vue&type=style&index=0&id=56c5a82b&scoped=true&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./FilterSelect.scss?vue&type=style&index=0&id=4ef24383&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./FilterSelect.scss?vue&type=style&index=0&id=4ef24383&scoped=true&lang=scss&\""],"sourceRoot":""}