{"version":3,"file":"49ing-ngx-videogular-streaming.mjs","sources":["../../../../libs/ngx-videogular/streaming/src/lib/directives/vg-dash/vg-dash.directive.ts","../../../../libs/ngx-videogular/streaming/src/lib/directives/vg-hls/vg-hls.directive.ts","../../../../libs/ngx-videogular/streaming/src/lib/streaming.module.ts","../../../../libs/ngx-videogular/streaming/src/49ing-ngx-videogular-streaming.ts"],"sourcesContent":["import {\n  Directive,\n  OnInit,\n  OnChanges,\n  OnDestroy,\n  Input,\n  Output,\n  EventEmitter,\n  ElementRef,\n  SimpleChanges,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport {\n  IDRMLicenseServer,\n  BitrateOptions,\n  VgApiService,\n} from '@49ing/ngx-videogular/core';\n\ndeclare let dashjs: {\n  MediaPlayer: {\n    (): { (): any; new (): any; create: { (): any; new (): any } };\n    events: { STREAM_INITIALIZED: any };\n  };\n  Debug: { LOG_LEVEL_NONE: any };\n};\n\n@Directive({\n  selector: '[vgDash]',\n  exportAs: 'vgDash',\n})\nexport class VgDashDirective implements OnInit, OnChanges, OnDestroy {\n  @Input() vgDash: string;\n  @Input() vgDRMToken: string;\n  @Input() vgDRMLicenseServer: IDRMLicenseServer;\n\n  @Output() onGetBitrates: EventEmitter<BitrateOptions[]> = new EventEmitter();\n\n  vgFor: string;\n  target: any;\n  dash: any;\n\n  subscriptions: Subscription[] = [];\n\n  constructor(private ref: ElementRef, public API: VgApiService) {}\n\n  ngOnInit() {\n    if (this.API.isPlayerReady) {\n      this.onPlayerReady();\n    } else {\n      this.subscriptions.push(\n        this.API.playerReadyEvent.subscribe(() => this.onPlayerReady())\n      );\n    }\n  }\n\n  onPlayerReady() {\n    this.vgFor = this.ref.nativeElement.getAttribute('vgFor');\n    this.target = this.API.getMediaById(this.vgFor);\n    this.createPlayer();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    changes.vgDash?.currentValue ? this.createPlayer() : this.destroyPlayer();\n  }\n\n  createPlayer() {\n    if (this.dash) {\n      this.destroyPlayer();\n    }\n\n    // It's a DASH source\n    if (\n      this.vgDash &&\n      (this.vgDash.indexOf('.mpd') > -1 ||\n        this.vgDash.indexOf('mpd-time-csf') > -1)\n    ) {\n      let drmOptions: any;\n\n      if (this.vgDRMLicenseServer) {\n        drmOptions = this.vgDRMLicenseServer;\n\n        if (this.vgDRMToken) {\n          for (const drmServer in drmOptions) {\n            if (drmServer.hasOwnProperty(drmServer)) {\n              drmOptions[drmServer].httpRequestHeaders = {\n                Authorization: this.vgDRMToken,\n              };\n            }\n          }\n        }\n      }\n\n      this.dash = dashjs.MediaPlayer().create();\n      this.dash.updateSettings({debug: {logLevel: dashjs.Debug.LOG_LEVEL_NONE}});\n      this.dash.initialize(this.ref.nativeElement);\n      this.dash.setAutoPlay(false);\n\n      this.dash.on(dashjs.MediaPlayer.events.STREAM_INITIALIZED, () => {\n        const audioList = this.dash.getBitrateInfoListFor('audio');\n        const videoList = this.dash.getBitrateInfoListFor('video');\n\n        if (audioList.length > 1) {\n          audioList.forEach(\n            (item: { qualityIndex: number }) =>\n              (item.qualityIndex = ++item.qualityIndex)\n          );\n          audioList.unshift({\n            qualityIndex: 0,\n            width: 0,\n            height: 0,\n            bitrate: 0,\n            mediaType: 'video',\n            scanType: 'AUTO',\n          });\n\n          this.onGetBitrates.emit(audioList);\n        }\n\n        if (videoList.length > 1) {\n          videoList.forEach(\n            (item: {qualityIndex: number}) => (\n              item.qualityIndex = ++item.qualityIndex\n            )\n          );\n          videoList.unshift({\n            qualityIndex: 0,\n            width: 0,\n            height: 0,\n            bitrate: 0,\n            mediaType: 'video',\n            scanType: 'AUTO',\n          });\n\n          this.onGetBitrates.emit(videoList);\n        }\n      });\n\n      if (drmOptions) {\n        this.dash.setProtectionData(drmOptions);\n      }\n\n      this.dash.attachSource(this.vgDash);\n    } else {\n      if (this.target) {\n        this.target.pause();\n        this.target.seekTime(0);\n        this.ref.nativeElement.src = this.vgDash;\n      }\n    }\n  }\n\n  setBitrate({mediaType, qualityIndex}: BitrateOptions) {\n    if (this.dash) {\n      if (qualityIndex > 0) {\n        if (this.dash.getSettings()) {\n          this.dash.updateSettings({\n            streaming: {\n              abr: {\n                autoSwitchBitrate: {\n                  [mediaType]: false\n                }\n              }\n            }\n          });\n        }\n\n        const nextIndex = qualityIndex - 1;\n        this.dash.setQualityFor(mediaType, nextIndex);\n      } else {\n        this.dash.updateSettings({\n          streaming: {\n            abr: {\n              autoSwitchBitrate: {\n                [mediaType]: true\n              }\n            }\n          }\n        });\n      }\n    }\n  }\n\n  destroyPlayer() {\n    if (this.dash) {\n      this.dash.reset();\n      this.dash = null;\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n    this.destroyPlayer();\n  }\n}\n","import {\n  Directive,\n  OnInit,\n  OnChanges,\n  OnDestroy,\n  Input,\n  Output,\n  EventEmitter,\n  ElementRef,\n  SimpleChanges,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport {\n  IHLSConfig,\n  BitrateOptions,\n  VgApiService,\n} from '@49ing/ngx-videogular/core';\n\ndeclare let Hls: {\n  new (arg0: IHLSConfig): any;\n  isSupported: () => any;\n  Events: { MANIFEST_PARSED: any; LEVEL_LOADED: any };\n};\n\n@Directive({\n  selector: '[vgHls]',\n  exportAs: 'vgHls',\n})\nexport class VgHlsDirective implements OnInit, OnChanges, OnDestroy {\n  @Input() vgHls: string;\n  @Input() vgHlsHeaders: { [key: string]: string } = {};\n  @Input() config: IHLSConfig;\n\n  @Output() onGetBitrates: EventEmitter<BitrateOptions[]> = new EventEmitter();\n\n  vgFor: string;\n  target: any;\n  hls: any;\n  preload: boolean;\n  crossorigin: string;\n\n  subscriptions: Subscription[] = [];\n\n  constructor(private ref: ElementRef, public API: VgApiService) {}\n\n  ngOnInit() {\n    if (this.API.isPlayerReady) {\n      this.onPlayerReady();\n    } else {\n      this.subscriptions.push(\n        this.API.playerReadyEvent.subscribe(() => this.onPlayerReady())\n      );\n    }\n  }\n\n  onPlayerReady() {\n    this.crossorigin = this.ref.nativeElement.getAttribute('crossorigin');\n    this.preload = this.ref.nativeElement.getAttribute('preload') !== 'none';\n    this.vgFor = this.ref.nativeElement.getAttribute('vgFor');\n\n    if (this.vgFor) {\n      this.target = this.API.getMediaById(this.vgFor);\n    } else {\n      this.target = this.API.getDefaultMedia();\n    }\n\n    this.config = {\n      autoStartLoad: this.preload,\n      xhrSetup: (xhr: {\n        withCredentials: boolean;\n        setRequestHeader: (arg0: string, arg1: string) => void;\n      }) => {\n        // Send cookies\n        if (this.crossorigin === 'use-credentials') {\n          xhr.withCredentials = true;\n        }\n        for (const key of Object.keys(this.vgHlsHeaders)) {\n          xhr.setRequestHeader(key, this.vgHlsHeaders[key]);\n        }\n      },\n      ...this.config\n    } as IHLSConfig;\n\n    this.createPlayer();\n\n    if (!this.preload) {\n      this.subscriptions.push(\n        this.API.subscriptions.play.subscribe(() => {\n          if (this.hls) {\n            this.hls.startLoad(0);\n          }\n        })\n      );\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.vgHls?.currentValue) {\n      this.createPlayer();\n    } else if (changes.vgHlsHeaders && changes.vgHlsHeaders.currentValue) {\n      // Do nothing. We don't want to create a or destroy a player if the headers change.\n    } else {\n      this.destroyPlayer();\n    }\n  }\n\n  createPlayer() {\n    if (this.hls) {\n      this.destroyPlayer();\n    }\n\n    // It's a HLS source\n    if (\n      this.vgHls &&\n      this.vgHls.indexOf('m3u8') > -1 &&\n      Hls.isSupported() &&\n      this.API.isPlayerReady\n    ) {\n      const video: HTMLVideoElement = this.ref.nativeElement;\n\n      this.hls = new Hls(this.config);\n      // @ts-ignore\n      this.hls.on(\n        Hls.Events.MANIFEST_PARSED,\n        (_event: any, data: { levels: any[] }) => {\n          const videoList = [];\n\n          videoList.push({\n            qualityIndex: 0,\n            width: 0,\n            height: 0,\n            bitrate: 0,\n            mediaType: 'video',\n            label: 'AUTO',\n          });\n\n          data.levels.forEach(\n            (\n              item: { width: any; height: any; bitrate: any; name: any },\n              index: number\n            ) => {\n              videoList.push({\n                qualityIndex: ++index,\n                width: item.width,\n                height: item.height,\n                bitrate: item.bitrate,\n                mediaType: 'video',\n                label: item.name,\n              });\n            }\n          );\n\n          this.onGetBitrates.emit(videoList);\n        }\n      );\n      // @ts-ignore\n      this.hls.on(\n        Hls.Events.LEVEL_LOADED,\n        (_event: any, data: { details: { live: any } }) => {\n          this.target.isLive = data.details.live;\n        }\n      );\n\n      this.hls.loadSource(this.vgHls);\n      this.hls.attachMedia(video);\n    } else {\n      if (this.target && !!this.target.pause) {\n        this.target.pause();\n        this.target.seekTime(0);\n        this.ref.nativeElement.src = this.vgHls;\n      }\n    }\n  }\n\n  setBitrate(bitrate: BitrateOptions) {\n    if (this.hls) {\n      this.hls.nextLevel = bitrate.qualityIndex - 1;\n    }\n  }\n\n  destroyPlayer() {\n    if (this.hls) {\n      this.hls.destroy();\n      this.hls = null;\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n    this.destroyPlayer();\n    delete this.hls;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VgDashDirective } from './directives/vg-dash/vg-dash.directive';\nimport { VgHlsDirective } from './directives/vg-hls/vg-hls.directive';\nimport { VgCoreModule } from '@49ing/ngx-videogular/core';\n\n@NgModule({\n  imports: [CommonModule, VgCoreModule],\n  declarations: [VgDashDirective, VgHlsDirective],\n  exports: [VgDashDirective, VgHlsDirective]\n})\nexport class VgStreamingModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}