@videts/vide 0.7.4 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ (function(){'use strict';function P(e){return {name:"ui-ad",setup(n,t){let r=t.creatives.find(o=>o.linear)?.linear;if(r)return e.set({adId:t.id,skipOffset:r.skipOffset,clickThrough:r.clickThrough,duration:r.duration}),()=>{e.clear();}}}}function E(e){return `vide-ui--${e.replace(":","-")}`}function f(e){return e==="ad:loading"||e==="ad:playing"||e==="ad:paused"}function L(e,n){e.classList.add(E(n.state));function t({from:r,to:o}){e.classList.remove(E(r)),e.classList.add(E(o));}return n.on("statechange",t),()=>n.off("statechange",t)}function b(e){if(!Number.isFinite(e)||e<0)return "0:00";let n=Math.floor(e),t=Math.floor(n/3600),r=Math.floor(n%3600/60),o=n%60,i=t>0?String(r).padStart(2,"0"):String(r),l=String(o).padStart(2,"0");return t>0?`${t}:${i}:${l}`:`${i}:${l}`}function u(e,n){let t=document.createElement(e);return t.className=n,t}function A(){let e={current:null,set(n){e.current=n;},clear(){e.current=null;}};return e}function S(e){let n=null,t=null;function r(){if(!n||!t||!f(t.state))return;let o=e.current?.duration??(Number.isFinite(t.el.duration)?t.el.duration:0),i=t.el.currentTime,l=Math.max(0,Math.ceil(o-i));n.textContent=`Ad \xB7 ${l}s`;}return {mount(o){n=u("div","vide-ad-countdown"),o.appendChild(n);},connect(o){t=o,t.on("timeupdate",r);},destroy(){n&&(n.remove(),n=null),t&&(t.off("timeupdate",r),t=null);}}}function T(){let e=null;return {mount(n){e=u("div","vide-ad-label"),e.textContent="Ad",n.appendChild(e);},connect(n){},destroy(){e&&(e.remove(),e=null);}}}function M(e){let n=null,t=null;function r(){if(!t)return;t.el.click();let o=e.current?.clickThrough;o?(window.open(o,"_blank"),t.el.pause()):t.el.paused?Promise.resolve(t.el.play()).catch(()=>{}):t.el.pause();}return {mount(o){n=u("div","vide-ad-overlay"),o.appendChild(n);},connect(o){t=o,n&&n.addEventListener("click",r);},destroy(){n&&(n.removeEventListener("click",r),n.remove(),n=null),t=null;}}}var R="http://www.w3.org/2000/svg";function y(e,n="0 0 24 24"){let t=document.createElementNS(R,"svg");t.setAttribute("viewBox",n),t.setAttribute("width","24"),t.setAttribute("height","24"),t.setAttribute("fill","currentColor"),t.setAttribute("aria-hidden","true");for(let r of e){let o=document.createElementNS(R,"path");o.setAttribute("d",r),t.appendChild(o);}return t}function k(){return y(["M8 5v14l11-7z"])}function B(){return y(["M6 19h4V5H6v14zm8-14v14h4V5h-4z"])}function O(){return y(["M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"])}function K(){return y(["M18.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM5 9v6h4l5 5V4L9 9H5z"])}function q(){return y(["M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4l-1.88 1.88L12 7.76V4z"])}function $(){return y(["M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"])}function X(){return y(["M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"])}function Y(){return y(["M5 18l10-6L5 6v12zm12-12v12h2V6h-2z"])}function I(e){let n=null,t=null,r=null;function o(){!r||!e.current||n?.classList.contains("vide-skip--disabled")||r.emit("ad:skip",{adId:e.current.adId});}function i(){if(!n||!t||!r||!f(r.state))return;if(!e.current||e.current.skipOffset===void 0){n.style.display="none";return}n.style.display="";let{skipOffset:a}=e.current,m=r.el.currentTime;if(m>=a)n.classList.remove("vide-skip--disabled"),t.textContent="Skip Ad";else {n.classList.add("vide-skip--disabled");let d=Math.max(0,Math.ceil(a-m));t.textContent=`Skip in ${d}s`;}}function l({to:a}){!n||!t||f(a)||(n.style.display="none",n.classList.add("vide-skip--disabled"),t.textContent="");}return {mount(a){n=u("button","vide-skip vide-skip--disabled"),n.type="button",n.setAttribute("aria-label","Skip ad"),n.style.display="none",t=u("span","vide-skip__label"),n.appendChild(t),n.appendChild(Y()),a.appendChild(n);},connect(a){r=a,n&&(n.addEventListener("click",o),r.on("timeupdate",i),r.on("statechange",l));},destroy(){n&&(n.removeEventListener("click",o),n.remove(),n=null,t=null),r&&(r.off("timeupdate",i),r.off("statechange",l),r=null);}}}var Q=3e3;function U(){let e=null,n=null,t=null;function r(){if(!n)return true;let d=n.state;return d==="paused"||d==="ended"||d==="idle"||d==="ready"||f(d)}function o(){e&&e.classList.remove("vide-ui--autohide");}function i(){l(),!r()&&(t=setTimeout(()=>{e&&e.classList.add("vide-ui--autohide");},Q));}function l(){t!==null&&(clearTimeout(t),t=null);}function a(){o(),i();}function m({to:d}){d==="paused"||d==="ended"||d==="idle"||d==="ready"||f(d)?(l(),o()):i();}return {mount(d){e=d.closest(".vide-ui")??d;},connect(d){n=d,e&&(e.addEventListener("mousemove",a),e.addEventListener("touchstart",a),e.addEventListener("keydown",a),n.on("statechange",m),i());},destroy(){l(),e&&(e.removeEventListener("mousemove",a),e.removeEventListener("touchstart",a),e.removeEventListener("keydown",a),e.classList.remove("vide-ui--autohide"),e=null),n&&(n.off("statechange",m),n=null);}}}function x(){let e=null,n=null;function t(){if(n){if(n.state==="ended"){let o=function({to:i}){i==="ready"&&(n?.off("statechange",o),n?.play().catch(()=>{}));};n.on("statechange",o),n.el.currentTime=0,n.el.load();return}n.play().catch(()=>{});}}return {mount(r){e=u("button","vide-bigplay"),e.type="button",e.setAttribute("aria-label","Play video"),e.appendChild(k()),r.appendChild(e);},connect(r){n=r,e&&e.addEventListener("click",t);},destroy(){e&&(e.removeEventListener("click",t),e.remove(),e=null),n=null;}}}var W=200;function H(e){let n=null,t=null,r=null,o=null;function i(){t&&(t.state==="playing"||t.state==="ad:playing"?t.pause():t.play().catch(()=>{}));}function l(){!o||e.has("fullscreen")||(document.fullscreenElement!=null?document.exitFullscreen().catch(()=>{}):o.requestFullscreen&&o.requestFullscreen().catch(()=>{}));}function a(){if(t){if(f(t.state)){t.el.click(),i();return}if(r!==null){clearTimeout(r),r=null,l();return}r=setTimeout(()=>{r=null,i();},W);}}return {mount(m){n=u("div","vide-clickplay"),o=m.closest(".vide-ui")?.parentElement??m,m.appendChild(n);},connect(m){t=m,n&&n.addEventListener("click",a);},destroy(){r!==null&&(clearTimeout(r),r=null),n&&(n.removeEventListener("click",a),n.remove(),n=null),t=null,o=null;}}}function V(){let e=null,n=null,t=null;function r({message:o}){n&&(n.textContent=o);}return {mount(o){e=u("div","vide-error"),n=u("span","vide-error__message"),e.appendChild(n),o.appendChild(e);},connect(o){t=o,t.on("error",r);},destroy(){e&&(e.remove(),e=null,n=null),t&&(t.off("error",r),t=null);}}}function w(){let e=null,n=null,t=null;function r(){return document.fullscreenElement!=null||document.webkitFullscreenElement!=null}function o(a){e&&(t&&t.remove(),t=a?X():$(),e.appendChild(t));}function i(){n&&(r()?typeof document.exitFullscreen=="function"?document.exitFullscreen().catch(()=>{}):typeof document.webkitExitFullscreen=="function"&&document.webkitExitFullscreen():typeof n.requestFullscreen=="function"?n.requestFullscreen().catch(()=>{}):typeof n.webkitRequestFullscreen=="function"?n.webkitRequestFullscreen():n.querySelector("video")?.webkitEnterFullscreen?.());}function l(){if(!e)return;let a=r();a?(e.classList.add("vide-fullscreen--active"),e.setAttribute("aria-label","Exit fullscreen")):(e.classList.remove("vide-fullscreen--active"),e.setAttribute("aria-label","Fullscreen")),o(a);}return {mount(a){n=a.closest(".vide-ui")?.parentElement??a,e=u("button","vide-fullscreen"),e.type="button",e.setAttribute("aria-label","Fullscreen"),o(false),a.appendChild(e);},connect(){e&&(e.addEventListener("click",i),document.addEventListener("fullscreenchange",l),document.addEventListener("webkitfullscreenchange",l));},destroy(){e&&(e.removeEventListener("click",i),e.remove(),e=null,t=null),document.removeEventListener("fullscreenchange",l),document.removeEventListener("webkitfullscreenchange",l),n=null;}}}function j(e){let n=null,t=null,{excluded:r}=e;function o(i){if(!t)return;let l=!r.has("volume"),a=!r.has("progress"),m=!r.has("fullscreen"),d=f(t.state);switch(i.key){case " ":case "k":case "K":i.preventDefault(),t.state==="playing"||t.state==="ad:playing"?t.pause():t.play().catch(()=>{});break;case "ArrowLeft":if(!a||d)return;i.preventDefault(),t.currentTime=Math.max(0,t.el.currentTime-5);break;case "ArrowRight":if(!a||d)return;i.preventDefault(),t.currentTime=Math.min(t.el.duration||0,t.el.currentTime+5);break;case "ArrowUp":if(!l)return;i.preventDefault(),t.volume=Math.min(1,t.volume+.1),t.muted&&(t.muted=false);break;case "ArrowDown":if(!l)return;i.preventDefault(),t.volume=Math.max(0,t.volume-.1);break;case "m":case "M":if(!l)return;i.preventDefault(),t.muted=!t.muted;break;case "f":case "F":if(!m)return;if(i.preventDefault(),document.fullscreenElement!=null)document.exitFullscreen().catch(()=>{});else {let p=n?.closest(".vide-ui")?.parentElement??n;p?.requestFullscreen&&p.requestFullscreen().catch(()=>{});}break;default:if(i.key.length===1&&i.key>="0"&&i.key<="9"&&a&&!d){i.preventDefault();let p=Number.parseInt(i.key,10)/10,v=t.el.duration;Number.isFinite(v)&&v>0&&(t.currentTime=p*v);}break}}return {mount(i){n=i.closest(".vide-ui")??i,n.setAttribute("tabindex","0");},connect(i){t=i,n&&n.addEventListener("keydown",o);},destroy(){n&&(n.removeEventListener("keydown",o),n.removeAttribute("tabindex"),n=null),t=null;}}}function F(){let e=null;return {mount(n){e=u("div","vide-loader");let t=u("div","vide-loader__spinner");e.appendChild(t),n.appendChild(e);},connect(n){},destroy(){e&&(e.remove(),e=null);}}}function D(){let e=null,n=null,t=null;function r(l){e&&(t&&t.remove(),t=l?B():k(),e.appendChild(t));}function o(){n&&(n.state==="playing"?n.pause():n.play().catch(()=>{}));}function i({to:l}){e&&(l==="playing"||l==="ad:playing"?(e.classList.add("vide-play--playing"),e.classList.remove("vide-play--paused"),e.setAttribute("aria-label","Pause"),r(true)):(l==="paused"||l==="ready"||l==="ended"||l==="ad:paused")&&(e.classList.remove("vide-play--playing"),e.classList.add("vide-play--paused"),e.setAttribute("aria-label","Play"),r(false)));}return {mount(l){e=u("button","vide-play vide-play--paused"),e.type="button",e.setAttribute("aria-label","Play"),r(false),l.appendChild(e);},connect(l){n=l,e&&(e.addEventListener("click",o),n.on("statechange",i));},destroy(){e&&(e.removeEventListener("click",o),e.remove(),e=null,t=null),n&&(n.off("statechange",i),n=null);}}}function _(e){let n=null;return {mount(t){n=u("div","vide-poster");let r=u("img","vide-poster__image");r.src=e.src,r.alt="",n.appendChild(r),t.appendChild(n);},connect(t){},destroy(){n&&(n.remove(),n=null);}}}function G(){let e=null,n=null,t=null,r=null,o=null,i=false;function l(s){if(!e)return 0;let c=e.getBoundingClientRect();return c.width===0?0:Math.max(0,Math.min(1,(s.clientX-c.left)/c.width))}function a(s){e&&e.style.setProperty("--vide-progress",String(s));}function m(){if(!o||!t)return;let s=o.el;if(s.buffered.length>0&&s.duration>0){let g=s.buffered.end(s.buffered.length-1)/s.duration;t.style.setProperty("--vide-progress-buffered",String(Math.min(1,g)));}}function d(){if(i||!o)return;let{currentTime:s,duration:c}=o.el;c>0&&a(s/c),m(),e&&(e.setAttribute("aria-valuenow",String(Math.floor(s))),Number.isFinite(c)&&e.setAttribute("aria-valuemax",String(Math.floor(c))));}function p(s){!o||!e||f(o.state)||(i=true,e.classList.add("vide-progress--dragging"),e.setPointerCapture(s.pointerId),a(l(s)));}function v(s){i&&a(l(s));}function h(s){if(!i||!o)return;i=false,e&&(e.classList.remove("vide-progress--dragging"),e.releasePointerCapture(s.pointerId));let c=l(s),g=o.el.duration;Number.isFinite(g)&&g>0&&(o.currentTime=c*g);}function C({to:s}){e&&(f(s)?e.classList.add("vide-progress--disabled"):e.classList.remove("vide-progress--disabled"));}return {mount(s){e=u("div","vide-progress"),e.setAttribute("role","slider"),e.setAttribute("aria-label","Seek"),e.setAttribute("aria-valuemin","0"),e.setAttribute("aria-valuemax","0"),e.setAttribute("aria-valuenow","0"),t=u("div","vide-progress__buffered"),n=u("div","vide-progress__bar"),r=u("div","vide-progress__handle"),e.appendChild(t),e.appendChild(n),e.appendChild(r),s.appendChild(e);},connect(s){o=s,e&&(o.on("timeupdate",d),o.on("statechange",C),e.addEventListener("pointerdown",p),e.addEventListener("pointermove",v),e.addEventListener("pointerup",h));},destroy(){e&&(e.removeEventListener("pointerdown",p),e.removeEventListener("pointermove",v),e.removeEventListener("pointerup",h),e.remove(),e=null,n=null,t=null,r=null),o&&(o.off("timeupdate",d),o.off("statechange",C),o=null);}}}function N(){let e=null,n=null,t=null,r=null;function o({currentTime:i,duration:l}){n&&(n.textContent=b(i)),t&&(t.textContent=b(l));}return {mount(i){e=u("div","vide-time"),n=u("span","vide-time__current");let l=u("span","vide-time__separator");t=u("span","vide-time__duration"),n.textContent="0:00",l.textContent="/",t.textContent="0:00",e.appendChild(n),e.appendChild(l),e.appendChild(t),i.appendChild(e);},connect(i){r=i,r.on("timeupdate",o);},destroy(){e&&(e.remove(),e=null,n=null,t=null),r&&(r.off("timeupdate",o),r=null);}}}function z(){let e=null,n=null,t=null,r=null,o=false,i=null;function l(){if(!n||!r)return;i&&i.remove(),r.muted||r.volume===0?i=q():r.volume<.5?i=K():i=O(),n.appendChild(i);}function a(){if(!r||!e||!n)return;r.muted||r.volume===0?(e.classList.add("vide-volume--muted"),n.setAttribute("aria-label","Unmute")):(e.classList.remove("vide-volume--muted"),n.setAttribute("aria-label","Mute"));let c=r.muted?0:r.volume;e.style.setProperty("--vide-volume",String(c)),t&&t.setAttribute("aria-valuenow",String(Math.round(c*100))),l();}function m(s){if(!t)return 0;let c=t.getBoundingClientRect();return c.width===0?0:Math.max(0,Math.min(1,(s.clientX-c.left)/c.width))}function d(){r&&(r.muted=!r.muted);}function p(){o||a();}function v(s){if(!r||!t)return;o=true,t.setPointerCapture(s.pointerId);let c=m(s);r.volume=c,r.muted&&c>0&&(r.muted=false),a();}function h(s){if(!o||!r)return;let c=m(s);r.volume=c,r.muted&&c>0&&(r.muted=false),a();}function C(s){!o||!t||(o=false,t.releasePointerCapture(s.pointerId));}return {mount(s){e=u("div","vide-volume"),n=u("button","vide-volume__button"),n.type="button",n.setAttribute("aria-label","Mute"),t=u("div","vide-volume__slider"),t.setAttribute("role","slider"),t.setAttribute("aria-label","Volume"),t.setAttribute("aria-valuemin","0"),t.setAttribute("aria-valuemax","100"),t.setAttribute("aria-valuenow","100");let c=u("div","vide-volume__track"),g=u("div","vide-volume__filled");t.appendChild(c),t.appendChild(g),e.appendChild(n),e.appendChild(t),s.appendChild(e);},connect(s){r=s,!(!n||!t)&&(n.addEventListener("click",d),t.addEventListener("pointerdown",v),t.addEventListener("pointermove",h),t.addEventListener("pointerup",C),r.el.addEventListener("volumechange",p),a());},destroy(){n&&n.removeEventListener("click",d),t&&(t.removeEventListener("pointerdown",v),t.removeEventListener("pointermove",h),t.removeEventListener("pointerup",C)),r&&(r.el.removeEventListener("volumechange",p),r=null),e&&(e.remove(),e=null,n=null,t=null,i=null);}}}function Z(e,n,t){e.mount(n),e.connect(t);}function J(e){let n=A(),t=new Set(e.exclude);return {name:"ui",setup(r){r.isAudio&&(t.add("fullscreen"),t.add("poster"));let o=document.createElement("div");o.className="vide-ui",o.setAttribute("role","region"),o.setAttribute("aria-label",r.isAudio?"Audio player":"Video player"),e.container.appendChild(o);let i=[];function l(p,v,h){t.has(p)||(Z(v,h,r),i.push(v));}if(l("loader",F(),o),l("error",V(),o),l("bigplay",x(),o),e.poster&&l("poster",_({src:e.poster}),o),l("clickplay",H(t),o),!t.has("ad-overlay")||!t.has("ad-label")||!t.has("ad-countdown")||!t.has("ad-skip")){let p=document.createElement("div");p.className="vide-ad",o.appendChild(p),l("ad-overlay",M(n),p),l("ad-label",T(),p),l("ad-countdown",S(n),p),l("ad-skip",I(n),p);}let m=document.createElement("div");m.className="vide-controls",m.addEventListener("click",p=>p.stopPropagation()),o.appendChild(m),l("play",D(),m),l("progress",G(),m),l("time",N(),m),l("volume",z(),m),l("fullscreen",w(),m),l("autohide",U(),o),l("keyboard",j({excluded:t}),o);let d=L(o,r);return ()=>{for(let p of i)p.destroy();d(),o.remove();}},getAdPlugin(){return ()=>[P(n)]}}}var ee=globalThis.Vide??(globalThis.Vide={});Object.assign(ee,{ui:J,createPlayButton:D,createProgress:G,createTimeDisplay:N,createVolume:z,createFullscreen:w,createLoader:F,createErrorDisplay:V,createBigPlay:x,createPoster:_,createAdCountdown:S,createAdSkip:I,createAdOverlay:M,createAdLabel:T,createKeyboard:j,createClickPlay:H,createAutohide:U,connectStateClasses:L,stateToClass:E,isAdState:f,formatTime:b,createAdUIState:A,uiAdPlugin:P});
2
+ })();
@@ -0,0 +1 @@
1
+ (function(){'use strict';function V(t){let n=new DOMParser().parseFromString(t,"text/xml");if(n.querySelector("parsererror"))return {version:"",ads:[],errors:["VAST XML parse error"]};let r=n.documentElement;if(r.tagName!=="VAST")return {version:"",ads:[],errors:["Document is not a VAST response"]};let s=r.getAttribute("version")??"",o=J(r,"Error"),c=h(r,"Ad"),u=[];for(let m of c){let d=le(m);d&&u.push(d);}return {version:s,ads:u,errors:o}}function le(t){let e=se(t,"InLine");if(!e)return null;let n=t.getAttribute("id")??"",i=t.getAttribute("sequence"),r=w(i,void 0),s=F(e,"AdSystem"),o=F(e,"AdTitle"),c=N(e,"Impression"),u=J(e,"Error"),m=e.querySelector("Creatives"),d=[];if(m){let p=h(m,"Creative");for(let T of p)d.push(me(T));}let v=de(e),A=fe(e);return {id:n,sequence:r,adSystem:s,adTitle:o,impressions:c,creatives:d,errors:u,verifications:v,categories:A}}function de(t){let e=t.querySelector("AdVerifications");if(!e)return;let n=[],i=h(e,"Verification");for(let r of i){let s=r.getAttribute("vendor")??"",o="",c,u=r.querySelector("JavaScriptResource");if(u)o=(u.textContent??"").trim(),c=u.getAttribute("apiFramework")??void 0;else {let v=r.querySelector("ExecutableResource");v&&(o=(v.textContent??"").trim(),c=v.getAttribute("apiFramework")??void 0);}let m=r.querySelector("VerificationParameters"),d=m&&(m.textContent??"").trim()||void 0;n.push({vendor:s,resourceUrl:o,apiFramework:c,parameters:d});}return n.length>0?n:void 0}function fe(t){let e=h(t,"Category");if(e.length===0)return;let n=[];for(let i of e){let r=i.getAttribute("authority")??"",s=(i.textContent??"").trim();s&&n.push({authority:r,value:s});}return n.length>0?n:void 0}function me(t){let e=t.getAttribute("id")??void 0,n=t.getAttribute("sequence"),i=w(n,void 0),r=t.querySelector("Linear"),s=r?ge(r):null;return {id:e,sequence:i,linear:s}}function ge(t){let e=F(t,"Duration"),n=re(e),i=t.getAttribute("skipoffset"),r=i!==null?ie(i,n):void 0,s=ve(t),o=pe(t),c=ne(t),u=t.querySelector("VideoClicks"),m=u&&F(u,"ClickThrough")||void 0,d=u?N(u,"ClickTracking"):[];return {duration:n,skipOffset:r,mediaFiles:s,interactiveCreativeFiles:o,trackingEvents:c,clickThrough:m,clickTracking:d}}function ve(t){let e=t.querySelector("MediaFiles");if(!e)return [];let n=[],i=h(e,"MediaFile");for(let r of i){let s=(r.textContent??"").trim();if(!s)continue;let o=r.getAttribute("delivery");n.push({url:s,mimeType:r.getAttribute("type")??"",width:w(r.getAttribute("width"),0),height:w(r.getAttribute("height"),0),bitrate:w(r.getAttribute("bitrate"),void 0),delivery:o==="streaming"?"streaming":"progressive"});}return n}function pe(t){let e=t.querySelector("MediaFiles");if(!e)return [];let n=[],i=h(e,"InteractiveCreativeFile");for(let r of i){let s=(r.textContent??"").trim();if(!s)continue;let o=r.getAttribute("apiFramework")??"",c=r.getAttribute("variableDuration"),u=c==="true"?true:c==="false"?false:void 0;n.push({url:s,apiFramework:o,variableDuration:u});}return n}var Ee=new Set(["start","firstQuartile","midpoint","thirdQuartile","complete","pause","resume","skip","loaded","mute","unmute","rewind","playerExpand","playerCollapse","closeLinear","notUsed","otherAdInteraction","creativeView"]);function ne(t){let e=$(),n=t.querySelector("TrackingEvents");if(!n)return e;let i=n.querySelectorAll("Tracking");for(let r of i){let s=r.getAttribute("event"),o=(r.textContent??"").trim();if(!(!s||!o))if(s==="progress"){let c=r.getAttribute("offset"),u=c?ie(c,0):0;e.progress.push({offset:u,url:o});}else Ee.has(s)&&e[s].push(o);}return e}function re(t){if(!t)return 0;let e=t.split(":");if(e.length!==3)return 0;let n=Number.parseInt(e[0],10),i=Number.parseInt(e[1],10),r=Number.parseFloat(e[2]);return Number.isNaN(n)||Number.isNaN(i)||Number.isNaN(r)?0:n*3600+i*60+r}function ie(t,e){if(t.endsWith("%")){let n=Number.parseFloat(t);return Number.isNaN(n)?0:n/100*e}return re(t)}function h(t,e){let n=[];for(let i=0;i<t.children.length;i++)t.children[i].tagName===e&&n.push(t.children[i]);return n}function se(t,e){for(let n=0;n<t.children.length;n++)if(t.children[n].tagName===e)return t.children[n];return null}function J(t,e){let n=[];for(let i of h(t,e)){let r=(i.textContent??"").trim();r&&n.push(r);}return n}function F(t,e){let n=t.querySelector(e);return n?(n.textContent??"").trim():""}function N(t,e){let n=t.querySelectorAll(e),i=[];for(let r of n){let s=(r.textContent??"").trim();s&&i.push(s);}return i}async function b(t,e){let n=e?.timeout??5e3,i=new AbortController,r=setTimeout(()=>i.abort(),n);try{let s=await fetch(t,{signal:i.signal});if(!s.ok)throw new Error(`VAST fetch failed: ${s.status}`);return await s.text()}finally{clearTimeout(r);}}async function K(t,e){let n=e?.timeout??1e4,i=e?.maxDepth??5,r=Date.now()+n,s=new Set,o=[],c=t;for(let u=0;u<=i;u++){let m=r-Date.now();if(m<=0)return {version:"",ads:[],errors:["VAST resolve timeout"]};if(s.has(c))return {version:"",ads:[],errors:["VAST circular reference detected"]};s.add(c);let d;try{d=await b(c,{timeout:m});}catch(p){return {version:"",ads:[],errors:[p instanceof Error?p.message:String(p)]}}let v=V(d);if(v.ads.length>0)return {version:v.version,ads:v.ads.map(p=>Ae(p,o)),errors:v.errors};let A=ke(d);if(!A)return v;o.push(A),c=A.adTagUri;}return {version:"",ads:[],errors:["VAST wrapper depth limit exceeded"]}}function ke(t){let i=new DOMParser().parseFromString(t,"text/xml").documentElement;if(i.tagName!=="VAST")return null;for(let r of h(i,"Ad")){let s=se(r,"Wrapper");if(!s)continue;let o=F(s,"VASTAdTagURI").trim();if(!o)continue;let c=J(s,"Error"),u=N(s,"Impression"),m=$(),d=[],v=s.querySelector("Creatives");if(v)for(let A of h(v,"Creative")){let p=A.querySelector("Linear");if(p){m=ne(p);let T=p.querySelector("VideoClicks");T&&(d=N(T,"ClickTracking"));break}}return {adTagUri:o,errors:c,impressions:u,trackingEvents:m,clickTracking:d}}return null}function $(){return {start:[],firstQuartile:[],midpoint:[],thirdQuartile:[],complete:[],pause:[],resume:[],skip:[],loaded:[],mute:[],unmute:[],rewind:[],playerExpand:[],playerCollapse:[],closeLinear:[],notUsed:[],otherAdInteraction:[],creativeView:[],progress:[]}}function he(t,e){let n=$();for(let i of Object.keys(n)){if(i==="progress")continue;let r=n[i];for(let s of t)r.push(...s[i]);r.push(...e[i]);}for(let i of t)n.progress.push(...i.progress);return n.progress.push(...e.progress),n}function Ae(t,e){if(e.length===0)return t;let n=[...e.flatMap(s=>s.errors),...t.errors],i=[...e.flatMap(s=>s.impressions),...t.impressions],r=t.creatives.map(s=>s.linear?{...s,linear:{...s.linear,trackingEvents:he(e.map(o=>o.trackingEvents),s.linear.trackingEvents),clickTracking:[...e.flatMap(o=>o.clickTracking),...s.linear.clickTracking]}}:s);return {...t,errors:n,impressions:i,creatives:r}}function w(t,e){if(t==null)return e;let n=Number.parseInt(t,10);return Number.isNaN(n)?e:n}function f(t){for(let e of t)typeof navigator<"u"&&typeof navigator.sendBeacon=="function"?navigator.sendBeacon(e):new Image().src=e;}function P(t,e){if(e<=0)return null;let n=t/e;return n>=1?"complete":n>=.75?"thirdQuartile":n>=.5?"midpoint":n>=.25?"firstQuartile":t>=0?"start":null}function oe(t,e){let n=new Set,i=["start","firstQuartile","midpoint","thirdQuartile","complete"];return r=>{let s=P(r,t);if(!s||n.has(s))return;let o=i.indexOf(s);for(let c=0;c<=o;c++){let u=i[c];n.has(u)||(n.add(u),e(u));}}}function ae(t){return {name:"vast",setup(e){let n=false,i=null,r=e._setState;async function s(){if(!n){r("ad:loading");try{let ee=function(l){if(a)for(let g of a.trackingEvents.progress)!Z.has(g.offset)&&l>=g.offset&&(Z.add(g.offset),f([g.url]));},y=function(){for(let l of Q)l();Q.length=0;},L=function(){e.emit("ad:end",{adId:k}),r("playing"),te();},te=function(){function l({to:g}){g==="ready"&&(e.off("statechange",l),H>0&&(e.el.currentTime=H),e.play().catch(()=>{e.el.muted=!0,e.play().catch(()=>{});}));}e.on("statechange",l),e.src=ue;},R=function(){!a||E||(f(a.clickTracking),e.emit("ad:click",{clickThrough:a.clickThrough,clickTracking:a.clickTracking}));},D=function(){!a||E||(f(a.trackingEvents.skip),E=!0,x(),y(),L());},U=function(){!a||E||e.state==="ad:playing"&&(f(a.trackingEvents.pause),r("ad:paused"));},W=function(){!a||E||e.state==="ad:paused"&&(f(a.trackingEvents.resume),r("ad:playing"));},j=function(){Y(e.el.currentTime),ee(e.el.currentTime);},_=function(){if(!a||E)return;let l=e.el.muted||e.el.volume===0;l&&!M?(f(a.trackingEvents.mute),e.emit("ad:mute",{adId:k})):!l&&M&&(f(a.trackingEvents.unmute),e.emit("ad:unmute",{adId:k})),M=l,e.emit("ad:volumeChange",{adId:k,volume:e.el.muted?0:e.el.volume});},B=function(){if(!a||E)return;let l=!!document.fullscreenElement;l&&!O?(f(a.trackingEvents.playerExpand),e.emit("ad:fullscreen",{adId:k,fullscreen:!0})):!l&&O&&(f(a.trackingEvents.playerCollapse),e.emit("ad:fullscreen",{adId:k,fullscreen:!1})),O=l;},X=function(){E||(E=!0,x(),y(),e.emit("ad:error",{error:new Error("Ad media playback failed"),source:"vast"}),L());},G=function(){E||(E=!0,a&&Y(a.duration),x(),y(),L());},q=function(){e.el.removeEventListener("canplay",q),a&&(f(a.trackingEvents.loaded),f(a.trackingEvents.creativeView),e.emit("ad:loaded",{adId:k}),r("ad:playing"),e.el.play().catch(()=>{e.el.muted=!0,e.el.play().catch(()=>{});}));},x=function(){e.el.removeEventListener("timeupdate",j),e.el.removeEventListener("ended",G),e.el.removeEventListener("error",X),e.el.removeEventListener("canplay",q),e.el.removeEventListener("pause",U),e.el.removeEventListener("play",W),e.el.removeEventListener("click",R),e.el.removeEventListener("volumechange",_),document.removeEventListener("fullscreenchange",B),e.off("ad:skip",D);};var c=ee,u=y,m=L,d=te,v=R,A=D,p=U,T=W,Te=j,Se=_,Ce=B,xe=X,we=G,Fe=q,ye=x;let S=t.timeout!==void 0?{timeout:t.timeout}:void 0,ce=await b(t.tagUrl,S);if(n)return;let I=V(ce);if(I.ads.length===0){r("playing");return}let a=null,C=null;for(let l of I.ads){for(let g of l.creatives)if(g.linear&&g.linear.mediaFiles.length>0){a=g.linear,C=l;break}if(a)break}if(!a||!C){r("playing");return}let k=C.id;e.emit("ad:start",{adId:k});let Q=[];if(t.adPlugins)for(let l of t.adPlugins(C)){let g=l.setup(e,C);g&&Q.push(g);}for(let l of I.ads)f(l.impressions);e.emit("ad:impression",{adId:k});let z=Ve(a.mediaFiles);if(!z){e.emit("ad:error",{error:new Error("No suitable media file found"),source:"vast"}),r("playing");return}let H=e.el.currentTime,ue=e.src,Y=oe(a.duration,l=>{if(!a)return;let g=a.trackingEvents[l];g&&f(g),e.emit("ad:quartile",{adId:k,quartile:l});}),Z=new Set,M=e.el.muted||e.el.volume===0,O=!!document.fullscreenElement,E=!1;e.el.addEventListener("canplay",q),e.el.addEventListener("timeupdate",j),e.el.addEventListener("ended",G),e.el.addEventListener("error",X),e.el.addEventListener("pause",U),e.el.addEventListener("play",W),e.el.addEventListener("click",R),e.el.addEventListener("volumechange",_),document.addEventListener("fullscreenchange",B),e.on("ad:skip",D),i=x,e.src="",e.el.src=z.url,e.el.load();}catch(S){if(n)return;e.emit("ad:error",{error:S instanceof Error?S:new Error(String(S)),source:"vast"}),r("playing");}}}function o({to:c}){c==="ready"&&!n&&(e.off("statechange",o),s());}return e.state==="ready"||e.state==="playing"||e.state==="paused"?s():e.on("statechange",o),()=>{n=true,e.off("statechange",o),i&&i();}}}}function Ve(t){if(t.length===0)return null;let e=t.filter(i=>i.mimeType==="video/mp4");return (e.length>0?e:t).sort((i,r)=>(r.bitrate??0)-(i.bitrate??0))[0]}var be=globalThis.Vide??(globalThis.Vide={});Object.assign(be,{vast:ae,parseVast:V,fetchVast:b,resolveVast:K,track:f,getQuartile:P});})();
@@ -0,0 +1 @@
1
+ (function(){'use strict';function I(t){let r=new DOMParser().parseFromString(t,"text/xml");if(r.querySelector("parsererror"))return {version:"",ads:[],errors:["VAST XML parse error"]};let i=r.documentElement;if(i.tagName!=="VAST")return {version:"",ads:[],errors:["Document is not a VAST response"]};let s=i.getAttribute("version")??"",a=q(i,"Error"),u=A(i,"Ad"),c=[];for(let o of u){let d=Z(o);d&&c.push(d);}return {version:s,ads:c,errors:a}}function Z(t){let e=z(t,"InLine");if(!e)return null;let r=t.getAttribute("id")??"",n=t.getAttribute("sequence"),i=y(n,void 0),s=N(e,"AdSystem"),a=N(e,"AdTitle"),u=w(e,"Impression"),c=q(e,"Error"),o=e.querySelector("Creatives"),d=[];if(o){let l=A(o,"Creative");for(let E of l)d.push(re(E));}let f=ee(e),p=te(e);return {id:r,sequence:i,adSystem:s,adTitle:a,impressions:u,creatives:d,errors:c,verifications:f,categories:p}}function ee(t){let e=t.querySelector("AdVerifications");if(!e)return;let r=[],n=A(e,"Verification");for(let i of n){let s=i.getAttribute("vendor")??"",a="",u,c=i.querySelector("JavaScriptResource");if(c)a=(c.textContent??"").trim(),u=c.getAttribute("apiFramework")??void 0;else {let f=i.querySelector("ExecutableResource");f&&(a=(f.textContent??"").trim(),u=f.getAttribute("apiFramework")??void 0);}let o=i.querySelector("VerificationParameters"),d=o&&(o.textContent??"").trim()||void 0;r.push({vendor:s,resourceUrl:a,apiFramework:u,parameters:d});}return r.length>0?r:void 0}function te(t){let e=A(t,"Category");if(e.length===0)return;let r=[];for(let n of e){let i=n.getAttribute("authority")??"",s=(n.textContent??"").trim();s&&r.push({authority:i,value:s});}return r.length>0?r:void 0}function re(t){let e=t.getAttribute("id")??void 0,r=t.getAttribute("sequence"),n=y(r,void 0),i=t.querySelector("Linear"),s=i?ne(i):null;return {id:e,sequence:n,linear:s}}function ne(t){let e=N(t,"Duration"),r=_(e),n=t.getAttribute("skipoffset"),i=n!==null?X(n,r):void 0,s=ie(t),a=se(t),u=W(t),c=t.querySelector("VideoClicks"),o=c&&N(c,"ClickThrough")||void 0,d=c?w(c,"ClickTracking"):[];return {duration:r,skipOffset:i,mediaFiles:s,interactiveCreativeFiles:a,trackingEvents:u,clickThrough:o,clickTracking:d}}function ie(t){let e=t.querySelector("MediaFiles");if(!e)return [];let r=[],n=A(e,"MediaFile");for(let i of n){let s=(i.textContent??"").trim();if(!s)continue;let a=i.getAttribute("delivery");r.push({url:s,mimeType:i.getAttribute("type")??"",width:y(i.getAttribute("width"),0),height:y(i.getAttribute("height"),0),bitrate:y(i.getAttribute("bitrate"),void 0),delivery:a==="streaming"?"streaming":"progressive"});}return r}function se(t){let e=t.querySelector("MediaFiles");if(!e)return [];let r=[],n=A(e,"InteractiveCreativeFile");for(let i of n){let s=(i.textContent??"").trim();if(!s)continue;let a=i.getAttribute("apiFramework")??"",u=i.getAttribute("variableDuration"),c=u==="true"?true:u==="false"?false:void 0;r.push({url:s,apiFramework:a,variableDuration:c});}return r}var oe=new Set(["start","firstQuartile","midpoint","thirdQuartile","complete","pause","resume","skip","loaded","mute","unmute","rewind","playerExpand","playerCollapse","closeLinear","notUsed","otherAdInteraction","creativeView"]);function W(t){let e=L(),r=t.querySelector("TrackingEvents");if(!r)return e;let n=r.querySelectorAll("Tracking");for(let i of n){let s=i.getAttribute("event"),a=(i.textContent??"").trim();if(!(!s||!a))if(s==="progress"){let u=i.getAttribute("offset"),c=u?X(u,0):0;e.progress.push({offset:c,url:a});}else oe.has(s)&&e[s].push(a);}return e}function _(t){if(!t)return 0;let e=t.split(":");if(e.length!==3)return 0;let r=Number.parseInt(e[0],10),n=Number.parseInt(e[1],10),i=Number.parseFloat(e[2]);return Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(i)?0:r*3600+n*60+i}function X(t,e){if(t.endsWith("%")){let r=Number.parseFloat(t);return Number.isNaN(r)?0:r/100*e}return _(t)}function A(t,e){let r=[];for(let n=0;n<t.children.length;n++)t.children[n].tagName===e&&r.push(t.children[n]);return r}function z(t,e){for(let r=0;r<t.children.length;r++)if(t.children[r].tagName===e)return t.children[r];return null}function q(t,e){let r=[];for(let n of A(t,e)){let i=(n.textContent??"").trim();i&&r.push(i);}return r}function N(t,e){let r=t.querySelector(e);return r?(r.textContent??"").trim():""}function w(t,e){let r=t.querySelectorAll(e),n=[];for(let i of r){let s=(i.textContent??"").trim();s&&n.push(s);}return n}async function ae(t,e){let r=e?.timeout??5e3,n=new AbortController,i=setTimeout(()=>n.abort(),r);try{let s=await fetch(t,{signal:n.signal});if(!s.ok)throw new Error(`VAST fetch failed: ${s.status}`);return await s.text()}finally{clearTimeout(i);}}async function K(t,e){let r=e?.timeout??1e4,n=e?.maxDepth??5,i=Date.now()+r,s=new Set,a=[],u=t;for(let c=0;c<=n;c++){let o=i-Date.now();if(o<=0)return {version:"",ads:[],errors:["VAST resolve timeout"]};if(s.has(u))return {version:"",ads:[],errors:["VAST circular reference detected"]};s.add(u);let d;try{d=await ae(u,{timeout:o});}catch(l){return {version:"",ads:[],errors:[l instanceof Error?l.message:String(l)]}}let f=I(d);if(f.ads.length>0)return {version:f.version,ads:f.ads.map(l=>le(l,a)),errors:f.errors};let p=ce(d);if(!p)return f;a.push(p),u=p.adTagUri;}return {version:"",ads:[],errors:["VAST wrapper depth limit exceeded"]}}function ce(t){let n=new DOMParser().parseFromString(t,"text/xml").documentElement;if(n.tagName!=="VAST")return null;for(let i of A(n,"Ad")){let s=z(i,"Wrapper");if(!s)continue;let a=N(s,"VASTAdTagURI").trim();if(!a)continue;let u=q(s,"Error"),c=w(s,"Impression"),o=L(),d=[],f=s.querySelector("Creatives");if(f)for(let p of A(f,"Creative")){let l=p.querySelector("Linear");if(l){o=W(l);let E=l.querySelector("VideoClicks");E&&(d=w(E,"ClickTracking"));break}}return {adTagUri:a,errors:u,impressions:c,trackingEvents:o,clickTracking:d}}return null}function L(){return {start:[],firstQuartile:[],midpoint:[],thirdQuartile:[],complete:[],pause:[],resume:[],skip:[],loaded:[],mute:[],unmute:[],rewind:[],playerExpand:[],playerCollapse:[],closeLinear:[],notUsed:[],otherAdInteraction:[],creativeView:[],progress:[]}}function ue(t,e){let r=L();for(let n of Object.keys(r)){if(n==="progress")continue;let i=r[n];for(let s of t)i.push(...s[n]);i.push(...e[n]);}for(let n of t)r.progress.push(...n.progress);return r.progress.push(...e.progress),r}function le(t,e){if(e.length===0)return t;let r=[...e.flatMap(s=>s.errors),...t.errors],n=[...e.flatMap(s=>s.impressions),...t.impressions],i=t.creatives.map(s=>s.linear?{...s,linear:{...s.linear,trackingEvents:ue(e.map(a=>a.trackingEvents),s.linear.trackingEvents),clickTracking:[...e.flatMap(a=>a.clickTracking),...s.linear.clickTracking]}}:s);return {...t,errors:r,impressions:n,creatives:i}}function y(t,e){if(t==null)return e;let r=Number.parseInt(t,10);return Number.isNaN(r)?e:r}function k(t){for(let e of t)typeof navigator<"u"&&typeof navigator.sendBeacon=="function"?navigator.sendBeacon(e):new Image().src=e;}function de(t,e){if(e<=0)return null;let r=t/e;return r>=1?"complete":r>=.75?"thirdQuartile":r>=.5?"midpoint":r>=.25?"firstQuartile":t>=0?"start":null}function $(t,e){let r=new Set,n=["start","firstQuartile","midpoint","thirdQuartile","complete"];return i=>{let s=de(i,t);if(!s||r.has(s))return;let a=n.indexOf(s);for(let u=0;u<=a;u++){let c=n[u];r.has(c)||(r.add(c),e(c));}}}function x(t){let r=new DOMParser().parseFromString(t,"text/xml");if(r.querySelector("parsererror"))return {version:"",adBreaks:[]};let i=r.documentElement;if((i.localName||i.tagName)!=="VMAP")return {version:"",adBreaks:[]};let a=i.getAttribute("version")??"",u=[];for(let c=0;c<i.children.length;c++){let o=i.children[c];if((o.localName||o.tagName)==="AdBreak"){let f=fe(o);f&&u.push(f);}}return {version:a,adBreaks:u}}function fe(t){let e=t.getAttribute("timeOffset");if(!e)return null;let r=ge(e),n=t.getAttribute("breakType"),i=n==="nonlinear"?"nonlinear":n==="display"?"display":"linear",s=t.getAttribute("breakId")??void 0,a=null,u={breakStart:[],breakEnd:[],error:[]};for(let c=0;c<t.children.length;c++){let o=t.children[c],d=o.localName||o.tagName;d==="AdSource"?a=pe(o):d==="TrackingEvents"&&me(o,u);}return {timeOffset:r,breakType:i,breakId:s,adSource:a,trackingEvents:u}}function me(t,e){for(let r=0;r<t.children.length;r++){let n=t.children[r];if((n.localName||n.tagName)!=="Tracking")continue;let s=n.getAttribute("event"),a=(n.textContent??"").trim();!s||!a||(s==="breakStart"?e.breakStart.push(a):s==="breakEnd"?e.breakEnd.push(a):s==="error"&&e.error.push(a));}}function pe(t){let e=t.getAttribute("id")??void 0,r=t.getAttribute("allowMultipleAds"),n=r!=null?r==="true":void 0,i=t.getAttribute("followRedirects"),s=i!=null?i==="true":void 0,a,u;for(let c=0;c<t.children.length;c++){let o=t.children[c],d=o.localName||o.tagName;if(d==="VASTAdData"){let f=o.querySelector("VAST");f&&(a=new XMLSerializer().serializeToString(f));}else d==="AdTagURI"&&(u=(o.textContent??"").trim());}return {id:e,allowMultipleAds:n,followRedirects:s,vastUrl:u,vastData:a}}function ge(t){if(t==="start")return {type:"start"};if(t==="end")return {type:"end"};if(t.endsWith("%")){let e=Number.parseFloat(t);return Number.isNaN(e)?{type:"time",seconds:0}:{type:"percentage",pct:e}}return {type:"time",seconds:ve(t)}}function ve(t){if(!t)return 0;let e=t.split(":");if(e.length!==3)return 0;let r=Number.parseInt(e[0],10),n=Number.parseInt(e[1],10),i=Number.parseFloat(e[2]);return Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(i)?0:r*3600+n*60+i}function C(t,e,r){let n=new Set,i=0,s=false,a=false,u=e.filter(m=>m.timeOffset.type==="start"),c=e.filter(m=>m.timeOffset.type==="end"),o=e.filter(m=>m.timeOffset.type==="time"||m.timeOffset.type==="percentage").sort((m,T)=>G(m)-G(T));function d(){if(a)return;let m=t.currentTime,T=m>i+1.5;for(let b of o){if(n.has(b))continue;let V=Ee(b,t.duration);if(V!==null){if(T&&m>V+.5){n.add(b);continue}m>=V-.5&&(n.add(b),r(b));}}i=m;}function f(){if(!a)for(let m of c)n.has(m)||(n.add(m),r(m));}function p(){if(!s){s=true;for(let m of u)n.has(m)||(n.add(m),r(m));t.on("timeupdate",d),t.on("ended",f);}}function l(){a=true;}function E(){a=false,i=t.currentTime;}function g(){t.off("timeupdate",d),t.off("ended",f);}return {start:p,pause:l,resume:E,destroy:g}}function Ee(t,e){return t.timeOffset.type==="time"?t.timeOffset.seconds:t.timeOffset.type==="percentage"?t.timeOffset.pct/100*e:null}function G(t){return t.timeOffset.type==="time"?t.timeOffset.seconds:t.timeOffset.type==="percentage"?t.timeOffset.pct:0}function H(t){return {name:"vmap",setup(e){let r=false,n=null,i=null,s=e._setState;async function a(o){if(!(r||!o.adSource)){n&&n.pause(),k(o.trackingEvents.breakStart),e.emit("ad:breakStart",{breakId:o.breakId});try{let T=function(){for(let h of m)h();m.length=0;},B=function(h){if(l)for(let v of l.trackingEvents.progress)!R.has(v.offset)&&h>=v.offset&&(R.add(v.offset),k([v.url]));};var d=T,f=B;let p;if(o.adSource.vastData)p=I(o.adSource.vastData);else if(o.adSource.vastUrl)p=await K(o.adSource.vastUrl,t.vastOptions);else return;if(r||p.ads.length===0)return;let l=null,E=null;for(let h of p.ads){for(let v of h.creatives)if(v.linear&&v.linear.mediaFiles.length>0){l=v.linear,E=h;break}if(l)break}if(!l||!E)return;let g=E.id;s("ad:loading"),e.emit("ad:start",{adId:g});let m=[];if(t.adPlugins)for(let h of t.adPlugins(E)){let v=h.setup(e,E);v&&m.push(v);}for(let h of p.ads)k(h.impressions);e.emit("ad:impression",{adId:g});let b=he(l.mediaFiles);if(!b){e.emit("ad:error",{error:new Error("No suitable media file found"),source:"vmap"}),T(),s("playing");return}let V=e.el.currentTime,J=e.el.paused,Y=e.el.src,M=$(l.duration,h=>{if(!l)return;let v=l.trackingEvents[h];v&&k(v),e.emit("ad:quartile",{adId:g,quartile:h});}),R=new Set,F=e.el.muted||e.el.volume===0,O=!!document.fullscreenElement;await new Promise(h=>{function v(){M(e.el.currentTime),B(e.el.currentTime);}function Q(){if(!l)return;let S=e.el.muted||e.el.volume===0;S&&!F?(k(l.trackingEvents.mute),e.emit("ad:mute",{adId:g})):!S&&F&&(k(l.trackingEvents.unmute),e.emit("ad:unmute",{adId:g})),F=S,e.emit("ad:volumeChange",{adId:g,volume:e.el.muted?0:e.el.volume});}function D(){if(!l)return;let S=!!document.fullscreenElement;S&&!O?(k(l.trackingEvents.playerExpand),e.emit("ad:fullscreen",{adId:g,fullscreen:!0})):!S&&O&&(k(l.trackingEvents.playerCollapse),e.emit("ad:fullscreen",{adId:g,fullscreen:!1})),O=S;}function U(){l&&M(l.duration),j(),T(),e.emit("ad:end",{adId:g}),e.el.src=Y,e.el.load(),e.el.currentTime=V,J||e.el.play().catch(()=>{e.el.muted=!0,e.el.play().catch(()=>{});}),h();}function j(){e.el.removeEventListener("timeupdate",v),e.el.removeEventListener("ended",U),e.el.removeEventListener("canplay",P),e.el.removeEventListener("volumechange",Q),document.removeEventListener("fullscreenchange",D),i=null;}function P(){e.el.removeEventListener("canplay",P),l&&(k(l.trackingEvents.loaded),k(l.trackingEvents.creativeView),e.emit("ad:loaded",{adId:g}),s("ad:playing"),e.el.play().catch(()=>{e.el.muted=!0,e.el.play().catch(()=>{});}));}e.el.addEventListener("canplay",P),e.el.addEventListener("timeupdate",v),e.el.addEventListener("ended",U),e.el.addEventListener("volumechange",Q),document.addEventListener("fullscreenchange",D),i=j,e.el.src=b.url,e.el.load();});}catch(p){r||(k(o.trackingEvents.error),e.emit("ad:error",{error:p instanceof Error?p:new Error(String(p)),source:"vmap"}));}finally{k(o.trackingEvents.breakEnd),e.emit("ad:breakEnd",{breakId:o.breakId}),n&&n.resume();}}}async function u(){if(!r)try{let o=t.timeout??1e4,d=new AbortController,f=setTimeout(()=>d.abort(),o),p;try{let g=await fetch(t.url,{signal:d.signal});if(!g.ok)throw new Error(`VMAP fetch failed: ${g.status}`);p=await g.text();}finally{clearTimeout(f);}if(r)return;let l=x(p);if(l.adBreaks.length===0)return;let E=C(e,l.adBreaks,g=>a(g));n=E,E.start();}catch(o){if(r)return;e.emit("ad:error",{error:o instanceof Error?o:new Error(String(o)),source:"vmap"});}}function c({to:o}){o==="ready"&&!r&&(e.off("statechange",c),u());}return e.state==="ready"||e.state==="playing"||e.state==="paused"?u():e.on("statechange",c),()=>{r=true,e.off("statechange",c),n&&n.destroy(),i&&i();}}}}function he(t){if(t.length===0)return null;let e=t.filter(n=>n.mimeType==="video/mp4");return (e.length>0?e:t).sort((n,i)=>(i.bitrate??0)-(n.bitrate??0))[0]}var ke=globalThis.Vide??(globalThis.Vide={});Object.assign(ke,{vmap:H,parseVmap:x,createScheduler:C});})();
@@ -1,5 +1,5 @@
1
- import { P as Player, e as Plugin } from '../types-Cine0xi3.js';
2
- import { e as VastAd, b as AdPlugin } from '../types-8aPf_wxJ.js';
1
+ import { P as Player, e as Plugin } from '../types-vxIcXgJz.js';
2
+ import { e as VastAd, b as AdPlugin } from '../types-CAJmacV6.js';
3
3
 
4
4
  interface VmapResponse {
5
5
  version: string;
package/package.json CHANGED
@@ -1,8 +1,10 @@
1
1
  {
2
2
  "name": "@videts/vide",
3
- "version": "0.7.4",
3
+ "version": "0.8.0",
4
4
  "description": "Zero-config, web-standard-first modular video player. VAST, VMAP, HLS, DASH, DRM, SSAI, OMID, SIMID — all as plugins. Core under 2KB gzip.",
5
5
  "type": "module",
6
+ "unpkg": "dist/vide.global.js",
7
+ "jsdelivr": "dist/vide.global.js",
6
8
  "exports": {
7
9
  ".": {
8
10
  "types": "./dist/index.d.ts",