{"version":3,"file":"videogular-ngx-videogular-controls.mjs","sources":["../../../../libs/ngx-videogular/controls/src/lib/components/vg-controls/vg-controls.component.ts","../../../../libs/ngx-videogular/controls/src/lib/components/vg-volume/vg-volume.component.ts","../../../../libs/ngx-videogular/controls/src/lib/components/vg-track-selector/vg-track-selector.component.ts","../../../../libs/ngx-videogular/controls/src/lib/components/vg-time-display/vg-time-display.component.ts","../../../../libs/ngx-videogular/controls/src/lib/components/vg-scrub-bar/vg-scrub-bar.component.ts","../../../../libs/ngx-videogular/controls/src/lib/components/vg-quality-selector/vg-quality-selector.component.ts","../../../../libs/ngx-videogular/controls/src/lib/components/vg-playback-button/vg-playback-button.component.ts","../../../../libs/ngx-videogular/controls/src/lib/components/vg-play-pause/vg-play-pause.component.ts","../../../../libs/ngx-videogular/controls/src/lib/components/vg-mute/vg-mute.component.ts","../../../../libs/ngx-videogular/controls/src/lib/components/vg-fullscreen/vg-fullscreen.component.ts","../../../../libs/ngx-videogular/controls/src/lib/components/vg-scrub-bar/vg-scrub-bar-buffering-time/vg-scrub-bar-buffering-time.component.ts","../../../../libs/ngx-videogular/controls/src/lib/components/vg-scrub-bar/vg-scrub-bar-cue-points/vg-scrub-bar-cue-points.component.ts","../../../../libs/ngx-videogular/controls/src/lib/components/vg-scrub-bar/vg-scrub-bar-current-time/vg-scrub-bar-current-time.component.ts","../../../../libs/ngx-videogular/controls/src/lib/controls.module.ts","../../../../libs/ngx-videogular/controls/src/videogular-ngx-videogular-controls.ts"],"sourcesContent":["import {\n  Component,\n  Input,\n  OnInit,\n  ElementRef,\n  HostBinding,\n  AfterViewInit,\n  ViewEncapsulation,\n  OnDestroy,\n} from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { fromEvent } from 'rxjs';\nimport { VgApiService, VgControlsHiddenService, VgStates } from '@videogular/ngx-videogular/core';\n\n@Component({\n    selector: 'vg-controls',\n    encapsulation: ViewEncapsulation.None,\n    template: `<ng-content></ng-content>`,\n    styles: [\n        `\n      vg-controls {\n        position: absolute;\n        display: flex;\n        width: 100%;\n        height: 50px;\n        z-index: 300;\n        bottom: 0;\n        background-color: rgba(0, 0, 0, 0.5);\n        -webkit-transition: bottom 1s;\n        -khtml-transition: bottom 1s;\n        -moz-transition: bottom 1s;\n        -ms-transition: bottom 1s;\n        transition: bottom 1s;\n      }\n      vg-controls.hide {\n        bottom: -50px;\n      }\n    `,\n    ],\n    standalone: false\n})\nexport class VgControlsComponent implements OnInit, AfterViewInit, OnDestroy {\n  elem: HTMLElement;\n  target: any;\n\n  @HostBinding('style.pointer-events') isAdsPlaying = 'initial';\n  @HostBinding('class.hide') hideControls = false;\n\n  @Input() vgFor: string;\n  @Input() vgAutohide = false;\n  @Input() vgAutohideTime = 3;\n\n  private timer: any;\n\n  mouseMove$: Observable<any>;\n  touchStart$: Observable<any>;\n  mouseClick$: Observable<any>;\n\n  subscriptions: Subscription[] = [];\n  // @ts-ignore\n  constructor(\n    private API: VgApiService,\n    ref: ElementRef,\n    private hidden: VgControlsHiddenService\n  ) {\n    this.elem = ref.nativeElement;\n  }\n\n  ngOnInit() {\n    this.mouseMove$ = fromEvent(this.API.videogularElement, 'mousemove');\n    this.subscriptions.push(this.mouseMove$.subscribe(this.show.bind(this)));\n\n    this.touchStart$ = fromEvent(this.API.videogularElement, 'touchstart');\n    this.subscriptions.push(this.touchStart$.subscribe(this.show.bind(this)));\n\n    this.mouseClick$ = fromEvent(this.API.videogularElement, 'click');\n    this.subscriptions.push(this.mouseClick$.subscribe(this.show.bind(this)));\n\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.target = this.API.getMediaById(this.vgFor);\n\n    this.subscriptions.push(\n      this.target.subscriptions.play.subscribe(this.onPlay.bind(this))\n    );\n    this.subscriptions.push(\n      this.target.subscriptions.pause.subscribe(this.onPause.bind(this))\n    );\n    this.subscriptions.push(\n      this.target.subscriptions.startAds.subscribe(this.onStartAds.bind(this))\n    );\n    this.subscriptions.push(\n      this.target.subscriptions.endAds.subscribe(this.onEndAds.bind(this))\n    );\n  }\n\n  ngAfterViewInit() {\n    if (this.vgAutohide) {\n      this.hide();\n    } else {\n      this.show();\n    }\n  }\n\n  onPlay() {\n    if (this.vgAutohide) {\n      this.hide();\n    }\n  }\n\n  onPause() {\n    clearTimeout(this.timer);\n    this.hideControls = false;\n    this.hidden.state(false);\n  }\n\n  onStartAds() {\n    this.isAdsPlaying = 'none';\n  }\n\n  onEndAds() {\n    this.isAdsPlaying = 'initial';\n  }\n\n  hide() {\n    if (this.vgAutohide) {\n      clearTimeout(this.timer);\n      this.hideAsync();\n    }\n  }\n\n  show() {\n    clearTimeout(this.timer);\n    this.hideControls = false;\n    this.hidden.state(false);\n\n    if (this.vgAutohide) {\n      this.hideAsync();\n    }\n  }\n\n  private hideAsync() {\n    if (this.API.state === VgStates.VG_PLAYING) {\n      this.timer = setTimeout(() => {\n        this.hideControls = true;\n        this.hidden.state(true);\n      }, this.vgAutohideTime * 1000);\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n  }\n}\n","import {\n  Component,\n  Input,\n  ElementRef,\n  HostListener,\n  OnInit,\n  ViewEncapsulation,\n  ViewChild,\n  OnDestroy,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { VgApiService } from '@videogular/ngx-videogular/core';\n\n@Component({\n    selector: 'vg-volume',\n    encapsulation: ViewEncapsulation.None,\n    template: `\n    <div\n      #volumeBar\n      class=\"volumeBar\"\n      tabindex=\"0\"\n      role=\"slider\"\n      aria-label=\"volume level\"\n      aria-level=\"polite\"\n      [attr.aria-valuenow]=\"ariaValue\"\n      aria-valuemin=\"0\"\n      aria-valuemax=\"100\"\n      aria-orientation=\"horizontal\"\n      [attr.aria-valuetext]=\"ariaValue + '%'\"\n      (click)=\"onClick($event)\"\n      (mousedown)=\"onMouseDown($event)\"\n    >\n      <div class=\"volumeBackground\" [ngClass]=\"{ dragging: isDragging }\">\n        <div\n          class=\"volumeValue\"\n          [style.width]=\"getVolume() * (100 - 15) + '%'\"\n        ></div>\n        <div\n          class=\"volumeKnob\"\n          [style.left]=\"getVolume() * (100 - 15) + '%'\"\n        ></div>\n      </div>\n    </div>\n  `,\n    styles: [\n        `\n      vg-volume {\n        -webkit-touch-callout: none;\n        -webkit-user-select: none;\n        -moz-user-select: none;\n        -ms-user-select: none;\n        user-select: none;\n        display: flex;\n        justify-content: center;\n        height: 50px;\n        width: 100px;\n        cursor: pointer;\n        color: white;\n        line-height: 50px;\n      }\n      vg-volume .volumeBar {\n        position: relative;\n        display: flex;\n        flex-grow: 1;\n        align-items: center;\n      }\n      vg-volume .volumeBackground {\n        display: flex;\n        flex-grow: 1;\n        height: 5px;\n        pointer-events: none;\n        background-color: #333;\n      }\n      vg-volume .volumeValue {\n        display: flex;\n        height: 5px;\n        pointer-events: none;\n        background-color: #fff;\n        transition: all 0.2s ease-out;\n      }\n      vg-volume .volumeKnob {\n        position: absolute;\n        width: 15px;\n        height: 15px;\n        left: 0;\n        top: 50%;\n        transform: translateY(-50%);\n        border-radius: 15px;\n        pointer-events: none;\n        background-color: #fff;\n        transition: all 0.2s ease-out;\n      }\n      vg-volume .volumeBackground.dragging .volumeValue,\n      vg-volume .volumeBackground.dragging .volumeKnob {\n        transition: none;\n      }\n    `,\n    ],\n    standalone: false\n})\nexport class VgVolumeComponent implements OnInit, OnDestroy {\n  @Input() vgFor: string;\n  @ViewChild('volumeBar', { static: true })\n  volumeBarRef: ElementRef;\n\n  elem: HTMLElement;\n  target: any;\n  isDragging: boolean;\n  mouseDownPosX: number;\n  ariaValue: number;\n\n  subscriptions: Subscription[] = [];\n\n  constructor(ref: ElementRef, public API: VgApiService) {\n    this.elem = ref.nativeElement;\n    this.isDragging = false;\n  }\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.target = this.API.getMediaById(this.vgFor);\n    this.ariaValue = this.getVolume() * 100;\n  }\n\n  onClick(event: { clientX: number }) {\n    this.setVolume(this.calculateVolume(event.clientX));\n  }\n\n  onMouseDown(event: { clientX: number }) {\n    this.mouseDownPosX = event.clientX;\n    this.isDragging = true;\n  }\n\n  @HostListener('document:mousemove', ['$event'])\n  onDrag(event: { clientX: number }) {\n    if (this.isDragging) {\n      this.setVolume(this.calculateVolume(event.clientX));\n    }\n  }\n\n  @HostListener('document:mouseup', ['$event'])\n  onStopDrag(event: { clientX: number }) {\n    if (this.isDragging) {\n      this.isDragging = false;\n      if (this.mouseDownPosX === event.clientX) {\n        this.setVolume(this.calculateVolume(event.clientX));\n      }\n    }\n  }\n\n  @HostListener('keydown', ['$event'])\n  arrowAdjustVolume(event: KeyboardEvent) {\n    if (event.keyCode === 38 || event.keyCode === 39) {\n      event.preventDefault();\n      this.setVolume(Math.max(0, Math.min(100, this.getVolume() * 100 + 10)));\n    } else if (event.keyCode === 37 || event.keyCode === 40) {\n      event.preventDefault();\n      this.setVolume(Math.max(0, Math.min(100, this.getVolume() * 100 - 10)));\n    }\n  }\n\n  calculateVolume(mousePosX: number) {\n    const recObj = this.volumeBarRef.nativeElement.getBoundingClientRect();\n    const volumeBarOffsetLeft: number = recObj.left;\n    const volumeBarWidth: number = recObj.width;\n    return ((mousePosX - volumeBarOffsetLeft) / volumeBarWidth) * 100;\n  }\n\n  setVolume(vol: number) {\n    this.target.volume = Math.max(0, Math.min(1, vol / 100));\n    this.ariaValue = this.target.volume * 100;\n  }\n\n  getVolume(): number {\n    return this.target ? this.target.volume : 0;\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  OnInit,\n  Input,\n  ViewEncapsulation,\n  OnDestroy,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { VgApiService } from '@videogular/ngx-videogular/core';\n\nexport interface Option {\n  id: string;\n  label: string;\n  selected: boolean;\n}\n\n@Component({\n    selector: 'vg-track-selector',\n    encapsulation: ViewEncapsulation.None,\n    template: `\n    <div class=\"container\">\n      <div\n        class=\"track-selected\"\n        [class.vg-icon-closed_caption]=\"!trackSelected\"\n        >\n        {{ trackSelected || '' }}\n      </div>\n      <select\n        class=\"trackSelector\"\n        (change)=\"selectTrack($event.target.value)\"\n        tabindex=\"0\"\n        aria-label=\"track selector\"\n        [attr.aria-valuetext]=\"ariaValue\"\n        >\n        @for (track of tracks; track track) {\n          <option\n            [value]=\"track.id\"\n            [selected]=\"track.selected === true\"\n            >\n            {{ track.label }}\n          </option>\n        }\n      </select>\n    </div>\n    `,\n    styles: [\n        `\n      vg-track-selector {\n        -webkit-touch-callout: none;\n        -webkit-user-select: none;\n        -moz-user-select: none;\n        -ms-user-select: none;\n        user-select: none;\n        display: flex;\n        justify-content: center;\n        width: 50px;\n        height: 50px;\n        cursor: pointer;\n        color: white;\n        line-height: 50px;\n      }\n      vg-track-selector .container {\n        position: relative;\n        display: flex;\n        flex-grow: 1;\n        align-items: center;\n        padding: 0;\n        margin: 5px;\n      }\n      vg-track-selector select.trackSelector {\n        width: 50px;\n        padding: 5px 8px;\n        border: none;\n        background: none;\n        -webkit-appearance: none;\n        -moz-appearance: none;\n        appearance: none;\n        color: transparent;\n        font-size: 16px;\n      }\n      vg-track-selector select.trackSelector::-ms-expand {\n        display: none;\n      }\n      vg-track-selector select.trackSelector option {\n        color: #000;\n      }\n      vg-track-selector .track-selected {\n        position: absolute;\n        width: 100%;\n        height: 50px;\n        top: -6px;\n        text-align: center;\n        text-transform: uppercase;\n        font-family: Helvetica Neue, Helvetica, Arial, sans-serif;\n        padding-top: 2px;\n        pointer-events: none;\n      }\n      vg-track-selector .vg-icon-closed_caption:before {\n        width: 100%;\n      }\n    `,\n    ],\n    standalone: false\n})\nexport class VgTrackSelectorComponent implements OnInit, OnDestroy {\n  @Input() vgFor: string;\n\n  elem: HTMLElement;\n  target: any;\n  tracks: Array<Option>;\n  trackSelected: string;\n\n  subscriptions: Subscription[] = [];\n\n  ariaValue: string;\n\n  constructor(ref: ElementRef, public API: VgApiService) {\n    this.elem = ref.nativeElement;\n  }\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.target = this.API.getMediaById(this.vgFor);\n\n    const subs: Array<Option> = Array.from(\n      (this.API.getMasterMedia().elem as HTMLMediaElement).children\n    )\n      .filter((item: HTMLElement) => item.tagName === 'TRACK')\n      .filter((item: HTMLTrackElement) => item.kind === 'subtitles')\n      .map((item: HTMLTrackElement) => ({\n        label: item.label,\n        selected: item.default === true,\n        id: item.srclang,\n      }));\n\n    this.tracks = [\n      ...subs,\n      {\n        id: null,\n        label: 'Off',\n        selected: subs.every((item: Option) => item.selected === false),\n      },\n    ];\n\n    const track: Option = this.tracks.filter(\n      (item: Option) => item.selected === true\n    )[0];\n    this.trackSelected = track.id;\n    this.ariaValue = track.label;\n  }\n\n  selectTrack(trackId: string) {\n    this.trackSelected = trackId === 'null' ? null : trackId;\n\n    this.ariaValue = 'No track selected';\n\n    Array.from(\n      (this.API.getMasterMedia().elem as HTMLMediaElement).textTracks\n    ).forEach((item: TextTrack) => {\n      if (item.language === trackId) {\n        this.ariaValue = item.label;\n        item.mode = 'showing';\n      } else {\n        item.mode = 'hidden';\n      }\n    });\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n  }\n}\n","import {\n  Component,\n  Input,\n  ElementRef,\n  OnInit,\n  ViewEncapsulation,\n  OnDestroy,\n  Pipe,\n  PipeTransform,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { VgApiService } from '@videogular/ngx-videogular/core';\n\n// Workaround until we can use UTC with Angular Date Pipe\n@Pipe({\n    name: 'vgUtc',\n    standalone: false\n})\nexport class VgUtcPipe implements PipeTransform {\n  transform(value: number, format: string): string {\n    let date = new Date(value);\n    let result = format;\n    let ss: string | number = date.getUTCSeconds();\n    let mm: string | number = date.getUTCMinutes();\n    let hh: string | number = date.getUTCHours();\n\n    if (ss < 10) {\n      ss = '0' + ss;\n    }\n    if (mm < 10) {\n      mm = '0' + mm;\n    }\n    if (hh < 10) {\n      hh = '0' + hh;\n    }\n\n    result = result.replace(/ss/g, <string>ss);\n    result = result.replace(/mm/g, <string>mm);\n    result = result.replace(/hh/g, <string>hh);\n\n    return result;\n  }\n}\n\n@Component({\n    selector: 'vg-time-display',\n    encapsulation: ViewEncapsulation.None,\n    template: `\n    @if (target?.isLive) {\n      <span>LIVE</span>\n    }\n    @if (!target?.isLive) {\n      <span>{{ getTime() | vgUtc: vgFormat }}</span>\n    }\n    <ng-content></ng-content>\n    `,\n    styles: [\n        `\n      vg-time-display {\n        -webkit-touch-callout: none;\n        -webkit-user-select: none;\n        -moz-user-select: none;\n        -ms-user-select: none;\n        user-select: none;\n        display: flex;\n        justify-content: center;\n        height: 50px;\n        width: 60px;\n        cursor: pointer;\n        color: white;\n        line-height: 50px;\n        pointer-events: none;\n        font-family: Helvetica Neue, Helvetica, Arial, sans-serif;\n      }\n    `,\n    ],\n    standalone: false\n})\nexport class VgTimeDisplayComponent implements OnInit, OnDestroy {\n  @Input() vgFor: string;\n  @Input() vgProperty = 'current';\n  @Input() vgFormat = 'mm:ss';\n\n  elem: HTMLElement;\n  target: any;\n\n  subscriptions: Subscription[] = [];\n\n  constructor(ref: ElementRef, public API: VgApiService) {\n    this.elem = ref.nativeElement;\n  }\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.target = this.API.getMediaById(this.vgFor);\n  }\n\n  getTime() {\n    let t = 0;\n\n    if (this.target) {\n      t = Math.round(this.target.time[this.vgProperty]);\n      t = isNaN(t) || this.target.isLive ? 0 : t;\n    }\n\n    return t;\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  Input,\n  HostListener,\n  OnInit,\n  ViewEncapsulation,\n  HostBinding,\n  OnDestroy,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { VgControlsHiddenService, VgApiService, VgStates } from '@videogular/ngx-videogular/core';\n\n@Component({\n    selector: 'vg-scrub-bar',\n    encapsulation: ViewEncapsulation.None,\n    template: `\n    <div\n      class=\"scrubBar\"\n      tabindex=\"0\"\n      role=\"slider\"\n      aria-label=\"scrub bar\"\n      aria-level=\"polite\"\n      [attr.aria-valuenow]=\"getPercentage()\"\n      aria-valuemin=\"0\"\n      aria-valuemax=\"100\"\n      [attr.aria-valuetext]=\"getPercentage()\"\n    >\n      <ng-content></ng-content>\n    </div>\n  `,\n    styles: [\n        `\n      vg-scrub-bar {\n        -webkit-touch-callout: none;\n        -webkit-user-select: none;\n        -moz-user-select: none;\n        -ms-user-select: none;\n        user-select: none;\n        position: absolute;\n        width: 100%;\n        height: 5px;\n        bottom: 50px;\n        margin: 0;\n        cursor: pointer;\n        align-items: center;\n        background: rgba(0, 0, 0, 0.75);\n        z-index: 250;\n        -webkit-transition: bottom 1s, opacity 0.5s;\n        -khtml-transition: bottom 1s, opacity 0.5s;\n        -moz-transition: bottom 1s, opacity 0.5s;\n        -ms-transition: bottom 1s, opacity 0.5s;\n        transition: bottom 1s, opacity 0.5s;\n      }\n      vg-scrub-bar .scrubBar {\n        position: relative;\n        display: flex;\n        flex-grow: 1;\n        align-items: center;\n        height: 100%;\n      }\n      vg-controls vg-scrub-bar {\n        position: relative;\n        bottom: 0;\n        background: transparent;\n        height: 50px;\n        flex-grow: 1;\n        flex-basis: 0;\n        margin: 0 10px;\n        -webkit-transition: initial;\n        -khtml-transition: initial;\n        -moz-transition: initial;\n        -ms-transition: initial;\n        transition: initial;\n      }\n      vg-scrub-bar.hide {\n        bottom: 0;\n        opacity: 0;\n      }\n      vg-controls vg-scrub-bar.hide {\n        bottom: initial;\n        opacity: initial;\n      }\n    `,\n    ],\n    standalone: false\n})\nexport class VgScrubBarComponent implements OnInit, OnDestroy {\n  @HostBinding('class.hide') hideScrubBar = false;\n\n  @Input() vgFor: string;\n  @Input() vgSlider = true;\n\n  elem: HTMLElement;\n  target: any;\n  isSeeking = false;\n  wasPlaying = false;\n\n  subscriptions: Subscription[] = [];\n\n  constructor(\n    ref: ElementRef,\n    public API: VgApiService,\n    vgControlsHiddenState: VgControlsHiddenService\n  ) {\n    this.elem = ref.nativeElement;\n    this.subscriptions.push(\n      vgControlsHiddenState.isHidden.subscribe((hide) =>\n        this.onHideScrubBar(hide)\n      )\n    );\n  }\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.target = this.API.getMediaById(this.vgFor);\n  }\n\n  protected seekStart() {\n    if (this.target.canPlay) {\n      this.isSeeking = true;\n      if (this.target.state === VgStates.VG_PLAYING) {\n        this.wasPlaying = true;\n      }\n      this.target.pause();\n    }\n  }\n\n  protected seekMove(offset: number) {\n    if (this.isSeeking) {\n      const percentage = Math.max(\n        Math.min((offset * 100) / this.elem.scrollWidth, 99.9),\n        0\n      );\n      this.target.time.current = (percentage * this.target.time.total) / 100;\n      this.target.seekTime(percentage, true);\n    }\n  }\n\n  protected seekEnd(offset: number | false) {\n    this.isSeeking = false;\n    if (this.target.canPlay) {\n      if (offset !== false) {\n        const percentage = Math.max(\n          Math.min((offset * 100) / this.elem.scrollWidth, 99.9),\n          0\n        );\n        this.target.seekTime(percentage, true);\n      }\n      if (this.wasPlaying) {\n        this.wasPlaying = false;\n        this.target.play();\n      }\n    }\n  }\n\n  protected touchEnd() {\n    this.isSeeking = false;\n    if (this.wasPlaying) {\n      this.wasPlaying = false;\n      this.target.play();\n    }\n  }\n\n  protected getTouchOffset(event: any) {\n    let offsetLeft = 0;\n    let element: any = event.target;\n    while (element) {\n      offsetLeft += element.offsetLeft;\n      element = element.offsetParent;\n    }\n    return event.touches[0].pageX - offsetLeft;\n  }\n\n  @HostListener('mousedown', ['$event'])\n  onMouseDownScrubBar($event: any) {\n    if (this.target) {\n      if (!this.target.isLive) {\n        if (!this.vgSlider) {\n          this.seekEnd($event.offsetX);\n        } else {\n          this.seekStart();\n        }\n      }\n    }\n  }\n\n  @HostListener('document:mousemove', ['$event'])\n  onMouseMoveScrubBar($event: any) {\n    if (this.target) {\n      if (!this.target.isLive && this.vgSlider && this.isSeeking) {\n        this.seekMove($event.offsetX);\n      }\n    }\n  }\n\n  @HostListener('document:mouseup', ['$event'])\n  onMouseUpScrubBar($event: any) {\n    if (this.target) {\n      if (!this.target.isLive && this.vgSlider && this.isSeeking) {\n        this.seekEnd($event.offsetX);\n      }\n    }\n  }\n\n  @HostListener('touchstart', ['$event'])\n  onTouchStartScrubBar(_$event: any) {\n    if (this.target) {\n      if (!this.target.isLive) {\n        if (!this.vgSlider) {\n          this.seekEnd(false);\n        } else {\n          this.seekStart();\n        }\n      }\n    }\n  }\n\n  @HostListener('document:touchmove', ['$event'])\n  onTouchMoveScrubBar($event: any) {\n    if (this.target) {\n      if (!this.target.isLive && this.vgSlider && this.isSeeking) {\n        this.seekMove(this.getTouchOffset($event));\n      }\n    }\n  }\n  // @ts-ignore\n  @HostListener('document:touchcancel', ['$event']) onTouchCancelScrubBar(\n    _$event: any\n  ) {\n    if (this.target) {\n      if (!this.target.isLive && this.vgSlider && this.isSeeking) {\n        this.touchEnd();\n      }\n    }\n  }\n  // @ts-ignore\n  @HostListener('document:touchend', ['$event']) onTouchEndScrubBar(\n    _$event: any\n  ) {\n    if (this.target) {\n      if (!this.target.isLive && this.vgSlider && this.isSeeking) {\n        this.touchEnd();\n      }\n    }\n  }\n\n  @HostListener('keydown', ['$event'])\n  arrowAdjustVolume(event: KeyboardEvent) {\n    if (this.target) {\n      if (event.keyCode === 38 || event.keyCode === 39) {\n        event.preventDefault();\n        this.target.seekTime((this.target.time.current + 5000) / 1000, false);\n      } else if (event.keyCode === 37 || event.keyCode === 40) {\n        event.preventDefault();\n        this.target.seekTime((this.target.time.current - 5000) / 1000, false);\n      }\n    }\n  }\n\n  getPercentage() {\n    return this.target\n      ? Math.round((this.target.time.current * 100) / this.target.time.total) + '%'\n      : '0%';\n  }\n\n  onHideScrubBar(hide: boolean) {\n    this.hideScrubBar = hide;\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  OnInit,\n  Input,\n  ViewEncapsulation,\n  OnDestroy,\n  SimpleChanges,\n  OnChanges,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { VgApiService, BitrateOptions } from '@videogular/ngx-videogular/core';\n\n@Component({\n    selector: 'vg-quality-selector',\n    encapsulation: ViewEncapsulation.None,\n    template: `\n    <div class=\"container\">\n      <div class=\"quality-selected\" [class.vg-icon-hd]=\"!bitrateSelected\">\n        {{ bitrateSelected?.label }}\n      </div>\n      <select\n        class=\"quality-selector\"\n        (change)=\"selectBitrate($event.target.value)\"\n        tabindex=\"0\"\n        aria-label=\"quality selector\"\n        [attr.aria-valuetext]=\"ariaValue\"\n        >\n        @for (bitrate of bitrates; track bitrate) {\n          <option\n            [value]=\"bitrate.qualityIndex\"\n            [selected]=\"bitrate.qualityIndex === bitrateSelected?.qualityIndex\"\n            >\n            {{ bitrate.label }}\n          </option>\n        }\n      </select>\n    </div>\n    `,\n    styles: [\n        `\n      vg-quality-selector {\n        -webkit-touch-callout: none;\n        -webkit-user-select: none;\n        -moz-user-select: none;\n        -ms-user-select: none;\n        user-select: none;\n        display: flex;\n        justify-content: center;\n        width: 50px;\n        height: 50px;\n        cursor: pointer;\n        color: white;\n        line-height: 50px;\n      }\n      vg-quality-selector .container {\n        position: relative;\n        display: flex;\n        flex-grow: 1;\n        align-items: center;\n        padding: 0;\n        margin: 5px;\n      }\n      vg-quality-selector select.quality-selector {\n        width: 50px;\n        padding: 5px 8px;\n        border: none;\n        background: none;\n        -webkit-appearance: none;\n        -moz-appearance: none;\n        appearance: none;\n        color: transparent;\n        font-size: 16px;\n      }\n      vg-quality-selector select.quality-selector::-ms-expand {\n        display: none;\n      }\n      vg-quality-selector select.quality-selector option {\n        color: #000;\n      }\n      vg-quality-selector .quality-selected {\n        position: absolute;\n        width: 100%;\n        height: 50px;\n        top: -6px;\n        text-align: center;\n        text-transform: uppercase;\n        font-family: Helvetica Neue, Helvetica, Arial, sans-serif;\n        padding-top: 2px;\n        pointer-events: none;\n      }\n      vg-quality-selector .vg-icon-closed_caption:before {\n        width: 100%;\n      }\n    `,\n    ],\n    standalone: false\n})\nexport class VgQualitySelectorComponent\n  implements OnInit, OnChanges, OnDestroy {\n  @Input() bitrates: BitrateOptions[];\n\n  @Output() onBitrateChange: EventEmitter<BitrateOptions> = new EventEmitter();\n\n  bitrateSelected: BitrateOptions;\n\n  elem: HTMLElement;\n  target: any;\n\n  subscriptions: Subscription[] = [];\n\n  ariaValue: string;\n\n  constructor(ref: ElementRef, public API: VgApiService) {\n    this.elem = ref.nativeElement;\n  }\n\n  ngOnInit() {}\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.bitrates.currentValue && changes.bitrates.currentValue.length) {\n      this.bitrates.forEach(\n        (item) =>\n          (item.label =\n            item.label || Math.round(item.bitrate / 1000).toString())\n      );\n    }\n  }\n\n  selectBitrate(index: number) {\n    this.bitrateSelected = this.bitrates[index];\n    this.onBitrateChange.emit(this.bitrates[index]);\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n  }\n}\n","import {\n  Component,\n  Input,\n  ElementRef,\n  HostListener,\n  OnInit,\n  ViewEncapsulation,\n  OnDestroy,\n  ChangeDetectorRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { VgApiService } from '@videogular/ngx-videogular/core';\n\n@Component({\n    selector: 'vg-playback-button',\n    encapsulation: ViewEncapsulation.None,\n    template: ` <span\n    class=\"button\"\n    tabindex=\"0\"\n    role=\"button\"\n    aria-label=\"playback speed\"\n    [attr.aria-valuetext]=\"ariaValue\"\n  >\n    {{ getPlaybackRate() }}x\n  </span>`,\n    styles: [\n        `\n      vg-playback-button {\n        -webkit-touch-callout: none;\n        -webkit-user-select: none;\n        -moz-user-select: none;\n        -ms-user-select: none;\n        user-select: none;\n        display: flex;\n        justify-content: center;\n        height: 50px;\n        width: 50px;\n        cursor: pointer;\n        color: white;\n        line-height: 50px;\n        font-family: Helvetica Neue, Helvetica, Arial, sans-serif;\n      }\n      vg-playback-button .button {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        width: 50px;\n      }\n    `,\n    ],\n    standalone: false\n})\nexport class VgPlaybackButtonComponent implements OnInit, OnDestroy {\n  @Input() vgFor: string;\n\n  elem: HTMLElement;\n  target: any;\n\n  @Input() playbackValues: Array<string>;\n  playbackIndex: number;\n\n  subscriptions: Subscription[] = [];\n\n  ariaValue = 1;\n\n  constructor(\n    ref: ElementRef,\n    public API: VgApiService,\n    public cdr: ChangeDetectorRef\n  ) {\n    this.elem = ref.nativeElement;\n    this.playbackValues = ['0.5', '1.0', '1.5', '2.0'];\n    this.playbackIndex = 1;\n  }\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.target = this.API.getMediaById(this.vgFor);\n  }\n\n  @HostListener('click')\n  onClick() {\n    this.updatePlaybackSpeed();\n  }\n\n  @HostListener('keydown', ['$event'])\n  onKeyDown(event: KeyboardEvent) {\n    // On press Enter (13) or Space (32)\n    if (event.keyCode === 13 || event.keyCode === 32) {\n      event.preventDefault();\n      this.updatePlaybackSpeed();\n    }\n  }\n\n  updatePlaybackSpeed() {\n    this.playbackValues.forEach((playbackValue, index) => {\n          if (playbackValue.length === 1) {\n             this.playbackValues[index] = playbackValue + '.0';\n          }\n     });\n\n    this.playbackIndex = ++this.playbackIndex % this.playbackValues.length;\n\n    if (this.target instanceof VgApiService) {\n      this.target.playbackRate = this.playbackValues[this.playbackIndex];\n    } else {\n      this.target.playbackRate[this.vgFor] = this.playbackValues[\n        this.playbackIndex\n      ];\n    }\n\n    this.detectChanges();\n  }\n\n  getPlaybackRate() {\n    this.ariaValue = this.target ? this.target.playbackRate : 1.0;\n    return this.ariaValue;\n  }\n\n  detectChanges() {\n    try {\n      this.cdr.detectChanges();\n    } catch (e) {\n      console.warn(e);\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  HostListener,\n  OnInit,\n  Input,\n  ViewEncapsulation,\n  OnDestroy,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { VgApiService, VgStates } from '@videogular/ngx-videogular/core';\n\n@Component({\n    selector: 'vg-play-pause',\n    encapsulation: ViewEncapsulation.None,\n    template: ` <div\n    class=\"icon\"\n    [class.vg-icon-pause]=\"getState() === 'playing'\"\n    [class.vg-icon-play_arrow]=\"\n      getState() === 'paused' || getState() === 'ended'\n    \"\n    tabindex=\"0\"\n    role=\"button\"\n    [attr.aria-label]=\"getState() === 'paused' ? 'play' : 'pause'\"\n    [attr.aria-valuetext]=\"ariaValue\"\n  ></div>`,\n    styles: [\n        `\n      vg-play-pause {\n        -webkit-touch-callout: none;\n        -webkit-user-select: none;\n        -khtml-user-select: none;\n        -moz-user-select: none;\n        -ms-user-select: none;\n        user-select: none;\n        display: flex;\n        justify-content: center;\n        height: 50px;\n        width: 50px;\n        cursor: pointer;\n        color: white;\n        line-height: 50px;\n      }\n      vg-play-pause .icon {\n        pointer-events: none;\n      }\n    `,\n    ],\n    standalone: false\n})\nexport class VgPlayPauseComponent implements OnInit, OnDestroy {\n  @Input() vgFor: string;\n\n  elem: HTMLElement;\n  target: any;\n\n  subscriptions: Subscription[] = [];\n\n  ariaValue = VgStates.VG_PAUSED;\n\n  constructor(ref: ElementRef, public API: VgApiService) {\n    this.elem = ref.nativeElement;\n  }\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.target = this.API.getMediaById(this.vgFor);\n  }\n\n  @HostListener('click')\n  onClick() {\n    this.playPause();\n  }\n\n  @HostListener('keydown', ['$event'])\n  onKeyDown(event: KeyboardEvent) {\n    // On press Enter (13) or Space (32)\n    if (event.keyCode === 13 || event.keyCode === 32) {\n      event.preventDefault();\n      this.playPause();\n    }\n  }\n\n  playPause() {\n    const state = this.getState();\n\n    switch (state) {\n      case VgStates.VG_PLAYING:\n        this.target.pause();\n        break;\n\n      case VgStates.VG_PAUSED:\n      case VgStates.VG_ENDED:\n        this.target.play();\n        break;\n    }\n  }\n\n  getState() {\n    this.ariaValue = this.target ? this.target.state : VgStates.VG_PAUSED;\n    return this.ariaValue;\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n  }\n}\n","import {\n  Component,\n  Input,\n  ElementRef,\n  HostListener,\n  OnInit,\n  ViewEncapsulation,\n  OnDestroy,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { VgApiService } from '@videogular/ngx-videogular/core';\n\n@Component({\n    selector: 'vg-mute',\n    encapsulation: ViewEncapsulation.None,\n    template: ` <div\n    class=\"icon\"\n    [class.vg-icon-volume_up]=\"getVolume() >= 0.75\"\n    [class.vg-icon-volume_down]=\"getVolume() >= 0.25 && getVolume() < 0.75\"\n    [class.vg-icon-volume_mute]=\"getVolume() > 0 && getVolume() < 0.25\"\n    [class.vg-icon-volume_off]=\"getVolume() === 0\"\n    tabindex=\"0\"\n    role=\"button\"\n    aria-label=\"mute\"\n    [attr.aria-valuetext]=\"ariaValue\"\n  ></div>`,\n    styles: [\n        `\n      vg-mute {\n        -webkit-touch-callout: none;\n        -webkit-user-select: none;\n        -khtml-user-select: none;\n        -moz-user-select: none;\n        -ms-user-select: none;\n        user-select: none;\n        display: flex;\n        justify-content: center;\n        height: 50px;\n        width: 50px;\n        cursor: pointer;\n        color: white;\n        line-height: 50px;\n      }\n      vg-mute .icon {\n        pointer-events: none;\n      }\n    `,\n    ],\n    standalone: false\n})\nexport class VgMuteComponent implements OnInit, OnDestroy {\n  @Input() vgFor: string;\n  elem: HTMLElement;\n  target: any;\n\n  currentVolume: number;\n\n  subscriptions: Subscription[] = [];\n\n  ariaValue = 'unmuted';\n\n  constructor(ref: ElementRef, public API: VgApiService) {\n    this.elem = ref.nativeElement;\n  }\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.target = this.API.getMediaById(this.vgFor);\n    this.currentVolume = this.target.volume;\n  }\n\n  @HostListener('click')\n  onClick() {\n    this.changeMuteState();\n  }\n\n  @HostListener('keydown', ['$event'])\n  onKeyDown(event: KeyboardEvent) {\n    // On press Enter (13) or Space (32)\n    if (event.keyCode === 13 || event.keyCode === 32) {\n      event.preventDefault();\n      this.changeMuteState();\n    }\n  }\n\n  changeMuteState() {\n    const volume = this.getVolume();\n\n    if (volume === 0) {\n      if (this.target.volume === 0 && this.currentVolume === 0) {\n        this.currentVolume = 1;\n      }\n\n      this.target.volume = this.currentVolume;\n    } else {\n      this.currentVolume = volume;\n      this.target.volume = 0;\n    }\n  }\n\n  getVolume() {\n    const volume = this.target ? this.target.volume : 0;\n    this.ariaValue = volume ? 'unmuted' : 'muted';\n    return volume;\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  HostListener,\n  OnDestroy,\n  OnInit,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { VgApiService, VgFullscreenApiService } from '@videogular/ngx-videogular/core';\n\n@Component({\n    selector: 'vg-fullscreen',\n    encapsulation: ViewEncapsulation.None,\n    template: ` <div\n    class=\"icon\"\n    [class.vg-icon-fullscreen]=\"!isFullscreen\"\n    [class.vg-icon-fullscreen_exit]=\"isFullscreen\"\n    tabindex=\"0\"\n    role=\"button\"\n    aria-label=\"fullscreen\"\n    [attr.aria-valuetext]=\"ariaValue\"\n  ></div>`,\n    styles: [\n        `\n      vg-fullscreen {\n        -webkit-touch-callout: none;\n        -webkit-user-select: none;\n        -khtml-user-select: none;\n        -moz-user-select: none;\n        -ms-user-select: none;\n        user-select: none;\n        display: flex;\n        justify-content: center;\n        height: 50px;\n        width: 50px;\n        cursor: pointer;\n        color: white;\n        line-height: 50px;\n      }\n      vg-fullscreen .icon {\n        pointer-events: none;\n      }\n    `,\n    ],\n    standalone: false\n})\nexport class VgFullscreenComponent implements OnInit, OnDestroy {\n  elem: HTMLElement;\n  vgFor: string;\n  target: Object;\n  isFullscreen = false;\n\n  subscriptions: Subscription[] = [];\n\n  ariaValue = 'normal mode';\n\n  constructor(\n    ref: ElementRef,\n    public API: VgApiService,\n    public fsAPI: VgFullscreenApiService\n  ) {\n    this.elem = ref.nativeElement;\n    this.subscriptions.push(\n      this.fsAPI.onChangeFullscreen.subscribe(\n        this.onChangeFullscreen.bind(this)\n      )\n    );\n  }\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.target = this.API.getMediaById(this.vgFor);\n  }\n\n  onChangeFullscreen(fsState: boolean) {\n    this.ariaValue = fsState ? 'fullscreen mode' : 'normal mode';\n    this.isFullscreen = fsState;\n  }\n\n  @HostListener('click')\n  onClick() {\n    this.changeFullscreenState();\n  }\n\n  @HostListener('keydown', ['$event'])\n  onKeyDown(event: KeyboardEvent) {\n    // On press Enter (13) or Space (32)\n    if (event.keyCode === 13 || event.keyCode === 32) {\n      event.preventDefault();\n      this.changeFullscreenState();\n    }\n  }\n\n  changeFullscreenState() {\n    let element = this.target;\n\n    if (this.target instanceof VgApiService) {\n      element = null;\n    }\n\n    this.fsAPI.toggleFullscreen(element);\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n  }\n}\n","import {\n  Component,\n  Input,\n  ElementRef,\n  OnInit,\n  ViewEncapsulation,\n  OnDestroy,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { VgApiService } from '@videogular/ngx-videogular/core';\n\n@Component({\n    selector: 'vg-scrub-bar-buffering-time',\n    encapsulation: ViewEncapsulation.None,\n    template: `<div class=\"background\" [style.width]=\"getBufferTime()\"></div>`,\n    styles: [\n        `\n      vg-scrub-bar-buffering-time {\n        display: flex;\n        width: 100%;\n        height: 5px;\n        pointer-events: none;\n        position: absolute;\n      }\n      vg-scrub-bar-buffering-time .background {\n        background-color: rgba(255, 255, 255, 0.3);\n      }\n      vg-controls vg-scrub-bar-buffering-time {\n        position: absolute;\n        top: calc(50% - 3px);\n      }\n      vg-controls vg-scrub-bar-buffering-time .background {\n        -webkit-border-radius: 2px;\n        -moz-border-radius: 2px;\n        border-radius: 2px;\n      }\n    `,\n    ],\n    standalone: false\n})\nexport class VgScrubBarBufferingTimeComponent implements OnInit, OnDestroy {\n  @Input() vgFor: string;\n\n  elem: HTMLElement;\n  target: any;\n\n  subscriptions: Subscription[] = [];\n\n  constructor(ref: ElementRef, public API: VgApiService) {\n    this.elem = ref.nativeElement;\n  }\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.target = this.API.getMediaById(this.vgFor);\n  }\n\n  getBufferTime() {\n    let bufferTime = '0%';\n\n    if (this.target?.buffered?.length) {\n      if (this.target.time.total === 0) {\n        bufferTime = '0%';\n      } else {\n        bufferTime =\n          (this.target.buffer.end / this.target.time.total) * 100 + '%';\n      }\n    }\n\n    return bufferTime;\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  DoCheck,\n  SimpleChange,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { VgApiService } from '@videogular/ngx-videogular/core';\n\n\n// tslint:disable-next-line: no-conflicting-lifecycle\n@Component({\n    selector: 'vg-scrub-bar-cue-points',\n    encapsulation: ViewEncapsulation.None,\n    template: `\n    <div class=\"cue-point-container\">\n      @for (cp of cuePoints; track cp) {\n        <span\n          [style.width]=\"cp.$$style?.width\"\n          [style.left]=\"cp.$$style?.left\"\n          class=\"cue-point\"\n        ></span>\n      }\n    </div>\n    `,\n    styles: [\n        `\n      vg-scrub-bar-cue-points {\n        display: flex;\n        width: 100%;\n        height: 5px;\n        pointer-events: none;\n        position: absolute;\n      }\n      vg-scrub-bar-cue-points .cue-point-container .cue-point {\n        position: absolute;\n        height: 5px;\n        background-color: rgba(255, 204, 0, 0.7);\n      }\n      vg-controls vg-scrub-bar-cue-points {\n        position: absolute;\n        top: calc(50% - 3px);\n      }\n    `,\n    ],\n    standalone: false\n})\nexport class VgScrubBarCuePointsComponent\n  implements OnInit, OnChanges, OnDestroy, DoCheck {\n  @Input() vgCuePoints: TextTrackCueList;\n  @Input() vgFor: string;\n\n  elem: HTMLElement;\n  target: any;\n  onLoadedMetadataCalled = false;\n  cuePoints: Array<any> = [];\n\n  subscriptions: Subscription[] = [];\n\n  totalCues = 0;\n\n  constructor(ref: ElementRef, public API: VgApiService) {\n    this.elem = ref.nativeElement;\n  }\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.target = this.API.getMediaById(this.vgFor);\n\n    const onTimeUpdate = this.target.subscriptions.loadedMetadata;\n    this.subscriptions.push(\n      onTimeUpdate.subscribe(this.onLoadedMetadata.bind(this))\n    );\n\n    if (this.onLoadedMetadataCalled) {\n      this.onLoadedMetadata();\n    }\n  }\n\n  onLoadedMetadata() {\n    if (this.vgCuePoints) {\n      // We need to transform the TextTrackCueList to Array or it doesn't work on IE11/Edge.\n      // See: https://github.com/videogular/videogular2/issues/369\n      this.cuePoints = [];\n\n      for (let i = 0, l = this.vgCuePoints.length; i < l; i++) {\n        const end =\n          this.vgCuePoints[i].endTime >= 0\n            ? this.vgCuePoints[i].endTime\n            : this.vgCuePoints[i].startTime + 1;\n        const cuePointDuration = (end - this.vgCuePoints[i].startTime) * 1000;\n        let position = '0';\n        let percentWidth = '0';\n\n        if (typeof cuePointDuration === 'number' && this.target.time.total) {\n          percentWidth =\n            (cuePointDuration * 100) / this.target.time.total + '%';\n          position =\n            (this.vgCuePoints[i].startTime * 100) /\n              Math.round(this.target.time.total / 1000) +\n            '%';\n        }\n\n        (this.vgCuePoints[i] as any).$$style = {\n          width: percentWidth,\n          left: position,\n        };\n\n        this.cuePoints.push(this.vgCuePoints[i]);\n      }\n    }\n  }\n\n  updateCuePoints() {\n    if (!this.target) {\n      this.onLoadedMetadataCalled = true;\n      return;\n    }\n    this.onLoadedMetadata();\n  }\n\n  ngOnChanges(changes: { [propName: string]: SimpleChange }) {\n    if (changes.vgCuePoints.currentValue) {\n      this.updateCuePoints();\n    }\n  }\n\n  ngDoCheck() {\n    if (this.vgCuePoints) {\n      const changes = this.totalCues !== this.vgCuePoints.length;\n\n      if (changes) {\n        this.totalCues = this.vgCuePoints.length;\n        this.updateCuePoints();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n  }\n}\n","import {\n  Component,\n  Input,\n  ElementRef,\n  OnInit,\n  ViewEncapsulation,\n  OnDestroy,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { VgApiService } from '@videogular/ngx-videogular/core';\n\n@Component({\n    selector: 'vg-scrub-bar-current-time',\n    encapsulation: ViewEncapsulation.None,\n    template: `<div class=\"background\" [style.width]=\"getPercentage()\"></div>\n    @if (vgSlider) {\n      <span class=\"slider\"></span>\n    }`,\n    styles: [\n        `\n      vg-scrub-bar-current-time {\n        display: flex;\n        width: 100%;\n        height: 5px;\n        pointer-events: none;\n        position: absolute;\n      }\n      vg-scrub-bar-current-time .background {\n        background-color: white;\n      }\n      vg-controls vg-scrub-bar-current-time {\n        position: absolute;\n        top: calc(50% - 3px);\n        -webkit-border-radius: 2px;\n        -moz-border-radius: 2px;\n        border-radius: 2px;\n      }\n      vg-controls vg-scrub-bar-current-time .background {\n        border: 1px solid white;\n        -webkit-border-radius: 2px;\n        -moz-border-radius: 2px;\n        border-radius: 2px;\n      }\n      vg-scrub-bar-current-time .slider {\n        background: white;\n        height: 15px;\n        width: 15px;\n        border-radius: 50%;\n        box-shadow: 0px 0px 10px black;\n        margin-top: -5px;\n        margin-left: -10px;\n      }\n    `,\n    ],\n    standalone: false\n})\nexport class VgScrubBarCurrentTimeComponent implements OnInit, OnDestroy {\n  @Input() vgFor: string;\n  @Input() vgSlider = false;\n\n  elem: HTMLElement;\n  target: any;\n\n  subscriptions: Subscription[] = [];\n\n  constructor(ref: ElementRef, public API: VgApiService) {\n    this.elem = ref.nativeElement;\n  }\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.target = this.API.getMediaById(this.vgFor);\n  }\n\n  getPercentage() {\n    return this.target\n      ? Math.round((this.target.time.current * 100) / this.target.time.total) +\n          '%'\n      : '0%';\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 { VgControlsComponent } from './components/vg-controls/vg-controls.component';\nimport { VgVolumeComponent } from './components/vg-volume/vg-volume.component';\nimport { VgTrackSelectorComponent } from './components/vg-track-selector/vg-track-selector.component';\nimport { VgTimeDisplayComponent, VgUtcPipe } from './components/vg-time-display/vg-time-display.component';\nimport { VgScrubBarComponent } from './components/vg-scrub-bar/vg-scrub-bar.component';\nimport { VgQualitySelectorComponent } from './components/vg-quality-selector/vg-quality-selector.component';\nimport { VgPlaybackButtonComponent } from './components/vg-playback-button/vg-playback-button.component';\nimport { VgPlayPauseComponent } from './components/vg-play-pause/vg-play-pause.component';\nimport { VgMuteComponent } from './components/vg-mute/vg-mute.component';\nimport { VgFullscreenComponent } from './components/vg-fullscreen/vg-fullscreen.component';\nimport { VgCoreModule } from '@videogular/ngx-videogular/core';\nimport { VgScrubBarBufferingTimeComponent } from './components/vg-scrub-bar/vg-scrub-bar-buffering-time/vg-scrub-bar-buffering-time.component';\nimport { VgScrubBarCuePointsComponent } from './components/vg-scrub-bar/vg-scrub-bar-cue-points/vg-scrub-bar-cue-points.component';\nimport { VgScrubBarCurrentTimeComponent } from './components/vg-scrub-bar/vg-scrub-bar-current-time/vg-scrub-bar-current-time.component';\n\nconst components = [\n  VgControlsComponent,\n  VgVolumeComponent,\n  VgTrackSelectorComponent,\n  VgTimeDisplayComponent,\n  VgScrubBarComponent,\n  VgQualitySelectorComponent,\n  VgPlaybackButtonComponent,\n  VgPlayPauseComponent,\n  VgMuteComponent,\n  VgFullscreenComponent,\n  VgUtcPipe,\n  VgScrubBarBufferingTimeComponent,\n  VgScrubBarCuePointsComponent,\n  VgScrubBarCurrentTimeComponent\n]\n\n@NgModule({\n  imports: [CommonModule, VgCoreModule],\n  declarations: [...components],\n  exports: [...components],\n})\nexport class VgControlsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}