{"version":3,"file":"videogular-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/videogular-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 '@videogular/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    standalone: false\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 '@videogular/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    standalone: false\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 '@videogular/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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"}