{"version":3,"file":"678.2fba795466139dd5.js","mappings":"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","names":["i0","ctx_r7","ctx_r9","ctx_r10","ctx_r28","ctx_r30","CeuAssessmentComponent","constructor","assessmentService","activeModal","auth","toaster","courseData","fb","this","EventEmitter","ngOnInit","getAssessment","course","assessmentId","subscribe","result","completionStatus","CourseCompletionViewModel","getCourseUserCompletionStatus","id","completion","assessment","loadAssessment","initialized","error","notRegistered","console","log","questions","map","x","group","text","questionId","responseId","assessmentForm","array","rating","Validators","close","closed","emit","submitAssessment","valid","markAllControlsDirty","formData","Object","assign","value","responses","submitAssessmentAndGetCeus","ceuError","messageDialog","dismiss","selectors","ctx_r5","CourseMaterialsComponent","ctx_r11","r","ctx_r17","ctx_r19","ctx_r20","CourseViewerComponent","route","modalService","router","titleService","CourseEventStatus","EventRole","document","getElementsByTagName","setAttribute","routeSubscription","combineLatest","data","paramMap","queryParamMap","params","queryParams","get","preview","has","cc","toLocaleLowerCase","getSpecificCourse","getPLayheadLocation","playhead","playHeadLocation","userHasPurchased","isSuperUser","availible","courseEventStatus","toString","released","encoded","setTitleAndLogPageView","title","initializePlayer","navigate","slug","notAuthorized","loadZendesk","of","pipe","delay","tap","setupPlayer","CEUClicked","modalRef","open","size","ariaLabelledBy","backdrop","componentInstance","then","reason","livePlayer","flowplayer","qsel","labels","src","wowzaPlaybackUrl","autoplay","AUDIO_REQUIRED","ui","NO_FULLSCREEN","disabled","token","currentTime","playheadLocation","callback","interval","timerSubcription","updatePlayhead","Math","floor","playheadLocationMax","max","events","SET_QUALITY","level","zE","techSupportClicked","exitPage","metCEUCriteria","confirmDialog","toggleCaptions","window","location","fullscreen","elem","fullscreenContainer","nativeElement","doc","isFullScreen","exitFullscreen","i","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","requestFullscreen","t","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","setTimeout","exit","ev","ngOnDestroy","removeAttribute","destroy","unsubscribe","ctx","OnDemandModule","NgbModalModule","ApplicationPipesModule","RouterModule","path","component"],"sourceRoot":"webpack:///","sources":["./src/app/courses/purchased-course/ceu-assessment/ceu-assessment.component.html","./src/app/courses/purchased-course/ceu-assessment/ceu-assessment.component.ts","./src/app/courses/purchased-course/materials/course-materials.component.html","./src/app/courses/purchased-course/materials/course-materials.component.ts","./src/app/courses/purchased-course/course-viewer.component.html","./src/app/courses/purchased-course/course-viewer.component.ts","./src/app/on-demand.module.ts"],"sourcesContent":["
\r\n \r\n
\r\n
\r\n

CEU Assessment

\r\n\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n
{{ ceuError }}
\r\n
\r\n

Course Complete!

\r\n
You can download you certificate from CEU History in \"My Account\"
\r\n Done\r\n
\r\n
\r\n

Not registered

\r\n
You do not have a registration for this event, so you can't earn CEUs. If you think this is error, please contact support.
\r\n Done\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
Question {{ idx + 1 }}: {{ question.text }}
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
Please provide a star rating
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
Feedback Text is required
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\r\nimport { CourseViewModel, AssessmentViewModel, AssessmentResponsesViewModel, CourseCompletionViewModel } from 'src/app/_models/generatedModels';\r\nimport { AssessmentService, CourseService } from 'src/app/_services/generatedServices';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { ToasterService } from 'src/app/_services/toaster.service';\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'bxl-ceu-assessment',\r\n templateUrl: 'ceu-assessment.component.html',\r\n})\r\nexport class CeuAssessmentComponent implements OnInit {\r\n initialized = false;\r\n currentQuestion = 0;\r\n public ceuError: string;\r\n\r\n @Output()\r\n closed = new EventEmitter();\r\n\r\n assessmentForm: FormGroup;\r\n @Input() course: CourseViewModel;\r\n assessment: AssessmentViewModel;\r\n public completionStatus: CourseCompletionViewModel;\r\n notRegistered: boolean;\r\n\r\n constructor(private assessmentService: AssessmentService, public activeModal: NgbActiveModal, private auth: AuthenticationService, private toaster: ToasterService, private courseData: CourseService, private fb: FormBuilder) {}\r\n\r\n ngOnInit(): void {\r\n this.assessmentService.getAssessment(this.course.assessmentId).subscribe((result) => {\r\n this.completionStatus = new CourseCompletionViewModel();\r\n this.courseData.getCourseUserCompletionStatus(this.course.id).subscribe((completion) => {\r\n this.completionStatus = completion;\r\n this.assessment = result;\r\n this.loadAssessment();\r\n this.initialized = true;\r\n }, error=>{\r\n this.completionStatus = null;\r\n this.notRegistered = true;\r\n console.log('not registered');\r\n this.initialized = true;\r\n });\r\n });\r\n }\r\n\r\n loadAssessment() {\r\n let questions = this.assessment.questions.map((x) =>\r\n this.fb.group({\r\n text: x.text,\r\n questionId: x.id,\r\n responseId: null,\r\n })\r\n );\r\n\r\n this.assessmentForm = this.fb.group({\r\n questions: this.fb.array(questions),\r\n rating: [null, [Validators.required]],\r\n text: ['', [Validators.required]],\r\n });\r\n\r\n this.initialized = true;\r\n }\r\n close() {\r\n this.activeModal.close();\r\n console.log('close');\r\n this.closed.emit();\r\n }\r\n\r\n submitAssessment() {\r\n if (!this.assessmentForm.valid) {\r\n this.assessmentForm.markAllControlsDirty();\r\n this.toaster.error('Please fill out all required fields', 'Error');\r\n return;\r\n }\r\n const formData: AssessmentResponsesViewModel = Object.assign({}, null, this.assessmentForm.value);\r\n formData.responses = this.assessmentForm.value.questions;\r\n\r\n this.assessmentService.submitAssessmentAndGetCeus(this.course.id, formData).subscribe(\r\n (result) => {\r\n this.ceuError = null;\r\n this.completionStatus = result;\r\n\r\n this.toaster.messageDialog('This event is complete. You can download your certificate from \"CEU History\" of \"My Account\"', 'Event Complete').subscribe();\r\n this.activeModal.dismiss();\r\n },\r\n (error) => {\r\n this.ceuError = error.error[0];\r\n }\r\n );\r\n }\r\n}\r\n","
\r\n \r\n
\r\n
\r\n

Materials

\r\n\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

No Materials

\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n

\r\n {{ material.description }}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n","import { Component, OnInit, Output, Input, EventEmitter } from '@angular/core';\r\nimport { CourseViewModel } from 'src/app/_models/generatedModels';\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\n\r\n@Component({\r\n selector: 'bxl-course-materials',\r\n templateUrl: 'course-materials.component.html',\r\n})\r\nexport class CourseMaterialsComponent implements OnInit {\r\n initialized = false;\r\n @Output()\r\n closed = new EventEmitter();\r\n\r\n @Input() course: CourseViewModel;\r\n constructor(public auth: AuthenticationService) {}\r\n\r\n ngOnInit(): void {\r\n this.initialized = true;\r\n }\r\n\r\n close() {\r\n console.log('close');\r\n this.closed.emit();\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
This course is unavailable at this time. Please check back later.
\r\n
This course is still processing. Please check back later.
\r\n
You have not purhased this course.
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
    \r\n
  • \r\n

    Help

    \r\n
  • \r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
    \r\n
  • \r\n

    Materials

    \r\n
  • \r\n
  • 0\" class=\"list-inline-item mr-3\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"\" data-original-title=\"Access CEU tokens and generate certificates\">\r\n

    CEUs

    \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input, OnDestroy, HostListener, ElementRef, ViewChild } from '@angular/core';\r\nimport { CourseViewModel, CourseEventStatus, PlayheadLocationModel } from 'src/app/_models/generatedModels';\r\nimport { Subscription, combineLatest, of, interval } from 'rxjs';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { CourseService } from 'src/app/_services/generatedServices';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { delay, tap } from 'rxjs/operators';\r\nimport { ToasterService } from 'src/app/_services/toaster.service';\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { CeuAssessmentComponent } from './ceu-assessment/ceu-assessment.component';\r\nimport { AnalyticsService } from 'src/app/_services/analytics.service';\r\n\r\ndeclare var zE: any;\r\ndeclare var flowplayer: any;\r\nimport { Flowplayer, FPEvent } from \"@flowplayer/player\";\r\nimport Player = Flowplayer.Player;\r\nimport { EventRole } from \"../../_models/models\";\r\n\r\n@Component({\r\n selector: 'bxl-course-viewer',\r\n templateUrl: 'course-viewer.component.html',\r\n})\r\nexport class CourseViewerComponent implements OnInit, OnDestroy {\r\n initialized = false;\r\n private routeSubscription: Subscription;\r\n showAssessment = false;\r\n showMaterials = false;\r\n availible = false;\r\n\r\n livePlayer: Player;\r\n @ViewChild('fullscreenContainer') fullscreenContainer: ElementRef;\r\n public isFullScreen: boolean;\r\n course: CourseViewModel;\r\n id: any;\r\n\r\n CourseEventStatus = CourseEventStatus;\r\n notAuthorized = false;\r\n timerSubcription: Subscription;\r\n currentTime: number;\r\n playHeadLocation: PlayheadLocationModel;\r\n preview: boolean;\r\n cc: boolean;\r\n\r\n constructor(private route: ActivatedRoute, private modalService: NgbModal, private router: Router, private auth: AuthenticationService, private toaster: ToasterService, private titleService: AnalyticsService, private courseData: CourseService) {}\r\n\r\n ngOnInit(): void {\r\n let root = document.getElementsByTagName('html')[0]; // '0' to assign the first (and only `HTML` tag)\r\n root.setAttribute('class', 'hideScrollBars');\r\n\r\n this.routeSubscription = combineLatest(this.route.data, this.route.paramMap, this.route.queryParamMap).subscribe(([data, params, queryParams]) => {\r\n this.id = params.get('id');\r\n this.preview = queryParams.get('preview') === 'true';\r\n\r\n if (queryParams.has('cc')) {\r\n this.cc = queryParams.get('cc') ? queryParams.get('cc').toLocaleLowerCase() === 'true' : false;\r\n }\r\n\r\n this.courseData.getSpecificCourse(this.id).subscribe(\r\n (course) => {\r\n this.courseData.getPLayheadLocation(course.id).subscribe((playhead) => {\r\n this.playHeadLocation = playhead;\r\n this.course = course;\r\n if (!this.course.userHasPurchased && !this.auth.isSuperUser()) {\r\n this.router.navigate(['courses', this.course.slug]);\r\n return;\r\n }\r\n this.availible = course.courseEventStatus.toString() === CourseEventStatus[CourseEventStatus.Published].toString() || course.courseEventStatus.toString() === CourseEventStatus[CourseEventStatus.PublishedInternal].toString() || course.courseEventStatus.toString() === CourseEventStatus[CourseEventStatus.NotForSale].toString() || course.courseEventStatus.toString() === CourseEventStatus[CourseEventStatus.Unlisted].toString() || (course.courseEventStatus.toString() === CourseEventStatus[CourseEventStatus.ReleaseWithConference].toString() && course.released && this.course.encoded && this.course.userHasPurchased);\r\n\r\n if (this.preview === true && this.auth.isSuperUser()) {\r\n this.availible = true;\r\n }\r\n\r\n this.titleService.setTitleAndLogPageView('View Course - ' + course.title);\r\n this.initialized = true;\r\n if (this.availible) {\r\n this.initializePlayer();\r\n }\r\n });\r\n },\r\n (error) => {\r\n this.notAuthorized = true;\r\n this.initialized = true;\r\n }\r\n );\r\n });\r\n this.loadZendesk();\r\n\r\n //this.toaster.messageDialog(\"Please watch the video in its entirety, and once its done, click 'CEUs' at the bottom to take the quiz and get your certificate!\", 'CEU Instructions').subscribe();\r\n }\r\n\r\n initializePlayer() {\r\n of(true)\r\n .pipe(\r\n delay(500),\r\n tap(() => {\r\n this.setupPlayer();\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n CEUClicked() {\r\n if (!this.course.assessmentId) {\r\n this.toaster.messageDialog('This presenter has not provided CEU questions yet. You can watch the recording now and complete the assessment later once the presenter has uploaded their assessment.', 'Missing Assessment').subscribe();\r\n return;\r\n }\r\n\r\n const modalRef = this.modalService.open(CeuAssessmentComponent, {\r\n size: 'lg',\r\n ariaLabelledBy: 'modal-basic-title',\r\n backdrop: 'static'\r\n });\r\n modalRef.componentInstance.course = this.course;\r\n\r\n modalRef.result.then(\r\n (result) => {},\r\n (reason) => {}\r\n );\r\n return;\r\n }\r\n\r\n setupPlayer() {\r\n this.livePlayer = flowplayer('#wowzaPlayer', {\r\n qsel: {\r\n labels: [],\r\n },\r\n src: this.course.wowzaPlaybackUrl,\r\n autoplay: flowplayer.autoplay.AUDIO_REQUIRED,\r\n ui: flowplayer.ui.NO_FULLSCREEN,\r\n disabled: true,\r\n // seekable:false,\r\n token: \"eyJraWQiOiIwWE44RnRTYkQxblYiLCJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJjIjoie1wiYWNsXCI6MzgsXCJpZFwiOlwiMFhOOEZ0U2JEMW5WXCJ9IiwiaXNzIjoiRmxvd3BsYXllciJ9.wHlyQZ86rIHD8ldgnpiWbmFBmR4zt_3FSj78GMk7lfQ1es7K8y0MuHzbqcJfp0lm6LcUbUkQ5PsazIsAybxivg\"\r\n });\r\n\r\n // (this.livePlayer.setOpts({seekable:false}))\r\n\r\n\r\n // var parent = this;\r\n // this.livePlayer.on(['seeking'], function (e) {\r\n // // e.type is the event type such as \"seeking\"\r\n // var type = e.type\r\n // console.log('seeking');\r\n // console.log(e);\r\n // e.stopPropagation();\r\n // e.preventDefault();\r\n // e.stopImmediatePropagation();\r\n // return false;\r\n // //parent.livePlayer.currentTime = parent.playHeadLocation.playheadLocationMax;\r\n // })\r\n\r\n this.livePlayer.currentTime = this.playHeadLocation.playheadLocation;\r\n\r\n const callback = interval(120000);\r\n this.timerSubcription = callback.subscribe(() => {\r\n if (!this.livePlayer) {\r\n return;\r\n }\r\n\r\n console.log('Updating Playhead: ' + this.livePlayer.currentTime);\r\n this.courseData.updatePlayhead(this.course.id, Math.floor(this.livePlayer.currentTime)).subscribe();\r\n this.playHeadLocation.playheadLocation = this.livePlayer.currentTime;\r\n this.playHeadLocation.playheadLocationMax = Math.max(this.livePlayer.currentTime, this.playHeadLocation.playheadLocationMax);\r\n });\r\n\r\n this.livePlayer.emit(flowplayer.events.SET_QUALITY, {level: 0})\r\n }\r\n\r\n //\r\n // setupPlayer2() {\r\n // let source = { src: this.course.azureAssetId, type: 'video/mp4' };\r\n // let preroll = {\r\n // sourceUri: '/preroll.xml',\r\n // options: {\r\n // skipAd: {\r\n // enabled: true,\r\n // offset:5\r\n // },\r\n // },\r\n // };\r\n //\r\n // if (this.preview) {\r\n // preroll = null;\r\n // }\r\n //\r\n // console.log(source);\r\n //\r\n // let options: any = {\r\n // autoplay: true,\r\n // controls: true,\r\n // hotKeys: {\r\n // enableVolumeScroll: false,\r\n // },\r\n // fluid: true,\r\n // logo: { enabled: false },\r\n // };\r\n //\r\n // if (this.cc) {\r\n // console.log('cc enabled');\r\n // options.imsc1CaptionsSettings = [{ label: 'English', srclang: 'en', enabled: 'false' }];\r\n // options.ampAds = {\r\n // mainProgram: {\r\n // source: source,\r\n // },\r\n // };\r\n // } else {\r\n // options.ampAds = {\r\n // preRoll: preroll,\r\n // mainProgram: {\r\n // source: source,\r\n // },\r\n // };\r\n // }\r\n //\r\n // this.livePLayer = amp('livePLayer', options);\r\n // this.livePLayer.src([{ src: this.course.azureAssetId, type: 'application/vnd.ms-sstr+xml' }]);\r\n //\r\n // this.livePLayer.addEventListener('start', (evt) => {\r\n // this.livePLayer.currentTime(this.playHeadLocation.playheadLocation);\r\n // });\r\n //\r\n // this.livePLayer.addEventListener('ended', (evt) => {\r\n // console.log(evt);\r\n // console.log('completed playing');\r\n // });\r\n //\r\n // // if (!this.auth.isSuperUser()) {\r\n // // this.livePLayer.addEventListener('seeking', (evt) => {\r\n // // if (this.livePLayer.currentTime() < 60) {\r\n // // return;\r\n // // }\r\n // // if (this.livePLayer.currentTime() > this.playHeadLocation.playheadLocationMax + 5) {\r\n // // this.livePLayer.currentTime(this.playHeadLocation.playheadLocationMax);\r\n // // }\r\n // // });\r\n // // }\r\n //\r\n // const callback = interval(120000);\r\n // this.timerSubcription = callback.subscribe(() => {\r\n // if (!this.livePLayer) {\r\n // return;\r\n // }\r\n //\r\n // console.log('Updating Playhead: ' + this.livePLayer.currentTime());\r\n // this.courseData.updatePlayhead(this.course.id, Math.floor(this.livePLayer.currentTime())).subscribe();\r\n // this.playHeadLocation.playheadLocation = this.livePLayer.currentTime();\r\n // this.playHeadLocation.playheadLocationMax = Math.max(this.livePLayer.currentTime(), this.playHeadLocation.playheadLocationMax);\r\n // });\r\n // }\r\n\r\n loadZendesk() {\r\n zE('webWidget', 'hide');\r\n zE('webWidget:on', 'close', () => {\r\n zE('webWidget', 'hide');\r\n });\r\n }\r\n\r\n techSupportClicked() {\r\n zE('webWidget', 'show');\r\n zE('webWidget', 'open');\r\n }\r\n\r\n exitPage() {\r\n if (this.preview) {\r\n this.router.navigate(['/super-user/courses']);\r\n return;\r\n }\r\n\r\n this.courseData.getCourseUserCompletionStatus(this.course.id).subscribe((result) => {\r\n if (result.metCEUCriteria) {\r\n this.router.navigate(['/account/library']);\r\n return;\r\n } else {\r\n this.toaster.confirmDialog('You have not completed the CEU assessment. Are you sure you want to leave this course without getting CEUs?

To get CEUs, click \"CEUs\" at the bottom of the screen.', 'Exit without CEUs?', 'Yes, Exit', 'Cancel').subscribe((result) => {\r\n if (result) {\r\n this.router.navigate(['/account/library']);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n toggleCaptions() {\r\n if (this.cc) {\r\n (window).location = '/on-demand/' + this.course.slug;\r\n //his.window.location =.navigate(['/live-events/484/live'], { queryParams: { cc: false }, queryParamsHandling: 'merge' });\r\n } else {\r\n (window).location = '/on-demand/' + this.course.slug + '?cc=true';\r\n //this.router.navigate(['/live-events/484/live'], { queryParams: { cc: true }, queryParamsHandling: 'merge' });\r\n }\r\n }\r\n\r\n fullscreen() {\r\n let elem = this.fullscreenContainer.nativeElement;\r\n let doc = document;\r\n if (!this.isFullScreen) {\r\n if (elem.requestFullscreen) {\r\n elem.requestFullscreen();\r\n } else if (elem.mozRequestFullScreen) {\r\n /* Firefox */\r\n elem.mozRequestFullScreen();\r\n } else if (elem.webkitRequestFullscreen) {\r\n /* Chrome, Safari and Opera */\r\n elem.webkitRequestFullscreen();\r\n } else if (elem.msRequestFullscreen) {\r\n /* IE/Edge */\r\n elem.msRequestFullscreen();\r\n }\r\n setTimeout(() => {\r\n this.isFullScreen = true;\r\n }, 500);\r\n } else {\r\n if (document.exitFullscreen) {\r\n doc.exitFullscreen();\r\n } else if (doc.mozCancelFullScreen) {\r\n /* Firefox */\r\n doc.mozCancelFullScreen();\r\n } else if (doc.webkitExitFullscreen) {\r\n /* Chrome, Safari and Opera */\r\n doc.webkitExitFullscreen();\r\n } else if (doc.msExitFullscreen) {\r\n /* IE/Edge */\r\n doc.msExitFullscreen();\r\n }\r\n\r\n of(null)\r\n .pipe(delay(500))\r\n .subscribe((result) => {\r\n this.isFullScreen = false;\r\n });\r\n }\r\n }\r\n\r\n @HostListener('document:fullscreenchange', ['$event'])\r\n @HostListener('document:webkitfullscreenchange', ['$event'])\r\n @HostListener('document:mozfullscreenchange', ['$event'])\r\n @HostListener('document:MSFullscreenChange', ['$event'])\r\n exit(ev) {\r\n if (this.isFullScreen) {\r\n of(null)\r\n .pipe(delay(3000))\r\n .subscribe((result) => {\r\n this.isFullScreen = false;\r\n console.log('exiting');\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n let root = document.getElementsByTagName('html')[0]; // '0' to assign the first (and only `HTML` tag)\r\n root.removeAttribute('class');\r\n\r\n console.log('disposing');\r\n if (this.livePlayer) {\r\n console.log('disposed media player');\r\n this.livePlayer.destroy();\r\n }\r\n\r\n if (this.routeSubscription) {\r\n this.routeSubscription.unsubscribe();\r\n }\r\n\r\n if (this.timerSubcription) {\r\n this.timerSubcription.unsubscribe();\r\n }\r\n }\r\n\r\n protected readonly EventRole = EventRole;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { NgbModalModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ApplicationPipesModule } from './_shared/modules/application-pipes.module';\r\nimport { CeuAssessmentComponent } from './courses/purchased-course/ceu-assessment/ceu-assessment.component';\r\nimport { CourseViewerComponent } from './courses/purchased-course/course-viewer.component';\r\nimport { CourseMaterialsComponent } from './courses/purchased-course/materials/course-materials.component';\r\n\r\n@NgModule({\r\n declarations:[\r\n CourseViewerComponent,\r\n CourseMaterialsComponent,\r\n CeuAssessmentComponent,\r\n ],\r\n entryComponents:[\r\n CeuAssessmentComponent\r\n ],\r\n imports:[\r\n NgbModalModule,\r\n ApplicationPipesModule,\r\n RouterModule.forChild([\r\n { path: '', component: CourseViewerComponent }\r\n ])\r\n ],\r\n exports:[],\r\n})\r\nexport class OnDemandModule{}\r\n"]}