@project-sunbird/sunbird-video-player-v9
Version:
The Video player library is powered by Angular. This player is primarily designed to be used on Sunbird consumption platforms _(mobile app, web portal, offline desktop app)_ to drive reusability and maintainability, hence reducing the redundant developmen
1 lines • 104 kB
Source Map (JSON)
{"version":3,"file":"project-sunbird-sunbird-video-player-v9.mjs","sources":["../../../projects/sunbird-video-player/src/lib/services/util.service.ts","../../../projects/sunbird-video-player/src/lib/sunbird-video-player.service.ts","../../../projects/sunbird-video-player/src/lib/services/viewer.service.ts","../../../projects/sunbird-video-player/src/lib/components/video-player/video-player.component.html","../../../projects/sunbird-video-player/src/lib/components/video-player/video-player.component.ts","../../../projects/sunbird-video-player/src/lib/sunbird-video-player.component.html","../../../projects/sunbird-video-player/src/lib/sunbird-video-player.component.ts","../../../projects/sunbird-video-player/src/lib/sunbird-video-player.module.ts","../../../projects/sunbird-video-player/src/public-api.ts","../../../projects/sunbird-video-player/src/project-sunbird-sunbird-video-player-v9.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\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(duration) {\n const minutes = Math.floor(duration / 60);\n const seconds = Number(((duration % 60)).toFixed(0));\n return (minutes + ':' + (seconds < 10 ? '0' : '') + seconds);\n }\n}\n","import { Injectable } from '@angular/core';\nimport * as _ from 'lodash-es';\nimport { PlayerConfig } from './playerInterfaces';\nimport { UtilService } from './services/util.service';\nimport { CsTelemetryModule } from '@project-sunbird/client-services/telemetry';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SunbirdVideoPlayerService {\n\n private contentSessionId: string;\n private playSessionId: string;\n private telemetryObject: any;\n private context;\n public config;\n\n constructor(private utilService: UtilService) {\n this.contentSessionId = this.utilService.uniqueId();\n }\n\n public initialize({ context, config, metadata }: PlayerConfig) {\n this.context = context;\n this.config = config;\n this.playSessionId = this.utilService.uniqueId();\n\n if (!CsTelemetryModule.instance.isInitialised) {\n CsTelemetryModule.instance.init({});\n CsTelemetryModule.instance.telemetryService.initTelemetry(\n {\n config: {\n pdata: context.pdata,\n env: 'contentplayer',\n channel: context.channel,\n did: context.did,\n authtoken: context.authToken || '',\n uid: context.uid || '',\n sid: context.sid,\n batchsize: 20,\n mode: context.mode,\n host: context.host || '',\n endpoint: context.endpoint || '/data/v3/telemetry',\n tags: context.tags,\n cdata: [{ id: this.contentSessionId, type: 'ContentSession' },\n { id: this.playSessionId, type: 'PlaySession' },\n {id: '2.0' , type: 'PlayerVersion'}]\n },\n userOrgDetails: {}\n }\n );\n }\n\n this.telemetryObject = {\n id: metadata.identifier,\n type: 'Content',\n ver: metadata.pkgVersion + '',\n rollup: context.objectRollup || {}\n };\n }\n\n\n public start(duration) {\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 end(duration, totallength, currentlength, endpageseen, totalseekedlength, visitedlength, score, uniqueVisitedLength) {\n const durationSec = Number((duration / 1e3).toFixed(2));\n let progress = Number(((uniqueVisitedLength / totallength) * 100).toFixed(0));\n if(totallength - uniqueVisitedLength < 5) {\n progress = 100;\n }\n CsTelemetryModule.instance.telemetryService.raiseEndTelemetry({\n edata: {\n type: 'content',\n mode: 'play',\n pageid: 'sunbird-player-Endpage',\n summary: [\n {\n progress\n },\n {\n totallength\n },\n {\n visitedlength\n },\n {\n visitedcontentend: endpageseen\n },\n {\n totalseekedlength\n },\n {\n endpageseen\n },\n {\n score\n },\n {\n uniquevisitedlength: uniqueVisitedLength\n }\n ],\n duration: durationSec\n },\n options: this.getEventOptions()\n });\n\n }\n\n public interact(id, currentPage, extraValues?) {\n CsTelemetryModule.instance.telemetryService.raiseInteractTelemetry({\n options: this.getEventOptions(),\n edata: { type: 'TOUCH', subtype: '', id, pageid: currentPage + '' , extra: extraValues }\n });\n }\n\n public heartBeat(data) {\n CsTelemetryModule.instance.playerTelemetryService.onHeartBeatEvent(data, {});\n }\n\n public impression(currentPage, cdata: any = {}) {\n const impressionEvent = {\n options: this.getEventOptions(),\n edata: { type: 'workflow', subtype: '', pageid: currentPage + '', uri: '' }\n };\n if (!_.isEmpty(cdata)) {\n impressionEvent.options.context.cdata.push(cdata);\n }\n CsTelemetryModule.instance.telemetryService.raiseImpressionTelemetry(impressionEvent);\n }\n\n public error(errorCode: string , errorType: string , stacktrace?: Error) {\n CsTelemetryModule.instance.telemetryService.raiseErrorTelemetry({\n options: this.getEventOptions(),\n edata: {\n err: errorCode,\n errtype: errorType,\n stacktrace: (stacktrace && stacktrace.toString()) || ''\n }\n });\n }\n\n private getEventOptions() {\n return ({\n object: this.telemetryObject,\n context: {\n channel: this.context.channel,\n pdata: this.context.pdata,\n env: 'contentplayer',\n sid: this.context.sid,\n uid: this.context.uid,\n cdata: [{ id: this.contentSessionId, type: 'ContentSession' },\n { id: this.playSessionId, type: 'PlaySession' },\n {id: '2.0' , type: 'PlayerVersion'}],\n rollup: this.context.contextRollup || {}\n }\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { EventEmitter, Injectable, Optional } from '@angular/core';\nimport { PlayerConfig, Transcripts } from '../playerInterfaces';\nimport { SunbirdVideoPlayerService } from '../sunbird-video-player.service';\nimport { UtilService } from './util.service';\nimport { errorCode , errorMessage } from '@project-sunbird/sunbird-player-sdk-v9';\nimport { QuestionCursor } from '@project-sunbird/sunbird-quml-player-v9';\nimport { of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport * as _ from 'lodash-es';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ViewerService {\n\n public endPageSeen = false;\n public timeSpent = '0:0';\n private version = '1.0';\n public playerEvent = new EventEmitter<any>();\n public contentName: string;\n public showDownloadPopup: boolean;\n public streamingUrl: string;\n public mimeType: string;\n public artifactMimeType: string;\n public userName: string;\n public metaData: any;\n public PlayerLoadStartedAt: number;\n public totalLength;\n public currentlength;\n public totalSeekedLength = 0;\n public artifactUrl;\n public visitedLength = 0;\n public uniqueVisitedLength;\n public sidebarMenuEvent = new EventEmitter<any>();\n public traceId: string;\n public isAvailableLocally = false;\n public interceptionPoints: any;\n public interceptionResponses: any = {};\n public showScore = false;\n public scoreObtained: any = 0;\n public maxScore: number;\n public playerInstance: any;\n public contentMap = {};\n public playerTimeSlots = [];\n public isEndEventRaised = false;\n public transcripts: Transcripts;\n public playBitStartTime = 0;\n public playBitEndTime = 0;\n constructor(private videoPlayerService: SunbirdVideoPlayerService,\n private utilService: UtilService,\n private http: HttpClient,\n @Optional() public questionCursor: QuestionCursor) {\n this.PlayerLoadStartedAt = new Date().getTime();\n }\n\n initialize({ context, config, metadata }: PlayerConfig) {\n this.contentName = metadata.name;\n this.isAvailableLocally = metadata.isAvailableLocally;\n this.streamingUrl = metadata.streamingUrl;\n this.artifactUrl = metadata.artifactUrl;\n this.mimeType = metadata.streamingUrl ? 'application/x-mpegURL' : metadata.mimeType;\n this.artifactMimeType = metadata.mimeType;\n this.isAvailableLocally = metadata.isAvailableLocally;\n this.traceId = config.traceId;\n this.interceptionPoints = metadata.interceptionPoints;\n if (context.userData) {\n const { userData: { firstName, lastName } } = context;\n this.userName = firstName === lastName ? firstName : `${firstName} ${lastName}`;\n }\n this.metaData = {\n actions: [\n ],\n volume: [],\n playBackSpeeds: [],\n totalDuration: 0,\n muted: undefined,\n currentDuration: undefined,\n transcripts: []\n };\n this.transcripts = metadata.transcripts ? metadata.transcripts : [];\n this.showDownloadPopup = false;\n this.endPageSeen = false;\n if (this.isAvailableLocally) {\n const basePath = (metadata.streamingUrl) ? (metadata.streamingUrl) : (metadata.basePath || metadata.baseDir);\n this.streamingUrl = `${basePath}/${metadata.artifactUrl}`;\n this.mimeType = metadata.mimeType;\n }\n }\n handleTranscriptsData(selectedTranscripts) {\n this.metaData.transcripts = selectedTranscripts;\n if (!_.isArray(this.transcripts)) {\n this.raiseExceptionLog('INVALID_TRANSCRIPT_DATATYPE', 'TRANSCRIPT', new Error('Transcript data should be array'), this.traceId);\n return [];\n } else {\n _.forEach(this.transcripts, (value) => {\n if (!(_.some(this.transcripts, { language: value.language, artifactUrl: value.artifactUrl ,\n languageCode: value.languageCode, identifier: value.identifier}))) {\n this.raiseExceptionLog('TRANSCRIPT_DATA_MISSING', 'TRANSCRIPT',\n new Error('Transcript object dose not have required fields'), this.traceId);\n return [];\n } else if (!_.isEmpty(selectedTranscripts) &&\n ( _.last(selectedTranscripts) !== 'off' && _.last(selectedTranscripts) === value.languageCode)) {\n value.default = true;\n }\n });\n }\n return this.transcripts;\n }\n async getPlayerOptions() {\n if (!this.streamingUrl) {\n return [{ src: this.artifactUrl, type: this.artifactMimeType }];\n } else {\n const data = await this.http.head(this.streamingUrl, { responseType: 'blob' }).toPromise().catch(error => {\n // eslint-disable-next-line max-len\n this.raiseExceptionLog(errorCode.streamingUrlSupport , errorMessage.streamingUrlSupport , new Error(`Streaming Url Not Supported ${this.streamingUrl}`), this.traceId);\n });\n if (data) {\n return [{ src: this.streamingUrl, type: this.mimeType }];\n } else {\n return [{ src: this.artifactUrl, type: this.artifactMimeType }];\n }\n }\n }\n\n getMarkers() {\n if (this?.interceptionPoints?.items) {\n try {\n const interceptionPoints = this.interceptionPoints;\n this.showScore = true;\n return interceptionPoints.items.map(({interceptionPoint, identifier, type}) => {\n return { time: interceptionPoint, type, identifier, duration: 3 };\n });\n } catch (error) {\n console.log(error);\n this.raiseExceptionLog('CPV2_CONT_INTERCEPTION_PARSE', 'error parsing the inteception points string', error, '');\n this.showScore = false;\n }\n }\n return null;\n }\n\n\n getQuestionSet(identifier) {\n const content = this.contentMap[identifier];\n if (!content) {\n if (!this.questionCursor) {\n return null;\n } else {\n return this.questionCursor.getQuestionSet(identifier)\n .pipe(map((response) => {\n this.contentMap[identifier] = response.questionSet;\n return this.contentMap[identifier];\n }));\n }\n } else {\n return of(content);\n }\n }\n\n preFetchContent() {\n const nextMarker = this.getNextMarker();\n if (nextMarker) {\n const identifier = nextMarker.identifier;\n this.getQuestionSet(nextMarker.identifier);\n }\n }\n\n getUniqueVisitedLength() {\n const uniqSecondsList = [];\n for (let slot of this.playerTimeSlots) {\n if(slot[0] < slot[1]) {\n let sec = slot[0];\n while ( sec <= slot[1]) {\n sec = Math.floor(sec)\n if(uniqSecondsList.indexOf(sec) == -1 && sec != 0) {\n uniqSecondsList.push(sec)\n }\n sec += 1\n }\n }\n }\n return uniqSecondsList.length;\n }\n\n getVisitedLength() {\n const secondsList = [];\n for (let slot of this.playerTimeSlots) {\n if(slot[0] < slot[1]) {\n let sec = slot[0];\n while ( sec <= slot[1]) {\n sec = Math.floor(sec)\n if(sec != 0) {\n secondsList.push(sec)\n }\n sec += 1\n }\n }\n }\n return secondsList.length;\n }\n\n getNextMarker() {\n const currentTime = this.playerInstance.currentTime();\n const markersList = this.getMarkers();\n if (!markersList) { return null; }\n\n return markersList.find(marker => {\n const markerTime = marker.time;\n return markerTime > currentTime;\n });\n }\n\n raiseStartEvent(event) {\n const duration = new Date().getTime() - this.PlayerLoadStartedAt;\n const startEvent = {\n eid: 'START',\n ver: this.version,\n edata: {\n type: 'START',\n mode: 'play',\n duration\n },\n metaData: this.metaData\n };\n this.playerEvent.emit(startEvent);\n this.videoPlayerService.start(duration);\n this.PlayerLoadStartedAt = new Date().getTime();\n }\n\n calculateScore() {\n this.scoreObtained = Object.values(this.interceptionResponses).reduce(\n // eslint-disable-next-line @typescript-eslint/dot-notation\n (acc, response) => acc + response['score'] , 0);\n }\n\n raiseEndEvent(isOnPlayInterrupt = false) {\n\n if (!this.isEndEventRaised) {\n this.calculateScore();\n const duration = new Date().getTime() - this.PlayerLoadStartedAt;\n const endEvent = {\n eid: 'END',\n ver: this.version,\n edata: {\n type: 'END',\n currentTime: this.currentlength,\n totalTime: this.totalLength,\n duration\n },\n metaData: this.metaData\n };\n this.playerEvent.emit(endEvent);\n \n if(isOnPlayInterrupt) {\n this.playerTimeSlots.push([this.playBitStartTime, this.currentlength]);\n }\n this.uniqueVisitedLength = this.getUniqueVisitedLength();\n if(this.uniqueVisitedLength > this.totalLength) {\n this.uniqueVisitedLength = this.totalLength;\n }\n this.visitedLength = this.getVisitedLength();\n this.timeSpent = this.utilService.getTimeSpentText(this.visitedLength);\n \n this.videoPlayerService.end(\n duration,\n this.totalLength,\n this.currentlength,\n this.endPageSeen,\n this.totalSeekedLength,\n this.visitedLength,\n this.scoreObtained,\n this.uniqueVisitedLength\n );\n this.isEndEventRaised = true;\n }\n }\n\n\n raiseHeartBeatEvent(type: string, extraValues?) {\n if (type === 'REPLAY') {\n this.interceptionResponses = {};\n this.showScore = false;\n this.scoreObtained = 0;\n this.playerTimeSlots = [];\n this.playBitEndTime = 0;\n this.playBitStartTime = 0;\n }\n const hearBeatEvent = {\n eid: 'HEARTBEAT',\n ver: this.version,\n edata: {\n type,\n currentPage: 'videostage',\n extra: extraValues\n },\n metaData: this.metaData\n };\n this.playerEvent.emit(hearBeatEvent);\n this.videoPlayerService.heartBeat(hearBeatEvent);\n const interactItems = ['PLAY', 'PAUSE', 'EXIT', 'VOLUME_CHANGE', 'DRAG',\n 'RATE_CHANGE', 'CLOSE_DOWNLOAD', 'DOWNLOAD', 'NAVIGATE_TO_PAGE',\n 'NEXT', 'OPEN_MENU', 'PREVIOUS', 'CLOSE_MENU', 'DOWNLOAD_MENU', 'DOWNLOAD_POPUP_CLOSE', 'DOWNLOAD_POPUP_CANCEL',\n 'SHARE', 'REPLAY', 'FORWARD', 'BACKWARD', 'FULLSCREEN', 'NEXT_CONTENT_PLAY', 'TRANSCRIPT_LANGUAGE_OFF',\n 'TRANSCRIPT_LANGUAGE_SELECTED', 'VIDEO_MARKER_SELECTED'\n ];\n if (interactItems.includes(type)) {\n this.videoPlayerService.interact(type.toLowerCase(), 'videostage', extraValues);\n }\n }\n\n raiseImpressionEvent(pageId: string, cdata: any = {}) {\n this.videoPlayerService.impression(pageId, cdata);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\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 && stacktrace.toString()) || '',\n }\n };\n this.playerEvent.emit(exceptionLogEvent);\n this.videoPlayerService.error(errorCode , errorType , stacktrace);\n }\n\n}\n","<video #target class=\"video-js\" controls crossorigin=\"anonymous\" (loadeddata)=\"onLoadMetadata($event)\">\n <track *ngFor=\"let trans of transcripts\" default=\"{{trans.default}}\" kind=\"captions\" src=\"{{trans.artifactUrl}}\" srclang=\"{{trans.languageCode}}\" label=\"{{trans.language}}\" >\n</video>\n<div #controlDiv>\n <div [ngClass]=\"{'player-for-back-ward-controls': currentPlayerState === 'pause' || showControls }\">\n <div class=\"player-container\" *ngIf=\"currentPlayerState === 'pause' || showControls\">\n <div class=\"back-ward hide-in-desktop\" [style.visibility]=\"showBackwardButton ? 'visible' : 'hidden'\" (click)=\"backward()\">\n <svg width=\"39px\" height=\"49px\" viewBox=\"0 0 39 49\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <g id=\"video/default-copy-2\" transform=\"translate(-70.000000, -77.000000)\" fill=\"#FFFFFF\">\n <path\n d=\"M108.4,106.3 C108.4,116.86 99.76,125.5 89.2,125.5 C78.64,125.5 70,116.86 70,106.3 L74.8,106.3 C74.8,114.22 81.28,120.7 89.2,120.7 C97.12,120.7 103.6,114.22 103.6,106.3 C103.6,98.38 97.12,91.9 89.2,91.9 L89.2,101.5 L77.2,89.5 L89.2,77.5 L89.2,87.1 C99.76,87.1 108.4,95.74 108.4,106.3 L108.4,106.3 Z M86.4320312,113.5 L84.4,113.5 L84.4,105.667187 L81.9742187,106.419531 L81.9742187,104.767187 L86.2140625,103.248437 L86.4320312,103.248437 L86.4320312,113.5 Z M96.6484375,109.267188 C96.6484375,110.68282 96.3554717,111.765621 95.7695312,112.515625 C95.1835908,113.265629 94.3257869,113.640625 93.1960937,113.640625 C92.0804632,113.640625 91.2273467,113.27266 90.6367187,112.536719 C90.0460908,111.800778 89.7437501,110.746101 89.7296875,109.372656 L89.7296875,107.488281 C89.7296875,106.058587 90.0261689,104.973441 90.6191406,104.232812 C91.2121123,103.492184 92.0664007,103.121875 93.1820312,103.121875 C94.2976618,103.121875 95.1507783,103.488668 95.7414062,104.222266 C96.3320342,104.955863 96.6343749,106.009368 96.6484375,107.382812 L96.6484375,109.267188 Z M94.6164062,107.2 C94.6164062,106.351558 94.5003918,105.733986 94.2683594,105.347266 C94.036327,104.960545 93.6742212,104.767188 93.1820312,104.767188 C92.7039039,104.767188 92.351173,104.95117 92.1238281,105.319141 C91.8964832,105.687111 91.7757813,106.262496 91.7617187,107.045312 L91.7617187,109.534375 C91.7617187,110.368754 91.8753895,110.98867 92.1027344,111.394141 C92.3300793,111.799611 92.6945287,112.002344 93.1960937,112.002344 C93.6929712,112.002344 94.0515614,111.807814 94.271875,111.41875 C94.4921886,111.029686 94.6070312,110.434379 94.6164062,109.632812 L94.6164062,107.2 Z\"\n id=\"Shape-Copy\"></path>\n </g>\n </svg>\n </div>\n <div class=\"pause-play\">\n <span class=\"pause\" *ngIf=\"showPauseButton\" (click)=\"pause()\">\n <svg width=\"48px\" height=\"48px\" viewBox=\"0 0 48 48\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <g id=\"video/default-copy-2\" transform=\"translate(-156.000000, -77.000000)\" fill=\"#FFFFFF\">\n <path\n d=\"M180.4,77.5 C167.152,77.5 156.4,88.252 156.4,101.5 C156.4,114.748 167.152,125.5 180.4,125.5 C193.648,125.5 204.4,114.748 204.4,101.5 C204.4,88.252 193.648,77.5 180.4,77.5 L180.4,77.5 Z M178,111.1 L173.2,111.1 L173.2,91.9 L178,91.9 L178,111.1 L178,111.1 Z M187.6,111.1 L182.8,111.1 L182.8,91.9 L187.6,91.9 L187.6,111.1 L187.6,111.1 Z\"\n id=\"Shape\"></path>\n </g>\n </svg>\n </span>\n <span class=\"play\" *ngIf=\"showPlayButton\" (click)=\"play()\">\n <svg width=\"48px\" height=\"48px\" viewBox=\"0 0 48 48\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <g id=\"video/default-copy\" transform=\"translate(-296.000000, -156.000000)\" fill=\"#FFFFFF\">\n <path\n d=\"M320,156 C306.752,156 296,166.752 296,180 C296,193.248 306.752,204 320,204 C333.248,204 344,193.248 344,180 C344,166.752 333.248,156 320,156 L320,156 Z M315.2,190.8 L315.2,169.2 L329.6,180 L315.2,190.8 L315.2,190.8 Z\"\n id=\"Shape\"></path>\n </g>\n </svg>\n </span>\n </div>\n <div class=\"forward hide-in-desktop\" [style.visibility]=\"showForwardButton ? 'visible' : 'hidden'\" (click)=\"forward()\">\n <svg width=\"39px\" height=\"49px\" viewBox=\"0 0 39 49\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <g id=\"video/default-copy-2\" transform=\"translate(-251.000000, -77.000000)\" fill=\"#FFFFFF\">\n <path\n d=\"M251.4,106.3 C251.4,116.86 260.04,125.5 270.6,125.5 C281.16,125.5 289.8,116.86 289.8,106.3 L285,106.3 C285,114.22 278.52,120.7 270.6,120.7 C262.68,120.7 256.2,114.22 256.2,106.3 C256.2,98.38 262.68,91.9 270.6,91.9 L270.6,101.5 L282.6,89.5 L270.6,77.5 L270.6,87.1 C260.04,87.1 251.4,95.74 251.4,106.3 L251.4,106.3 Z M267.832031,113.5 L265.8,113.5 L265.8,105.667187 L263.374219,106.419531 L263.374219,104.767187 L267.614062,103.248437 L267.832031,103.248437 L267.832031,113.5 Z M278.048438,109.267188 C278.048438,110.68282 277.755472,111.765621 277.169531,112.515625 C276.583591,113.265629 275.725787,113.640625 274.596094,113.640625 C273.480463,113.640625 272.627347,113.27266 272.036719,112.536719 C271.446091,111.800778 271.14375,110.746101 271.129687,109.372656 L271.129687,107.488281 C271.129687,106.058587 271.426169,104.973441 272.019141,104.232812 C272.612112,103.492184 273.466401,103.121875 274.582031,103.121875 C275.697662,103.121875 276.550778,103.488668 277.141406,104.222266 C277.732034,104.955863 278.034375,106.009368 278.048438,107.382812 L278.048438,109.267188 Z M276.016406,107.2 C276.016406,106.351558 275.900392,105.733986 275.668359,105.347266 C275.436327,104.960545 275.074221,104.767188 274.582031,104.767188 C274.103904,104.767188 273.751173,104.95117 273.523828,105.319141 C273.296483,105.687111 273.175781,106.262496 273.161719,107.045312 L273.161719,109.534375 C273.161719,110.368754 273.275389,110.98867 273.502734,111.394141 C273.730079,111.799611 274.094529,112.002344 274.596094,112.002344 C275.092971,112.002344 275.451561,111.807814 275.671875,111.41875 C275.892189,111.029686 276.007031,110.434379 276.016406,109.632812 L276.016406,107.2 Z\"\n id=\"Shape\"></path>\n </g>\n </svg>\n </div>\n </div>\n </div>\n\n\n</div>","import { HttpClient } from '@angular/common/http';\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnDestroy, Output, OnChanges, SimpleChanges,\n Renderer2, ViewChild, ViewEncapsulation, OnInit, Optional, ChangeDetectorRef } from '@angular/core';\nimport { QuestionCursor } from '@project-sunbird/sunbird-quml-player-v9';\nimport * as _ from 'lodash-es';\nimport videojs from 'video.js';\nimport 'videojs-contrib-quality-levels';\nimport videojshttpsourceselector from 'videojs-http-source-selector';\nimport { ViewerService } from '../../services/viewer.service';\nimport { IAction } from '../../playerInterfaces';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/prefer-standalone\n standalone: false,\n selector: 'video-player',\n templateUrl: './video-player.component.html',\n styleUrls: ['./video-player.component.scss']\n})\nexport class VideoPlayerComponent implements AfterViewInit, OnInit, OnDestroy, OnChanges {\n @Input() config: any;\n @Input() action?: IAction;\n @Output() questionSetData = new EventEmitter();\n @Output() playerInstance = new EventEmitter();\n transcripts = [];\n showBackwardButton = false;\n showForwardButton = false;\n showPlayButton = true;\n showPauseButton = false;\n showControls = true;\n currentPlayerState = 'none';\n private unlistenTargetMouseMove: () => void;\n private unlistenTargetTouchStart: () => void;\n @ViewChild('target', { static: true }) target: ElementRef;\n @ViewChild('controlDiv', { static: true }) controlDiv: ElementRef;\n player: any;\n totalSeekedLength = 0;\n previousTime = 0;\n currentTime = 0;\n seekStart = null;\n time = 10;\n startTime;\n totalSpentTime = 0;\n isAutoplayPrevented = false;\n setMetaDataConfig = false;\n totalDuration = 0;\n disablePictureInPicture = false;\n\n\n constructor(public viewerService: ViewerService, private renderer2: Renderer2,\n @Optional()public questionCursor: QuestionCursor, private http: HttpClient, public cdr: ChangeDetectorRef ) { }\n ngOnInit() {\n this.disablePictureInPicture = _.get(this.config, 'disablePictureInPictureMode', false);\n this.transcripts = this.viewerService.handleTranscriptsData(_.get(this.config, 'transcripts') || []);\n }\n ngAfterViewInit() {\n this.viewerService.getPlayerOptions().then(async (options) => {\n this.player = await videojs(this.target.nativeElement, {\n fluid: true,\n responsive: true,\n sources: options,\n autoplay: true,\n muted: _.get(this.config, 'muted'),\n playbackRates: [0.5, 1, 1.5, 2],\n controlBar: {\n children: ['playToggle', 'volumePanel', 'durationDisplay',\n 'progressControl', 'remainingTimeDisplay', 'CaptionsButton',\n 'playbackRateMenuButton', 'fullscreenToggle']\n },\n plugins: {\n httpSourceSelector:\n {\n default: 'low'\n }\n },\n html5: {\n hls: {\n overrideNative: true\n },\n nativeAudioTracks: false,\n nativeVideoTracks: false,\n }\n } as any);\n this.player.videojshttpsourceselector = videojshttpsourceselector;\n this.player.videojshttpsourceselector();\n const markers = this.viewerService.getMarkers();\n\n if (markers && markers.length > 0) {\n const identifiers = markers.map(item => {\n return item.identifier;\n });\n if (this.viewerService.questionCursor) {\n this.viewerService.questionCursor.getAllQuestionSet(identifiers).subscribe(\n (response) => {\n if (!_.isEmpty(response)) {\n this.viewerService.maxScore = response.reduce((a, b) => a + b, 0);\n }\n }\n );\n }\n }\n\n if (markers) {\n this.player.markers({\n markers,\n markerStyle: {\n height: '7px',\n bottom: '39%',\n 'background-color': 'orange'\n },\n onMarkerReached: (marker) => {\n if (marker) {\n const { time, text, identifier, duration } = marker;\n if (!(this.player.currentTime() > (time + duration))) {\n setTimeout(() => {\n this.pause();\n this.player.controls(false);\n }, 1000);\n this.viewerService.getQuestionSet(identifier).subscribe(\n (response) => {\n this.questionSetData.emit({ response, time, identifier });\n }, (error) => {\n this.play();\n this.player.controls(true);\n console.log(error);\n }\n );\n }\n }\n }\n });\n this.playerInstance.emit(this.player);\n this.viewerService.playerInstance = this.player;\n this.viewerService.preFetchContent();\n }\n this.registerEvents();\n });\n\n setInterval(() => {\n if (!this.isAutoplayPrevented && this.currentPlayerState !== 'pause') {\n this.showControls = false;\n }\n }, 5000);\n\n this.unlistenTargetMouseMove = this.renderer2.listen(this.target.nativeElement, 'mousemove', () => {\n this.showControls = true;\n });\n this.unlistenTargetTouchStart = this.renderer2.listen(this.target.nativeElement, 'touchstart', () => {\n this.showControls = true;\n });\n\n this.viewerService.sidebarMenuEvent.subscribe(event => {\n if (event === 'OPEN_MENU') { this.pause(); }\n if (event === 'CLOSE_MENU') { this.play(); }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.action && this.player) {\n if (changes.action.currentValue !== changes.action.previousValue) {\n switch (changes.action.currentValue.name) {\n case 'play':\n this.play();\n break;\n case 'pause':\n this.pause();\n break;\n default: console.warn('Invalid Case!');\n }\n }\n }\n }\n\n onLoadMetadata(e) {\n this.totalDuration = this.viewerService.metaData.totalDuration = this.player.duration();\n this.viewerService.totalLength = this.totalDuration;\n if (this.transcripts && this.transcripts.length && this.player.transcript) {\n this.player.transcript({\n showTitle: true,\n showTrackSelector: true,\n });\n }\n }\n\n registerEvents() {\n const promise = this.player.play();\n if (promise !== undefined) {\n promise.catch(error => {\n this.isAutoplayPrevented = true;\n });\n }\n\n const events = ['loadstart', 'play', 'pause',\n 'error', 'playing', 'progress', 'seeked', 'seeking', 'volumechange',\n 'ratechange'];\n\n this.player.on('fullscreenchange', (data) => {\n // This code is to show the controldiv in fullscreen mode\n if (this.player.isFullscreen()) {\n this.target.nativeElement.parentNode.appendChild(this.controlDiv.nativeElement);\n }\n this.viewerService.raiseHeartBeatEvent('FULLSCREEN');\n });\n\n this.player.on('pause', (data) => {\n this.pause();\n });\n\n this.player.on('ratechange', (data) => {\n this.viewerService.metaData.playBackSpeeds.push(this.player.playbackRate());\n });\n\n this.player.on('volumechange', (data) => {\n this.viewerService.metaData.volume.push(this.player.volume());\n this.viewerService.metaData.muted = this.player.muted();\n });\n\n this.player.on('play', (data) => {\n this.currentPlayerState = 'play';\n this.showPauseButton = true;\n this.showPlayButton = false;\n this.viewerService.raiseHeartBeatEvent('PLAY');\n this.isAutoplayPrevented = false;\n });\n\n this.player.on('timeupdate', (data) => {\n this.viewerService.metaData.currentDuration = this.player.currentTime();\n this.handleVideoControls(data);\n this.viewerService.playerEvent.emit(data);\n this.viewerService.currentlength = this.viewerService.metaData.currentDuration;\n this.totalSpentTime += new Date().getTime() - this.startTime;\n this.startTime = new Date().getTime();\n const remainingTime = Math.floor(this.totalDuration - this.player.currentTime());\n if (remainingTime <= 0) {\n this.viewerService.metaData.currentDuration = 0;\n this.handleVideoControls({ type: 'ended' });\n this.viewerService.playerEvent.emit({ type: 'ended' });\n }\n });\n this.player.on('subtitleChanged', (event, track) => {\n this.handleEventsForTranscripts(track);\n });\n\n this.player.on('durationchange', (data) => {\n if (this.totalDuration === 0) {\n this.totalDuration = this.viewerService.metaData.totalDuration = this.player.duration();\n this.viewerService.playerEvent.emit({ ...data, duration: this.totalDuration });\n }\n });\n\n events.forEach(event => {\n this.player.on(event, (data) => {\n this.handleVideoControls(data);\n this.viewerService.playerEvent.emit(data);\n });\n });\n this.trackTranscriptEvent();\n }\n trackTranscriptEvent() {\n let timeout;\n const player = this.player;\n this.player.textTracks().on('change', function action(event) {\n clearTimeout(timeout);\n let transcriptObject = {};\n this.tracks_.filter((track) => {\n if ((track.kind === 'captions' || track.kind === 'subtitles') && track.mode === 'showing') {\n transcriptObject = { artifactUrl: track.src, languageCode: track.language };\n return true;\n }\n });\n timeout = setTimeout(() => {\n player.trigger('subtitleChanged', transcriptObject);\n }, 10);\n });\n }\n handleEventsForTranscripts(track) {\n let telemetryObject;\n if (!_.isEmpty(track)) {\n telemetryObject = {\n type: 'TRANSCRIPT_LANGUAGE_SELECTED',\n extraValues: {\n transcript: {\n language: _.get(_.filter(this.transcripts, { artifactUrl: track.artifactUrl, languageCode: track.languageCode })[0], 'language')\n },\n videoTimeStamp: this.player.currentTime()\n }\n };\n if (_.last(this.viewerService.metaData.transcripts) !== track.languageCode) {\n this.viewerService.metaData.transcripts.push(track.languageCode);\n }\n } else {\n telemetryObject = {\n type: 'TRANSCRIPT_LANGUAGE_OFF',\n extraValues: {\n videoTimeStamp: this.player.currentTime()\n }\n };\n this.viewerService.metaData.transcripts.push('off');\n }\n this.viewerService.raiseHeartBeatEvent(telemetryObject.type, telemetryObject.extraValues);\n }\n\n toggleForwardRewindButton() {\n this.showForwardButton = true;\n this.showBackwardButton = true;\n this.cdr.detectChanges();\n if ((this.player.currentTime() + this.time) > this.totalDuration) {\n this.showForwardButton = false;\n this.cdr.detectChanges();\n }\n if ((this.player.currentTime() - this.time) < 0) {\n this.showBackwardButton = false;\n this.cdr.detectChanges();\n }\n }\n\n play() {\n if (this.player) {\n this.player.play();\n }\n this.currentPlayerState = 'play';\n this.showPauseButton = true;\n this.showPlayButton = false;\n this.toggleForwardRewindButton();\n }\n\n pause() {\n if (this.player) {\n this.player.pause();\n }\n this.currentPlayerState = 'pause';\n this.showPauseButton = false;\n this.showPlayButton = true;\n this.toggleForwardRewindButton();\n this.viewerService.raiseHeartBeatEvent('PAUSE');\n }\n\n backward() {\n if (this.player) {\n this.player.currentTime(this.player.currentTime() - this.time);\n }\n this.toggleForwardRewindButton();\n this.viewerService.raiseHeartBeatEvent('BACKWARD');\n }\n\n forward() {\n if (this.player) {\n this.player.currentTime(this.player.currentTime() + this.time);\n }\n this.toggleForwardRewindButton();\n this.viewerService.raiseHeartBeatEvent('FORWARD');\n }\n\n handleVideoControls({ type }) {\n if (type === 'playing') {\n this.showPlayButton = false;\n this.showPauseButton = true;\n if (this.setMetaDataConfig) {\n this.setMetaDataConfig = false;\n this.setPreMetaDataConfig();\n }\n }\n if (type === 'ended') {\n this.totalSpentTime += new Date().getTime() - this.startTime;\n if (this.player) {\n this.viewerService.currentlength = this.player.currentTime();\n }\n this.viewerService.totalLength = this.totalDuration;\n this.updatePlayerEventsMetadata({ type });\n this.viewerService.playBitEndTime = this.totalDuration;\n this.viewerService.playerTimeSlots.push([this.viewerService.playBitStartTime, this.viewerService.playBitEndTime])\n }\n if (type === 'pause') {\n this.totalSpentTime += new Date().getTime() - this.startTime;\n this.updatePlayerEventsMetadata({ type });\n this.viewerService.playBitEndTime = this.previousTime\n this.viewerService.playerTimeSlots.push([this.viewerService.playBitStartTime, this.viewerService.playBitEndTime])\n }\n if (type === 'play') {\n this.startTime = new Date().getTime();\n if(this.player?.currentTime()) {\n this.viewerService.playBitStartTime = this.player?.currentTime()\n }\n this.updatePlayerEventsMetadata({ type });\n }\n\n if (type === 'loadstart') {\n this.startTime = new Date().getTime();\n this.setMetaDataConfig = true;\n }\n\n // Calculating total seeked length\n if (type === 'timeupdate') {\n this.previousTime = this.currentTime;\n if (this.player) {\n this.currentTime = this.player.currentTime();\n }\n this.toggleForwardRewindButton();\n }\n if (type === 'seeking') {\n if (this.seekStart === null) { this.seekStart = this.previousTime; }\n }\n if (type === 'seeked') {\n this.updatePlayerEventsMetadata({ type });\n if (this.currentTime > this.seekStart) {\n this.totalSeekedLength = this.totalSeekedLength + (this.currentTime - this.seekStart);\n } else if (this.seekStart > this.currentTime) {\n this.totalSeekedLength = this.totalSeekedLength + (this.seekStart - this.currentTime);\n }\n this.viewerService.totalSeekedLength = this.totalSeekedLength;\n this.seekStart = null;\n if (this.player.markers && this.player.markers.getMarkers) {\n const markers = this.player.markers.getMarkers();\n markers.forEach(marker => {\n if (!this.viewerService.interceptionResponses[marker.time] && marker.time < this.currentTime) {\n this.viewerService.interceptionResponses[marker.time] = {\n score: 0,\n isSkipped: false\n };\n // eslint-disable-next-line @typescript-eslint/dot-notation\n document.querySelector(`[data-marker-time=\"${marker.time}\"]`)['style'].backgroundColor = 'red';\n }\n });\n }\n }\n }\n\n setPreMetaDataConfig() {\n if (!_.isEmpty(_.get(this.config, 'volume'))) {\n this.player.volume(_.last(_.get(this.config, 'volume')));\n }\n if (_.get(this.config, 'currentDuration')) {\n this.player.currentTime(_.get(this.config, 'currentDuration'));\n this.viewerService.playBitStartTime = _.get(this.config, 'currentDuration')\n }\n if (!_.isEmpty(_.get(this.config, 'playBackSpeeds'))) {\n this.player.playbackRate(_.last(_.get(this.config, 'playBackSpeeds')));\n }\n }\n\n updatePlayerEventsMetadata({ type }) {\n const action = {};\n action[type + ''] = this.player.currentTime();\n this.viewerService.metaData.actions.push(action);\n }\n\n ngOnDestroy() {\n if (this.player) {\n this.player.dispose();\n }\n this.unlistenTargetMouseMove();\n this.unlistenTargetTouchStart();\n }\n}\n","<div class=\"sunbird-video-player-container\" #videoPlayer [ngClass]=\"showQumlPlayer ? 'videoPlayerHide': 'videoPlayerShow'\">\n <sb-player-side-menu-icon class=\"sb-player-side-menu-icon notVisible\" tabindex=\"0\" (sidebarMenuEvent)=\"sideBarEvents($event)\"\n\n *ngIf=\"viewState ==='player'\" [ngClass]=\"{'isVisible': showControls}\"></sb-player-side-menu-icon>\n <video-player *ngIf=\"viewState === 'player'\" (questionSetData)=\"questionSetData($event)\" (playerInstance)=\"playerInstance($event)\" [config]=\"playerConfig.config\" [action]=\"playerAction\">\n </video-player>\n <sb-player-sidebar [playerConfig]=\"playerConfig\"\n *ngIf=\"viewState ==='player'\"\n [title]=\"viewerService.contentName\"\n (sidebarEvent)=\"sideBarEvents($event)\" [config]=\"sideMenuConfig\"></sb-player-sidebar>\n <sb-player-end-page\n [playerConfig]=\"playerConfig\"\n [contentName]=\"viewerService.contentName\" \n [outcomeLabel]=\"viewerService.showScore ? 'Score: ': ''\" \n [outcome]=\"viewerService.showScore ? viewerService.scoreObtained + ((viewerService.maxScore && viewerService.maxScore > 0) ? '/' + viewerService.maxScore : '') : ''\"\n [nextContent]=\"nextContent\" [userName]=\"viewerService.userName\" \n [showExit]=\"sideMenuConfig.showExit\"\n [timeSpentLabel]=\"viewerService.timeSpent\" tabindex=\"0\" (playNextContent)=\"playContent($event)\" \n (exitContent)=\"exitContent($event)\" (replayContent)=\"replayContent($event)\"\n *ngIf=\"viewState === 'end'\"></sb-player-end-page>\n <sb-player-contenterror *ngIf=\"showContentError\"></sb-player-contenterror>\n</div>\n\n<div class=\"sunbird-video-player-container\" *ngIf=\"showQumlPlayer\" #qumlPlayer>\n <quml-main-player [playerConfig]=\"QumlPlayerConfig\" (playerEvent)=\"qumlPlayerEvents($event)\"></quml-main-player>\n</div>","import {\n ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, OnChanges, SimpleChanges,\n HostListener, ElementRef, ViewChild, AfterViewInit, Renderer2, OnDestroy\n} from '@angular/core';\nimport { ErrorService , errorCode , errorMessage, ISideBarEvent } from '@project-sunbird/sunbird-player-sdk-v9';\n\nimport { PlayerConfig } from './playerInterfaces';\nimport { IAction } from './playerInterfaces';\nimport { ViewerService } from './services/viewer.service';\nimport { SunbirdVideoPlayerService } from './sunbird-video-player.service';\n@Component({\n // eslint-disable-next-line @angular-eslint/prefer-standalone\n standalone: false,\n selector: 'sunbird-video-player',\n templateUrl: './sunbird-video-player.component.html',\n styleUrls: ['./sunbird-video-player.component.scss']\n})\nexport class SunbirdVideoPlayerComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n @Input() playerConfig: PlayerConfig;\n @Input() action?: IAction;\n @Output() playerEvent: EventEmitter<object>;\n @Output() telemetryEvent: EventEmitter<any> = new EventEmitter<any>();\n @ViewChild('videoPlayer', { static: true }) videoPlayerRef: ElementRef;\n viewState = 'player';\n public traceId: string;\n public nextContent: any;\n showContentError: boolean;\n showControls = true;\n sideMenuConfig = {\n showShare: true,\n showDownload: true,\n showReplay: true,\n showExit: true\n };\n private unlistenTouchStart: () => void;\n private unlistenMouseMove: () => void;\n isPaused = false;\n showQumlPlayer = false;\n QumlPlayerConfig: any = {};\n videoInstance: any;\n currentInterceptionTime;\n currentInterceptionUIId;\n isFullScreen = false;\n playerAction: IAction;\n public isInitialized = false;\n\n constructor(\n public videoPlayerService: SunbirdVideoPlayerService,\n public viewerService: ViewerService,\n public cdr: ChangeDetectorRef,\n private renderer2: Renderer2,\n public errorService: ErrorService\n ) {\n this.playerEvent = this.viewerService.playerEvent;\n this.viewerService.playerEvent.subscribe(event => {\n if (event.type === 'pause') {\n this.isPaused = true;\n this.showControls = true;\n }\n if (event.type === 'play') {\n this.isPaused = false;\n }\n if (event.type === 'loadstart') {\n this.viewerService.raiseStartEvent(event);\n }\n if (event.type === 'ended') {\n this.viewerService.endPageSeen = true;\n this.viewerService.raiseEndEvent();\n this.viewState = 'end';\n this.cdr.detectChanges();\n }\n if (event.type === 'error') {\n // eslint-disable-next-line one-var\n let code = errorCode.contentLoadFails,\n message = errorMessage.contentLoadFails;\n if (this.viewerService.isAvailableLocally) {\n code = errorCode.contentLoadFails;\n message = errorMessage.contentLoadFails;\n }\n if (code === errorCode.contentLoadFails) {\n this.showContentError = true;\n }\n this.viewerService.raiseExceptionLog(code, message, event, this.traceId);\n\n }\n // eslint-disable-next-line max-len\n const events = [{ type: 'volumechange', telemetryEvent: 'VOLUME_CHANGE' }, { type: 'seeking', telemetryEvent: 'DRAG' }, { type: 'fullscreen', telemetryEvent: 'FULLSCREEN' },\n { type: 'ratechange', telemetryEvent: 'RATE_CHANGE' }];\n events.forEach(data => {\n if (event.type === data.type) {\n this.viewerService.raiseHeartBeatEvent(data.telemetryEvent);\n }\n });\n });\n }\n\n @HostListener('document:TelemetryEvent', ['$event'])\n onTelemetryEvent(event) {\n this.telemetryEvent.emit(event.detail);\n }\n\n ngOnInit() {\n this.isInitialized = true;\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 }\n setInterval(() => {\n if (!this.isPaused) {\n this.showControls = false;\n }\n }, 5000);\n\n /* eslint-disable @typescript-eslint/dot-notation */\n this.nextContent = this.playerConfig?.config?.nextContent;\n this.traceId = this.playerConfig.config['traceId'];\n this.sideMenuConfig = { ...this.sideMenuConfig, ...this.playerConfig.config.sideMenu };\n this.videoPlayerService.initialize(this.playerConfig);\n this.viewerService.initialize(this.playerConfig);\n window.addEventListener('offline', this.raiseInternetDisconnectionError , true);\n this.QumlPlayerConfig.config = this.playerConfig.config;\n this.QumlPlayerConfig.config.sideMenu.enable = false;\n this.QumlPlayerConfig.context = this.playerConfig.context;\n this.setTelemetryObjectRollup(this.playerConfig.metadata.identifier);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.action) {\n if (!this.showQumlPlayer) {\n this.playerAction = this.action;\n }\n }\n if (changes?.playerConfig?.firstChange && this.isInitialized) {\n // Calling for web component explicitly and life cycle works in different order\n this.ngOnInit();\n }\n }\n\n raiseInternetDisconnectionError = () => {\n const code = errorCode.internetConnectivity;\n const message = errorMessage.internetConnectivity;\n const stacktrace = `${code}: ${message}`;\n this.viewerService.raiseExceptionLog(code, message, stacktrace, this.traceId);\n }\n\n ngAfterViewInit() {\n const videoPlayerElement = this.videoPlayerRef.nativeElement;\n this.unlistenMouseMove = this.renderer2.listen(videoPlayerElement, 'mousemove', () => {\n this.showControls = true;\n });\n\n this.unlistenTouchStart = this.renderer2.listen(videoPlayerElement, 'touchstart', () => {\n this.showControls = true;\n });\n\n const contentCompabilityLevel = this.playerConfig.metadata['compatibilityLevel'];\n if (contentCompabilityLevel) {\n const checkContentCompatible = this.errorService.checkContentCompatibility(contentCompabilityLevel);\n if (!checkContentCompatible['isCompitable']) {\n // eslint-disable-next-line max-len\n this.viewerService.raiseExceptionLog(errorCode.contentCompatibility, errorMessage.contentCompatibility, checkContentCompatible['error']['message'], this.traceId);\n }\n }\n }\n\n sideBarEvents(event: ISideBarEvent) {\n this.playerEvent.emit(event);\n if (event.type === 'DOWNLOAD') {\n this.downloadVideo();\n }\n const events = ['SHARE', 'DOWNLOAD_MENU', 'EXIT', 'CLOSE_MENU', 'OPEN_MENU', 'DOWNLOAD_POPUP_CANCEL', 'DOWNLOAD_POPUP_CLOSE'];\n events.forEach(data => {\n if (event.type === data) {\n this.viewerService.raiseHeartBeatEvent(data);\n }\n if (event.type === 'EXIT') {\n this.viewerService.sidebarMenuEvent.emit('CLOSE_MENU');\n }\n });\n }\n\n setTelemetryObjectRollup(id) {\n if (this.QumlPlayerConfig.context) {\n const hasObjectRollup = this.QumlPlayerConfig && this.QumlPlayerConfig.context && this.QumlPlayerConfig.context.objectRollup;\n if (!hasObjectRollup) {\n this.QumlPlayerConfig.context.objectRollup = {};\n }\n const levels = Object.keys(this.QumlPlayerConfig.context.objectRollup);\n this.QumlPlayerConfig.context.objectRollup[`l${levels.length + 1}`] = id;\n }\n }\n\n playContent(event) {\n this.viewerService.raiseHeartBeatEvent(event.type);\n }\n\n replayContent(event) {\n this.playerEvent.emit(event);\n this.viewState = 'player';\n this.viewerService.isEndEventRaised = false;\n this.viewerService.raiseHeartBeatEvent('REPLAY');\n this.cdr.detectChanges();\n }\n\n exitContent(event) {\n this.playerEvent.emit(event);\n this.viewerService.raiseHeartBeatEvent('EXIT');\n }\n\n downloadVideo() {\n const a = document.createElement('a');\n a.href = this.viewerService.artifactUrl;\n a.download = this.viewerService.contentName;\n a.target = '_blank';\n document.body.appendChild(a);\n a.click();\n a.remove();\n this.viewerService.raiseHeartBeatEvent('DOWNLOAD');\n }\n\n qumlPlayerEvents(event) {\n if (event.eid === 'QUML_SUMMARY') {\n this.showQumlPlayer = false;\n const score = parseInt(event.edata.extra.find(p => p.id === 'score')['value'], 10);\n this.viewerService.interceptionResponses[this.currentInterceptionTime] = {\n score,\n isSkipped: false\n };\n const interceptPointElement = document.querySelector(`[data-marker-time=\"${this.currentInterceptionTime}\"]`);\n if (interceptPointElement) {\n interceptPointElement['style'].background = 'green';\n }\n this.videoInstance.play();\n this.videoInstance.controls(true);\n this.viewerService.raiseImpressionEvent('video');\n // if currently video is not in full screen and was previously full screen then set it back to full screen again\n if (!document.fullscreenElement && this.isFullScreen) {\n if (document.getElementsByClassName('video-js')[0]) {\n document.getElementsByClassName('video-js')[0].requestFullscreen()\n .catch((err) => console.error(err));\n }\n }\n }\n }\n\n questionSetData({response, time, identifier}) {\n this.QumlPlayerConfig.metadata = response;\n this.QumlPlayerConfig.metadata['showStartPage'] = 'No';\n this.QumlPlayerConfig.metadata['showEndPage'] = 'No';\n this.currentInterceptionTime = time;\n this.currentInterceptionUIId = identifier;\n if (document.fullscreenElement) {\n this.isFullScreen = true;\n document.exitFullscreen()\n .catch((err) => console.error(err));\n } else {\n this.isFullScreen = false;\n }\n this.showQumlPlayer = true;\n this.viewerService.raiseImpressionEvent('interactive-question-set', { id: identifier, type: 'QuestionSet' });\n this.viewerService.raiseHeartBeatEvent('VIDEO_MARKER_SELECTED', {\n identifier, // Question set id,\n type: 'QuestionSet', // Type of interaction\n interceptedAt: time // Time when the interception happened\n });\n }\n\n playerInstance(event) {\n this.videoInstance = event;\n }\n\n @HostListener('window:beforeunload')\n ngOnDestroy() {\n this.viewerService.raiseEndEvent(true);\n this.unlistenTouchStart();\n this.unlistenMouseMove();\n this.viewerService.isEndEventRaised = false;\n window.removeEventListener('offline', this.raiseInternetDisconnectionError , true);\n }\n}\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SunbirdPlayerSdkModule } from '@project-sunbird/sunbird-player-sdk-v9';\nimport { SunbirdVideoPlayerComponent } from './sunbird-video-player.component';\nimport { VideoPlayerComponent } from './components/video-player/video-player.component';\nimport { ErrorService } from '@project-sunbird/sunbird-player-sdk-v9';\nimport { HttpClientModule } from '@angular/common/http';\n\n@NgModule({\n declarations: [SunbirdVideoPlayerComponent, VideoPlayerComponent],\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n SunbirdPlayerSdkModule,\n ],\n providers: [ErrorService],\n exports: [SunbirdVideoPlayerComponent , SunbirdPlayerSdkModule],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class SunbirdVideoPlayerModule { }\n","/*\n * Public API Surface of sunbird-video-player\n */\n\nexport * from './lib/sunbird-video-player.service';\nexport * from './lib/sunbird-video-player.component';\nexport * from './lib/sunbird-video-player.module';\nexport * from './lib/playerInterfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.UtilService","i1.SunbirdVideoPlayerService","i2.UtilService","i1.ViewerService","i2","i2.ViewerService","i3"],"mappings":"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"}