(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.videojsContribAds=f()}})(function(){var define,module,exports;return(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o0){currentTime=player.currentTime()-player.seekable().end(0);}else{currentTime=player.currentTime();}}else{currentTime=player.currentTime();} var tech=player.$('.vjs-tech');var tracks=player.remoteTextTracks?player.remoteTextTracks():[];var suppressedTracks=[];var snapshot={ended:player.ended(),currentSrc:player.currentSrc(),src:player.src(),currentTime:currentTime,type:player.currentType()};if(tech){snapshot.nativePoster=tech.poster;snapshot.style=tech.getAttribute('style');} for(var i=tracks.length;i>0;i--){var track=tracks[i];suppressedTracks.push({track:track,mode:track.mode});track.mode='disabled';} snapshot.suppressedTracks=suppressedTracks;return snapshot;};snapshot.restorePlayerSnapshot=function(player,snapshot){if(player.ads.disableNextSnapshotRestore===true){player.ads.disableNextSnapshotRestore=false;return;} var tech=player.$('.vjs-tech');var attempts=20;var suppressedTracks=snapshot.suppressedTracks;var trackSnapshot=void 0;var restoreTracks=function restoreTracks(){for(var i=suppressedTracks.length;i>0;i--){trackSnapshot=suppressedTracks[i];trackSnapshot.track.mode=trackSnapshot.mode;}};var resume=function resume(){var currentTime=void 0;if(_video2.default.browser.IS_IOS&&player.ads.isLive(player)){if(snapshot.currentTime<0){if(player.seekable().length>0){currentTime=player.seekable().end(0)+snapshot.currentTime;}else{currentTime=player.currentTime();} player.currentTime(currentTime);}}else{player.currentTime(snapshot.ended?player.duration():snapshot.currentTime);} if(!snapshot.ended){player.play();}};var tryToResume=function tryToResume(){player.off('contentcanplay',tryToResume);if(player.ads.tryToResumeTimeout_){player.clearTimeout(player.ads.tryToResumeTimeout_);player.ads.tryToResumeTimeout_=null;} tech=player.el().querySelector('.vjs-tech');if(tech.readyState>1){return resume();} if(tech.seekable===undefined){return resume();} if(tech.seekable.length>0){return resume();} if(attempts--){window.setTimeout(tryToResume,50);}else{try{resume();}catch(e){_video2.default.log.warn('Failed to resume the content after an advertisement',e);}}};if(snapshot.nativePoster){tech.poster=snapshot.nativePoster;} if('style'in snapshot){tech.setAttribute('style',snapshot.style||'');} if(player.ads.videoElementRecycled()){player.one('contentloadedmetadata',restoreTracks);player.src({src:snapshot.currentSrc,type:snapshot.type});player.load();player.one('contentcanplay',tryToResume);player.ads.tryToResumeTimeout_=player.setTimeout(tryToResume,2000);}else if(!player.ended()||!snapshot.ended){restoreTracks();player.play();}};module.exports=snapshot;}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],6:[function(require,module,exports){(function(global){'use strict';var _video=(typeof window!=="undefined"?window['videojs']:typeof global!=="undefined"?global['videojs']:null);var _video2=_interopRequireDefault(_video);var _redispatch=require('./redispatch.js');var _redispatch2=_interopRequireDefault(_redispatch);var _snapshot=require('./snapshot.js');var _snapshot2=_interopRequireDefault(_snapshot);var _contentupdate=require('./contentupdate.js');var _contentupdate2=_interopRequireDefault(_contentupdate);var _cancelContentPlay=require('./cancelContentPlay.js');var _cancelContentPlay2=_interopRequireDefault(_cancelContentPlay);var _macros=require('./macros.js');var _macros2=_interopRequireDefault(_macros);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} var VIDEO_EVENTS=_video2.default.getComponent('Html5').Events;var removeNativePoster=function removeNativePoster(player){var tech=player.$('.vjs-tech');if(tech){tech.removeAttribute('poster');}};var defaults={timeout:5000,prerollTimeout:100,postrollTimeout:100,debug:false,stitchedAds:false};var contribAdsPlugin=function contribAdsPlugin(options){var player=this;var settings=_video2.default.mergeOptions(defaults,options);var videoEvents=VIDEO_EVENTS.concat(['firstplay','loadedalldata','playing']);player.on(videoEvents,_redispatch2.default);player.on(['pause','ended'],function(){if(player.ads.state==='content-resuming'&&player.ads.snapshot&&player.ads.snapshot.ended){player.addClass('vjs-has-started');}});player.on(['addurationchange','adcanplay'],function(){if(player.currentSrc()===player.ads.snapshot.currentSrc){return;} player.play();});player.on('nopreroll',function(){player.ads.nopreroll_=true;});player.on('nopostroll',function(){player.ads.nopostroll_=true;});player.on(['ads-ad-started','playing'],function(){player.removeClass('vjs-ad-loading');});player.ads={state:'content-set',disableNextSnapshotRestore:false,VERSION:'4.1.1',startLinearAdMode:function startLinearAdMode(){if(player.ads.state==='preroll?'||player.ads.state==='content-playback'||player.ads.state==='postroll?'){player.trigger('adstart');}},endLinearAdMode:function endLinearAdMode(){if(player.ads.state==='ad-playback'){player.trigger('adend');player.removeClass('vjs-ad-loading');}},skipLinearAdMode:function skipLinearAdMode(){if(player.ads.state!=='ad-playback'){player.trigger('adskip');}},stitchedAds:function stitchedAds(arg){if(arg!==undefined){this._stitchedAds=!!arg;} return this._stitchedAds;},videoElementRecycled:function videoElementRecycled(){var srcChanged=void 0;var currentSrcChanged=void 0;if(!this.snapshot){throw new Error('You cannot use videoElementRecycled while there is no snapshot.');} srcChanged=player.src()!==this.snapshot.src;currentSrcChanged=player.currentSrc()!==this.snapshot.currentSrc;return srcChanged||currentSrcChanged;},isLive:function isLive(somePlayer){if(somePlayer.duration()===Infinity){return true;}else if(_video2.default.browser.IOS_VERSION==='8'&&somePlayer.duration()===0){return true;} return false;},shouldPlayContentBehindAd:function shouldPlayContentBehindAd(somePlayer){return!_video2.default.browser.IS_IOS&&!_video2.default.browser.IS_ANDROID&&somePlayer.duration()===Infinity;}};player.ads.stitchedAds(settings.stitchedAds);player.ads.adMacroReplacement=_macros2.default.bind(player);(0,_contentupdate2.default)(player);var states={'content-set':{events:{adscanceled:function adscanceled(){this.state='content-playback';},adsready:function adsready(){this.state='ads-ready';},play:function play(){this.state='ads-ready?';(0,_cancelContentPlay2.default)(player);removeNativePoster(player);},adserror:function adserror(){this.state='content-playback';},adskip:function adskip(){this.state='content-playback';}}},'ads-ready':{events:{play:function play(){this.state='preroll?';(0,_cancelContentPlay2.default)(player);},adskip:function adskip(){this.state='content-playback';},adserror:function adserror(){this.state='content-playback';}}},'preroll?':{enter:function enter(){if(player.ads.nopreroll_){player.trigger('readyforpreroll');window.setTimeout(function(){player.trigger('nopreroll');},1);}else{player.addClass('vjs-ad-loading');player.ads.adTimeoutTimeout=window.setTimeout(function(){player.trigger('adtimeout');},settings.prerollTimeout);player.trigger('readyforpreroll');}},leave:function leave(){window.clearTimeout(player.ads.adTimeoutTimeout);},events:{play:function play(){(0,_cancelContentPlay2.default)(player);},adstart:function adstart(){this.state='ad-playback';},adskip:function adskip(){this.state='content-playback';},adtimeout:function adtimeout(){this.state='content-playback';},adserror:function adserror(){this.state='content-playback';},nopreroll:function nopreroll(){this.state='content-playback';}}},'ads-ready?':{enter:function enter(){player.addClass('vjs-ad-loading');player.ads.adTimeoutTimeout=window.setTimeout(function(){player.trigger('adtimeout');},settings.timeout);},leave:function leave(){window.clearTimeout(player.ads.adTimeoutTimeout);player.removeClass('vjs-ad-loading');},events:{play:function play(){(0,_cancelContentPlay2.default)(player);},adscanceled:function adscanceled(){this.state='content-playback';},adsready:function adsready(){this.state='preroll?';},adskip:function adskip(){this.state='content-playback';},adtimeout:function adtimeout(){this.state='content-playback';},adserror:function adserror(){this.state='content-playback';}}},'ad-playback':{enter:function enter(){if(!player.ads.shouldPlayContentBehindAd(player)){this.snapshot=_snapshot2.default.getPlayerSnapshot(player);} if(player.ads.shouldPlayContentBehindAd(player)){this.preAdVolume_=player.volume();player.volume(0);} player.addClass('vjs-ad-playing');removeNativePoster(player);if(player.ads.cancelPlayTimeout){window.setTimeout(function(){window.clearTimeout(player.ads.cancelPlayTimeout);player.ads.cancelPlayTimeout=null;},1);}},leave:function leave(){player.removeClass('vjs-ad-playing');if(!player.ads.shouldPlayContentBehindAd(player)){_snapshot2.default.restorePlayerSnapshot(player,this.snapshot);} if(player.ads.shouldPlayContentBehindAd(player)){player.volume(this.preAdVolume_);}},events:{adend:function adend(){this.state='content-resuming';},adserror:function adserror(){this.state='content-resuming';player.trigger('adend');}}},'content-resuming':{enter:function enter(){if(this.snapshot&&this.snapshot.ended){window.clearTimeout(player.ads._fireEndedTimeout);player.ads._fireEndedTimeout=window.setTimeout(function(){player.trigger('ended');},1000);}},leave:function leave(){window.clearTimeout(player.ads._fireEndedTimeout);},events:{contentupdate:function contentupdate(){this.state='content-set';},contentresumed:function contentresumed(){this.state='content-playback';},playing:function playing(){this.state='content-playback';},ended:function ended(){this.state='content-playback';}}},'postroll?':{enter:function enter(){this.snapshot=_snapshot2.default.getPlayerSnapshot(player);if(player.ads.nopostroll_){window.setTimeout(function(){player.ads.state='content-resuming';player.trigger('ended');},1);}else{player.addClass('vjs-ad-loading');player.ads.adTimeoutTimeout=window.setTimeout(function(){player.trigger('adtimeout');},settings.postrollTimeout);}},leave:function leave(){window.clearTimeout(player.ads.adTimeoutTimeout);player.removeClass('vjs-ad-loading');},events:{adstart:function adstart(){this.state='ad-playback';},adskip:function adskip(){this.state='content-resuming';window.setTimeout(function(){player.trigger('ended');},1);},adtimeout:function adtimeout(){this.state='content-resuming';window.setTimeout(function(){player.trigger('ended');},1);},adserror:function adserror(){this.state='content-resuming';window.setTimeout(function(){player.trigger('ended');},1);},contentupdate:function contentupdate(){this.state='ads-ready?';}}},'content-playback':{enter:function enter(){if(player.ads.cancelPlayTimeout){window.clearTimeout(player.ads.cancelPlayTimeout);player.ads.cancelPlayTimeout=null;} player.trigger({type:'contentplayback',triggerevent:player.ads.triggerevent});if(player.ads.cancelledPlay){player.ads.cancelledPlay=false;if(player.paused()){player.play();}}},events:{adsready:function adsready(){player.trigger('readyforpreroll');},adstart:function adstart(){this.state='ad-playback';},contentupdate:function contentupdate(){if(player.paused()){this.state='content-set';}else{this.state='ads-ready?';} if(this.snapshot&&this.snapshot.ended){this.snapshot=null;}},contentended:function contentended(){if(player.ads.snapshot&&player.ads.snapshot.ended){return;} this.state='postroll?';},play:function play(){if(player.currentSrc()!==player.ads.contentSrc){(0,_cancelContentPlay2.default)(player);}}}}};var processEvent=function processEvent(event){var state=player.ads.state;var eventHandlers=states[state].events;if(eventHandlers){var handler=eventHandlers[event.type];if(handler){handler.apply(player.ads);}} if(state!==player.ads.state){var previousState=state;var newState=player.ads.state;player.ads.triggerevent=event.type;if(states[previousState].leave){states[previousState].leave.apply(player.ads);} if(states[newState].enter){states[newState].enter.apply(player.ads);} if(settings.debug){_video2.default.log('ads',player.ads.triggerevent+' triggered: '+previousState+' -> '+newState);}}};player.on(VIDEO_EVENTS.concat(['adtimeout','contentupdate','contentplaying','contentended','contentresumed','adstart','adend','adskip','adsready','adserror','adscanceled','nopreroll']),processEvent);if(!player.paused()){processEvent({type:'play'});}};_video2.default.plugin('ads',contribAdsPlugin);}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./cancelContentPlay.js":1,"./contentupdate.js":2,"./macros.js":3,"./redispatch.js":4,"./snapshot.js":5}]},{},[6])(6)});