{"version":3,"file":"videogular-ngx-videogular-core.mjs","sources":["../../../../libs/ngx-videogular/core/src/lib/services/states/vg-states.service.ts","../../../../libs/ngx-videogular/core/src/lib/services/vg-api/vg-api.service.ts","../../../../libs/ngx-videogular/core/src/lib/services/vg-controls-hidden/vg-controls-hidden.service.ts","../../../../libs/ngx-videogular/core/src/lib/services/vg-utils/vg-utils.service.ts","../../../../libs/ngx-videogular/core/src/lib/services/vg-fullscreen-api/vg-fullscreen-api.service.ts","../../../../libs/ngx-videogular/core/src/lib/services/events/vg-events.service.ts","../../../../libs/ngx-videogular/core/src/lib/directives/vg-cue-points/vg-cue-points.directive.ts","../../../../libs/ngx-videogular/core/src/lib/directives/vg-media/vg-media.directive.ts","../../../../libs/ngx-videogular/core/src/lib/components/vg-player/vg-player.component.ts","../../../../libs/ngx-videogular/core/src/lib/core.module.ts","../../../../libs/ngx-videogular/core/src/lib/directives/vg-media/vg-media-element.ts","../../../../libs/ngx-videogular/core/src/videogular-ngx-videogular-core.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class VgStates {\n  static VG_ENDED = 'ended';\n  static VG_PAUSED = 'paused';\n  static VG_PLAYING = 'playing';\n  static VG_LOADING = 'waiting';\n}\n","import { Injectable, EventEmitter } from '@angular/core';\nimport { VgFullscreenApiService } from '../vg-fullscreen-api/vg-fullscreen-api.service';\nimport { VgStates } from '../states/vg-states.service';\nimport { IPlayable } from '../../interfaces/vg-media-api.interface';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class VgApiService {\n  medias = {}; // TODO: refactor to Set<IPlayable>\n  videogularElement: any;\n  playerReadyEvent: EventEmitter<VgApiService> = new EventEmitter<VgApiService>(true);\n  isPlayerReady = false;\n  fsAPI: VgFullscreenApiService;\n\n  constructor() {}\n\n  onPlayerReady(fsAPI: VgFullscreenApiService) {\n    this.fsAPI = fsAPI;\n    this.isPlayerReady = true;\n    this.playerReadyEvent.emit(this);\n  }\n\n  getDefaultMedia(): IPlayable {\n    for (const item in this.medias) {\n      if (this.medias[item]) {\n        return this.medias[item];\n      }\n    }\n  }\n\n  getMasterMedia(): IPlayable {\n    let master: any;\n    for (const id in this.medias) {\n      if (\n        this.medias[id].vgMaster === 'true' ||\n        this.medias[id].vgMaster === true\n      ) {\n        master = this.medias[id];\n        break;\n      }\n    }\n    return master || this.getDefaultMedia();\n  }\n\n  isMasterDefined(): boolean {\n    let result = false;\n    for (const id in this.medias) {\n      if (\n        this.medias[id].vgMaster === 'true' ||\n        this.medias[id].vgMaster === true\n      ) {\n        result = true;\n        break;\n      }\n    }\n    return result;\n  }\n\n  getMediaById(id: string = null): IPlayable {\n    let media = this.medias[id];\n\n    if (!id || id === '*') {\n      media = this;\n    }\n\n    return media;\n  }\n\n  play() {\n    for (const id in this.medias) {\n      if (this.medias[id]) {\n        this.medias[id].play();\n      }\n    }\n  }\n\n  pause() {\n    for (const id in this.medias) {\n      if (this.medias[id]) {\n        this.medias[id].pause();\n      }\n    }\n  }\n\n  get duration() {\n    return this.$$getAllProperties('duration');\n  }\n\n  set currentTime(seconds) {\n    this.$$setAllProperties('currentTime', seconds);\n  }\n\n  get currentTime() {\n    return this.$$getAllProperties('currentTime');\n  }\n\n  set state(state) {\n    this.$$setAllProperties('state', state);\n  }\n\n  get state() {\n    return this.$$getAllProperties('state');\n  }\n\n  set volume(volume) {\n    this.$$setAllProperties('volume', volume);\n  }\n\n  get volume() {\n    return this.$$getAllProperties('volume');\n  }\n\n  set playbackRate(rate) {\n    this.$$setAllProperties('playbackRate', rate);\n  }\n\n  get playbackRate() {\n    return this.$$getAllProperties('playbackRate');\n  }\n\n  get canPlay() {\n    return this.$$getAllProperties('canPlay');\n  }\n\n  get canPlayThrough() {\n    return this.$$getAllProperties('canPlayThrough');\n  }\n\n  get isMetadataLoaded() {\n    return this.$$getAllProperties('isMetadataLoaded');\n  }\n\n  get isWaiting() {\n    return this.$$getAllProperties('isWaiting');\n  }\n\n  get isCompleted() {\n    return this.$$getAllProperties('isCompleted');\n  }\n\n  get isLive() {\n    return this.$$getAllProperties('isLive');\n  }\n\n  get isMaster() {\n    return this.$$getAllProperties('isMaster');\n  }\n\n  get time() {\n    return this.$$getAllProperties('time');\n  }\n\n  get buffer() {\n    return this.$$getAllProperties('buffer');\n  }\n\n  get buffered() {\n    return this.$$getAllProperties('buffered');\n  }\n\n  get subscriptions() {\n    return this.$$getAllProperties('subscriptions');\n  }\n\n  get textTracks() {\n    return this.$$getAllProperties('textTracks');\n  }\n\n  seekTime(value: number, byPercent: boolean = false) {\n    for (const id in this.medias) {\n      if (this.medias[id]) {\n        this.$$seek(this.medias[id], value, byPercent);\n      }\n    }\n  }\n\n  $$seek(media: IPlayable, value: number, byPercent: boolean = false) {\n    let second: number;\n    let duration: number = media.duration;\n\n    if (byPercent) {\n      if (this.isMasterDefined()) {\n        duration = this.getMasterMedia().duration;\n      }\n\n      second = (value * duration) / 100;\n    } else {\n      second = value;\n    }\n\n    media.currentTime = second;\n  }\n\n  addTextTrack(type: string, label?: string, language?: string) {\n    for (const id in this.medias) {\n      if (this.medias[id]) {\n        this.$$addTextTrack(this.medias[id], type, label, language);\n      }\n    }\n  }\n  $$addTextTrack(\n    media: IPlayable,\n    type: string,\n    label?: string,\n    language?: string\n  ) {\n    media.addTextTrack(type, label, language);\n  }\n\n  $$getAllProperties(property: string) {\n    const medias = {};\n    let result: any;\n\n    for (const id in this.medias) {\n      if (this.medias[id]) {\n        medias[id] = this.medias[id];\n      }\n    }\n\n    const nMedias = Object.keys(medias).length;\n    switch (nMedias) {\n      case 0:\n        // Return default values until vgMedia is initialized\n        switch (property) {\n          case 'state':\n            result = VgStates.VG_PAUSED;\n            break;\n\n          case 'playbackRate':\n          case 'volume':\n            result = 1;\n            break;\n\n          case 'time':\n            result = { current: 0, total: 0, left: 0 };\n            break;\n        }\n        break;\n\n      case 1:\n        // If there's only one media element then return the plain value\n        const firstMediaId = Object.keys(medias)[0];\n        result = medias[firstMediaId][property];\n        break;\n\n      default:\n        // TODO: return 'master' value\n        const master = this.getMasterMedia();\n        result = medias[master.id][property];\n    }\n\n    return result;\n  }\n\n  $$setAllProperties(property: string, value: any) {\n    for (const id in this.medias) {\n      if (this.medias[id]) {\n        this.medias[id][property] = value;\n      }\n    }\n  }\n\n  registerElement(elem: HTMLElement) {\n    this.videogularElement = elem;\n  }\n\n  registerMedia(media: IPlayable) {\n    this.medias[media.id] = media;\n  }\n\n  unregisterMedia(media: IPlayable) {\n    delete this.medias[media.id];\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class VgControlsHiddenService {\n  isHidden: Observable<boolean>;\n\n  private isHiddenSubject: Subject<boolean> = new Subject<boolean>();\n\n  constructor() {\n    this.isHidden = this.isHiddenSubject.asObservable();\n  }\n\n  state(hidden: boolean) {\n    this.isHiddenSubject.next(hidden);\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class VgUtilsService {\n  /**\n   * Inspired by Paul Irish\n   * https://gist.github.com/paulirish/211209\n   */\n  static getZIndex(): number {\n    let zIndex = 1;\n    let elementZIndex: number;\n\n    const tags = document.getElementsByTagName('*');\n\n    for (let i = 0, l = tags.length; i < l; i++) {\n      elementZIndex = parseInt(window.getComputedStyle(tags[i])['z-index'], 10);\n\n      if (elementZIndex > zIndex) {\n        zIndex = elementZIndex + 1;\n      }\n    }\n\n    return zIndex;\n  }\n\n  // Very simple mobile detection, not 100% reliable\n  static isMobileDevice() {\n    // return (\n    //   typeof window.screen.orientation !== 'undefined' ||\n    //   navigator.userAgent.indexOf('IEMobile') !== -1\n    // );\n\n    // window.orientation is deprecated and we should use window.screen.orientation\n    return (\n      typeof window.orientation !== 'undefined' ||\n      navigator.userAgent.indexOf('IEMobile') !== -1\n    );\n  }\n\n  static isiOSDevice() {\n    return (\n      (navigator.userAgent.match(/ip(hone|ad|od)/i) || \n      VgUtilsService.isIpadOS()) &&\n      !navigator.userAgent.match(/(iemobile)[\\/\\s]?([\\w\\.]*)/i)\n    );\n  }\n\n  static isIpadOS() {\n    return (\n      navigator.maxTouchPoints && \n      navigator.maxTouchPoints > 2 &&\n      /MacIntel/.test(navigator.platform)\n    );\n  }\n\n  static isCordova() {\n    return (\n      document.URL.indexOf('http://') === -1 &&\n      document.URL.indexOf('https://') === -1\n    );\n  }\n}\n","import { Injectable, EventEmitter, QueryList } from '@angular/core';\nimport { VgUtilsService } from '../vg-utils/vg-utils.service';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { VgMediaDirective } from '../../directives/vg-media/vg-media.directive';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class VgFullscreenApiService {\n  polyfill: any;\n  onchange: string;\n  onerror: string;\n  nativeFullscreen = true;\n  isFullscreen = false;\n  isAvailable: boolean;\n  videogularElement: HTMLElement;\n  medias: QueryList<VgMediaDirective>;\n\n  fsChangeSubscription: Subscription;\n  onChangeFullscreen: EventEmitter<any> = new EventEmitter();\n\n  constructor() {}\n\n  init(elem: HTMLElement, medias: QueryList<VgMediaDirective>) {\n    this.videogularElement = elem;\n    this.medias = medias;\n\n    const APIs = {\n      w3: {\n        enabled: 'fullscreenEnabled',\n        element: 'fullscreenElement',\n        request: 'requestFullscreen',\n        exit: 'exitFullscreen',\n        onchange: 'fullscreenchange',\n        onerror: 'fullscreenerror',\n      },\n      newWebkit: {\n        enabled: 'webkitFullscreenEnabled',\n        element: 'webkitFullscreenElement',\n        request: 'webkitRequestFullscreen',\n        exit: 'webkitExitFullscreen',\n        onchange: 'webkitfullscreenchange',\n        onerror: 'webkitfullscreenerror',\n      },\n      oldWebkit: {\n        enabled: 'webkitIsFullScreen',\n        element: 'webkitCurrentFullScreenElement',\n        request: 'webkitRequestFullScreen',\n        exit: 'webkitCancelFullScreen',\n        onchange: 'webkitfullscreenchange',\n        onerror: 'webkitfullscreenerror',\n      },\n      moz: {\n        enabled: 'mozFullScreen',\n        element: 'mozFullScreenElement',\n        request: 'mozRequestFullScreen',\n        exit: 'mozCancelFullScreen',\n        onchange: 'mozfullscreenchange',\n        onerror: 'mozfullscreenerror',\n      },\n      ios: {\n        enabled: 'webkitFullscreenEnabled',\n        element: 'webkitFullscreenElement',\n        request: 'webkitEnterFullscreen',\n        exit: 'webkitExitFullscreen',\n        onchange: 'webkitendfullscreen', // Hack for iOS: webkitfullscreenchange it's not firing\n        onerror: 'webkitfullscreenerror',\n      },\n      ms: {\n        enabled: 'msFullscreenEnabled',\n        element: 'msFullscreenElement',\n        request: 'msRequestFullscreen',\n        exit: 'msExitFullscreen',\n        onchange: 'MSFullscreenChange',\n        onerror: 'MSFullscreenError',\n      },\n    };\n\n    for (const browser in APIs) {\n      if (APIs[browser].enabled in document) {\n        this.polyfill = APIs[browser];\n        break;\n      }\n    }\n\n    if (VgUtilsService.isiOSDevice()) {\n      this.polyfill = APIs.ios;\n    }\n\n    this.isAvailable = this.polyfill != null;\n\n    if (this.polyfill == null) {\n      return;\n    }\n\n    let fsElemDispatcher: HTMLElement | Document;\n\n    switch (this.polyfill.onchange) {\n      // Mozilla dispatches the fullscreen change event from document, not the element\n      // See: https://bugzilla.mozilla.org/show_bug.cgi?id=724816#c3\n      case 'mozfullscreenchange':\n        fsElemDispatcher = document;\n        break;\n\n      // iOS dispatches the fullscreen change event from video element\n      case 'webkitendfullscreen':\n        fsElemDispatcher = this.medias.toArray()[0].elem;\n        break;\n\n      // HTML5 implementation dispatches the fullscreen change event from the element\n      default:\n        fsElemDispatcher = elem;\n    }\n\n    this.fsChangeSubscription = fromEvent(\n      fsElemDispatcher,\n      this.polyfill.onchange\n    ).subscribe(() => {\n      this.onFullscreenChange();\n    });\n  }\n\n  onFullscreenChange() {\n    this.isFullscreen = !!document[this.polyfill.element];\n    this.onChangeFullscreen.emit(this.isFullscreen);\n  }\n\n  toggleFullscreen(element: any = null): Promise<void> {\n    if (this.isFullscreen) {\n      return this.exit();\n    }\n    return this.request(element);\n  }\n\n  request(elem: any): Promise<void> {\n    if (!elem) {\n      elem = this.videogularElement;\n    }\n\n    this.isFullscreen = true;\n    this.onChangeFullscreen.emit(true);\n\n    // Perform native full screen support\n    if (this.isAvailable && this.nativeFullscreen) {\n      // Fullscreen for mobile devices\n      if (VgUtilsService.isMobileDevice()) {\n        // We should make fullscreen the video object if it doesn't have native fullscreen support\n        // Fallback! We can't set vg-player on fullscreen, only video/audio objects\n        if (\n          (!this.polyfill.enabled && elem === this.videogularElement) ||\n          VgUtilsService.isiOSDevice()\n        ) {\n          elem = this.medias.toArray()[0].elem;\n        }\n\n        return this.enterElementInFullScreen(elem);\n      }\n      return this.enterElementInFullScreen(this.videogularElement);\n    }\n    return Promise.resolve();\n  }\n\n  enterElementInFullScreen(elem: any): Promise<void> {\n    return elem[this.polyfill.request]();\n  }\n\n  exit(): Promise<void> {\n    this.isFullscreen = false;\n    this.onChangeFullscreen.emit(false);\n\n    // Exit from native fullscreen\n    if (this.isAvailable && this.nativeFullscreen) {\n      return document[this.polyfill.exit]();\n    }\n    return Promise.resolve();\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class VgEvents {\n  static VG_ABORT = 'abort';\n  static VG_CAN_PLAY = 'canplay';\n  static VG_CAN_PLAY_THROUGH = 'canplaythrough';\n  static VG_DURATION_CHANGE = 'durationchange';\n  static VG_EMPTIED = 'emptied';\n  static VG_ENCRYPTED = 'encrypted';\n  static VG_ENDED = 'ended';\n  static VG_ERROR = 'error';\n  static VG_LOADED_DATA = 'loadeddata';\n  static VG_LOADED_METADATA = 'loadedmetadata';\n  static VG_LOAD_START = 'loadstart';\n  static VG_PAUSE = 'pause';\n  static VG_PLAY = 'play';\n  static VG_PLAYING = 'playing';\n  static VG_PROGRESS = 'progress';\n  static VG_RATE_CHANGE = 'ratechange';\n  static VG_SEEK = 'seek';\n  static VG_SEEKED = 'seeked';\n  static VG_SEEKING = 'seeking';\n  static VG_STALLED = 'stalled';\n  static VG_SUSPEND = 'suspend';\n  static VG_TIME_UPDATE = 'timeupdate';\n  static VG_VOLUME_CHANGE = 'volumechange';\n  static VG_WAITING = 'waiting';\n\n  static VG_LOAD = 'load';\n  static VG_ENTER = 'enter';\n  static VG_EXIT = 'exit';\n\n  static VG_START_ADS = 'startads';\n  static VG_END_ADS = 'endads';\n}\n","import {\n  Directive,\n  OnInit,\n  OnDestroy,\n  DoCheck,\n  Output,\n  EventEmitter,\n  ElementRef,\n} from '@angular/core';\nimport { Subscription, Observable, fromEvent } from 'rxjs';\nimport { VgEvents } from '../../services/events/vg-events.service';\n\n@Directive({\n    selector: '[vgCuePoints]',\n    standalone: false\n})\nexport class VgCuePointsDirective implements OnInit, OnDestroy, DoCheck {\n  @Output() onEnterCuePoint: EventEmitter<any> = new EventEmitter();\n  @Output() onUpdateCuePoint: EventEmitter<any> = new EventEmitter();\n  @Output() onExitCuePoint: EventEmitter<any> = new EventEmitter();\n  @Output() onCompleteCuePoint: EventEmitter<any> = new EventEmitter();\n\n  subscriptions: Subscription[] = [];\n  cuesSubscriptions: Subscription[] = [];\n\n  onLoad$: Observable<any>;\n  onEnter$: Observable<any>;\n  onExit$: Observable<any>;\n\n  totalCues = 0;\n\n  constructor(public ref: ElementRef) {}\n\n  ngOnInit() {\n    this.onLoad$ = fromEvent(this.ref.nativeElement, VgEvents.VG_LOAD);\n    this.subscriptions.push(this.onLoad$.subscribe(this.onLoad.bind(this)));\n  }\n\n  onLoad(event: any) {\n    const cues: TextTrackCue[] = event.target.track.cues;\n\n    this.ref.nativeElement.cues = cues;\n\n    this.updateCuePoints(cues);\n  }\n\n  updateCuePoints(cues: TextTrackCue[]) {\n    this.cuesSubscriptions.forEach((s) => s.unsubscribe());\n\n    for (let i = 0, l = cues.length; i < l; i++) {\n      this.onEnter$ = fromEvent(cues[i], VgEvents.VG_ENTER);\n      this.cuesSubscriptions.push(\n        this.onEnter$.subscribe(this.onEnter.bind(this))\n      );\n\n      this.onExit$ = fromEvent(cues[i], VgEvents.VG_EXIT);\n      this.cuesSubscriptions.push(\n        this.onExit$.subscribe(this.onExit.bind(this))\n      );\n    }\n  }\n\n  onEnter(event: any) {\n    this.onEnterCuePoint.emit(event.target);\n  }\n\n  onExit(event: any) {\n    this.onExitCuePoint.emit(event.target);\n  }\n\n  ngDoCheck() {\n    if (this.ref.nativeElement.track && this.ref.nativeElement.track.cues) {\n      const changes =\n        this.totalCues !== this.ref.nativeElement.track.cues.length;\n\n      if (changes) {\n        this.totalCues = this.ref.nativeElement.track.cues.length;\n        this.ref.nativeElement.cues = this.ref.nativeElement.track.cues;\n        this.updateCuePoints(this.ref.nativeElement.track.cues);\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n  }\n}\n","import {\n  Directive,\n  OnInit,\n  OnDestroy,\n  Input,\n  ChangeDetectorRef,\n} from '@angular/core';\nimport {\n  Observable,\n  Subscription,\n  Subject,\n  fromEvent,\n  timer,\n  combineLatest,\n} from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n  IPlayable,\n  IMediaSubscriptions,\n} from '../../interfaces/vg-media-api.interface';\nimport { IMediaElement } from '../../interfaces/i-media-element.interface';\nimport { VgApiService } from '../../services/vg-api/vg-api.service';\nimport { VgStates } from '../../services/states/vg-states.service';\nimport { VgEvents } from '../../services/events/vg-events.service';\n\n@Directive({\n    selector: '[vgMedia]',\n    standalone: false\n})\nexport class VgMediaDirective implements OnInit, OnDestroy, IPlayable {\n  elem: any;\n\n  @Input() vgMedia: IMediaElement;\n  @Input() vgMaster: boolean;\n\n  state: string = VgStates.VG_PAUSED;\n\n  time: any = { current: 0, total: 0, left: 0 };\n  buffer: any = { end: 0 };\n  track: any;\n  subscriptions: IMediaSubscriptions | any;\n\n  canPlay = false;\n  canPlayThrough = false;\n  isMetadataLoaded = false;\n  isWaiting = false;\n  isCompleted = false;\n  isLive = false;\n\n  isBufferDetected = false;\n\n  checkInterval = 200;\n  currentPlayPos = 0;\n  lastPlayPos = 0;\n  specifiedDuration: number;\n\n  checkBufferSubscription: any;\n  syncSubscription: Subscription;\n  canPlayAllSubscription: any;\n  playAtferSync = false;\n\n  mutationObs: Subscription;\n  canPlayObs: Subscription;\n  canPlayThroughObs: Subscription;\n  loadedMetadataObs: Subscription;\n  waitingObs: Subscription;\n  progressObs: Subscription;\n  endedObs: Subscription;\n  playingObs: Subscription;\n  playObs: Subscription;\n  pauseObs: Subscription;\n  timeUpdateObs: Subscription;\n  volumeChangeObs: Subscription;\n  errorObs: Subscription;\n\n  bufferDetected: Subject<boolean> = new Subject();\n\n  playPromise: Promise<any>;\n\n  constructor(private api: VgApiService, private ref: ChangeDetectorRef) {}\n\n  ngOnInit() {\n    if (this.vgMedia.nodeName) {\n      // It's a native element\n      this.elem = this.vgMedia;\n    } else {\n      // It's an Angular Class\n      this.elem = this.vgMedia.elem;\n    }\n\n    // Just in case we're creating this vgMedia dynamically register again into API\n    this.api.registerMedia(this);\n\n    this.subscriptions = {\n      // Native events\n      abort: fromEvent(this.elem as any, VgEvents.VG_ABORT),\n      canPlay: fromEvent(this.elem as any, VgEvents.VG_CAN_PLAY),\n      canPlayThrough: fromEvent(this.elem as any, VgEvents.VG_CAN_PLAY_THROUGH),\n      durationChange: fromEvent(this.elem as any, VgEvents.VG_DURATION_CHANGE),\n      emptied: fromEvent(this.elem as any, VgEvents.VG_EMPTIED),\n      encrypted: fromEvent(this.elem as any, VgEvents.VG_ENCRYPTED),\n      ended: fromEvent(this.elem as any, VgEvents.VG_ENDED),\n      error: fromEvent(this.elem as any, VgEvents.VG_ERROR),\n      loadedData: fromEvent(this.elem as any, VgEvents.VG_LOADED_DATA),\n      loadedMetadata: fromEvent(this.elem as any, VgEvents.VG_LOADED_METADATA),\n      loadStart: fromEvent(this.elem as any, VgEvents.VG_LOAD_START),\n      pause: fromEvent(this.elem as any, VgEvents.VG_PAUSE),\n      play: fromEvent(this.elem as any, VgEvents.VG_PLAY),\n      playing: fromEvent(this.elem as any, VgEvents.VG_PLAYING),\n      progress: fromEvent(this.elem as any, VgEvents.VG_PROGRESS),\n      rateChange: fromEvent(this.elem as any, VgEvents.VG_RATE_CHANGE),\n      seeked: fromEvent(this.elem as any, VgEvents.VG_SEEKED),\n      seeking: fromEvent(this.elem as any, VgEvents.VG_SEEKING),\n      stalled: fromEvent(this.elem as any, VgEvents.VG_STALLED),\n      suspend: fromEvent(this.elem as any, VgEvents.VG_SUSPEND),\n      timeUpdate: fromEvent(this.elem as any, VgEvents.VG_TIME_UPDATE),\n      volumeChange: fromEvent(this.elem as any, VgEvents.VG_VOLUME_CHANGE),\n      waiting: fromEvent(this.elem as any, VgEvents.VG_WAITING),\n\n      // Advertisement only events\n      startAds: fromEvent(window as any, VgEvents.VG_START_ADS),\n      endAds: fromEvent(window as any, VgEvents.VG_END_ADS),\n\n      // See changes on <source> child elements to reload the video file\n      mutation: new Observable((observer: any) => {\n        const domObs = new MutationObserver((mutations) => {\n          observer.next(mutations);\n        });\n\n        domObs.observe(this.elem as any, { childList: true, attributes: true });\n\n        return () => {\n          domObs.disconnect();\n        };\n      }),\n\n      // Custom buffering detection\n      bufferDetected: this.bufferDetected,\n    };\n\n    this.mutationObs = this.subscriptions.mutation.subscribe(\n      this.onMutation.bind(this)\n    );\n    this.canPlayObs = this.subscriptions.canPlay.subscribe(\n      this.onCanPlay.bind(this)\n    );\n    this.canPlayThroughObs = this.subscriptions.canPlayThrough.subscribe(\n      this.onCanPlayThrough.bind(this)\n    );\n    this.loadedMetadataObs = this.subscriptions.loadedMetadata.subscribe(\n      this.onLoadMetadata.bind(this)\n    );\n    this.waitingObs = this.subscriptions.waiting.subscribe(\n      this.onWait.bind(this)\n    );\n    this.progressObs = this.subscriptions.progress.subscribe(\n      this.onProgress.bind(this)\n    );\n    this.endedObs = this.subscriptions.ended.subscribe(\n      this.onComplete.bind(this)\n    );\n    this.playingObs = this.subscriptions.playing.subscribe(\n      this.onStartPlaying.bind(this)\n    );\n    this.playObs = this.subscriptions.play.subscribe(this.onPlay.bind(this));\n    this.pauseObs = this.subscriptions.pause.subscribe(this.onPause.bind(this));\n    this.timeUpdateObs = this.subscriptions.timeUpdate.subscribe(\n      this.onTimeUpdate.bind(this)\n    );\n    this.volumeChangeObs = this.subscriptions.volumeChange.subscribe(\n      this.onVolumeChange.bind(this)\n    );\n    this.errorObs = this.subscriptions.error.subscribe(this.onError.bind(this));\n\n    if (this.vgMaster) {\n      this.api.playerReadyEvent.subscribe(() => {\n        this.prepareSync();\n      });\n    }\n  }\n\n  prepareSync() {\n    const canPlayAll: Observable<any>[] = [];\n\n    for (const media in this.api.medias) {\n      if (this.api.medias[media]) {\n        canPlayAll.push(this.api.medias[media].subscriptions.canPlay);\n      }\n    }\n\n    this.canPlayAllSubscription = combineLatest(canPlayAll)\n      .pipe(map((...params) => {\n        const checkReadyState = (event) => {\n          if (!event?.target) {\n            return false;\n          }\n\n          return event.target.readyState === 4;\n        };\n\n        const allReady: boolean = params.some(checkReadyState);\n\n        if (allReady && !this.syncSubscription) {\n          this.startSync();\n          this.syncSubscription.unsubscribe();\n        }\n      }))\n      .subscribe();\n  }\n\n  startSync() {\n    this.syncSubscription = timer(0, 1000).subscribe(() => {\n      for (const media in this.api.medias) {\n        if (this.api.medias[media] !== this) {\n          const diff: number =\n            this.api.medias[media].currentTime - this.currentTime;\n\n          if (diff < -0.3 || diff > 0.3) {\n            this.playAtferSync = this.state === VgStates.VG_PLAYING;\n\n            this.pause();\n            this.api.medias[media].pause();\n            this.api.medias[media].currentTime = this.currentTime;\n          } else {\n            if (this.playAtferSync) {\n              this.play();\n              this.api.medias[media].play();\n              this.playAtferSync = false;\n            }\n          }\n        }\n      }\n    });\n  }\n\n  onMutation(mutations: Array<MutationRecord>) {\n    // Detect changes only for source elements or src attribute\n    for (let i = 0, l = mutations.length; i < l; i++) {\n      const mut: MutationRecord = mutations[i];\n\n      if (mut.type === 'attributes' && mut.attributeName === 'src') {\n        // Only load src file if it's not a blob (for DASH / HLS sources)\n        if (\n          (mut.target as any).src &&\n          (mut.target as any).src.length > 0 &&\n          (mut.target as any).src.indexOf('blob:') < 0\n        ) {\n          this.loadMedia();\n          break;\n        }\n      } else if (\n        mut.type === 'childList' &&\n        mut.removedNodes.length &&\n        mut.removedNodes[0].nodeName.toLowerCase() === 'source'\n      ) {\n        this.loadMedia();\n        break;\n      }\n    }\n  }\n\n  loadMedia() {\n    this.vgMedia.pause();\n    this.vgMedia.currentTime = 0;\n\n    // Start buffering until we can play the media file\n    this.stopBufferCheck();\n    this.isBufferDetected = true;\n    this.bufferDetected.next(this.isBufferDetected);\n\n    // TODO: This is ugly, we should find something cleaner. For some reason a TimerObservable doesn't works.\n    setTimeout(() => this.vgMedia.load(), 10);\n  }\n\n  play() {\n    // short-circuit if already playing\n    if (\n      this.playPromise ||\n      (this.state !== VgStates.VG_PAUSED && this.state !== VgStates.VG_ENDED)\n    ) {\n      return;\n    }\n\n    this.playPromise = this.vgMedia.play();\n\n    // browser has async play promise\n    if (this.playPromise && this.playPromise.then && this.playPromise.catch) {\n      this.playPromise\n        .then(() => {\n          this.playPromise = null;\n        })\n        .catch(() => {\n          this.playPromise = null;\n          // deliberately empty for the sake of eating console noise\n        });\n    }\n\n    return this.playPromise;\n  }\n\n  pause() {\n    // browser has async play promise\n    if (this.playPromise) {\n      this.playPromise.then(() => {\n        this.vgMedia.pause();\n      });\n    } else {\n      this.vgMedia.pause();\n    }\n  }\n\n  get id() {\n    // We should return undefined if vgMedia still doesn't exist\n    let result: any;\n\n    if (this.vgMedia) {\n      result = this.vgMedia.id;\n    }\n\n    return result;\n  }\n\n  get duration() {\n    return this.vgMedia.duration === Infinity\n      ? this.specifiedDuration\n      : this.vgMedia.duration;\n  }\n\n  set currentTime(seconds) {\n    this.vgMedia.currentTime = seconds;\n    // this.elem.dispatchEvent(new CustomEvent(VgEvents.VG_SEEK));\n  }\n\n  get currentTime() {\n    return this.vgMedia.currentTime;\n  }\n\n  set volume(volume) {\n    this.vgMedia.volume = volume;\n  }\n\n  get volume() {\n    return this.vgMedia.volume;\n  }\n\n  set playbackRate(rate) {\n    this.vgMedia.playbackRate = rate;\n  }\n\n  get playbackRate() {\n    return this.vgMedia.playbackRate;\n  }\n\n  get buffered() {\n    return this.vgMedia.buffered;\n  }\n\n  get textTracks() {\n    return this.vgMedia.textTracks;\n  }\n  // @ts-ignore\n  onCanPlay(event: any) {\n    this.isBufferDetected = false;\n    this.bufferDetected.next(this.isBufferDetected);\n    this.canPlay = true;\n    this.ref.detectChanges();\n  }\n  // @ts-ignore\n  onCanPlayThrough(event: any) {\n    this.isBufferDetected = false;\n    this.bufferDetected.next(this.isBufferDetected);\n    this.canPlayThrough = true;\n    this.ref.detectChanges();\n  }\n  // @ts-ignore\n  onLoadMetadata(event: any) {\n    this.isMetadataLoaded = true;\n\n    this.time = {\n      current: 0,\n      left: 0,\n      total: this.duration * 1000,\n    };\n\n    this.state = VgStates.VG_PAUSED;\n\n    // Live streaming check\n    const t: number = Math.round(this.time.total);\n    this.isLive = t === Infinity;\n    this.ref.detectChanges();\n  }\n  // @ts-ignore\n  onWait(event: any) {\n    this.isWaiting = true;\n    this.ref.detectChanges();\n  }\n  // @ts-ignore\n  onComplete(event: any) {\n    this.isCompleted = true;\n    this.state = VgStates.VG_ENDED;\n    this.ref.detectChanges();\n  }\n  // @ts-ignore\n  onStartPlaying(event: any) {\n    this.state = VgStates.VG_PLAYING;\n    this.ref.detectChanges();\n  }\n  // @ts-ignore\n  onPlay(event: any) {\n    this.state = VgStates.VG_PLAYING;\n\n    if (this.vgMaster) {\n      if (!this.syncSubscription || this.syncSubscription.closed) {\n        this.startSync();\n      }\n    }\n\n    this.startBufferCheck();\n    this.ref.detectChanges();\n  }\n  // @ts-ignore\n  onPause(event: any) {\n    this.state = VgStates.VG_PAUSED;\n\n    if (this.vgMaster) {\n      if (!this.playAtferSync) {\n        this.syncSubscription.unsubscribe();\n      }\n    }\n\n    this.stopBufferCheck();\n    this.ref.detectChanges();\n  }\n  // @ts-ignore\n  onTimeUpdate(event: any) {\n    const end = this.buffered.length - 1;\n\n    this.time = {\n      current: this.currentTime * 1000,\n      total: this.time.total,\n      left: (this.duration - this.currentTime) * 1000,\n    };\n\n    if (end >= 0) {\n      this.buffer = { end: this.buffered.end(end) * 1000 };\n    }\n    this.ref.detectChanges();\n  }\n  // @ts-ignore\n  onProgress(event: any) {\n    const end = this.buffered.length - 1;\n\n    if (end >= 0) {\n      this.buffer = { end: this.buffered.end(end) * 1000 };\n    }\n    this.ref.detectChanges();\n  }\n  // @ts-ignore\n  onVolumeChange(event: any) {\n    // TODO: Save to localstorage the current volume\n    this.ref.detectChanges();\n  }\n  // @ts-ignore\n  onError(event: any) {\n    // TODO: Handle error messages\n    this.ref.detectChanges();\n  }\n\n  // http://stackoverflow.com/a/23828241/779529\n  bufferCheck() {\n    const offset = 1 / this.checkInterval;\n    this.currentPlayPos = this.currentTime;\n\n    if (\n      !this.isBufferDetected &&\n      this.currentPlayPos < this.lastPlayPos + offset\n    ) {\n      this.isBufferDetected = true;\n    }\n\n    if (\n      this.isBufferDetected &&\n      this.currentPlayPos > this.lastPlayPos + offset\n    ) {\n      this.isBufferDetected = false;\n    }\n\n    // Prevent calls to bufferCheck after ngOnDestroy have been called\n    if (!this.bufferDetected.closed) {\n      this.bufferDetected.next(this.isBufferDetected);\n    }\n\n    this.lastPlayPos = this.currentPlayPos;\n  }\n\n  startBufferCheck() {\n    this.checkBufferSubscription = timer(0, this.checkInterval).subscribe(\n      () => {\n        this.bufferCheck();\n      }\n    );\n  }\n\n  stopBufferCheck() {\n    if (this.checkBufferSubscription) {\n      this.checkBufferSubscription.unsubscribe();\n    }\n\n    this.isBufferDetected = false;\n\n    this.bufferDetected.next(this.isBufferDetected);\n  }\n\n  seekTime(value: number, byPercent: boolean = false) {\n    let second: number;\n    const duration: number = this.duration;\n\n    if (byPercent) {\n      second = (value * duration) / 100;\n    } else {\n      second = value;\n    }\n\n    this.currentTime = second;\n  }\n\n  addTextTrack(\n    type: string,\n    label?: string,\n    language?: string,\n    mode?: 'disabled' | 'hidden' | 'showing'\n  ): TextTrack {\n    const newTrack: TextTrack = this.vgMedia.addTextTrack(\n      type,\n      label,\n      language\n    );\n\n    if (mode) {\n      newTrack.mode = mode;\n    }\n    return newTrack;\n  }\n\n  ngOnDestroy() {\n    this.vgMedia.src = '';\n    this.mutationObs?.unsubscribe();\n    this.canPlayObs?.unsubscribe();\n    this.canPlayThroughObs?.unsubscribe();\n    this.loadedMetadataObs?.unsubscribe();\n    this.waitingObs?.unsubscribe();\n    this.progressObs?.unsubscribe();\n    this.endedObs?.unsubscribe();\n    this.playingObs?.unsubscribe();\n    this.playObs?.unsubscribe();\n    this.pauseObs?.unsubscribe();\n    this.timeUpdateObs?.unsubscribe();\n    this.volumeChangeObs?.unsubscribe();\n    this.errorObs?.unsubscribe();\n    this.checkBufferSubscription?.unsubscribe();\n    this.syncSubscription?.unsubscribe();\n\n    this.bufferDetected?.complete();\n    this.bufferDetected?.unsubscribe();\n\n    this.api.unregisterMedia(this);\n  }\n}\n","import {\n  Output,\n  Component,\n  EventEmitter,\n  ElementRef,\n  HostBinding,\n  QueryList,\n  AfterContentInit,\n  ContentChildren,\n  ViewEncapsulation,\n  OnDestroy,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { VgApiService } from '../../services/vg-api/vg-api.service';\nimport { VgFullscreenApiService } from '../../services/vg-fullscreen-api/vg-fullscreen-api.service';\nimport { VgControlsHiddenService } from '../../services/vg-controls-hidden/vg-controls-hidden.service';\nimport { VgMediaDirective } from '../../directives/vg-media/vg-media.directive';\nimport { VgUtilsService } from '../../services/vg-utils/vg-utils.service';\n\n@Component({\n    selector: 'vg-player',\n    encapsulation: ViewEncapsulation.None,\n    template: `<ng-content></ng-content>`,\n    styles: [\n        `\n      vg-player {\n        font-family: 'videogular';\n        position: relative;\n        display: flex;\n        width: 100%;\n        height: 100%;\n        overflow: hidden;\n        background-color: black;\n      }\n      vg-player.fullscreen {\n        position: fixed;\n        left: 0;\n        top: 0;\n      }\n      vg-player.native-fullscreen.controls-hidden {\n        cursor: none;\n      }\n    `,\n    ],\n    providers: [VgApiService, VgFullscreenApiService, VgControlsHiddenService],\n    standalone: false\n})\nexport class VgPlayerComponent implements AfterContentInit, OnDestroy {\n  elem: HTMLElement;\n\n  @HostBinding('class.fullscreen') isFullscreen = false;\n  @HostBinding('class.native-fullscreen') isNativeFullscreen = false;\n  @HostBinding('class.controls-hidden') areControlsHidden = false;\n  @HostBinding('style.z-index') zIndex: string;\n\n  @Output() onPlayerReady: EventEmitter<VgApiService> = new EventEmitter<VgApiService>();\n  @Output() onMediaReady: EventEmitter<any> = new EventEmitter();\n\n  @ContentChildren(VgMediaDirective, { descendants: true }) medias: QueryList<VgMediaDirective>;\n\n  subscriptions: Subscription[] = [];\n\n  constructor(\n    ref: ElementRef,\n    public api: VgApiService,\n    public fsAPI: VgFullscreenApiService,\n    private controlsHidden: VgControlsHiddenService\n  ) {\n    this.elem = ref.nativeElement;\n\n    this.api.registerElement(this.elem);\n  }\n\n  ngAfterContentInit() {\n    this.medias.toArray().forEach((media) => {\n      this.api.registerMedia(media);\n    });\n\n    this.fsAPI.init(this.elem, this.medias);\n\n    this.subscriptions.push(\n      this.fsAPI.onChangeFullscreen.subscribe(\n        this.onChangeFullscreen.bind(this)\n      )\n    );\n    this.subscriptions.push(\n      this.controlsHidden.isHidden.subscribe(this.onHideControls.bind(this))\n    );\n\n    this.api.onPlayerReady(this.fsAPI);\n    this.onPlayerReady.emit(this.api);\n  }\n\n  onChangeFullscreen(fsState: boolean) {\n    if (!this.fsAPI.nativeFullscreen) {\n      this.isFullscreen = fsState;\n      this.zIndex = fsState ? VgUtilsService.getZIndex().toString() : 'auto';\n    } else {\n      this.isNativeFullscreen = fsState;\n    }\n  }\n\n  onHideControls(hidden: boolean) {\n    this.areControlsHidden = hidden;\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VgApiService } from './services/vg-api/vg-api.service';\nimport { VgControlsHiddenService } from './services/vg-controls-hidden/vg-controls-hidden.service';\nimport { VgFullscreenApiService } from './services/vg-fullscreen-api/vg-fullscreen-api.service';\nimport { VgUtilsService } from './services/vg-utils/vg-utils.service';\nimport { VgEvents } from './services/events/vg-events.service';\nimport { VgStates } from './services/states/vg-states.service';\nimport { VgCuePointsDirective } from './directives/vg-cue-points/vg-cue-points.directive';\nimport { VgMediaDirective } from './directives/vg-media/vg-media.directive';\nimport { VgPlayerComponent } from './components/vg-player/vg-player.component';\n\nconst services = [\n  VgApiService,\n  VgControlsHiddenService,\n  VgFullscreenApiService,\n  VgUtilsService,\n  VgEvents,\n  VgStates\n];\n\nconst directives = [\n  VgCuePointsDirective,\n  VgMediaDirective\n]\n\n@NgModule({\n  imports: [CommonModule],\n  providers: [...services],\n  declarations: [...directives, VgPlayerComponent],\n  exports: [...directives, VgPlayerComponent]\n})\nexport class VgCoreModule {}\n","import { IMediaElement } from '../../interfaces/i-media-element.interface';\nimport { AudioTrackList, VideoTrackList } from '../../interfaces/deprecated-tracks-types.interface';\nimport { MSMediaKeyNeededEvent } from '../../interfaces/deprecated-event-types.interface';\n\nexport class VgMediaElement implements IMediaElement {\n  id: string;\n  elem: any;\n  get audioTracks(): AudioTrackList {\n    return null;\n  }\n  autoplay: boolean;\n  buffered: TimeRanges;\n  controls: boolean;\n  crossOrigin: string | any;\n  currentSrc: string;\n  currentTime: number;\n  defaultMuted: boolean;\n  defaultPlaybackRate: number;\n  duration: number;\n  ended: boolean;\n  error: MediaError;\n  loop: boolean;\n  mediaKeys: MediaKeys | any;\n  msAudioCategory: string;\n  msAudioDeviceType: string;\n  msPlayToDisabled: boolean;\n  msPlayToPreferredSourceUri: string;\n  msPlayToPrimary: boolean;\n  msPlayToSource: any;\n  msRealTime: boolean;\n  muted: boolean;\n  networkState: number;\n  onencrypted: (ev: MediaEncryptedEvent) => any;\n  onmsneedkey: (ev: MSMediaKeyNeededEvent) => any;\n  paused: boolean;\n  playbackRate: number;\n  played: TimeRanges;\n  preload: string;\n  readyState: number;\n  seekable: TimeRanges;\n  seeking: boolean;\n  src: string;\n  srcObject: MediaStream | any;\n  textTracks: TextTrackList;\n  videoTracks: VideoTrackList;\n  volume: number;\n  HAVE_CURRENT_DATA: number;\n  HAVE_ENOUGH_DATA: number;\n  HAVE_FUTURE_DATA: number;\n  HAVE_METADATA: number;\n  HAVE_NOTHING: number;\n  NETWORK_EMPTY: number;\n  NETWORK_IDLE: number;\n  NETWORK_LOADING: number;\n  NETWORK_NO_SOURCE: number;\n  // @ts-ignore\n  addTextTrack(kind: string, label?: string, language?: string): TextTrack {\n    return null;\n  }\n  // @ts-ignore\n  canPlayType(type: string): string {\n    return null;\n  }\n\n  load(): void {}\n\n  msClearEffects(): void {}\n\n  msGetAsCastingSource(): any {\n    return null;\n  }\n  // @ts-ignore\n  msInsertAudioEffect(\n    _activatableClassId: string,\n    _effectRequired: boolean,\n    _config?: any\n  ): void {}\n  // @ts-ignore\n  msSetMediaProtectionManager(mediaProtectionManager?: any): void {}\n\n  pause(): void {}\n\n  play(): Promise<any> {\n    return null;\n  }\n  // @ts-ignore\n  setMediaKeys(mediaKeys: MediaKeys | any): Promise<void> {\n    return null;\n  }\n  // @ts-ignore\n  addEventListener(\n    _type: string,\n    _listener: EventListenerOrEventListenerObject,\n    _useCapture?: boolean\n  ): void {}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.VgApiService","i2.VgFullscreenApiService","i3.VgControlsHiddenService"],"mappings":"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"}