@tekdi/sunbird-quml-player
Version:
The QuML player library components are powered by Angular. This player is primarily designed to be used on Sunbird consumption platforms (mobile app, web portal, offline desktop app) to drive reusability and maintainability, hence reducing the redundant d
1 lines • 354 kB
Source Map (JSON)
{"version":3,"file":"tekdi-sunbird-quml-player.mjs","sources":["../../../projects/quml-library/src/lib/player-constants.ts","../../../projects/quml-library/src/lib/util-service.ts","../../../projects/quml-library/src/lib/quml-library.service.ts","../../../projects/quml-library/src/lib/quml-library.component.ts","../../../projects/quml-library/src/lib/pipes/safe-html/safe-html.pipe.ts","../../../projects/quml-library/src/lib/mcq-question/mcq-question.component.ts","../../../projects/quml-library/src/lib/mcq-question/mcq-question.component.html","../../../projects/quml-library/src/lib/telemetry-constants.ts","../../../projects/quml-library/src/lib/mcq-image-option/mcq-image-option.component.ts","../../../projects/quml-library/src/lib/mcq-image-option/mcq-image-option.component.html","../../../projects/quml-library/src/lib/mcq-option/mcq-option.component.ts","../../../projects/quml-library/src/lib/mcq-option/mcq-option.component.html","../../../projects/quml-library/src/lib/quml-popup/quml-popup.component.ts","../../../projects/quml-library/src/lib/quml-popup/quml-popup.component.html","../../../projects/quml-library/src/lib/mcq/mcq.component.ts","../../../projects/quml-library/src/lib/mcq/mcq.component.html","../../../projects/quml-library/src/lib/sa/sa.component.ts","../../../projects/quml-library/src/lib/sa/sa.component.html","../../../projects/quml-library/src/lib/quml-question-cursor.service.ts","../../../projects/quml-library/src/lib/services/transformation-service/transformation.service.ts","../../../projects/quml-library/src/lib/services/viewer-service/viewer-service.ts","../../../projects/quml-library/src/lib/icon/ans/ans.component.ts","../../../projects/quml-library/src/lib/icon/ans/ans.component.html","../../../projects/quml-library/src/lib/icon/durationtimer/durationtimer.component.ts","../../../projects/quml-library/src/lib/icon/durationtimer/durationtimer.component.html","../../../projects/quml-library/src/lib/progress-indicators/progress-indicators.component.ts","../../../projects/quml-library/src/lib/progress-indicators/progress-indicators.component.html","../../../projects/quml-library/src/lib/header/header.component.ts","../../../projects/quml-library/src/lib/header/header.component.html","../../../projects/quml-library/src/lib/icon/zoom-in/zoom-in.component.ts","../../../projects/quml-library/src/lib/icon/zoom-in/zoom-in.component.html","../../../projects/quml-library/src/lib/icon/star/star.component.ts","../../../projects/quml-library/src/lib/icon/star/star.component.html","../../../projects/quml-library/src/lib/icon/previous/previous.component.ts","../../../projects/quml-library/src/lib/icon/previous/previous.component.html","../../../projects/quml-library/src/lib/icon/next/next.component.ts","../../../projects/quml-library/src/lib/icon/next/next.component.html","../../../projects/quml-library/src/lib/icon/bookmark/bookmark.component.ts","../../../projects/quml-library/src/lib/icon/bookmark/bookmark.component.html","../../../projects/quml-library/src/lib/icon/hint/hint.component.ts","../../../projects/quml-library/src/lib/icon/hint/hint.component.html","../../../projects/quml-library/src/lib/icon/share/share.component.ts","../../../projects/quml-library/src/lib/icon/share/share.component.html","../../../projects/quml-library/src/lib/icon/correct/correct.component.ts","../../../projects/quml-library/src/lib/icon/correct/correct.component.html","../../../projects/quml-library/src/lib/scoreboard/scoreboard.component.ts","../../../projects/quml-library/src/lib/scoreboard/scoreboard.component.html","../../../projects/quml-library/src/lib/icon/timer/timer.component.ts","../../../projects/quml-library/src/lib/icon/timer/timer.component.html","../../../projects/quml-library/src/lib/icon/content/content.component.ts","../../../projects/quml-library/src/lib/icon/content/content.component.html","../../../projects/quml-library/src/lib/icon/startpagestaricon/startpagestaricon.component.ts","../../../projects/quml-library/src/lib/icon/startpagestaricon/startpagestaricon.component.html","../../../projects/quml-library/src/lib/startpage/startpage.component.ts","../../../projects/quml-library/src/lib/startpage/startpage.component.html","../../../projects/quml-library/src/lib/icon/previous-active/previous-active.component.ts","../../../projects/quml-library/src/lib/icon/previous-active/previous-active.component.html","../../../projects/quml-library/src/lib/icon/next-active/next-active.component.ts","../../../projects/quml-library/src/lib/icon/next-active/next-active.component.html","../../../projects/quml-library/src/lib/alert/alert.component.ts","../../../projects/quml-library/src/lib/alert/alert.component.html","../../../projects/quml-library/src/lib/icon/close/close.component.ts","../../../projects/quml-library/src/lib/icon/close/close.component.html","../../../projects/quml-library/src/lib/mcq-solutions/mcq-solutions.component.ts","../../../projects/quml-library/src/lib/mcq-solutions/mcq-solutions.component.html","../../../projects/quml-library/src/lib/icon/audio/audio.component.ts","../../../projects/quml-library/src/lib/icon/audio/audio.component.html","../../../projects/quml-library/src/lib/icon/wrong/wrong.component.ts","../../../projects/quml-library/src/lib/icon/wrong/wrong.component.html","../../../projects/quml-library/src/lib/icon/menu/menu.component.ts","../../../projects/quml-library/src/lib/icon/menu/menu.component.html","../../../projects/quml-library/src/lib/section-player/section-player.component.ts","../../../projects/quml-library/src/lib/section-player/section-player.component.html","../../../projects/quml-library/src/lib/main-player/main-player.component.ts","../../../projects/quml-library/src/lib/main-player/main-player.component.html","../../../projects/quml-library/src/lib/quml-library.module.ts","../../../projects/quml-library/src/public_api.ts","../../../projects/quml-library/src/tekdi-sunbird-quml-player.ts"],"sourcesContent":["export const DEFAULT_SCORE: number = 1;\n\nexport const WARNING_TIME_CONFIG = {\n DEFAULT_TIME : 75,\n SHOW_TIMER: true\n}\n\nexport const COMPATABILITY_LEVEL: number = 6;","import { Injectable } from '@angular/core';\nimport * as _ from 'lodash-es';\nimport { DEFAULT_SCORE } from './player-constants'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UtilService {\n\n public uniqueId(length = 32) {\n let result = '';\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n }\n\n public getTimeSpentText(pdfPlayerStartTime) {\n const duration = new Date().getTime() - pdfPlayerStartTime;\n const minutes = Math.floor(duration / 60000);\n const seconds = Number(((duration % 60000) / 1000).toFixed(0));\n return (minutes + ':' + (seconds < 10 ? '0' : '') + seconds);\n }\n\n public getKeyValue(keys) {\n let key = keys.find((k) => {\n return k.includes('response');\n })\n return key;\n }\n\n public getMultiselectScore(options, responseDeclaration, isShuffleQuestions, outcomeDeclaration) {\n let key: any = this.getKeyValue(Object.keys(responseDeclaration));\n const selectedOptionValue = options.map(option => option.value);\n let score;\n let mapping = responseDeclaration[key]['mapping'];\n if (isShuffleQuestions) {\n score = DEFAULT_SCORE;\n const scoreForEachMapping = _.round(1/mapping.length, 2);\n _.forEach(mapping, (map) => {\n map.score = scoreForEachMapping;\n })\n } else {\n score = _.get(outcomeDeclaration, 'maxScore.defaultValue');\n }\n let correctValues = responseDeclaration[key].correctResponse.value.map((ele) => Number(ele));\n if (_.isEqual(correctValues.sort(), selectedOptionValue.sort())) { \n return score;\n } else if (!_.isEqual(correctValues.sort(), selectedOptionValue.sort())) {\n let sum = 0;\n _.forEach(mapping, (map, index) => {\n if(_.includes(selectedOptionValue, map.value)) {\n sum += (map?.score ? map.score : 0);\n }\n });\n return sum;\n }\n }\n\n hasDuplicates(selectedOptions, option) {\n let duplicate = selectedOptions.find((o) => { return o.value === option.value });\n return duplicate;\n }\n\n getQuestionType(questions, currentIndex) {\n let index = currentIndex - 1 === -1 ? 0 : currentIndex - 1;\n return questions[index]['qType'];\n\n }\n\n canGo(progressBarClass) {\n let attemptedParams = ['correct', 'wrong', 'attempted'];\n return attemptedParams.includes(progressBarClass);\n }\n\n sumObjectsByKey(...objects) {\n return objects.reduce((accumulator, currentValue) => {\n for (const key in currentValue) {\n /* istanbul ignore else */\n if (currentValue.hasOwnProperty(key)) {\n accumulator[key] = (accumulator[key] || 0) + currentValue[key];\n }\n }\n return accumulator;\n }, {});\n }\n\n scrollParentToChild(parent: HTMLElement, child: HTMLElement) {\n const isMobilePortrait = window.matchMedia(\"(max-width: 480px)\").matches;\n const parentRect = parent.getBoundingClientRect();\n const childRect = child.getBoundingClientRect();\n\n if (isMobilePortrait) {\n parent.scrollLeft = childRect.left + parent.scrollLeft - parentRect.left;\n } else {\n parent.scrollTop = (childRect.top + parent.scrollTop) - parentRect.top;\n }\n }\n\n // fetches the element using its tag video and sets the value of the “src” attribute of source element and poster attribute.\n updateSourceOfVideoElement(baseUrl: string, media: any[], identifier: string) {\n const elements = Array.from(document.getElementsByTagName('video') as HTMLCollectionOf<Element>);\n _.forEach(elements, (element: HTMLElement) => {\n const videoId = element.getAttribute('data-asset-variable');\n if(!videoId) { return; }\n const asset = _.filter(media, ['id', videoId]);\n const posterSrc = element.getAttribute('poster');\n \n if(!_.isEmpty(asset) && posterSrc) {\n element['poster'] = baseUrl ? `${baseUrl}/${identifier}/${posterSrc}` : asset[0].baseUrl + posterSrc;\n } \n\n if(!_.isEmpty(asset)) {\n const sourceElement = Array.from(element.getElementsByTagName('source') as HTMLCollectionOf<Element>);\n _.forEach(sourceElement, (element: HTMLElement) => {\n const sourceSrc = element.getAttribute('src');\n element['src'] = baseUrl ? `${baseUrl}/${identifier}/${sourceSrc}` : asset[0].baseUrl + sourceSrc;\n });\n }\n });\n } \n\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { CsTelemetryModule } from '@project-sunbird/client-services/telemetry';\nimport { Context, IParentConfig, QumlPlayerConfig } from './quml-library-interface';\nimport { UtilService } from './util-service';\nimport * as _ from 'lodash-es';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class QumlLibraryService {\n duration: number;\n channel: string;\n config: QumlPlayerConfig;\n isSectionsAvailable = false;\n telemetryEvent = new EventEmitter<any>();\n private context: Context;\n private telemetryObject: any;\n private contentSessionId: string;\n private playSessionId: string;\n private pdata: any;\n private sid: string;\n private uid: string;\n private rollup: any;\n\n constructor(public utilService: UtilService) { }\n\n async initializeTelemetry(config: QumlPlayerConfig, parentConfig: IParentConfig) {\n if (!_.has(config, 'context') || _.isEmpty(config, 'context')) {\n return;\n }\n this.duration = new Date().getTime();\n this.context = config?.context;\n this.contentSessionId = this.utilService.uniqueId();\n this.playSessionId = this.utilService.uniqueId();\n this.channel = this.context.channel || '';\n this.pdata = this.context.pdata;\n this.sid = this.context.sid;\n this.uid = this.context.uid;\n this.rollup = this.context.contextRollup;\n this.config = config;\n this.isSectionsAvailable = parentConfig?.isSectionsAvailable;\n\n /* istanbul ignore else */\n if (!CsTelemetryModule.instance.isInitialised && this.context) {\n const telemetryConfig = {\n pdata: this.context.pdata,\n env: 'contentplayer',\n channel: this.context.channel,\n did: this.context.did,\n authtoken: this.context.authToken || '',\n uid: this.context.uid || '',\n sid: this.context.sid,\n batchsize: 20,\n mode: this.context.mode,\n host: this.context.host || '',\n endpoint: this.context.endpoint || '/data/v3/telemetry',\n tags: this.context.tags,\n cdata: (this.context.cdata || []).concat([\n { id: this.contentSessionId, type: 'ContentSession' },\n { id: this.playSessionId, type: 'PlaySession' },\n { id: '2.0', type: 'PlayerVersion' }\n ])\n };\n await CsTelemetryModule.instance.init({});\n CsTelemetryModule.instance.telemetryService.initTelemetry(\n {\n config: telemetryConfig,\n userOrgDetails: {}\n }\n );\n }\n\n this.telemetryObject = {\n id: parentConfig.identifier,\n type: 'Content',\n ver: parentConfig?.metadata?.pkgVersion ? parentConfig.metadata.pkgVersion.toString() : '',\n rollup: this.context?.objectRollup || {}\n };\n }\n\n public startAssesEvent(assesEvent) {\n if (!_.isEmpty(this.context)) {\n CsTelemetryModule.instance.telemetryService.raiseAssesTelemetry(\n assesEvent,\n this.getEventOptions()\n );\n }\n }\n\n public start(duration) {\n if (!_.isEmpty(this.context)) {\n CsTelemetryModule.instance.telemetryService.raiseStartTelemetry(\n {\n options: this.getEventOptions(),\n edata: { type: 'content', mode: 'play', pageid: '', duration: Number((duration / 1e3).toFixed(2)) }\n }\n );\n }\n }\n\n public response(identifier, version, type, option) {\n if (!_.isEmpty(this.context)) {\n const responseEvent = {\n target: {\n id: identifier,\n ver: version,\n type: type\n },\n type: 'CHOOSE',\n values: [{\n option\n }]\n };\n CsTelemetryModule.instance.telemetryService.raiseResponseTelemetry(\n responseEvent,\n this.getEventOptions()\n );\n }\n }\n\n public summary(eData) {\n if (!_.isEmpty(this.context)) {\n CsTelemetryModule.instance.telemetryService.raiseSummaryTelemetry(\n eData,\n this.getEventOptions()\n );\n }\n }\n\n public end(duration, currentQuestionIndex, totalNoofQuestions, visitedQuestions, endpageseen, score) {\n if (!_.isEmpty(this.context)) {\n const durationSec = Number((duration / 1e3).toFixed(2));\n CsTelemetryModule.instance.telemetryService.raiseEndTelemetry({\n edata: {\n type: 'content',\n mode: 'play',\n pageid: 'sunbird-player-Endpage',\n summary: [\n {\n progress: Number(((currentQuestionIndex / totalNoofQuestions) * 100).toFixed(0))\n },\n {\n totalNoofQuestions: totalNoofQuestions\n },\n {\n visitedQuestions: visitedQuestions,\n },\n {\n endpageseen\n },\n {\n score\n },\n ],\n duration: durationSec\n },\n options: this.getEventOptions()\n });\n }\n }\n\n public interact(id, currentPage, currentQuestionDetails?) {\n if (!_.isEmpty(this.context)) {\n CsTelemetryModule.instance.telemetryService.raiseInteractTelemetry({\n options: this.getEventOptions(),\n edata: { type: 'TOUCH', subtype: '', id, pageid: currentPage + '' }\n });\n }\n }\n\n\n\n public heartBeat(data) {\n if (!_.isEmpty(this.context)) {\n CsTelemetryModule.instance.playerTelemetryService.onHeartBeatEvent(data, {});\n }\n }\n\n public impression(currentPage) {\n if (!_.isEmpty(this.context)) {\n CsTelemetryModule.instance.telemetryService.raiseImpressionTelemetry({\n options: this.getEventOptions(),\n edata: { type: 'workflow', subtype: '', pageid: currentPage + '', uri: '' }\n });\n }\n }\n\n public error(error: Error, edata?: { err: string, errtype: string }) {\n if (!_.isEmpty(this.context)) {\n CsTelemetryModule.instance.telemetryService.raiseErrorTelemetry({\n options: this.getEventOptions(),\n edata: {\n err: 'LOAD',\n errtype: 'content',\n stacktrace: (error?.toString()) || ''\n }\n });\n }\n }\n\n public getEventOptions() {\n const options = {\n object: this.telemetryObject,\n context: {\n channel: this.channel || '',\n pdata: this.pdata,\n env: 'contentplayer',\n sid: this.sid,\n uid: this.uid,\n cdata: (this.context?.cdata || []).concat([{ id: this.contentSessionId, type: 'ContentSession' },\n { id: this.playSessionId, type: 'PlaySession' },\n { id: '2.0', type: 'PlayerVersion' }]),\n rollup: this.rollup || {}\n }\n };\n\n /* istanbul ignore else */\n if (this.isSectionsAvailable) {\n options.context.cdata.push({ id: this.config.metadata.identifier, type: 'SectionId' });\n }\n\n return options;\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-quml-library',\n template: `\n <p>\n quml-library works!\n </p>\n `,\n styles: []\n})\nexport class QumlLibraryComponent {}","import { DomSanitizer } from '@angular/platform-browser'\nimport { PipeTransform, Pipe } from \"@angular/core\";\n\n@Pipe({\n name: 'safeHtml'\n}) export class SafeHtmlPipe implements PipeTransform {\n constructor(private sanitized: DomSanitizer) { }\n transform(value) {\n return this.sanitized.bypassSecurityTrustHtml(value);\n }\n}","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'quml-mcq-question',\n templateUrl: './mcq-question.component.html',\n styleUrls: ['./mcq-question.component.scss']\n})\nexport class McqQuestionComponent {\n\n @Input() mcqQuestion: any;\n @Output() showPopup = new EventEmitter();\n @Input() layout: any;\n\n showQumlPopup() {\n this.showPopup.emit();\n }\n\n}\n","<div [ngClass]=\"mcqQuestion.includes('img') ? 'quml-mcq-image-questions' : 'quml-mcq-questions'\">\n <div class=\"quml-question\" #question [innerHTML]=\"mcqQuestion | safeHtml\">\n </div>\n</div>","export enum pageId {\n startPage = 'START_PAGE',\n submitPage = 'SUBMIT_PAGE',\n endPage = 'END_PAGE',\n shortAnswer = 'SHORT_ANSWER'\n}\n\n\nexport enum eventName {\n pageScrolled = 'PAGE_SCROLLED',\n viewHint = 'VIEW_HINT',\n showAnswer = 'SHOW_ANSWER_CLICKED',\n nextClicked = 'NEXT_CLICKED',\n prevClicked = 'PREV_CLICKED',\n progressBar = 'PROGRESSBAR_CLICKED',\n replayClicked = 'REPLAY_CLICKED',\n startPageLoaded = 'START_PAGE_LOADED',\n viewSolutionClicked = 'VIEW_SOLUTION_CLICKED',\n solutionClosed = 'SOLUTION_CLOSED',\n closedFeedBack = 'CLOSED_FEEDBACK',\n tryAgain = 'TRY_AGAIN',\n optionClicked = 'OPTION_CLICKED',\n scoreBoardSubmitClicked = 'SCORE_BOARD_SUBMIT_CLICKED',\n scoreBoardReviewClicked = 'SCORE_BOARD_REVIEW_CLICKED',\n endPageExitClicked = 'EXIT',\n zoomClicked = 'ZOOM_CLICKED',\n zoomInClicked = 'ZOOM_IN_CLICKED',\n zoomOutClicked = 'ZOOM_OUT_CLICKED',\n zoomCloseClicked = 'ZOOM_CLOSE_CLICKED',\n goToQuestion = 'GO_TO_QUESTION',\n nextContentPlay = 'NEXT_CONTENT_PLAY',\n deviceRotationClicked = 'DEVICE_ROTATION_CLICKED',\n progressIndicatorPopupClosed = 'PROGRESS_INDICATOR_POPUP_CLOSED',\n progressIndicatorPopupOpened = 'PROGRESS_INDICATOR_POPUP_OPENED',\n}\n\nexport enum TelemetryType {\n interact = 'interact',\n impression = 'impression',\n}\n\n\nexport enum MimeType {\n questionSet = 'application/vnd.sunbird.questionset'\n}\n\nexport enum Cardinality {\n single = 'single',\n multiple = 'multiple'\n}\n\nexport enum QuestionType {\n mcq = 'MCQ',\n sa = 'SA'\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'quml-mcq-image-option',\n templateUrl: './mcq-image-option.component.html',\n styleUrls: ['./mcq-image-option.component.scss']\n})\nexport class McqImageOptionComponent {\n showQumlPopup = false;\n qumlPopupImage: any;\n @Input() mcqQuestion: any;\n @Input() solutions: any;\n @Input() mcqOption: any;\n @Input() cardinality: string;\n @Output() imgOptionSelected = new EventEmitter();\n\n showPopup(image) {\n this.showQumlPopup = true;\n this.qumlPopupImage = image;\n }\n\n optionClicked(event, mcqOption) {\n this.imgOptionSelected.emit(\n {\n name: 'optionSelect',\n option: mcqOption,\n solutions: this.solutions\n });\n }\n\n onEnter(event: KeyboardEvent, mcqOption) {\n /* istanbul ignore else */\n if (event.key === 'Enter') {\n event.stopPropagation();\n this.optionClicked(event, mcqOption);\n }\n }\n\n openPopup(optionHtml) {\n this.showQumlPopup = true;\n this.qumlPopupImage = optionHtml;\n }\n\n closePopUp() {\n this.showQumlPopup = false;\n }\n}\n","<div class=\"quml-mcq-option-card\" tabindex=\"0\" (keydown)=\"mcqOption.isDisabled ? null: onEnter($event, mcqOption)\"\n(click)=\"mcqOption.isDisabled ? null: optionClicked($event, mcqOption)\"\n[ngClass]=\"mcqOption?.selected ? 'quml-mcq-option-card quml-option--selected' : 'quml-mcq-option-card'\">\n <div class=\"option\" *ngIf=\"mcqOption\" [innerHTML]=\"mcqOption?.label | safeHtml\"\n [ngClass]=\"{'disabled': mcqOption.isDisabled === true}\"></div>\n <div class=\"container\">\n <input type=\"radio\" *ngIf=\"cardinality==='single'\" name=\"radio\" [checked]=\"mcqOption.selected\" id=\"option-checkbox\" tabindex=\"-1\" (click)=\"optionClicked($event, mcqOption)\">\n <input type=\"checkbox\" *ngIf=\"cardinality==='multiple'\" name=\"checkbox\" [checked]=\"mcqOption.selected\" id=\"option-checkbox\"\n tabindex=\"-1\" [disabled]=\"mcqOption?.isDisabled\">\n <span [ngClass]=\"{'radiomark': cardinality==='single','checkmark':cardinality==='multiple'}\" tabindex=\"-1\"></span>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter, OnChanges } from '@angular/core';\nimport { Cardinality } from '../telemetry-constants';\nimport { UtilService } from '../util-service';\nimport * as _ from 'lodash-es';\n\n@Component({\n selector: 'quml-mcq-option',\n templateUrl: './mcq-option.component.html',\n styleUrls: ['./mcq-option.component.scss']\n})\nexport class McqOptionComponent implements OnChanges {\n\n @Input() shuffleOptions: boolean\n @Input() mcqOptions: any;\n @Input() solutions: any;\n @Input() layout: any;\n @Input() cardinality: string;\n @Input() numberOfCorrectOptions: number;\n @Output() showPopup = new EventEmitter();\n @Output() optionSelected = new EventEmitter<any>();\n selectedOption = [];\n @Input() replayed: boolean;\n @Input() tryAgain?: boolean;\n\n constructor(\n public utilService: UtilService\n ) { }\n\n ngOnChanges() {\n /* istanbul ignore else */\n \n this.mcqOptions = this.shuffleOptions ? _.shuffle(this.mcqOptions) : this.mcqOptions;\n \n if (this.replayed) {\n this.selectedOption = [];\n this.mcqOptions.forEach((ele) => {\n ele.selected = false;\n ele['isDisabled'] = false;\n });\n this.selectedOption = [];\n }\n /* istanbul ignore else */\n if (this.tryAgain) {\n this.unselectOption();\n }\n }\n\n unselectOption() {\n this.mcqOptions.forEach((ele) => {\n ele.selected = false;\n ele['isDisabled'] = false;\n });\n this.selectedOption = [];\n this.optionSelected.emit(\n {\n name: 'optionSelect',\n option: this.selectedOption,\n cardinality: this.cardinality,\n solutions: this.solutions\n }\n );\n }\n\n onOptionSelect(event: MouseEvent | KeyboardEvent, mcqOption, index?: number) {\n if (this.cardinality === Cardinality.single) {\n if (index !== undefined) {\n this.mcqOptions.forEach((ele) => ele.selected = false);\n this.mcqOptions[index].selected = this.mcqOptions[index].label === mcqOption.label\n } else {\n this.mcqOptions.forEach(element => {\n element.selected = element.label === mcqOption.label;\n });\n }\n }\n else if (this.cardinality === Cardinality.multiple) {\n this.mcqOptions.forEach(element => {\n if (element.label === mcqOption.label) {\n if(this.utilService.hasDuplicates(this.selectedOption, mcqOption)) {\n element.selected = false;\n this.selectedOption = _.filter(this.selectedOption, (item) => item.label !== mcqOption.label);\n } else {\n element.selected = true;\n this.selectedOption.push(mcqOption);\n }\n }\n });\n\n if (this.selectedOption.length === this.numberOfCorrectOptions) {\n // disable extra options\n this.selectedOption.forEach(selectedEelement => {\n this.mcqOptions.forEach(element => {\n if ((element.label != selectedEelement.label) && !element.selected) {\n element['isDisabled'] = true;\n } else {\n element['isDisabled'] = false;\n }\n })\n });\n } else {\n this.mcqOptions.forEach(element => {\n element['isDisabled'] = false;\n });\n }\n }\n\n this.optionSelected.emit(\n {\n name: 'optionSelect',\n option: this.cardinality === 'single' ? mcqOption : this.selectedOption,\n cardinality: this.cardinality,\n solutions: this.solutions\n }\n );\n }\n\n showQumlPopup() {\n this.showPopup.emit();\n }\n\n onEnter(event: KeyboardEvent, mcqOption, index: number) {\n /* istanbul ignore else */\n if (event.key === 'Enter') {\n event.stopPropagation();\n this.onOptionSelect(event, mcqOption, index);\n }\n }\n}\n","<div class=\"quml-mcq-options\" role=\"radiogroup\" *ngIf=\"layout === 'DEFAULT' || layout === 'IMAGEQOPTION'\">\n <div class=\"quml-option-card\" tabindex=\"0\" role=\"checkbox\" [attr.aria-checked]=\"mcqOption.selected\" aria-labelledby=\"option-checkbox\" *ngFor=\"let mcqOption of mcqOptions; let index = index\"\n (keydown)=\"mcqOption.isDisabled ? null: onEnter($event, mcqOption, index)\"\n (click)=\"mcqOption.isDisabled ? null: onOptionSelect($event, mcqOption, index)\"\n [ngClass]=\"{'disabled': mcqOption.isDisabled === true}\">\n <div class=\"quml-option\" [ngClass]=\"mcqOption.selected ? 'quml-option quml-option--selected' : 'quml-option'\">\n <div class=\"option\" [innerHTML]=\"mcqOption.label | safeHtml\"></div>\n <div class=\"container\">\n <input type=\"radio\" *ngIf=\"cardinality==='single'\" name=\"radio\" [checked]=\"mcqOption.selected\"\n id=\"option-checkbox\" tabindex=\"-1\">\n <input type=\"checkbox\" *ngIf=\"cardinality==='multiple'\" name=\"checkbox\" [checked]=\"mcqOption.selected\"\n id=\"option-checkbox\" tabindex=\"-1\" [disabled]=\"mcqOption?.isDisabled\">\n <span [ngClass]=\"{'radiomark': cardinality==='single','checkmark':cardinality==='multiple'}\" tabindex=\"-1\"></span>\n </div>\n </div>\n </div>\n</div>\n<div *ngIf=\"layout === 'IMAGEGRID'\">\n <div class=\"qumlImageOption\">\n <div class=\"wrapper\">\n <div *ngFor=\"let mcqOption of mcqOptions; let index = index\">\n <quml-mcq-image-option (imgOptionSelected)=\"onOptionSelect($event, mcqOption, index)\" [mcqOption]='mcqOption' [cardinality]=\"cardinality\"></quml-mcq-image-option>\n </div>\n </div>\n </div>\n\n</div>\n<div *ngIf=\"layout === 'IMAGEQAGRID'\">\n <div class=\"qumlOption-imageQaGrid\">\n <div class=\"wrapper\">\n <div *ngFor=\"let mcqOption of mcqOptions; let index = index\">\n <quml-mcq-image-option (imgOptionSelected)=\"onOptionSelect($event, mcqOption, index)\" [mcqOption]='mcqOption' [cardinality]=\"cardinality\"></quml-mcq-image-option>\n </div>\n </div>\n </div>\n</div>\n<div *ngIf=\"layout === 'MULTIIMAGEGRID'\">\n <div class=\"qumlImageOption\">\n <div class=\"wrapper\">\n <div *ngFor=\"let mcqOption of mcqOptions; let index = index\">\n <quml-mcq-image-option (imgOptionSelected)=\"onOptionSelect($event, mcqOption, index)\" [mcqOption]='mcqOption' [cardinality]=\"cardinality\"></quml-mcq-image-option>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter, AfterViewInit } from '@angular/core';\n\n@Component({\n selector: 'quml-quml-popup',\n templateUrl: './quml-popup.component.html',\n styleUrls: ['./quml-popup.component.scss']\n})\nexport class QumlPopupComponent implements AfterViewInit {\n @Input() image;\n @Input() htmlTag: any;\n @Output() popUpClose = new EventEmitter();\n\n ngAfterViewInit() {\n const htmlTagElement = document.getElementById('htmlTag');\n if (htmlTagElement) {\n htmlTagElement.getElementsByTagName('img')[0].style.width = '70%';\n }\n }\n\n closePopup() {\n this.popUpClose.emit();\n }\n\n}\n","<div class=\"quml-popup\">\n <div class=\"quml-popup-icon\" (click)=\"closePopup()\">✕</div>\n <img *ngIf=\"!htmlTag\" src={{image}} alt=\"Image\">\n</div>\n\n<div *ngIf=\"htmlTag\" class=\"htmlTag\" id=\"htmlTag\" [innerHtml]=\"htmlTag | safeHtml\"></div>\n\n","import { Component, OnInit, Input, SecurityContext, Output, EventEmitter, AfterViewInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { katex } from 'katex';\nimport { UtilService } from '../util-service';\nimport * as _ from 'lodash-es';\n\ndeclare const katex: any;\n\n@Component({\n selector: 'quml-mcq',\n templateUrl: './mcq.component.html',\n styleUrls: ['./mcq.component.scss', '../quml-library.component.scss'],\n\n})\nexport class McqComponent implements OnInit, AfterViewInit {\n @Input() shuffleOptions?: boolean;\n @Input() question?: any;\n @Input() identifier: any;\n @Input() layout?: string;\n @Input() replayed: boolean;\n @Input() tryAgain?: boolean;\n @Output() componentLoaded = new EventEmitter<any>();\n @Output() answerChanged = new EventEmitter<any>();\n @Output() optionSelected = new EventEmitter<number>();\n\n mcqQuestion: any;\n options: any;\n mcqOptions: any[] = [];\n selectedOptionTarget: any;\n showQumlPopup = false;\n solutions: Array<[]>;\n cardinality: string;\n numberOfCorrectOptions: number;\n \n\n constructor(\n public domSanitizer: DomSanitizer,\n public utilService: UtilService) {\n }\n\n ngOnInit() {\n this.numberOfCorrectOptions = _.castArray(this.question.responseDeclaration.response1.correctResponse.value).length;\n if (this.question?.solutions) {\n this.solutions = this.question.solutions;\n }\n let key: any = this.utilService.getKeyValue(Object.keys(this.question.responseDeclaration));\n this.cardinality = this.question.responseDeclaration[key]['cardinality'];\n\n switch(this.question.templateId) {\n case \"mcq-vertical\": \n this.layout = 'DEFAULT';\n break;\n case \"mcq-horizontal\": \n this.layout = 'IMAGEGRID';\n break;\n case \"mcq-vertical-split\":\n this.layout = 'IMAGEQAGRID';\n break;\n case \"mcq-grid-split\":\n this.layout = 'MULTIIMAGEGRID';\n break;\n default:\n console.error(\"Invalid templateId\");\n }\n\n this.renderLatex();\n this.mcqQuestion = this.domSanitizer.sanitize(SecurityContext.HTML,\n this.domSanitizer.bypassSecurityTrustHtml(this.question.body));\n this.options = this.question.interactions[key].options;\n this.initOptions();\n }\n\n ngAfterViewInit() {\n const el = document.getElementsByClassName('mcq-options');\n if (el != null && el.length > 0) {\n el[0].remove();\n }\n }\n\n initOptions() {\n for (let j = 0; j < this.options.length; j++) {\n let imageUrl;\n if (this.options[j].url) {\n imageUrl = this.options[j].url;\n }\n const option = this.options[j];\n const optionValue = option.value.body;\n const optionHtml = this.domSanitizer.sanitize(SecurityContext.HTML, this.domSanitizer.bypassSecurityTrustHtml(optionValue));\n const optionToBePushed: any = {};\n optionToBePushed.index = j;\n optionToBePushed.optionHtml = optionHtml;\n optionToBePushed.selected = false;\n optionToBePushed.url = imageUrl;\n this.mcqOptions.push(optionToBePushed);\n }\n }\n\n renderLatex() {\n setTimeout(() => {\n this.replaceLatexText();\n }, 100);\n }\n\n replaceLatexText() {\n const questionElement = document.getElementById(this.identifier);\n if (questionElement != null) {\n const mathTextDivs = questionElement.getElementsByClassName('mathText');\n for (let i = 0; i < mathTextDivs.length; i++) {\n const mathExp = mathTextDivs[i];\n const textToRender = mathExp.innerHTML;\n katex.render(textToRender, mathExp, { displayMode: false, output: 'html', throwOnError: true });\n }\n }\n }\n\n getSelectedOptionAndResult(optionObj) {\n this.optionSelected.emit(optionObj);\n }\n\n showPopup() {\n this.showQumlPopup = true;\n }\n\n closePopUp() {\n this.showQumlPopup = false;\n }\n}\n","<!-- Default Layout-->\n<div class=\"quml-mcq layoutDefault\" *ngIf=\"layout=='DEFAULT'\">\n <div class=\"quml-mcq--question mb-16\">\n <quml-mcq-question [mcqQuestion]=\"mcqQuestion\" [layout]=\"layout\" (showPopup)=\"showPopup()\"></quml-mcq-question>\n </div>\n <div class=\"quml-mcq--option\">\n <quml-mcq-option [mcqOptions]=\"options\" [replayed]=\"replayed\" [cardinality]=\"cardinality\"\n [solutions]=\"solutions\" [layout]=\"layout\" [numberOfCorrectOptions]=\"numberOfCorrectOptions\" (optionSelected)=\"getSelectedOptionAndResult($event)\"\n (showPopup)=\"showPopup()\" [tryAgain]=\"tryAgain\"></quml-mcq-option>\n </div>\n</div>\n<!-- End of Default Layout-->\n<!--Image Grid Layout-->\n<div class=\"quml-mcq layoutImageGrid-mcq-horizontal\" *ngIf=\"layout=='IMAGEGRID'\">\n <div class=\"quml-mcq--question mb-16\">\n <quml-mcq-question [mcqQuestion]=\"mcqQuestion\" [layout]=\"layout\"></quml-mcq-question>\n </div>\n <div class=\"quml-mcq--option\">\n <quml-mcq-option [mcqOptions]=\"options\" [replayed]=\"replayed\" [cardinality]=\"cardinality\" [layout]=\"layout\"\n [solutions]=\"solutions\" (optionSelected)=\"getSelectedOptionAndResult($event)\" [tryAgain]=\"tryAgain\"\n [numberOfCorrectOptions]=\"numberOfCorrectOptions\">\n </quml-mcq-option>\n </div>\n</div>\n<!--End of Grid Layout-->\n<!--Image Multi Grid Layout-->\n<div class=\"quml-mcq layoutMultiImageGrid\" *ngIf=\"layout==='MULTIIMAGEGRID'\">\n <div class=\"imageqa-wrapper image-grid\">\n <div class=\"quml-mcq--question mb-16\">\n <quml-mcq-question [mcqQuestion]=\"mcqQuestion\" [layout]=\"layout\"></quml-mcq-question>\n </div>\n <div class=\"quml-mcq--option\">\n <quml-mcq-option [shuffleOptions]=\"shuffleOptions\" [mcqOptions]=\"options\" [replayed]=\"replayed\" [cardinality]=\"cardinality\"\n [solutions]=\"solutions\" (optionSelected)=\"getSelectedOptionAndResult($event)\" [layout]=\"layout\" [tryAgain]=\"tryAgain\"\n [numberOfCorrectOptions]=\"numberOfCorrectOptions\">\n </quml-mcq-option>\n </div>\n </div>\n</div>\n<!--End of Image Multi Grid Layout-->\n<!--Image QA Grid Layout-->\n<div class=\"quml-mcq layoutImageQAGridMCQ-vSplit\" *ngIf=\"layout=='IMAGEQAGRID'\">\n <div class=\"imageqa-wrapper\">\n <div class=\"quml-mcq--question mb-16\">\n <quml-mcq-question [mcqQuestion]=\"mcqQuestion\" [layout]=\"layout\"></quml-mcq-question>\n </div>\n <div class=\"quml-mcq--option\">\n <quml-mcq-option [mcqOptions]=\"options\" [replayed]=\"replayed\" [cardinality]=\"cardinality\"\n [solutions]=\"solutions\" (optionSelected)=\"getSelectedOptionAndResult($event)\" [layout]=\"layout\"\n [tryAgain]=\"tryAgain\" [numberOfCorrectOptions]=\"numberOfCorrectOptions\">\n </quml-mcq-option>\n </div>\n </div>\n</div>\n<!--End of Image QA Grid Layout-->\n<!--Image QOption Layout-->\n<div class=\"quml-mcq layoutImageOption\" *ngIf=\"layout=='IMAGEQOPTION'\">\n <div class=\"columnBlock questionBlock quml-mcq--question mb-16\">\n <quml-mcq-question [mcqQuestion]=\"mcqQuestion\" [layout]=\"layout\"></quml-mcq-question>\n </div>\n <div class=\"columnBlock quml-mcq--option\">\n <quml-mcq-option [mcqOptions]=\"options\" [replayed]=\"replayed\" [cardinality]=\"cardinality\"\n [solutions]=\"solutions\" [layout]=\"layout\" (optionSelected)=\"getSelectedOptionAndResult($event)\"\n [tryAgain]=\"tryAgain\" [numberOfCorrectOptions]=\"numberOfCorrectOptions\">\n </quml-mcq-option>\n </div>\n</div>\n\n<!--End of Image QOption Layout-->\n<quml-quml-popup *ngIf=\"showQumlPopup\" (popUpClose)=\"closePopUp()\"></quml-quml-popup>\n","import { AfterViewInit, Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport * as _ from 'lodash-es';\nimport { UtilService } from '../util-service';\n\n@Component({\n selector: 'quml-sa',\n templateUrl: './sa.component.html',\n styleUrls: ['./sa.component.scss', '../quml-library.component.scss']\n})\nexport class SaComponent implements OnInit, OnChanges, AfterViewInit {\n\n @Input() questions?: any;\n @Input() replayed?: boolean;\n @Input() baseUrl: string;\n @Output() componentLoaded = new EventEmitter<any>();\n @Output() showAnswerClicked = new EventEmitter<any>();\n\n showAnswer = false;\n solutions: any;\n question: any;\n answer: any;\n constructor( public domSanitizer: DomSanitizer, private utilService: UtilService ) { }\n\n ngOnInit() {\n this.question = this.questions?.body;\n this.answer = this.questions?.answer;\n this.solutions = _.isEmpty(this.questions?.solutions) ? null : this.questions?.solutions;\n }\n\n ngAfterViewInit() {\n this.handleKeyboardAccessibility();\n this.utilService.updateSourceOfVideoElement(this.baseUrl, this.questions?.media, this.questions.identifier);\n }\n\n ngOnChanges() {\n if (this.replayed) {\n this.showAnswer = false;\n } else if (this.questions?.isAnswerShown) {\n this.showAnswer = true;\n }\n }\n\n showAnswerToUser() {\n this.showAnswer = true;\n this.showAnswerClicked.emit({\n showAnswer: this.showAnswer\n });\n }\n\n onEnter(event) {\n /* istanbul ignore else */\n if (event.keyCode === 13) {\n event.stopPropagation();\n this.showAnswerToUser();\n }\n }\n\n handleKeyboardAccessibility() {\n const elements = Array.from(document.getElementsByClassName('option-body'));\n elements.forEach((element: HTMLElement) => {\n /* istanbul ignore else */\n if (element.offsetHeight) {\n const children = Array.from(element.querySelectorAll(\"a\"));\n children.forEach((child: HTMLElement) => {\n child.setAttribute('tabindex', '-1');\n });\n }\n });\n }\n}\n","<div class=\"quml-sa\">\n <div class=\"question-container\" tabindex=\"0\">\n <div class=\"sa-title\">Question</div>\n <div class=\"question\" [innerHTML]=\"question | safeHtml\"></div>\n </div>\n <div class=\"sa-button-container\">\n <div *ngIf=\"!showAnswer\" id=\"submit-answer\" tabindex=\"0\" class=\"sb-btn sb-btn-primary sb-btn-normal sb-btn-radius\"\n aria-label=\"Show Answer\" (click)=\"showAnswerToUser()\" (keydown)=\"onEnter($event)\">Show Answer</div>\n </div>\n <div id=\"answer-container\" [ngClass]=\"showAnswer ? 'option-container-blurred-out': 'option-container-blurred'\">\n <div class=\"sa-title\" [attr.aria-hidden]=\"showAnswer ? null : true\">Answer</div>\n <div class=\"option-body\" [innerHTML]=\"answer | safeHtml\" [attr.aria-hidden]=\"showAnswer ? null : true\"></div>\n <ng-container *ngIf=\"solutions\"> \n <div class=\"sa-title\" [attr.aria-hidden]=\"showAnswer ? null : true\">Solution</div>\n <div class=\"solutions\" *ngFor=\"let solution of solutions | keyvalue\" [attr.aria-hidden]=\"showAnswer ? null : true\">\n <div [innerHTML]=\"solution.value | safeHtml\" tabindex=\"-1\"></div>\n </div>\n </ng-container>\n </div>\n</div>","import { Observable } from 'rxjs';\nimport { Question } from './quml-library-interface';\n\n\nexport abstract class QuestionCursor {\n\n abstract getQuestions(identifiers: string[], parentId?: string): Observable<Question>;\n abstract getQuestion(identifier: string): Observable<Question>;\n abstract getQuestionSet(identifier: string): Observable<any>;\n abstract getAllQuestionSet(identifiers: string[]): Observable<any>;\n\n}","import { Injectable } from '@angular/core';\nimport * as _ from 'lodash-es';\nimport { v4 as uuidv4 } from 'uuid';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TransformationService {\n\n getTransformedHierarchy(questionsetMetadata) {\n let updatedMetadata = this.getTransformedQuestionSetMetadata(questionsetMetadata);\n if (!_.isEmpty(updatedMetadata, 'children')) {\n updatedMetadata.children = this.transformChildren(updatedMetadata.children);\n }\n return updatedMetadata;\n }\n\n getTransformedQuestionSetMetadata(data) {\n data = this.processMaxScoreProperty(data);\n data = _.omit(data, 'version');\n data = this.processInstructions(data);\n data = this.processBloomsLevel(data);\n data = this.processBooleanProps(data);\n data = this.processTimeLimits(data);\n return data;\n }\n\n processMaxScoreProperty(data) {\n if (_.has(data, 'maxScore')) {\n const outcomeDeclaration = {\n maxScore: {\n cardinality: 'single',\n type: 'integer',\n defaultValue: data.maxScore\n }\n }\n data = _.omit(data, 'maxScore');\n data['outcomeDeclaration'] = outcomeDeclaration;\n }\n\n return data;\n }\n\n processInstructions(data) {\n if (_.has(data, 'instructions.default')) {\n data.instructions = data.instructions.default;\n }\n return data;\n }\n\n processBloomsLevel(data) {\n if (_.has(data, 'bloomsLevel')) {\n const bLevel = _.get(data, 'bloomsLevel');\n _.unset(data, 'bloomsLevel');\n _.set(data, 'complexityLevel', [bLevel.toString()]);\n }\n return data;\n }\n\n processBooleanProps(data: any) {\n const booleanProps = [\"showSolutions\", \"showFeedback\", \"showHints\", \"showTimer\"];\n const getBooleanValue = (str: any) => str === \"Yes\";\n\n _.forEach(booleanProps, (prop: any) => {\n if (_.has(data, prop)) {\n const propVal = data[prop];\n data[prop] = getBooleanValue(propVal);\n }\n });\n\n return data;\n }\n\n processTimeLimits(data) {\n let parsedTimeLimits;\n if (_.has(data, 'timeLimits') && !_.isNull(data.timeLimits)) {\n if (_.isString(data.timeLimits)) {\n parsedTimeLimits = JSON.parse(data.timeLimits);\n } else {\n parsedTimeLimits = data.timeLimits;\n }\n\n data.timeLimits = {\n questionSet: {\n min: 0,\n max: parsedTimeLimits?.maxTime ? _.toInteger(parsedTimeLimits.maxTime) : 0\n }\n };\n }\n\n return data;\n}\n\n transformChildren(children: any) {\n const self = this;\n if (!_.isEmpty(children)) {\n _.forEach(children, (ch) => {\n if (_.has(ch, 'version')) {\n _.unset(ch, 'version');\n }\n ch = this.processBloomsLevel(ch);\n ch = this.processBooleanProps(ch);\n if (_.get(ch, 'mimeType').toLowerCase() === 'application/vnd.sunbird.questionset') {\n ch = this.processTimeLimits(ch);\n ch = this.processInstructions(ch);\n const nestedChildren = _.get(ch, 'children', []);\n self.transformChildren(nestedChildren);\n }\n });\n }\n return children;\n }\n\n getTransformedQuestionMetadata(data) {\n if (_.has(data, 'questions')) {\n _.forEach(data.questions, (question) => {\n if (!_.has(question, 'qumlVersion') || question.qumlVersion != 1.1) {\n question = this.processResponseDeclaration(question);\n question = this.processInteractions(question);\n question = this.processSolutions(question);\n question = this.processInstructions(question);\n question = this.processHints(question);\n question = this.processBloomsLevel(question);\n question = this.processBooleanProps(question);\n const ans = this.getAnswer(question)\n if (!_.isEmpty(ans)) {\n _.set(question, 'answer', ans);\n }\n }\n });\n return data;\n }\n }\n\n processResponseDeclaration(data) {\n let outcomeDeclaration = {};\n if (_.isEqual(_.toLower(data.primaryCategory), 'subjective question')) {\n data = this.processSubjectiveResponseDeclaration(data);\n } else {\n let responseDeclaration = data.responseDeclaration;\n if (!_.isEmpty(responseDeclaration)) {\n for (const key in responseDeclaration) {\n const responseData = responseDeclaration[key];\n const maxScore = {\n cardinality: _.get(responseData, 'cardinality', ''),\n type: _.get(responseData, 'type', ''),\n defaultValue: _.get(responseData, 'maxScore'),\n };\n delete responseData.maxScore;\n outcomeDeclaration['maxScore'] = maxScore;\n const correctResp = responseData.correctResponse || {};\n delete correctResp.outcomes;\n if (_.toLower(_.get(responseData, 'type')) === 'integer' && _.toLower(_.get(responseData, 'cardinality')) === 'single') {\n const correctKey = correctResp.value;\n correctResp.value = parseInt(correctKey, 10);\n }\n responseData.mapping = this.getUpdatedMapping(responseData);\n responseDeclaration[key] = responseData;\n }\n data.responseDeclaration = responseDeclaration;\n data['outcomeDeclaration'] = outcomeDeclaration;\n }\n }\n return data;\n }\n\n processSubjectiveResponseDeclaration(subjectiveMetadata) {\n let outcomeDeclaration = {};\n delete subjectiveMetadata.responseDeclaration;\n delete subjectiveMetadata.interactions;\n if (_.has(subjectiveMetadata, 'maxScore') && !_.isNull(subjectiveMetadata.maxScore)) {\n outcomeDeclaration = {\n maxScore: {\n cardinality: 'single',\n type: 'integer',\n defaultValue: subjectiveMetadata.maxScore\n }\n };\n subjectiveMetadata.outcomeDeclaration = outcomeDeclaration;\n return subjectiveMetadata;\n }\n return subjectiveMetadata;\n }\n\n getUpdatedMapping(responseData) {\n const mappingData = responseData.mapping || [];\n if (!_.isEmpty(mappingData)) {\n const updatedMapping = mappingData.map(mapData => ({\n value: mapData.response,\n score: _.get(mapData, 'outcomes.score', 0),\n }));\n return updatedMapping;\n }\n return mappingData;\n }\n\n processInteractions(data: any) {\n const interactions: any = _.get(data, 'interactions', {});\n if (!_.isEmpty(interactions)) {\n const validation: any = _.get(interactions, 'validation', {});\n const resp1: any = _.get(interactions, 'response1', {});\n const resValData: any = _.get(interactions, 'response1.validation', {});\n if (!_.isEmpty(resValData)) {\n _.forEach(resValData, (value, key) => {\n _.set(validation, key, value)\n });\n } else {\n _.set(resp1, 'validation', validation);\n }\n _.unset(interactions, 'validation');\n _.set(interactions, 'response1', resp1);\n _.set(data, 'interactions', interactions);\n }\n return data;\n }\n\n processSolutions(data) {\n const solutions = _.get(data, 'solutions', []);\n\n if (!_.isEmpty(solutions) && _.isArray(solutions)) {\n const updatedSolutions = _.reduce(solutions, (result, solution) => {\n result[_.get(solution, 'id')] = this.getSolutionString(solution, _.get(data, 'media', []));\n return result;\n }, {});\n\n _.set(data, 'solutions', updatedSolutions);\n }\n return data;\n }\n\n getSolutionString(data, media) {\n if (!_.isEmpty(data)) {\n const type = _.get(data, 'type', '');\n\n switch (type) {\n case 'html': {\n return _.get(data, 'value', '');\n }\n\n case 'video': {\n const value = _.get(data, 'value', '');\n const mediaData = _.find(media, (item) => _.isEqual(value, _.get(item, 'id', '')));\n\n if (mediaData) {\n const src = _.get(mediaData, 'src', '');\n const thumbnail = _.get(mediaData, 'thumbnail', '');\n\n const solutionStr = `<video data-asset-variable=\"media_identifier\" width=\"400\" controls poster=\"thumbnail_url\">\n <source type=\"video/mp4\" src=\"media_source_url\">\n <source type=\"video/webm\" src=\"media_source_url\">\n </video>`.replace('media_identifier', value).replace('thumbnail_url', thumbnail).replace(/media_source_url/g, src);\n\n return solutionStr;\n }\n return '';\n }\n\n default: {\n return '';\n }\n }\n }\n\n return '';\n }\n\n processHints(data) {\n const hints = _.get(data, 'hints', []);\n let updatedHints = {};\n if (!_.isEmpty(hints)) {\n _.forEach(hints, (hint) => {\n _.merge(updatedHints, {[uuidv4()]: hint});\n })\n\n _.set(data, 'hints', updatedHints);\n }\n return data;\n }\n\n getAnswer(data) {\n const interactions = _.get(data, 'interactions', {});\n\n if (!_.isEqual(_.get(data, 'primaryCategory'), 'Subjective Question') && !_.isEmpty(interactions)) {\n const responseData = _.get(data, 'responseDeclaration.response1', {});\n const options = _.get(interactions, 'response1.options', {});\n let formatedAnswer = '';\n\n let answerData = _.get(responseData, 'cardinality');\n\n if (answerData === 'single') {\n const correctResp = _.get(_.get(responseData, 'correctResponse', {}), 'value', 0);\n const label = options[correctResp];\n\n formatedAnswer = `<div class=\"answer-container\"><div class=\"answer-body\">${label.label}</div></div>`;\n } else {\n const correctResp = _.get(responseData, 'correctResponse.value');\n let singleAns = '<div class=\"answer-body\">answer_html</div>';\n const answerList = [];\n _.forEach(options, (option) => {\n if (_.includes(correctResp, option.value,)) {\n const replAns = _.replace(singleAns, 'answer_html', _.get(option, 'label'))\n answerList.push(replAns)\n }\n })\n formatedAnswer = `<div class=\"answer-container\">${answerList.join('')}</div>`;\n }\n return formatedAnswer;\n }\n else {\n return _.get(data, 'answer', '');\n }\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { IParentConfig, QumlPlayerConfig } from '../../quml-library-interface';\nimport { QumlLibraryService } from '../../quml-library.service';\nimport { UtilService } from '../../util-service';\nimport { TransformationService } from '../transformation-service/transformation.service';\nimport { eventName, TelemetryType } from '../../telemetry-constants';\nimport { QuestionCursor } from '../../quml-question-cursor.service';\nimport * as _ from 'lodash-es';\nimport { forkJoin, of } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ViewerService {\n public qumlPlayerEvent = new EventEmitter<any>();\n public qumlQuestionEvent = new EventEmitter<any>();\n zoom: string;\n rotation: number;\n qumlPlayerStartTime: number;\n qumlPlayerLastPageTime: number;\n totalNumberOfQuestions: number;\n currentQuestionIndex: number;\n contentName: string;\n src: string;\n userName: string;\n version = '1.0';\n timeSpent = '0:0';\n metaData: any;\n loadingProgress: number;\n endPageSeen: boolean;\n identifiers: any;\n threshold: number;\n isAvailableLocally = false;\n isSectionsAvailable = false;\n questionSetId: string;\n parentIdentifier: string;\n sectionQuestions = [];\n sectionConfig:any;\n constructor(\n public qumlLibraryService: QumlLibraryService,\n public utilService: UtilService,\n public questionCursor: QuestionCursor,\n public transformationService: TransformationService\n ) { }\n\n initialize(config: QumlPlayerConfig, threshold: number, questionIds: string[], parentConfig: IParentConfig) {\n this.qumlLibraryService.initializeTelemetry(config, parentConfig);\n this.identifiers = _.cloneDeep(questionIds);\n this.parentIdentifier = config.metadata.identifier;\n this.threshold = threshold;\n this.rotation = 0;\n this.totalNumberOfQuestions = config.metadata.childNodes.length || 0;\n this.qumlPlayerStartTime = this.qumlPlayerLastPageTime = new Date().getTime();\n this.currentQuestionIndex = 1;\n this.contentName = config.metadata.name;\n this.isAvailableLocally = parentConfig.isAvailableLocally;\n this.isSectionsAvailable = parentConfig?.isSectionsAvailable;\n this.src = config.metadata.artifactUrl || '';\n this.questionSetId = config.metadata.identifier;\n\n /* istanbul ignore else */\n if (config?.context?.userData) {\n const firstName = config.context.userData?.firstName ?? '';\n const lastName = config.context.userData?.lastName ?? '';\n this.userName = firstName + ' ' + lastName;\n }\n this.metaData = {\n pagesHistory: [],\n totalPages: 0,\n duration: 0,\n rotation: [],\n progressBar: [],\n questions: [],\n questionIds: [],\n lastQuestionId: '',\n };\n this.loadingProgress = 0;\n this.endPageSeen = false;\n }\n\n raiseStartEvent(currentQuestionIndex) {\n this.currentQuestionIndex = currentQuestionIndex;\n const duration = new Date().getTime() - this.qumlPlayerStartTime;\n const startEvent: any = {\n eid: 'START',\n ver: this.version,\n edata: {\n type: 'START',\n currentIndex: this.currentQuestionIndex,\n duration\n },\n metaData: this.metaData\n };\n\n this.qumlPlayerEvent.emit(startEvent);\n this.qumlPlayerLastPageTime = this.qumlPlayerStartTime = new Date().getTime();\n this.qumlLibraryService.start(duration);\n }\n\n raiseEndEvent(currentQuestionIndex, endPageSeen, score) {\n this.metaData.questions = this.sectionQuestions;\n const duration = new Date().getTime() - this.qumlPlayerStartTime;\n const endEvent: any = {\n eid: 'END',\n ver: this.version,\n edata: {\n type: 'END',\n currentPage: currentQuestionIndex,\n totalPages: this.totalNumberOfQuestions,\n duration\n },\n metaData: this.metaData\n };\n\n this.qumlPlayerEvent.emit(endEvent);\n this.timeSpent = this.utilService.getTimeSpentText(this.qumlPlayerStartTime);\n this.qumlLibraryService.end(duration, currentQuestionIndex, this.totalNumberOfQuestions, this.totalNumberOfQuestions, endPageSeen, score);\n }\n\n raiseHeartBeatEvent(type: string, telemetryType: string, pageId: number | string, nextContentId?: string) {\n const hearBeatEvent: any = {\n eid: 'HEARTBEAT',\n ver: this.version,\n edata: {\n type,\n questionIndex: this.currentQuestionIndex,\n },\n metaData: this.metaData\n };\n\n if (type === eventName.nextContentPlay && nextContentId) {\n hearBeatEvent.edata.nextContentId = nextContentId;\n }\n\n if (this.isSectionsAvailable) {\n hearBeatEvent.edata.sectionId = this.questionSetId;\n }\n\n this.qumlPlayerEvent.emit(hearBeatEvent);\n if (TelemetryType.interact === telemetryType) {\n this.qumlLibraryService.interact(type.toLowerCase(), pageId);\n } else if (TelemetryType.impression === telemetryType) {\n this.qumlLibraryService.impression(pageId);\n }\n\n }\n\n raiseAssesEvent(questionData, index: number, pass: string, score, resValues, duration: number) {\n const assessEvent = {\n item: questionData,\n index: index,\n pass: pass,\n score: score,\n resvalues: resValues,\n duration: duration\n }\n this.qumlPlayerEvent.emit(assessEvent);\n this.qumlLibraryService.startAssesEvent(assessEvent);\n }\n\n raiseResponseEvent(identifier, qType, optionSelected) {\n const responseEvent = {\n target: {\n id: identifier,\n ver: this.version,\n type: qType\n },\n values: [{\n optionSelected\n }]\n }\n this.qumlPlayerEvent.emit(responseEvent);\n this.qumlLibraryService.response(identifier, this.version, qType, optionSelected);\n }\n\n raiseSummaryEvent(currentQuestionIndex, endpageseen, score, summaryObj) {\n let timespent = new Date().getTime() - this.qumlPlayerStartTime;\n timespent = Number(((timespent % 60000) / 1000).toFixed(2))\n const eData = {\n type: \"content\",\n mode: \"play\",\n starttime: this.qumlPlayerStartTime,\n endtime: new Date().getTime(),\n timespent,\n pageviews: this.totalNumberOfQuestions,\n interactions: summaryObj.correct + summaryObj.wrong + summaryObj.partial,\n extra: [{\n id: \"progress\",\n value: ((currentQuestionIndex / this.totalNumberOfQuestions) * 100).toFixed(0).toString()\n }, {\n id: \"endpageseen\",\n value: endpageseen.toString()\n }, {\n id: \"score\",\n value: score.toString()\n }, {\n id: \"correct\",\n value: summaryObj.correct.toString()\n }, {\n id: \"incorrect\",\n value: summaryObj.wrong.toString()\n }, {\n id: \"partial\",\n value: summaryObj.partial.toString()\n }, {\n id: \"skipped\",\n value: summaryObj.skipped.toString()\n }]\n };\n const summaryEvent = {\n eid: 'QUML_SUMMARY',\n ver: this.version,\n edata: eData,\n metaData: this.metaData\n };\n this.qumlPlayerEvent.emit(summaryEvent);\n this.qumlLibraryService.summary(eData);\n }\n\n raiseExceptionLog(errorCode: string, errorType: string, stacktrace, traceId) {\n const exceptionLogEvent = {\n eid: \"ERROR\",\n edata: {\n err: errorCode,\n errtype: errorType,\n requestid: traceId || '',\n stacktrace: stacktrace || '',\n }\n }\n this.qumlPlayerEvent.emit(exceptionLogEvent)\n this.qumlLibraryService.error(stacktrace, { err: errorCode, errtype: errorType });\n }\n\n getSectionQuestionData(sectionChildren, questionIdArr) {\n const availableQuestions = [];\n let questionsIdNotHavingCompleteData = [];\n if (_.isEmpty(sectionChildren)) {\n questionsIdNotHavingCompleteData = questionIdArr;\n } else {\n const foundQuestions = sectionChildren.filter(child => questionIdArr.includes(child.identifier));\n for (const question of foundQuestions) {\n if (_.has(question, 'body')) {\n availableQuestions.push(question);\n } else {\n questionsIdNotHavingCompleteData.push(question.identifier);\n }\n }\n }\n\n if (!_.isEmpty(questionsIdNotHavingCompleteData)) {\n return this.fetchIncompleteQuestionsData(availableQuestions, questionsIdNotHavingCompleteData);\n } else {\n const allQuestions$ = of({ questions: availableQuestions, count: availableQuestions.length });\n return allQuestions$;\n }\n }\n\n fetchIncompleteQuestionsData(availableQuestions, questionsIdNotHavingCompleteData) {\n return this.questionCursor.getQuestions(questionsIdNotHavingCompleteData, this.parentIdentifier).pipe(\n switchMap((questionData: any) => {\n const fetchedQuestions = questionData.questions;\n const allQuestions = _.concat(availableQuestions, fetchedQuestions);\n return of({ questions: allQuestions, count: allQuestions.length });\n })\n );\n }\n\n\n getQuestions(currentIndex?: number, index?: number) {\n const sectionChildren = this.sectionConfig?.metadata?.children;\n let indentifersForQuestions;\n if (currentIndex !== undefined && index) {\n indentifersForQuestions = this.identifiers.splice(currentIndex, index);\n } else if (!currentIndex && !index) {\n indentifersForQuestions = this.identifiers.splice(0, this.threshold);\n }\n if (!_.isEmpty(indentifersForQuestions)) {\n let requests: any;\n const chunkArray = _.chunk(indentifersForQuestions, 10);\n _.forEach(chunkArray, (value) => {\n requests = this.getSectionQuestionData(sectionChildren, value)\n });\n forkJoin(requests).subscribe(questions => {\n _.forEach(questions, (value) => {\n const transformedquestionsList = this.transformationService.getTransformedQuestionMetadata(value);\n this.qumlQuestionEvent.emit(transformedquestionsList);\n });\n }, (error) => {\n this.qumlQuestionEvent.emit({\n error: error\n })\n });\n }\n }\n\n getQuestion() {\n const sectionChildren = this.sectionConfig?.metadata?.children;\n if (this.identifiers.length) {\n let questionIdentifier = this.identifiers.splice(0, this.threshold);\n const fetchedQuestion = _.find(sectionChildren, (question) => _.includes(questionIdentifier, question.identifier));\n\n if (_.has(fetchedQuestion, 'body')) {\n const fetchedQuestionData = {questions: [fetchedQuestion], count: 1 };\n const transformedquestionsList = this.transformationService.getTransformedQuestionMetadata(fetchedQuestionData);\n this.qumlQuestionEvent.emit(transformedquestionsList);\n } else {\n this.questionCursor.getQuestion(questionIdentifier[0]).subscribe((question) => {\n const fetchedQuestionData = question;\n const transformedquestionsList = this.transformationService.getTransformedQuestionMetadata(fetchedQuestionData);\n this.qumlQuestionEvent.emit(transformedquestionsList);\n }, (error) => {\n this.qumlQuestionEvent.emit({\n error: error\n });\n });\n }\n }\n }\n\n generateMaxAttemptEvents(currentattempt: number, maxLimitExceeded: boolean, isLastAttempt: boolean) {\n return {\n eid: 'exdata',\n ver: this.version,\n edata: {\n type: 'exdata',\n currentattempt,\n maxLimitExceeded,\n isLastAttempt\n },\n metaData: this.metaData\n };\n }\n\n updateSectionQuestions(id: string, questions) {\n const index = this.sectionQuestions.findIndex(section => section.id === id);\n if (index > -1) {\n this.sectionQuestions[index].questions = questions;\n } else {\n this.sectionQuestions.push({ id, questions });\n }\n }\n\n getSectionQuestions(id: string) {\n return this.sectionQuestions.find(section => section.id === id)?.questions || [];\n }\n\n pauseVideo() {\n const videoElements = Array.from(document.getElementsByTagName('video') as HTMLCollectionOf<Element>);\n videoElements.forEach((element: HTMLVideoElement) => element.pause());\n\n const audioElements = Array.from(document.getElementsByTagName('audio') as HTMLCollectionOf<Element>);\n audioElements.forEach((element: HTMLVideoElement) => element.pause());\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'quml-ans',\n templateUrl: './ans.component.html'\n})\nexport class AnsComponent {\n}\n","<svg tabindex=\"0\" width=\"25px\" height=\"25px\" viewBox=\"0 0 25 25\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>ans</title>\n <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"ans\">\n <circle id=\"Oval\" stroke=\"#979797\" cx=\"12.0235\" cy=\"12.0235\" r=\"11.5235\"></circle>\n <path d=\"M5.9515,14.5235 L6.3675,13.1635 L8.4475,13.1635 L8.8635,14.5235 L10.1675,14.5235 L8.1435,8.7875 L6.6635,8.7875 L4.6475,14.5235 L5.9515,14.5235 Z M8.1595,12.1475 L6.6715,12.1475 L7.0795,10.8195 C7.10083333,10.7608333 7.1315,10.6608333 7.1715,10.5195 C7.2115,10.3781667 7.25416667,10.2288333 7.2995,10.0715 C7.34483333,9.91416667 7.38083333,9.78216667 7.4075,9.6755 C7.43416667,9.78216667 7.46883333,9.9075 7.5115,10.0515 C7.55416667,10.1955 7.59683333,10.3368333 7.6395,10.4755 C7.68216667,10.6141667 7.71683333,10.7288333 7.7435,10.8195 L7.7435,10.8195 L8.1595,12.1475 Z M11.9835,14.5235 L11.9835,12.4675 C11.9835,12.0035 12.0501667,11.6475 12.1835,11.3995 C12.3168333,11.1515 12.5648333,11.0275 12.9275,11.0275 C13.1728333,11.0275 13.3515,11.1061667 13.4635,11.2635 C13.5755,11.4208333 13.6315,11.6568333 13.6315,11.9715 L13.6315,11.9715 L13.6315,14.5235 L14.8235,14.5235 L14.8235,11.6755 C14.8235,11.1155 14.6821667,10.7088333 14.3995,10.4555 C14.1168333,10.2021667 13.7408333,10.0755 13.2715,10.0755 C12.9995,10.0755 12.7421667,10.1261667 12.4995,10.2275 C12.2568333,10.3288333 12.0661667,10.4915 11.9275,10.7155 L11.9275,10.7155 L11.8635,10.7155 L11.7035,10.1555 L10.7915,10.1555 L10.7915,14.5235 L11.9835,14.5235 Z M17.2315,14.6035 C17.8501667,14.6035 18.3155,14.4848333 18.6275,14.2475 C18.9395,14.0101667 19.0955,13.6701667 19.0955,13.2275 C19.0955,12.9715 19.0461667,12.7608333 18.9475,12.5955 C18.8488333,12.4301667 18.7088333,12.2928333 18.5275,12.1835 C18.3461667,12.0741667 18.1301667,11.9688333 17.8795,11.8675 C17.6235,11.7608333 17.4301667,11.6755 17.2995,11.6115 C17.1688333,11.5475 17.0808333,11.4875 17.0355,11.4315 C16.9901667,11.3755 16.9675,11.3128333 16.9675,11.2435 C16.9675,11.0515 17.1435,10.9555 17.4955,10.9555 C17.6928333,10.9555 17.8875,10.9861667 18.0795,11.0475 C18.2715,11.1088333 18.4741667,11.1848333 18.6875,11.2755 L18.6875,11.2755 L19.0475,10.4195 C18.7861667,10.2968333 18.5328333,10.2088333 18.2875,10.1555 C18.0421667,10.1021667 17.7835,10.0755 17.5115,10.0755 C16.9888333,10.0755 16.5701667,10.1768333 16.2555,10.3795 C15.9408333,10.5821667 15.7835,10.8861667 15.7835,11.2915 C15.7835,11.5368333 15.8261667,11.7408333 15.9115,11.9035 C15.9968333,12.0661667 16.1261667,12.2048333 16.2995,12.3195 C16.4728333,12.4341667 16.6981667,12.5501667 16.9755,12.6675 C17.2581667,12.7848333 17.4661667,12.8808333 17.5995,12.9555 C17.7328333,13.0301667 17.8195,13.0968333 17.8595,13.1555 C17.8995,13.2141667 17.9195,13.2808333 17.9195,13.3555 C17.9195,13.4675 17.8688333,13.5581667 17.7675,13.6275 C17.6661667,13.6968333 17.5008333,13.7315 17.2715,13.7315 C17.0635,13.7315 16.8235,13.6968333 16.5515,13.6275 C16.2795,13.5581667 16.0261667,13.4701667 15.7915,13.3635 L15.7915,13.3635 L15.7915,14.3475 C16.0101667,14.4381667 16.2288333,14.5035 16.4475,14.5435 C16.6661667,14.5835 16.9275,14.6035 17.2315,14.6035 Z\" id=\"Ans\" fill=\"#6D7278\" fill-rule=\"nonzero\"></path>\n </g>\n </g>\n</svg>","import { Component} from '@angular/core';\n\n@Component({\n selector: 'quml-durationtimer',\n templateUrl: './durationtimer.component.html'\n})\nexport class DurationtimerComponent {}\n","<svg width=\"10px\" height=\"16px\" viewBox=\"0 0 10 16\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Shape</title>\n <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"timer/active\" transform=\"translate(-8.000000, -2.000000)\" fill=\"#6D7278\">\n <path d=\"M8,2 L8,6.8 L8.008,6.8 L8,6.808 L11.2,10 L8,13.2 L8.008,13.208 L8,13.208 L8,18 L17.6,18 L17.6,13.208 L17.592,13.208 L17.6,13.2 L14.4,10 L17.6,6.808 L17.592,6.8 L17.6,6.8 L17.6,2 L8,2 L8,2 Z M16,13.6 L16,16.4 L9.6,16.4 L9.6,13.6 L12.8,10.4 L16,13.6 L16,13.6 Z M12.8,9.6 L9.6,6.4 L9.6,3.6 L16,3.6 L16,6.4 L12.8,9.6 L12.8,9.6 Z\" id=\"Shape\"></path>\n </g>\n </g>\n</svg>","import { Component, EventEmitter, Output } from '@angular/core';\n\nexport interface IIndicator {\n iconText: string;\n title: string;\n class: string;\n}\n@Component({\n selector: 'quml-progress-indicators',\n templateUrl: './progress-indicators.component.html',\n styleUrls: ['./progress-indicators.component.scss']\n})\nexport class ProgressIndicatorsComponent {\n\n @Output() close = new EventEmitter<boolean>();\n indicators: IIndicator[] = [\n {\n iconText: '1',\n title: 'Correct',\n class: 'correct'\n },\n {\n iconText: '1',\n title: 'Incorrect',\n class: 'incorrect'\n },\n {\n iconText: '1',\n title: 'Attempted',\n class: 'attempted'\n },\n {\n iconText: '1',\n title: 'Not viewed',\n class: ''\n },\n {\n iconText: '1',\n title: 'Skipped',\n class: 'skipped'\n },\n {\n iconText: '1',\n title: 'Current',\n class: 'current'\n },\n {\n iconText: 'i',\n title: 'Info page',\n class: ''\n },\n {\n iconText: '<img src=\"./assets/flag_active.svg\" alt=\"Flag logo: Show scoreboard\">',\n title: 'Summary page',\n class: ''\n }];\n}\n","<div class=\"progress-indicators\">\n <div class=\"progress-indicators__overlay\">\n <div class=\"progress-indicators__popup\" aria-modal=\"true\">\n <div class=\"close-btn\" (click)=\"close.emit(true)\">\n <button type=\"button\" id=\"close\" class=\"close-icon\" data-animation=\"showShadow\"\n aria-label=\"player-close-btn\"></button>\n </div>\n <div class=\"progress-indicators__metadata\">\n <h5 class=\"progress-indicators__title text-left\">Progress bar indicators</h5>\n <div class=\"progress-indicators__content\">\n <div class=\"progress-indicators__item\" *ngFor=\"let item of indicators\">\n <span class=\"default\" [ngClass]=\"item.class ? item.class : ''\" [innerHtml]=\"item.iconText\"></span>\n <p>{{item.title}}</p>\n </div>\n </div>\n <div class=\"progress-indicators__action-btns\">\n <button type=\"button\" class=\"sb-btn sb-btn-normal sb-btn-primary sb-btn-radius submit-btn\"\n (click)=\"close.emit(true)\">Close</button>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Component, OnInit, Output, EventEmitter, Input, OnChanges, OnDestroy, AfterViewInit, HostListener } from '@angular/core';\nimport { ViewerService } from '../services/viewer-service/viewer-service';\nimport { eventName, TelemetryType } from '../telemetry-constants';\n\n\n@Component({\n selector: 'quml-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input() questions?: any;\n @Input() duration?: any;\n @Input() warningTime?: string;\n @Input() showWarningTimer?: boolean;\n @Input() disablePreviousNavigation: boolean;\n @Input() showTimer: boolean;\n @Input() totalNoOfQuestions: number;\n @Input() currentSlideIndex: number;\n @Input() active: boolean;\n @Input() initializeTimer: boolean;\n @Input() endPageReached: boolean;\n @Input() loadScoreBoard: boolean;\n @Input() replayed: boolean;\n @Input() currentSolutions: any;\n @Input() showFeedBack: boolean;\n @Input() disableNext?: boolean;\n @Input() startPageInstruction?: string;\n @Input() showStartPage?: boolean;\n @Input() attempts?: { max: number, current: number };\n @Input() showDeviceOrientation: boolean = false;\n @Input() showLegend: boolean;\n\n @Output() nextSlideClicked = new EventEmitter<any>();\n @Output() prevSlideClicked = new EventEmitter<any>();\n @Output() durationEnds = new EventEmitter<any>();\n @Output() showSolution = new EventEmitter<any>();\n @Output() toggleScreenRotate = new EventEmitter<any>();\n\n\n minutes: number;\n seconds: string | number;\n private intervalRef?;\n showWarning = false;\n isMobilePortrait = false;\n time: any;\n showProgressIndicatorPopUp = false;\n constructor(private viewerService: ViewerService) {\n }\n\n\n ngOnInit() {\n if (this.duration && this.showTimer) {\n this.minutes = Math.floor(this.duration / 60);\n this.seconds = this.duration - this.minutes * 60 < 10 ? `0${this.duration - this.minutes * 60}` : this.duration - this.minutes * 60;\n }\n }\n\n ngOnChanges() {\n if (this.duration && this.showTimer && this.initializeTimer && !this.intervalRef) {\n this.timer();\n } else if (this.duration === 0 && this.showTimer && this.initializeTimer && !this.intervalRef) {\n this.showCountUp();\n }\n if (this.replayed && this.duration && this.showTimer) {\n this.showWarning = false;\n clearInterval(this.intervalRef)\n this.timer();\n } else if (this.replayed && this.duration === 0 && this.showTimer) {\n clearInterval(this.intervalRef)\n this.showCountUp();\n }\n }\n\n ngAfterViewInit() {\n this.isMobilePortrait = window.matchMedia(\"(max-width: 480px)\").matches;\n }\n\n ngOnDestroy() {\n if (this.intervalRef) {\n clearInterval(this.intervalRef);\n }\n }\n\n nextSlide() {\n if (!this.disableNext) {\n this.nextSlideClicked.emit({ type: 'next' });\n }\n }\n\n prevSlide() {\n if (!this.showStartPage && this.currentSlideIndex === 1) {\n return\n }\n if (!this.disablePreviousNavigation) {\n this.prevSlideClicked.emit({ event: 'previous clicked' });\n }\n }\n\n timer() {\n /* istanbul ignore else */\n if (this.duration > 0) {\n let durationInSec = this.duration;\n this.intervalRef = setInterval(() => {\n let min = ~~(durationInSec / 60);\n let sec = (durationInSec % 60);\n if (sec < 10) {\n this.time = min + ':' + '0' + sec;\n } else {\n this.time = min + ':' + sec;\n }\n if (durationInSec === 0) {\n clearInterval(this.intervalRef);\n this.durationEnds.emit(true);\n return false;\n }\n /* istanbul ignore else */\n if (parseInt(durationInSec) <= parseInt(this.warningTime) && this.showWarningTimer) {\n this.showWarning = true;\n }\n durationInSec--;\n }, 1000);\n }\n }\n\n showCountUp() {\n let min = 0;\n let sec = 0;\n this.intervalRef = setInterval(() => {\n if (sec === 59) {\n sec = 0;\n min = min + 1;\n }\n if (sec < 10) {\n this.time = min + ':' + '0' + sec++;\n } else {\n this.time = min + ':' + sec++;\n }\n }, 1000);\n }\n\n onAnswerKeyDown(event: KeyboardEvent) {\n /* istanbul ignore else */\n if (event.key === 'Enter') {\n event.stopPropagation();\n this.showSolution.emit()\n }\n }\n\n openProgressIndicatorPopup() {\n this.showProgressIndicatorPopUp = true;\n this.viewerService.raiseHeartBeatEvent(eventName.progressIndicatorPopupOpened, TelemetryType.interact, this.currentSlideIndex);\n }\n\n @HostListener('document:keydown.escape', ['$event']) onKeydownHandler(event: KeyboardEvent) {\n this.onProgressPopupClose();\n }\n\n onProgressPopupClose() {\n this.showProgressIndicatorPopUp = false;\n this.viewerService.raiseHeartBeatEvent(eventName.progressIndicatorPopupClosed, TelemetryType.interact, this.currentSlideIndex);\n }\n}\n","<div class=\"quml-header__container\">\n <div class=\"quml-header__features pl-64\">\n <div *ngIf=\"attempts?.max && attempts?.current\" class=\"attempts sb-color-primary fnormal font-weight-bold\">\n Attempt no {{attempts.current}}/{{attempts.max}}</div>\n <img src=\"assets/question-mark-round.svg\" *ngIf=\"showLegend\" alt=\"Progress Indicators\" title=\"Progress Indicators\" height=\"20\" width=\"20\" (click)=\"openProgressIndicatorPopup()\">\n </div>\n\n <div class=\"quml-header__metadata\">\n <img src=\"assets/device-rotate.svg\" alt=\"Change Orientation\" title=\"Change Orientation\" height=\"20\" width=\"20\" *ngIf=\"showDeviceOrientation\" (click)=\"toggleScreenRotate.emit()\">\n <ng-container *ngIf=\"duration && showTimer\">\n <div class=\"duration mr-16\" title=\"{{minutes}}:{{seconds}}\" *ngIf=\"!initializeTimer\">\n <quml-durationtimer></quml-durationtimer>\n <span>{{minutes}}:{{seconds}}</span>\n </div>\n <div class=\"duration mr-16\" title=\"{{minutes}}:{{seconds}}\" *ngIf=\"initializeTimer && time\">\n <quml-durationtimer></quml-durationtimer>\n <span [ngClass]=\"{'blink': showWarning}\">{{time}}</span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!duration && showTimer && initializeTimer\">\n <div class=\"duration mr-16\" title=\"{{minutes}}:{{seconds}}\">\n <quml-durationtimer></quml-durationtimer>\n <span>{{time}}</span>\n </div>\n </ng-container>\n\n <div class=\"quml-navigation\" *ngIf=\"!disableNext && !isMobilePortrait\">\n <div class=\"quml-navigation__previous\" (click)=\"prevSlide()\" aria-label=\"preview slide\" title=\"preview slide\"\n role=\"navigation\"\n [ngClass]=\"(startPageInstruction && currentSlideIndex === 0) || (!showStartPage && currentSlideIndex === 1) ? 'navigation-icon-disabled': '' \"\n [attr.tabindex]=\"(startPageInstruction && currentSlideIndex === 0) || (!showStartPage && currentSlideIndex === 1) ? -1 : 0\">\n </div>\n <div class=\"quml-navigation__next ml-8\" (click)=\"nextSlide()\" (keydown.enter)=\"$event.stopPropagation();nextSlide()\"\n aria-label=\"next slide\" title=\"next slide\" *ngIf=\"!active\" role=\"navigation\"\n [ngClass]=\"disableNext ? 'navigation-icon-disabled': '' \" tabindex=\"0\"></div>\n <div class=\"quml-navigation__next quml-navigation__next--active ml-8\" (click)=\"nextSlide()\"\n (keydown.enter)=\"$event.stopPropagation();nextSlide()\" aria-label=\"next slide\" title=\"next slide\" *ngIf=\"active\" role=\"navigation\"\n [ngClass]=\"disableNext ? 'navigation-icon-disabled': '' \" tabindex=\"0\"></div>\n </div>\n\n </div>\n</div>\n\n<div class=\"quml-header__metadata quml-header__metadata--portrait\" *ngIf=\"!loadScoreBoard && !endPageReached\">\n <div class=\"current-slide fnormal\" *ngIf=\"currentSlideIndex\">{{currentSlideIndex}}/{{totalNoOfQuestions}}</div>\n <div class=\"ml-16\" *ngIf=\"currentSolutions && showFeedBack\">\n <quml-ans (click)=\"showSolution.emit()\" (keydown)=\"onAnswerKeyDown($event)\"></quml-ans>\n </div>\n <div class=\"quml-navigation ml-auto\">\n <div class=\"quml-navigation__previous\" tabindex=\"0\" (click)=\"prevSlide()\" (keydown.enter)=\"prevSlide()\"\n aria-label=\"preview slide\"></div>\n <div class=\"quml-navigation__next ml-8\" tabindex=\"0\" (click)=\"nextSlide()\" (keydown.enter)=\"nextSlide()\"\n *ngIf=\"!active\" aria-label=\"next slide\"></div>\n <div class=\"quml-navigation__next quml-navigation__next--active ml-8\" tabindex=\"0\" (click)=\"nextSlide()\"\n (keydown.enter)=\"nextSlide()\" *ngIf=\"active\" aria-label=\"next slide\"></div>\n </div>\n\n</div>\n\n<quml-progress-indicators *ngIf=\"showProgressIndicatorPopUp\" (close)=\"onProgressPopupClose()\"></quml-progress-indicators>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'quml-zoom-in',\n templateUrl: './zoom-in.component.html'\n})\nexport class ZoomInComponent {}","<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n width=\"12px\" height=\"12px\" viewBox=\"0 0 512 512\" style=\"enable-background:new 0 0 512 512;\" xml:space=\"preserve\">\n<g>\n\t<g>\n\t\t<path d=\"M506.141,477.851L361.689,333.399c65.814-80.075,61.336-198.944-13.451-273.73c-79.559-79.559-209.01-79.559-288.569,0\n\t\t\ts-79.559,209.01,0,288.569c74.766,74.766,193.62,79.293,273.73,13.451l144.452,144.452c7.812,7.812,20.477,7.812,28.289,0\n\t\t\tC513.953,498.328,513.953,485.663,506.141,477.851z M319.949,319.948c-63.96,63.96-168.03,63.959-231.99,0\n\t\t\tc-63.96-63.96-63.96-168.03,0-231.99c63.958-63.957,168.028-63.962,231.99,0C383.909,151.918,383.909,255.988,319.949,319.948z\"/>\n\t</g>\n</g>\n<g>\n\t<g>\n\t\t<path d=\"M301.897,183.949h-77.94v-77.94c0-11.048-8.956-20.004-20.004-20.004c-11.048,0-20.004,8.956-20.004,20.004v77.94h-77.94\n\t\t\tc-11.048,0-20.004,8.956-20.004,20.004c0,11.048,8.956,20.004,20.004,20.004h77.94v77.94c0,11.048,8.956,20.004,20.004,20.004\n\t\t\tc11.048,0,20.004-8.956,20.004-20.004v-77.94h77.94c11.048,0,20.004-8.956,20.004-20.004\n\t\t\tC321.901,192.905,312.945,183.949,301.897,183.949z\"/>\n\t</g>\n</g>\n<g>\n</g>\n<g>\n</g>\n<g>\n</g>\n<g>\n</g>\n<g>\n</g>\n<g>\n</g>\n<g>\n</g>\n<g>\n</g>\n<g>\n</g>\n<g>\n</g>\n<g>\n</g>\n<g>\n</g>\n<g>\n</g>\n<g>\n</g>\n<g>\n</g>\n</svg>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'quml-star',\n templateUrl: './star.component.html'\n})\nexport class StarComponent {}\n","<svg width=\"18px\" height=\"19px\" viewBox=\"0 0 20 19\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Star</title>\n <defs>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"linearGradient-1\">\n <stop stop-color=\"#FFE500\" offset=\"0%\"></stop>\n <stop stop-color=\"#E6B302\" offset=\"100%\"></stop>\n </linearGradient>\n </defs>\n <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M9.52906513,1.05447851 C9.88447433,0.933955771 10.2858614,0.949017066 10.6489852,1.12822939 C10.9381809,1.27095597 11.1722611,1.50503624 11.3149877,1.79423187 L11.3149877,1.79423187 L12.3803318,3.95285472 C12.8901488,4.98585688 13.8756284,5.70184969 15.0156139,5.86749929 L15.0156139,5.86749929 L17.3977957,6.21365056 C17.7985266,6.27188017 18.1377182,6.4870255 18.3621696,6.78779616 C18.586621,7.08856682 18.6963323,7.47496281 18.6381027,7.87569375 C18.591728,8.19484007 18.4414393,8.48979843 18.2105028,8.71490584 L18.2105028,8.71490584 L16.4867399,10.3951594 C15.6618386,11.1992394 15.2854189,12.3577401 15.4801517,13.4931194 L15.4801517,13.4931194 L15.8870769,15.8656755 C15.9555299,16.2647872 15.8557305,16.6538611 15.6390399,16.9602703 C15.4223493,17.2666796 15.0887676,17.4904241 14.6896558,17.5588771 C14.3717991,17.6133938 14.0448352,17.5616079 13.7593821,17.4115363 L13.7593821,17.4115363 L11.6286939,16.2913672 C10.6090599,15.7553139 9.39094014,15.7553139 8.37130605,16.2913672 L8.37130605,16.2913672 L6.24061792,17.4115363 C5.88219327,17.5999712 5.48132228,17.6252868 5.12294871,17.5138875 C4.76457514,17.4024881 4.44869898,17.1543739 4.26026399,16.7959492 C4.11019239,16.5104961 4.0584064,16.1835322 4.1129231,15.8656755 L4.1129231,15.8656755 L4.51984832,13.4931194 C4.7145811,12.3577401 4.33816141,11.1992394 3.51326011,10.3951594 L3.51326011,10.3951594 L1.7894972,8.71490584 C1.49952557,8.43225335 1.35157308,8.05882533 1.34677662,7.68356752 C1.34198016,7.3083097 1.48033973,6.93122211 1.76299222,6.64125047 C1.98809962,6.41031402 2.28305798,6.26002523 2.6022043,6.21365056 L2.6022043,6.21365056 L4.98438605,5.86749929 C6.12437162,5.70184969 7.10985117,4.98585688 7.61966822,3.95285472 L7.61966822,3.95285472 L8.68501228,1.79423187 C8.86422461,1.43110804 9.17365593,1.17500126 9.52906513,1.05447851 Z\"\n id=\"Star\" stroke=\"#EDBA01\" fill=\"url(#linearGradient-1)\"></path>\n </g>\n</svg>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'quml-previous',\n templateUrl: './previous.component.html'\n})\nexport class PreviousComponent {}","<svg width=\"60px\" height=\"36px\" viewBox=\"0 0 60 36\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Previous</title>\n <defs>\n <rect id=\"path-1\" x=\"0\" y=\"0\" width=\"60\" height=\"36\" rx=\"18\"></rect>\n <filter x=\"-5.8%\" y=\"-9.7%\" width=\"111.7%\" height=\"119.4%\" filterUnits=\"objectBoundingBox\" id=\"filter-2\">\n <feGaussianBlur stdDeviation=\"3\" in=\"SourceAlpha\" result=\"shadowBlurInner1\"></feGaussianBlur>\n <feOffset dx=\"0\" dy=\"1\" in=\"shadowBlurInner1\" result=\"shadowOffsetInner1\"></feOffset>\n <feComposite in=\"shadowOffsetInner1\" in2=\"SourceAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\" result=\"shadowInnerInner1\"></feComposite>\n <feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\" type=\"matrix\" in=\"shadowInnerInner1\"></feColorMatrix>\n </filter>\n <rect id=\"path-3\" x=\"0\" y=\"0\" width=\"54\" height=\"30\" rx=\"15\"></rect>\n <filter x=\"-2.8%\" y=\"-5.0%\" width=\"105.6%\" height=\"110.0%\" filterUnits=\"objectBoundingBox\" id=\"filter-4\">\n <feGaussianBlur stdDeviation=\"0.5\" in=\"SourceGraphic\"></feGaussianBlur>\n </filter>\n <filter x=\"-5.6%\" y=\"-10.0%\" width=\"111.1%\" height=\"120.0%\" filterUnits=\"objectBoundingBox\" id=\"filter-5\">\n <feGaussianBlur stdDeviation=\"1\" in=\"SourceAlpha\" result=\"shadowBlurInner1\"></feGaussianBlur>\n <feOffset dx=\"0\" dy=\"-1\" in=\"shadowBlurInner1\" result=\"shadowOffsetInner1\"></feOffset>\n <feComposite in=\"shadowOffsetInner1\" in2=\"SourceAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\" result=\"shadowInnerInner1\"></feComposite>\n <feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\" type=\"matrix\" in=\"shadowInnerInner1\"></feColorMatrix>\n </filter>\n </defs>\n <g id=\"button/previous2\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Group\">\n <g id=\"Group-Copy\">\n <g id=\"Rectangle-5-Copy\" opacity=\"0.1\" fill-rule=\"nonzero\">\n <use fill=\"#CCCCCC\" xlink:href=\"#path-1\"></use>\n <use fill=\"black\" fill-opacity=\"1\" filter=\"url(#filter-2)\" xlink:href=\"#path-1\"></use>\n </g>\n <g id=\"Group-2\" transform=\"translate(3.000000, 3.000000)\">\n <g id=\"Rectangle-5-Copy-2\" fill-rule=\"nonzero\" filter=\"url(#filter-4)\">\n <use fill=\"#FFFFFF\" xlink:href=\"#path-3\"></use>\n <use fill=\"black\" fill-opacity=\"1\" filter=\"url(#filter-5)\" xlink:href=\"#path-3\"></use>\n </g>\n <polygon id=\"Shape\" fill=\"#6D7278\" points=\"31 10.41 29.59 9 23.59 15 29.59 21 31 19.59 26.42 15\"></polygon>\n </g>\n </g>\n <g id=\"Icon-24px\" transform=\"translate(30.000000, 18.000000) scale(-1, 1) translate(-30.000000, -18.000000) translate(26.000000, 12.000000)\"></g>\n </g>\n </g>\n</svg>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'quml-next',\n templateUrl: './next.component.html'\n})\nexport class NextComponent {}\n","<svg width=\"60px\" height=\"36px\" viewBox=\"0 0 60 36\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Next</title>\n <defs>\n <rect id=\"path-1\" x=\"0\" y=\"0\" width=\"60\" height=\"36\" rx=\"18\"></rect>\n <filter x=\"-5.8%\" y=\"-9.7%\" width=\"111.7%\" height=\"119.4%\" filterUnits=\"objectBoundingBox\" id=\"filter-2\">\n <feGaussianBlur stdDeviation=\"3\" in=\"SourceAlpha\" result=\"shadowBlurInner1\"></feGaussianBlur>\n <feOffset dx=\"0\" dy=\"1\" in=\"shadowBlurInner1\" result=\"shadowOffsetInner1\"></feOffset>\n <feComposite in=\"shadowOffsetInner1\" in2=\"SourceAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\" result=\"shadowInnerInner1\"></feComposite>\n <feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\" type=\"matrix\" in=\"shadowInnerInner1\"></feColorMatrix>\n </filter>\n <rect id=\"path-3\" x=\"0\" y=\"0\" width=\"54\" height=\"30\" rx=\"15\"></rect>\n <filter x=\"-2.8%\" y=\"-5.0%\" width=\"105.6%\" height=\"110.0%\" filterUnits=\"objectBoundingBox\" id=\"filter-4\">\n <feGaussianBlur stdDeviation=\"0.5\" in=\"SourceGraphic\"></feGaussianBlur>\n </filter>\n <filter x=\"-5.6%\" y=\"-10.0%\" width=\"111.1%\" height=\"120.0%\" filterUnits=\"objectBoundingBox\" id=\"filter-5\">\n <feGaussianBlur stdDeviation=\"1\" in=\"SourceAlpha\" result=\"shadowBlurInner1\"></feGaussianBlur>\n <feOffset dx=\"0\" dy=\"-1\" in=\"shadowBlurInner1\" result=\"shadowOffsetInner1\"></feOffset>\n <feComposite in=\"shadowOffsetInner1\" in2=\"SourceAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\" result=\"shadowInnerInner1\"></feComposite>\n <feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\" type=\"matrix\" in=\"shadowInnerInner1\"></feColorMatrix>\n </filter>\n </defs>\n <g id=\"button/next2\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Group\">\n <g id=\"Group-Copy\">\n <g id=\"Rectangle-5-Copy\" opacity=\"0.1\" fill-rule=\"nonzero\">\n <use fill=\"#CCCCCC\" xlink:href=\"#path-1\"></use>\n <use fill=\"black\" fill-opacity=\"1\" filter=\"url(#filter-2)\" xlink:href=\"#path-1\"></use>\n </g>\n <g id=\"Group-2\" transform=\"translate(3.000000, 3.000000)\">\n <g id=\"Rectangle-5-Copy-2\" fill-rule=\"nonzero\" filter=\"url(#filter-4)\">\n <use fill=\"#FFFFFF\" xlink:href=\"#path-3\"></use>\n <use fill=\"black\" fill-opacity=\"1\" filter=\"url(#filter-5)\" xlink:href=\"#path-3\"></use>\n </g>\n <polygon id=\"Shape\" fill=\"#6D7278\" transform=\"translate(27.295000, 15.000000) scale(-1, 1) translate(-27.295000, -15.000000) \" points=\"31 10.41 29.59 9 23.59 15 29.59 21 31 19.59 26.42 15\"></polygon>\n </g>\n </g>\n <g id=\"Icon-24px\" transform=\"translate(30.000000, 18.000000) scale(-1, 1) translate(-30.000000, -18.000000) translate(26.000000, 12.000000)\"></g>\n </g>\n </g>\n</svg>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'quml-bookmark',\n templateUrl: './bookmark.component.html'\n})\nexport class BookmarkComponent {}\n","<svg width=\"14px\" height=\"18px\" viewBox=\"0 0 14 18\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>bookmark</title>\n <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path d=\"M12,0 L2,0 C0.9,0 0.01,0.9 0.01,2 L0,18 L7,15 L14,18 L14,2 C14,0.9 13.1,0 12,0 L12,0 Z M12,15 L7,12.82 L2,15 L2,2 L12,2 L12,15 L12,15 Z\" id=\"bookmark\" fill=\"#6D7278\"></path>\n </g>\n</svg>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'quml-hint',\n templateUrl: './hint.component.html'\n})\nexport class HintComponent {}","<svg width=\"14px\" height=\"20px\" viewBox=\"0 0 14 20\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>hint</title>\n <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path d=\"M4,19 C4,19.55 4.45,20 5,20 L9,20 C9.55,20 10,19.55 10,19 L10,18 L4,18 L4,19 L4,19 Z M7,0 C3.14,0 0,3.14 0,7 C0,9.38 1.19,11.47 3,12.74 L3,15 C3,15.55 3.45,16 4,16 L10,16 C10.55,16 11,15.55 11,15 L11,12.74 C12.81,11.47 14,9.38 14,7 C14,3.14 10.86,0 7,0 L7,0 Z M9.85,11.1 L9,11.7 L9,14 L5,14 L5,11.7 L4.15,11.1 C2.8,10.16 2,8.63 2,7 C2,4.24 4.24,2 7,2 C9.76,2 12,4.24 12,7 C12,8.63 11.2,10.16 9.85,11.1 L9.85,11.1 Z\" id=\"hint\" fill=\"#6D7278\"></path>\n </g>\n</svg>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'quml-share',\n templateUrl: './share.component.html'\n})\nexport class ShareComponent {}\n","<svg width=\"17px\" height=\"18px\" viewBox=\"0 0 17 18\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>share</title>\n <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path d=\"M13.4613333,12.8088889 C12.7857778,12.8088889 12.1813333,13.0755556 11.7191111,13.4933333 L5.38133333,9.80444444 C5.42577778,9.6 5.46133333,9.39555556 5.46133333,9.18222222 C5.46133333,8.96888889 5.42577778,8.76444444 5.38133333,8.56 L11.648,4.90666667 C12.128,5.35111111 12.7591111,5.62666667 13.4613333,5.62666667 C14.9368889,5.62666667 16.128,4.43555556 16.128,2.96 C16.128,1.48444444 14.9368889,0.293333333 13.4613333,0.293333333 C11.9857778,0.293333333 10.7946667,1.48444444 10.7946667,2.96 C10.7946667,3.17333333 10.8302222,3.37777778 10.8746667,3.58222222 L4.608,7.23555556 C4.128,6.79111111 3.49688889,6.51555556 2.79466667,6.51555556 C1.31911111,6.51555556 0.128,7.70666667 0.128,9.18222222 C0.128,10.6577778 1.31911111,11.8488889 2.79466667,11.8488889 C3.49688889,11.8488889 4.128,11.5733333 4.608,11.1288889 L10.9368889,14.8266667 C10.8924444,15.0133333 10.8657778,15.2088889 10.8657778,15.4044444 C10.8657778,16.8355556 12.0302222,18 13.4613333,18 C14.8924444,18 16.0568889,16.8355556 16.0568889,15.4044444 C16.0568889,13.9733333 14.8924444,12.8088889 13.4613333,12.8088889 L13.4613333,12.8088889 Z\" id=\"share\" fill=\"#6D7278\"></path>\n </g>\n</svg>","import { Component} from '@angular/core';\n\n@Component({\n selector: 'quml-correct',\n templateUrl: './correct.component.html'\n})\nexport class CorrectComponent {}","<svg width=\"48px\" height=\"48px\" viewBox=\"0 0 21 20\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>correct option</title>\n <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M10.5,0 C4.98,0 0.5,4.48 0.5,10 C0.5,15.52 4.98,20 10.5,20 C16.02,20 20.5,15.52 20.5,10 C20.5,4.48 16.02,0 10.5,0 L10.5,0 Z M8.5,15 L3.5,10 L4.91,8.59 L8.5,12.17 L16.09,4.58 L17.5,6 L8.5,15 L8.5,15 Z\"\n id=\"correct-option\" fill=\"#31A679\"></path>\n </g>\n</svg>","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { ISummary } from '../quml-library-interface';\nimport { ViewerService } from '../services/viewer-service/viewer-service';\nimport { eventName, pageId, TelemetryType } from '../telemetry-constants';\n\n@Component({\n selector: 'quml-scoreboard',\n templateUrl: './scoreboard.component.html',\n styleUrls: ['./scoreboard.component.scss']\n})\nexport class ScoreboardComponent implements OnInit, OnDestroy {\n @Input() scores: any;\n @Input() totalNoOfQuestions: number;\n @Input() contentName: string;\n @Input() showFeedBack: boolean;\n @Input() isSections: boolean;\n @Input() summary: ISummary;\n @Output() submitClicked = new EventEmitter<any>();\n @Output() emitQuestionNo = new EventEmitter<any>();\n @Output() scoreBoardLoaded = new EventEmitter<any>();\n\n subscription: Subscription;\n constructor(private viewerService: ViewerService) { }\n\n ngOnInit() {\n this.scoreBoardLoaded.emit({\n scoreBoardLoaded: true\n });\n\n this.subscription = fromEvent(document, 'keydown').subscribe((e: KeyboardEvent) => {\n /* istanbul ignore else */\n if (e['key'] === 'Enter') {\n e.stopPropagation();\n (document.activeElement as HTMLElement).click();\n }\n });\n }\n\n goToQuestion(index: number, identifier?: string) {\n this.emitQuestionNo.emit({ questionNo: index, identifier });\n }\n\n onReviewClicked() {\n if (this.isSections) {\n this.goToQuestion(1, this.scores[0].identifier);\n } else {\n this.goToQuestion(1);\n }\n this.viewerService.raiseHeartBeatEvent(eventName.scoreBoardReviewClicked, TelemetryType.interact, pageId.submitPage);\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n}\n","<div class=\"scoreboard\">\n <div class=\"scoreboard__header\">\n <div class=\"scoreboard__title\">\n Are you ready to submit?\n </div>\n <div class=\"scoreboard__subtitle\">\n {{contentName}}\n </div>\n </div>\n\n <div class=\"sections-score-card\">\n <div class=\"sections-score-count-info\">\n <div class=\"mb-15\">Total Questions: {{totalNoOfQuestions}}</div>\n <div class=\"mb-15\">Questions Answered: {{summary?.correct + summary?.wrong}}</div>\n <div class=\"mb-15\">Questions Skipped: {{summary?.skipped}}</div>\n <div class=\"mb-15\">Questions not Viewed: {{totalNoOfQuestions - (summary?.correct + summary?.wrong + summary?.skipped)}}</div>\n </div>\n\n <div class=\"sections-score-count-sections\">\n <div class=\"scoreboard__points\" *ngIf=\"!isSections\">\n <div *ngFor=\"let score of scores; let i = index\" class=\"scoreboard__index\" (click)=\"goToQuestion(i+1)\"\n tabindex=\"0\" attr.aria-label=\"question number {{score.index}}\"\n [ngClass]=\"showFeedBack ? score.class : (score.class === 'skipped' ? score.class : (score.class === 'unattempted' ? score.class : 'attempted'))\">\n {{score.index}}\n </div>\n </div>\n\n <div *ngIf=\"isSections\">\n <div *ngFor=\"let section of scores\" class=\"sections-score-counts\">\n <div class=\"sections-score-card__title\">Section {{section?.index}}</div>\n <div class=\"sections-score-card__points\">\n <div *ngFor=\"let score of section?.children; let i = index\" class=\"scoreboard__index\" tabindex=\"0\"\n attr.aria-label=\"question number {{score.index}}\" (click)=\"goToQuestion(i+1, section.identifier)\"\n [ngClass]=\"score.showFeedback ? score.class : (score.class === 'skipped' ? score.class : (score.class === 'unattempted' ? score.class : 'attempted'))\">\n {{score.index}}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"scoreboard__btn-container\">\n <button type=\"submit\" class=\"sb-btn sb-btn-outline-primary sb-btn-normal sb-btn-radius px-20 mx-8\"\n (click)=\"onReviewClicked()\">Review</button>\n <button type=\"submit\" class=\"sb-btn sb-btn-primary sb-btn-normal sb-btn-radius px-20 mx-8\"\n (click)=\"submitClicked.emit({type:'submit-clicked'})\">Submit</button>\n </div>\n</div>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'quml-timer',\n templateUrl: './timer.component.html'\n})\nexport class TimerComponent {}\n","<svg width=\"18px\" height=\"19px\" viewBox=\"0 0 18 19\" version=\"1.1\" tabindex=\"-1\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>ic_timer</title>\n <defs>\n <linearGradient x1=\"13.2653061%\" y1=\"0%\" x2=\"87.9981222%\" y2=\"100%\" id=\"linearGradient-1\">\n <stop stop-color=\"#F1635D\" offset=\"0%\"></stop>\n <stop stop-color=\"#F97A74\" offset=\"100%\"></stop>\n </linearGradient>\n </defs>\n <g id=\"Content-player\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"player-intro-page\" transform=\"translate(-446.000000, -159.000000)\">\n <g id=\"Icon-24px\" transform=\"translate(446.000000, 159.495625)\">\n <polygon id=\"Shape\" points=\"0 0 18 0 18 18 0 18\"></polygon>\n <path d=\"M11.25,0.75 L6.75,0.75 L6.75,2.25 L11.25,2.25 L11.25,0.75 L11.25,0.75 Z M8.25,10.5 L9.75,10.5 L9.75,6 L8.25,6 L8.25,10.5 L8.25,10.5 Z M14.2725,5.5425 L15.3375,4.4775 C15.015,4.095 14.6625,3.735 14.28,3.42 L13.215,4.485 C12.0525,3.555 10.59,3 9,3 C5.2725,3 2.25,6.0225 2.25,9.75 C2.25,13.4775 5.265,16.5 9,16.5 C12.735,16.5 15.75,13.4775 15.75,9.75 C15.75,8.16 15.195,6.6975 14.2725,5.5425 L14.2725,5.5425 Z M9,15 C6.0975,15 3.75,12.6525 3.75,9.75 C3.75,6.8475 6.0975,4.5 9,4.5 C11.9025,4.5 14.25,6.8475 14.25,9.75 C14.25,12.6525 11.9025,15 9,15 L9,15 Z\" id=\"Shape\" fill=\"#f8756f\"></path>\n </g>\n </g>\n </g>\n</svg>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'quml-content',\n templateUrl: './content.component.html'\n})\nexport class ContentComponent {}\n","<svg width=\"18px\" height=\"19px\" viewBox=\"0 0 18 19\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" tabindex=\"-1\" aria-hidden=\"true\">\n <title>ic_content_paste</title>\n <defs>\n <linearGradient x1=\"16.5289256%\" y1=\"0%\" x2=\"84.622256%\" y2=\"100%\" id=\"linearGradient-1\">\n <stop stop-color=\"#F1635D\" offset=\"0%\"></stop>\n <stop stop-color=\"#F97A74\" offset=\"100%\"></stop>\n </linearGradient>\n </defs>\n <g id=\"Content-player\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"player-intro-page\" transform=\"translate(-447.000000, -95.000000)\">\n <g id=\"Icon-24px\" transform=\"translate(447.000000, 95.495625)\" >\n <polygon id=\"Shape\" points=\"0 0 18 0 18 18 0 18\"></polygon>\n <path d=\"M14.25,1.5 L11.115,1.5 C10.8,0.63 9.975,0 9,0 C8.025,0 7.2,0.63 6.885,1.5 L3.75,1.5 C2.925,1.5 2.25,2.175 2.25,3 L2.25,15 C2.25,15.825 2.925,16.5 3.75,16.5 L14.25,16.5 C15.075,16.5 15.75,15.825 15.75,15 L15.75,3 C15.75,2.175 15.075,1.5 14.25,1.5 L14.25,1.5 Z M9,1.5 C9.4125,1.5 9.75,1.8375 9.75,2.25 C9.75,2.6625 9.4125,3 9,3 C8.5875,3 8.25,2.6625 8.25,2.25 C8.25,1.8375 8.5875,1.5 9,1.5 L9,1.5 Z M14.25,15 L3.75,15 L3.75,3 L5.25,3 L5.25,5.25 L12.75,5.25 L12.75,3 L14.25,3 L14.25,15 L14.25,15 Z\" id=\"Shape\" fill=\"#f8756f\"></path>\n </g>\n </g>\n </g>\n</svg>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'quml-startpagestaricon',\n templateUrl: './startpagestaricon.component.html'\n})\nexport class StartpagestariconComponent {}","<svg width=\"14px\" height=\"13px\" viewBox=\"0 0 14 13\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Star</title>\n <defs>\n <linearGradient x1=\"0%\" y1=\"0%\" x2=\"101.719666%\" y2=\"100%\" id=\"linearGradient-1\">\n <stop stop-color=\"#F1635D\" offset=\"0%\"></stop>\n <stop stop-color=\"#F97A74\" offset=\"100%\"></stop>\n </linearGradient>\n </defs>\n <g id=\"Content-player\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"player-intro-page\" transform=\"translate(-448.000000, -226.000000)\" fill=\"#f8756f\">\n <path d=\"M454.069318,237.484914 L452.648859,238.231693 C452.008011,238.568607 451.215379,238.322219 450.878466,237.681372 C450.744305,237.426183 450.698009,237.133884 450.746746,236.849727 L451.018029,235.268023 C451.129305,234.619235 450.914208,233.957235 450.442836,233.49776 L449.293661,232.377591 C448.775204,231.872221 448.764596,231.042245 449.269966,230.523788 C449.471207,230.317336 449.734894,230.182981 450.020203,230.141523 L451.608325,229.910756 C452.259745,229.816099 452.822876,229.40696 453.1142,228.816673 L453.824429,227.377591 C454.144853,226.728342 454.930929,226.461776 455.580179,226.782199 C455.838713,226.909794 456.047976,227.119057 456.175571,227.377591 L456.8858,228.816673 C457.177124,229.40696 457.740255,229.816099 458.391675,229.910756 L459.979797,230.141523 C460.696286,230.245635 461.192716,230.910864 461.088604,231.627354 C461.047146,231.912664 460.912791,232.17635 460.706339,232.377591 L459.557164,233.49776 C459.085792,233.957235 458.870695,234.619235 458.981971,235.268023 L459.253254,236.849727 C459.375645,237.563322 458.89638,238.241022 458.182786,238.363413 C457.898629,238.412149 457.60633,238.365854 457.351141,238.231693 L455.930682,237.484914 C455.348034,237.178598 454.651966,237.178598 454.069318,237.484914 Z\" id=\"Star\"></path>\n </g>\n </g>\n</svg>","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'quml-startpage',\n templateUrl: './startpage.component.html',\n styleUrls: ['./startpage.component.scss', './sb-ckeditor-styles.scss']\n})\nexport class StartpageComponent implements OnInit {\n\n @Input() instructions: any;\n @Input() totalNoOfQuestions: number;\n @Input() points: number;\n @Input() time: number;\n @Input() contentName: string;\n @Input() showTimer: boolean;\n minutes: number;\n seconds: string | number;\n\n ngOnInit() {\n this.minutes = Math.floor(this.time / 60);\n this.seconds = this.time - this.minutes * 60 < 10 ? `0${this.time - this.minutes * 60}` : this.time - this.minutes * 60;\n }\n\n}\n","<div class=\"startpage\" tabindex=\"0\">\n <div class=\"startpage__header\" [attr.aria-label]=\"'question set title '+contentName\">\n {{contentName}}\n </div>\n <div class=\"startpage__content\">\n <div class=\"startpage__metadata\">\n <div class=\"startpage__md-heading\">Questions</div>\n <div class=\"startpage__md-scores\">\n <quml-content class=\"startpage__md-icon\"></quml-content>\n <span class=\"startpage__md-desc\">{{totalNoOfQuestions}}</span>\n </div>\n </div>\n <div class=\"startpage__metadata\" *ngIf=\"showTimer && time > 0\">\n <div class=\"startpage__md-heading\">Minutes</div>\n <div class=\"startpage__md-scores\">\n <quml-timer class=\"startpage__md-icon\"></quml-timer>\n <span class=\"startpage__md-desc\">{{minutes}}:{{seconds}}</span>\n </div>\n </div>\n <div class=\"startpage__metadata\" *ngIf=\"points\">\n <div class=\"startpage__md-heading\">Points</div>\n <div class=\"startpage__md-scores\">\n <quml-startpagestaricon class=\"startpage__md-icon\">i</quml-startpagestaricon>\n <span class=\"startpage__md-desc\">{{points}}</span>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"instructions\">\n <div class=\"startpage__instruction\">\n <div class=\"startpage__instr-title\">Instructions</div>\n <div [innerHTML]=\"instructions | safeHtml\" class=\"startpage__instr-desc\"></div>\n </div>\n </ng-container>\n</div>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'quml-previous-active',\n templateUrl: './previous-active.component.html'\n})\nexport class PreviousActiveComponent {}\n","<svg width=\"60px\" height=\"36px\" viewBox=\"0 0 60 36\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Previous</title>\n <defs>\n <rect id=\"path-1\" x=\"0\" y=\"0\" width=\"56\" height=\"32\" rx=\"16\"></rect>\n <filter x=\"-2.7%\" y=\"-4.7%\" width=\"105.4%\" height=\"109.4%\" filterUnits=\"objectBoundingBox\" id=\"filter-2\">\n <feGaussianBlur stdDeviation=\"0.5\" in=\"SourceGraphic\"></feGaussianBlur>\n </filter>\n <filter x=\"-5.4%\" y=\"-9.4%\" width=\"110.7%\" height=\"118.8%\" filterUnits=\"objectBoundingBox\" id=\"filter-3\">\n <feGaussianBlur stdDeviation=\"1\" in=\"SourceAlpha\" result=\"shadowBlurInner1\"></feGaussianBlur>\n <feOffset dx=\"0\" dy=\"-1\" in=\"shadowBlurInner1\" result=\"shadowOffsetInner1\"></feOffset>\n <feComposite in=\"shadowOffsetInner1\" in2=\"SourceAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\" result=\"shadowInnerInner1\"></feComposite>\n <feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\" type=\"matrix\" in=\"shadowInnerInner1\"></feColorMatrix>\n </filter>\n </defs>\n <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Group\" transform=\"translate(30.000000, 18.000000) scale(-1, 1) translate(-30.000000, -18.000000) translate(2.000000, 2.000000)\">\n <g id=\"Group-2\">\n <g id=\"Rectangle-5-Copy-2\" fill-rule=\"nonzero\" filter=\"url(#filter-2)\">\n <use fill=\"#FFFFFF\" xlink:href=\"#path-1\"></use>\n <use fill=\"black\" fill-opacity=\"1\" filter=\"url(#filter-3)\" xlink:href=\"#path-1\"></use>\n </g>\n <polygon id=\"Shape\" fill=\"#6D7278\" transform=\"translate(28.000000, 16.000000) scale(-1, 1) translate(-28.000000, -16.000000) \" points=\"31.705 11.41 30.295 10 24.295 16 30.295 22 31.705 20.59 27.125 16\"></polygon>\n </g>\n <g id=\"Icon-24px\" transform=\"translate(27.000000, 15.000000) scale(-1, 1) translate(-27.000000, -15.000000) translate(23.000000, 9.000000)\"></g>\n </g>\n </g>\n</svg>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'quml-next-active',\n templateUrl: './next-active.component.html'\n})\nexport class NextActiveComponent {}\n"," <svg width=\"60px\" height=\"36px\" viewBox=\"0 0 60 36\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Next</title>\n <defs>\n <rect id=\"path-1\" x=\"0\" y=\"0\" width=\"60\" height=\"36\" rx=\"18\"></rect>\n <filter x=\"-5.8%\" y=\"-9.7%\" width=\"111.7%\" height=\"119.4%\" filterUnits=\"objectBoundingBox\" id=\"filter-2\">\n <feGaussianBlur stdDeviation=\"3\" in=\"SourceAlpha\" result=\"shadowBlurInner1\"></feGaussianBlur>\n <feOffset dx=\"0\" dy=\"1\" in=\"shadowBlurInner1\" result=\"shadowOffsetInner1\"></feOffset>\n <feComposite in=\"shadowOffsetInner1\" in2=\"SourceAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\"\n result=\"shadowInnerInner1\"></feComposite>\n <feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\" type=\"matrix\" in=\"shadowInnerInner1\">\n </feColorMatrix>\n </filter>\n <rect id=\"path-3\" x=\"0\" y=\"0\" width=\"54\" height=\"30\" rx=\"15\"></rect>\n <filter x=\"-2.8%\" y=\"-5.0%\" width=\"105.6%\" height=\"110.0%\" filterUnits=\"objectBoundingBox\" id=\"filter-4\">\n <feGaussianBlur stdDeviation=\"0.5\" in=\"SourceGraphic\"></feGaussianBlur>\n </filter>\n <filter x=\"-5.6%\" y=\"-10.0%\" width=\"111.1%\" height=\"120.0%\" filterUnits=\"objectBoundingBox\" id=\"filter-5\">\n <feGaussianBlur stdDeviation=\"1\" in=\"SourceAlpha\" result=\"shadowBlurInner1\"></feGaussianBlur>\n <feOffset dx=\"0\" dy=\"-1\" in=\"shadowBlurInner1\" result=\"shadowOffsetInner1\"></feOffset>\n <feComposite in=\"shadowOffsetInner1\" in2=\"SourceAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\"\n result=\"shadowInnerInner1\"></feComposite>\n <feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\" type=\"matrix\" in=\"shadowInnerInner1\">\n </feColorMatrix>\n </filter>\n </defs>\n <g id=\"button/next2\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Group\">\n <g id=\"Group-Copy\">\n <g id=\"Rectangle-5-Copy\" opacity=\"0.1\" fill-rule=\"nonzero\">\n <use fill=\"#CCCCCC\" xlink:href=\"#path-1\"></use>\n <use fill=\"black\" fill-opacity=\"1\" filter=\"url(#filter-2)\" xlink:href=\"#path-1\"></use>\n </g>\n <g id=\"Group-2\" transform=\"translate(3.000000, 3.000000)\">\n <g id=\"Rectangle-5-Copy-2\" fill-rule=\"nonzero\" filter=\"url(#filter-4)\">\n <use fill=\"#FFD655\" xlink:href=\"#path-3\"></use>\n <use fill=\"black\" fill-opacity=\"1\" filter=\"url(#filter-5)\" xlink:href=\"#path-3\"></use>\n </g>\n <polygon id=\"Shape\" fill=\"#666\"\n transform=\"translate(27.295000, 15.000000) scale(-1, 1) translate(-27.295000, -15.000000) \"\n points=\"31 10.41 29.59 9 23.59 15 29.59 21 31 19.59 26.42 15\"></polygon>\n </g>\n </g>\n <g id=\"Icon-24px\"\n transform=\"translate(30.000000, 18.000000) scale(-1, 1) translate(-30.000000, -18.000000) translate(26.000000, 12.000000)\">\n </g>\n </g>\n </g>\n</svg> ","import {\n Component, Output, EventEmitter, Input,\n AfterViewInit, OnDestroy, OnInit, HostListener\n} from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\n\ntype AlertType = \"correct\" | \"wrong\";\n\n@Component({\n selector: 'quml-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss']\n})\nexport class AlertComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() alertType: AlertType;\n @Input() isHintAvailable: boolean;\n @Input() showSolutionButton: boolean;\n\n @Output() closeAlert = new EventEmitter();\n @Output() showSolution = new EventEmitter();\n @Output() showHint = new EventEmitter();\n\n subscription: Subscription;\n isFocusSet = false;\n\n\n @HostListener('document:keydown.escape', ['$event']) onKeydownHandler(event: KeyboardEvent) {\n this.close('close');\n }\n\n\n previousActiveElement: HTMLElement;\n\n ngOnInit() {\n this.isFocusSet = false;\n this.previousActiveElement = document.activeElement as HTMLElement;\n this.subscription = fromEvent(document, 'keydown').subscribe((e: KeyboardEvent) => {\n if (e['key'] === 'Tab') {\n const nextBtn: HTMLElement = document.querySelector('.quml-navigation__previous');\n /* istanbul ignore else */\n if (nextBtn) {\n this.close('close');\n nextBtn.focus({ preventScroll: true });\n this.isFocusSet = true;\n e.stopPropagation();\n }\n }\n });\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n const wrongButton: HTMLElement = document.querySelector('#wrongButton');\n const correctButton : HTMLElement = document.querySelector('#correctButton');\n\n if (this.alertType === 'wrong' && wrongButton) {\n wrongButton.focus({ preventScroll: true });\n } else if (this.alertType === 'correct' && this.showSolutionButton && correctButton) {\n correctButton.focus({ preventScroll: true });\n }\n }, 200);\n }\n\n viewHint() {\n this.showHint.emit({\n hint: true,\n });\n }\n\n viewSolution() {\n this.showSolution.emit({\n solution: true,\n });\n }\n\n close(type) {\n this.closeAlert.emit({ type });\n }\n\n ngOnDestroy() {\n /* istanbul ignore else */\n if (this.previousActiveElement && !this.isFocusSet) {\n this.previousActiveElement.focus({ preventScroll: true });\n }\n\n /* istanbul ignore else */\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","<div class=\"quml-alert\">\n <div class=\"quml-alert__overlay\" (click)=\"close('close')\" (keyup.enter)=\"close('close')\"></div>\n <div class=\"quml-alert__container\">\n <div class=\"quml-alert__body\">\n <div class=\"quml-alert__image quml-alert__image--correct\" *ngIf=\"alertType === 'correct'\">\n <div class=\"quml-alert__icon-container\">\n <img class=\"quml-alert__icon\" src=\"assets/quml-correct.svg\" alt=\"Correct Answer\">\n\n </div>\n <div class=\"quml-alert__icon-empty\"></div>\n <img class=\"quml-alert__banner\" src=\"assets/banner-correct.svg\" alt=\"\" >\n </div>\n <div class=\"quml-alert__image quml-alert__image--wrong\" *ngIf=\"alertType === 'wrong'\">\n <div class=\"quml-alert__icon-container\">\n <img class=\"quml-alert__icon\" src=\"assets/quml-wrong.svg\" alt=\"Wrong Answer\">\n </div>\n <div class=\"quml-alert__icon-empty\"></div>\n <img class=\"quml-alert__banner\" src=\"assets/banner-wrong.svg\" alt=\"\">\n </div>\n \n \n\n <div class=\"quml-alert__solution-container\">\n <div class=\"quml-alert__try-again\" *ngIf=\"alertType === 'wrong'\">\n <span tabindex=\"0\" id=\"wrongButton\" *ngIf=\"alertType === 'wrong'\" (click)=\"close('tryAgain')\" (keyup.enter)=\"close('tryAgain')\" aria-label=\"Try again\">Try again</span>\n <!-- TODO: should add some label for correct response when solution is off <span *ngIf=\"alertType === 'correct' && !showSolutionButton\">Correct</span> --> \n </div>\n <div class=\"quml-alert__view-solution\" *ngIf=\"showSolutionButton\">\n <span tabindex=\"0\" id=\"correctButton\" (click)=\"viewSolution()\" (keyup.enter)=\"viewSolution()\" aria-label=\"View Solution\">View Solution</span>\n </div>\n </div>\n\n <div *ngIf=\"isHintAvailable\" class=\"quml-alert__view-hint quml-alert__view-hint--disabled\">\n <img tabindex=\"0\" id=\"hintButton\" class=\"view-hint-icon\" (click)=\"viewHint()\" (keyup.enter)=\"viewHint()\" src=\"assets/view-hint.svg\" alt=\"View Hint logo\">\n </div>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'quml-close',\n templateUrl: './close.component.html'\n})\nexport class CloseComponent {}\n","<svg width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Icon 24px</title>\n <g id=\"PDF-Player\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"pdf-portrait-pop\" transform=\"translate(-320.000000, -397.000000)\">\n <g id=\"Group-18-Copy\" transform=\"translate(0.000000, 381.000000)\">\n <g id=\"Icon-24px\" transform=\"translate(320.000000, 16.000000)\">\n <polygon id=\"Shape\" fill=\"#000000\" points=\"19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12\"></polygon>\n <polygon id=\"Shape\" points=\"0 0 24 0 24 24 0 24\"></polygon>\n </g>\n </g>\n </g>\n </g>\n</svg>","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\nimport { UtilService } from '../util-service';\n@Component({\n selector: 'quml-mcq-solutions',\n templateUrl: './mcq-solutions.component.html',\n styleUrls: ['./mcq-solutions.component.scss']\n})\nexport class McqSolutionsComponent implements AfterViewInit {\n @Input() question: any;\n @Input() options: any;\n @Input() solutions: any;\n @Input() baseUrl: string;\n @Input() media: any;\n @Input() identifier: string;\n @Output() close = new EventEmitter();\n @ViewChild('solutionVideoPlayer' , {static: true}) solutionVideoPlayer: ElementRef;\n \n showVideoSolution: boolean;\n previousActiveElement: HTMLElement;\n \n constructor(private utilService: UtilService){}\n\n closeSolution() {\n if (this.solutionVideoPlayer) {\n this.solutionVideoPlayer.nativeElement.pause();\n }\n this.close.emit({\n close: true\n });\n }\n\n ngAfterViewInit() {\n this.utilService.updateSourceOfVideoElement(this.baseUrl, this.media, this.identifier);\n }\n\n}\n","<div class=\"solutions\">\n <div class=\"close-icon\" role=\"button\" tabindex=\"0\" aria-label=\"Close\" (click)=\"closeSolution()\" (keydown.enter)=\"closeSolution()\">\n <quml-close tabindex=\"-1\"></quml-close>\n </div>\n <div class=\"solution-header\">Question</div>\n <div [innerHtml]=\"question | safeHtml\"></div>\n <div class=\"solution-header\">Options</div>\n <div class=\"solution-options-container\">\n <div class=\"solution-options\" *ngFor=\"let option of options\">\n <div [innerHtml]=\"option.label | safeHtml\"></div>\n </div>\n</div>\n <ng-container *ngIf=\"solutions\">\n <div class=\"solution-header\">Solution</div>\n <div *ngIf=\"!showVideoSolution\">\n <div *ngFor=\"let solution of solutions | keyvalue\">\n <div [innerHtml]=\"solution.value | safeHtml\"></div>\n </div>\n </div>\n</ng-container>\n <div class=\"scoreboard-button-container\">\n <button type=\"submit\" class=\"sb-btn sb-btn-primary sb-btn-normal sb-btn-radius\" (click)=\"closeSolution()\">Done</button>\n </div>\n</div>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'quml-audio',\n templateUrl: './audio.component.html'\n})\nexport class AudioComponent {\n\n}\n","<svg width=\"36px\" height=\"36px\" viewBox=\"0 0 36 36\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>audio play</title>\n <defs>\n <rect id=\"path-1\" x=\"0\" y=\"0\" width=\"36\" height=\"36\" rx=\"18\"></rect>\n <filter x=\"-4.2%\" y=\"-4.2%\" width=\"108.3%\" height=\"108.3%\" filterUnits=\"objectBoundingBox\" id=\"filter-2\">\n <feGaussianBlur stdDeviation=\"1\" in=\"SourceAlpha\" result=\"shadowBlurInner1\"></feGaussianBlur>\n <feOffset dx=\"0\" dy=\"-1\" in=\"shadowBlurInner1\" result=\"shadowOffsetInner1\"></feOffset>\n <feComposite in=\"shadowOffsetInner1\" in2=\"SourceAlpha\" operator=\"arithmetic\" k2=\"-1\" k3=\"1\" result=\"shadowInnerInner1\"></feComposite>\n <feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\" type=\"matrix\" in=\"shadowInnerInner1\"></feColorMatrix>\n </filter>\n </defs>\n <g id=\"audio-play\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Rectangle-5-Copy-2\" fill-rule=\"nonzero\">\n <use fill=\"#FFFFFF\" xlink:href=\"#path-1\"></use>\n <use fill-opacity=\"1\" filter=\"url(#filter-2)\" xlink:href=\"#path-1\"></use>\n <rect stroke-opacity=\"0.484156469\" stroke=\"#C3C8DB\" stroke-width=\"2\" stroke-linejoin=\"square\" x=\"1\" y=\"1\" width=\"34\" height=\"34\" rx=\"17\"></rect>\n </g>\n <path d=\"M19.483871,8.64533333 C23.6232258,9.616 26.7096774,13.4346667 26.7096774,18 C26.7096774,22.5653333 23.6232258,26.384 19.483871,27.3546667 L19.483871,27.3546667 L19.483871,25.1573333 C22.4670968,24.24 24.6451613,21.3813333 24.6451613,18 C24.6451613,14.6186667 22.4670968,11.76 19.483871,10.8426667 L19.483871,10.8426667 Z M17.4193548,9.46666667 L17.4193548,26.5333333 L12.2580645,21.2 L8.12903226,21.2 L8.12903226,14.8 L12.2580645,14.8 L17.4193548,9.46666667 Z M19.483871,13.7013333 C21.0116129,14.4906667 22.0645161,16.112 22.0645161,18 C22.0645161,19.888 21.0116129,21.5093333 19.483871,22.288 L19.483871,22.288 Z\" id=\"Combined-Shape\" fill=\"#6D7278\"></path>\n </g>\n</svg>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'quml-wrong',\n templateUrl: './wrong.component.html'\n})\nexport class WrongComponent {}\n","<svg width=\"48px\" height=\"48px\" viewBox=\"0 0 48 48\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>wrong</title>\n <defs>\n <linearGradient x1=\"0%\" y1=\"0%\" x2=\"101.719666%\" y2=\"100%\" id=\"linearGradient-1\">\n <stop stop-color=\"#F1635D\" offset=\"0%\"></stop>\n <stop stop-color=\"#F97A74\" offset=\"100%\"></stop>\n </linearGradient>\n </defs>\n <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"wrong\">\n <circle id=\"Oval\" fill=\"#f77f79\" fill-rule=\"nonzero\" opacity=\"0.900000036\" cx=\"24\" cy=\"24\" r=\"24\"></circle>\n <polygon id=\"Shape\" fill=\"#fff\" points=\"36.0349854 14.4171429 33.6107955 12 24 21.5828571 14.3892045 12 11.9650146 14.4171429 21.5758101 24 11.9650146 33.5828571 14.3892045 36 24 26.4171429 33.6107955 36 36.0349854 33.5828571 26.4241899 24\"></polygon>\n </g>\n </g>\n</svg>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'quml-menu',\n templateUrl: './menu.component.html'\n})\nexport class MenuComponent {}\n","<svg width=\"18px\" height=\"12px\" viewBox=\"0 0 18 12\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Shape</title>\n <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"icon/menu\" fill=\"#333333\">\n <path d=\"M0,12 L18,12 L18,10 L0,10 L0,12 L0,12 Z M0,7 L18,7 L18,5 L0,5 L0,7 L0,7 Z M0,0 L0,2 L18,2 L18,0 L0,0 L0,0 Z\" id=\"Shape\"></path>\n </g>\n </g>\n</svg>","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { errorCode, errorMessage, ErrorService } from '@project-sunbird/sunbird-player-sdk-v9';\nimport * as _ from 'lodash-es';\nimport { CarouselComponent } from 'ngx-bootstrap/carousel';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { QumlPlayerConfig, IParentConfig, IAttempts } from '../quml-library-interface';\nimport { ViewerService } from '../services/viewer-service/viewer-service';\nimport { eventName, pageId, TelemetryType, Cardinality, QuestionType } from '../telemetry-constants';\nimport { DEFAULT_SCORE, COMPATABILITY_LEVEL } from '../player-constants';\nimport { UtilService } from '../util-service';\n\n@Component({\n selector: 'quml-section-player',\n templateUrl: './section-player.component.html',\n styleUrls: ['./section-player.component.scss', './../startpage/sb-ckeditor-styles.scss']\n})\nexport class SectionPlayerComponent implements OnChanges, AfterViewInit {\n\n @Input() sectionConfig: QumlPlayerConfig;\n @Input() attempts: IAttempts;\n @Input() jumpToQuestion;\n @Input() mainProgressBar;\n @Input() sectionIndex = 0;\n @Input() parentConfig: IParentConfig;\n\n @Output() playerEvent = new EventEmitter<any>();\n @Output() sectionEnd = new EventEmitter<any>();\n @Output() showScoreBoard = new EventEmitter<any>();\n\n @ViewChild('myCarousel', { static: false }) myCarousel: CarouselComponent;\n @ViewChild('imageModal', { static: true }) imageModal: ElementRef;\n @ViewChild('questionSlide', { static: false }) questionSlide: ElementRef;\n\n destroy$: Subject<boolean> = new Subject<boolean>();\n loadView = false;\n showContentError = false;\n noOfTimesApiCalled = 0;\n currentSlideIndex = 0;\n showStartPage = true;\n threshold: number;\n questions = [];\n questionIds: string[];\n noOfQuestions: number;\n initialTime: number;\n timeLimit: any;\n warningTime: number;\n showWarningTimer: boolean;\n showTimer: any;\n showFeedBack: boolean;\n showUserSolution: boolean;\n startPageInstruction: string;\n maxScore: number;\n points: number;\n initializeTimer: boolean;\n linearNavigation: boolean;\n showHints: any;\n allowSkip: boolean;\n progressBarClass = [];\n currentQuestionsMedia: any;\n disableNext: boolean;\n endPageReached: boolean;\n tryAgainClicked = false;\n currentOptionSelected: any;\n carouselConfig = {\n NEXT: 1,\n PREV: 2\n };\n active = false;\n showAlert: boolean;\n currentOptions: any;\n currentQuestion: any;\n currentQuestionIndetifier: string;\n media: any;\n currentSolutions: any;\n showSolution: any;\n optionSelectedObj: any;\n intervalRef: any;\n alertType: string;\n infoPopup: boolean;\n stopAutoNavigation: boolean;\n jumpSlideIndex: any;\n showQuestions = false;\n showZoomModal = false;\n zoomImgSrc: string;\n imageZoomCount = 100;\n showRootInstruction = true;\n slideDuration = 0;\n initialSlideDuration: number;\n disabledHandle: any;\n isAssessEventRaised = false;\n isShuffleQuestions = false;\n shuffleOptions: boolean;\n playerContentCompatibiltyLevel = COMPATABILITY_LEVEL;\n\n constructor(\n public viewerService: ViewerService,\n public utilService: UtilService,\n private cdRef: ChangeDetectorRef,\n public errorService: ErrorService\n ) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n /* istanbul ignore else */\n if (changes && Object.values(changes)[0].firstChange) {\n this.subscribeToEvents();\n }\n this.viewerService.sectionConfig = this.sectionConfig;\n this.setConfig();\n }\n\n ngAfterViewInit() {\n this.viewerService.raiseStartEvent(0);\n this.viewerService.raiseHeartBeatEvent(eventName.startPageLoaded, 'impression', 0);\n }\n\n private subscribeToEvents(): void {\n this.viewerService.qumlPlayerEvent\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n this.playerEvent.emit(res);\n });\n\n this.viewerService.qumlQuestionEvent\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n\n if (res?.error) {\n let traceId;\n if (_.has(this.sectionConfig, 'config')) {\n traceId = this.sectionConfig.config;\n }\n if (navigator.onLine && this.viewerService.isAvailableLocally) {\n this.viewerService.raiseExceptionLog(errorCode.contentLoadFails, errorMessage.contentLoadFails,\n new Error(errorMessage.contentLoadFails), traceId);\n } else {\n this.viewerService.raiseExceptionLog(errorCode.internetConnectivity, errorMessage.internetConnectivity,\n new Error(errorMessage.internetConnectivity), traceId);\n }\n this.showContentError = true;\n return;\n }\n\n if (!res?.questions) {\n return;\n }\n const unCommonQuestions = _.xorBy(this.questions, res.questions, 'identifier');\n this.questions = _.uniqBy(this.questions.concat(unCommonQuestions), 'identifier');\n this.sortQuestions();\n this.viewerService.updateSectionQuestions(this.sectionConfig.metadata.identifier, this.questions);\n this.cdRef.detectChanges();\n this.noOfTimesApiCalled++;\n this.loadView = true;\n if (this.currentSlideIndex > 0 && this.myCarousel) {\n this.myCarousel.selectSlide(this.currentSlideIndex);\n if (this.questions[this.currentSlideIndex - 1]) {\n this.currentQuestionsMedia = this.questions[this.currentSlideIndex - 1]?.media;\n this.setImageZoom();\n this.highlightQuestion();\n }\n }\n\n if (this.currentSlideIndex === 0) {\n if (this.showStartPage) {\n this.active = this.sectionIndex === 0;\n } else {\n setTimeout(() => { this.nextSlide(); });\n }\n }\n this.removeAttribute();\n });\n }\n\n private setConfig() {\n this.noOfTimesApiCalled = 0;\n this.currentSlideIndex = 0;\n this.active = this.currentSlideIndex === 0 && this.sectionIndex === 0 && this.showStartPage;\n\n /* istanbul ignore else */\n if (this.myCarousel) {\n this.myCarousel.selectSlide(this.currentSlideIndex);\n }\n this.threshold = this.sectionConfig?.context?.threshold || 3;\n this.questionIds = _.cloneDeep(this.sectionConfig.metadata.childNodes);\n\n /* istanbul ignore else */\n if (this.parentConfig.isReplayed) {\n this.initializeTimer = true;\n this.viewerService.raiseStartEvent(0);\n this.viewerService.raiseHeartBeatEvent(eventName.startPageLoaded, 'impression', 0);\n this.disableNext = false;\n this.currentSlideIndex = 0;\n this.myCarousel.selectSlide(0);\n this.showRootInstruction = true;\n this.currentQuestionsMedia = _.get(this.questions[0], 'media');\n this.setImageZoom();\n this.loadView = true;\n this.removeAttribute();\n\n setTimeout(() => {\n const menuBtn: HTMLElement = document.querySelector('#overlay-button');\n /* istanbul ignore else */\n if (menuBtn) {\n menuBtn.focus({ preventScroll: true });\n }\n }, 200);\n }\n\n this.shuffleOptions = this.sectionConfig.config?.shuffleOptions;\n this.isShuffleQuestions = this.sectionConfig.metadata.shuffle;\n this.noOfQuestions = this.questionIds.length;\n this.viewerService.initialize(this.sectionConfig, this.threshold, this.questionIds, this.parentConfig);\n this.checkCompatibilityLevel(this.sectionConfig.metadata.compatibilityLevel);\n this.timeLimit = this.sectionConfig.metadata?.timeLimits?.questionSet?.max || 0;\n this.warningTime = this.timeLimit ? (this.timeLimit - (this.timeLimit * this.parentConfig.warningTime / 100)) : 0;\n this.showWarningTimer = this.parentConfig.showWarningTimer;\n this.showTimer = this.sectionConfig.metadata?.showTimer;\n\n if (this.sectionConfig.metadata?.showFeedback) {\n this.showFeedBack = this.sectionConfig.metadata?.showFeedback; // prioritize the section level config\n } else {\n this.showFeedBack = this.parentConfig.showFeedback; // Fallback to parent config\n }\n\n this.showUserSolution = this.sectionConfig.metadata?.showSolutions;\n this.startPageInstruction = this.sectionConfig.metadata?.instructions || this.parentConfig.instructions;\n this.linearNavigation = this.sectionConfig.metadata.navigationMode === 'non-linear' ? false : true;\n this.showHints = this.sectionConfig.metadata?.showHints;\n this.points = this.sectionConfig.metadata?.points;\n\n this.allowSkip = this.sectionConfig.metadata?.allowSkip?.toLowerCase() !== 'no';\n this.showStartPage = this.sectionConfig.metadata?.showStartPage?.toLowerCase() !== 'no';\n this.progressBarClass = this.parentConfig.isSectionsAvailable ? this.mainProgressBar.find(item => item.isActive)?.children :\n this.mainProgressBar;\n\n if (this.progressBarClass) {\n this.progressBarClass.forEach(item => item.showFeedback = this.showFeedBack);\n }\n\n this.questions = this.viewerService.getSectionQuestions(this.sectionConfig.metadata.identifier);\n this.sortQuestions();\n this.viewerService.updateSectionQuestions(this.sectionConfig.metadata.identifier, this.questions);\n this.resetQuestionState();\n if (this.jumpToQuestion) {\n this.goToQuestion(this.jumpToQuestion);\n } else if (this.threshold === 1) {\n this.viewerService.getQuestion();\n } else if (this.threshold > 1) {\n this.viewerService.getQuestions();\n }\n\n if (!this.sectionConfig.metadata?.children?.length) {\n this.loadView = true;\n this.disableNext = true;\n }\n\n if (!this.initializeTimer) {\n this.initializeTimer = true;\n }\n this.initialTime = this.initialSlideDuration = new Date().getTime();\n }\n\n removeAttribute() {\n setTimeout(() => {\n const firstSlide: HTMLElement = document.querySelector('.carousel.slide');\n /* istanbul ignore else */\n if (firstSlide) {\n firstSlide.removeAttribute(\"tabindex\");\n }\n }, 100);\n }\n\n sortQuestions() {\n /* istanbul ignore else */\n if (this.questions.length && this.questionIds.length) {\n const ques = [];\n this.questionIds.forEach((questionId) => {\n const que = this.questions.find(question => question.identifier === questionId);\n /* istanbul ignore else */\n if (que) {\n ques.push(que);\n }\n });\n this.questions = ques;\n }\n }\n\n createSummaryObj() {\n const classObj = _.groupBy(this.progressBarClass, 'class');\n return {\n skipped: classObj?.skipped?.length || 0,\n correct: classObj?.correct?.length || 0,\n wrong: classObj?.wrong?.length || 0,\n partial: classObj?.partial?.length || 0\n };\n }\n\n nextSlide() {\n this.currentQuestionsMedia = _.get(this.questions[this.currentSlideIndex], 'media');\n this.getQuestion();\n this.viewerService.raiseHeartBeatEvent(eventName.nextClicked, TelemetryType.interact, this.myCarousel.getCurrentSlideIndex() + 1);\n this.viewerService.raiseHeartBeatEvent(eventName.nextClicked, TelemetryType.impression, this.myCarousel.getCurrentSlideIndex() + 1);\n\n /* istanbul ignore else */\n if (this.currentSlideIndex !== this.questions.length) {\n this.currentSlideIndex = this.currentSlideIndex + 1;\n }\n\n /* istanbul ignore else */\n if (this.myCarousel.isLast(this.myCarousel.getCurrentSlideIndex()) || this.noOfQuestions === this.myCarousel.getCurrentSlideIndex()) {\n this.calculateScore();\n }\n\n /* istanbul ignore else */\n if (this.myCarousel.getCurrentSlideIndex() > 0 &&\n this.questions[this.myCarousel.getCurrentSlideIndex() - 1].qType === QuestionType.mcq && this.currentOptionSelected) {\n const option = this.currentOptionSelected?.option ? this.currentOptionSelected['option'] : undefined;\n const identifier = this.questions[this.myCarousel.getCurrentSlideIndex() - 1].identifier;\n const qType = this.questions[this.myCarousel.getCurrentSlideIndex() - 1].qType;\n this.viewerService.raiseResponseEvent(identifier, qType, option);\n }\n\n /* istanbul ignore else */\n if (this.questions[this.myCarousel.getCurrentSlideIndex()]) {\n this.setSkippedClass(this.myCarousel.getCurrentSlideIndex());\n }\n\n /* istanbul ignore else */\n if (this.myCarousel.getCurrentSlideIndex() === this.noOfQuestions) {\n this.clearTimeInterval();\n this.emitSectionEnd();\n return;\n }\n this.myCarousel.move(this.carouselConfig.NEXT);\n this.setImageZoom();\n this.resetQuestionState();\n this.clearTimeInterval();\n }\n\n prevSlide() {\n this.disableNext = false;\n this.currentSolutions = undefined;\n this.viewerService.raiseHeartBeatEvent(eventName.prevClicked, TelemetryType.interact, this.myCarousel.getCurrentSlideIndex() - 1);\n this.showAlert = false;\n\n /* istanbul ignore else */\n if (this.currentSlideIndex !== this.questions.length) {\n this.currentSlideIndex = this.currentSlideIndex + 1;\n }\n\n if (this.myCarousel.getCurrentSlideIndex() + 1 === this.noOfQuestions && this.endPageReached) {\n this.endPageReached = false;\n } else {\n this.myCarousel.move(this.carouselConfig.PREV);\n }\n this.currentSlideIndex = this.myCarousel.getCurrentSlideIndex();\n this.active = this.currentSlideIndex === 0 && this.sectionIndex === 0 && this.showStartPage;\n this.currentQuestionsMedia = _.get(this.questions[this.myCarousel.getCurrentSlideIndex() - 1], 'media');\n this.setImageZoom();\n this.setSkippedClass(this.myCarousel.getCurrentSlideIndex() - 1);\n }\n\n getQuestion() {\n if (this.myCarousel.getCurrentSlideIndex() > 0\n && ((this.threshold * this.noOfTimesApiCalled) - 1) === this.myCarousel.getCurrentSlideIndex()\n && this.threshold * this.noOfTimesApiCalled >= this.questions.length && this.threshold > 1) {\n this.viewerService.getQuestions();\n }\n\n if (this.myCarousel.getCurrentSlideIndex() > 0\n && this.questions[this.myCarousel.getCurrentSlideIndex()] === undefined && this.threshold > 1) {\n this.viewerService.getQuestions();\n }\n\n if (this.threshold === 1 && this.myCarousel.getCurrentSlideIndex() >= 0) {\n this.viewerService.getQuestion();\n }\n }\n\n resetQuestionState() {\n this.active = false;\n this.showAlert = false;\n this.optionSelectedObj = undefined;\n this.currentOptionSelected = undefined;\n this.currentQuestion = undefined;\n this.currentOptions = undefined;\n this.currentSolutions = undefined;\n }\n\n activeSlideChange(event) {\n this.initialSlideDuration = new Date().getTime();\n this.isAssessEventRaised = false;\n const questionElement: HTMLElement = document.querySelector('li.progressBar-border');\n const progressBarContainer: HTMLElement = document.querySelector(\".lanscape-mode-right\");\n\n /* istanbul ignore else */\n if (progressBarContainer && questionElement && !this.parentConfig.isReplayed) {\n this.utilService.scrollParentToChild(progressBarContainer, questionElement);\n }\n\n const contentElement: HTMLElement = document.querySelector(\".landscape-content\");\n if (contentElement) {\n contentElement.scrollTop = 0;\n }\n\n this.viewerService.pauseVideo();\n }\n\n nextSlideClicked(event) {\n if (this.showRootInstruction && this.parentConfig.isSectionsAvailable) {\n this.showRootInstruction = false;\n return;\n }\n if (this.myCarousel.getCurrentSlideIndex() === 0) {\n return this.nextSlide();\n }\n /* istanbul ignore else */\n if (event?.type === 'next') {\n this.validateSelectedOption(this.optionSelectedObj, 'next');\n }\n }\n\n previousSlideClicked(event) {\n /* istanbul ignore else */\n if (event.event === 'previous clicked') {\n if (this.optionSelectedObj && this.showFeedBack) {\n this.stopAutoNavigation = false;\n this.validateSelectedOption(this.optionSelectedObj, 'previous');\n } else {\n this.stopAutoNavigation = true;\n if (this.currentSlideIndex === 0 && this.parentConfig.isSectionsAvailable && this.getCurrentSectionIndex() > 0) {\n const previousSectionId = this.mainProgressBar[this.getCurrentSectionIndex() - 1].identifier;\n this.jumpToSection(previousSectionId);\n return;\n }\n this.prevSlide();\n }\n }\n }\n\n updateScoreForShuffledQuestion() {\n const currentIndex = this.myCarousel.getCurrentSlideIndex() - 1;\n\n if (this.isShuffleQuestions) {\n this.updateScoreBoard(currentIndex, 'correct', undefined, DEFAULT_SCORE);\n }\n }\n\n getCurrentSectionIndex(): number {\n const currentSectionId = this.sectionConfig.metadata.identifier;\n return this.mainProgressBar.findIndex(section => section.identifier === currentSectionId);\n }\n\n goToSlideClicked(event, index) {\n /* istanbul ignore else */\n if (!this.progressBarClass?.length) {\n /* istanbul ignore else */\n if (index === 0) {\n this.jumpSlideIndex = 0;\n this.goToSlide(this.jumpSlideIndex);\n }\n return;\n }\n event.stopPropagation();\n this.active = false;\n this.jumpSlideIndex = index;\n if (this.optionSelectedObj && this.showFeedBack) {\n this.stopAutoNavigation = false;\n this.validateSelectedOption(this.optionSelectedObj, 'jump');\n } else {\n this.stopAutoNavigation = true;\n this.goToSlide(this.jumpSlideIndex);\n }\n }\n\n onEnter(event, index) {\n /* istanbul ignore else */\n if (event.keyCode === 13) {\n event.stopPropagation();\n this.goToSlideClicked(event, index);\n }\n }\n\n jumpToSection(identifier: string) {\n this.showRootInstruction = false;\n this.emitSectionEnd(false, identifier);\n }\n\n onSectionEnter(event, identifier: string) {\n /* istanbul ignore else */\n if (event.keyCode === 13) {\n event.stopPropagation();\n /* istanbul ignore else */\n if (this.optionSelectedObj) {\n this.validateSelectedOption(this.optionSelectedObj, 'jump');\n }\n this.jumpToSection(identifier);\n }\n }\n\n onScoreBoardClicked() {\n this.viewerService.updateSectionQuestions(this.sectionConfig.metadata.identifier, this.questions);\n this.showScoreBoard.emit();\n }\n\n onScoreBoardEnter(event: KeyboardEvent) {\n event.stopPropagation();\n /* istanbul ignore else */\n if (event.key === 'Enter') {\n this.onScoreBoardClicked();\n }\n }\n\n focusOnNextButton() {\n setTimeout(() => {\n const nextBtn: HTMLElement = document.querySelector('.quml-navigation__next');\n /* istanbul ignore else */\n if (nextBtn) {\n nextBtn.focus({ preventScroll: true });\n }\n }, 100);\n }\n\n getOptionSelected(optionSelected) {\n /* istanbul ignore else */\n if (optionSelected.cardinality === Cardinality.single && JSON.stringify(this.currentOptionSelected) === JSON.stringify(optionSelected)) {\n return; // Same option selected\n }\n this.focusOnNextButton();\n this.active = true;\n this.currentOptionSelected = optionSelected;\n const currentIndex = this.myCarousel.getCurrentSlideIndex() - 1;\n this.viewerService.raiseHeartBeatEvent(eventName.optionClicked, TelemetryType.interact, this.myCarousel.getCurrentSlideIndex());\n\n // This optionSelected comes empty whenever the try again is clicked on feedback popup\n if (_.isEmpty(optionSelected?.option)) {\n this.optionSelectedObj = undefined;\n this.currentSolutions = undefined;\n this.updateScoreBoard(currentIndex, 'skipped');\n } else {\n this.optionSelectedObj = optionSelected;\n this.isAssessEventRaised = false;\n this.currentSolutions = !_.isEmpty(optionSelected.solutions) ? optionSelected.solutions : undefined;\n }\n this.currentQuestionIndetifier = this.questions[currentIndex].identifier;\n this.media = _.get(this.questions[currentIndex], 'media', []);\n \n /* istanbul ignore else */\n if (!this.showFeedBack) {\n this.validateSelectedOption(this.optionSelectedObj);\n }\n }\n\n durationEnds() {\n this.showSolution = false;\n this.showAlert = false;\n this.viewerService.pauseVideo();\n this.emitSectionEnd(true);\n }\n\n private checkCompatibilityLevel(compatibilityLevel) {\n /* istanbul ignore else */\n if (compatibilityLevel) {\n // TODO: It is a temporary fix for IQ-679 or ED-3398\n // Before these changes we were calling errorService.checkContentCompatibility\n const checkContentCompatible = this.checkContentCompatibility(compatibilityLevel);\n\n /* istanbul ignore else */\n if (!checkContentCompatible.isCompitable) {\n this.viewerService.raiseExceptionLog(errorCode.contentCompatibility, errorMessage.contentCompatibility,\n checkContentCompatible.error, this.sectionConfig?.config?.traceId);\n }\n }\n }\n\n checkContentCompatibility(currentCompatibilityLevel: number) {\n if (currentCompatibilityLevel > this.playerContentCompatibiltyLevel) {\n const compatibilityError = new Error();\n compatibilityError.message = `Player supports ${this.playerContentCompatibiltyLevel}\n but content compatibility is ${currentCompatibilityLevel}`;\n compatibilityError.name = 'contentCompatibily';\n return { error: compatibilityError, isCompitable: false };\n } else {\n return { error: null, isCompitable: true };\n }\n }\n\n emitSectionEnd(isDurationEnded: boolean = false, jumpToSection?: string) {\n const eventObj: any = {\n summary: this.createSummaryObj(),\n score: this.calculateScore(),\n durationSpent: this.utilService.getTimeSpentText(this.initialTime),\n slideIndex: this.myCarousel.getCurrentSlideIndex(),\n isDurationEnded,\n };\n if (jumpToSection) {\n eventObj.jumpToSection = jumpToSection;\n }\n this.viewerService.updateSectionQuestions(this.sectionConfig.metadata.identifier, this.questions);\n this.sectionEnd.emit(eventObj);\n }\n\n closeAlertBox(event) {\n if (event?.type === 'close') {\n this.viewerService.raiseHeartBeatEvent(eventName.closedFeedBack, TelemetryType.interact, this.myCarousel.getCurrentSlideIndex());\n } else if (event?.type === 'tryAgain') {\n this.tryAgainClicked = true;\n setTimeout(() => {\n this.tryAgainClicked = false;\n }, 2000);\n this.viewerService.raiseHeartBeatEvent(eventName.tryAgain, TelemetryType.interact, this.myCarousel.getCurrentSlideIndex());\n }\n this.showAlert = false;\n }\n\n setSkippedClass(index) {\n if (this.progressBarClass && _.get(this.progressBarClass[index], 'class') === 'unattempted') {\n this.progressBarClass[index].class = 'skipped';\n }\n }\n\n toggleScreenRotate(event?: KeyboardEvent | MouseEvent) {\n this.viewerService.raiseHeartBeatEvent(eventName.deviceRotationClicked, TelemetryType.interact, this.myCarousel.getCurrentSlideIndex() + 1);\n }\n\n validateSelectedOption(option, type?: string) {\n const selectedOptionValue = option?.option?.value;\n const currentIndex = this.myCarousel.getCurrentSlideIndex() - 1;\n const isQuestionSkipAllowed = !this.optionSelectedObj &&\n this.allowSkip && this.utilService.getQuestionType(this.questions, currentIndex) === QuestionType.mcq;\n const isSubjectiveQuestion = this.utilService.getQuestionType(this.questions, currentIndex) === QuestionType.sa;\n const onStartPage = this.startPageInstruction && this.myCarousel.getCurrentSlideIndex() === 0;\n const isActive = !this.optionSelectedObj && this.active;\n const selectedQuestion = this.questions[currentIndex];\n const key = selectedQuestion.responseDeclaration ? this.utilService.getKeyValue(Object.keys(selectedQuestion.responseDeclaration)) : '';\n this.slideDuration = Math.round((new Date().getTime() - this.initialSlideDuration) / 1000);\n const getParams = () => {\n if (selectedQuestion.qType.toUpperCase() === QuestionType.mcq && selectedQuestion?.editorState?.options) {\n return selectedQuestion.editorState.options;\n } else if (selectedQuestion.qType.toUpperCase() === QuestionType.mcq && !_.isEmpty(selectedQuestion?.editorState)) {\n return [selectedQuestion?.editorState];\n } else {\n return [];\n }\n };\n const edataItem: any = {\n 'id': selectedQuestion.identifier,\n 'title': selectedQuestion.name,\n 'desc': selectedQuestion.description,\n 'type': selectedQuestion.qType.toLowerCase(),\n 'maxscore': key.length === 0 ? 0 : selectedQuestion.outcomeDeclaration.maxScore.defaultValue || 0,\n 'params': getParams()\n };\n\n /* istanbul ignore else */\n if (edataItem && this.parentConfig.isSectionsAvailable) {\n edataItem.sectionId = this.sectionConfig.metadata.identifier;\n }\n\n /* istanbul ignore else */\n if (!this.optionSelectedObj && !this.isAssessEventRaised && selectedQuestion.qType.toUpperCase() !== QuestionType.sa) {\n this.isAssessEventRaised = true;\n this.viewerService.raiseAssesEvent(edataItem, currentIndex + 1, 'No', 0, [], this.slideDuration);\n }\n\n if (this.optionSelectedObj) {\n this.currentQuestion = selectedQuestion.body;\n this.currentOptions = selectedQuestion.interactions[key].options;\n\n if (option.cardinality === Cardinality.single) {\n const correctOptionValue = Number(selectedQuestion.responseDeclaration[key].correctResponse.value);\n\n this.showAlert = true;\n if (option.option?.value === correctOptionValue) {\n const currentScore = this.getScore(currentIndex, key, true);\n if (!this.isAssessEventRaised) {\n this.isAssessEventRaised = true;\n this.viewerService.raiseAssesEvent(edataItem, currentIndex + 1, 'Yes', currentScore, [option.option], this.slideDuration);\n }\n this.alertType = 'correct';\n if (this.showFeedBack)\n this.correctFeedBackTimeOut(type);\n this.updateScoreBoard(currentIndex, 'correct', undefined, currentScore);\n } else {\n const currentScore = this.getScore(currentIndex, key, false, option);\n this.alertType = 'wrong';\n const classType = this.progressBarClass[currentIndex].class === 'partial' ? 'partial' : 'wrong';\n this.updateScoreBoard(currentIndex, classType, selectedOptionValue, currentScore);\n\n /* istanbul ignore else */\n if (!this.isAssessEventRaised) {\n this.isAssessEventRaised = true;\n this.viewerService.raiseAssesEvent(edataItem, currentIndex + 1, 'No', 0, [option.option], this.slideDuration);\n }\n }\n }\n if (option.cardinality === Cardinality.multiple) {\n const responseDeclaration = this.questions[currentIndex].responseDeclaration;\n const outcomeDeclaration = this.questions[currentIndex].outcomeDeclaration;\n const currentScore = this.utilService.getMultiselectScore(option.option, responseDeclaration, this.isShuffleQuestions, outcomeDeclaration);\n this.showAlert = true;\n if (currentScore === 0) {\n if (!this.isAssessEventRaised) {\n this.isAssessEventRaised = true;\n this.viewerService.raiseAssesEvent(edataItem, currentIndex + 1, 'No', 0, [option.option], this.slideDuration);\n }\n this.alertType = 'wrong';\n this.updateScoreBoard(currentIndex, 'wrong');\n } else {\n this.updateScoreBoard(currentIndex, 'correct', undefined, currentScore);\n if (!this.isAssessEventRaised) {\n this.isAssessEventRaised = true;\n this.viewerService.raiseAssesEvent(edataItem, currentIndex + 1, 'Yes', currentScore, [option.option], this.slideDuration);\n }\n if (this.showFeedBack)\n this.correctFeedBackTimeOut(type);\n this.alertType = 'correct';\n }\n }\n this.optionSelectedObj = undefined;\n } else if ((isQuestionSkipAllowed) || isSubjectiveQuestion || onStartPage || isActive) {\n if(!_.isUndefined(type)) {\n this.nextSlide();\n }\n } else if (this.startPageInstruction && !this.optionSelectedObj && !this.active && !this.allowSkip &&\n this.myCarousel.getCurrentSlideIndex() > 0 && this.utilService.getQuestionType(this.questions, currentIndex) === QuestionType.mcq\n && this.utilService.canGo(this.progressBarClass[this.myCarousel.getCurrentSlideIndex()])) {\n this.infoPopupTimeOut();\n } else if (!this.optionSelectedObj && !this.active && !this.allowSkip && this.myCarousel.getCurrentSlideIndex() >= 0\n && this.utilService.getQuestionType(this.questions, currentIndex) === QuestionType.mcq\n && this.utilService.canGo(this.progressBarClass[this.myCarousel.getCurrentSlideIndex()])) {\n this.infoPopupTimeOut();\n }\n }\n\n infoPopupTimeOut() {\n this.infoPopup = true;\n setTimeout(() => {\n this.infoPopup = false;\n }, 2000);\n }\n\n correctFeedBackTimeOut(type?: string) {\n this.intervalRef = setTimeout(() => {\n if (this.showAlert) {\n this.showAlert = false;\n if (!this.myCarousel.isLast(this.myCarousel.getCurrentSlideIndex()) && type === 'next') {\n this.nextSlide();\n } else if (type === 'previous' && !this.stopAutoNavigation) {\n this.prevSlide();\n } else if (type === 'jump' && !this.stopAutoNavigation) {\n this.goToSlide(this.jumpSlideIndex);\n } else if (this.myCarousel.isLast(this.myCarousel.getCurrentSlideIndex())) {\n this.endPageReached = true;\n this.emitSectionEnd();\n }\n }\n }, 4000);\n }\n\n goToSlide(index) {\n this.viewerService.raiseHeartBeatEvent(eventName.goToQuestion, TelemetryType.interact, this.myCarousel.getCurrentSlideIndex());\n this.disableNext = false;\n this.currentSlideIndex = index;\n this.showRootInstruction = false;\n if (index === 0) {\n this.optionSelectedObj = undefined;\n this.myCarousel.selectSlide(0);\n this.active = this.currentSlideIndex === 0 && this.sectionIndex === 0 && this.showStartPage;\n this.showRootInstruction = true;\n /* istanbul ignore else */\n if (!this.sectionConfig.metadata?.children?.length) {\n this.disableNext = true;\n }\n return;\n }\n this.currentQuestionsMedia = _.get(this.questions[this.currentSlideIndex - 1], 'media');\n this.setSkippedClass(this.currentSlideIndex - 1);\n /* istanbul ignore else */\n if (!this.initializeTimer) {\n this.initializeTimer = true;\n }\n\n if (this.questions[index - 1] === undefined) {\n this.showQuestions = false;\n this.viewerService.getQuestions(0, index);\n this.currentSlideIndex = index;\n } else if (this.questions[index - 1] !== undefined) {\n this.myCarousel.selectSlide(index);\n }\n this.setImageZoom();\n this.currentSolutions = undefined;\n this.highlightQuestion();\n }\n\n goToQuestion(event) {\n this.active = false;\n this.showRootInstruction = false;\n this.disableNext = false;\n this.initializeTimer = true;\n const index = event.questionNo;\n this.viewerService.getQuestions(0, index);\n this.currentSlideIndex = index;\n this.myCarousel.selectSlide(index);\n this.highlightQuestion();\n }\n\n highlightQuestion() {\n const currentQuestion = this.questions[this.currentSlideIndex - 1];\n const questionType = currentQuestion?.qType?.toUpperCase();\n const element: HTMLElement = document.getElementById(currentQuestion?.identifier);\n if (element && questionType) {\n let questionTitleElement: HTMLElement;\n\n switch (questionType) {\n case QuestionType.mcq:\n questionTitleElement = element.querySelector('.mcq-title');\n break;\n default:\n questionTitleElement = element.querySelector('.question-container');\n }\n\n if (questionTitleElement) {\n setTimeout(() => {\n questionTitleElement.focus({ preventScroll: true });\n }, 0);\n }\n }\n }\n\n getSolutions() {\n this.showAlert = false;\n this.viewerService.raiseHeartBeatEvent(eventName.showAnswer, TelemetryType.interact, this.myCarousel.getCurrentSlideIndex());\n this.viewerService.raiseHeartBeatEvent(eventName.showAnswer, TelemetryType.impression, this.myCarousel.getCurrentSlideIndex());\n const currentIndex = this.myCarousel.getCurrentSlideIndex() - 1;\n this.currentQuestion = this.questions[currentIndex].body;\n this.currentOptions = this.questions[currentIndex].interactions.response1.options;\n this.currentQuestionsMedia = _.get(this.questions[currentIndex], 'media');\n setTimeout(() => {\n this.setImageZoom();\n });\n setTimeout(() => {\n this.setImageHeightWidthClass();\n }, 100);\n /* istanbul ignore else */\n if (this.currentSolutions) {\n this.showSolution = true;\n }\n this.clearTimeInterval();\n }\n\n viewSolution() {\n this.viewerService.raiseHeartBeatEvent(eventName.viewSolutionClicked, TelemetryType.interact, this.myCarousel.getCurrentSlideIndex());\n this.showSolution = true;\n this.showAlert = false;\n this.currentQuestionsMedia = _.get(this.questions[this.myCarousel.getCurrentSlideIndex() - 1], 'media');\n setTimeout(() => {\n this.setImageZoom();\n this.setImageHeightWidthClass();\n });\n clearTimeout(this.intervalRef);\n }\n\n closeSolution() {\n this.setImageZoom();\n this.viewerService.raiseHeartBeatEvent(eventName.solutionClosed, TelemetryType.interact, this.myCarousel.getCurrentSlideIndex());\n this.showSolution = false;\n this.myCarousel.selectSlide(this.currentSlideIndex);\n this.focusOnNextButton();\n }\n\n viewHint() {\n this.viewerService.raiseHeartBeatEvent(eventName.viewHint, TelemetryType.interact, this.myCarousel.getCurrentSlideIndex());\n }\n\n onAnswerKeyDown(event: KeyboardEvent) {\n /* istanbul ignore else */\n if (event.key === 'Enter') {\n event.stopPropagation();\n this.getSolutions();\n }\n }\n\n showAnswerClicked(event, question?) {\n /* istanbul ignore else */\n if (event?.showAnswer) {\n this.focusOnNextButton();\n this.active = true;\n this.progressBarClass[this.myCarousel.getCurrentSlideIndex() - 1].class = 'correct';\n this.updateScoreForShuffledQuestion();\n /* istanbul ignore else */\n if (question) {\n const index = this.questions.findIndex(que => que.identifier === question.identifier);\n /* istanbul ignore else */\n if (index > -1) {\n this.questions[index].isAnswerShown = true;\n this.viewerService.updateSectionQuestions(this.sectionConfig.metadata.identifier, this.questions);\n }\n }\n this.viewerService.raiseHeartBeatEvent(eventName.showAnswer, TelemetryType.interact, pageId.shortAnswer);\n this.viewerService.raiseHeartBeatEvent(eventName.pageScrolled, TelemetryType.impression, this.myCarousel.getCurrentSlideIndex() - 1);\n }\n }\n\n getScore(currentIndex, key, isCorrectAnswer, selectedOption?) {\n /* istanbul ignore else */\n if (isCorrectAnswer) {\n if (this.isShuffleQuestions) {\n return DEFAULT_SCORE;\n }\n return this.questions[currentIndex].outcomeDeclaration.maxScore.defaultValue ?\n this.questions[currentIndex].outcomeDeclaration.maxScore.defaultValue : DEFAULT_SCORE;\n } else {\n const selectedOptionValue = selectedOption.option.value;\n const mapping = this.questions[currentIndex].responseDeclaration.mapping;\n let score = 0;\n\n /* istanbul ignore else */\n if (mapping) {\n mapping.forEach((val) => {\n if (selectedOptionValue === val.value) {\n score = val.score || 0;\n if (val.score) {\n this.progressBarClass[currentIndex].class = 'partial';\n }\n }\n });\n }\n return score;\n }\n }\n\n calculateScore() {\n return this.progressBarClass.reduce((accumulator, element) => accumulator + element.score, 0);\n }\n\n updateScoreBoard(index, classToBeUpdated, optionValue?, score?) {\n this.progressBarClass.forEach((ele) => {\n if (ele.index - 1 === index) {\n ele.class = classToBeUpdated;\n ele.score = score ? score : 0;\n\n /* istanbul ignore else */\n if (!this.showFeedBack) {\n ele.value = optionValue;\n }\n }\n });\n }\n\n /* End of score methods */\n\n /* Start of Image zoom related */\n setImageHeightWidthClass() {\n document.querySelectorAll('[data-asset-variable]').forEach(image => {\n image.removeAttribute('class');\n if (image.clientHeight > image.clientWidth) {\n image.setAttribute('class', 'portrait');\n } else if (image.clientHeight < image.clientWidth) {\n image.setAttribute('class', 'landscape');\n }\n // } else {\n // image.setAttribute('class', 'neutral');\n // }\n });\n }\n\n setImageZoom() {\n const index = this.myCarousel.getCurrentSlideIndex() - 1;\n const currentQuestionId = this.questions[index]?.identifier;\n document.querySelectorAll('[data-asset-variable]').forEach(image => {\n if(image.nodeName.toLowerCase() !== 'img') { return ;}\n const imageId = image.getAttribute('data-asset-variable');\n image.setAttribute('class', 'option-image');\n image.setAttribute('id', imageId);\n _.forEach(this.currentQuestionsMedia, (val) => {\n if (imageId === val.id) {\n if (this.parentConfig.isAvailableLocally && this.parentConfig.baseUrl) {\n let baseUrl = this.parentConfig.baseUrl;\n baseUrl = `${baseUrl.substring(0, baseUrl.lastIndexOf('/'))}/${this.sectionConfig.metadata.identifier}`;\n if (currentQuestionId) {\n image['src'] = `${baseUrl}/${currentQuestionId}/${val.src}`;\n }\n } else if (val.baseUrl) {\n image['src'] = val.baseUrl + val.src;\n }\n }\n });\n const divElement = document.createElement('div');\n divElement.setAttribute('class', 'magnify-icon');\n divElement.onclick = (event) => {\n this.viewerService.raiseHeartBeatEvent(eventName.zoomClicked, TelemetryType.interact, this.myCarousel.getCurrentSlideIndex());\n this.zoomImgSrc = image['src'];\n this.showZoomModal = true;\n const zoomImage = document.getElementById('imageModal');\n if (zoomImage.clientHeight > image.clientWidth) {\n zoomImage.setAttribute('class', 'portrait');\n } else if (image.clientHeight < image.clientWidth) {\n zoomImage.setAttribute('class', 'landscape');\n } else {\n zoomImage.setAttribute('class', 'neutral');\n }\n event.stopPropagation();\n };\n image.parentNode.insertBefore(divElement, image.nextSibling);\n });\n }\n\n zoomIn() {\n this.viewerService.raiseHeartBeatEvent(eventName.zoomInClicked, TelemetryType.interact, this.myCarousel.getCurrentSlideIndex());\n this.imageZoomCount = this.imageZoomCount + 10;\n this.setImageModalHeightWidth();\n }\n\n zoomOut() {\n this.viewerService.raiseHeartBeatEvent(eventName.zoomOutClicked, TelemetryType.interact, this.myCarousel.getCurrentSlideIndex());\n /* istanbul ignore else */\n if (this.imageZoomCount > 100) {\n this.imageZoomCount = this.imageZoomCount - 10;\n this.setImageModalHeightWidth();\n }\n }\n\n setImageModalHeightWidth() {\n this.imageModal.nativeElement.style.width = `${this.imageZoomCount}%`;\n this.imageModal.nativeElement.style.height = `${this.imageZoomCount}%`;\n }\n\n closeZoom() {\n this.viewerService.raiseHeartBeatEvent(eventName.zoomCloseClicked, TelemetryType.interact, this.myCarousel.getCurrentSlideIndex());\n document.getElementById('imageModal').removeAttribute('style');\n this.showZoomModal = false;\n }\n /* End of Image zoom related */\n\n clearTimeInterval() {\n if (this.intervalRef) {\n clearTimeout(this.intervalRef);\n }\n }\n\n @HostListener('window:beforeunload')\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n this.errorService.getInternetConnectivityError.unsubscribe();\n }\n}\n","<div class=\"quml-container\" *ngIf=\"loadView\" [hidden]=\"showZoomModal\">\n <div [hidden]=\"showSolution\" class=\"quml-landscape\">\n <quml-header class=\"main-header\" (durationEnds)=\"durationEnds()\" [disablePreviousNavigation]=\"linearNavigation\"\n [duration]=\"timeLimit\" [warningTime]=\"warningTime\" [showWarningTimer]=\"showWarningTimer\" [showTimer]=\"showTimer\" [showLegend]=\"parentConfig?.showLegend\"\n (nextSlideClicked)=\"nextSlideClicked($event)\" (prevSlideClicked)=\"previousSlideClicked($event)\"\n [currentSlideIndex]=\"currentSlideIndex\" [totalNoOfQuestions]=\"noOfQuestions\" [active]=\"active\"\n [showFeedBack]=\"showFeedBack\" [currentSolutions]=\"currentSolutions\" (showSolution)=\"viewSolution()\"\n [initializeTimer]=\"initializeTimer\" [replayed]=\"parentConfig?.isReplayed\" [disableNext]=\"disableNext\"\n [startPageInstruction]=\"startPageInstruction\" [attempts]=\"attempts\" [showStartPage]=\"showStartPage\"\n [showDeviceOrientation]=\"sectionConfig?.config?.showDeviceOrientation\" (toggleScreenRotate)=\"toggleScreenRotate()\">\n </quml-header>\n\n <div class=\"landscape-mode\">\n <div class=\"lanscape-mode-left\">\n <div class=\"current-slide\" *ngIf=\"currentSlideIndex !== 0\">\n {{myCarousel.getCurrentSlideIndex()}}/{{noOfQuestions}}\n </div>\n <div *ngIf=\"currentSolutions && showUserSolution\">\n <quml-ans (click)=\"getSolutions()\" (keydown)=\"onAnswerKeyDown($event)\"></quml-ans>\n </div>\n </div>\n <div class=\"landscape-content\">\n <carousel class=\"landscape-center\" [interval]=\"0\" [showIndicators]=\"false\" [noWrap]=\"true\" #myCarousel\n (activeSlideChange)=\"activeSlideChange($event)\">\n <slide>\n <quml-startpage\n [instructions]=\"showRootInstruction ? parentConfig?.instructions : sectionConfig.metadata?.instructions\"\n [points]=\"points\" [time]=\"showRootInstruction ? timeLimit : null\" [showTimer]=\"showTimer\"\n [totalNoOfQuestions]=\"showRootInstruction ? parentConfig?.questionCount : noOfQuestions\"\n [contentName]=\"showRootInstruction ? parentConfig?.contentName : parentConfig?.isSectionsAvailable ? sectionConfig?.metadata?.name : parentConfig?.contentName\">\n </quml-startpage>\n </slide>\n <slide *ngFor=\"let question of questions; let i= index\" #questionSlide>\n <div [id]=\"question.identifier\">\n <div *ngIf=\"question?.primaryCategory.toLowerCase() === 'multiple choice question'\">\n <quml-mcq [shuffleOptions]='shuffleOptions' [question]='question' [replayed]=\"parentConfig?.isReplayed\"\n (optionSelected)=\"getOptionSelected($event)\" [identifier]=\"question.id\" [tryAgain]=\"tryAgainClicked\">\n </quml-mcq>\n </div>\n <div *ngIf=\"question?.primaryCategory.toLowerCase() === 'subjective question'\">\n <quml-sa [questions]='question' [replayed]=\"parentConfig?.isReplayed\" [baseUrl]=\"parentConfig?.baseUrl\"\n (showAnswerClicked)=\"showAnswerClicked($event, question)\">\n </quml-sa>\n </div>\n </div>\n </slide>\n </carousel>\n </div>\n <div class=\"lanscape-mode-right\">\n <ul>\n <ng-container>\n <li class=\"showFeedBack-progressBar info-page hover-effect\" tabindex=\"0\"\n [ngClass]=\"(currentSlideIndex === 0) ? 'att-color progressBar-border': 'att-color' \"\n (keydown)=\"onEnter($event, 0)\" (click)=\"goToSlideClicked($event, 0)\">i\n </li>\n <li>\n <ul *ngIf=\"parentConfig?.isSectionsAvailable\" class=\"scoreboard-sections\">\n <li class=\"section relative\" *ngFor=\"let section of mainProgressBar; let i=index;\"\n attr.aria-label=\"section {{section?.index}}\" (click)=\"jumpToSection(section?.identifier)\"\n (keydown)=\"onSectionEnter($event, section?.identifier)\"\n [ngClass]=\"{'attempted' : section.class === 'attempted', 'partial': section.class === 'partial'}\">\n <label for=\"list-item-{{i}}\" class=\"progressBar-border\"\n [ngClass]=\"{'active' : section?.isActive && !showRootInstruction && section.class !== 'attempted'}\"\n tabindex=\"0\">{{section?.index}}</label>\n <ul *ngIf=\"section?.isActive && showFeedBack\">\n <li *ngFor=\"let question of progressBarClass; let j=index\" tabindex=\"0\"\n attr.aria-label=\"question number {{question?.index}}\"\n (click)=\"goToSlideClicked($event, question?.index)\" (keydown)=\"onEnter($event, question?.index)\"\n class=\"showFeedBack-progressBar\"\n [ngClass]=\"(j+1) === myCarousel.getCurrentSlideIndex() ? (question.class === 'skipped' ? 'progressBar-border' : 'progressBar-border ' + question.class) : question.class\">\n {{question?.index}}\n </li>\n </ul>\n <ul class=\"nonFeedback\" *ngIf=\"section?.isActive && !showFeedBack\">\n <li *ngFor=\"let question of progressBarClass; let j=index\" tabindex=\"0\"\n attr.aria-label=\"question number {{question?.index}}\"\n (click)=\"goToSlideClicked($event, question?.index)\" (keydown)=\"onEnter($event, question?.index)\"\n class=\"showFeedBack-progressBar\"\n [ngClass]=\"(j+1) === myCarousel.getCurrentSlideIndex() ? (question.class === 'skipped' ? 'progressBar-border' : 'att-color progressBar-border') : question.class === 'skipped' ? question.class: question.class === 'unattempted' ? '' : 'att-color'\">\n {{question?.index}}\n </li>\n </ul>\n </li>\n </ul>\n </li>\n <li>\n <ul class=\"singleContent\" *ngIf=\"!parentConfig?.isSectionsAvailable && showFeedBack\">\n <li *ngFor=\"let question of progressBarClass; let j=index\" tabindex=\"0\"\n attr.aria-label=\"question number {{question?.index}}\"\n (click)=\"goToSlideClicked($event, question?.index)\" (keydown)=\"onEnter($event, question?.index)\"\n class=\"showFeedBack-progressBar hover-effect\"\n [ngClass]=\"(j+1) === myCarousel.getCurrentSlideIndex() ? (question.class === 'skipped' ? 'progressBar-border' : 'progressBar-border ' + question.class) : question.class\">\n {{question?.index}}\n </li>\n </ul>\n </li>\n <li>\n <ul class=\"singleContent nonFeedback\" *ngIf=\"!parentConfig?.isSectionsAvailable && !showFeedBack\">\n <li *ngFor=\"let question of progressBarClass; let j=index\" tabindex=\"0\"\n attr.aria-label=\"question number {{question?.index}}\"\n (click)=\"goToSlideClicked($event, question?.index)\" (keydown)=\"onEnter($event, question?.index)\"\n class=\"showFeedBack-progressBar hover-effect\"\n [ngClass]=\"(j+1) === myCarousel.getCurrentSlideIndex() ? (question.class === 'skipped' ? 'progressBar-border' : 'att-color progressBar-border') : question.class === 'skipped' ? question.class: question.class === 'unattempted' ? '' : 'att-color'\">\n {{question?.index}}\n </li>\n </ul>\n </li>\n <li class=\"requiresSubmit cursor-pointer showFeedBack-progressBar hover-effect\" tabindex=\"0\"\n aria-label=\"scoreboard\" *ngIf=\"parentConfig.requiresSubmit && progressBarClass?.length\"\n (click)=\"disableNext = true; onScoreBoardClicked()\" (keydown)=\"onScoreBoardEnter($event)\">\n <img src=\"./assets/flag_inactive.svg\" alt=\"Flag logo: Show scoreboard\">\n </li>\n <!-- <li class=\"requiresSubmit\" *ngIf=\"loadScoreBoard && parentConfig.requiresSubmit\">\n <img src=\"./assets/flag_active.svg\" alt=\"\">\n </li> -->\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n\n <quml-alert *ngIf=\"showAlert && showFeedBack\" [alertType]=\"alertType\" [isHintAvailable]=\"showHints\"\n [showSolutionButton]=\"showUserSolution && currentSolutions\" (showSolution)=\"viewSolution()\" (showHint)=\"viewHint()\"\n (closeAlert)=\"closeAlertBox($event)\"></quml-alert>\n\n <quml-mcq-solutions *ngIf=\"showSolution\" [question]=\"currentQuestion\" [options]=\"currentOptions\"\n [solutions]=\"currentSolutions\" [baseUrl]=\"parentConfig?.baseUrl\" [media]=\"media\" [identifier]=\"currentQuestionIndetifier\" (close)=\"closeSolution()\"></quml-mcq-solutions>\n</div>\n\n<div class=\"info-popup\" *ngIf=\"infoPopup\">\n Please attempt the question\n</div>\n\n<sb-player-contenterror *ngIf=\"showContentError\"></sb-player-contenterror>\n\n\n<!-- Zoom -->\n<div class=\"image-viewer__overlay\" [hidden]=\"!showZoomModal\">\n <div class=\"image-viewer__close\" (click)=\"closeZoom()\">\n </div>\n <div class=\"image-viewer__container\">\n <img #imageModal id=\"imageModal\" class=\"image-viewer__img\" [src]=\"zoomImgSrc\" alt=\"Zoomed image\">\n </div>\n <div class=\"image-viewer__zoom\">\n <div class=\"image-viewer__zoomin\" (click)=\"zoomIn()\"></div>\n <div class=\"image-viewer__zoomout\" (click)=\"zoomOut()\"></div>\n </div>\n</div>","import { Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { contentErrorMessage } from '@project-sunbird/sunbird-player-sdk-v9/lib/player-utils/interfaces/errorMessage';\nimport { NextContent, ISideBarEvent } from '@project-sunbird/sunbird-player-sdk-v9/sunbird-player-sdk.interface';\nimport * as _ from 'lodash-es';\nimport { SectionPlayerComponent } from '../section-player/section-player.component';\nimport { IAttempts, IParentConfig, ISummary, QumlPlayerConfig } from './../quml-library-interface';\nimport { ViewerService } from './../services/viewer-service/viewer-service';\nimport { TransformationService } from '../services/transformation-service/transformation.service';\nimport { eventName, pageId, TelemetryType, MimeType } from './../telemetry-constants';\nimport { UtilService } from './../util-service';\nimport { fromEvent, Subscription } from 'rxjs';\nimport maintain from 'ally.js/esm/maintain/_maintain';\nimport { WARNING_TIME_CONFIG } from './../player-constants';\n@Component({\n selector: 'quml-main-player',\n templateUrl: './main-player.component.html',\n styleUrls: ['./main-player.component.scss']\n})\nexport class MainPlayerComponent implements OnInit, OnChanges {\n\n @Input() playerConfig: QumlPlayerConfig;\n @Output() playerEvent = new EventEmitter<any>();\n @Output() telemetryEvent = new EventEmitter<any>();\n\n @ViewChild(SectionPlayerComponent) sectionPlayer!: SectionPlayerComponent;\n\n isInitialized = false;\n isLoading = false;\n isSectionsAvailable = false;\n isMultiLevelSection = false;\n sections: any[] = [];\n sectionIndex = 0;\n activeSection: any;\n contentError: contentErrorMessage;\n parentConfig: IParentConfig = {\n loadScoreBoard: false,\n requiresSubmit: false,\n isSectionsAvailable: false,\n isReplayed: false,\n identifier: '',\n contentName: '',\n baseUrl: '',\n isAvailableLocally: false,\n instructions: {},\n questionCount: 0,\n sideMenuConfig: {\n enable: true,\n showShare: true,\n showDownload: false,\n showExit: false,\n },\n showFeedback: false,\n showLegend: true,\n warningTime: WARNING_TIME_CONFIG.DEFAULT_TIME,\n showWarningTimer: WARNING_TIME_CONFIG.SHOW_TIMER\n };\n\n showEndPage: boolean;\n showFeedBack: boolean;\n endPageReached = false;\n isEndEventRaised = false;\n isSummaryEventRaised = false;\n showReplay = true;\n\n attempts: IAttempts;\n mainProgressBar = [];\n loadScoreBoard = false;\n summary: ISummary = {\n correct: 0,\n partial: 0,\n skipped: 0,\n wrong: 0\n };\n isDurationExpired = false;\n finalScore = 0;\n totalNoOfQuestions = 0;\n durationSpent: string;\n outcomeLabel: string;\n totalScore: number;\n initialTime: number;\n userName: string;\n jumpToQuestion: any;\n totalVisitedQuestion = 0;\n nextContent: NextContent;\n disabledHandle: any;\n subscription: Subscription;\n\n constructor(\n public viewerService: ViewerService,\n private utilService: UtilService,\n private transformationService: TransformationService) { }\n\n @HostListener('document:TelemetryEvent', ['$event'])\n onTelemetryEvent(event) {\n this.telemetryEvent.emit(event.detail);\n }\n\n ngOnInit(): void {\n this.isInitialized = true;\n\n if (this.playerConfig) {\n if (typeof this.playerConfig === 'string') {\n try {\n this.playerConfig = JSON.parse(this.playerConfig);\n } catch (error) {\n console.error('Invalid playerConfig: ', error);\n }\n }\n if(!_.has(this.playerConfig.metadata, 'qumlVersion') && _.get(this.playerConfig.metadata, 'qumlVersion') != 1.1) {\n this.playerConfig.metadata = this.transformationService.getTransformedHierarchy(this.playerConfig.metadata)\n }\n console.log('playerConfig::', this.playerConfig);\n this.isLoading = true;\n this.setConfig();\n this.initializeSections();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.playerConfig.firstChange && this.isInitialized) {\n // This explicitly calling ngOnInit is for the web-component. Life cycle methods works in different order there.\n this.ngOnInit();\n }\n }\n\n initializeSections() {\n const childMimeType = _.map(this.playerConfig.metadata.children, 'mimeType');\n this.parentConfig.isSectionsAvailable = this.isSectionsAvailable = childMimeType[0] === MimeType.questionSet;\n this.parentConfig.metadata = { ...this.playerConfig.metadata };\n this.viewerService.sectionQuestions = [];\n if (this.isSectionsAvailable) {\n this.isMultiLevelSection = this.getMultilevelSection(this.playerConfig.metadata);\n\n if (this.isMultiLevelSection) {\n this.contentError = {\n messageHeader: 'Unable to load content',\n messageTitle: 'Multi level sections are not supported as of now'\n };\n } else {\n let children = this.playerConfig.metadata.children;\n this.sections = _.map(children, (child) => {\n let childNodes = child?.children?.map(item => item.identifier) || [];\n const maxQuestions = child?.maxQuestions;\n childNodes = child?.shuffle ? _.shuffle(childNodes) : childNodes;\n\n if (maxQuestions) {\n childNodes = childNodes.slice(0, maxQuestions);\n }\n\n if (this.playerConfig.metadata.timeLimits) {\n child = {\n ...child,\n timeLimits: this.playerConfig.metadata.timeLimits,\n showTimer: this.playerConfig.metadata.showTimer\n };\n }\n return {\n ...this.playerConfig, metadata: { ...child, childNodes },\n };\n });\n\n this.setInitialScores();\n this.activeSection = _.cloneDeep(this.sections[0]);\n this.isLoading = false;\n }\n } else {\n let childNodes = [];\n if (this.playerConfig.metadata?.children?.length) {\n childNodes = this.playerConfig.metadata.children.map(item => item.identifier);\n } else {\n childNodes = this.playerConfig.metadata.childNodes;\n }\n\n childNodes = this.playerConfig.metadata?.shuffle ? _.shuffle(childNodes) : childNodes;\n const maxQuestions = this.playerConfig.metadata.maxQuestions;\n /* istanbul ignore else */\n if (maxQuestions) {\n childNodes = childNodes.slice(0, maxQuestions);\n }\n childNodes.forEach((element, index) => {\n this.totalNoOfQuestions++;\n this.mainProgressBar.push({\n index: (index + 1), class: 'unattempted', value: undefined,\n score: 0,\n });\n });\n this.playerConfig.metadata.childNodes = childNodes;\n\n if (!this.playerConfig.metadata?.shuffle) {\n if (this.playerConfig.config?.progressBar?.length) {\n this.mainProgressBar = _.cloneDeep(this.playerConfig.config.progressBar);\n }\n if (this.playerConfig.config?.questions?.length) {\n const questionsObj = this.playerConfig.config.questions.find(item => item.id === this.playerConfig.metadata.identifier);\n if (questionsObj?.questions) {\n this.viewerService.updateSectionQuestions(this.playerConfig.metadata.identifier, questionsObj.questions);\n }\n }\n }\n this.activeSection = _.cloneDeep(this.playerConfig);\n this.isLoading = false;\n this.parentConfig.questionCount = this.totalNoOfQuestions;\n }\n }\n\n setConfig() {\n this.parentConfig.contentName = this.playerConfig.metadata?.name;\n this.parentConfig.identifier = this.playerConfig.metadata?.identifier;\n this.parentConfig.requiresSubmit = this.playerConfig.metadata?.requiresSubmit?.toLowerCase() !== 'no';\n this.parentConfig.instructions = this.playerConfig.metadata?.instructions;\n this.parentConfig.showLegend = this.playerConfig.config?.showLegend !== undefined ? this.playerConfig.config.showLegend : true;\n this.nextContent = this.playerConfig.config?.nextContent;\n this.showEndPage = this.playerConfig.metadata?.showEndPage?.toLowerCase() !== 'no';\n this.parentConfig.showFeedback = this.showFeedBack = this.playerConfig.metadata?.showFeedback;\n this.parentConfig.sideMenuConfig = { ...this.parentConfig.sideMenuConfig, ...this.playerConfig.config.sideMenu };\n this.parentConfig.warningTime = _.get(this.playerConfig,'config.warningTime', this.parentConfig.warningTime);\n this.parentConfig.showWarningTimer = _.get(this.playerConfig,'config.showWarningTimer', this.parentConfig.showWarningTimer)\n if (this.playerConfig?.context?.userData) {\n const firstName = this.playerConfig.context.userData?.firstName ?? '';\n const lastName = this.playerConfig.context.userData?.lastName ?? '';\n this.userName = firstName + ' ' + lastName;\n }\n\n if (this.playerConfig.metadata.isAvailableLocally && this.playerConfig.metadata.basePath) {\n this.parentConfig.baseUrl = this.playerConfig.metadata.basePath;\n this.parentConfig.isAvailableLocally = true;\n }\n\n this.attempts = {\n max: this.playerConfig.metadata?.maxAttempts,\n current: this.playerConfig.metadata?.currentAttempt ? this.playerConfig.metadata.currentAttempt + 1 : 1\n };\n this.totalScore = this.playerConfig.metadata.outcomeDeclaration.maxScore.defaultValue;\n this.showReplay = this.attempts?.max && this.attempts?.current >= this.attempts.max ? false : true;\n if (typeof this.playerConfig.metadata?.timeLimits === 'string') {\n this.playerConfig.metadata.timeLimits = JSON.parse(this.playerConfig.metadata.timeLimits);\n }\n this.initialTime = new Date().getTime();\n this.emitMaxAttemptEvents();\n }\n\n private getMultilevelSection(obj) {\n let isMultiLevel;\n obj.children.forEach(item => {\n if (item.children && !isMultiLevel) {\n isMultiLevel = this.hasChildren(item.children);\n }\n\n });\n return isMultiLevel;\n }\n\n private hasChildren(arr) {\n return arr.some(item => item.children);\n }\n\n emitMaxAttemptEvents() {\n if ((this.playerConfig.metadata?.maxAttempts - 1) === this.playerConfig.metadata?.currentAttempt) {\n this.playerEvent.emit(this.viewerService.generateMaxAttemptEvents(this.attempts?.current, false, true));\n } else if (this.playerConfig.metadata?.currentAttempt >= this.playerConfig.metadata?.maxAttempts) {\n this.playerEvent.emit(this.viewerService.generateMaxAttemptEvents(this.attempts?.current, true, false));\n }\n }\n\n getActiveSectionIndex() {\n return this.sections.findIndex(sec => sec.metadata?.identifier === this.activeSection.metadata?.identifier);\n }\n\n onShowScoreBoard(event) {\n /* istanbul ignore else */\n if (this.parentConfig.isSectionsAvailable) {\n const activeSectionIndex = this.getActiveSectionIndex();\n this.updateSectionScore(activeSectionIndex);\n }\n this.getSummaryObject();\n this.loadScoreBoard = true;\n this.viewerService.pauseVideo();\n }\n\n onSectionEnd(event) {\n if (event.isDurationEnded) {\n this.isDurationExpired = true;\n }\n\n if (this.parentConfig.isSectionsAvailable) {\n const activeSectionIndex = this.getActiveSectionIndex();\n this.updateSectionScore(activeSectionIndex);\n this.setNextSection(event, activeSectionIndex);\n } else {\n this.prepareEnd(event);\n }\n }\n\n onPlayerEvent(event) {\n this.playerEvent.emit(event);\n }\n\n getSummaryObject() {\n const progressBar = this.isSectionsAvailable ? _.flattenDeep(this.mainProgressBar.map(item => item.children)) : this.mainProgressBar;\n const classObj = _.groupBy(progressBar, 'class');\n this.summary = {\n skipped: _.get(classObj, 'skipped.length') || 0,\n correct: _.get(classObj, 'correct.length') || 0,\n wrong: _.get(classObj, 'wrong.length') || 0,\n partial: _.get(classObj, 'partial.length') || 0\n };\n this.totalVisitedQuestion = this.summary.correct + this.summary.wrong + this.summary.partial + this.summary.skipped;\n this.viewerService.totalNumberOfQuestions = this.totalNoOfQuestions;\n }\n\n updateSectionScore(activeSectionIndex: number) {\n this.mainProgressBar[activeSectionIndex].score = this.mainProgressBar[activeSectionIndex].children\n .reduce((accumulator, currentValue) => accumulator + currentValue.score, 0);\n }\n\n setNextSection(event, activeSectionIndex: number) {\n this.summary = this.utilService.sumObjectsByKey(this.summary, event.summary);\n const isSectionFullyAttempted = event.summary.skipped === 0 &&\n (event.summary?.correct + event.summary?.wrong) === this.mainProgressBar[activeSectionIndex]?.children?.length;\n const isSectionPartiallyAttempted = event.summary.skipped > 0;\n\n if (event.isDurationEnded) {\n this.isDurationExpired = true;\n this.prepareEnd(event);\n return;\n }\n\n let nextSectionIndex = activeSectionIndex + 1;\n /* istanbul ignore else */\n if (event.jumpToSection) {\n const sectionIndex = this.sections.findIndex(sec => sec.metadata?.identifier === event.jumpToSection);\n nextSectionIndex = sectionIndex > -1 ? sectionIndex : nextSectionIndex;\n }\n\n this.sectionIndex = _.cloneDeep(nextSectionIndex);\n this.mainProgressBar.forEach((item, index) => {\n item.isActive = index === nextSectionIndex;\n\n if (index === activeSectionIndex) {\n if (isSectionFullyAttempted) {\n item.class = 'attempted';\n } else if (isSectionPartiallyAttempted) {\n item.class = 'partial';\n }\n }\n });\n if (nextSectionIndex < this.sections.length) {\n this.activeSection = _.cloneDeep(this.sections[nextSectionIndex]);\n } else {\n this.prepareEnd(event);\n }\n }\n\n prepareEnd(event) {\n this.viewerService.pauseVideo();\n this.calculateScore();\n this.setDurationSpent();\n this.getSummaryObject();\n if (this.parentConfig.requiresSubmit && !this.isDurationExpired) {\n this.loadScoreBoard = true;\n } else {\n this.endPageReached = true;\n this.loadScoreBoard = false;\n this.viewerService.raiseSummaryEvent(this.totalVisitedQuestion, this.endPageReached, this.finalScore, this.summary);\n this.raiseEndEvent(this.totalVisitedQuestion, this.endPageReached, this.finalScore);\n this.isSummaryEventRaised = true;\n this.isEndEventRaised = true;\n }\n }\n\n replayContent() {\n this.parentConfig.isReplayed = true;\n this.loadScoreBoard = false;\n this.endPageReached = false;\n this.isDurationExpired = false;\n this.isEndEventRaised = false;\n this.attempts.current = this.attempts.current + 1;\n this.showReplay = this.attempts?.max && this.attempts?.current >= this.attempts.max ? false : true;\n this.totalNoOfQuestions = 0;\n this.totalVisitedQuestion = 0;\n this.mainProgressBar = [];\n this.jumpToQuestion = undefined;\n this.summary = {\n correct: 0,\n partial: 0,\n skipped: 0,\n wrong: 0\n };\n this.sections = [];\n this.initialTime = new Date().getTime();\n this.initializeSections();\n this.endPageReached = false;\n this.loadScoreBoard = false;\n this.activeSection = this.isSectionsAvailable ? _.cloneDeep(this.sections[0]) : this.playerConfig;\n /* istanbul ignore else */\n if (this.attempts?.max === this.attempts?.current) {\n this.playerEvent.emit(this.viewerService.generateMaxAttemptEvents(_.get(this.attempts, 'current'), false, true));\n }\n this.viewerService.raiseHeartBeatEvent(eventName.replayClicked, TelemetryType.interact, pageId.endPage);\n\n setTimeout(() => {\n this.parentConfig.isReplayed = false;\n const element: HTMLElement = document.querySelector('li.info-page');\n /* istanbul ignore else */\n if (element) {\n element.scrollIntoView({ behavior: 'smooth' });\n }\n }, 1000);\n }\n\n setInitialScores(activeSectionIndex = 0) {\n const alphabets = 'abcdefghijklmnopqrstuvwxyz'.split('');\n this.sections.forEach((section, i) => {\n this.mainProgressBar.push({\n index: alphabets[i].toLocaleUpperCase(), class: 'unattempted', value: undefined,\n score: 0,\n isActive: i === activeSectionIndex,\n identifier: section.metadata?.identifier\n });\n const children = [];\n section.metadata.childNodes.forEach((child, index) => {\n children.push({\n index: (index + 1), class: 'unattempted', value: undefined,\n score: 0,\n });\n this.totalNoOfQuestions++;\n });\n this.mainProgressBar[this.mainProgressBar.length - 1] = {\n ..._.last(this.mainProgressBar), children\n };\n\n });\n this.parentConfig.questionCount = this.totalNoOfQuestions;\n }\n\n calculateScore() {\n this.finalScore = this.mainProgressBar.reduce((accumulator, currentValue) => accumulator + currentValue.score, 0);\n this.generateOutComeLabel();\n return this.finalScore;\n }\n\n exitContent(event) {\n this.calculateScore();\n /* istanbul ignore else */\n if (event?.type === 'EXIT') {\n this.viewerService.raiseHeartBeatEvent(eventName.endPageExitClicked, TelemetryType.interact, pageId.endPage);\n this.getSummaryObject();\n this.viewerService.raiseSummaryEvent(this.totalVisitedQuestion, this.endPageReached, this.finalScore, this.summary);\n this.isSummaryEventRaised = true;\n this.raiseEndEvent(this.totalVisitedQuestion, this.endPageReached, this.finalScore);\n }\n }\n\n\n raiseEndEvent(currentQuestionIndex, endPageSeen, score) {\n if (this.isEndEventRaised) {\n return;\n }\n this.isEndEventRaised = true;\n this.viewerService.metaData.progressBar = this.mainProgressBar;\n this.viewerService.raiseEndEvent(currentQuestionIndex, endPageSeen, score);\n\n /* istanbul ignore else */\n if (_.get(this.attempts, 'current') >= _.get(this.attempts, 'max')) {\n this.playerEvent.emit(this.viewerService.generateMaxAttemptEvents(_.get(this.attempts, 'current'), true, false));\n }\n }\n\n setDurationSpent() {\n /* istanbul ignore else */\n if (this.playerConfig.metadata?.summaryType !== 'Score') {\n this.viewerService.metaData.duration = new Date().getTime() - this.initialTime;\n this.durationSpent = this.utilService.getTimeSpentText(this.initialTime);\n }\n }\n\n onScoreBoardLoaded(event) {\n if (event?.scoreBoardLoaded) {\n this.calculateScore();\n }\n }\n\n onScoreBoardSubmitted() {\n this.endPageReached = true;\n this.getSummaryObject();\n this.setDurationSpent();\n this.viewerService.raiseHeartBeatEvent(eventName.scoreBoardSubmitClicked, TelemetryType.interact, pageId.submitPage);\n this.viewerService.raiseSummaryEvent(this.totalVisitedQuestion, this.endPageReached, this.finalScore, this.summary);\n this.raiseEndEvent(this.totalVisitedQuestion, this.endPageReached, this.finalScore);\n this.loadScoreBoard = false;\n this.isSummaryEventRaised = true;\n }\n\n generateOutComeLabel() {\n this.outcomeLabel = this.finalScore.toString();\n switch (_.get(this.playerConfig, 'metadata.summaryType')) {\n case 'Complete': {\n this.outcomeLabel = this.totalScore ? `${this.finalScore} / ${this.totalScore}` : this.outcomeLabel;\n break;\n }\n case 'Duration': {\n this.outcomeLabel = '';\n break;\n }\n }\n }\n\n goToQuestion(event) {\n /* istanbul ignore else */\n if (this.parentConfig.isSectionsAvailable && event.identifier) {\n const sectionIndex = this.sections.findIndex(sec => sec.metadata?.identifier === event.identifier);\n this.activeSection = _.cloneDeep(this.sections[sectionIndex]);\n this.mainProgressBar.forEach((item, index) => {\n item.isActive = index === sectionIndex;\n });\n }\n this.jumpToQuestion = event;\n this.loadScoreBoard = false;\n }\n\n playNextContent(event) {\n this.viewerService.raiseHeartBeatEvent(event?.type, TelemetryType.interact, pageId.endPage, event?.identifier);\n }\n\n toggleScreenRotate(event?: KeyboardEvent | MouseEvent) {\n this.viewerService.raiseHeartBeatEvent(eventName.deviceRotationClicked, TelemetryType.interact, this.sectionPlayer.myCarousel.getCurrentSlideIndex() + 1);\n }\n\n sideBarEvents(event: ISideBarEvent) {\n /* istanbul ignore else */\n if (event.type === 'OPEN_MENU' || event.type === 'CLOSE_MENU') {\n this.handleSideBarAccessibility(event);\n }\n this.viewerService.raiseHeartBeatEvent(event.type, TelemetryType.interact, this.sectionPlayer.myCarousel.getCurrentSlideIndex() + 1);\n }\n\n handleSideBarAccessibility(event) {\n const navBlock: HTMLInputElement = document.querySelector('.navBlock');\n const overlayInput: HTMLElement = document.querySelector('#overlay-input');\n const overlayButton: HTMLElement = document.querySelector('#overlay-button');\n const sideBarList: HTMLElement = document.querySelector('#sidebar-list');\n\n if (event.type === 'OPEN_MENU') {\n const isMobile = this.playerConfig.config?.sideMenu?.showExit;\n this.disabledHandle = isMobile ? maintain.hidden({ filter: [sideBarList, overlayButton, overlayInput] }) : maintain.tabFocus({ context: navBlock });\n this.subscription = fromEvent(document, 'keydown').subscribe((e: KeyboardEvent) => {\n console.log(\"===========\", e.key);\n /* istanbul ignore else */\n if (e['key'] === 'Escape') {\n const inputChecked = document.getElementById('overlay-input') as HTMLInputElement;\n inputChecked.checked = false;\n document.getElementById('playerSideMenu').style.visibility = 'hidden';\n document.querySelector<HTMLElement>('.navBlock').style.marginLeft = '-100%';\n this.viewerService.raiseHeartBeatEvent('CLOSE_MENU', TelemetryType.interact, this.sectionPlayer.myCarousel.getCurrentSlideIndex() + 1);\n this.disabledHandle.disengage();\n this.subscription.unsubscribe();\n this.disabledHandle = null;\n this.subscription = null;\n }\n });\n } else if (event.type === 'CLOSE_MENU' && this.disabledHandle) {\n this.disabledHandle.disengage();\n this.disabledHandle = null;\n /* istanbul ignore else */\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = null;\n }\n }\n }\n\n @HostListener('window:beforeunload')\n ngOnDestroy() {\n this.calculateScore();\n this.getSummaryObject();\n /* istanbul ignore else */\n if (this.isSummaryEventRaised === false) {\n this.viewerService.raiseSummaryEvent(this.totalVisitedQuestion, this.endPageReached, this.finalScore, this.summary);\n }\n /* istanbul ignore else */\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n this.raiseEndEvent(this.totalVisitedQuestion, this.endPageReached, this.finalScore);\n }\n}\n","<!-- Need to show loading here -->\n<sb-player-start-page *ngIf=\"isLoading\" [title]=\"parentConfig?.contentName\"></sb-player-start-page>\n\n<sb-player-side-menu-icon *ngIf=\"parentConfig?.sideMenuConfig?.enable && !endPageReached\" (sidebarMenuEvent)=\"sideBarEvents($event)\"></sb-player-side-menu-icon>\n<quml-header *ngIf=\"loadScoreBoard && parentConfig?.requiresSubmit && !endPageReached\" [showLegend]=\"parentConfig?.showLegend\"\n [disablePreviousNavigation]=\"true\" [disableNext]=\"true\" [attempts]=\"attempts\" [loadScoreBoard]=\"true\"\n [showDeviceOrientation]=\"playerConfig?.config?.showDeviceOrientation\" (toggleScreenRotate)=\"toggleScreenRotate()\"></quml-header>\n<sb-player-sidebar [title]=\"parentConfig?.contentName\" [config]=\"parentConfig?.sideMenuConfig\" (sidebarEvent)=\"sideBarEvents($event)\">\n</sb-player-sidebar>\n\n<div *ngIf=\"!isLoading\" class=\"main-container\">\n <div class=\"main-container\" [hidden]=\"!activeSection || loadScoreBoard || endPageReached\">\n <quml-section-player *ngIf=\"activeSection\" [sectionConfig]=\"activeSection\" (sectionEnd)=\"onSectionEnd($event)\" [attempts]=\"attempts\"\n [mainProgressBar]=\"mainProgressBar\" [parentConfig]=\"parentConfig\" [sectionIndex]=\"sectionIndex\"\n [jumpToQuestion]=\"jumpToQuestion\" (showScoreBoard)=\"onShowScoreBoard($event)\"\n (playerEvent)=\"onPlayerEvent($event)\">\n </quml-section-player>\n </div>\n\n <!-- Show scoreboard -->\n <quml-scoreboard *ngIf=\"loadScoreBoard && parentConfig?.requiresSubmit && !endPageReached\"\n (scoreBoardLoaded)=\"onScoreBoardLoaded($event)\" (submitClicked)=\"onScoreBoardSubmitted()\"\n [contentName]=\"parentConfig.contentName\" [scores]=\"mainProgressBar\" [totalNoOfQuestions]=\"totalNoOfQuestions\"\n [showFeedBack]=\"showFeedBack\" (emitQuestionNo)=\"goToQuestion($event)\"\n [isSections]=\"parentConfig?.isSectionsAvailable\" [summary]=\"summary\">\n </quml-scoreboard>\n\n <!-- Show player end page -->\n <div class=\"endPage-container\" *ngIf=\"endPageReached\" [ngClass]=\"endPageReached ? 'endPage-container-height': ''\">\n <sb-player-end-page *ngIf=\"endPageReached && showEndPage\" [contentName]=\"parentConfig.contentName\"\n [outcome]=\"outcomeLabel\" [outcomeLabel]=\"'Score: '\" [userName]=\"userName\" [timeSpentLabel]=\"durationSpent\"\n (replayContent)=\"replayContent()\" (exitContent)=\"exitContent($event)\"\n [showExit]=\"parentConfig?.sideMenuConfig.showExit\" [showReplay]=\"showReplay\" [nextContent]=\"nextContent\"\n (playNextContent)=\"playNextContent($event)\">\n\n <span class=\"sb-color-primary mt-8 fnormal font-weight-bold d-block\"\n *ngIf=\"attempts?.max && attempts?.current && attempts.max !== attempts.current\">Attempt no\n {{attempts.current}}/{{attempts.max}}\n </span>\n\n <span class=\"attempts sb-color-primary mt-8 fnormal font-weight-bold d-block\"\n *ngIf=\"attempts?.max === attempts?.current\">{{attempts.current}}/{{attempts.max}} attempts completed\n </span>\n </sb-player-end-page>\n </div>\n\n\n <!-- Show content error -->\n <div *ngIf=\"isMultiLevelSection\">\n <sb-player-contenterror [errorMsg]=\"contentError\"></sb-player-contenterror>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { QumlLibraryComponent } from './quml-library.component';\nimport { McqComponent } from './mcq/mcq.component';\nimport { SaComponent } from './sa/sa.component';\nimport { CarouselModule } from 'ngx-bootstrap/carousel';\nimport { HeaderComponent } from './header/header.component';\nimport { McqQuestionComponent } from './mcq-question/mcq-question.component';\nimport { McqOptionComponent } from './mcq-option/mcq-option.component';\nimport { QumlPopupComponent } from './quml-popup/quml-popup.component';\nimport { McqImageOptionComponent } from './mcq-image-option/mcq-image-option.component';\nimport { ZoomInComponent } from './icon/zoom-in/zoom-in.component';\nimport { StarComponent } from './icon/star/star.component';\nimport { PreviousComponent } from './icon/previous/previous.component';\nimport { NextComponent } from './icon/next/next.component';\nimport { BookmarkComponent } from './icon/bookmark/bookmark.component';\nimport { HintComponent } from './icon/hint/hint.component';\nimport { AnsComponent } from './icon/ans/ans.component';\nimport { ShareComponent } from './icon/share/share.component';\nimport { CorrectComponent } from './icon/correct/correct.component';\nimport { ScoreboardComponent } from './scoreboard/scoreboard.component';\nimport { StartpageComponent } from './startpage/startpage.component';\nimport { TimerComponent } from './icon/timer/timer.component';\nimport { ContentComponent } from './icon/content/content.component';\nimport { StartpagestariconComponent } from './icon/startpagestaricon/startpagestaricon.component';\nimport { PreviousActiveComponent } from './icon/previous-active/previous-active.component';\nimport { NextActiveComponent } from './icon/next-active/next-active.component';\nimport { AlertComponent } from './alert/alert.component';\nimport { CloseComponent } from './icon/close/close.component';\nimport { McqSolutionsComponent } from './mcq-solutions/mcq-solutions.component';\nimport { DurationtimerComponent } from './icon/durationtimer/durationtimer.component';\nimport { AudioComponent } from './icon/audio/audio.component';\nimport { WrongComponent } from './icon/wrong/wrong.component';\nimport { MenuComponent } from './icon/menu/menu.component';\nimport { SunbirdPlayerSdkModule, PLAYER_CONFIG } from '@project-sunbird/sunbird-player-sdk-v9';\nimport { QumlLibraryService } from './quml-library.service';\nimport { SafeHtmlPipe } from './pipes/safe-html/safe-html.pipe';\nimport { MainPlayerComponent } from './main-player/main-player.component';\nimport { SectionPlayerComponent } from './section-player/section-player.component';\nimport { ProgressIndicatorsComponent } from './progress-indicators/progress-indicators.component'\n\n@NgModule({\n declarations: [\n QumlLibraryComponent,\n McqComponent,\n HeaderComponent,\n SaComponent,\n McqQuestionComponent,\n McqOptionComponent,\n QumlPopupComponent,\n McqImageOptionComponent,\n ZoomInComponent,\n StarComponent,\n PreviousComponent,\n NextComponent,\n PreviousActiveComponent,\n BookmarkComponent,\n HintComponent,\n AnsComponent,\n ShareComponent,\n CorrectComponent,\n ScoreboardComponent,\n StartpageComponent,\n TimerComponent,\n ContentComponent,\n StartpagestariconComponent,\n NextActiveComponent,\n AlertComponent,\n CloseComponent,\n McqSolutionsComponent,\n DurationtimerComponent,\n AudioComponent,\n WrongComponent,\n MenuComponent,\n SafeHtmlPipe,\n MainPlayerComponent,\n SectionPlayerComponent,\n ProgressIndicatorsComponent,\n ],\n imports: [\n CommonModule,\n CarouselModule,\n SunbirdPlayerSdkModule\n ],\n providers: [\n QumlLibraryService,\n { provide: PLAYER_CONFIG, useValue: { contentCompatibilityLevel: 6 } }\n ],\n exports: [MainPlayerComponent]\n})\nexport class QumlLibraryModule { }\n","/*\n * Public API Surface of quml-library\n */\n\nexport * from './lib/quml-library.service';\nexport * from './lib/quml-library.component';\nexport * from './lib/quml-library.module';\nexport * from './lib/quml-question-cursor.service';\nexport * from './lib/quml-library-interface';\nexport * from './lib/main-player/main-player.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.UtilService","i1","i2.SafeHtmlPipe","i3.McqImageOptionComponent","i4.SafeHtmlPipe","i2.UtilService","i3","i4.McqQuestionComponent","i5.McqOptionComponent","i6.QumlPopupComponent","uuidv4","i1.QumlLibraryService","i3.QuestionCursor","i4.TransformationService","i1.ViewerService","i3.AnsComponent","i4.DurationtimerComponent","i5.ProgressIndicatorsComponent","i2.TimerComponent","i3.ContentComponent","i4.StartpagestariconComponent","i5.SafeHtmlPipe","i3.CloseComponent","i4","i5","i6.McqComponent","i7.HeaderComponent","i8.SaComponent","i9.AnsComponent","i10.StartpageComponent","i11.AlertComponent","i12.McqSolutionsComponent","i3.TransformationService","i6.HeaderComponent","i7.ScoreboardComponent","i8.SectionPlayerComponent"],"mappings":"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"}