ngx-plyr3
Version:
1 lines • 16.9 kB
Source Map (JSON)
{"version":3,"file":"ngx-plyr3.mjs","sources":["../../../projects/ngx-plyr/src/lib/plyr-driver/default-plyr-driver.ts","../../../projects/ngx-plyr/src/lib/plyr/plyr.component.ts","../../../projects/ngx-plyr/src/lib/plyr/plyr.component.html","../../../projects/ngx-plyr/src/lib/plyr.module.ts","../../../projects/ngx-plyr/src/ngx-plyr3.ts"],"sourcesContent":["import Plyr from 'plyr';\r\nimport {\r\n PlyrDriver,\r\n PlyrDriverCreateParams,\r\n PlyrDriverDestroyParams,\r\n PlyrDriverUpdateSourceParams\r\n} from \"./plyr-driver\";\r\n\r\nexport class DefaultPlyrDriver implements PlyrDriver {\r\n create(params: PlyrDriverCreateParams) {\r\n return new Plyr(params.videoElement, params.options);\r\n }\r\n\r\n updateSource(params: PlyrDriverUpdateSourceParams) {\r\n params.plyr.source = params.source;\r\n }\r\n\r\n destroy(params: PlyrDriverDestroyParams) {\r\n params.plyr.destroy();\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component, ElementRef,\r\n EventEmitter,\r\n Input,\r\n NgZone,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n Renderer2,\r\n SimpleChange,\r\n ViewChild\r\n} from \"@angular/core\";\r\nimport * as Plyr from \"plyr\";\r\nimport { BehaviorSubject, Observable, Subscription } from \"rxjs\";\r\nimport { filter, first, switchMap } from \"rxjs/operators\";\r\nimport { DefaultPlyrDriver } from \"../plyr-driver/default-plyr-driver\";\r\nimport { PlyrDriver } from \"../plyr-driver/plyr-driver\";\r\n\r\n@Component({\r\n selector: 'plyr, [plyr]',\r\n templateUrl: './plyr.component.html',\r\n exportAs: 'plyr'\r\n})\r\nexport class PlyrComponent implements AfterViewInit, OnChanges, OnDestroy {\r\n private playerChange = new BehaviorSubject<Plyr>(null);\r\n\r\n get player(): Plyr {\r\n return this.playerChange.getValue();\r\n }\r\n\r\n private events = new Map();\r\n\r\n @Input() plyrDriver: PlyrDriver;\r\n\r\n @Input() plyrType: Plyr.MediaType = 'video';\r\n\r\n @Input() plyrTitle: string;\r\n\r\n @Input() plyrPoster: string;\r\n\r\n @Input() plyrSources: Plyr.Source[];\r\n\r\n @Input() plyrTracks: Plyr.Track[];\r\n\r\n @Input() plyrOptions: Plyr.Options;\r\n\r\n @Input() plyrCrossOrigin: boolean;\r\n\r\n @Input() plyrPlaysInline: boolean;\r\n\r\n @ViewChild('v') private vr: ElementRef;\r\n\r\n // ngx-plyr events\r\n @Output() plyrInit = this.playerChange.pipe(filter(player => !!player)) as EventEmitter<Plyr>;\r\n\r\n // standard media events\r\n @Output() plyrProgress = this.createLazyEvent('progress');\r\n @Output() plyrPlaying = this.createLazyEvent('playing');\r\n @Output() plyrPlay = this.createLazyEvent('play');\r\n @Output() plyrPause = this.createLazyEvent('pause');\r\n @Output() plyrTimeUpdate = this.createLazyEvent('timeupdate');\r\n @Output() plyrVolumeChange = this.createLazyEvent('volumechange');\r\n @Output() plyrSeeking = this.createLazyEvent('seeking');\r\n @Output() plyrSeeked = this.createLazyEvent('seeked');\r\n @Output() plyrRateChange = this.createLazyEvent('ratechange');\r\n @Output() plyrEnded = this.createLazyEvent('ended');\r\n @Output() plyrEnterFullScreen = this.createLazyEvent('enterfullscreen');\r\n @Output() plyrExitFullScreen = this.createLazyEvent('exitfullscreen');\r\n @Output() plyrCaptionsEnabled = this.createLazyEvent('captionsenabled');\r\n @Output() plyrCaptionsDisabled = this.createLazyEvent('captionsdisabled');\r\n @Output() plyrLanguageChange = this.createLazyEvent('languagechange');\r\n @Output() plyrControlsHidden = this.createLazyEvent('controlshidden');\r\n @Output() plyrControlsShown = this.createLazyEvent('controlsshown');\r\n @Output() plyrReady = this.createLazyEvent('ready');\r\n\r\n // HTML5 events\r\n @Output() plyrLoadStart = this.createLazyEvent('loadstart');\r\n @Output() plyrLoadedData = this.createLazyEvent('loadeddata');\r\n @Output() plyrLoadedMetadata = this.createLazyEvent('loadedmetadata');\r\n @Output() plyrQualityChange = this.createLazyEvent('qualitychange');\r\n @Output() plyrCanPlay = this.createLazyEvent('canplay');\r\n @Output() plyrCanPlayThrough = this.createLazyEvent('canplaythrough');\r\n @Output() plyrStalled = this.createLazyEvent('stalled');\r\n @Output() plyrWaiting = this.createLazyEvent('waiting');\r\n @Output() plyrEmptied = this.createLazyEvent('emptied');\r\n @Output() plyrCueChange = this.createLazyEvent('cuechange');\r\n @Output() plyrError = this.createLazyEvent('error');\r\n\r\n // YouTube events\r\n @Output() plyrStateChange = this.createLazyEvent('statechange');\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n private driver: PlyrDriver;\r\n\r\n private videoElement: HTMLVideoElement;\r\n\r\n constructor(\r\n private elementRef: ElementRef<HTMLDivElement>,\r\n private ngZone: NgZone,\r\n private renderer: Renderer2,\r\n ) {\r\n }\r\n\r\n ngOnChanges(changes: { [p in keyof PlyrComponent]?: SimpleChange; }) {\r\n this.subscriptions.push(this.plyrInit.pipe(first()).subscribe((player: Plyr) => {\r\n const reinitTriggers = [changes.plyrOptions, changes.plyrPlaysInline, changes.plyrCrossOrigin].filter(t => !!t);\r\n\r\n if (reinitTriggers.length) {\r\n if (reinitTriggers.some(t => !t.firstChange)) {\r\n this.initPlyr(true);\r\n }\r\n } else {\r\n this.updatePlyrSource(player);\r\n }\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyPlayer();\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.initPlyr();\r\n }\r\n\r\n private initPlyr(force = false) {\r\n if (force || !this.player) {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.destroyPlayer();\r\n\r\n this.driver = this.plyrDriver || new DefaultPlyrDriver();\r\n\r\n this.ensureVideoElement();\r\n\r\n const newPlayer = this.driver.create({\r\n videoElement: this.videoElement,\r\n options: this.plyrOptions,\r\n });\r\n\r\n this.updatePlyrSource(newPlayer);\r\n\r\n this.playerChange.next(newPlayer);\r\n });\r\n }\r\n }\r\n\r\n private updatePlyrSource(plyr: Plyr) {\r\n this.driver.updateSource({\r\n videoElement: this.videoElement,\r\n plyr,\r\n source: {\r\n type: this.plyrType,\r\n title: this.plyrTitle,\r\n sources: this.plyrSources,\r\n poster: this.plyrPoster,\r\n tracks: this.plyrTracks,\r\n },\r\n });\r\n }\r\n\r\n // see https://stackoverflow.com/a/53704102/1990451\r\n private createLazyEvent<T extends Plyr.PlyrEvent>(name: Plyr.StandardEvent | Plyr.Html5Event | Plyr.YoutubeEvent): EventEmitter<T> {\r\n return this.plyrInit.pipe(\r\n switchMap(() => new Observable(observer => this.on(name, (data: T) => this.ngZone.run(() => observer.next(data)))))\r\n ) as EventEmitter<T>;\r\n }\r\n\r\n private destroyPlayer() {\r\n if (this.player) {\r\n Array.from(this.events.keys()).forEach(name => this.off(name));\r\n\r\n this.driver.destroy({\r\n plyr: this.player,\r\n });\r\n\r\n this.videoElement = null;\r\n }\r\n }\r\n\r\n private get hostElement() {\r\n return this.elementRef.nativeElement;\r\n }\r\n\r\n // this method is required because the plyr inserts clone of the original element on destroy\r\n // so we catch the clone element right here and reuse it\r\n private ensureVideoElement() {\r\n const videoElement = this.hostElement.querySelector('video');\r\n\r\n if (videoElement) {\r\n this.videoElement = videoElement;\r\n } else {\r\n this.videoElement = this.renderer.createElement('video');\r\n this.videoElement.controls = true;\r\n\r\n if (this.plyrCrossOrigin) {\r\n this.videoElement.setAttribute('crossorigin', '');\r\n }\r\n\r\n if (this.plyrPlaysInline) {\r\n this.videoElement.setAttribute('playsinline', '');\r\n }\r\n\r\n this.renderer.appendChild(this.hostElement, this.videoElement);\r\n }\r\n }\r\n\r\n private on(name: string, handler: any) {\r\n this.events.set(name, handler);\r\n this.player.on(name as any, handler);\r\n }\r\n\r\n private off(name: string) {\r\n this.player.off(name as any, this.events.get(name));\r\n this.events.delete(name);\r\n }\r\n}\r\n","","import { NgModule } from \"@angular/core\";\r\nimport { PlyrComponent } from './plyr/plyr.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n PlyrComponent,\r\n ],\r\n exports: [\r\n PlyrComponent,\r\n ]\r\n})\r\nexport class PlyrModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}