{ "version": 3, "sources": ["src/app/features/video/components/manual-video/manual-video.component.ts", "src/app/features/video/components/manual-video/manual-video.component.html"], "sourcesContent": ["import { AsyncPipe, NgClass, isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n OnChanges,\n OnInit,\n PLATFORM_ID,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { faPause, faPlay } from '@fortawesome/free-solid-svg-icons';\nimport { Observable, ReplaySubject, from } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { IntersectionObserverDirective } from '../../../../shared/intersection-observer/intersection-observer.directive';\nimport { LoaderComponent } from '../../../../shared/loader/loader.component';\n\n@Component({\n selector: 'app-manual-video',\n templateUrl: './manual-video.component.html',\n\n standalone: true,\n imports: [\n IntersectionObserverDirective,\n NgClass,\n LoaderComponent,\n FontAwesomeModule,\n AsyncPipe,\n ],\n})\nexport class ManualVideoComponent implements OnInit, OnChanges {\n @Input() additionalClasses: string[] = [];\n @Input() additionalVideoClasses: string[] = [];\n @Input() bufferingClasses: Observable;\n @Input() showBuffering: boolean = true;\n @Input() poster: string;\n @Input() mp4src: string;\n @Input() preload: boolean = false;\n\n playing = false;\n loaded = false;\n started = false;\n buffering = new ReplaySubject(1);\n @ViewChild('video', { static: true }) private video: ElementRef;\n\n faPlay = faPlay;\n faPause = faPause;\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: Object,\n private cd: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n this.bufferingClasses = this.buffering.pipe(\n startWith(false),\n map(value => {\n return [value ? 'opacity-25' : 'opacity-0'].concat(\n this.additionalVideoClasses\n );\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.preload && changes.preload.currentValue) {\n this.preloadVideo();\n }\n }\n\n preloadVideo(force = false) {\n console.log('preload');\n this.video.nativeElement.preload = 'metadata';\n if (\n force === true &&\n isPlatformBrowser(this.platformId) &&\n !this.loaded &&\n // @ts-ignore\n !navigator.connection?.saveData\n ) {\n this.video.nativeElement.load();\n this.loaded = true;\n }\n }\n\n requestPlay() {\n from(this.video.nativeElement.play()).subscribe(() => {\n this.playing = true;\n this.started = true;\n this.cd.detectChanges();\n });\n }\n\n requestPause() {\n if (this.playing === true) {\n this.video.nativeElement.pause();\n this.playing = false;\n }\n }\n\n togglePlayPause() {\n if (this.playing) {\n this.requestPause();\n } else {\n this.requestPlay();\n }\n }\n\n videoEnded() {\n this.video.nativeElement.currentTime = 0;\n this.playing = false;\n this.started = false;\n }\n\n onVisibilityChange(visible: boolean) {\n if (visible === true) {\n this.preloadVideo(true);\n }\n }\n}\n", "\n \n \n \n @if (poster && !playing && !started) {\n \n }\n @if (showBuffering) {\n \n \n \n }\n \n @if (!playing) {\n \n \n \n }\n @if (playing) {\n \n \n \n }\n \n \n\n"], "mappings": "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", "names": ["\u0275\u0275element", "\u0275\u0275property", "ctx_r1", "additionalVideoClasses", "\u0275\u0275elementStart", "\u0275\u0275elementEnd", "\u0275\u0275pipeBind1", "bufferingClasses", "\u0275\u0275advance", "faPlay", "faPause", "ManualVideoComponent", "constructor", "platformId", "cd", "additionalClasses", "showBuffering", "preload", "playing", "loaded", "started", "buffering", "ReplaySubject", "ngOnInit", "pipe", "startWith", "map", "value", "concat", "ngOnChanges", "changes", "currentValue", "preloadVideo", "force", "console", "log", "video", "nativeElement", "isPlatformBrowser", "navigator", "connection", "saveData", "load", "requestPlay", "from", "play", "subscribe", "detectChanges", "requestPause", "pause", "togglePlayPause", "videoEnded", "currentTime", "onVisibilityChange", "visible", "\u0275\u0275directiveInject", "PLATFORM_ID", "ChangeDetectorRef", "selectors", "viewQuery", "rf", "ctx", "\u0275\u0275listener", "$event", "i0", "\u0275\u0275restoreView", "_r1", "\u0275\u0275resetView", "\u0275\u0275template", "ManualVideoComponent_Conditional_4_Template", "ManualVideoComponent_Conditional_5_Template", "ManualVideoComponent_Conditional_7_Template", "ManualVideoComponent_Conditional_8_Template", "\u0275\u0275projection", "mp4src", "\u0275\u0275sanitizeUrl", "\u0275\u0275conditional", "poster", "IntersectionObserverDirective", "NgClass", "LoaderComponent", "FontAwesomeModule", "FaIconComponent", "AsyncPipe", "encapsulation"] }