{"version":3,"file":"ironsource-fusion-ui-components-video-player-common-base.mjs","sources":["../../../projects/fusion-ui/components/video-player/common/base/video-player.base.component.ts","../../../projects/fusion-ui/components/video-player/common/base/ironsource-fusion-ui-components-video-player-common-base.ts"],"sourcesContent":["import {Input, OnChanges, OnInit, ViewChild, SimpleChanges, AfterViewInit, Directive} from '@angular/core';\nimport {isNull} from '@ironsource/fusion-ui/utils';\nimport {BehaviorSubject, fromEvent, Observable, Subject} from 'rxjs';\nimport {map, startWith, switchMap} from 'rxjs/operators';\n\n@Directive()\nexport abstract class VideoPlayerBaseComponent implements OnInit, AfterViewInit, OnChanges {\n    @ViewChild('videoPlayer') videoPlayer;\n    @Input() src: string;\n    @Input() width = '100%';\n    @Input() height = '100%';\n    @Input() thumbnail: string;\n    @Input() options: {\n        noVideo?: {icon?: string; title?: string};\n        autoplay?: boolean;\n        showTimeline?: boolean;\n        controlsList?: string;\n    } = {};\n\n    get isAutoplay() {\n        return !!this.options.autoplay ? true : null;\n    }\n\n    get isTimeline(): boolean {\n        return this.options.showTimeline ? true : null;\n    }\n\n    isVideoPlaying$ = new BehaviorSubject<boolean>(false);\n\n    videoLoaded$ = new Subject();\n    videoDuration$: Observable<number>;\n    progressValue$: Observable<number>;\n    videoCurrentTime$: Observable<number>;\n\n    ngOnInit() {\n        this.options.noVideo = this.options.noVideo || {};\n        if (!isNull(this.isAutoplay) && this.isAutoplay) {\n            this.isVideoPlaying$.next(true);\n        }\n\n        this.videoDuration$ = this.getVideoDuration();\n        this.videoCurrentTime$ = this.getVideoCurrentTime();\n\n        if (this.isTimeline) {\n            this.progressValue$ = this.updateProgress();\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (this.videoPlayer) {\n            if (!isNull(this.isAutoplay) && this.isAutoplay) {\n                this.isVideoPlaying$.next(true);\n            } else {\n                this.videoPlayer.nativeElement.pause();\n                this.isVideoPlaying$.next(false);\n            }\n        }\n    }\n\n    ngAfterViewInit() {\n        this.videoLoaded$.next();\n    }\n\n    onVideoPlayPauseButtonClicked(event: MouseEvent, video): void {\n        if (this.isVideoPlaying$.getValue()) {\n            video.pause();\n        } else {\n            video.play();\n        }\n        this.isVideoPlaying$.next(!this.isVideoPlaying$.getValue());\n        event.stopPropagation();\n    }\n\n    private getVideoDuration(): Observable<number> {\n        return this.videoLoaded$.asObservable().pipe(\n            switchMap(_ =>\n                fromEvent(this.videoPlayer.nativeElement, 'loadedmetadata').pipe(\n                    map(($event: Event) => {\n                        return parseInt(($event.target as HTMLMediaElement).duration.toString(), 10);\n                    })\n                )\n            ),\n            startWith(0)\n        );\n    }\n\n    private getVideoCurrentTime(): Observable<number> {\n        return this.videoLoaded$.asObservable().pipe(\n            switchMap(_ =>\n                fromEvent(this.videoPlayer.nativeElement, 'timeupdate').pipe(\n                    map(($event: Event) => {\n                        return parseInt(($event.target as HTMLMediaElement).currentTime.toString(), 10);\n                    })\n                )\n            ),\n            startWith(0)\n        );\n    }\n\n    private updateProgress(): Observable<number> {\n        return this.videoLoaded$.asObservable().pipe(\n            switchMap(_ =>\n                fromEvent(this.videoPlayer.nativeElement, 'timeupdate').pipe(\n                    map(($event: Event) => {\n                        const player = $event.target as HTMLMediaElement;\n                        return Math.floor((100 / player.duration) * player.currentTime);\n                    })\n                )\n            ),\n            startWith(0)\n        );\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}