UNPKG

bitmovin-player

Version:

The Bitmovin HTML5 Adaptive Streaming Player for MPEG-DASH and HLS

13 lines (12 loc) • 29.8 kB
/**************************************************************************** * Copyright (C) 2019, Bitmovin, Inc., All Rights Reserved * * This source code and its use and distribution, is subject to the terms * and conditions of the applicable license agreement. * * Bitmovin Player Version 8.16.2 * ****************************************************************************/ (function() { !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["advertising-ima"]=t():(e.bitmovin=e.bitmovin||{},e.bitmovin.player=e.bitmovin.player||{},e.bitmovin.player["advertising-ima"]=t())}(this,function(){return webpackJsonpbitmovin_player__name_([22],{142:function(e,t,i){"use strict";function a(e){for(var t=[],i=1;i<arguments.length;i++)t[i-1]=arguments[i];e&&"function"==typeof e&&e.apply(void 0,t)}function r(){return[100,404,google.ima.AdError.ErrorCode.COMPANION_REQUIRED_ERROR,google.ima.AdError.ErrorCode.FAILED_TO_REQUEST_ADS,google.ima.AdError.ErrorCode.NONLINEAR_DIMENSIONS_ERROR,google.ima.AdError.ErrorCode.UNKNOWN_AD_RESPONSE,google.ima.AdError.ErrorCode.UNKNOWN_ERROR,google.ima.AdError.ErrorCode.VAST_ASSET_NOT_FOUND,google.ima.AdError.ErrorCode.VAST_EMPTY_RESPONSE,google.ima.AdError.ErrorCode.VAST_LINEAR_ASSET_MISMATCH,google.ima.AdError.ErrorCode.VAST_LOAD_TIMEOUT,google.ima.AdError.ErrorCode.VAST_MALFORMED_RESPONSE,google.ima.AdError.ErrorCode.VAST_NO_ADS_AFTER_WRAPPER,google.ima.AdError.ErrorCode.VAST_SCHEMA_VALIDATION_ERROR,google.ima.AdError.ErrorCode.VAST_TOO_MANY_REDIRECTS,google.ima.AdError.ErrorCode.VAST_TRAFFICKING_ERROR,google.ima.AdError.ErrorCode.VAST_UNSUPPORTED_VERSION,google.ima.AdError.ErrorCode.VAST_WRAPPER_ERROR,1012]}function n(e,t){return e.scheduleTime-e.preloadOffset-(t.scheduleTime-t.preloadOffset)}var o=this&&this.__extends||function(){var e=function(t,i){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(t,i)};return function(t,i){function a(){this.constructor=t}e(t,i),t.prototype=null===i?Object.create(i):(a.prototype=i.prototype,new a)}}(),s=this&&this.__assign||function(){return s=Object.assign||function(e){for(var t,i=1,a=arguments.length;i<a;i++){t=arguments[i];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},s.apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0});var d=i(20),l=i(1),A=i(53),c=i(11),u=i(73),h=i(13),g=i(39),p=i(57),m=i(105),E=i(47),f=i(26),v=i(24),y=i(107),k=i(86),T=i(87),I=function(e){function t(t,i){var r=e.call(this,t,i)||this;return r.onAdsManagerLoaded=function(e){r.adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete=!1,r.adsRenderingSettings.loadVideoTimeout=r.adVideoLoadTimeout,r.adsManager=e.getAdsManager(r.player.getVideoElement(),r.adsRenderingSettings),r.adsManager.addEventListener(google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED,r.onContentPauseRequested),r.adsManager.addEventListener(google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED,r.onContentResumeRequested),r.adsManager.addEventListener(google.ima.AdEvent.Type.STARTED,r.onStarted),r.adsManager.addEventListener(google.ima.AdEvent.Type.LOADED,r.onLoaded),r.adsManager.addEventListener(google.ima.AdEvent.Type.SKIPPED,r.onSkipped),r.adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE,r.onComplete),r.adsManager.addEventListener(google.ima.AdEvent.Type.PAUSED,r.onPaused),r.adsManager.addEventListener(google.ima.AdEvent.Type.RESUMED,r.onResumed),r.adsManager.addEventListener(google.ima.AdEvent.Type.CLICK,r.onClicked),r.adsManager.addEventListener(google.ima.AdEvent.Type.DURATION_CHANGE,r.onDurationChange),r.adsManager.addEventListener(google.ima.AdEvent.Type.FIRST_QUARTILE,r.onFirstQuartile),r.adsManager.addEventListener(google.ima.AdEvent.Type.MIDPOINT,r.onMidpoint),r.adsManager.addEventListener(google.ima.AdEvent.Type.THIRD_QUARTILE,r.onThirdQuartile),r.adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,r.onAdError),a(r.config.onAdsManagerAvailable,r.adsManager),r.adsManager.init(r.playerContainer.clientWidth,r.playerContainer.clientHeight,google.ima.ViewMode.NORMAL),r.adsManager.setVolume(r.player.getVolume()/100)},r.onAdError=function(e){var t=r.getActiveAdBreak(),i=e.getError(),a=i.getInnerError(),n=null!=a&&Boolean(a.getErrorCode),o=n?a:null;if(!t)return void r.emitAdError(i);if(t.trackingEvents&&t.trackingEvents.error&&r.adPlaybackApiPromise){var s=t.trackingEvents.error;r.adPlaybackApiPromise.then(function(){return g.AdManifestHelper.pingUrl(s)})}return o&&o.getErrorCode()===google.ima.AdError.ErrorCode.AUTOPLAY_DISALLOWED?(r.hasContentStarted||(r.scheduledAdBreaks=[t].concat(r.queuedAdBreaks,r.scheduledAdBreaks),r.queuedAdBreaks=[]),void r.emitAdError(o)):r.waterfallingErrorCodes.includes(i.getErrorCode())?void r.tryNextFallbackAdTag(t).then(function(e){if(e.manifest)r.passAdBreakToIma(t,g.AdManifestHelper.toDataUri(e.manifest),!0);else{if(t.passthroughMode===k.ImaPassthroughMode.None)return Promise.reject();r.passAdBreakToIma(t,null,!0)}})["catch"](function(){return r.emitAdError(i)}):void r.emitAdError(i)},r.onContentPauseRequested=function(){if(!r.adPlaybackApiPromise){var e=r.getActiveAdBreak();if(!e){var t=r.player.getVideoElement().currentTime;e={tag:null,id:h.Util.generateUniqueId(),position:String(t),scheduleTime:t}}r.adPlaybackApiPromise=r.player.requestAdPlayback(e),r.adPlaybackReporterPromise=r.adPlaybackApiPromise.then(function(e){return e.requestReporter()}),e.trackingEvents&&e.trackingEvents.breakStart&&r.adPlaybackApiPromise.then(function(){return g.AdManifestHelper.pingUrl(e.trackingEvents.breakStart)})}},r.onContentResumeRequested=function(){if(r.isFallbackAd&&(r.isFallbackAd=!1,r.getActiveAdBreak()&&delete r.getActiveAdBreak().currentFallbackIndex),r.getActiveAdBreak()&&r.getActiveAdBreak().trackingEvents&&r.getActiveAdBreak().trackingEvents.breakEnd){var e=r.getActiveAdBreak().trackingEvents.breakEnd;r.adPlaybackApiPromise.then(function(){return g.AdManifestHelper.pingUrl(e)})}r.activeAdBreak=null,r.isAdPlaying=!1,r.adContainer.style.display="none",r.adPlaybackApiPromise?r.adPlaybackApiPromise.then(function(e){r.queuedAdBreaks.length>0?r.playAdBreak(r.queuedAdBreaks.shift()):(e.done(),r.adPlaybackApiPromise=null,r.maybeResolveAdBreaks())}):r.maybeResolveAdBreaks()},r.onLoaded=function(e){var t=e.getAd().getAdPodInfo().getAdPosition()>1,i=Promise.resolve();r.adPlaybackApiPromise&&!t&&(i=r.adPlaybackApiPromise.then(function(t){return t.done(!e.getAd().isLinear())}),r.adPlaybackApiPromise=null),i.then(function(){var e=r.getActiveAdBreak();if(!e)return void(r.passthroughDownloadTime=null);if(e.passthroughMode!==k.ImaPassthroughMode.None){var t="number"==typeof e.currentFallbackIndex&&e.currentFallbackIndex>=0?e.fallbackTags[e.currentFallbackIndex]:e.tag,i=r.passthroughDownloadTime&&t.type!==E.AdTagType.VMAP?{downloadTime:(Date.now()-r.passthroughDownloadTime)/1e3}:null;r.player.metadataLoaded(e,i)}r.passthroughDownloadTime=null,e.hasOwnProperty("ads")||(e.ads=[]),r.config.strategy.shouldPlayAdBreak(e)?r.adsManager.start():r.activeAdBreak=null})},r.onStarted=function(e){r.adjustAdContainer(e.getAd().isLinear(),e.getAd().getWidth(),e.getAd().getHeight()),r.activeAd||r.initializeActiveAd(e),r.config&&r.config.companionAdContainers&&r.displayCompanionAds(r.config.companionAdContainers(),e),r.activeAd.isLinear?r.onLinearAdStarted(e):r.onNonLinearAdStarted(e)},r.triggerTimeUpdate=function(){if(r.adPlaybackReporterPromise){var e=r.currentTime();e!==r.lastKnownAdPlaybackTime&&e>0&&r.adPlaybackReporterPromise.then(function(t){return t.timeupdate(e)}),r.lastKnownAdPlaybackTime=e}},r.onSkipped=function(){r.resetActiveAd(),r.adPlaybackReporterPromise&&r.adPlaybackReporterPromise.then(function(e){return e.skipped()})},r.onComplete=function(){r.resetActiveAd(),r.adPlaybackReporterPromise&&(r.adPlaybackReporterPromise.then(function(e){return e.done()}),r.adPlaybackReporterPromise=r.adPlaybackApiPromise.then(function(e){return e.requestReporter()}))},r.onPaused=function(){r.isAdPlaying=!1,r.adPlaybackReporterPromise.then(function(e){return e.paused(r.currentTime())})},r.onResumed=function(){r.isAdPlaying=!0,r.adPlaybackReporterPromise.then(function(e){return e.resumed(r.currentTime())})},r.onClicked=function(){var e=r.activeAd?r.activeAd.clickThroughUrl:null;r.player.adClicked(e)},r.onDurationChange=function(e){r.currentDuration=e.getAd().getDuration()},r.onFirstQuartile=function(){r.player.onQuartile(l.AdQuartile.FIRST_QUARTILE)},r.onMidpoint=function(){r.player.onQuartile(l.AdQuartile.MIDPOINT)},r.onThirdQuartile=function(){r.player.onQuartile(l.AdQuartile.THIRD_QUARTILE)},r.scheduledAdBreaks=[],r.queuedAdBreaks=[],r.persistentAdBreaks=[],r.currentScheduleTime=0,r.activeAdBreak=null,r.activeAd=null,r.adVideoLoadTimeout=i.videoLoadTimeout,r.waterfallingErrorCodes=[],r.isUsingCustomAdContainer=!1,r.isImaSdkAvailable=!1,r.scheduleAdBreaks=Promise.resolve(null),r.isAdPlaying=!1,r.isFallbackAd=!1,r.config.placeholders=s({},p.adTagPlaceholderDefaults,r.config.placeholders),r.initializeImaSdkDeferred=new c.Deferred,r.loadImaSdkPromise=u.FileLoader.getInstance().loadScript(i.sdkUrl),r.loadImaSdkPromise.then(function(){r.createDomStructure(),r.initialize(),r.isImaSdkAvailable=!0})["catch"](function(){r.player.onError(T.ImaModuleErrorCode.FAILED_TO_REQUEST_IMA_SDK,"could not load the IMA SDK"),r.isImaSdkAvailable=!1,r.initializeImaSdkDeferred.resolve()}),r}return o(t,e),t.prototype.createDomStructure=function(){"function"==typeof this.config.adContainer&&(this.adContainer=this.config.adContainer(),this.adContainer instanceof HTMLElement?this.isUsingCustomAdContainer=!0:this.player.onError(v.VastErrorCode.UNDEFINED_ERROR,"AdvertisingConfig.adContainer was defined but did not provide a valid HTMLElement.")),this.isUsingCustomAdContainer||(this.adContainer=A.DOMHelper.createTag("div",{"class":d.Environment.idPrefix+"ima-container"},{height:"100%",width:"100%",display:"none",border:"none",overflow:"hidden",position:"absolute",top:"0"}),this.playerContainer=this.player.getVideoElement().parentElement,this.playerContainer.appendChild(this.adContainer)),a(this.config.onAdContainerAvailable,this.adContainer)},t.prototype.initialize=function(){google.ima.settings.setPlayerType("bitmovin-player"),google.ima.settings.setNumRedirects(25),google.ima.settings.setCookiesEnabled(this.config.withCredentials),a(this.config.beforeInitialization,google.ima.settings),this.adsRenderingSettings=new google.ima.AdsRenderingSettings,this.config.allowedUiElements&&(this.adsRenderingSettings.uiElements=this.config.allowedUiElements),this.adDisplayContainer=new google.ima.AdDisplayContainer(this.adContainer,this.player.getVideoElement()),this.adDisplayContainer.initialize(),this.adsLoader=new google.ima.AdsLoader(this.adDisplayContainer),this.adsLoader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,this.onAdError),this.adsLoader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,this.onAdsManagerLoaded),this.waterfallingErrorCodes=r(),this.initializeImaSdkDeferred.resolve()},t.prototype.emitAdError=function(e){this.player.onError(e.getErrorCode(),e.getMessage(),this.getActiveAdBreak()),this.resetActiveAd(),this.activeAdBreak=null,this.queuedAdBreaks.length>0?this.playAdBreak(this.queuedAdBreaks.shift()):this.maybeResolveAdBreaks()},t.prototype.maybeResolveAdBreaks=function(){this.finishAllAdBreaksForPosition&&(this.finishAllAdBreaksForPosition.resolve(),this.finishAllAdBreaksForPosition=null)},t.prototype.initializeActiveAd=function(e){if(this.getActiveAdBreak()&&this.getActiveAdBreak().ads){var t=e.getAd().getAdId(),i=this.getActiveAdBreak().ads.find(function(e){return e.id===t});i&&(this.activeAd=i)}if(this.activeAd=this.activeAd||{id:e.getAd().getAdId()},this.activeAd.isLinear=e.getAd().isLinear(),1===Object.keys(e.getAd()).length){var a=e.getAd()[Object.keys(e.getAd())[0]].clickThroughUrl;a&&(this.activeAd.clickThroughUrl=a)}e.getAd().getMediaUrl()&&(this.activeAd.mediaFileUrl=e.getAd().getMediaUrl())},t.prototype.onLinearAdStarted=function(e){var i=this,a=e.getAd().getSkipTimeOffset();this.currentDuration=e.getAd().getDuration(),this.currentDuration===-1&&(this.currentDuration=null),this.activeAd.width=e.getAd().getVastMediaWidth(),this.activeAd.height=e.getAd().getVastMediaHeight(),this.activeAd.duration=this.currentDuration,this.activeAd.skippable=a!==f.NON_SKIPPABLE_IDENTIFIER,this.activeAd.data=this.collectAdData(e),this.activeAd.skippable&&(this.activeAd.skippableAfter=a),this.getActiveAdBreak()&&!this.getActiveAdBreak().ads.includes(this.activeAd)&&this.getActiveAdBreak().ads.push(this.activeAd),this.isAdPlaying=!0,this.adPlaybackReporterPromise.then(function(e){e.started(i.activeAd),i.triggerTimeUpdateInterval=window.setInterval(i.triggerTimeUpdate,t.TIMEUPDATE_INTERVAL)})},t.prototype.onNonLinearAdStarted=function(e){this.queuedAdBreaks.length>0?this.playAdBreak(this.queuedAdBreaks.shift()):(this.activeAd.width=e.getAd().getWidth(),this.activeAd.height=e.getAd().getHeight(),this.activeAd.data=this.collectAdData(e),this.getActiveAdBreak()&&!this.getActiveAdBreak().ads.includes(this.activeAd)&&this.getActiveAdBreak().ads.push(this.activeAd),this.player.overlayAdStarted(this.activeAd),this.finishAllAdBreaksForPosition&&(this.finishAllAdBreaksForPosition.resolve(),this.finishAllAdBreaksForPosition=null)),this.activeAdBreak=null},t.prototype.adjustAdContainer=function(e,t,i){this.adContainer.style.display="block",this.isUsingCustomAdContainer||(e?(this.adContainer.style.width="100%",this.adContainer.style.height="100%",this.adContainer.style.top="0",this.adContainer.style.bottom="",this.adContainer.style.left="",this.adContainer.style.right="",this.adContainer.style.marginLeft="",this.adContainer.style.marginRight=""):(this.adContainer.style.width=t+"px",this.adContainer.style.height=i+"px",this.adContainer.style.top="",this.adContainer.style.bottom=f.DEFAULT_OVERLAY_AD_BOTTOM_POSITION,this.adContainer.style.left="0",this.adContainer.style.right="0",this.adContainer.style.marginLeft="auto",this.adContainer.style.marginRight="auto")),this.adjustImaIframe(e,t,i)},t.prototype.adjustImaIframe=function(e,t,i){var a=this.adContainer.firstElementChild;a&&(e?(a.style.width="100%",a.style.height="100%"):(a.style.width=t+"px",a.style.height=i+"px"));var r=a.getElementsByTagName("iframe")[0];r&&(e?(r.style.width=t+"100%",r.style.height=i+"100%"):(r.style.width=t+"px",r.style.height=i+"px"))},t.prototype.displayCompanionAds=function(e,t){var i=this,a=new google.ima.CompanionAdSelectionSettings;a.resourceType=google.ima.CompanionAdSelectionSettings.ResourceType.STATIC,a.creativeType=google.ima.CompanionAdSelectionSettings.CreativeType.IMAGE,a.sizeCriteria=google.ima.CompanionAdSelectionSettings.SizeCriteria.IGNORE,e.forEach(function(e){var r=e.clientWidth,n=e.clientHeight,o=t.getAd().getCompanionAds(r,n,a);if("innerHTML"in e&&o.length>0){var s=o[0];i.activeAd.hasOwnProperty("companionAds")||(i.activeAd.companionAds=[]),i.activeAd.companionAds.push({width:s.getWidth(),height:s.getHeight()}),e.innerHTML=s.getContent()}})},t.prototype.collectAdData=function(e){var t=e.getAd(),i={adTitle:t.getTitle(),adSystem:{name:t.getAdSystem()},mimeType:t.getContentType(),bitrate:t.getVastMediaBitrate&&t.getVastMediaBitrate()>0?t.getVastMediaBitrate():-1,wrapperAdIds:t.getWrapperAdIds(),adDescription:t.getDescription(),advertiser:{name:t.getAdvertiserName()},apiFramework:t.getApiFramework(),creative:{id:t.getCreativeId(),adId:t.getCreativeAdId(),universalAdId:{idRegistry:t.getUniversalAdIdRegistry(),value:t.getUniversalAdIdValue()}},dealId:t.getDealId(),minSuggestedDuration:t.isLinear?f.NON_SKIPPABLE_IDENTIFIER:t.getMinSuggestedDuration(),survey:{uri:t.getSurveyUrl()}};return Object.keys(i).forEach(function(e){var t="number"==typeof i[e],a=i[e]&&"object"==typeof i[e],r=a&&!Object.keys(i[e]).some(function(t){return Boolean(i[e][t])});(t&&i[e]<0||!t&&!i[e]||r)&&delete i[e]}),i},t.prototype.resetActiveAd=function(){this.activeAd&&this.activeAd.companionAds&&this.config.companionAdContainers().forEach(function(e){return e.innerHTML=""}),clearInterval(this.triggerTimeUpdateInterval),this.triggerTimeUpdateInterval=null,this.activeAd=null,this.isAdPlaying=!1,this.lastKnownAdPlaybackTime=null},t.prototype.onTimeChanged=function(e){var t=this;if(!this.isLinearAdActive()){this.hasContentStarted=!0,this.currentScheduleTime=e;var i=this.scheduledAdBreaks.filter(function(t){return t.preloadOffset&&!t.vastResponse&&t.scheduleTime-t.preloadOffset<=e}),a=this.scheduledAdBreaks.find(function(t){return t.scheduleTime<=e});i.forEach(function(e){return t.loadAdBreak(e)}),a&&this.loadAdBreak(a).then(function(){t.scheduledAdBreaks.includes(a)&&t.playAdBreak(a)})}},t.prototype.onSeek=function(e,t){var i=this.scheduledAdBreaks.filter(function(i){return i.scheduleTime>=e&&i.scheduleTime<=t});if(this.scheduledAdBreaks=this.scheduledAdBreaks.filter(function(e){return!i.includes(e)}),i.length>0){var a=this.config.strategy.shouldPlaySkippedAdBreaks(i,e,t);this.scheduledAdBreaks=this.scheduledAdBreaks.concat(a)}},t.prototype.onResize=function(e,t,i){if(this.adsManager&&(!this.activeAd||this.activeAd.isLinear)){var a=i?google.ima.ViewMode.FULLSCREEN:google.ima.ViewMode.NORMAL;this.adsManager.resize(e,t,a)}},t.prototype.onVolumeChanged=function(e){this.adsManager&&this.adsManager.setVolume(e/100)},t.prototype.beforeContent=function(){var e=this;return this.loadImaSdkPromise.then(function(){return e.isImaSdkAvailable?(e.deInitialize(),e.initialize(),e.scheduleAdBreaks["catch"](function(){}).then(function(){return e.playAllAdBreaksForOffset("pre")})):Promise.resolve()})},t.prototype.afterContent=function(){return this.isImaSdkAvailable?(this.activeAd&&!this.activeAd.isLinear&&(this.resetActiveAd(),this.activeAdBreak=null,this.adsManager.stop()),this.adsLoader.contentComplete(),this.playAllAdBreaksForOffset("post")):Promise.resolve()},t.prototype.isValidPassthroughMode=function(e){return Object.keys(k.ImaPassthroughMode).some(function(t){return e===k.ImaPassthroughMode[t]})},t.prototype.preProcessAdConfig=function(e){e.fallbackTags&&e.fallbackTags.length>0&&(e.fallbackTags=e.fallbackTags.filter(function(e){return!!e.url})),this.isValidPassthroughMode(e.passthroughMode)||(e.passthroughMode=k.ImaPassthroughMode.Vast);var t=e;return t.position?t.position=String(t.position).toLowerCase():t.position=f.DEFAULT_AD_BREAK_POSITION,"number"!=typeof t.preloadOffset&&(t.preloadOffset=f.DEFAULT_PRELOAD_OFFSET),t},t.prototype.schedule=function(e){var t=this;return this.scheduleAdBreaks=this.initializeImaSdkDeferred.promise.then(function(){if(!t.isImaSdkAvailable)return Promise.reject("The IMA SDK was not loaded and initialized properly");if(!e.tag)return Promise.reject("No ad tag was provided");if(!e.tag.url)return Promise.reject("No ad tag url was provided");if(!Object.keys(E.AdTagType).some(function(t){return e.tag.type===E.AdTagType[t]}))return Promise.reject("The provided ad tag type is invalid");var i=t.preProcessAdConfig(e);return t.extractSchedulableAdBreakConfigs(i).then(function(e){if(0===e.length&&i.fallbackTags&&i.fallbackTags.length>0)return i.tag=i.fallbackTags.shift(),t.schedule(i);var a=e.map(function(e){var i=s({},e.publicAdBreakConfig,{scheduleTime:t.player.parsePosition(e.publicAdBreakConfig.position)});return e.trackingEvents&&(i.trackingEvents=e.trackingEvents),i}),r=a.filter(function(e){return e.persistent});return t.scheduledAdBreaks=t.scheduledAdBreaks.concat(a),t.persistentAdBreaks=t.persistentAdBreaks.concat(r),t.scheduledAdBreaks.sort(n),t.persistentAdBreaks.sort(n),Promise.resolve(a)})})},t.prototype.extractSchedulableAdBreakConfigs=function(e){var t=this;return new Promise(function(i){if(e.tag.type===E.AdTagType.VMAP&&e.passthroughMode!==k.ImaPassthroughMode.VastAndVmap){var a=e.tag.url;e.tag.url=t.applyAdTagPlaceholders(e.tag.url),y.VmapExtractor.extractAdBreakConfigs(e).then(function(r){var n=r.adBreakConfigs,o=n.filter(function(e){return t.player.parsePosition(e.publicAdBreakConfig.position)>=t.currentScheduleTime});e.tag.url=a,t.player.metadataLoaded(e,r.downloadTiming),i(o)})["catch"](function(r){e.tag.url=a,r?t.player.onError(r.code,null,e):t.player.onError(v.VastErrorCode.UNDEFINED_ERROR,null,e),i([])})}else i([{publicAdBreakConfig:e}])})},t.prototype.playAllAdBreaksForOffset=function(e){var t=this;return this.initializeImaSdkDeferred.promise.then(function(){if(!t.isImaSdkAvailable)return Promise.resolve();var i;i="post"===e?t.scheduledAdBreaks.filter(function(t){return t.position.includes(e)||t.scheduleTime===1/0}):t.scheduledAdBreaks.filter(function(t){return t.position.includes(e)||0===t.scheduleTime});var a=Promise.resolve();return i.length>0&&(t.finishAllAdBreaksForPosition=new c.Deferred,a=t.finishAllAdBreaksForPosition.promise,i.forEach(function(e){return t.loadAdBreak(e).then(function(){return t.playAdBreak(e)})})),a})},t.prototype.loadAdBreak=function(e,t){var i=this,a=e.tag;if(t&&(e.vastResponse=null,a=t),e.vastResponse&&!t)return e.vastResponse;var r=this.applyAdTagPlaceholders(a.url);return e.passthroughMode!==k.ImaPassthroughMode.None?e.vastResponse=Promise.resolve({}):e.vastResponse=g.AdManifestHelper.downloadVastManifest(r).then(function(t){var a=t.manifest,r={manifest:g.AdManifestHelper.xmlToString(a)};return g.AdManifestHelper.parseAdVerifications(a).then(function(a){return a&&a.length>0&&(e.ads=[],a.forEach(function(t){t.verifications&&t.verifications.length>0&&e.ads.push({id:t.id,verifications:t.verifications})})),i.player.metadataLoaded(e,t.downloadTiming),Promise.resolve(r)})})["catch"](function(t){return i.tryNextFallbackAdTag(e)["catch"](function(){return delete e.currentFallbackIndex,t?i.player.onError(t.code,null,e):i.player.onError(v.VastErrorCode.UNDEFINED_ERROR,null,e),Promise.resolve({})})}),e.vastResponse},t.prototype.tryNextFallbackAdTag=function(e){return"number"!=typeof e.currentFallbackIndex?e.currentFallbackIndex=0:e.currentFallbackIndex++,e.fallbackTags&&e.fallbackTags[e.currentFallbackIndex]?this.loadAdBreak(e,e.fallbackTags[e.currentFallbackIndex]):Promise.reject()},t.prototype.playAdBreak=function(e){var t=this;this.scheduledAdBreaks.includes(e)&&this.scheduledAdBreaks.splice(this.scheduledAdBreaks.indexOf(e),1),this.initializeImaSdkDeferred.promise.then(function(){if(t.isImaSdkAvailable){if(t.activeAdBreak)return void t.queuedAdBreaks.push(e);t.activeAd&&!t.activeAd.isLinear&&t.adsManager&&(t.adsManager.stop(),t.resetActiveAd()),t.activeAdBreak=e,e.vastResponse&&e.vastResponse.then(function(i){i.manifest?t.passAdBreakToIma(e,g.AdManifestHelper.toDataUri(i.manifest)):t.passAdBreakToIma(e)})}})},t.prototype.getUrlFromAdBreak=function(e){return"number"==typeof e.currentFallbackIndex?e.fallbackTags[e.currentFallbackIndex].url:e.tag.url},t.prototype.passAdBreakToIma=function(e,t,i){var a=t||this.getUrlFromAdBreak(e);a&&this.requestAds(a,i)},t.prototype.requestAds=function(e,t){var i=new google.ima.AdsRequest,a=e,r="data:text/xml,",n=a.indexOf(r);0===n?i.adsResponse=decodeURIComponent(a.substring(r.length)):i.adTagUrl=this.applyAdTagPlaceholders(e),this.playerContainer&&(i.linearAdSlotWidth=this.playerContainer.clientWidth,i.linearAdSlotHeight=this.playerContainer.clientHeight,i.nonLinearAdSlotWidth=this.playerContainer.clientWidth),i.nonLinearAdSlotHeight=150,this.isFallbackAd=t,this.passthroughDownloadTime=Date.now(),this.adsLoader.requestAds(i)},t.prototype.applyAdTagPlaceholders=function(e){var t=this,i={playbackTime:String(this.player.getVideoElement().currentTime),height:String(this.playerContainer.clientHeight),width:String(this.playerContainer.clientWidth),domain:encodeURIComponent(document.location.hostname),page:encodeURIComponent(document.location.href),referrer:encodeURIComponent(document.referrer),random:Math.floor(1e7+9e7*Math.random()).toString(),timestamp:String(Date.now())};return Object.keys(this.config.placeholders).forEach(function(a){t.config.placeholders[a].forEach(function(t){e=e.replace(t,i[a])})}),e},t.prototype.list=function(){return this.queuedAdBreaks.concat(this.scheduledAdBreaks)},t.prototype.getActiveAdBreak=function(){return this.activeAdBreak},t.prototype.getActiveAd=function(){return this.activeAd},t.prototype.isLinearAdActive=function(e){return!!this.activeAd&&(e?Boolean(this.activeAd.isLinear)&&this.isAdPlaying:Boolean(this.activeAd.isLinear))},t.prototype.discardAdBreak=function(e){e&&(this.activeAdBreak&&this.activeAdBreak.id===e&&(this.onSkipped(),this.activeAdBreak=null,this.adsManager.stop()),this.scheduledAdBreaks=this.scheduledAdBreaks.filter(function(t){return t.id!==e}),this.queuedAdBreaks=this.queuedAdBreaks.filter(function(t){return t.id!==e}))},t.prototype.currentTime=function(){return!isFinite(this.currentDuration)||!this.adsManager||this.adsManager.getRemainingTime()<0?NaN:this.currentDuration-this.adsManager.getRemainingTime()},t.prototype.duration=function(){return isFinite(this.currentDuration)?this.currentDuration:0},t.prototype.pause=function(){this.adsManager&&this.adsManager.pause()},t.prototype.resume=function(){this.adsManager&&this.adsManager.resume()},t.prototype.skip=function(){this.adsManager&&(this.adsManager.skip(),this.activeAd&&!this.activeAd.isLinear&&(this.adsManager.stop(),this.adContainer.style.display="none",this.resetActiveAd()))},t.prototype.getModuleInfo=function(){return{name:t.MODULE_NAME,version:t.MODULE_VERSION}},t.prototype.deInitialize=function(){var e=this.scheduledAdBreaks;this.reset(!1),this.scheduledAdBreaks=e,this.cleanUpImaSdk(),this.initializeImaSdkDeferred=new c.Deferred},t.prototype.reset=function(e){void 0===e&&(e=!0),this.adPlaybackApiPromise=null,this.adPlaybackReporterPromise=null,this.getActiveAdBreak()&&this.adsManager.stop(),this.resetActiveAd(),this.scheduledAdBreaks=this.persistentAdBreaks,this.queuedAdBreaks=[],this.currentScheduleTime=0,this.currentDuration=null,this.activeAdBreak=null,this.hasContentStarted=!1,this.isFallbackAd=!1,this.passthroughDownloadTime=null,e&&(this.scheduleAdBreaks=Promise.resolve(null))},t.prototype.cleanUpImaSdk=function(){this.adsLoader&&(this.adsLoader.removeEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,this.onAdError),this.adsLoader.removeEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,this.onAdsManagerLoaded),this.adsLoader.destroy(),this.adsLoader=null),this.adsManager&&(this.adsManager.removeEventListener(google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED,this.onContentPauseRequested),this.adsManager.removeEventListener(google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED,this.onContentResumeRequested),this.adsManager.removeEventListener(google.ima.AdEvent.Type.STARTED,this.onStarted),this.adsManager.removeEventListener(google.ima.AdEvent.Type.LOADED,this.onLoaded),this.adsManager.removeEventListener(google.ima.AdEvent.Type.SKIPPED,this.onSkipped),this.adsManager.removeEventListener(google.ima.AdEvent.Type.COMPLETE,this.onComplete),this.adsManager.removeEventListener(google.ima.AdEvent.Type.PAUSED,this.onPaused),this.adsManager.removeEventListener(google.ima.AdEvent.Type.RESUMED,this.onResumed),this.adsManager.removeEventListener(google.ima.AdEvent.Type.CLICK,this.onClicked),this.adsManager.removeEventListener(google.ima.AdEvent.Type.DURATION_CHANGE,this.onDurationChange),this.adsManager.removeEventListener(google.ima.AdEvent.Type.FIRST_QUARTILE,this.onFirstQuartile),this.adsManager.removeEventListener(google.ima.AdEvent.Type.MIDPOINT,this.onMidpoint),this.adsManager.removeEventListener(google.ima.AdEvent.Type.THIRD_QUARTILE,this.onThirdQuartile),this.adsManager.removeEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,this.onAdError),this.adsManager.destroy(),this.adsManager=null),this.adDisplayContainer&&(this.adDisplayContainer.destroy(),this.adDisplayContainer=null),this.adsRenderingSettings=null},t.prototype.dispose=function(){this.resetActiveAd(),this.cleanUpImaSdk(),this.playerContainer&&this.playerContainer.removeChild(this.adContainer),this.adContainer=null,this.activeAdBreak=null,this.activeAd=null},t.imaMarker=function(){},t.MODULE_NAME="advertising-ima",t.MODULE_VERSION=d.Environment.VERSION_NUMBER,t.TIMEUPDATE_INTERVAL=250,t}(m.AdvertisingModule);t.ImaModule=I},265:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=i(0),r=i(86);t.ImaPassthroughMode=r.ImaPassthroughMode;var n=i(142),o=i(87);t.ImaModuleErrorCode=o.ImaModuleErrorCode,t.AdvertisingImaModuleDefinition={name:a.ModuleName.Advertising,module:function(){return n.ImaModule},dependencies:[a.ModuleName.AdvertisingCore],exports:{ImaModuleErrorCode:o.ImaModuleErrorCode,ImaPassthroughMode:r.ImaPassthroughMode}},t["default"]=t.AdvertisingImaModuleDefinition},86:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a;!function(e){e.None="none",e.Vast="vast",e.VastAndVmap="vastandvmap"}(a=t.ImaPassthroughMode||(t.ImaPassthroughMode={}))},87:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a;!function(e){e[e.FAILED_TO_REQUEST_IMA_SDK=103]="FAILED_TO_REQUEST_IMA_SDK",e[e.FAILED_TO_REQUEST_ADS=1005]="FAILED_TO_REQUEST_ADS",e[e.VAST_ASSET_NOT_FOUND=1007]="VAST_ASSET_NOT_FOUND",e[e.VAST_EMPTY_RESPONSE=1009]="VAST_EMPTY_RESPONSE",e[e.UNKNOWN_AD_RESPONSE=1010]="UNKNOWN_AD_RESPONSE",e[e.UNSUPPORTED_LOCALE=1011]="UNSUPPORTED_LOCALE",e[e.ADS_REQUEST_NETWORK_ERROR=1012]="ADS_REQUEST_NETWORK_ERROR",e[e.INVALID_AD_TAG=1013]="INVALID_AD_TAG",e[e.STREAM_INITIALIZATION_FAILED=1020]="STREAM_INITIALIZATION_FAILED",e[e.ASSET_FALLBACK_FAILED=1021]="ASSET_FALLBACK_FAILED",e[e.INVALID_ARGUMENTS=1101]="INVALID_ARGUMENTS",e[e.AUTOPLAY_DISALLOWED=1205]="AUTOPLAY_DISALLOWED"}(a=t.ImaModuleErrorCode||(t.ImaModuleErrorCode={}))}},[265])}); })();