{"version":3,"file":"49ing-ngx-videogular-ima-ads.mjs","sources":["../../../../libs/ngx-videogular/ima-ads/src/lib/vg-ima-ads.component.ts","../../../../libs/ngx-videogular/ima-ads/src/lib/ima-ads.module.ts","../../../../libs/ngx-videogular/ima-ads/src/index.ts","../../../../libs/ngx-videogular/ima-ads/src/49ing-ngx-videogular-ima-ads.ts"],"sourcesContent":["import './google.ima';\nimport {\n  Component,\n  ElementRef,\n  Input,\n  HostBinding,\n  ViewEncapsulation,\n  OnInit,\n  OnDestroy,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport {\n  IPlayable,\n  VgApiService,\n  VgFullscreenApiService,\n  VgEvents,\n} from '@49ing/ngx-videogular/core';\n\n@Component({\n  selector: 'vg-ima-ads',\n  encapsulation: ViewEncapsulation.None,\n  template: `<div class=\"vg-ima-ads\"></div>`,\n  styles: [\n    `\n      vg-ima-ads {\n        position: absolute;\n        width: 100%;\n        height: 100%;\n        z-index: 300;\n      }\n      vg-ima-ads .vg-ima-ads {\n        position: absolute;\n        width: 100%;\n        height: 100%;\n        pointer-events: none;\n      }\n    `,\n  ],\n})\nexport class VgImaAdsComponent implements OnInit, OnDestroy {\n  @Input() vgFor: string;\n  @Input() vgNetwork: string;\n  @Input() vgUnitPath: string;\n  @Input() vgCompanion: string;\n  @Input() vgCompanionSize: number[];\n  @Input() vgAdTagUrl: string;\n  @Input() vgSkipButton: string;\n  @Input() vgSkipButtonLocale = 'en';\n\n  @Output() onAdStart: EventEmitter<boolean> = new EventEmitter();\n  @Output() onAdStop: EventEmitter<boolean> = new EventEmitter();\n  @Output() onSkipAd: EventEmitter<boolean> = new EventEmitter();\n\n  elem: HTMLElement;\n  target: IPlayable;\n  ima: Ima;\n  isFullscreen = false;\n  skipButton: HTMLElement;\n\n  subscriptions: Subscription[] = [];\n\n  @HostBinding('style.display') displayState = 'none';\n\n  constructor(\n    ref: ElementRef,\n    public API: VgApiService,\n    public fsAPI: VgFullscreenApiService\n  ) {\n    this.elem = ref.nativeElement;\n    this.onContentEnded = this.onContentEnded.bind(this);\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    if (typeof google === 'undefined') {\n      this.onMissingGoogleImaLoader();\n      return;\n    }\n\n    this.target = this.API.getMediaById(this.vgFor);\n\n    this.initializations();\n\n    this.subscriptions.push(\n      this.target.subscriptions.ended.subscribe(this.onContentEnded.bind(this))\n    );\n    this.subscriptions.push(\n      this.target.subscriptions.play.subscribe(this.onUpdateState.bind(this))\n    );\n\n    this.subscriptions.push(\n      this.fsAPI.onChangeFullscreen.subscribe(\n        this.onChangeFullscreen.bind(this)\n      )\n    );\n\n    this.ima.adsLoader.addEventListener(\n      google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,\n      this.onAdsManagerLoaded.bind(this),\n      false\n    );\n    this.ima.adsLoader.addEventListener(\n      google.ima.AdErrorEvent.Type.AD_ERROR,\n      this.onAdError.bind(this),\n      false\n    );\n\n    this.loadAds();\n  }\n\n  initializations() {\n    this.ima = new Ima(this.elem, this.vgSkipButtonLocale);\n\n    if (this.vgSkipButton) {\n      this.skipButton = document.querySelector(\n        this.vgSkipButton\n      ) as HTMLElement;\n      this.skipButton.style.display = 'none';\n      this.skipButton.addEventListener('click', this.onClickSkip.bind(this));\n      this.elem.insertBefore(this.skipButton, this.elem.firstChild);\n    }\n\n    window.addEventListener('resize', () => {\n      const w = this.API.videogularElement.offsetWidth;\n      const h = this.API.videogularElement.offsetHeight;\n\n      if (this.ima.adsManager) {\n        if (this.isFullscreen) {\n          this.ima.adsManager.resize(w, h, google.ima.ViewMode.FULLSCREEN);\n        } else {\n          this.ima.adsManager.resize(w, h, google.ima.ViewMode.NORMAL);\n        }\n      }\n    });\n  }\n\n  loadAds() {\n    if (this.vgCompanion) {\n      googletag.cmd.push(() => {\n        const adUnitPath: string = '/' + this.vgNetwork + '/' + this.vgUnitPath;\n        const slot: googletag.Slot = googletag.defineSlot(\n          adUnitPath,\n          this.vgCompanionSize,\n          this.vgCompanion\n        );\n\n        if (slot) {\n          slot.addService(googletag.companionAds());\n          slot.addService(googletag.pubads());\n\n          googletag.companionAds().setRefreshUnfilledSlots(true);\n\n          googletag.pubads().enableVideoAds();\n\n          googletag.enableServices();\n        }\n      });\n    }\n  }\n\n  onUpdateState(event: any) {\n    switch (event.type) {\n      case VgEvents.VG_PLAY:\n        if (!this.ima.adsLoaded) {\n          this.API.pause();\n          this.ima.adDisplayContainer.initialize();\n          this.requestAds(this.vgAdTagUrl);\n          this.ima.adsLoaded = true;\n        }\n        break;\n    }\n  }\n\n  requestAds(adTagUrl: string) {\n    // Show only to get computed style in pixels\n    this.show();\n\n    const adsRequest = new google.ima.AdsRequest();\n    const computedStyle = window.getComputedStyle(this.elem);\n    adsRequest.adTagUrl = adTagUrl;\n\n    adsRequest.linearAdSlotWidth = parseInt(computedStyle.width, 10);\n    adsRequest.linearAdSlotHeight = parseInt(computedStyle.height, 10);\n    adsRequest.nonLinearAdSlotWidth = parseInt(computedStyle.width, 10);\n    adsRequest.nonLinearAdSlotHeight = parseInt(computedStyle.height, 10);\n\n    this.ima.adsLoader.requestAds(adsRequest);\n  }\n\n  onAdsManagerLoaded(evt: google.ima.AdsManagerLoadedEvent) {\n    this.show();\n    this.ima.adsManager = evt.getAdsManager(this.target);\n    this.processAdsManager(this.ima.adsManager);\n  }\n  // @ts-ignore\n  processAdsManager(adsManager: google.ima.AdsManager) {\n    const w = this.API.videogularElement.offsetWidth;\n    const h = this.API.videogularElement.offsetHeight;\n\n    // Attach the pause/resume events.\n    this.ima.adsManager.addEventListener(\n      google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED,\n      this.onContentPauseRequested.bind(this),\n      false\n    );\n    this.ima.adsManager.addEventListener(\n      google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED,\n      this.onContentResumeRequested.bind(this),\n      false\n    );\n    this.ima.adsManager.addEventListener(\n      google.ima.AdEvent.Type.SKIPPABLE_STATE_CHANGED,\n      this.onSkippableStateChanged.bind(this),\n      false\n    );\n    this.ima.adsManager.addEventListener(\n      google.ima.AdEvent.Type.ALL_ADS_COMPLETED,\n      this.onAllAdsComplete.bind(this),\n      false\n    );\n    this.ima.adsManager.addEventListener(\n      google.ima.AdEvent.Type.COMPLETE,\n      this.onAdComplete.bind(this),\n      false\n    );\n    this.ima.adsManager.addEventListener(\n      google.ima.AdErrorEvent.Type.AD_ERROR,\n      this.onAdError.bind(this),\n      false\n    );\n\n    this.ima.adsManager.init(w, h, google.ima.ViewMode.NORMAL);\n    this.ima.adsManager.start();\n  }\n\n  onSkippableStateChanged() {\n    const isSkippable = this.ima.adsManager.getAdSkippableState();\n\n    if (isSkippable) {\n      this.skipButton.style.display = 'block';\n    } else {\n      this.skipButton.style.display = 'none';\n    }\n  }\n\n  onClickSkip() {\n    this.ima.adsManager.skip();\n    this.onSkipAd.emit(true);\n  }\n\n  onContentPauseRequested() {\n    this.show();\n    this.API.pause();\n    this.onAdStop.emit(true);\n  }\n\n  onContentResumeRequested() {\n    this.API.play();\n    this.onAdStart.emit(true);\n    this.hide();\n  }\n  // @ts-ignore\n  onAdError(evt) {\n    if (this.ima.adsManager) {\n      this.ima.adsManager.destroy();\n    }\n    this.hide();\n    this.API.play();\n    this.onAdStop.emit(true);\n  }\n\n  onAllAdsComplete() {\n    this.hide();\n    // The last ad was a post-roll\n    if (this.ima.adsManager.getCuePoints().join().indexOf('-1') >= 0) {\n      this.API.pause(); // it was stop() in Videogular v1\n      this.onAdStop.emit(true);\n    }\n  }\n\n  onAdComplete() {\n    // TODO: Update view with current ad count\n    this.ima.currentAd++;\n    this.onAdStop.emit(true);\n  }\n\n  show() {\n    window.dispatchEvent(new CustomEvent(VgEvents.VG_START_ADS));\n    this.displayState = 'block';\n  }\n\n  hide() {\n    window.dispatchEvent(new CustomEvent(VgEvents.VG_END_ADS));\n    this.displayState = 'none';\n  }\n\n  onContentEnded() {\n    this.ima.adsLoader.contentComplete();\n    this.onAdStop.emit(true);\n  }\n\n  onChangeFullscreen(fsState: boolean) {\n    if (!this.fsAPI.nativeFullscreen) {\n      this.isFullscreen = fsState;\n    }\n  }\n\n  private onMissingGoogleImaLoader() {\n    this.hide();\n    this.API.play();\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n  }\n}\n\nexport class Ima {\n  adDisplayContainer: google.ima.AdDisplayContainer;\n  adsLoader: google.ima.AdsLoader;\n  adsManager: google.ima.AdsManager;\n  adsLoaded: boolean;\n  currentAd: number;\n\n  constructor(imaAdsElement: HTMLElement, imaSkipButtonLocale: string) {\n    if (!!google?.ima['settings'] && imaSkipButtonLocale) {\n      google.ima['settings'].setLocale(imaSkipButtonLocale);\n    }\n\n    this.adDisplayContainer = new google.ima.AdDisplayContainer(imaAdsElement);\n    this.adsLoader = new google.ima.AdsLoader(this.adDisplayContainer);\n\n    this.adsManager = null;\n    this.adsLoaded = false;\n    this.currentAd = 0;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VgImaAdsComponent } from './vg-ima-ads.component';\nimport { VgCoreModule } from '@49ing/ngx-videogular/core';\n\n@NgModule({\n  imports: [CommonModule, VgCoreModule],\n  declarations: [VgImaAdsComponent],\n  exports: [VgImaAdsComponent],\n})\nexport class VgImaAdsModule {}\n","export * from './lib/ima-ads.module';\nexport * from './lib/vg-ima-ads.component';\n// export './lib/google.ima';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}