/*! * artplayer-plugin-vast.js v2.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2026 Harvey Zhao * Released under the MIT License. */ !function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.artplayerPluginVast=e(),define(function(){return t.artplayerPluginVast})):(t="undefined"!==typeof globalThis?globalThis:t||self).artplayerPluginVast=e()}(this,function(){"use strict";var t=null,e=function(){t=null};function i(t,e,i){return e&&function(t,e){for(var i=0;it.length)&&(e=t.length);for(var i=0,n=new Array(e);i-1&&(f(this,Q)[Q].splice(e,1),this.g(f(this,Q)[Q]))},n.resizeAd=function(t,e){f(this,j)[j]=t,f(this,N)[N]=e,f(this,M)[M]&&f(this,M)[M].resize(t,e,this.k()),f(this,_)[_].style.width=t+"px",f(this,_)[_].style.height=e+"px"},n.reset=function(t){void 0===t&&(t=!1),t&&(f(this,F)[F]=!1,f(this,G)[G]=!1,f(this,W)[W]=!1),this.C(),f(this,Q)[Q]=[],f(this,Z)[Z]=!1,f(this,K)[K]=void 0,f(this,M)[M]&&f(this,M)[M].destroy(),f(this,M)[M]=void 0,f(this,I)[I].settings.setAutoPlayAdBreaks(!0),t&&this.P(),f(this,_)[_].style.display="none"},n.P=function(){f(this,U)[U]&&(f(this,U)[U].removeEventListener(f(this,I)[I].AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,this.u,!1),f(this,U)[U].removeEventListener(f(this,I)[I].AdErrorEvent.Type.AD_ERROR,this.l,!1),f(this,U)[U].destroy()),f(this,L)[L]&&f(this,L)[L].destroy()},n.destroy=function(){var t,e,i,n,r=this;this.reset(!0),f(this,C)[C].destroy(),T.forEach(function(t){f(r,D)[D].removeEventListener(t,r.o)}),null==(t=f(this,U)[U])||t.removeEventListener(f(this,I)[I].AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,this.u,!1),null==(e=f(this,L)[L])||e.destroy(),null==(i=f(this,U)[U])||i.destroy(),f(this,F)[F]=!1,f(this,W)[W]=!1,f(this,G)[G]=!1,null==(n=f(this,B)[B])||n.disconnect()},n.isCustomPlaybackUsed=function(){return!1===f(this,I)[I].settings.getDisableCustomPlaybackForIOS10Plus()&&!f(this,_)[_].querySelector("video")},n.C=function(){window.clearTimeout(f(this,Y)[Y]),window.clearTimeout(f(this,X)[X]),f(this,Y)[Y]=void 0,f(this,X)[X]=void 0,f(this,V)[V]=void 0,f(this,q)[q]=void 0,f(this,$)[$]=void 0,f(this,_)[_].style.display="none",f(this,_)[_].classList.remove("nonlinear"),f(this,M)[M]&&this.R()},n.o=function(t){var e=this;if(f(this,C)[C].enabled||"volumechange"===t.type){if("timeupdate"===t.type){if(f(this,M)[M]){var i=f(this,M)[M].getCuePoints().filter(function(t){return t>=0&&t=.5&&(this.dispatchEvent(new A(P.MEDIA_IMPRESSION)),f(this,F)[F]=!0)}if("play"!==t.type||f(this,G)[G]||f(this,H)[H]||(this.dispatchEvent(new A(P.MEDIA_START)),f(this,G)[G]=!0),"ended"===t.type&&(this.isCustomPlaybackUsed()&&f(this,D)[D].currentTime===f(this,D)[D].duration&&f(this,Q)[Q].indexOf(-1)>-1&&(f(this,D)[D].currentTime=f(this,D)[D].duration-1e-5,f(this,W)[W]=!0),f(this,U)[U].contentComplete(),f(this,M)[M]||this.T()),!window.ResizeObserver&&f(this,z)[z].autoResize&&"loadedmetadata"===t.type){var n=f(this,D)[D],r=n.offsetHeight,s=n.offsetWidth;f(this,j)[j]=s,f(this,N)[N]=r,this.R()}f(this,H)[H]&&"volumechange"!==t.type||this.dispatchEvent(new A(t.type))}},n.S=function(t){var e=this,i=f(this,I)[I].AdEvent;switch(t.type){case i.Type.LOADED:var n=t.getAd();f(this,K)[K]&&0===f(this,Q)[Q].length?f(this,K)[K]({ad:n,start:function(){e.M(),f(e,K)[K]=void 0},startWithoutReset:function(){e.M()}}):f(this,x)[x]=n;break;case i.Type.AD_BREAK_READY:this.C(),f(this,K)[K]?(f(this,K)[K]({ad:f(this,x)[x],adBreakTime:t.getAdData().adBreakTime,start:function(){e.M(),f(e,K)[K]=void 0},startWithoutReset:function(){e.M()}}),f(this,x)[x]=void 0):this.M();break;case i.Type.STARTED:var r=f(this,V)[V]=t.getAd();r.getAdPodInfo().getAdPosition()>1&&f(this,M)[M].setVolume(f(this,M)[M].getVolume()),f(this,_)[_].classList.remove("nonlinear"),this.R(),r.isLinear()?(f(this,C)[C].disable(),f(this,$)[$]=r.getDuration(),f(this,q)[q]=0):(f(this,_)[_].classList.add("nonlinear"),this.I()),f(this,_)[_].style.display="",f(this,Z)[Z]&&(f(this,Z)[Z]=!1,f(this,M)[M].pause());break;case i.Type.ALL_ADS_COMPLETED:if(f(this,W)[W])return;this.isCustomPlaybackUsed()&&Boolean(f(this,V)[V])&&-1!==f(this,V)[V].getAdPodInfo().getTimeOffset()&&this.I(),this.reset();break;case i.Type.CONTENT_PAUSE_REQUESTED:this.C(),f(this,V)[V]=t.getAd(),f(this,_)[_].style.display="",f(this,D)[D].pause(),this.R(),f(this,V)[V]&&this.A(f(this,V)[V].getAdPodInfo().getTimeOffset()),f(this,M)[M].setVolume(f(this,D)[D].muted?0:f(this,D)[D].volume),f(this,C)[C].disable(),f(this,$)[$]=f(this,V)[V].getDuration(),f(this,q)[q]=0;break;case i.Type.CONTENT_RESUME_REQUESTED:var s=Boolean(f(this,V)[V]);if(s){var o=f(this,M)[M].getVolume();f(this,D)[D].muted=0===o,f(this,D)[D].volume=f(this,J)[J]}f(this,W)[W]&&(f(this,D)[D].currentTime=f(this,D)[D].duration+1,f(this,W)[W]=!1),f(this,D)[D].ended?(this.reset(),this.T()):this.C(),s&&(f(this,Z)[Z]=!1,this.I());break;case i.Type.AD_METADATA:this.g(f(this,M)[M].getCuePoints()),-1===f(this,Q)[Q].indexOf(0)&&(f(this,K)[K]?f(this,K)[K]({start:function(){e.I(),f(e,K)[K]=void 0},startWithoutReset:function(){e.I()}}):this.I());break;case i.Type.AD_PROGRESS:var a=t.getAdData();f(this,q)[q]=a.currentTime,f(this,$)[$]=a.duration;break;case i.Type.LOG:var u=t.getAdData();f(this,K)[K]?f(this,K)[K]({start:function(){e.I(),f(e,K)[K]=void 0},startWithoutReset:function(){e.I()}}):u.adError&&!f(this,V)[V]&&this.I();break;case i.Type.VOLUME_CHANGED:var d=f(this,M)[M].getVolume();d>0&&(f(this,J)[J]=d)}},n.l=function(t){this.j(this.B(t))},n.u=function(t){var e=this,i=f(this,I)[I],n=i.AdEvent,r=i.AdErrorEvent.Type.AD_ERROR;window.clearTimeout(f(this,Y)[Y]);var s=f(this,M)[M]=t.getAdsManager(f(this,C)[C],f(this,k)[k]);Object.keys(n.Type).forEach(function(t){s.addEventListener(n.Type[t],function(i){if(e.S(i),P[t]){var n=["LOG","AD_PROGRESS"].indexOf(t)>-1;e.dispatchEvent(new A(P[t],{detail:{ad:i.getAd()||f(e,V)[V],adData:n?i.getAdData():{}}}))}})}),s.addEventListener(r,function(t){return e.j(e.B(t))});try{var o;s.init(f(this,j)[j],f(this,N)[N],this.k()),s.setVolume(f(this,D)[D].muted?0:f(this,D)[D].volume),null==(o=f(this,L)[L])||o.initialize(),f(this,K)[K]||this.M()}catch(a){this.j(new S(a.message))}},n.M=function(){if(f(this,G)[G]||(this.dispatchEvent(new A(P.MEDIA_START)),f(this,G)[G]=!0),f(this,M)[M])try{f(this,M)[M].start()}catch(t){this.j(new S(t.message))}else this.I()},n.T=function(){var t=this;setTimeout(function(){f(t,F)[F]=!1,f(t,G)[G]=!1,f(t,W)[W]=!1,t.dispatchEvent(new A(P.MEDIA_STOP))},1)},n.v=function(t){for(var e,i=function(t){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(e)return(e=e.call(t)).next.bind(e);if(Array.isArray(t)||(e=function(t,e){if(t){if("string"==typeof t)return h(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?h(t,e):void 0}}(t))){e&&(t=e);var i=0;return function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(t);!(e=i()).done;){var n=e.value;n.contentBoxSize&&1===n.contentBoxSize.length?(f(this,j)[j]=n.contentBoxSize[0].inlineSize,f(this,N)[N]=n.contentBoxSize[0].blockSize):n.contentBoxSize&&n.contentBoxSize.inlineSize?(f(this,j)[j]=n.contentBoxSize.inlineSize,f(this,N)[N]=n.contentBoxSize.blockSize):(f(this,j)[j]=n.contentRect.width,f(this,N)[N]=n.contentRect.height)}this.R()},n.R=function(){if(f(this,z)[z].autoResize&&f(this,M)[M]){var t=f(this,V)[V],e=this.k();t&&!t.isLinear()?t&&(t.getWidth()>f(this,j)[j]||t.getHeight()>f(this,N)[N]?this.resizeAd(f(this,j)[j],f(this,N)[N]):(f(this,M)[M].resize(t.getWidth(),t.getHeight()+20,e),f(this,_)[_].style.width=t.getWidth()+"px",f(this,_)[_].style.height=t.getHeight()+20+"px")):this.resizeAd(f(this,j)[j],f(this,N)[N])}},n.k=function(){return document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||f(this,D)[D].webkitDisplayingFullscreen?f(this,I)[I].ViewMode.FULLSCREEN:f(this,I)[I].ViewMode.NORMAL},n.I=function(){var t=this;f(this,_)[_].style.display="none",f(this,D)[D].ended||(f(this,C)[C].enable(),f(this,Z)[Z]?(f(this,D)[D].pause(),this.dispatchEvent(new A("pause"))):(this.p().then(function(){}).catch(function(){t.dispatchEvent(new A("pause"))}),this.dispatchEvent(new A("play")),this.dispatchEvent(new A(P.MEDIA_RESUMED))),f(this,Z)[Z]=!1)},n.B=function(t){var e=t.getError(),i=new S(e.getMessage());return i.type=e.getType(),i.errorCode=e.getErrorCode(),i.vastErrorCode=e.getVastErrorCode&&e.getVastErrorCode(),i.innerError=e.getInnerError(),i},n.j=function(t){var e=this;this.dispatchEvent(new A(P.AD_ERROR,{detail:{error:t}})),this.C(),f(this,K)[K]?f(this,K)[K]({start:function(){e.I(),f(e,K)[K]=void 0},startWithoutReset:function(){e.I()}}):this.I()},i(e,[{key:"volume",get:function(){return!f(this,C)[C].enabled&&f(this,M)[M]?f(this,M)[M].getVolume():f(this,D)[D].volume},set:function(t){!f(this,C)[C].enabled&&f(this,M)[M]&&f(this,M)[M].setVolume(t),f(this,D)[D].volume=t}},{key:"muted",get:function(){return!f(this,C)[C].enabled&&f(this,M)[M]?0===f(this,M)[M].getVolume():f(this,D)[D].muted},set:function(t){!f(this,C)[C].enabled&&f(this,M)[M]&&f(this,M)[M].setVolume(t?0:f(this,J)[J]),f(this,D)[D].muted=t}},{key:"currentTime",get:function(){return void 0!==f(this,q)[q]?f(this,q)[q]:f(this,D)[D].currentTime},set:function(t){f(this,C)[C].enabled&&(f(this,D)[D].currentTime=t)}},{key:"duration",get:function(){return void 0!==f(this,$)[$]?f(this,$)[$]:f(this,D)[D].duration}},{key:"cuePoints",get:function(){return[].concat(f(this,Q)[Q])}}]),e}(w);let it=0;function nt(t,e){const i=t.createElement("div");return i.id=`${e?"art-vast-":"art-"}${Date.now()}-${++it}`,t.setStyles(i,{position:"absolute",inset:"0",width:"100%",height:"100%",zIndex:"150",display:"none"}),e&&t.setStyles(i,{backgroundColor:"black",pointerEvents:"auto"}),i}function rt(i,n={}){const r=n.compatibility;if(void 0!==r&&"workspace-1.2"!==r)throw new TypeError("Unsupported VAST compatibility mode");const s="workspace-1.2"===r;return async n=>{let r,o=!1;const a=()=>o||n.isDestroy,u={name:"artplayerPluginVast",destroy:()=>r?.destroy()};function d(){if(!o){o=!0;try{n.off("destroy",d)}finally{r?.destroy()}}}if(a())return u;n.on("destroy",d);try{if(a())return u;const o=await function(){var i=window;return i.google&&i.google.ima?Promise.resolve(i.google.ima):t||((t=new Promise(function(t,e){var i=document.createElement("script");i.async=!0,i.src="https://imasdk.googleapis.com/js/sdkloader/ima3.js",i.onload=t,i.onerror=e,document.body.appendChild(i)}).then(function(){return i.google.ima})).then(e).catch(e),t)}();if(a())return u;const h=n.constructor.utils;return r=function(t,e,i,n,r){const{$video:s,$player:o}=t.template,a=new e.AdsRenderingSettings;r&&(a.restoreCustomPlaybackStateOnAdBreakComplete=!0,a.enablePreloading=!0);const u=new R;let d=null,h=!1,l=0;const c={art:t,playUrl:(t,e={})=>y("adTagUrl",t,e),playRes:(t,e={})=>y("adsResponse",t,e),init:v,ima:e,adsRenderingSettings:a,playerOptions:u,imaPlayer:null,id:null,$container:null,get container(){return d?.container||null}};r&&Object.defineProperties(c,{imaPlayer:{get:()=>d?.player||null},id:{get:()=>d?.container.id||null},$container:{get:()=>d?.container||null}});const f=t=>d===t&&!t.released&&!n();function p(t){d===t&&(d=null),t.released=!0,t.playing=!1;const e=t.player;t.player=null;const i=t.listeners.splice(0);let n,r=!1;const s=t=>{try{t()}catch(e){r?console.error("VAST cleanup error:",e):(r=!0,n=e)}};l++;try{if(e){for(const[t,n]of i)s(()=>e.removeEventListener(t,n));s(()=>e.destroy())}s(()=>{t.container.parentNode&&t.container.parentNode.removeChild(t.container)})}finally{l--}if(r)throw n}function v(){if(n()||l)return null;if(h)throw new Error("VAST initialization is already in progress");if(d?.player)return d.player;let t;h=!0;try{if(t={container:nt(i,r),player:null,listeners:[],playing:!1,released:!1},d=t,!f(t))return p(t),null;if(o.appendChild(t.container),!f(t))return p(t),null;if(t.player=new et(e,s,t.container,a,u),!f(t))return p(t),null;const n=t,h=r?[["AdContentPauseRequested",!0],["AdContentResumeRequested",!1],["AdStarted",!0],["AdError",!1]]:[];for(const[e,i]of h){const r=t=>{f(n)&&("AdError"===e&&console.error("VAST Ad Error:",t.detail),n.playing=i,n.container.style.display=i?"block":"none")};if(t.listeners.push([e,r]),t.player.addEventListener(e,r),!f(t))return p(t),null}return r||Object.defineProperties(c,{imaPlayer:{value:t.player},id:{value:t.container.id},$container:{value:t.container}}),t.player}catch(v){if(t)try{p(t)}catch(y){console.error("VAST cleanup error:",y)}throw v}finally{h=!1}}function y(t,i,s){if(n()||r&&d?.playing)return;const o=v(),a=d;if(!o||!a)return;const u=function(t,e,i,n){const r=new t.AdsRequest;r[e]=i;const s=r;for(const o in n)s[o]=n[o];return r}(e,t,i,s);f(a)&&a.player===o&&o.playAds(u)}return{context:c,destroy:function(){d&&p(d)}}}(n,o,h,a,s),a()?(d(),u):(!s&&(r.context.init(),a())||"function"===typeof i&&await i(r.context),u)}catch(h){try{d()}catch(l){console.error("VAST cleanup error:",l)}throw h}}}return rt.default=rt,rt});