-
Notifications
You must be signed in to change notification settings - Fork 6
/
vg-ima-ads.min.js
1 lines (1 loc) · 3.91 KB
/
vg-ima-ads.min.js
1
"use strict";angular.module("com.2fdevs.videogular.plugins.imaads",[]).directive("vgImaAds",["$window","VG_STATES",function(a,b){return{restrict:"E",require:"^videogular",scope:{vgNetwork:"=?",vgUnitPath:"=?",vgCompanion:"=?",vgCompanionSize:"=?",vgAdTagUrl:"=?",vgSkipButton:"=?"},link:function(c,d,e,f){var g,h,i=new google.ima.AdDisplayContainer(d[0]),j=new google.ima.AdsLoader(i),k=null,l=!1,m=function(){j.contentComplete()},n=0,o=angular.element(c.vgSkipButton);c.API=f,c.onPlayerReady=function(a){a&&(f.mediaElement[0].addEventListener("ended",m),j.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,c.onAdsManagerLoaded,!1,this),j.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,c.onAdError,!1,this),c.loadAds())},c.onUpdateAds=function(a,b){a!=b&&(c.loadAds(),f.pause(),i.initialize(),c.requestAds(c.vgAdTagUrl))},c.loadAds=function(){c.vgCompanion&&googletag.cmd.push(function(){googletag.defineSlot("/"+c.vgNetwork+"/"+c.vgUnitPath,c.vgCompanionSize,c.vgCompanion).addService(googletag.companionAds()).addService(googletag.pubads()),googletag.companionAds().setRefreshUnfilledSlots(!0),googletag.pubads().enableVideoAds(),googletag.enableServices()})},c.onUpdateState=function(a){switch(a){case b.PLAY:l||(f.pause(),i.initialize(),c.requestAds(c.vgAdTagUrl),l=!0);break;case b.STOP:j.contentComplete()}},c.requestAds=function(b){c.show();var e=new google.ima.AdsRequest,f=a.getComputedStyle(d[0]);e.adTagUrl=b,e.linearAdSlotWidth=parseInt(f.width,10),e.linearAdSlotHeight=parseInt(f.height,10),e.nonLinearAdSlotWidth=parseInt(f.width,10),e.nonLinearAdSlotHeight=parseInt(f.height,10),j.requestAds(e)},c.onAdsManagerLoaded=function(a){c.show(),k=a.getAdsManager(f.mediaElement[0]),c.processAdsManager(k)},c.processAdsManager=function(a){g=f.videogularElement[0].offsetWidth,h=f.videogularElement[0].offsetHeight,a.addEventListener(google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED,c.onContentPauseRequested,!1,this),a.addEventListener(google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED,c.onContentResumeRequested,!1,this),a.addEventListener(google.ima.AdEvent.Type.SKIPPABLE_STATE_CHANGED,c.onSkippableStateChanged,!1,this),a.addEventListener(google.ima.AdEvent.Type.ALL_ADS_COMPLETED,c.onAllAdsComplete,!1,this),a.addEventListener(google.ima.AdEvent.Type.COMPLETE,c.onAdComplete,!1,this),a.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,c.onAdError,!1,this),a.init(g,h,google.ima.ViewMode.NORMAL),a.start()},c.onSkippableStateChanged=function(){var a=k.getAdSkippableState();a?o.css("display","block"):o.css("display","none")},c.onClickSkip=function(){k.skip()},c.onContentPauseRequested=function(){c.show(),f.mediaElement[0].removeEventListener("ended",m),f.pause()},c.onContentResumeRequested=function(){f.mediaElement[0].addEventListener("ended",m),f.play(),c.hide()},c.onAdError=function(){k&&k.destroy(),c.hide(),f.play()},c.onAllAdsComplete=function(){c.hide(),k.getCuePoints().join().indexOf("-1")>=0&&f.stop()},c.onAdComplete=function(){n++},c.show=function(){d.css("display","block")},c.hide=function(){d.css("display","none")},o.bind("click",c.onClickSkip),d.prepend(o),angular.element(a).bind("resize",function(){g=f.videogularElement[0].offsetWidth,h=f.videogularElement[0].offsetHeight,k&&(f.isFullScreen?k.resize(g,h,google.ima.ViewMode.FULLSCREEN):k.resize(g,h,google.ima.ViewMode.NORMAL))}),f.isConfig?c.$watch("API.config",function(){c.API.config&&(c.vgNetwork=c.API.config.plugins["ima-ads"].network,c.vgUnitPath=c.API.config.plugins["ima-ads"].unitPath,c.vgCompanion=c.API.config.plugins["ima-ads"].companion,c.vgCompanionSize=c.API.config.plugins["ima-ads"].companionSize,c.vgAdTagUrl=c.API.config.plugins["ima-ads"].adTagUrl,c.vgSkipButton=c.API.config.plugins["ima-ads"].skipButton,c.onPlayerReady(!0))}):c.$watch("vgAdTagUrl",c.onUpdateAds.bind(c)),c.$watch(function(){return f.isReady},function(a,b){(1==f.isReady||a!=b)&&c.onPlayerReady(a)}),c.$watch(function(){return f.currentState},function(a,b){a!=b&&c.onUpdateState(a)})}}}]);