{"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()\">&#10005;</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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"}