@videts/vide 0.9.3 → 0.9.7
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.
- package/dist/{chunk-G74QBLVV.mjs → chunk-2UHU76KF.mjs} +1 -1
- package/dist/{chunk-2OVLZ27V.mjs → chunk-7R6TO7ZE.mjs} +1 -1
- package/dist/chunk-AQLZYNP7.mjs +1 -0
- package/dist/{chunk-VPH4JIJV.mjs → chunk-CD27DYME.mjs} +1 -1
- package/dist/chunk-TNHV5PHM.mjs +1 -0
- package/dist/chunk-YBNODS5R.mjs +2 -0
- package/dist/chunk-YE6RITJU.mjs +1 -0
- package/dist/{chunk-NA4C7W64.mjs → chunk-ZUEPNVVV.mjs} +1 -1
- package/dist/dash/index.d.ts +2 -2
- package/dist/drm/index.d.ts +1 -1
- package/dist/drm/index.js +1 -1
- package/dist/drm/index.mjs +1 -1
- package/dist/hls/index.d.ts +2 -2
- package/dist/hls/index.js +1 -1
- package/dist/hls/index.mjs +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/omid/index.d.ts +2 -2
- package/dist/react/index.d.ts +7 -8
- package/dist/react/index.js +2 -2
- package/dist/react/index.mjs +2 -2
- package/dist/simid/index.d.ts +2 -2
- package/dist/ssai/index.d.ts +1 -1
- package/dist/ssai/index.js +1 -1
- package/dist/ssai/index.mjs +1 -1
- package/dist/svelte/VideUI.svelte +2 -1
- package/dist/svelte/Video.svelte +2 -9
- package/dist/svelte/Video.svelte.d.ts +0 -2
- package/dist/svelte/components/AdCountdown.svelte +1 -1
- package/dist/svelte/components/AdLearnMore.svelte +19 -6
- package/dist/svelte/components/AdLearnMore.svelte.d.ts +0 -1
- package/dist/svelte/components/AdSkip.svelte +7 -7
- package/dist/svelte/components/ErrorDisplay.svelte +1 -1
- package/dist/svelte/components/Loader.svelte +1 -1
- package/dist/svelte/icons/IconExternalLink.svelte +4 -0
- package/dist/svelte/icons/IconExternalLink.svelte.d.ts +26 -0
- package/dist/svelte/icons/IconSkipForward.svelte +3 -0
- package/dist/svelte/icons/IconSkipForward.svelte.d.ts +26 -0
- package/dist/svelte/index.d.ts +2 -0
- package/dist/svelte/index.js +2 -0
- package/dist/{types-BsEF8iWC.d.ts → types-BD5ZFUAt.d.ts} +6 -2
- package/dist/{types-CwjR99DL.d.ts → types-CABQEV7R.d.ts} +1 -1
- package/dist/{types-SuT99_Z3.d.ts → types-CXi-EgbJ.d.ts} +1 -1
- package/dist/{types-DzY1cmXC.d.ts → types-CaEBUCfi.d.ts} +1 -1
- package/dist/{types-C1_eVsFF.d.ts → types-DWH68b8d.d.ts} +1 -1
- package/dist/{types-COeag8fU.d.ts → types-JlkZYMyA.d.ts} +1 -1
- package/dist/ui/index.d.ts +4 -4
- package/dist/ui/index.js +1 -1
- package/dist/ui/index.mjs +1 -1
- package/dist/ui/theme.css +92 -9
- package/dist/vast/index.d.ts +6 -6
- package/dist/vast/index.js +1 -1
- package/dist/vast/index.mjs +1 -1
- package/dist/vide.core.global.js +1 -1
- package/dist/vide.dash.global.js +1 -1
- package/dist/vide.drm.global.js +1 -1
- package/dist/vide.global.js +2 -2
- package/dist/vide.hls.global.js +1 -1
- package/dist/vide.ssai.global.js +1 -1
- package/dist/vide.ui.css +92 -9
- package/dist/vide.ui.global.js +1 -1
- package/dist/vide.vast.global.js +1 -1
- package/dist/vide.vmap.global.js +1 -1
- package/dist/vmap/index.d.ts +4 -4
- package/dist/vmap/index.js +1 -1
- package/dist/vmap/index.mjs +1 -1
- package/dist/vue/index.d.ts +14 -42
- package/dist/vue/index.js +2 -2
- package/dist/vue/index.mjs +2 -2
- package/package.json +1 -1
- package/dist/chunk-3RDTWUHH.mjs +0 -1
- package/dist/chunk-6DWWYSH4.mjs +0 -1
- package/dist/chunk-LPSJOF2I.mjs +0 -2
- package/dist/chunk-WINCDUN5.mjs +0 -1
package/dist/vide.ui.css
CHANGED
|
@@ -137,6 +137,23 @@
|
|
|
137
137
|
background: var(--vide-accent-ad);
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
+
/* ═══════════════════════════════════════════
|
|
141
|
+
FOCUS
|
|
142
|
+
═══════════════════════════════════════════ */
|
|
143
|
+
|
|
144
|
+
.vide-ui :focus-visible {
|
|
145
|
+
outline: 2px solid var(--vide-accent);
|
|
146
|
+
outline-offset: 2px;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.vide-bigplay:focus-visible {
|
|
150
|
+
outline-offset: 4px;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.vide-ui :focus:not(:focus-visible) {
|
|
154
|
+
outline: none;
|
|
155
|
+
}
|
|
156
|
+
|
|
140
157
|
/* ═══════════════════════════════════════════
|
|
141
158
|
AUTOHIDE (mouse-idle during playback)
|
|
142
159
|
═══════════════════════════════════════════ */
|
|
@@ -663,7 +680,7 @@
|
|
|
663
680
|
|
|
664
681
|
.vide-ad-label {
|
|
665
682
|
position: absolute;
|
|
666
|
-
bottom: calc(var(--vide-controls-height) + var(--vide-ad-overlay-gap)
|
|
683
|
+
bottom: calc(var(--vide-controls-height) + var(--vide-ad-overlay-gap));
|
|
667
684
|
left: var(--vide-ad-overlay-gap);
|
|
668
685
|
z-index: 4;
|
|
669
686
|
|
|
@@ -677,8 +694,13 @@
|
|
|
677
694
|
letter-spacing: 0.03em;
|
|
678
695
|
line-height: var(--vide-line-height);
|
|
679
696
|
color: var(--vide-text-dim);
|
|
680
|
-
text-shadow: 0 0
|
|
681
|
-
transition: transform 0.25s var(--vide-ease);
|
|
697
|
+
text-shadow: 0 0 1px rgba(0, 0, 0, 0.6);
|
|
698
|
+
transition: transform 0.25s var(--vide-ease), bottom 0.25s var(--vide-ease);
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
/* Push label/countdown above CTA when it's visible */
|
|
702
|
+
.vide-ui:has(.vide-ad-cta:not([hidden])) .vide-ad-label {
|
|
703
|
+
bottom: calc(var(--vide-controls-height) + var(--vide-ad-overlay-gap) + 52px);
|
|
682
704
|
}
|
|
683
705
|
|
|
684
706
|
/* ─────────────────────────────────────────
|
|
@@ -688,7 +710,7 @@
|
|
|
688
710
|
|
|
689
711
|
.vide-ad-countdown {
|
|
690
712
|
position: absolute;
|
|
691
|
-
bottom: calc(var(--vide-controls-height) + var(--vide-ad-overlay-gap)
|
|
713
|
+
bottom: calc(var(--vide-controls-height) + var(--vide-ad-overlay-gap));
|
|
692
714
|
left: calc(var(--vide-ad-overlay-gap) + 28px);
|
|
693
715
|
z-index: 4;
|
|
694
716
|
|
|
@@ -701,10 +723,14 @@
|
|
|
701
723
|
font-weight: 400;
|
|
702
724
|
line-height: var(--vide-line-height);
|
|
703
725
|
color: var(--vide-text-dim);
|
|
704
|
-
text-shadow: 0 0
|
|
726
|
+
text-shadow: 0 0 1px rgba(0, 0, 0, 0.6);
|
|
705
727
|
font-variant-numeric: tabular-nums;
|
|
706
728
|
white-space: nowrap;
|
|
707
|
-
transition: transform 0.25s var(--vide-ease);
|
|
729
|
+
transition: transform 0.25s var(--vide-ease), bottom 0.25s var(--vide-ease);
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
.vide-ui:has(.vide-ad-cta:not([hidden])) .vide-ad-countdown {
|
|
733
|
+
bottom: calc(var(--vide-controls-height) + var(--vide-ad-overlay-gap) + 52px);
|
|
708
734
|
}
|
|
709
735
|
|
|
710
736
|
.vide-ad-countdown::before {
|
|
@@ -918,12 +944,14 @@
|
|
|
918
944
|
max-width: 60%;
|
|
919
945
|
}
|
|
920
946
|
|
|
921
|
-
/* Label/countdown → bottom-left (above controls) */
|
|
922
|
-
.vide-ad-label
|
|
947
|
+
/* Label/countdown → bottom-left (above controls, CTA moves to top) */
|
|
948
|
+
.vide-ad-label,
|
|
949
|
+
.vide-ui:has(.vide-ad-cta:not([hidden])) .vide-ad-label {
|
|
923
950
|
bottom: calc(var(--vide-controls-height) + var(--vide-ad-overlay-gap));
|
|
924
951
|
}
|
|
925
952
|
|
|
926
|
-
.vide-ad-countdown
|
|
953
|
+
.vide-ad-countdown,
|
|
954
|
+
.vide-ui:has(.vide-ad-cta:not([hidden])) .vide-ad-countdown {
|
|
927
955
|
bottom: calc(var(--vide-controls-height) + var(--vide-ad-overlay-gap));
|
|
928
956
|
}
|
|
929
957
|
|
|
@@ -954,3 +982,58 @@
|
|
|
954
982
|
font-size: 13px;
|
|
955
983
|
}
|
|
956
984
|
}
|
|
985
|
+
|
|
986
|
+
/* ═══════════════════════════════════════════
|
|
987
|
+
SCREEN READER ONLY
|
|
988
|
+
═══════════════════════════════════════════ */
|
|
989
|
+
|
|
990
|
+
.vide-sr-only {
|
|
991
|
+
position: absolute;
|
|
992
|
+
width: 1px;
|
|
993
|
+
height: 1px;
|
|
994
|
+
padding: 0;
|
|
995
|
+
margin: -1px;
|
|
996
|
+
overflow: hidden;
|
|
997
|
+
clip: rect(0, 0, 0, 0);
|
|
998
|
+
white-space: nowrap;
|
|
999
|
+
border: 0;
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
/* ═══════════════════════════════════════════
|
|
1003
|
+
REDUCED MOTION
|
|
1004
|
+
═══════════════════════════════════════════ */
|
|
1005
|
+
|
|
1006
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1007
|
+
.vide-loader__spinner {
|
|
1008
|
+
animation-duration: 4s;
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
.vide-controls,
|
|
1012
|
+
.vide-bigplay,
|
|
1013
|
+
.vide-progress__bar,
|
|
1014
|
+
.vide-progress__handle,
|
|
1015
|
+
.vide-progress__buffered,
|
|
1016
|
+
.vide-volume__slider,
|
|
1017
|
+
.vide-skip,
|
|
1018
|
+
.vide-ad-label,
|
|
1019
|
+
.vide-ad-countdown,
|
|
1020
|
+
.vide-ad-cta {
|
|
1021
|
+
transition-duration: 0.01ms !important;
|
|
1022
|
+
}
|
|
1023
|
+
}
|
|
1024
|
+
|
|
1025
|
+
/* ═══════════════════════════════════════════
|
|
1026
|
+
HIGH CONTRAST
|
|
1027
|
+
═══════════════════════════════════════════ */
|
|
1028
|
+
|
|
1029
|
+
@media (prefers-contrast: more) {
|
|
1030
|
+
:root {
|
|
1031
|
+
--vide-text-mid: rgba(255, 255, 255, 0.9);
|
|
1032
|
+
--vide-text-dim: rgba(255, 255, 255, 0.7);
|
|
1033
|
+
--vide-skip-border: rgba(255, 255, 255, 0.5);
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
.vide-ui :focus-visible {
|
|
1037
|
+
outline-width: 3px;
|
|
1038
|
+
}
|
|
1039
|
+
}
|
package/dist/vide.ui.global.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(){'use strict';function P(e){return {name:"ui-ad",setup(t,n){let r=n.creatives.find(o=>o.linear)?.linear;if(r)return e.set({adId:n.id,skipOffset:r.skipOffset,clickThrough:r.clickThrough,duration:r.duration,adTitle:n.adTitle}),()=>{e.clear();}}}}function g(e){return `vide-ui--${e.replace(":","-")}`}function p(e){return e==="ad:loading"||e==="ad:playing"||e==="ad:paused"}function A(e,t){e.classList.add(g(t.state));function n({from:r,to:o}){e.classList.remove(g(r)),e.classList.add(g(o));}return t.on("statechange",n),()=>t.off("statechange",n)}function C(e){if(!Number.isFinite(e)||e<0)return "0:00";let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),o=t%60,i=n>0?String(r).padStart(2,"0"):String(r),l=String(o).padStart(2,"0");return n>0?`${n}:${i}:${l}`:`${i}:${l}`}function u(e,t){let n=document.createElement(e);return n.className=t,n}function S(){let e={current:null,set(t){e.current=t;},clear(){e.current=null;}};return e}function T(e){let t=null,n=null;function r(){if(!t||!n||!p(n.state))return;let o=e.current?.duration??(Number.isFinite(n.el.duration)?n.el.duration:0),i=n.el.currentTime,l=Math.max(0,Math.ceil(o-i));t.textContent=`${l}s`;}return {mount(o){t=u("div","vide-ad-countdown"),o.appendChild(t);},connect(o){n=o,n.on("timeupdate",r);},destroy(){t&&(t.remove(),t=null),n&&(n.off("timeupdate",r),n=null);}}}function M(){let e=null;return {mount(t){e=u("div","vide-ad-label"),e.textContent="Ad",t.appendChild(e);},connect(t){},destroy(){e&&(e.remove(),e=null);}}}var B="http://www.w3.org/2000/svg";function h(e,t="0 0 24 24"){let n=document.createElementNS(B,"svg");n.setAttribute("viewBox",t),n.setAttribute("width","24"),n.setAttribute("height","24"),n.setAttribute("fill","currentColor"),n.setAttribute("aria-hidden","true");for(let r of e){let o=document.createElementNS(B,"path");o.setAttribute("d",r),n.appendChild(o);}return n}function k(){return h(["M8 5v14l11-7z"])}function O(){return h(["M6 19h4V5H6v14zm8-14v14h4V5h-4z"])}function K(){return h(["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 q(){return h(["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 $(){return h(["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 X(){return h(["M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"])}function Y(){return h(["M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"])}function J(){return h(["M5 18l10-6L5 6v12zm12-12v12h2V6h-2z"])}function Q(){return h(["M14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z","M19 19H5V5h7V3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7h-2v7z"])}function ee(e){try{return new URL(e).hostname}catch{return e}}function W(e){let t=null,n=null,r=null,o=null;function i(){if(!o)return;let a=e.current?.clickThrough;a&&(o.el.click(),window.open(a,"_blank"),o.el.pause());}function l(){if(!t)return;let a=e.current,d=a?.clickThrough;t.style.display=d?"":"none",n&&(n.textContent=a?.adTitle??"",n.style.display=a?.adTitle?"":"none"),r&&(r.textContent=d?ee(d):"");}return {mount(a){t=u("button","vide-ad-cta"),t.type="button";let d=u("span","vide-ad-cta__icon");d.appendChild(Q()),t.appendChild(d);let m=u("span","vide-ad-cta__body");n=u("span","vide-ad-cta__title"),n.style.display="none",m.appendChild(n),r=u("span","vide-ad-cta__url"),m.appendChild(r),t.appendChild(m),a.appendChild(t),t.style.display="none";},connect(a){o=a,t&&(t.addEventListener("click",i),a.on("ad:start",l),a.on("ad:end",l),a.on("ad:skip",l),l());},destroy(){t&&(t.removeEventListener("click",i),t.remove(),t=null),o&&(o.off("ad:start",l),o.off("ad:end",l),o.off("ad:skip",l)),o=null,n=null,r=null;}}}function U(e){let t=null,n=null;function r(){if(!n)return;n.el.click();let o=e.current?.clickThrough;o?(window.open(o,"_blank"),n.el.pause()):n.el.paused?Promise.resolve(n.el.play()).catch(()=>{}):n.el.pause();}return {mount(o){t=u("div","vide-ad-overlay"),o.appendChild(t);},connect(o){n=o,t&&t.addEventListener("click",r);},destroy(){t&&(t.removeEventListener("click",r),t.remove(),t=null),n=null;}}}function x(e){let t=null,n=null,r=null;function o(){!r||!e.current||t?.classList.contains("vide-skip--disabled")||r.emit("ad:skip",{adId:e.current.adId});}function i(){if(!t||!n||!r||!p(r.state))return;if(!e.current||e.current.skipOffset===void 0){t.style.display="none";return}t.style.display="";let{skipOffset:a}=e.current,d=r.el.currentTime;if(d>=a)t.classList.remove("vide-skip--disabled"),n.textContent="Skip Ad";else {t.classList.add("vide-skip--disabled");let m=Math.max(0,Math.ceil(a-d));n.textContent=`Skip in ${m}s`;}}function l({to:a}){!t||!n||p(a)||(t.style.display="none",t.classList.add("vide-skip--disabled"),n.textContent="");}return {mount(a){t=u("button","vide-skip vide-skip--disabled"),t.type="button",t.setAttribute("aria-label","Skip ad"),t.style.display="none",n=u("span","vide-skip__label"),t.appendChild(n),t.appendChild(J()),a.appendChild(t);},connect(a){r=a,t&&(t.addEventListener("click",o),r.on("timeupdate",i),r.on("statechange",l));},destroy(){t&&(t.removeEventListener("click",o),t.remove(),t=null,n=null),r&&(r.off("timeupdate",i),r.off("statechange",l),r=null);}}}var te=3e3;function I(){let e=null,t=null,n=null;function r(){if(!t)return true;let m=t.state;return m==="paused"||m==="ended"||m==="idle"||m==="ready"||p(m)}function o(){e&&e.classList.remove("vide-ui--autohide");}function i(){l(),!r()&&(n=setTimeout(()=>{e&&e.classList.add("vide-ui--autohide");},te));}function l(){n!==null&&(clearTimeout(n),n=null);}function a(){o(),i();}function d({to:m}){m==="paused"||m==="ended"||m==="idle"||m==="ready"||p(m)?(l(),o()):i();}return {mount(m){e=m.closest(".vide-ui")??m;},connect(m){t=m,e&&(e.addEventListener("mousemove",a),e.addEventListener("touchstart",a),e.addEventListener("keydown",a),t.on("statechange",d),i());},destroy(){l(),e&&(e.removeEventListener("mousemove",a),e.removeEventListener("touchstart",a),e.removeEventListener("keydown",a),e.classList.remove("vide-ui--autohide"),e=null),t&&(t.off("statechange",d),t=null);}}}function H(){let e=null,t=null;function n(){if(t){if(t.state==="ended"){let o=function({to:i}){i==="ready"&&(t?.off("statechange",o),t?.play().catch(()=>{}));};t.on("statechange",o),t.el.currentTime=0,t.el.load();return}t.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){t=r,e&&e.addEventListener("click",n);},destroy(){e&&(e.removeEventListener("click",n),e.remove(),e=null),t=null;}}}var ne=200;function V(e){let t=null,n=null,r=null,o=null;function i(){n&&(n.state==="playing"||n.state==="ad:playing"?n.pause():n.play().catch(()=>{}));}function l(){!o||e.has("fullscreen")||(document.fullscreenElement!=null?document.exitFullscreen().catch(()=>{}):o.requestFullscreen&&o.requestFullscreen().catch(()=>{}));}function a(){if(n){if(p(n.state)){i();return}if(r!==null){clearTimeout(r),r=null,l();return}r=setTimeout(()=>{r=null,i();},ne);}}return {mount(d){t=u("div","vide-clickplay"),o=d.closest(".vide-ui")?.parentElement??d,d.appendChild(t);},connect(d){n=d,t&&t.addEventListener("click",a);},destroy(){r!==null&&(clearTimeout(r),r=null),t&&(t.removeEventListener("click",a),t.remove(),t=null),n=null,o=null;}}}function w(){let e=null,t=null,n=null;function r({message:o}){t&&(t.textContent=o);}return {mount(o){e=u("div","vide-error"),t=u("span","vide-error__message"),e.appendChild(t),o.appendChild(e);},connect(o){n=o,n.on("error",r);},destroy(){e&&(e.remove(),e=null,t=null),n&&(n.off("error",r),n=null);}}}function _(){let e=null,t=null,n=null;function r(){return document.fullscreenElement!=null||document.webkitFullscreenElement!=null}function o(a){e&&(n&&n.remove(),n=a?Y():X(),e.appendChild(n));}function i(){t&&(r()?typeof document.exitFullscreen=="function"?document.exitFullscreen().catch(()=>{}):typeof document.webkitExitFullscreen=="function"&&document.webkitExitFullscreen():typeof t.requestFullscreen=="function"?t.requestFullscreen().catch(()=>{}):typeof t.webkitRequestFullscreen=="function"?t.webkitRequestFullscreen():t.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){t=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,n=null),document.removeEventListener("fullscreenchange",l),document.removeEventListener("webkitfullscreenchange",l),t=null;}}}function j(e){let t=null,n=null,{excluded:r}=e;function o(i){if(!n)return;let l=!r.has("volume"),a=!r.has("progress"),d=!r.has("fullscreen"),m=p(n.state);switch(i.key){case " ":case "k":case "K":i.preventDefault(),n.state==="playing"||n.state==="ad:playing"?n.pause():n.play().catch(()=>{});break;case "ArrowLeft":if(!a||m)return;i.preventDefault(),n.currentTime=Math.max(0,n.el.currentTime-5);break;case "ArrowRight":if(!a||m)return;i.preventDefault(),n.currentTime=Math.min(n.el.duration||0,n.el.currentTime+5);break;case "ArrowUp":if(!l)return;i.preventDefault(),n.volume=Math.min(1,n.volume+.1),n.muted&&(n.muted=false);break;case "ArrowDown":if(!l)return;i.preventDefault(),n.volume=Math.max(0,n.volume-.1);break;case "m":case "M":if(!l)return;i.preventDefault(),n.muted=!n.muted;break;case "f":case "F":if(!d)return;if(i.preventDefault(),document.fullscreenElement!=null)document.exitFullscreen().catch(()=>{});else {let c=t?.closest(".vide-ui")?.parentElement??t;c?.requestFullscreen&&c.requestFullscreen().catch(()=>{});}break;default:if(i.key.length===1&&i.key>="0"&&i.key<="9"&&a&&!m){i.preventDefault();let c=Number.parseInt(i.key,10)/10,y=n.el.duration;Number.isFinite(y)&&y>0&&(n.currentTime=c*y);}break}}return {mount(i){t=i.closest(".vide-ui")??i,t.setAttribute("tabindex","0");},connect(i){n=i,t&&t.addEventListener("keydown",o);},destroy(){t&&(t.removeEventListener("keydown",o),t.removeAttribute("tabindex"),t=null),n=null;}}}function D(){let e=null;return {mount(t){e=u("div","vide-loader");let n=u("div","vide-loader__spinner");e.appendChild(n),t.appendChild(e);},connect(t){},destroy(){e&&(e.remove(),e=null);}}}function F(){let e=null,t=null,n=null;function r(l){e&&(n&&n.remove(),n=l?O():k(),e.appendChild(n));}function o(){t&&(t.state==="playing"||t.state==="ad:playing"?t.pause():t.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){t=l,e&&(e.addEventListener("click",o),t.on("statechange",i));},destroy(){e&&(e.removeEventListener("click",o),e.remove(),e=null,n=null),t&&(t.off("statechange",i),t=null);}}}function G(e){let t=null;return {mount(n){t=u("div","vide-poster");let r=u("img","vide-poster__image");r.src=e.src,r.alt="",t.appendChild(r),n.appendChild(t);},connect(n){},destroy(){t&&(t.remove(),t=null);}}}function R(){let e=null,t=null,n=null,r=null,o=null,i=null,l=false;function a(s){if(!e)return 0;let v=e.getBoundingClientRect();return v.width===0?0:Math.max(0,Math.min(1,(s.clientX-v.left)/v.width))}function d(s){if(!e)return;let v=String(s);e.style.setProperty("--vide-progress",v),o?.style.setProperty("--vide-progress",v);}function m(){if(!i||!n)return;let s=i.el;if(s.buffered.length>0&&s.duration>0){let b=s.buffered.end(s.buffered.length-1)/s.duration;n.style.setProperty("--vide-progress-buffered",String(Math.min(1,b)));}}function c(){if(l||!i)return;let{currentTime:s,duration:v}=i.el;v>0&&d(s/v),m(),e&&(e.setAttribute("aria-valuenow",String(Math.floor(s))),Number.isFinite(v)&&e.setAttribute("aria-valuemax",String(Math.floor(v))));}function y(s){!i||!e||p(i.state)||(l=true,e.classList.add("vide-progress--dragging"),e.setPointerCapture(s.pointerId),d(a(s)));}function E(s){l&&d(a(s));}function L(s){if(!l||!i)return;l=false,e&&(e.classList.remove("vide-progress--dragging"),e.releasePointerCapture(s.pointerId));let v=a(s),b=i.el.duration;Number.isFinite(b)&&b>0&&(i.currentTime=v*b);}function f({to:s}){e&&(p(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"),n=u("div","vide-progress__buffered"),t=u("div","vide-progress__bar"),r=u("div","vide-progress__handle"),e.appendChild(n),e.appendChild(t),e.appendChild(r),s.appendChild(e),o=s.closest(".vide-ui");},connect(s){i=s,e&&(i.on("timeupdate",c),i.on("statechange",f),e.addEventListener("pointerdown",y),e.addEventListener("pointermove",E),e.addEventListener("pointerup",L));},destroy(){e&&(e.removeEventListener("pointerdown",y),e.removeEventListener("pointermove",E),e.removeEventListener("pointerup",L),e.remove(),e=null,t=null,n=null,r=null),i&&(i.off("timeupdate",c),i.off("statechange",f),i=null),o=null;}}}function z(){let e=null,t=null,n=null,r=null;function o({currentTime:i,duration:l}){t&&(t.textContent=C(i)),n&&(n.textContent=C(l));}return {mount(i){e=u("div","vide-time"),t=u("span","vide-time__current");let l=u("span","vide-time__separator");n=u("span","vide-time__duration"),t.textContent="0:00",l.textContent="/",n.textContent="0:00",e.appendChild(t),e.appendChild(l),e.appendChild(n),i.appendChild(e);},connect(i){r=i,r.on("timeupdate",o);},destroy(){e&&(e.remove(),e=null,t=null,n=null),r&&(r.off("timeupdate",o),r=null);}}}function N(){let e=null,t=null,n=null,r=null,o=false,i=null;function l(){if(!t||!r)return;i&&i.remove(),r.muted||r.volume===0?i=$():r.volume<.5?i=q():i=K(),t.appendChild(i);}function a(){if(!r||!e||!t)return;r.muted||r.volume===0?(e.classList.add("vide-volume--muted"),t.setAttribute("aria-label","Unmute")):(e.classList.remove("vide-volume--muted"),t.setAttribute("aria-label","Mute"));let s=r.muted?0:r.volume;e.style.setProperty("--vide-volume",String(s)),n&&n.setAttribute("aria-valuenow",String(Math.round(s*100))),l();}function d(f){if(!n)return 0;let s=n.getBoundingClientRect();return s.width===0?0:Math.max(0,Math.min(1,(f.clientX-s.left)/s.width))}function m(){r&&(r.muted=!r.muted);}function c(){o||a();}function y(f){if(!r||!n)return;o=true,n.setPointerCapture(f.pointerId);let s=d(f);r.volume=s,r.muted&&s>0&&(r.muted=false),a();}function E(f){if(!o||!r)return;let s=d(f);r.volume=s,r.muted&&s>0&&(r.muted=false),a();}function L(f){!o||!n||(o=false,n.releasePointerCapture(f.pointerId));}return {mount(f){e=u("div","vide-volume"),t=u("button","vide-volume__button"),t.type="button",t.setAttribute("aria-label","Mute"),n=u("div","vide-volume__slider"),n.setAttribute("role","slider"),n.setAttribute("aria-label","Volume"),n.setAttribute("aria-valuemin","0"),n.setAttribute("aria-valuemax","100"),n.setAttribute("aria-valuenow","100");let s=u("div","vide-volume__track"),v=u("div","vide-volume__filled");n.appendChild(s),n.appendChild(v),e.appendChild(t),e.appendChild(n),f.appendChild(e);},connect(f){r=f,!(!t||!n)&&(t.addEventListener("click",m),n.addEventListener("pointerdown",y),n.addEventListener("pointermove",E),n.addEventListener("pointerup",L),r.el.addEventListener("volumechange",c),a());},destroy(){t&&t.removeEventListener("click",m),n&&(n.removeEventListener("pointerdown",y),n.removeEventListener("pointermove",E),n.removeEventListener("pointerup",L)),r&&(r.el.removeEventListener("volumechange",c),r=null),e&&(e.remove(),e=null,t=null,n=null,i=null);}}}function re(e,t,n){e.mount(t),e.connect(n);}var oe=new Set(["ad-overlay"]);function Z(e){let t=S(),n=new Set(oe);if(e.include)for(let r of e.include)n.delete(r);if(e.exclude)for(let r of e.exclude)n.add(r);return {name:"ui",setup(r){r.isAudio&&(n.add("fullscreen"),n.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(c,y,E){n.has(c)||(re(y,E,r),i.push(y));}if(l("loader",D(),o),l("error",w(),o),l("bigplay",H(),o),e.poster&&l("poster",G({src:e.poster}),o),l("clickplay",V(n),o),!n.has("ad-overlay")||!n.has("ad-label")||!n.has("ad-countdown")||!n.has("ad-skip")||!n.has("ad-learn-more")){let c=document.createElement("div");c.className="vide-ad",o.appendChild(c),l("ad-overlay",U(t),c),l("ad-label",M(),c),l("ad-countdown",T(t),c),l("ad-skip",x(t),c),l("ad-learn-more",W(t),c);}let d=document.createElement("div");d.className="vide-controls",d.addEventListener("click",c=>c.stopPropagation()),o.appendChild(d),l("play",F(),d),l("progress",R(),d),l("time",z(),d),l("volume",N(),d),l("fullscreen",_(),d),l("autohide",I(),o),l("keyboard",j({excluded:n}),o);let m=A(o,r);return ()=>{for(let c of i)c.destroy();m(),o.remove();}},getAdPlugin(){return ()=>[P(t)]}}}var ie=globalThis.Vide??(globalThis.Vide={});Object.assign(ie,{ui:Z,createPlayButton:F,createProgress:R,createTimeDisplay:z,createVolume:N,createFullscreen:_,createLoader:D,createErrorDisplay:w,createBigPlay:H,createPoster:G,createAdCountdown:T,createAdSkip:x,createAdOverlay:U,createAdLabel:M,createKeyboard:j,createClickPlay:V,createAutohide:I,connectStateClasses:A,stateToClass:g,isAdState:p,formatTime:C,createAdUIState:S,uiAdPlugin:P});
|
|
1
|
+
(function(){'use strict';function P(e){return {name:"ui-ad",setup(t,n){let r=n.creatives.find(o=>o.linear)?.linear;if(r)return e.set({adId:n.id,skipOffset:r.skipOffset,clickThrough:r.clickThrough,duration:r.duration,adTitle:n.adTitle}),()=>{e.clear();}}}}function b(e){return `vide-ui--${e.replace(":","-")}`}function p(e){return e==="ad:loading"||e==="ad:playing"||e==="ad:paused"}function A(e,t){e.classList.add(b(t.state));function n({from:r,to:o}){e.classList.remove(b(r)),e.classList.add(b(o));}return t.on("statechange",n),()=>t.off("statechange",n)}function g(e){if(!Number.isFinite(e)||e<0)return "0:00";let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),o=t%60,i=n>0?String(r).padStart(2,"0"):String(r),l=String(o).padStart(2,"0");return n>0?`${n}:${i}:${l}`:`${i}:${l}`}function s(e,t){let n=document.createElement(e);return n.className=t,n}function S(){let e={current:null,set(t){e.current=t;},clear(){e.current=null;}};return e}function T(e){let t=null,n=null;function r(){if(!t||!n||!p(n.state))return;let o=e.current?.duration??(Number.isFinite(n.el.duration)?n.el.duration:0),i=n.el.currentTime,l=Math.max(0,Math.ceil(o-i));t.textContent=`${l}s`;}return {mount(o){t=s("div","vide-ad-countdown"),t.setAttribute("aria-label","Ad countdown"),t.setAttribute("aria-live","off"),o.appendChild(t);},connect(o){n=o,n.on("timeupdate",r);},destroy(){t&&(t.remove(),t=null),n&&(n.off("timeupdate",r),n=null);}}}function M(){let e=null;return {mount(t){e=s("div","vide-ad-label"),e.textContent="Ad",t.appendChild(e);},connect(t){},destroy(){e&&(e.remove(),e=null);}}}var B="http://www.w3.org/2000/svg";function h(e,t="0 0 24 24"){let n=document.createElementNS(B,"svg");n.setAttribute("viewBox",t),n.setAttribute("width","24"),n.setAttribute("height","24"),n.setAttribute("fill","currentColor"),n.setAttribute("aria-hidden","true");for(let r of e){let o=document.createElementNS(B,"path");o.setAttribute("d",r),n.appendChild(o);}return n}function k(){return h(["M8 5v14l11-7z"])}function O(){return h(["M6 19h4V5H6v14zm8-14v14h4V5h-4z"])}function K(){return h(["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 q(){return h(["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 $(){return h(["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 X(){return h(["M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"])}function Y(){return h(["M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"])}function J(){return h(["M5 18l10-6L5 6v12zm12-12v12h2V6h-2z"])}function Q(){return h(["M14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z","M19 19H5V5h7V3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7h-2v7z"])}function ee(e){try{return new URL(e).hostname}catch{return e}}function W(e){let t=null,n=null,r=null,o=null;function i(){if(!o)return;let a=e.current?.clickThrough;a&&(o.el.click(),window.open(a,"_blank"),o.el.pause());}function l(){if(!t)return;let a=e.current,c=a?.clickThrough;t.hidden=!c,n&&(n.textContent=a?.adTitle??"",n.style.display=a?.adTitle?"":"none"),r&&(r.textContent=c?ee(c):"");}return {mount(a){t=s("button","vide-ad-cta"),t.type="button";let c=s("span","vide-ad-cta__icon");c.appendChild(Q()),t.appendChild(c);let m=s("span","vide-ad-cta__body");n=s("span","vide-ad-cta__title"),n.style.display="none",m.appendChild(n),r=s("span","vide-ad-cta__url"),m.appendChild(r),t.appendChild(m),a.appendChild(t),t.hidden=true;},connect(a){o=a,t&&(t.addEventListener("click",i),a.on("ad:start",l),a.on("ad:end",l),a.on("ad:skip",l),l());},destroy(){t&&(t.removeEventListener("click",i),t.remove(),t=null),o&&(o.off("ad:start",l),o.off("ad:end",l),o.off("ad:skip",l)),o=null,n=null,r=null;}}}function U(e){let t=null,n=null;function r(){if(!n)return;n.el.click();let o=e.current?.clickThrough;o?(window.open(o,"_blank"),n.el.pause()):n.el.paused?Promise.resolve(n.el.play()).catch(()=>{}):n.el.pause();}return {mount(o){t=s("div","vide-ad-overlay"),o.appendChild(t);},connect(o){n=o,t&&t.addEventListener("click",r);},destroy(){t&&(t.removeEventListener("click",r),t.remove(),t=null),n=null;}}}function x(e){let t=null,n=null,r=null;function o(){!r||!e.current||t?.classList.contains("vide-skip--disabled")||r.emit("ad:skip",{adId:e.current.adId});}function i(){if(!t||!n||!r||!p(r.state))return;if(!e.current||e.current.skipOffset===void 0){t.style.display="none";return}t.style.display="";let{skipOffset:a}=e.current,c=r.el.currentTime;if(c>=a)t.classList.remove("vide-skip--disabled"),t.removeAttribute("aria-disabled"),n.textContent="Skip Ad";else {t.classList.add("vide-skip--disabled"),t.setAttribute("aria-disabled","true");let m=Math.max(0,Math.ceil(a-c));n.textContent=`Skip in ${m}s`;}}function l({to:a}){!t||!n||p(a)||(t.style.display="none",t.classList.add("vide-skip--disabled"),t.setAttribute("aria-disabled","true"),n.textContent="");}return {mount(a){t=s("button","vide-skip vide-skip--disabled"),t.type="button",t.setAttribute("aria-label","Skip ad"),t.setAttribute("aria-disabled","true"),t.style.display="none",n=s("span","vide-skip__label"),t.appendChild(n),t.appendChild(J()),a.appendChild(t);},connect(a){r=a,t&&(t.addEventListener("click",o),r.on("timeupdate",i),r.on("statechange",l));},destroy(){t&&(t.removeEventListener("click",o),t.remove(),t=null,n=null),r&&(r.off("timeupdate",i),r.off("statechange",l),r=null);}}}var te=3e3;function I(){let e=null,t=null,n=null;function r(){if(!t)return true;let u=t.state;return u==="paused"||u==="ended"||u==="idle"||u==="ready"||p(u)}function o(){return e?.querySelector(".vide-controls")??null}function i(){if(!e)return;e.classList.remove("vide-ui--autohide");let u=o();u&&(u.inert=false);}function l(){a(),!r()&&(n=setTimeout(()=>{if(e){e.classList.add("vide-ui--autohide");let u=o();u&&(u.inert=true);}},te));}function a(){n!==null&&(clearTimeout(n),n=null);}function c(){i(),l();}function m({to:u}){u==="paused"||u==="ended"||u==="idle"||u==="ready"||p(u)?(a(),i()):l();}return {mount(u){e=u.closest(".vide-ui")??u;},connect(u){t=u,e&&(e.addEventListener("mousemove",c),e.addEventListener("touchstart",c),e.addEventListener("keydown",c),t.on("statechange",m),l());},destroy(){if(a(),e){e.removeEventListener("mousemove",c),e.removeEventListener("touchstart",c),e.removeEventListener("keydown",c),e.classList.remove("vide-ui--autohide");let u=o();u&&(u.inert=false),e=null;}t&&(t.off("statechange",m),t=null);}}}function H(){let e=null,t=null;function n(){if(t){if(t.state==="ended"){let o=function({to:i}){i==="ready"&&(t?.off("statechange",o),t?.play().catch(()=>{}));};t.on("statechange",o),t.el.currentTime=0,t.el.load();return}t.play().catch(()=>{});}}return {mount(r){e=s("button","vide-bigplay"),e.type="button",e.setAttribute("aria-label","Play video"),e.appendChild(k()),r.appendChild(e);},connect(r){t=r,e&&e.addEventListener("click",n);},destroy(){e&&(e.removeEventListener("click",n),e.remove(),e=null),t=null;}}}var ne=200;function V(e){let t=null,n=null,r=null,o=null;function i(){n&&(n.state==="playing"||n.state==="ad:playing"?n.pause():n.play().catch(()=>{}));}function l(){!o||e.has("fullscreen")||(document.fullscreenElement!=null?document.exitFullscreen().catch(()=>{}):o.requestFullscreen&&o.requestFullscreen().catch(()=>{}));}function a(){if(n){if(p(n.state)){i();return}if(r!==null){clearTimeout(r),r=null,l();return}r=setTimeout(()=>{r=null,i();},ne);}}return {mount(c){t=s("div","vide-clickplay"),t.setAttribute("role","presentation"),o=c.closest(".vide-ui")?.parentElement??c,c.appendChild(t);},connect(c){n=c,t&&t.addEventListener("click",a);},destroy(){r!==null&&(clearTimeout(r),r=null),t&&(t.removeEventListener("click",a),t.remove(),t=null),n=null,o=null;}}}function w(){let e=null,t=null,n=null;function r({message:o}){t&&(t.textContent=o);}return {mount(o){e=s("div","vide-error"),e.setAttribute("role","alert"),t=s("span","vide-error__message"),e.appendChild(t),o.appendChild(e);},connect(o){n=o,n.on("error",r);},destroy(){e&&(e.remove(),e=null,t=null),n&&(n.off("error",r),n=null);}}}function _(){let e=null,t=null,n=null;function r(){return document.fullscreenElement!=null||document.webkitFullscreenElement!=null}function o(a){e&&(n&&n.remove(),n=a?Y():X(),e.appendChild(n));}function i(){t&&(r()?typeof document.exitFullscreen=="function"?document.exitFullscreen().catch(()=>{}):typeof document.webkitExitFullscreen=="function"&&document.webkitExitFullscreen():typeof t.requestFullscreen=="function"?t.requestFullscreen().catch(()=>{}):typeof t.webkitRequestFullscreen=="function"?t.webkitRequestFullscreen():t.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){t=a.closest(".vide-ui")?.parentElement??a,e=s("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,n=null),document.removeEventListener("fullscreenchange",l),document.removeEventListener("webkitfullscreenchange",l),t=null;}}}function j(e){let t=null,n=null,{excluded:r}=e;function o(i){if(!n)return;let l=!r.has("volume"),a=!r.has("progress"),c=!r.has("fullscreen"),m=p(n.state);switch(i.key){case " ":case "k":case "K":i.preventDefault(),n.state==="playing"||n.state==="ad:playing"?n.pause():n.play().catch(()=>{});break;case "ArrowLeft":if(!a||m)return;i.preventDefault(),n.currentTime=Math.max(0,n.el.currentTime-5);break;case "ArrowRight":if(!a||m)return;i.preventDefault(),n.currentTime=Math.min(n.el.duration||0,n.el.currentTime+5);break;case "ArrowUp":if(!l)return;i.preventDefault(),n.volume=Math.min(1,n.volume+.1),n.muted&&(n.muted=false);break;case "ArrowDown":if(!l)return;i.preventDefault(),n.volume=Math.max(0,n.volume-.1);break;case "m":case "M":if(!l)return;i.preventDefault(),n.muted=!n.muted;break;case "f":case "F":if(!c)return;if(i.preventDefault(),document.fullscreenElement!=null)document.exitFullscreen().catch(()=>{});else {let u=t?.closest(".vide-ui")?.parentElement??t;u?.requestFullscreen&&u.requestFullscreen().catch(()=>{});}break;default:if(i.key.length===1&&i.key>="0"&&i.key<="9"&&a&&!m){i.preventDefault();let u=Number.parseInt(i.key,10)/10,y=n.el.duration;Number.isFinite(y)&&y>0&&(n.currentTime=u*y);}break}}return {mount(i){t=i.closest(".vide-ui")??i,t.setAttribute("tabindex","0");},connect(i){n=i,t&&t.addEventListener("keydown",o);},destroy(){t&&(t.removeEventListener("keydown",o),t.removeAttribute("tabindex"),t=null),n=null;}}}function D(){let e=null;return {mount(t){e=s("div","vide-loader"),e.setAttribute("role","status"),e.setAttribute("aria-label","Loading");let n=s("div","vide-loader__spinner");e.appendChild(n),t.appendChild(e);},connect(t){},destroy(){e&&(e.remove(),e=null);}}}function F(){let e=null,t=null,n=null;function r(l){e&&(n&&n.remove(),n=l?O():k(),e.appendChild(n));}function o(){t&&(t.state==="playing"||t.state==="ad:playing"?t.pause():t.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=s("button","vide-play vide-play--paused"),e.type="button",e.setAttribute("aria-label","Play"),r(false),l.appendChild(e);},connect(l){t=l,e&&(e.addEventListener("click",o),t.on("statechange",i));},destroy(){e&&(e.removeEventListener("click",o),e.remove(),e=null,n=null),t&&(t.off("statechange",i),t=null);}}}function G(e){let t=null;return {mount(n){t=s("div","vide-poster");let r=s("img","vide-poster__image");r.src=e.src,r.alt="",t.appendChild(r),n.appendChild(t);},connect(n){},destroy(){t&&(t.remove(),t=null);}}}function R(){let e=null,t=null,n=null,r=null,o=null,i=null,l=false;function a(d){if(!e)return 0;let v=e.getBoundingClientRect();return v.width===0?0:Math.max(0,Math.min(1,(d.clientX-v.left)/v.width))}function c(d){if(!e)return;let v=String(d);e.style.setProperty("--vide-progress",v),o?.style.setProperty("--vide-progress",v);}function m(){if(!i||!n)return;let d=i.el;if(d.buffered.length>0&&d.duration>0){let L=d.buffered.end(d.buffered.length-1)/d.duration;n.style.setProperty("--vide-progress-buffered",String(Math.min(1,L)));}}function u(){if(l||!i)return;let{currentTime:d,duration:v}=i.el;v>0&&c(d/v),m(),e&&(e.setAttribute("aria-valuenow",String(Math.floor(d))),Number.isFinite(v)&&e.setAttribute("aria-valuemax",String(Math.floor(v))));}function y(d){!i||!e||p(i.state)||(l=true,e.classList.add("vide-progress--dragging"),e.setPointerCapture(d.pointerId),c(a(d)));}function E(d){l&&c(a(d));}function C(d){if(!l||!i)return;l=false,e&&(e.classList.remove("vide-progress--dragging"),e.releasePointerCapture(d.pointerId));let v=a(d),L=i.el.duration;Number.isFinite(L)&&L>0&&(i.currentTime=v*L);}function f({to:d}){e&&(p(d)?e.classList.add("vide-progress--disabled"):e.classList.remove("vide-progress--disabled"));}return {mount(d){e=s("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"),n=s("div","vide-progress__buffered"),t=s("div","vide-progress__bar"),r=s("div","vide-progress__handle"),e.appendChild(n),e.appendChild(t),e.appendChild(r),d.appendChild(e),o=d.closest(".vide-ui");},connect(d){i=d,e&&(i.on("timeupdate",u),i.on("statechange",f),e.addEventListener("pointerdown",y),e.addEventListener("pointermove",E),e.addEventListener("pointerup",C));},destroy(){e&&(e.removeEventListener("pointerdown",y),e.removeEventListener("pointermove",E),e.removeEventListener("pointerup",C),e.remove(),e=null,t=null,n=null,r=null),i&&(i.off("timeupdate",u),i.off("statechange",f),i=null),o=null;}}}function z(){let e=null,t=null,n=null,r=null;function o({currentTime:i,duration:l}){t&&(t.textContent=g(i)),n&&(n.textContent=g(l));}return {mount(i){e=s("div","vide-time"),e.setAttribute("aria-label","Playback time"),t=s("span","vide-time__current");let l=s("span","vide-time__separator");n=s("span","vide-time__duration"),t.textContent="0:00",l.textContent="/",n.textContent="0:00",e.appendChild(t),e.appendChild(l),e.appendChild(n),i.appendChild(e);},connect(i){r=i,r.on("timeupdate",o);},destroy(){e&&(e.remove(),e=null,t=null,n=null),r&&(r.off("timeupdate",o),r=null);}}}function N(){let e=null,t=null,n=null,r=null,o=false,i=null;function l(){if(!t||!r)return;i&&i.remove(),r.muted||r.volume===0?i=$():r.volume<.5?i=q():i=K(),t.appendChild(i);}function a(){if(!r||!e||!t)return;r.muted||r.volume===0?(e.classList.add("vide-volume--muted"),t.setAttribute("aria-label","Unmute")):(e.classList.remove("vide-volume--muted"),t.setAttribute("aria-label","Mute"));let d=r.muted?0:r.volume;e.style.setProperty("--vide-volume",String(d)),n&&n.setAttribute("aria-valuenow",String(Math.round(d*100))),l();}function c(f){if(!n)return 0;let d=n.getBoundingClientRect();return d.width===0?0:Math.max(0,Math.min(1,(f.clientX-d.left)/d.width))}function m(){r&&(r.muted=!r.muted);}function u(){o||a();}function y(f){if(!r||!n)return;o=true,n.setPointerCapture(f.pointerId);let d=c(f);r.volume=d,r.muted&&d>0&&(r.muted=false),a();}function E(f){if(!o||!r)return;let d=c(f);r.volume=d,r.muted&&d>0&&(r.muted=false),a();}function C(f){!o||!n||(o=false,n.releasePointerCapture(f.pointerId));}return {mount(f){e=s("div","vide-volume"),t=s("button","vide-volume__button"),t.type="button",t.setAttribute("aria-label","Mute"),n=s("div","vide-volume__slider"),n.setAttribute("role","slider"),n.setAttribute("aria-label","Volume"),n.setAttribute("aria-valuemin","0"),n.setAttribute("aria-valuemax","100"),n.setAttribute("aria-valuenow","100");let d=s("div","vide-volume__track"),v=s("div","vide-volume__filled");n.appendChild(d),n.appendChild(v),e.appendChild(t),e.appendChild(n),f.appendChild(e);},connect(f){r=f,!(!t||!n)&&(t.addEventListener("click",m),n.addEventListener("pointerdown",y),n.addEventListener("pointermove",E),n.addEventListener("pointerup",C),r.el.addEventListener("volumechange",u),a());},destroy(){t&&t.removeEventListener("click",m),n&&(n.removeEventListener("pointerdown",y),n.removeEventListener("pointermove",E),n.removeEventListener("pointerup",C)),r&&(r.el.removeEventListener("volumechange",u),r=null),e&&(e.remove(),e=null,t=null,n=null,i=null);}}}function re(e,t,n){e.mount(t),e.connect(n);}var oe=new Set(["ad-overlay"]);function Z(e){let t=S(),n=new Set(oe);if(e.include)for(let r of e.include)n.delete(r);if(e.exclude)for(let r of e.exclude)n.add(r);return {name:"ui",setup(r){r.isAudio&&(n.add("fullscreen"),n.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(u,y,E){n.has(u)||(re(y,E,r),i.push(y));}if(l("loader",D(),o),l("error",w(),o),l("bigplay",H(),o),e.poster&&l("poster",G({src:e.poster}),o),l("clickplay",V(n),o),!n.has("ad-overlay")||!n.has("ad-label")||!n.has("ad-countdown")||!n.has("ad-skip")||!n.has("ad-learn-more")){let u=document.createElement("div");u.className="vide-ad",o.appendChild(u),l("ad-overlay",U(t),u),l("ad-label",M(),u),l("ad-countdown",T(t),u),l("ad-skip",x(t),u),l("ad-learn-more",W(t),u);}let c=document.createElement("div");c.className="vide-controls",c.addEventListener("click",u=>u.stopPropagation()),o.appendChild(c),l("play",F(),c),l("progress",R(),c),l("time",z(),c),l("volume",N(),c),l("fullscreen",_(),c),l("autohide",I(),o),l("keyboard",j({excluded:n}),o);let m=A(o,r);return ()=>{for(let u of i)u.destroy();m(),o.remove();}},getAdPlugin(){return ()=>[P(t)]}}}var ie=globalThis.Vide??(globalThis.Vide={});Object.assign(ie,{ui:Z,createPlayButton:F,createProgress:R,createTimeDisplay:z,createVolume:N,createFullscreen:_,createLoader:D,createErrorDisplay:w,createBigPlay:H,createPoster:G,createAdCountdown:T,createAdSkip:x,createAdOverlay:U,createAdLabel:M,createKeyboard:j,createClickPlay:V,createAutohide:I,connectStateClasses:A,stateToClass:b,isAdState:p,formatTime:g,createAdUIState:S,uiAdPlugin:P});
|
|
2
2
|
})();
|
package/dist/vide.vast.global.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){'use strict';function L(t){let n=new DOMParser().parseFromString(t,"text/xml");if(n.querySelector("parsererror"))return {version:"",ads:[],errors:["VAST XML parse error"]};let i=n.documentElement;if(i.tagName!=="VAST")return {version:"",ads:[],errors:["Document is not a VAST response"]};let s=i.getAttribute("version")??"",o=w(i,"Error"),c=k(i,"Ad"),l=[];for(let p of c){let a=ge(p);a&&l.push(a);}return {version:s,ads:l,errors:o}}function ge(t){let e=S(t,"InLine");if(!e)return null;let n=t.getAttribute("id")??"",r=t.getAttribute("sequence"),i=T(r,void 0),s=b(e,"AdSystem"),o=b(e,"AdTitle"),c=P(e,"Impression"),l=w(e,"Error"),p=e.querySelector("Creatives"),a=[];if(p){let v=k(p,"Creative");for(let A of v)a.push(ve(A));}let d=te(e),m=Ae(e),g=ne(e),u=re(e);return {id:n,sequence:i,adSystem:s,adTitle:o,impressions:c,creatives:a,errors:l,verifications:d,categories:m,extensions:g,viewableImpression:u}}function te(t){let e=t.querySelector("AdVerifications");if(!e)return;let n=[],r=k(e,"Verification");for(let i of r){let s=i.getAttribute("vendor")??"",o="",c,l=i.querySelector("JavaScriptResource");if(l)o=(l.textContent??"").trim(),c=l.getAttribute("apiFramework")??void 0;else {let d=i.querySelector("ExecutableResource");d&&(o=(d.textContent??"").trim(),c=d.getAttribute("apiFramework")??void 0);}let p=i.querySelector("VerificationParameters"),a=p&&(p.textContent??"").trim()||void 0;n.push({vendor:s,resourceUrl:o,apiFramework:c,parameters:a});}return n.length>0?n:void 0}function Ae(t){let e=k(t,"Category");if(e.length===0)return;let n=[];for(let r of e){let i=r.getAttribute("authority")??"",s=(r.textContent??"").trim();s&&n.push({authority:i,value:s});}return n.length>0?n:void 0}function ne(t){let e=S(t,"Extensions");if(!e)return;let n=[],r=new XMLSerializer;for(let i of k(e,"Extension")){let s=i.getAttribute("type")??"",o="";for(let c=0;c<i.childNodes.length;c++)o+=r.serializeToString(i.childNodes[c]);o=o.trim(),o&&n.push({type:s,content:o});}return n.length>0?n:void 0}function re(t){let e=S(t,"ViewableImpression");if(!e)return;let n=w(e,"Viewable"),r=w(e,"NotViewable"),i=w(e,"ViewUndetermined");if(!(n.length===0&&r.length===0&&i.length===0))return {viewable:n,notViewable:r,viewUndetermined:i}}function ve(t){let e=t.getAttribute("id")??void 0,n=t.getAttribute("sequence"),r=T(n,void 0),i=t.querySelector("Linear"),s=i?Ee(i):null,o=se(t),c=be(t);return {id:e,sequence:r,linear:s,companionAds:o,nonLinearAds:c}}function Ee(t){let e=b(t,"Duration"),n=j(e),r=t.getAttribute("skipoffset"),i=r!==null?ce(r,n):void 0,s=ke(t),o=Te(t),c=ae(t),l=t.querySelector("VideoClicks"),p=l&&b(l,"ClickThrough")||void 0,a=l?P(l,"ClickTracking"):[];return {duration:n,skipOffset:i,mediaFiles:s,interactiveCreativeFiles:o,trackingEvents:c,clickThrough:p,clickTracking:a}}function ke(t){let e=t.querySelector("MediaFiles");if(!e)return [];let n=[],r=k(e,"MediaFile");for(let i of r){let s=(i.textContent??"").trim();if(!s)continue;let o=i.getAttribute("delivery");n.push({url:s,mimeType:i.getAttribute("type")??"",width:T(i.getAttribute("width"),0),height:T(i.getAttribute("height"),0),bitrate:T(i.getAttribute("bitrate"),void 0),delivery:o==="streaming"?"streaming":"progressive"});}return n}function Te(t){let e=t.querySelector("MediaFiles");if(!e)return [];let n=[],r=k(e,"InteractiveCreativeFile");for(let i of r){let s=(i.textContent??"").trim();if(!s)continue;let o=i.getAttribute("apiFramework")??"",c=i.getAttribute("variableDuration"),l=c==="true"?true:c==="false"?false:void 0;n.push({url:s,apiFramework:o,variableDuration:l});}return n}function ie(t){let e=[];for(let n of k(t,"StaticResource")){let r=(n.textContent??"").trim(),i=n.getAttribute("creativeType")??"";r&&e.push({type:"static",url:r,creativeType:i});}for(let n of k(t,"IFrameResource")){let r=(n.textContent??"").trim();r&&e.push({type:"iframe",url:r});}for(let n of k(t,"HTMLResource")){let r=(n.textContent??"").trim();r&&e.push({type:"html",content:r});}return e}function se(t){let e=S(t,"CompanionAds");if(!e)return;let n=e.getAttribute("required"),r=n==="all"||n==="any"?n:"none",i=[];for(let s of k(e,"Companion")){let o=Ve(s);o&&i.push(o);}return i.length>0?{required:r,companions:i}:void 0}function Ve(t){let e=T(t.getAttribute("width"),0),n=T(t.getAttribute("height"),0);if(e===0||n===0)return null;let r=t.getAttribute("id")??void 0,i=T(t.getAttribute("assetWidth"),void 0),s=T(t.getAttribute("assetHeight"),void 0),o=T(t.getAttribute("expandedWidth"),void 0),c=T(t.getAttribute("expandedHeight"),void 0),l=t.getAttribute("apiFramework")??void 0,p=t.getAttribute("adSlotId")??void 0,a=_e(t.getAttribute("pxratio"),void 0),d=t.getAttribute("renderingMode"),m=d==="end-card"||d==="concurrent"?d:d==="default"?"default":void 0,g=ie(t),u=b(t,"CompanionClickThrough")||void 0,v=P(t,"CompanionClickTracking"),A=he(t),C=b(t,"AltText")||void 0,R=b(t,"AdParameters")||void 0;return {width:e,height:n,id:r,assetWidth:i,assetHeight:s,expandedWidth:o,expandedHeight:c,apiFramework:l,adSlotId:p,pxratio:a,renderingMode:m,resources:g,clickThrough:u,clickTracking:v,trackingEvents:A,altText:C,adParameters:R}}function he(t){let e={creativeView:[]},n=t.querySelector("TrackingEvents");if(!n)return e;for(let r of n.querySelectorAll("Tracking")){let i=r.getAttribute("event"),s=(r.textContent??"").trim();i==="creativeView"&&s&&e.creativeView.push(s);}return e}function be(t){let e=S(t,"NonLinearAds");if(!e)return;let n=oe(e),r=[];for(let i of k(e,"NonLinear")){let s=Re(i);s&&r.push(s);}return r.length>0?{trackingEvents:n,nonLinears:r}:void 0}function Re(t){let e=T(t.getAttribute("width"),0),n=T(t.getAttribute("height"),0);if(e===0||n===0)return null;let r=t.getAttribute("id")??void 0,i=T(t.getAttribute("expandedWidth"),void 0),s=T(t.getAttribute("expandedHeight"),void 0),o=t.getAttribute("scalable"),c=o==="true"?true:o==="false"?false:void 0,l=t.getAttribute("maintainAspectRatio"),p=l==="true"?true:l==="false"?false:void 0,a=t.getAttribute("minSuggestedDuration"),d=a&&j(a)||void 0,m=t.getAttribute("apiFramework")??void 0,g=ie(t),u=b(t,"NonLinearClickThrough")||void 0,v=P(t,"NonLinearClickTracking"),A=b(t,"AdParameters")||void 0;return {width:e,height:n,id:r,expandedWidth:i,expandedHeight:s,scalable:c,maintainAspectRatio:p,minSuggestedDuration:d,apiFramework:m,resources:g,clickThrough:u,clickTracking:v,adParameters:A}}function oe(t){let e={},n=S(t,"TrackingEvents");if(!n)return e;for(let r of k(n,"Tracking")){let i=r.getAttribute("event"),s=(r.textContent??"").trim();!i||!s||(e[i]||(e[i]=[]),e[i].push(s));}return e}var Se=new Set(["start","firstQuartile","midpoint","thirdQuartile","complete","pause","resume","skip","loaded","mute","unmute","rewind","playerExpand","playerCollapse","closeLinear","notUsed","otherAdInteraction","creativeView"]);function ae(t){let e=Z(),n=t.querySelector("TrackingEvents");if(!n)return e;let r=n.querySelectorAll("Tracking");for(let i of r){let s=i.getAttribute("event"),o=(i.textContent??"").trim();if(!(!s||!o))if(s==="progress"){let c=i.getAttribute("offset"),l=c?ce(c,0):0;e.progress.push({offset:l,url:o});}else Se.has(s)&&e[s].push(o);}return e}function j(t){if(!t)return 0;let e=t.split(":");if(e.length!==3)return 0;let n=Number.parseInt(e[0],10),r=Number.parseInt(e[1],10),i=Number.parseFloat(e[2]);return Number.isNaN(n)||Number.isNaN(r)||Number.isNaN(i)?0:n*3600+r*60+i}function ce(t,e){if(t.endsWith("%")){let n=Number.parseFloat(t);return Number.isNaN(n)?0:n/100*e}return j(t)}function k(t,e){let n=[];for(let r=0;r<t.children.length;r++)t.children[r].tagName===e&&n.push(t.children[r]);return n}function S(t,e){for(let n=0;n<t.children.length;n++)if(t.children[n].tagName===e)return t.children[n];return null}function w(t,e){let n=[];for(let r of k(t,e)){let i=(r.textContent??"").trim();i&&n.push(i);}return n}function b(t,e){let n=t.querySelector(e);return n?(n.textContent??"").trim():""}function P(t,e){let n=t.querySelectorAll(e),r=[];for(let i of n){let s=(i.textContent??"").trim();s&&r.push(s);}return r}async function O(t,e){let n=e?.timeout??5e3,r=new AbortController,i=setTimeout(()=>r.abort(),n);try{let s=await fetch(t,{signal:r.signal});if(!s.ok)throw new Error(`VAST fetch failed: ${s.status}`);return await s.text()}finally{clearTimeout(i);}}async function H(t,e){let n=e?.timeout??1e4,r=e?.maxDepth??5,i=Date.now()+n,s=new Set,o=[],c=t;for(let l=0;l<=r;l++){let p=i-Date.now();if(p<=0)return {version:"",ads:[],errors:["VAST resolve timeout"]};if(s.has(c))return {version:"",ads:[],errors:["VAST circular reference detected"]};s.add(c);let a;try{a=await O(c,{timeout:p});}catch(g){return {version:"",ads:[],errors:[g instanceof Error?g.message:String(g)]}}let d=L(a);if(d.ads.length>0)return {version:d.version,ads:d.ads.map(g=>Ne(g,o)),errors:d.errors};let m=ye(a);if(!m)return d;o.push(m),c=m.adTagUri;}return {version:"",ads:[],errors:["VAST wrapper depth limit exceeded"]}}function ye(t){let r=new DOMParser().parseFromString(t,"text/xml").documentElement;if(r.tagName!=="VAST")return null;for(let i of k(r,"Ad")){let s=S(i,"Wrapper");if(!s)continue;let o=b(s,"VASTAdTagURI").trim();if(!o)continue;let c=w(s,"Error"),l=P(s,"Impression"),p=Z(),a=[],d,m=[],g=[],u={},v=[],A=s.querySelector("Creatives");if(A)for(let N of k(A,"Creative")){let _=N.querySelector("Linear");if(_){p=ae(_);let h=_.querySelector("VideoClicks");h&&(a=P(h,"ClickTracking"));}let x=se(N);if(x){d=x;for(let h of x.companions)m.push(...h.clickTracking),g.push(...h.trackingEvents.creativeView);}let I=S(N,"NonLinearAds");if(I){u=oe(I);for(let h of k(I,"NonLinear"))v.push(...P(h,"NonLinearClickTracking"));}}let C=te(s),R=ne(s),M=re(s);return {adTagUri:o,errors:c,impressions:l,trackingEvents:p,clickTracking:a,companionAds:d,companionClickTracking:m,companionCreativeViewTracking:g,nonLinearTrackingEvents:u,nonLinearClickTracking:v,verifications:C,extensions:R,viewableImpression:M}}return null}function Z(){return {start:[],firstQuartile:[],midpoint:[],thirdQuartile:[],complete:[],pause:[],resume:[],skip:[],loaded:[],mute:[],unmute:[],rewind:[],playerExpand:[],playerCollapse:[],closeLinear:[],notUsed:[],otherAdInteraction:[],creativeView:[],progress:[]}}function Ce(t,e){let n=Z();for(let r of Object.keys(n)){if(r==="progress")continue;let i=n[r];for(let s of t)i.push(...s[r]);i.push(...e[r]);}for(let r of t)n.progress.push(...r.progress);return n.progress.push(...e.progress),n}function Pe(t,e){let n=[...t,e].filter(r=>r!==void 0);if(n.length!==0)return {viewable:n.flatMap(r=>r.viewable),notViewable:n.flatMap(r=>r.notViewable),viewUndetermined:n.flatMap(r=>r.viewUndetermined)}}function Ne(t,e){if(e.length===0)return t;let n=[...e.flatMap(a=>a.errors),...t.errors],r=[...e.flatMap(a=>a.impressions),...t.impressions],i=e.flatMap(a=>a.verifications??[]),s=i.length>0||t.verifications&&t.verifications.length>0?[...i,...t.verifications??[]]:t.verifications,o=e.flatMap(a=>a.extensions??[]),c=o.length>0||t.extensions&&t.extensions.length>0?[...o,...t.extensions??[]]:t.extensions,l=Pe(e.map(a=>a.viewableImpression),t.viewableImpression),p=t.creatives.map(a=>{let d=a;if(a.linear&&(d={...d,linear:{...a.linear,trackingEvents:Ce(e.map(m=>m.trackingEvents),a.linear.trackingEvents),clickTracking:[...e.flatMap(m=>m.clickTracking),...a.linear.clickTracking]}}),a.companionAds){let m=e.flatMap(u=>u.companionClickTracking),g=e.flatMap(u=>u.companionCreativeViewTracking);(m.length>0||g.length>0)&&(d={...d,companionAds:{...a.companionAds,companions:a.companionAds.companions.map(u=>({...u,clickTracking:[...m,...u.clickTracking],trackingEvents:{creativeView:[...g,...u.trackingEvents.creativeView]}}))}});}else for(let m=e.length-1;m>=0;m--)if(e[m].companionAds){d={...d,companionAds:e[m].companionAds};break}if(a.nonLinearAds){let m=e.flatMap(u=>u.nonLinearClickTracking),g={};for(let u of e)for(let[v,A]of Object.entries(u.nonLinearTrackingEvents))g[v]||(g[v]=[]),g[v].push(...A);for(let[u,v]of Object.entries(a.nonLinearAds.trackingEvents))g[u]||(g[u]=[]),g[u].push(...v);d={...d,nonLinearAds:{trackingEvents:g,nonLinears:a.nonLinearAds.nonLinears.map(u=>({...u,clickTracking:[...m,...u.clickTracking]}))}};}return d});return {...t,errors:n,impressions:r,creatives:p,verifications:s,extensions:c,viewableImpression:l}}function T(t,e){if(t==null)return e;let n=Number.parseInt(t,10);return Number.isNaN(n)?e:n}function _e(t,e){if(t==null)return e;let n=Number.parseFloat(t);return Number.isNaN(n)?e:n}function D(t){if(t.length===0)return null;let e=t.filter(r=>r.mimeType==="video/mp4");return (e.length>0?e:t).sort((r,i)=>(i.bitrate??0)-(r.bitrate??0))[0]}function y(t,e){let n=t.map(r=>r.replace("[ERRORCODE]",String(e)));E(n);}function E(t){for(let e of t)typeof navigator<"u"&&typeof navigator.sendBeacon=="function"?navigator.sendBeacon(e):new Image().src=e;}function Q(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 de(t,e){let n=new Set,r=["start","firstQuartile","midpoint","thirdQuartile","complete"];return i=>{let s=Q(i,t);if(!s||n.has(s))return;let o=r.indexOf(s);for(let c=0;c<=o;c++){let l=r[c];n.has(l)||(n.add(l),e(l));}}}function X(t){E(t.trackingEvents.creativeView);}function F(t){let{player:e,ad:n,linear:r,source:i}=t,s=n.id,o=e._setState,c=()=>{},l=new Promise(f=>{c=f;}),p=[];if(t.adPlugins)for(let f of t.adPlugins(n)){let V=f.setup(e,n);V&&p.push(V);}o("ad:loading"),e.emit("ad:start",{adId:s,clickThrough:r.clickThrough,skipOffset:r.skipOffset,duration:r.duration,adTitle:n.adTitle});for(let f of n.creatives)if(f.companionAds&&f.companionAds.companions.length>0){e.emit("ad:companions",{adId:s,required:f.companionAds.required,companions:f.companionAds.companions});break}for(let f of n.creatives)if(f.nonLinearAds&&f.nonLinearAds.nonLinears.length>0){e.emit("ad:nonlinears",{adId:s,nonLinears:f.nonLinearAds.nonLinears,trackingEvents:f.nonLinearAds.trackingEvents});break}E(n.impressions),e.emit("ad:impression",{adId:s});let a=D(r.mediaFiles);if(!a)return R(),y(n.errors,403),e.emit("ad:error",{error:new Error("No suitable media file found"),source:i,vastErrorCode:403}),e.emit("ad:end",{adId:s}),c({outcome:"error",errorPhase:"load",adId:s}),{promise:l,abort:()=>{}};let d=de(r.duration,f=>{let V=r.trackingEvents[f];V&&E(V),e.emit("ad:quartile",{adId:s,quartile:f});}),m=new Set;function g(f){for(let V of r.trackingEvents.progress)!m.has(V.offset)&&f>=V.offset&&(m.add(V.offset),E([V.url]));}let u=e.el.muted||e.el.volume===0,v=!!document.fullscreenElement,A=false,C=false;function R(){for(let f of p)f();p.length=0;}function M(f){e.emit("ad:end",{adId:s});let V=f==="error"?{outcome:f,errorPhase:C?"playback":"load",adId:s}:{outcome:f,adId:s};t.onFinish&&t.onFinish(V),c(V);}function N(){A||(E(r.clickTracking),e.emit("ad:click",{clickThrough:r.clickThrough,clickTracking:r.clickTracking}));}function _(){A||(E(r.trackingEvents.skip),A=true,U(),R(),M("skipped"));}function x(){A||e.state==="ad:playing"&&(E(r.trackingEvents.pause),o("ad:paused"));}function I(){A||e.state==="ad:paused"&&(E(r.trackingEvents.resume),o("ad:playing"));}function h(){d(e.el.currentTime),g(e.el.currentTime);}function z(){if(A)return;let f=e.el.muted||e.el.volume===0;f&&!u?(E(r.trackingEvents.mute),e.emit("ad:mute",{adId:s})):!f&&u&&(E(r.trackingEvents.unmute),e.emit("ad:unmute",{adId:s})),u=f,e.emit("ad:volumeChange",{adId:s,volume:e.el.muted?0:e.el.volume});}function J(){if(A)return;let f=!!document.fullscreenElement;f&&!v?(E(r.trackingEvents.playerExpand),e.emit("ad:fullscreen",{adId:s,fullscreen:true})):!f&&v&&(E(r.trackingEvents.playerCollapse),e.emit("ad:fullscreen",{adId:s,fullscreen:false})),v=f;}function $(){if(A)return;A=true,U(),R();let f=C?405:401;y(n.errors,f),e.emit("ad:error",{error:new Error("Ad media playback failed"),source:i,vastErrorCode:f}),M("error");}function ee(){A||(A=true,d(r.duration),U(),R(),M("completed"));}function W(){e.el.removeEventListener("canplay",W),C=true,E(r.trackingEvents.loaded),E(r.trackingEvents.creativeView),e.emit("ad:loaded",{adId:s}),o("ad:playing"),e.el.play().catch(()=>{e.el.muted=true,e.el.play().catch(()=>{});});}function U(){e.el.removeEventListener("timeupdate",h),e.el.removeEventListener("ended",ee),e.el.removeEventListener("error",$),e.el.removeEventListener("canplay",W),e.el.removeEventListener("pause",x),e.el.removeEventListener("play",I),e.el.removeEventListener("click",N),e.el.removeEventListener("volumechange",z),document.removeEventListener("fullscreenchange",J),e.off("ad:skip",_);}return e.el.addEventListener("canplay",W),e.el.addEventListener("timeupdate",h),e.el.addEventListener("ended",ee),e.el.addEventListener("error",$),e.el.addEventListener("pause",x),e.el.addEventListener("play",I),e.el.addEventListener("click",N),e.el.addEventListener("volumechange",z),document.addEventListener("fullscreenchange",J),e.on("ad:skip",_),e.el.src=a.url,e.el.load(),{promise:l,abort:()=>{A||(A=true,U(),R());}}}function q(t){let e=[];for(let i of t)for(let s of i.creatives)if(s.linear&&s.linear.mediaFiles.length>0){e.push({ad:i,linear:s.linear});break}if(e.length<=1)return {type:"single",ads:e,standalonePool:[]};let n=e.filter(i=>i.ad.sequence!=null),r=e.filter(i=>i.ad.sequence==null);return n.length>0?(n.sort((i,s)=>(i.ad.sequence??0)-(s.ad.sequence??0)),{type:"pod",ads:n,standalonePool:r}):{type:"waterfall",ads:r,standalonePool:[]}}async function Y(t,e,n){let r={completed:0,skipped:0,failed:0},i=e.length,s=n.standalonePool?[...n.standalonePool]:[];t.emit("ad:pod:start",{ads:e.map(o=>o.ad),total:i});for(let o=0;o<e.length;o++){let{ad:c,linear:l}=e[o],p=o===e.length-1;t.emit("ad:pod:adstart",{ad:c,index:o,total:i});let{promise:a}=F({player:t,ad:c,linear:l,source:n.source,adPlugins:n.adPlugins,onFinish:p?n.onFinish:void 0}),d=await a;if(d.outcome==="error"&&s.length>0){let m=s.shift(),{promise:g}=F({player:t,ad:m.ad,linear:m.linear,source:n.source,adPlugins:n.adPlugins,onFinish:p?n.onFinish:void 0});d=await g;}switch(t.emit("ad:pod:adend",{ad:c,index:o,total:i}),d.outcome){case "completed":r.completed++;break;case "skipped":r.skipped++;break;case "error":r.failed++;break}}return t.emit("ad:pod:end",r),r}async function B(t,e,n){for(let{ad:r,linear:i}of e){let{promise:s}=F({player:t,ad:r,linear:i,source:n.source,adPlugins:n.adPlugins,onFinish:n.onFinish}),o=await s;if(o.outcome!=="error"||o.errorPhase==="playback")return o}return null}function pe(t){return {name:"vast",setup(e){let n=false,r=null,i=e._setState;async function s(){if(!n)try{let u=function(){n||(i("playing"),xe(e,g,m));};var c=u;let l=t.timeout!==void 0?{timeout:t.timeout}:void 0,p=await O(t.tagUrl,l);if(n)return;let a=L(p);if(a.ads.length===0){i("playing");return}let d=q(a.ads);if(d.ads.length===0){i("playing");return}let m=e.el.currentTime,g=e.src;switch(e.src="",d.type){case "single":{let{promise:v,abort:A}=F({player:e,ad:d.ads[0].ad,linear:d.ads[0].linear,source:"vast",adPlugins:t.adPlugins,onFinish:u});r=A,await v;break}case "pod":{await Y(e,d.ads,{source:"vast",adPlugins:t.adPlugins,onFinish:u,standalonePool:d.standalonePool});break}case "waterfall":{await B(e,d.ads,{source:"vast",adPlugins:t.adPlugins,onFinish:u})||(y(a.errors,303),e.emit("ad:error",{error:new Error("All waterfall ads failed"),source:"vast",vastErrorCode:303}),u());break}}}catch(l){if(n)return;let p=l instanceof Error?l:new Error(String(l)),a=p.name==="AbortError"?301:100;e.emit("ad:error",{error:p,source:"vast",vastErrorCode:a}),i("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),r&&r();}}}}function xe(t,e,n){function r({to:i}){i==="ready"&&(t.off("statechange",r),n>0&&(t.el.currentTime=n),t.play().catch(()=>{t.el.muted=true,t.play().catch(()=>{});}));}t.on("statechange",r),t.src=e;}var lt=globalThis.Vide??(globalThis.Vide={});Object.assign(lt,{vast:pe,parseVast:L,fetchVast:O,resolveVast:H,track:E,trackError:y,trackCompanionView:X,getQuartile:Q,classifyAds:q,selectMediaFile:D,VAST_XML_PARSE_ERROR:100,VAST_SCHEMA_ERROR:101,VAST_VERSION_UNSUPPORTED:102,VAST_TRAFFICKING_ERROR:200,VAST_LINEARITY_ERROR:201,VAST_DURATION_ERROR:202,VAST_SIZE_ERROR:203,VAST_CATEGORY_REQUIRED:204,VAST_CATEGORY_BLOCKED:205,VAST_BREAK_SHORTENED:206,VAST_WRAPPER_ERROR:300,VAST_WRAPPER_TIMEOUT:301,VAST_WRAPPER_LIMIT:302,VAST_NO_ADS:303,VAST_INLINE_TIMEOUT:304,VAST_LINEAR_ERROR:400,VAST_MEDIA_NOT_FOUND:401,VAST_MEDIA_TIMEOUT:402,VAST_MEDIA_UNSUPPORTED:403,VAST_MEDIA_DISPLAY_ERROR:405,VAST_MEZZANINE_REQUIRED:406,VAST_MEZZANINE_DOWNLOADING:407,VAST_CONDITIONAL_REJECTED:408,VAST_INTERACTIVE_NOT_EXECUTED:409,VAST_VERIFICATION_NOT_EXECUTED:410,VAST_MEZZANINE_INVALID:411,VAST_NONLINEAR_ERROR:500,VAST_NONLINEAR_SIZE_ERROR:501,VAST_NONLINEAR_FETCH_ERROR:502,VAST_NONLINEAR_UNSUPPORTED:503,VAST_COMPANION_ERROR:600,VAST_COMPANION_SIZE_ERROR:601,VAST_COMPANION_REQUIRED_ERROR:602,VAST_COMPANION_FETCH_ERROR:603,VAST_COMPANION_UNSUPPORTED:604,VAST_UNDEFINED_ERROR:900,VAST_VPAID_ERROR:901,VAST_INTERACTIVE_ERROR:902});})();
|
|
1
|
+
(function(){'use strict';function L(t){let n=new DOMParser().parseFromString(t,"text/xml");if(n.querySelector("parsererror"))return {version:"",ads:[],errors:["VAST XML parse error"]};let i=n.documentElement;if(i.tagName!=="VAST")return {version:"",ads:[],errors:["Document is not a VAST response"]};let s=i.getAttribute("version")??"",o=w(i,"Error"),c=k(i,"Ad"),u=[];for(let A of c){let a=pe(A);a&&u.push(a);}return {version:s,ads:u,errors:o}}function pe(t){let e=y(t,"InLine");if(!e)return null;let n=t.getAttribute("id")??"",r=t.getAttribute("sequence"),i=T(r,void 0),s=S(e,"AdSystem"),o=S(e,"AdTitle"),c=C(e,"Impression"),u=w(e,"Error"),A=e.querySelector("Creatives"),a=[];if(A){let v=k(A,"Creative");for(let p of v)a.push(ve(p));}let d=te(e),l=Ae(e),f=ne(e),g=re(e);return {id:n,sequence:i,adSystem:s,adTitle:o,impressions:c,creatives:a,errors:u,verifications:d,categories:l,extensions:f,viewableImpression:g}}function te(t){let e=t.querySelector("AdVerifications");if(!e)return;let n=[],r=k(e,"Verification");for(let i of r){let s=i.getAttribute("vendor")??"",o="",c,u=i.querySelector("JavaScriptResource");if(u)o=(u.textContent??"").trim(),c=u.getAttribute("apiFramework")??void 0;else {let d=i.querySelector("ExecutableResource");d&&(o=(d.textContent??"").trim(),c=d.getAttribute("apiFramework")??void 0);}let A=i.querySelector("VerificationParameters"),a=A&&(A.textContent??"").trim()||void 0;n.push({vendor:s,resourceUrl:o,apiFramework:c,parameters:a});}return n.length>0?n:void 0}function Ae(t){let e=k(t,"Category");if(e.length===0)return;let n=[];for(let r of e){let i=r.getAttribute("authority")??"",s=(r.textContent??"").trim();s&&n.push({authority:i,value:s});}return n.length>0?n:void 0}function ne(t){let e=y(t,"Extensions");if(!e)return;let n=[],r=new XMLSerializer;for(let i of k(e,"Extension")){let s=i.getAttribute("type")??"",o="";for(let c=0;c<i.childNodes.length;c++)o+=r.serializeToString(i.childNodes[c]);o=o.trim(),o&&n.push({type:s,content:o});}return n.length>0?n:void 0}function re(t){let e=y(t,"ViewableImpression");if(!e)return;let n=w(e,"Viewable"),r=w(e,"NotViewable"),i=w(e,"ViewUndetermined");if(!(n.length===0&&r.length===0&&i.length===0))return {viewable:n,notViewable:r,viewUndetermined:i}}function ve(t){let e=t.getAttribute("id")??void 0,n=t.getAttribute("sequence"),r=T(n,void 0),i=t.querySelector("Linear"),s=i?Ee(i):null,o=se(t),c=be(t);return {id:e,sequence:r,linear:s,companionAds:o,nonLinearAds:c}}function Ee(t){let e=S(t,"Duration"),n=j(e),r=t.getAttribute("skipoffset"),i=r!==null?ce(r,n):void 0,s=ke(t),o=Te(t),c=ae(t),u=t.querySelector("VideoClicks"),A=u&&S(u,"ClickThrough")||void 0,a=u?C(u,"ClickTracking"):[];return {duration:n,skipOffset:i,mediaFiles:s,interactiveCreativeFiles:o,trackingEvents:c,clickThrough:A,clickTracking:a}}function ke(t){let e=t.querySelector("MediaFiles");if(!e)return [];let n=[],r=k(e,"MediaFile");for(let i of r){let s=(i.textContent??"").trim();if(!s)continue;let o=i.getAttribute("delivery");n.push({url:s,mimeType:i.getAttribute("type")??"",width:T(i.getAttribute("width"),0),height:T(i.getAttribute("height"),0),bitrate:T(i.getAttribute("bitrate"),void 0),delivery:o==="streaming"?"streaming":"progressive"});}return n}function Te(t){let e=t.querySelector("MediaFiles");if(!e)return [];let n=[],r=k(e,"InteractiveCreativeFile");for(let i of r){let s=(i.textContent??"").trim();if(!s)continue;let o=i.getAttribute("apiFramework")??"",c=i.getAttribute("variableDuration"),u=c==="true"?true:c==="false"?false:void 0;n.push({url:s,apiFramework:o,variableDuration:u});}return n}function ie(t){let e=[];for(let n of k(t,"StaticResource")){let r=(n.textContent??"").trim(),i=n.getAttribute("creativeType")??"";r&&e.push({type:"static",url:r,creativeType:i});}for(let n of k(t,"IFrameResource")){let r=(n.textContent??"").trim();r&&e.push({type:"iframe",url:r});}for(let n of k(t,"HTMLResource")){let r=(n.textContent??"").trim();r&&e.push({type:"html",content:r});}return e}function se(t){let e=y(t,"CompanionAds");if(!e)return;let n=e.getAttribute("required"),r=n==="all"||n==="any"?n:"none",i=[];for(let s of k(e,"Companion")){let o=Ve(s);o&&i.push(o);}return i.length>0?{required:r,companions:i}:void 0}function Ve(t){let e=T(t.getAttribute("width"),0),n=T(t.getAttribute("height"),0);if(e===0||n===0)return null;let r=t.getAttribute("id")??void 0,i=T(t.getAttribute("assetWidth"),void 0),s=T(t.getAttribute("assetHeight"),void 0),o=T(t.getAttribute("expandedWidth"),void 0),c=T(t.getAttribute("expandedHeight"),void 0),u=t.getAttribute("apiFramework")??void 0,A=t.getAttribute("adSlotId")??void 0,a=xe(t.getAttribute("pxratio"),void 0),d=t.getAttribute("renderingMode"),l=d==="end-card"||d==="concurrent"?d:d==="default"?"default":void 0,f=ie(t),g=S(t,"CompanionClickThrough")||void 0,v=C(t,"CompanionClickTracking"),p=he(t),b=S(t,"AltText")||void 0,h=S(t,"AdParameters")||void 0;return {width:e,height:n,id:r,assetWidth:i,assetHeight:s,expandedWidth:o,expandedHeight:c,apiFramework:u,adSlotId:A,pxratio:a,renderingMode:l,resources:f,clickThrough:g,clickTracking:v,trackingEvents:p,altText:b,adParameters:h}}function he(t){let e={creativeView:[]},n=t.querySelector("TrackingEvents");if(!n)return e;for(let r of n.querySelectorAll("Tracking")){let i=r.getAttribute("event"),s=(r.textContent??"").trim();i==="creativeView"&&s&&e.creativeView.push(s);}return e}function be(t){let e=y(t,"NonLinearAds");if(!e)return;let n=oe(e),r=[];for(let i of k(e,"NonLinear")){let s=Re(i);s&&r.push(s);}return r.length>0?{trackingEvents:n,nonLinears:r}:void 0}function Re(t){let e=T(t.getAttribute("width"),0),n=T(t.getAttribute("height"),0);if(e===0||n===0)return null;let r=t.getAttribute("id")??void 0,i=T(t.getAttribute("expandedWidth"),void 0),s=T(t.getAttribute("expandedHeight"),void 0),o=t.getAttribute("scalable"),c=o==="true"?true:o==="false"?false:void 0,u=t.getAttribute("maintainAspectRatio"),A=u==="true"?true:u==="false"?false:void 0,a=t.getAttribute("minSuggestedDuration"),d=a&&j(a)||void 0,l=t.getAttribute("apiFramework")??void 0,f=ie(t),g=S(t,"NonLinearClickThrough")||void 0,v=C(t,"NonLinearClickTracking"),p=S(t,"AdParameters")||void 0;return {width:e,height:n,id:r,expandedWidth:i,expandedHeight:s,scalable:c,maintainAspectRatio:A,minSuggestedDuration:d,apiFramework:l,resources:f,clickThrough:g,clickTracking:v,adParameters:p}}function oe(t){let e={},n=y(t,"TrackingEvents");if(!n)return e;for(let r of k(n,"Tracking")){let i=r.getAttribute("event"),s=(r.textContent??"").trim();!i||!s||(e[i]||(e[i]=[]),e[i].push(s));}return e}var Se=new Set(["start","firstQuartile","midpoint","thirdQuartile","complete","pause","resume","skip","loaded","mute","unmute","rewind","playerExpand","playerCollapse","closeLinear","notUsed","otherAdInteraction","creativeView"]);function ae(t){let e=Z(),n=t.querySelector("TrackingEvents");if(!n)return e;let r=n.querySelectorAll("Tracking");for(let i of r){let s=i.getAttribute("event"),o=(i.textContent??"").trim();if(!(!s||!o))if(s==="progress"){let c=i.getAttribute("offset"),u=c?ce(c,0):0;e.progress.push({offset:u,url:o});}else Se.has(s)&&e[s].push(o);}return e}function j(t){if(!t)return 0;let e=t.split(":");if(e.length!==3)return 0;let n=Number.parseInt(e[0],10),r=Number.parseInt(e[1],10),i=Number.parseFloat(e[2]);return Number.isNaN(n)||Number.isNaN(r)||Number.isNaN(i)?0:n*3600+r*60+i}function ce(t,e){if(t.endsWith("%")){let n=Number.parseFloat(t);return Number.isNaN(n)?0:n/100*e}return j(t)}function k(t,e){let n=[];for(let r=0;r<t.children.length;r++)t.children[r].tagName===e&&n.push(t.children[r]);return n}function y(t,e){for(let n=0;n<t.children.length;n++)if(t.children[n].tagName===e)return t.children[n];return null}function w(t,e){let n=[];for(let r of k(t,e)){let i=(r.textContent??"").trim();i&&n.push(i);}return n}function S(t,e){let n=t.querySelector(e);return n?(n.textContent??"").trim():""}function C(t,e){let n=t.querySelectorAll(e),r=[];for(let i of n){let s=(i.textContent??"").trim();s&&r.push(s);}return r}async function O(t,e){let n=e?.timeout??5e3,r=new AbortController,i=setTimeout(()=>r.abort(),n);try{let s=await fetch(t,{signal:r.signal});if(!s.ok)throw new Error(`VAST fetch failed: ${s.status}`);return await s.text()}finally{clearTimeout(i);}}async function H(t,e){let n=e?.timeout??1e4,r=e?.maxDepth??5,i=Date.now()+n,s=new Set,o=[],c=t;for(let u=0;u<=r;u++){let A=i-Date.now();if(A<=0)return {version:"",ads:[],errors:["VAST resolve timeout"]};if(s.has(c))return {version:"",ads:[],errors:["VAST circular reference detected"]};s.add(c);let a;try{a=await O(c,{timeout:A});}catch(f){return {version:"",ads:[],errors:[f instanceof Error?f.message:String(f)]}}let d=L(a);if(d.ads.length>0)return {version:d.version,ads:d.ads.map(f=>Ne(f,o)),errors:d.errors};let l=ye(a);if(!l)return d;o.push(l),c=l.adTagUri;}return {version:"",ads:[],errors:["VAST wrapper depth limit exceeded"]}}function ye(t){let r=new DOMParser().parseFromString(t,"text/xml").documentElement;if(r.tagName!=="VAST")return null;for(let i of k(r,"Ad")){let s=y(i,"Wrapper");if(!s)continue;let o=S(s,"VASTAdTagURI").trim();if(!o)continue;let c=w(s,"Error"),u=C(s,"Impression"),A=Z(),a=[],d,l=[],f=[],g={},v=[],p=s.querySelector("Creatives");if(p)for(let N of k(p,"Creative")){let x=N.querySelector("Linear");if(x){A=ae(x);let R=x.querySelector("VideoClicks");R&&(a=C(R,"ClickTracking"));}let _=se(N);if(_){d=_;for(let R of _.companions)l.push(...R.clickTracking),f.push(...R.trackingEvents.creativeView);}let I=y(N,"NonLinearAds");if(I){g=oe(I);for(let R of k(I,"NonLinear"))v.push(...C(R,"NonLinearClickTracking"));}}let b=te(s),h=ne(s),M=re(s);return {adTagUri:o,errors:c,impressions:u,trackingEvents:A,clickTracking:a,companionAds:d,companionClickTracking:l,companionCreativeViewTracking:f,nonLinearTrackingEvents:g,nonLinearClickTracking:v,verifications:b,extensions:h,viewableImpression:M}}return null}function Z(){return {start:[],firstQuartile:[],midpoint:[],thirdQuartile:[],complete:[],pause:[],resume:[],skip:[],loaded:[],mute:[],unmute:[],rewind:[],playerExpand:[],playerCollapse:[],closeLinear:[],notUsed:[],otherAdInteraction:[],creativeView:[],progress:[]}}function Pe(t,e){let n=Z();for(let r of Object.keys(n)){if(r==="progress")continue;let i=n[r];for(let s of t)i.push(...s[r]);i.push(...e[r]);}for(let r of t)n.progress.push(...r.progress);return n.progress.push(...e.progress),n}function Ce(t,e){let n=[...t,e].filter(r=>r!==void 0);if(n.length!==0)return {viewable:n.flatMap(r=>r.viewable),notViewable:n.flatMap(r=>r.notViewable),viewUndetermined:n.flatMap(r=>r.viewUndetermined)}}function Ne(t,e){if(e.length===0)return t;let n=[...e.flatMap(a=>a.errors),...t.errors],r=[...e.flatMap(a=>a.impressions),...t.impressions],i=e.flatMap(a=>a.verifications??[]),s=i.length>0||t.verifications&&t.verifications.length>0?[...i,...t.verifications??[]]:t.verifications,o=e.flatMap(a=>a.extensions??[]),c=o.length>0||t.extensions&&t.extensions.length>0?[...o,...t.extensions??[]]:t.extensions,u=Ce(e.map(a=>a.viewableImpression),t.viewableImpression),A=t.creatives.map(a=>{let d=a;if(a.linear&&(d={...d,linear:{...a.linear,trackingEvents:Pe(e.map(l=>l.trackingEvents),a.linear.trackingEvents),clickTracking:[...e.flatMap(l=>l.clickTracking),...a.linear.clickTracking]}}),a.companionAds){let l=e.flatMap(g=>g.companionClickTracking),f=e.flatMap(g=>g.companionCreativeViewTracking);(l.length>0||f.length>0)&&(d={...d,companionAds:{...a.companionAds,companions:a.companionAds.companions.map(g=>({...g,clickTracking:[...l,...g.clickTracking],trackingEvents:{creativeView:[...f,...g.trackingEvents.creativeView]}}))}});}else for(let l=e.length-1;l>=0;l--)if(e[l].companionAds){d={...d,companionAds:e[l].companionAds};break}if(a.nonLinearAds){let l=e.flatMap(g=>g.nonLinearClickTracking),f={};for(let g of e)for(let[v,p]of Object.entries(g.nonLinearTrackingEvents))f[v]||(f[v]=[]),f[v].push(...p);for(let[g,v]of Object.entries(a.nonLinearAds.trackingEvents))f[g]||(f[g]=[]),f[g].push(...v);d={...d,nonLinearAds:{trackingEvents:f,nonLinears:a.nonLinearAds.nonLinears.map(g=>({...g,clickTracking:[...l,...g.clickTracking]}))}};}return d});return {...t,errors:n,impressions:r,creatives:A,verifications:s,extensions:c,viewableImpression:u}}function T(t,e){if(t==null)return e;let n=Number.parseInt(t,10);return Number.isNaN(n)?e:n}function xe(t,e){if(t==null)return e;let n=Number.parseFloat(t);return Number.isNaN(n)?e:n}function D(t){if(t.length===0)return null;let e=t.filter(r=>r.mimeType==="video/mp4");return (e.length>0?e:t).sort((r,i)=>(i.bitrate??0)-(r.bitrate??0))[0]}function P(t,e){let n=t.map(r=>r.replace("[ERRORCODE]",String(e)));E(n);}function E(t){for(let e of t)typeof navigator<"u"&&typeof navigator.sendBeacon=="function"?navigator.sendBeacon(e):new Image().src=e;}function Q(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 de(t,e){let n=new Set,r=["start","firstQuartile","midpoint","thirdQuartile","complete"];return i=>{let s=Q(i,t);if(!s||n.has(s))return;let o=r.indexOf(s);for(let c=0;c<=o;c++){let u=r[c];n.has(u)||(n.add(u),e(u));}}}function X(t){E(t.trackingEvents.creativeView);}function F(t){let{player:e,ad:n,linear:r,source:i}=t,s=n.id,o=e.setState,c=()=>{},u=new Promise(m=>{c=m;}),A=[];if(t.adPlugins)for(let m of t.adPlugins(n)){let V=m.setup(e,n);V&&A.push(V);}o("ad:loading"),e.emit("ad:start",{adId:s,clickThrough:r.clickThrough,skipOffset:r.skipOffset,duration:r.duration,adTitle:n.adTitle});for(let m of n.creatives)if(m.companionAds&&m.companionAds.companions.length>0){e.emit("ad:companions",{adId:s,required:m.companionAds.required,companions:m.companionAds.companions});break}for(let m of n.creatives)if(m.nonLinearAds&&m.nonLinearAds.nonLinears.length>0){e.emit("ad:nonlinears",{adId:s,nonLinears:m.nonLinearAds.nonLinears,trackingEvents:m.nonLinearAds.trackingEvents});break}E(n.impressions),e.emit("ad:impression",{adId:s});let a=D(r.mediaFiles);if(!a)return h(),P(n.errors,403),e.emit("ad:error",{error:new Error("No suitable media file found"),source:i,vastErrorCode:403}),e.emit("ad:end",{adId:s}),c({outcome:"error",errorPhase:"load",adId:s}),{promise:u,abort:()=>{}};let d=de(r.duration,m=>{let V=r.trackingEvents[m];V&&E(V),e.emit("ad:quartile",{adId:s,quartile:m});}),l=new Set;function f(m){for(let V of r.trackingEvents.progress)!l.has(V.offset)&&m>=V.offset&&(l.add(V.offset),E([V.url]));}let g=e.muted||e.volume===0,v=!!document.fullscreenElement,p=false,b=false;function h(){for(let m of A)m();A.length=0;}function M(m){e.emit("ad:end",{adId:s});let V=m==="error"?{outcome:m,errorPhase:b?"playback":"load",adId:s}:{outcome:m,adId:s};t.onFinish&&t.onFinish(V),c(V);}function N(){p||(E(r.clickTracking),e.emit("ad:click",{clickThrough:r.clickThrough,clickTracking:r.clickTracking}));}function x(){p||(E(r.trackingEvents.skip),p=true,U(),h(),M("skipped"));}function _(){p||e.state==="ad:playing"&&(E(r.trackingEvents.pause),o("ad:paused"));}function I(){p||e.state==="ad:paused"&&(E(r.trackingEvents.resume),o("ad:playing"));}function R(){d(e.currentTime),f(e.currentTime);}function z(){if(p)return;let m=e.muted||e.volume===0;m&&!g?(E(r.trackingEvents.mute),e.emit("ad:mute",{adId:s})):!m&&g&&(E(r.trackingEvents.unmute),e.emit("ad:unmute",{adId:s})),g=m,e.emit("ad:volumeChange",{adId:s,volume:e.muted?0:e.volume});}function J(){if(p)return;let m=!!document.fullscreenElement;m&&!v?(E(r.trackingEvents.playerExpand),e.emit("ad:fullscreen",{adId:s,fullscreen:true})):!m&&v&&(E(r.trackingEvents.playerCollapse),e.emit("ad:fullscreen",{adId:s,fullscreen:false})),v=m;}function $(){if(p)return;p=true,U(),h();let m=b?405:401;P(n.errors,m),e.emit("ad:error",{error:new Error("Ad media playback failed"),source:i,vastErrorCode:m}),M("error");}function ee(){p||(p=true,d(r.duration),U(),h(),M("completed"));}function W(){e.el.removeEventListener("canplay",W),b=true,E(r.trackingEvents.loaded),E(r.trackingEvents.creativeView),e.emit("ad:loaded",{adId:s}),o("ad:playing"),e.play().catch(()=>{e.muted=true,e.play().catch(()=>{});});}function U(){e.el.removeEventListener("timeupdate",R),e.el.removeEventListener("ended",ee),e.el.removeEventListener("error",$),e.el.removeEventListener("canplay",W),e.el.removeEventListener("pause",_),e.el.removeEventListener("play",I),e.el.removeEventListener("click",N),e.el.removeEventListener("volumechange",z),document.removeEventListener("fullscreenchange",J),e.off("ad:skip",x);}return e.el.addEventListener("canplay",W),e.el.addEventListener("timeupdate",R),e.el.addEventListener("ended",ee),e.el.addEventListener("error",$),e.el.addEventListener("pause",_),e.el.addEventListener("play",I),e.el.addEventListener("click",N),e.el.addEventListener("volumechange",z),document.addEventListener("fullscreenchange",J),e.on("ad:skip",x),e.el.src=a.url,e.el.load(),{promise:u,abort:()=>{p||(p=true,U(),h());}}}function q(t){let e=[];for(let i of t)for(let s of i.creatives)if(s.linear&&s.linear.mediaFiles.length>0){e.push({ad:i,linear:s.linear});break}if(e.length<=1)return {type:"single",ads:e,standalonePool:[]};let n=e.filter(i=>i.ad.sequence!=null),r=e.filter(i=>i.ad.sequence==null);return n.length>0?(n.sort((i,s)=>(i.ad.sequence??0)-(s.ad.sequence??0)),{type:"pod",ads:n,standalonePool:r}):{type:"waterfall",ads:r,standalonePool:[]}}async function Y(t,e,n){let r={completed:0,skipped:0,failed:0},i=e.length,s=n.standalonePool?[...n.standalonePool]:[];t.emit("ad:pod:start",{ads:e.map(o=>o.ad),total:i});for(let o=0;o<e.length;o++){let{ad:c,linear:u}=e[o],A=o===e.length-1;t.emit("ad:pod:adstart",{ad:c,index:o,total:i});let{promise:a}=F({player:t,ad:c,linear:u,source:n.source,adPlugins:n.adPlugins,onFinish:A?n.onFinish:void 0}),d=await a;if(d.outcome==="error"&&s.length>0){let l=s.shift(),{promise:f}=F({player:t,ad:l.ad,linear:l.linear,source:n.source,adPlugins:n.adPlugins,onFinish:A?n.onFinish:void 0});d=await f;}switch(t.emit("ad:pod:adend",{ad:c,index:o,total:i}),d.outcome){case "completed":r.completed++;break;case "skipped":r.skipped++;break;case "error":r.failed++;break}}return t.emit("ad:pod:end",r),r}async function B(t,e,n){for(let{ad:r,linear:i}of e){let{promise:s}=F({player:t,ad:r,linear:i,source:n.source,adPlugins:n.adPlugins,onFinish:n.onFinish}),o=await s;if(o.outcome!=="error"||o.errorPhase==="playback")return o}return null}function ge(t){return {name:"vast",setup(e){let n=false,r=null,i=e.setState;async function s(){if(n)return;let c=e.state==="ended",u=c?"ended":"playing";try{let p=function(){n||(e.pause(),i("playing"),c?Ie(e,i,v,g):_e(e,v,g));};var A=p;let a=t.timeout!==void 0?{timeout:t.timeout}:void 0,d=await O(t.tagUrl,a);if(n)return;let l=L(d);if(l.ads.length===0){i(u);return}let f=q(l.ads);if(f.ads.length===0){i(u);return}let g=e.currentTime,v=e.src;switch(e.src="",f.type){case "single":{let{promise:b,abort:h}=F({player:e,ad:f.ads[0].ad,linear:f.ads[0].linear,source:"vast",adPlugins:t.adPlugins,onFinish:p});r=h,await b;break}case "pod":{await Y(e,f.ads,{source:"vast",adPlugins:t.adPlugins,onFinish:p,standalonePool:f.standalonePool});break}case "waterfall":{await B(e,f.ads,{source:"vast",adPlugins:t.adPlugins,onFinish:p})||(P(l.errors,303),e.emit("ad:error",{error:new Error("All waterfall ads failed"),source:"vast",vastErrorCode:303}),p());break}}}catch(a){if(n)return;let d=a instanceof Error?a:new Error(String(a)),l=d.name==="AbortError"?301:100;e.emit("ad:error",{error:d,source:"vast",vastErrorCode:l}),i(u);}}function o({to:c}){c==="ready"&&!n&&(e.off("statechange",o),s());}return e.state==="ready"||e.state==="playing"||e.state==="paused"||e.state==="ended"?s():e.on("statechange",o),()=>{n=true,e.off("statechange",o),r&&r();}}}}function _e(t,e,n){function r({to:i}){i==="ready"&&(t.off("statechange",r),n>0&&(t.currentTime=n),t.play().catch(()=>{t.muted=true,t.play().catch(()=>{});}));}t.on("statechange",r),t.src=e;}function Ie(t,e,n,r){function i({to:s}){s==="ready"&&(t.off("statechange",i),r>0&&(t.currentTime=r),e("ended"));}t.on("statechange",i),t.src=n;}var lt=globalThis.Vide??(globalThis.Vide={});Object.assign(lt,{vast:ge,parseVast:L,fetchVast:O,resolveVast:H,track:E,trackError:P,trackCompanionView:X,getQuartile:Q,classifyAds:q,selectMediaFile:D,VAST_XML_PARSE_ERROR:100,VAST_SCHEMA_ERROR:101,VAST_VERSION_UNSUPPORTED:102,VAST_TRAFFICKING_ERROR:200,VAST_LINEARITY_ERROR:201,VAST_DURATION_ERROR:202,VAST_SIZE_ERROR:203,VAST_CATEGORY_REQUIRED:204,VAST_CATEGORY_BLOCKED:205,VAST_BREAK_SHORTENED:206,VAST_WRAPPER_ERROR:300,VAST_WRAPPER_TIMEOUT:301,VAST_WRAPPER_LIMIT:302,VAST_NO_ADS:303,VAST_INLINE_TIMEOUT:304,VAST_LINEAR_ERROR:400,VAST_MEDIA_NOT_FOUND:401,VAST_MEDIA_TIMEOUT:402,VAST_MEDIA_UNSUPPORTED:403,VAST_MEDIA_DISPLAY_ERROR:405,VAST_MEZZANINE_REQUIRED:406,VAST_MEZZANINE_DOWNLOADING:407,VAST_CONDITIONAL_REJECTED:408,VAST_INTERACTIVE_NOT_EXECUTED:409,VAST_VERIFICATION_NOT_EXECUTED:410,VAST_MEZZANINE_INVALID:411,VAST_NONLINEAR_ERROR:500,VAST_NONLINEAR_SIZE_ERROR:501,VAST_NONLINEAR_FETCH_ERROR:502,VAST_NONLINEAR_UNSUPPORTED:503,VAST_COMPANION_ERROR:600,VAST_COMPANION_SIZE_ERROR:601,VAST_COMPANION_REQUIRED_ERROR:602,VAST_COMPANION_FETCH_ERROR:603,VAST_COMPANION_UNSUPPORTED:604,VAST_UNDEFINED_ERROR:900,VAST_VPAID_ERROR:901,VAST_INTERACTIVE_ERROR:902});})();
|
package/dist/vide.vmap.global.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){'use strict';function U(t){let n=new DOMParser().parseFromString(t,"text/xml");if(n.querySelector("parsererror"))return {version:"",ads:[],errors:["VAST XML parse error"]};let i=n.documentElement;if(i.tagName!=="VAST")return {version:"",ads:[],errors:["Document is not a VAST response"]};let s=i.getAttribute("version")??"",o=F(i,"Error"),d=b(i,"Ad"),l=[];for(let a of d){let c=de(a);c&&l.push(c);}return {version:s,ads:l,errors:o}}function de(t){let e=P(t,"InLine");if(!e)return null;let n=t.getAttribute("id")??"",r=t.getAttribute("sequence"),i=E(r,void 0),s=S(e,"AdSystem"),o=S(e,"AdTitle"),d=x(e,"Impression"),l=F(e,"Error"),a=e.querySelector("Creatives"),c=[];if(a){let A=b(a,"Creative");for(let f of A)c.push(le(f));}let u=z(e),m=ue(e),p=K(e),g=$(e);return {id:n,sequence:i,adSystem:s,adTitle:o,impressions:d,creatives:c,errors:l,verifications:u,categories:m,extensions:p,viewableImpression:g}}function z(t){let e=t.querySelector("AdVerifications");if(!e)return;let n=[],r=b(e,"Verification");for(let i of r){let s=i.getAttribute("vendor")??"",o="",d,l=i.querySelector("JavaScriptResource");if(l)o=(l.textContent??"").trim(),d=l.getAttribute("apiFramework")??void 0;else {let u=i.querySelector("ExecutableResource");u&&(o=(u.textContent??"").trim(),d=u.getAttribute("apiFramework")??void 0);}let a=i.querySelector("VerificationParameters"),c=a&&(a.textContent??"").trim()||void 0;n.push({vendor:s,resourceUrl:o,apiFramework:d,parameters:c});}return n.length>0?n:void 0}function ue(t){let e=b(t,"Category");if(e.length===0)return;let n=[];for(let r of e){let i=r.getAttribute("authority")??"",s=(r.textContent??"").trim();s&&n.push({authority:i,value:s});}return n.length>0?n:void 0}function K(t){let e=P(t,"Extensions");if(!e)return;let n=[],r=new XMLSerializer;for(let i of b(e,"Extension")){let s=i.getAttribute("type")??"",o="";for(let d=0;d<i.childNodes.length;d++)o+=r.serializeToString(i.childNodes[d]);o=o.trim(),o&&n.push({type:s,content:o});}return n.length>0?n:void 0}function $(t){let e=P(t,"ViewableImpression");if(!e)return;let n=F(e,"Viewable"),r=F(e,"NotViewable"),i=F(e,"ViewUndetermined");if(!(n.length===0&&r.length===0&&i.length===0))return {viewable:n,notViewable:r,viewUndetermined:i}}function le(t){let e=t.getAttribute("id")??void 0,n=t.getAttribute("sequence"),r=E(n,void 0),i=t.querySelector("Linear"),s=i?fe(i):null,o=J(t),d=Ae(t);return {id:e,sequence:r,linear:s,companionAds:o,nonLinearAds:d}}function fe(t){let e=S(t,"Duration"),n=B(e),r=t.getAttribute("skipoffset"),i=r!==null?ee(r,n):void 0,s=me(t),o=pe(t),d=Z(t),l=t.querySelector("VideoClicks"),a=l&&S(l,"ClickThrough")||void 0,c=l?x(l,"ClickTracking"):[];return {duration:n,skipOffset:i,mediaFiles:s,interactiveCreativeFiles:o,trackingEvents:d,clickThrough:a,clickTracking:c}}function me(t){let e=t.querySelector("MediaFiles");if(!e)return [];let n=[],r=b(e,"MediaFile");for(let i of r){let s=(i.textContent??"").trim();if(!s)continue;let o=i.getAttribute("delivery");n.push({url:s,mimeType:i.getAttribute("type")??"",width:E(i.getAttribute("width"),0),height:E(i.getAttribute("height"),0),bitrate:E(i.getAttribute("bitrate"),void 0),delivery:o==="streaming"?"streaming":"progressive"});}return n}function pe(t){let e=t.querySelector("MediaFiles");if(!e)return [];let n=[],r=b(e,"InteractiveCreativeFile");for(let i of r){let s=(i.textContent??"").trim();if(!s)continue;let o=i.getAttribute("apiFramework")??"",d=i.getAttribute("variableDuration"),l=d==="true"?true:d==="false"?false:void 0;n.push({url:s,apiFramework:o,variableDuration:l});}return n}function G(t){let e=[];for(let n of b(t,"StaticResource")){let r=(n.textContent??"").trim(),i=n.getAttribute("creativeType")??"";r&&e.push({type:"static",url:r,creativeType:i});}for(let n of b(t,"IFrameResource")){let r=(n.textContent??"").trim();r&&e.push({type:"iframe",url:r});}for(let n of b(t,"HTMLResource")){let r=(n.textContent??"").trim();r&&e.push({type:"html",content:r});}return e}function J(t){let e=P(t,"CompanionAds");if(!e)return;let n=e.getAttribute("required"),r=n==="all"||n==="any"?n:"none",i=[];for(let s of b(e,"Companion")){let o=ge(s);o&&i.push(o);}return i.length>0?{required:r,companions:i}:void 0}function ge(t){let e=E(t.getAttribute("width"),0),n=E(t.getAttribute("height"),0);if(e===0||n===0)return null;let r=t.getAttribute("id")??void 0,i=E(t.getAttribute("assetWidth"),void 0),s=E(t.getAttribute("assetHeight"),void 0),o=E(t.getAttribute("expandedWidth"),void 0),d=E(t.getAttribute("expandedHeight"),void 0),l=t.getAttribute("apiFramework")??void 0,a=t.getAttribute("adSlotId")??void 0,c=Se(t.getAttribute("pxratio"),void 0),u=t.getAttribute("renderingMode"),m=u==="end-card"||u==="concurrent"?u:u==="default"?"default":void 0,p=G(t),g=S(t,"CompanionClickThrough")||void 0,A=x(t,"CompanionClickTracking"),f=ve(t),y=S(t,"AltText")||void 0,h=S(t,"AdParameters")||void 0;return {width:e,height:n,id:r,assetWidth:i,assetHeight:s,expandedWidth:o,expandedHeight:d,apiFramework:l,adSlotId:a,pxratio:c,renderingMode:m,resources:p,clickThrough:g,clickTracking:A,trackingEvents:f,altText:y,adParameters:h}}function ve(t){let e={creativeView:[]},n=t.querySelector("TrackingEvents");if(!n)return e;for(let r of n.querySelectorAll("Tracking")){let i=r.getAttribute("event"),s=(r.textContent??"").trim();i==="creativeView"&&s&&e.creativeView.push(s);}return e}function Ae(t){let e=P(t,"NonLinearAds");if(!e)return;let n=Y(e),r=[];for(let i of b(e,"NonLinear")){let s=ke(i);s&&r.push(s);}return r.length>0?{trackingEvents:n,nonLinears:r}:void 0}function ke(t){let e=E(t.getAttribute("width"),0),n=E(t.getAttribute("height"),0);if(e===0||n===0)return null;let r=t.getAttribute("id")??void 0,i=E(t.getAttribute("expandedWidth"),void 0),s=E(t.getAttribute("expandedHeight"),void 0),o=t.getAttribute("scalable"),d=o==="true"?true:o==="false"?false:void 0,l=t.getAttribute("maintainAspectRatio"),a=l==="true"?true:l==="false"?false:void 0,c=t.getAttribute("minSuggestedDuration"),u=c&&B(c)||void 0,m=t.getAttribute("apiFramework")??void 0,p=G(t),g=S(t,"NonLinearClickThrough")||void 0,A=x(t,"NonLinearClickTracking"),f=S(t,"AdParameters")||void 0;return {width:e,height:n,id:r,expandedWidth:i,expandedHeight:s,scalable:d,maintainAspectRatio:a,minSuggestedDuration:u,apiFramework:m,resources:p,clickThrough:g,clickTracking:A,adParameters:f}}function Y(t){let e={},n=P(t,"TrackingEvents");if(!n)return e;for(let r of b(n,"Tracking")){let i=r.getAttribute("event"),s=(r.textContent??"").trim();!i||!s||(e[i]||(e[i]=[]),e[i].push(s));}return e}var he=new Set(["start","firstQuartile","midpoint","thirdQuartile","complete","pause","resume","skip","loaded","mute","unmute","rewind","playerExpand","playerCollapse","closeLinear","notUsed","otherAdInteraction","creativeView"]);function Z(t){let e=j(),n=t.querySelector("TrackingEvents");if(!n)return e;let r=n.querySelectorAll("Tracking");for(let i of r){let s=i.getAttribute("event"),o=(i.textContent??"").trim();if(!(!s||!o))if(s==="progress"){let d=i.getAttribute("offset"),l=d?ee(d,0):0;e.progress.push({offset:l,url:o});}else he.has(s)&&e[s].push(o);}return e}function B(t){if(!t)return 0;let e=t.split(":");if(e.length!==3)return 0;let n=Number.parseInt(e[0],10),r=Number.parseInt(e[1],10),i=Number.parseFloat(e[2]);return Number.isNaN(n)||Number.isNaN(r)||Number.isNaN(i)?0:n*3600+r*60+i}function ee(t,e){if(t.endsWith("%")){let n=Number.parseFloat(t);return Number.isNaN(n)?0:n/100*e}return B(t)}function b(t,e){let n=[];for(let r=0;r<t.children.length;r++)t.children[r].tagName===e&&n.push(t.children[r]);return n}function P(t,e){for(let n=0;n<t.children.length;n++)if(t.children[n].tagName===e)return t.children[n];return null}function F(t,e){let n=[];for(let r of b(t,e)){let i=(r.textContent??"").trim();i&&n.push(i);}return n}function S(t,e){let n=t.querySelector(e);return n?(n.textContent??"").trim():""}function x(t,e){let n=t.querySelectorAll(e),r=[];for(let i of n){let s=(i.textContent??"").trim();s&&r.push(s);}return r}async function be(t,e){let n=e?.timeout??5e3,r=new AbortController,i=setTimeout(()=>r.abort(),n);try{let s=await fetch(t,{signal:r.signal});if(!s.ok)throw new Error(`VAST fetch failed: ${s.status}`);return await s.text()}finally{clearTimeout(i);}}async function te(t,e){let n=e?.timeout??1e4,r=e?.maxDepth??5,i=Date.now()+n,s=new Set,o=[],d=t;for(let l=0;l<=r;l++){let a=i-Date.now();if(a<=0)return {version:"",ads:[],errors:["VAST resolve timeout"]};if(s.has(d))return {version:"",ads:[],errors:["VAST circular reference detected"]};s.add(d);let c;try{c=await be(d,{timeout:a});}catch(p){return {version:"",ads:[],errors:[p instanceof Error?p.message:String(p)]}}let u=U(c);if(u.ads.length>0)return {version:u.version,ads:u.ads.map(p=>Ve(p,o)),errors:u.errors};let m=Ee(c);if(!m)return u;o.push(m),d=m.adTagUri;}return {version:"",ads:[],errors:["VAST wrapper depth limit exceeded"]}}function Ee(t){let r=new DOMParser().parseFromString(t,"text/xml").documentElement;if(r.tagName!=="VAST")return null;for(let i of b(r,"Ad")){let s=P(i,"Wrapper");if(!s)continue;let o=S(s,"VASTAdTagURI").trim();if(!o)continue;let d=F(s,"Error"),l=x(s,"Impression"),a=j(),c=[],u,m=[],p=[],g={},A=[],f=s.querySelector("Creatives");if(f)for(let C of b(f,"Creative")){let N=C.querySelector("Linear");if(N){a=Z(N);let V=N.querySelector("VideoClicks");V&&(c=x(V,"ClickTracking"));}let L=J(C);if(L){u=L;for(let V of L.companions)m.push(...V.clickTracking),p.push(...V.trackingEvents.creativeView);}let R=P(C,"NonLinearAds");if(R){g=Y(R);for(let V of b(R,"NonLinear"))A.push(...x(V,"NonLinearClickTracking"));}}let y=z(s),h=K(s),w=$(s);return {adTagUri:o,errors:d,impressions:l,trackingEvents:a,clickTracking:c,companionAds:u,companionClickTracking:m,companionCreativeViewTracking:p,nonLinearTrackingEvents:g,nonLinearClickTracking:A,verifications:y,extensions:h,viewableImpression:w}}return null}function j(){return {start:[],firstQuartile:[],midpoint:[],thirdQuartile:[],complete:[],pause:[],resume:[],skip:[],loaded:[],mute:[],unmute:[],rewind:[],playerExpand:[],playerCollapse:[],closeLinear:[],notUsed:[],otherAdInteraction:[],creativeView:[],progress:[]}}function ye(t,e){let n=j();for(let r of Object.keys(n)){if(r==="progress")continue;let i=n[r];for(let s of t)i.push(...s[r]);i.push(...e[r]);}for(let r of t)n.progress.push(...r.progress);return n.progress.push(...e.progress),n}function Te(t,e){let n=[...t,e].filter(r=>r!==void 0);if(n.length!==0)return {viewable:n.flatMap(r=>r.viewable),notViewable:n.flatMap(r=>r.notViewable),viewUndetermined:n.flatMap(r=>r.viewUndetermined)}}function Ve(t,e){if(e.length===0)return t;let n=[...e.flatMap(c=>c.errors),...t.errors],r=[...e.flatMap(c=>c.impressions),...t.impressions],i=e.flatMap(c=>c.verifications??[]),s=i.length>0||t.verifications&&t.verifications.length>0?[...i,...t.verifications??[]]:t.verifications,o=e.flatMap(c=>c.extensions??[]),d=o.length>0||t.extensions&&t.extensions.length>0?[...o,...t.extensions??[]]:t.extensions,l=Te(e.map(c=>c.viewableImpression),t.viewableImpression),a=t.creatives.map(c=>{let u=c;if(c.linear&&(u={...u,linear:{...c.linear,trackingEvents:ye(e.map(m=>m.trackingEvents),c.linear.trackingEvents),clickTracking:[...e.flatMap(m=>m.clickTracking),...c.linear.clickTracking]}}),c.companionAds){let m=e.flatMap(g=>g.companionClickTracking),p=e.flatMap(g=>g.companionCreativeViewTracking);(m.length>0||p.length>0)&&(u={...u,companionAds:{...c.companionAds,companions:c.companionAds.companions.map(g=>({...g,clickTracking:[...m,...g.clickTracking],trackingEvents:{creativeView:[...p,...g.trackingEvents.creativeView]}}))}});}else for(let m=e.length-1;m>=0;m--)if(e[m].companionAds){u={...u,companionAds:e[m].companionAds};break}if(c.nonLinearAds){let m=e.flatMap(g=>g.nonLinearClickTracking),p={};for(let g of e)for(let[A,f]of Object.entries(g.nonLinearTrackingEvents))p[A]||(p[A]=[]),p[A].push(...f);for(let[g,A]of Object.entries(c.nonLinearAds.trackingEvents))p[g]||(p[g]=[]),p[g].push(...A);u={...u,nonLinearAds:{trackingEvents:p,nonLinears:c.nonLinearAds.nonLinears.map(g=>({...g,clickTracking:[...m,...g.clickTracking]}))}};}return u});return {...t,errors:n,impressions:r,creatives:a,verifications:s,extensions:d,viewableImpression:l}}function E(t,e){if(t==null)return e;let n=Number.parseInt(t,10);return Number.isNaN(n)?e:n}function Se(t,e){if(t==null)return e;let n=Number.parseFloat(t);return Number.isNaN(n)?e:n}function ne(t){if(t.length===0)return null;let e=t.filter(r=>r.mimeType==="video/mp4");return (e.length>0?e:t).sort((r,i)=>(i.bitrate??0)-(r.bitrate??0))[0]}function O(t,e){let n=t.map(r=>r.replace("[ERRORCODE]",String(e)));k(n);}function k(t){for(let e of t)typeof navigator<"u"&&typeof navigator.sendBeacon=="function"?navigator.sendBeacon(e):new Image().src=e;}function we(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 re(t,e){let n=new Set,r=["start","firstQuartile","midpoint","thirdQuartile","complete"];return i=>{let s=we(i,t);if(!s||n.has(s))return;let o=r.indexOf(s);for(let d=0;d<=o;d++){let l=r[d];n.has(l)||(n.add(l),e(l));}}}function I(t){let{player:e,ad:n,linear:r,source:i}=t,s=n.id,o=e._setState,d=()=>{},l=new Promise(v=>{d=v;}),a=[];if(t.adPlugins)for(let v of t.adPlugins(n)){let T=v.setup(e,n);T&&a.push(T);}o("ad:loading"),e.emit("ad:start",{adId:s,clickThrough:r.clickThrough,skipOffset:r.skipOffset,duration:r.duration,adTitle:n.adTitle});for(let v of n.creatives)if(v.companionAds&&v.companionAds.companions.length>0){e.emit("ad:companions",{adId:s,required:v.companionAds.required,companions:v.companionAds.companions});break}for(let v of n.creatives)if(v.nonLinearAds&&v.nonLinearAds.nonLinears.length>0){e.emit("ad:nonlinears",{adId:s,nonLinears:v.nonLinearAds.nonLinears,trackingEvents:v.nonLinearAds.trackingEvents});break}k(n.impressions),e.emit("ad:impression",{adId:s});let c=ne(r.mediaFiles);if(!c)return h(),O(n.errors,403),e.emit("ad:error",{error:new Error("No suitable media file found"),source:i,vastErrorCode:403}),e.emit("ad:end",{adId:s}),d({outcome:"error",errorPhase:"load",adId:s}),{promise:l,abort:()=>{}};let u=re(r.duration,v=>{let T=r.trackingEvents[v];T&&k(T),e.emit("ad:quartile",{adId:s,quartile:v});}),m=new Set;function p(v){for(let T of r.trackingEvents.progress)!m.has(T.offset)&&v>=T.offset&&(m.add(T.offset),k([T.url]));}let g=e.el.muted||e.el.volume===0,A=!!document.fullscreenElement,f=false,y=false;function h(){for(let v of a)v();a.length=0;}function w(v){e.emit("ad:end",{adId:s});let T=v==="error"?{outcome:v,errorPhase:y?"playback":"load",adId:s}:{outcome:v,adId:s};t.onFinish&&t.onFinish(T),d(T);}function C(){f||(k(r.clickTracking),e.emit("ad:click",{clickThrough:r.clickThrough,clickTracking:r.clickTracking}));}function N(){f||(k(r.trackingEvents.skip),f=true,D(),h(),w("skipped"));}function L(){f||e.state==="ad:playing"&&(k(r.trackingEvents.pause),o("ad:paused"));}function R(){f||e.state==="ad:paused"&&(k(r.trackingEvents.resume),o("ad:playing"));}function V(){u(e.el.currentTime),p(e.el.currentTime);}function Q(){if(f)return;let v=e.el.muted||e.el.volume===0;v&&!g?(k(r.trackingEvents.mute),e.emit("ad:mute",{adId:s})):!v&&g&&(k(r.trackingEvents.unmute),e.emit("ad:unmute",{adId:s})),g=v,e.emit("ad:volumeChange",{adId:s,volume:e.el.muted?0:e.el.volume});}function W(){if(f)return;let v=!!document.fullscreenElement;v&&!A?(k(r.trackingEvents.playerExpand),e.emit("ad:fullscreen",{adId:s,fullscreen:true})):!v&&A&&(k(r.trackingEvents.playerCollapse),e.emit("ad:fullscreen",{adId:s,fullscreen:false})),A=v;}function H(){if(f)return;f=true,D(),h();let v=y?405:401;O(n.errors,v),e.emit("ad:error",{error:new Error("Ad media playback failed"),source:i,vastErrorCode:v}),w("error");}function X(){f||(f=true,u(r.duration),D(),h(),w("completed"));}function _(){e.el.removeEventListener("canplay",_),y=true,k(r.trackingEvents.loaded),k(r.trackingEvents.creativeView),e.emit("ad:loaded",{adId:s}),o("ad:playing"),e.el.play().catch(()=>{e.el.muted=true,e.el.play().catch(()=>{});});}function D(){e.el.removeEventListener("timeupdate",V),e.el.removeEventListener("ended",X),e.el.removeEventListener("error",H),e.el.removeEventListener("canplay",_),e.el.removeEventListener("pause",L),e.el.removeEventListener("play",R),e.el.removeEventListener("click",C),e.el.removeEventListener("volumechange",Q),document.removeEventListener("fullscreenchange",W),e.off("ad:skip",N);}return e.el.addEventListener("canplay",_),e.el.addEventListener("timeupdate",V),e.el.addEventListener("ended",X),e.el.addEventListener("error",H),e.el.addEventListener("pause",L),e.el.addEventListener("play",R),e.el.addEventListener("click",C),e.el.addEventListener("volumechange",Q),document.addEventListener("fullscreenchange",W),e.on("ad:skip",N),e.el.src=c.url,e.el.load(),{promise:l,abort:()=>{f||(f=true,D(),h());}}}function ie(t){let e=[];for(let i of t)for(let s of i.creatives)if(s.linear&&s.linear.mediaFiles.length>0){e.push({ad:i,linear:s.linear});break}if(e.length<=1)return {type:"single",ads:e,standalonePool:[]};let n=e.filter(i=>i.ad.sequence!=null),r=e.filter(i=>i.ad.sequence==null);return n.length>0?(n.sort((i,s)=>(i.ad.sequence??0)-(s.ad.sequence??0)),{type:"pod",ads:n,standalonePool:r}):{type:"waterfall",ads:r,standalonePool:[]}}async function se(t,e,n){let r={completed:0,skipped:0,failed:0},i=e.length,s=n.standalonePool?[...n.standalonePool]:[];t.emit("ad:pod:start",{ads:e.map(o=>o.ad),total:i});for(let o=0;o<e.length;o++){let{ad:d,linear:l}=e[o],a=o===e.length-1;t.emit("ad:pod:adstart",{ad:d,index:o,total:i});let{promise:c}=I({player:t,ad:d,linear:l,source:n.source,adPlugins:n.adPlugins,onFinish:a?n.onFinish:void 0}),u=await c;if(u.outcome==="error"&&s.length>0){let m=s.shift(),{promise:p}=I({player:t,ad:m.ad,linear:m.linear,source:n.source,adPlugins:n.adPlugins,onFinish:a?n.onFinish:void 0});u=await p;}switch(t.emit("ad:pod:adend",{ad:d,index:o,total:i}),u.outcome){case "completed":r.completed++;break;case "skipped":r.skipped++;break;case "error":r.failed++;break}}return t.emit("ad:pod:end",r),r}async function oe(t,e,n){for(let{ad:r,linear:i}of e){let{promise:s}=I({player:t,ad:r,linear:i,source:n.source,adPlugins:n.adPlugins,onFinish:n.onFinish}),o=await s;if(o.outcome!=="error"||o.errorPhase==="playback")return o}return null}function M(t){let n=new DOMParser().parseFromString(t,"text/xml");if(n.querySelector("parsererror"))return {version:"",adBreaks:[]};let i=n.documentElement;if((i.localName||i.tagName)!=="VMAP")return {version:"",adBreaks:[]};let o=i.getAttribute("version")??"",d=[];for(let l=0;l<i.children.length;l++){let a=i.children[l];if((a.localName||a.tagName)==="AdBreak"){let u=xe(a);u&&d.push(u);}}return {version:o,adBreaks:d}}function xe(t){let e=t.getAttribute("timeOffset");if(!e)return null;let n=Le(e),r=t.getAttribute("breakType"),i=r==="nonlinear"?"nonlinear":r==="display"?"display":"linear",s=t.getAttribute("breakId")??void 0,o=null,d={breakStart:[],breakEnd:[],error:[]};for(let l=0;l<t.children.length;l++){let a=t.children[l],c=a.localName||a.tagName;c==="AdSource"?o=Ne(a):c==="TrackingEvents"&&Ce(a,d);}return {timeOffset:n,breakType:i,breakId:s,adSource:o,trackingEvents:d}}function Ce(t,e){for(let n=0;n<t.children.length;n++){let r=t.children[n];if((r.localName||r.tagName)!=="Tracking")continue;let s=r.getAttribute("event"),o=(r.textContent??"").trim();!s||!o||(s==="breakStart"?e.breakStart.push(o):s==="breakEnd"?e.breakEnd.push(o):s==="error"&&e.error.push(o));}}function Ne(t){let e=t.getAttribute("id")??void 0,n=t.getAttribute("allowMultipleAds"),r=n!=null?n==="true":void 0,i=t.getAttribute("followRedirects"),s=i!=null?i==="true":void 0,o,d;for(let l=0;l<t.children.length;l++){let a=t.children[l],c=a.localName||a.tagName;if(c==="VASTAdData"){let u=a.querySelector("VAST");u&&(o=new XMLSerializer().serializeToString(u));}else c==="AdTagURI"&&(d=(a.textContent??"").trim());}return {id:e,allowMultipleAds:r,followRedirects:s,vastUrl:d,vastData:o}}function Le(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:Re(t)}}function Re(t){if(!t)return 0;let e=t.split(":");if(e.length!==3)return 0;let n=Number.parseInt(e[0],10),r=Number.parseInt(e[1],10),i=Number.parseFloat(e[2]);return Number.isNaN(n)||Number.isNaN(r)||Number.isNaN(i)?0:n*3600+r*60+i}function q(t,e,n){let r=new Set,i=0,s=false,o=false,d=e.filter(f=>f.timeOffset.type==="start"),l=e.filter(f=>f.timeOffset.type==="end"),a=e.filter(f=>f.timeOffset.type==="time"||f.timeOffset.type==="percentage").sort((f,y)=>ae(f)-ae(y));function c(){if(o)return;let f=t.currentTime,y=f>i+1.5;for(let h of a){if(r.has(h))continue;let w=Fe(h,t.duration);if(w!==null){if(y&&f>w+.5){r.add(h);continue}f>=w-.5&&(r.add(h),n(h));}}i=f;}function u(){if(!o)for(let f of l)r.has(f)||(r.add(f),n(f));}function m(){if(!s){s=true;for(let f of d)r.has(f)||(r.add(f),n(f));t.on("timeupdate",c),t.on("ended",u);}}function p(){o=true;}function g(){o=false,i=t.currentTime;}function A(){t.off("timeupdate",c),t.off("ended",u);}return {start:m,pause:p,resume:g,destroy:A}}function Fe(t,e){return t.timeOffset.type==="time"?t.timeOffset.seconds:t.timeOffset.type==="percentage"?t.timeOffset.pct/100*e:null}function ae(t){return t.timeOffset.type==="time"?t.timeOffset.seconds:t.timeOffset.type==="percentage"?t.timeOffset.pct:0}function ce(t){return {name:"vmap",setup(e){let n=false,r=null,i=null,s=e._setState;async function o(a){if(!(n||!a.adSource)){r&&r.pause(),k(a.trackingEvents.breakStart),e.emit("ad:breakStart",{breakId:a.breakId});try{let f=function(){n||(s("playing"),e.el.src=A,e.el.load(),e.el.currentTime=p,g||e.el.play().catch(()=>{e.el.muted=!0,e.el.play().catch(()=>{});}));};var c=f;let u;if(a.adSource.vastData)u=U(a.adSource.vastData);else if(a.adSource.vastUrl)u=await te(a.adSource.vastUrl,t.vastOptions);else return;if(n||u.ads.length===0)return;let m=ie(u.ads);if(m.ads.length===0)return;a.adSource.allowMultipleAds===!1&&(m={type:"single",ads:[m.ads[0]],standalonePool:[]});let p=e.el.currentTime,g=e.el.paused,A=e.el.src;switch(m.type){case "single":{let{promise:y,abort:h}=I({player:e,ad:m.ads[0].ad,linear:m.ads[0].linear,source:"vmap",adPlugins:t.adPlugins,onFinish:f});i=h,await y;break}case "pod":{await se(e,m.ads,{source:"vmap",adPlugins:t.adPlugins,onFinish:f,standalonePool:m.standalonePool});break}case "waterfall":{await oe(e,m.ads,{source:"vmap",adPlugins:t.adPlugins,onFinish:f})||(O(u.errors,303),e.emit("ad:error",{error:new Error("All waterfall ads failed"),source:"vmap",vastErrorCode:303}),f());break}}}catch(u){if(!n){let m=u instanceof Error?u:new Error(String(u)),p=m.name==="AbortError"?301:100;k(a.trackingEvents.error),e.emit("ad:error",{error:m,source:"vmap",vastErrorCode:p});}}finally{k(a.trackingEvents.breakEnd),e.emit("ad:breakEnd",{breakId:a.breakId}),r&&r.resume();}}}async function d(){if(!n)try{let a=t.timeout??1e4,c=new AbortController,u=setTimeout(()=>c.abort(),a),m;try{let A=await fetch(t.url,{signal:c.signal});if(!A.ok)throw new Error(`VMAP fetch failed: ${A.status}`);m=await A.text();}finally{clearTimeout(u);}if(n)return;let p=M(m);if(p.adBreaks.length===0)return;let g=q(e,p.adBreaks,A=>o(A));r=g,g.start();}catch(a){if(n)return;e.emit("ad:error",{error:a instanceof Error?a:new Error(String(a)),source:"vmap"});}}function l({to:a}){a==="ready"&&!n&&(e.off("statechange",l),d());}return e.state==="ready"||e.state==="playing"||e.state==="paused"?d():e.on("statechange",l),()=>{n=true,e.off("statechange",l),r&&r.destroy(),i&&i();}}}}var Oe=globalThis.Vide??(globalThis.Vide={});Object.assign(Oe,{vmap:ce,parseVmap:M,createScheduler:q});})();
|
|
1
|
+
(function(){'use strict';function B(t){let n=new DOMParser().parseFromString(t,"text/xml");if(n.querySelector("parsererror"))return {version:"",ads:[],errors:["VAST XML parse error"]};let i=n.documentElement;if(i.tagName!=="VAST")return {version:"",ads:[],errors:["Document is not a VAST response"]};let s=i.getAttribute("version")??"",o=F(i,"Error"),d=b(i,"Ad"),l=[];for(let a of d){let c=de(a);c&&l.push(c);}return {version:s,ads:l,errors:o}}function de(t){let e=w(t,"InLine");if(!e)return null;let n=t.getAttribute("id")??"",r=t.getAttribute("sequence"),i=E(r,void 0),s=S(e,"AdSystem"),o=S(e,"AdTitle"),d=x(e,"Impression"),l=F(e,"Error"),a=e.querySelector("Creatives"),c=[];if(a){let A=b(a,"Creative");for(let f of A)c.push(le(f));}let u=z(e),m=ue(e),p=K(e),g=$(e);return {id:n,sequence:i,adSystem:s,adTitle:o,impressions:d,creatives:c,errors:l,verifications:u,categories:m,extensions:p,viewableImpression:g}}function z(t){let e=t.querySelector("AdVerifications");if(!e)return;let n=[],r=b(e,"Verification");for(let i of r){let s=i.getAttribute("vendor")??"",o="",d,l=i.querySelector("JavaScriptResource");if(l)o=(l.textContent??"").trim(),d=l.getAttribute("apiFramework")??void 0;else {let u=i.querySelector("ExecutableResource");u&&(o=(u.textContent??"").trim(),d=u.getAttribute("apiFramework")??void 0);}let a=i.querySelector("VerificationParameters"),c=a&&(a.textContent??"").trim()||void 0;n.push({vendor:s,resourceUrl:o,apiFramework:d,parameters:c});}return n.length>0?n:void 0}function ue(t){let e=b(t,"Category");if(e.length===0)return;let n=[];for(let r of e){let i=r.getAttribute("authority")??"",s=(r.textContent??"").trim();s&&n.push({authority:i,value:s});}return n.length>0?n:void 0}function K(t){let e=w(t,"Extensions");if(!e)return;let n=[],r=new XMLSerializer;for(let i of b(e,"Extension")){let s=i.getAttribute("type")??"",o="";for(let d=0;d<i.childNodes.length;d++)o+=r.serializeToString(i.childNodes[d]);o=o.trim(),o&&n.push({type:s,content:o});}return n.length>0?n:void 0}function $(t){let e=w(t,"ViewableImpression");if(!e)return;let n=F(e,"Viewable"),r=F(e,"NotViewable"),i=F(e,"ViewUndetermined");if(!(n.length===0&&r.length===0&&i.length===0))return {viewable:n,notViewable:r,viewUndetermined:i}}function le(t){let e=t.getAttribute("id")??void 0,n=t.getAttribute("sequence"),r=E(n,void 0),i=t.querySelector("Linear"),s=i?fe(i):null,o=J(t),d=Ae(t);return {id:e,sequence:r,linear:s,companionAds:o,nonLinearAds:d}}function fe(t){let e=S(t,"Duration"),n=_(e),r=t.getAttribute("skipoffset"),i=r!==null?ee(r,n):void 0,s=me(t),o=pe(t),d=Z(t),l=t.querySelector("VideoClicks"),a=l&&S(l,"ClickThrough")||void 0,c=l?x(l,"ClickTracking"):[];return {duration:n,skipOffset:i,mediaFiles:s,interactiveCreativeFiles:o,trackingEvents:d,clickThrough:a,clickTracking:c}}function me(t){let e=t.querySelector("MediaFiles");if(!e)return [];let n=[],r=b(e,"MediaFile");for(let i of r){let s=(i.textContent??"").trim();if(!s)continue;let o=i.getAttribute("delivery");n.push({url:s,mimeType:i.getAttribute("type")??"",width:E(i.getAttribute("width"),0),height:E(i.getAttribute("height"),0),bitrate:E(i.getAttribute("bitrate"),void 0),delivery:o==="streaming"?"streaming":"progressive"});}return n}function pe(t){let e=t.querySelector("MediaFiles");if(!e)return [];let n=[],r=b(e,"InteractiveCreativeFile");for(let i of r){let s=(i.textContent??"").trim();if(!s)continue;let o=i.getAttribute("apiFramework")??"",d=i.getAttribute("variableDuration"),l=d==="true"?true:d==="false"?false:void 0;n.push({url:s,apiFramework:o,variableDuration:l});}return n}function G(t){let e=[];for(let n of b(t,"StaticResource")){let r=(n.textContent??"").trim(),i=n.getAttribute("creativeType")??"";r&&e.push({type:"static",url:r,creativeType:i});}for(let n of b(t,"IFrameResource")){let r=(n.textContent??"").trim();r&&e.push({type:"iframe",url:r});}for(let n of b(t,"HTMLResource")){let r=(n.textContent??"").trim();r&&e.push({type:"html",content:r});}return e}function J(t){let e=w(t,"CompanionAds");if(!e)return;let n=e.getAttribute("required"),r=n==="all"||n==="any"?n:"none",i=[];for(let s of b(e,"Companion")){let o=ge(s);o&&i.push(o);}return i.length>0?{required:r,companions:i}:void 0}function ge(t){let e=E(t.getAttribute("width"),0),n=E(t.getAttribute("height"),0);if(e===0||n===0)return null;let r=t.getAttribute("id")??void 0,i=E(t.getAttribute("assetWidth"),void 0),s=E(t.getAttribute("assetHeight"),void 0),o=E(t.getAttribute("expandedWidth"),void 0),d=E(t.getAttribute("expandedHeight"),void 0),l=t.getAttribute("apiFramework")??void 0,a=t.getAttribute("adSlotId")??void 0,c=Se(t.getAttribute("pxratio"),void 0),u=t.getAttribute("renderingMode"),m=u==="end-card"||u==="concurrent"?u:u==="default"?"default":void 0,p=G(t),g=S(t,"CompanionClickThrough")||void 0,A=x(t,"CompanionClickTracking"),f=ve(t),y=S(t,"AltText")||void 0,h=S(t,"AdParameters")||void 0;return {width:e,height:n,id:r,assetWidth:i,assetHeight:s,expandedWidth:o,expandedHeight:d,apiFramework:l,adSlotId:a,pxratio:c,renderingMode:m,resources:p,clickThrough:g,clickTracking:A,trackingEvents:f,altText:y,adParameters:h}}function ve(t){let e={creativeView:[]},n=t.querySelector("TrackingEvents");if(!n)return e;for(let r of n.querySelectorAll("Tracking")){let i=r.getAttribute("event"),s=(r.textContent??"").trim();i==="creativeView"&&s&&e.creativeView.push(s);}return e}function Ae(t){let e=w(t,"NonLinearAds");if(!e)return;let n=Y(e),r=[];for(let i of b(e,"NonLinear")){let s=ke(i);s&&r.push(s);}return r.length>0?{trackingEvents:n,nonLinears:r}:void 0}function ke(t){let e=E(t.getAttribute("width"),0),n=E(t.getAttribute("height"),0);if(e===0||n===0)return null;let r=t.getAttribute("id")??void 0,i=E(t.getAttribute("expandedWidth"),void 0),s=E(t.getAttribute("expandedHeight"),void 0),o=t.getAttribute("scalable"),d=o==="true"?true:o==="false"?false:void 0,l=t.getAttribute("maintainAspectRatio"),a=l==="true"?true:l==="false"?false:void 0,c=t.getAttribute("minSuggestedDuration"),u=c&&_(c)||void 0,m=t.getAttribute("apiFramework")??void 0,p=G(t),g=S(t,"NonLinearClickThrough")||void 0,A=x(t,"NonLinearClickTracking"),f=S(t,"AdParameters")||void 0;return {width:e,height:n,id:r,expandedWidth:i,expandedHeight:s,scalable:d,maintainAspectRatio:a,minSuggestedDuration:u,apiFramework:m,resources:p,clickThrough:g,clickTracking:A,adParameters:f}}function Y(t){let e={},n=w(t,"TrackingEvents");if(!n)return e;for(let r of b(n,"Tracking")){let i=r.getAttribute("event"),s=(r.textContent??"").trim();!i||!s||(e[i]||(e[i]=[]),e[i].push(s));}return e}var he=new Set(["start","firstQuartile","midpoint","thirdQuartile","complete","pause","resume","skip","loaded","mute","unmute","rewind","playerExpand","playerCollapse","closeLinear","notUsed","otherAdInteraction","creativeView"]);function Z(t){let e=j(),n=t.querySelector("TrackingEvents");if(!n)return e;let r=n.querySelectorAll("Tracking");for(let i of r){let s=i.getAttribute("event"),o=(i.textContent??"").trim();if(!(!s||!o))if(s==="progress"){let d=i.getAttribute("offset"),l=d?ee(d,0):0;e.progress.push({offset:l,url:o});}else he.has(s)&&e[s].push(o);}return e}function _(t){if(!t)return 0;let e=t.split(":");if(e.length!==3)return 0;let n=Number.parseInt(e[0],10),r=Number.parseInt(e[1],10),i=Number.parseFloat(e[2]);return Number.isNaN(n)||Number.isNaN(r)||Number.isNaN(i)?0:n*3600+r*60+i}function ee(t,e){if(t.endsWith("%")){let n=Number.parseFloat(t);return Number.isNaN(n)?0:n/100*e}return _(t)}function b(t,e){let n=[];for(let r=0;r<t.children.length;r++)t.children[r].tagName===e&&n.push(t.children[r]);return n}function w(t,e){for(let n=0;n<t.children.length;n++)if(t.children[n].tagName===e)return t.children[n];return null}function F(t,e){let n=[];for(let r of b(t,e)){let i=(r.textContent??"").trim();i&&n.push(i);}return n}function S(t,e){let n=t.querySelector(e);return n?(n.textContent??"").trim():""}function x(t,e){let n=t.querySelectorAll(e),r=[];for(let i of n){let s=(i.textContent??"").trim();s&&r.push(s);}return r}async function be(t,e){let n=e?.timeout??5e3,r=new AbortController,i=setTimeout(()=>r.abort(),n);try{let s=await fetch(t,{signal:r.signal});if(!s.ok)throw new Error(`VAST fetch failed: ${s.status}`);return await s.text()}finally{clearTimeout(i);}}async function te(t,e){let n=e?.timeout??1e4,r=e?.maxDepth??5,i=Date.now()+n,s=new Set,o=[],d=t;for(let l=0;l<=r;l++){let a=i-Date.now();if(a<=0)return {version:"",ads:[],errors:["VAST resolve timeout"]};if(s.has(d))return {version:"",ads:[],errors:["VAST circular reference detected"]};s.add(d);let c;try{c=await be(d,{timeout:a});}catch(p){return {version:"",ads:[],errors:[p instanceof Error?p.message:String(p)]}}let u=B(c);if(u.ads.length>0)return {version:u.version,ads:u.ads.map(p=>Ve(p,o)),errors:u.errors};let m=Ee(c);if(!m)return u;o.push(m),d=m.adTagUri;}return {version:"",ads:[],errors:["VAST wrapper depth limit exceeded"]}}function Ee(t){let r=new DOMParser().parseFromString(t,"text/xml").documentElement;if(r.tagName!=="VAST")return null;for(let i of b(r,"Ad")){let s=w(i,"Wrapper");if(!s)continue;let o=S(s,"VASTAdTagURI").trim();if(!o)continue;let d=F(s,"Error"),l=x(s,"Impression"),a=j(),c=[],u,m=[],p=[],g={},A=[],f=s.querySelector("Creatives");if(f)for(let C of b(f,"Creative")){let N=C.querySelector("Linear");if(N){a=Z(N);let V=N.querySelector("VideoClicks");V&&(c=x(V,"ClickTracking"));}let L=J(C);if(L){u=L;for(let V of L.companions)m.push(...V.clickTracking),p.push(...V.trackingEvents.creativeView);}let R=w(C,"NonLinearAds");if(R){g=Y(R);for(let V of b(R,"NonLinear"))A.push(...x(V,"NonLinearClickTracking"));}}let y=z(s),h=K(s),P=$(s);return {adTagUri:o,errors:d,impressions:l,trackingEvents:a,clickTracking:c,companionAds:u,companionClickTracking:m,companionCreativeViewTracking:p,nonLinearTrackingEvents:g,nonLinearClickTracking:A,verifications:y,extensions:h,viewableImpression:P}}return null}function j(){return {start:[],firstQuartile:[],midpoint:[],thirdQuartile:[],complete:[],pause:[],resume:[],skip:[],loaded:[],mute:[],unmute:[],rewind:[],playerExpand:[],playerCollapse:[],closeLinear:[],notUsed:[],otherAdInteraction:[],creativeView:[],progress:[]}}function ye(t,e){let n=j();for(let r of Object.keys(n)){if(r==="progress")continue;let i=n[r];for(let s of t)i.push(...s[r]);i.push(...e[r]);}for(let r of t)n.progress.push(...r.progress);return n.progress.push(...e.progress),n}function Te(t,e){let n=[...t,e].filter(r=>r!==void 0);if(n.length!==0)return {viewable:n.flatMap(r=>r.viewable),notViewable:n.flatMap(r=>r.notViewable),viewUndetermined:n.flatMap(r=>r.viewUndetermined)}}function Ve(t,e){if(e.length===0)return t;let n=[...e.flatMap(c=>c.errors),...t.errors],r=[...e.flatMap(c=>c.impressions),...t.impressions],i=e.flatMap(c=>c.verifications??[]),s=i.length>0||t.verifications&&t.verifications.length>0?[...i,...t.verifications??[]]:t.verifications,o=e.flatMap(c=>c.extensions??[]),d=o.length>0||t.extensions&&t.extensions.length>0?[...o,...t.extensions??[]]:t.extensions,l=Te(e.map(c=>c.viewableImpression),t.viewableImpression),a=t.creatives.map(c=>{let u=c;if(c.linear&&(u={...u,linear:{...c.linear,trackingEvents:ye(e.map(m=>m.trackingEvents),c.linear.trackingEvents),clickTracking:[...e.flatMap(m=>m.clickTracking),...c.linear.clickTracking]}}),c.companionAds){let m=e.flatMap(g=>g.companionClickTracking),p=e.flatMap(g=>g.companionCreativeViewTracking);(m.length>0||p.length>0)&&(u={...u,companionAds:{...c.companionAds,companions:c.companionAds.companions.map(g=>({...g,clickTracking:[...m,...g.clickTracking],trackingEvents:{creativeView:[...p,...g.trackingEvents.creativeView]}}))}});}else for(let m=e.length-1;m>=0;m--)if(e[m].companionAds){u={...u,companionAds:e[m].companionAds};break}if(c.nonLinearAds){let m=e.flatMap(g=>g.nonLinearClickTracking),p={};for(let g of e)for(let[A,f]of Object.entries(g.nonLinearTrackingEvents))p[A]||(p[A]=[]),p[A].push(...f);for(let[g,A]of Object.entries(c.nonLinearAds.trackingEvents))p[g]||(p[g]=[]),p[g].push(...A);u={...u,nonLinearAds:{trackingEvents:p,nonLinears:c.nonLinearAds.nonLinears.map(g=>({...g,clickTracking:[...m,...g.clickTracking]}))}};}return u});return {...t,errors:n,impressions:r,creatives:a,verifications:s,extensions:d,viewableImpression:l}}function E(t,e){if(t==null)return e;let n=Number.parseInt(t,10);return Number.isNaN(n)?e:n}function Se(t,e){if(t==null)return e;let n=Number.parseFloat(t);return Number.isNaN(n)?e:n}function ne(t){if(t.length===0)return null;let e=t.filter(r=>r.mimeType==="video/mp4");return (e.length>0?e:t).sort((r,i)=>(i.bitrate??0)-(r.bitrate??0))[0]}function O(t,e){let n=t.map(r=>r.replace("[ERRORCODE]",String(e)));k(n);}function k(t){for(let e of t)typeof navigator<"u"&&typeof navigator.sendBeacon=="function"?navigator.sendBeacon(e):new Image().src=e;}function Pe(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 re(t,e){let n=new Set,r=["start","firstQuartile","midpoint","thirdQuartile","complete"];return i=>{let s=Pe(i,t);if(!s||n.has(s))return;let o=r.indexOf(s);for(let d=0;d<=o;d++){let l=r[d];n.has(l)||(n.add(l),e(l));}}}function I(t){let{player:e,ad:n,linear:r,source:i}=t,s=n.id,o=e.setState,d=()=>{},l=new Promise(v=>{d=v;}),a=[];if(t.adPlugins)for(let v of t.adPlugins(n)){let T=v.setup(e,n);T&&a.push(T);}o("ad:loading"),e.emit("ad:start",{adId:s,clickThrough:r.clickThrough,skipOffset:r.skipOffset,duration:r.duration,adTitle:n.adTitle});for(let v of n.creatives)if(v.companionAds&&v.companionAds.companions.length>0){e.emit("ad:companions",{adId:s,required:v.companionAds.required,companions:v.companionAds.companions});break}for(let v of n.creatives)if(v.nonLinearAds&&v.nonLinearAds.nonLinears.length>0){e.emit("ad:nonlinears",{adId:s,nonLinears:v.nonLinearAds.nonLinears,trackingEvents:v.nonLinearAds.trackingEvents});break}k(n.impressions),e.emit("ad:impression",{adId:s});let c=ne(r.mediaFiles);if(!c)return h(),O(n.errors,403),e.emit("ad:error",{error:new Error("No suitable media file found"),source:i,vastErrorCode:403}),e.emit("ad:end",{adId:s}),d({outcome:"error",errorPhase:"load",adId:s}),{promise:l,abort:()=>{}};let u=re(r.duration,v=>{let T=r.trackingEvents[v];T&&k(T),e.emit("ad:quartile",{adId:s,quartile:v});}),m=new Set;function p(v){for(let T of r.trackingEvents.progress)!m.has(T.offset)&&v>=T.offset&&(m.add(T.offset),k([T.url]));}let g=e.muted||e.volume===0,A=!!document.fullscreenElement,f=false,y=false;function h(){for(let v of a)v();a.length=0;}function P(v){e.emit("ad:end",{adId:s});let T=v==="error"?{outcome:v,errorPhase:y?"playback":"load",adId:s}:{outcome:v,adId:s};t.onFinish&&t.onFinish(T),d(T);}function C(){f||(k(r.clickTracking),e.emit("ad:click",{clickThrough:r.clickThrough,clickTracking:r.clickTracking}));}function N(){f||(k(r.trackingEvents.skip),f=true,D(),h(),P("skipped"));}function L(){f||e.state==="ad:playing"&&(k(r.trackingEvents.pause),o("ad:paused"));}function R(){f||e.state==="ad:paused"&&(k(r.trackingEvents.resume),o("ad:playing"));}function V(){u(e.currentTime),p(e.currentTime);}function Q(){if(f)return;let v=e.muted||e.volume===0;v&&!g?(k(r.trackingEvents.mute),e.emit("ad:mute",{adId:s})):!v&&g&&(k(r.trackingEvents.unmute),e.emit("ad:unmute",{adId:s})),g=v,e.emit("ad:volumeChange",{adId:s,volume:e.muted?0:e.volume});}function W(){if(f)return;let v=!!document.fullscreenElement;v&&!A?(k(r.trackingEvents.playerExpand),e.emit("ad:fullscreen",{adId:s,fullscreen:true})):!v&&A&&(k(r.trackingEvents.playerCollapse),e.emit("ad:fullscreen",{adId:s,fullscreen:false})),A=v;}function H(){if(f)return;f=true,D(),h();let v=y?405:401;O(n.errors,v),e.emit("ad:error",{error:new Error("Ad media playback failed"),source:i,vastErrorCode:v}),P("error");}function X(){f||(f=true,u(r.duration),D(),h(),P("completed"));}function U(){e.el.removeEventListener("canplay",U),y=true,k(r.trackingEvents.loaded),k(r.trackingEvents.creativeView),e.emit("ad:loaded",{adId:s}),o("ad:playing"),e.play().catch(()=>{e.muted=true,e.play().catch(()=>{});});}function D(){e.el.removeEventListener("timeupdate",V),e.el.removeEventListener("ended",X),e.el.removeEventListener("error",H),e.el.removeEventListener("canplay",U),e.el.removeEventListener("pause",L),e.el.removeEventListener("play",R),e.el.removeEventListener("click",C),e.el.removeEventListener("volumechange",Q),document.removeEventListener("fullscreenchange",W),e.off("ad:skip",N);}return e.el.addEventListener("canplay",U),e.el.addEventListener("timeupdate",V),e.el.addEventListener("ended",X),e.el.addEventListener("error",H),e.el.addEventListener("pause",L),e.el.addEventListener("play",R),e.el.addEventListener("click",C),e.el.addEventListener("volumechange",Q),document.addEventListener("fullscreenchange",W),e.on("ad:skip",N),e.el.src=c.url,e.el.load(),{promise:l,abort:()=>{f||(f=true,D(),h());}}}function ie(t){let e=[];for(let i of t)for(let s of i.creatives)if(s.linear&&s.linear.mediaFiles.length>0){e.push({ad:i,linear:s.linear});break}if(e.length<=1)return {type:"single",ads:e,standalonePool:[]};let n=e.filter(i=>i.ad.sequence!=null),r=e.filter(i=>i.ad.sequence==null);return n.length>0?(n.sort((i,s)=>(i.ad.sequence??0)-(s.ad.sequence??0)),{type:"pod",ads:n,standalonePool:r}):{type:"waterfall",ads:r,standalonePool:[]}}async function se(t,e,n){let r={completed:0,skipped:0,failed:0},i=e.length,s=n.standalonePool?[...n.standalonePool]:[];t.emit("ad:pod:start",{ads:e.map(o=>o.ad),total:i});for(let o=0;o<e.length;o++){let{ad:d,linear:l}=e[o],a=o===e.length-1;t.emit("ad:pod:adstart",{ad:d,index:o,total:i});let{promise:c}=I({player:t,ad:d,linear:l,source:n.source,adPlugins:n.adPlugins,onFinish:a?n.onFinish:void 0}),u=await c;if(u.outcome==="error"&&s.length>0){let m=s.shift(),{promise:p}=I({player:t,ad:m.ad,linear:m.linear,source:n.source,adPlugins:n.adPlugins,onFinish:a?n.onFinish:void 0});u=await p;}switch(t.emit("ad:pod:adend",{ad:d,index:o,total:i}),u.outcome){case "completed":r.completed++;break;case "skipped":r.skipped++;break;case "error":r.failed++;break}}return t.emit("ad:pod:end",r),r}async function oe(t,e,n){for(let{ad:r,linear:i}of e){let{promise:s}=I({player:t,ad:r,linear:i,source:n.source,adPlugins:n.adPlugins,onFinish:n.onFinish}),o=await s;if(o.outcome!=="error"||o.errorPhase==="playback")return o}return null}function M(t){let n=new DOMParser().parseFromString(t,"text/xml");if(n.querySelector("parsererror"))return {version:"",adBreaks:[]};let i=n.documentElement;if((i.localName||i.tagName)!=="VMAP")return {version:"",adBreaks:[]};let o=i.getAttribute("version")??"",d=[];for(let l=0;l<i.children.length;l++){let a=i.children[l];if((a.localName||a.tagName)==="AdBreak"){let u=xe(a);u&&d.push(u);}}return {version:o,adBreaks:d}}function xe(t){let e=t.getAttribute("timeOffset");if(!e)return null;let n=Le(e),r=t.getAttribute("breakType"),i=r==="nonlinear"?"nonlinear":r==="display"?"display":"linear",s=t.getAttribute("breakId")??void 0,o=null,d={breakStart:[],breakEnd:[],error:[]};for(let l=0;l<t.children.length;l++){let a=t.children[l],c=a.localName||a.tagName;c==="AdSource"?o=Ne(a):c==="TrackingEvents"&&Ce(a,d);}return {timeOffset:n,breakType:i,breakId:s,adSource:o,trackingEvents:d}}function Ce(t,e){for(let n=0;n<t.children.length;n++){let r=t.children[n];if((r.localName||r.tagName)!=="Tracking")continue;let s=r.getAttribute("event"),o=(r.textContent??"").trim();!s||!o||(s==="breakStart"?e.breakStart.push(o):s==="breakEnd"?e.breakEnd.push(o):s==="error"&&e.error.push(o));}}function Ne(t){let e=t.getAttribute("id")??void 0,n=t.getAttribute("allowMultipleAds"),r=n!=null?n==="true":void 0,i=t.getAttribute("followRedirects"),s=i!=null?i==="true":void 0,o,d;for(let l=0;l<t.children.length;l++){let a=t.children[l],c=a.localName||a.tagName;if(c==="VASTAdData"){let u=a.querySelector("VAST");u&&(o=new XMLSerializer().serializeToString(u));}else c==="AdTagURI"&&(d=(a.textContent??"").trim());}return {id:e,allowMultipleAds:r,followRedirects:s,vastUrl:d,vastData:o}}function Le(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:Re(t)}}function Re(t){if(!t)return 0;let e=t.split(":");if(e.length!==3)return 0;let n=Number.parseInt(e[0],10),r=Number.parseInt(e[1],10),i=Number.parseFloat(e[2]);return Number.isNaN(n)||Number.isNaN(r)||Number.isNaN(i)?0:n*3600+r*60+i}function q(t,e,n){let r=new Set,i=0,s=false,o=false,d=e.filter(f=>f.timeOffset.type==="start"),l=e.filter(f=>f.timeOffset.type==="end"),a=e.filter(f=>f.timeOffset.type==="time"||f.timeOffset.type==="percentage").sort((f,y)=>ae(f)-ae(y));function c(){if(o)return;let f=t.currentTime,y=f>i+1.5;for(let h of a){if(r.has(h))continue;let P=Fe(h,t.duration);if(P!==null){if(y&&f>P+.5){r.add(h);continue}f>=P-.5&&(r.add(h),n(h));}}i=f;}function u(){if(!o)for(let f of l)r.has(f)||(r.add(f),n(f));}function m(){if(!s){s=true;for(let f of d)r.has(f)||(r.add(f),n(f));t.on("timeupdate",c),t.on("ended",u);}}function p(){o=true;}function g(){o=false,i=t.currentTime;}function A(){t.off("timeupdate",c),t.off("ended",u);}return {start:m,pause:p,resume:g,destroy:A}}function Fe(t,e){return t.timeOffset.type==="time"?t.timeOffset.seconds:t.timeOffset.type==="percentage"?t.timeOffset.pct/100*e:null}function ae(t){return t.timeOffset.type==="time"?t.timeOffset.seconds:t.timeOffset.type==="percentage"?t.timeOffset.pct:0}function ce(t){return {name:"vmap",setup(e){let n=false,r=null,i=null,s=e.setState;async function o(a){if(!(n||!a.adSource)){r&&r.pause(),k(a.trackingEvents.breakStart),e.emit("ad:breakStart",{breakId:a.breakId});try{let f=function(){n||(s("playing"),e.el.src=A,e.el.load(),e.el.currentTime=p,g||e.el.play().catch(()=>{e.el.muted=!0,e.el.play().catch(()=>{});}));};var c=f;let u;if(a.adSource.vastData)u=B(a.adSource.vastData);else if(a.adSource.vastUrl)u=await te(a.adSource.vastUrl,t.vastOptions);else return;if(n||u.ads.length===0)return;let m=ie(u.ads);if(m.ads.length===0)return;a.adSource.allowMultipleAds===!1&&(m={type:"single",ads:[m.ads[0]],standalonePool:[]});let p=e.el.currentTime,g=e.el.paused,A=e.el.src;switch(m.type){case "single":{let{promise:y,abort:h}=I({player:e,ad:m.ads[0].ad,linear:m.ads[0].linear,source:"vmap",adPlugins:t.adPlugins,onFinish:f});i=h,await y;break}case "pod":{await se(e,m.ads,{source:"vmap",adPlugins:t.adPlugins,onFinish:f,standalonePool:m.standalonePool});break}case "waterfall":{await oe(e,m.ads,{source:"vmap",adPlugins:t.adPlugins,onFinish:f})||(O(u.errors,303),e.emit("ad:error",{error:new Error("All waterfall ads failed"),source:"vmap",vastErrorCode:303}),f());break}}}catch(u){if(!n){let m=u instanceof Error?u:new Error(String(u)),p=m.name==="AbortError"?301:100;k(a.trackingEvents.error),e.emit("ad:error",{error:m,source:"vmap",vastErrorCode:p});}}finally{k(a.trackingEvents.breakEnd),e.emit("ad:breakEnd",{breakId:a.breakId}),r&&r.resume();}}}async function d(){if(!n)try{let a=t.timeout??1e4,c=new AbortController,u=setTimeout(()=>c.abort(),a),m;try{let A=await fetch(t.url,{signal:c.signal});if(!A.ok)throw new Error(`VMAP fetch failed: ${A.status}`);m=await A.text();}finally{clearTimeout(u);}if(n)return;let p=M(m);if(p.adBreaks.length===0)return;let g=q(e,p.adBreaks,A=>o(A));r=g,g.start();}catch(a){if(n)return;e.emit("ad:error",{error:a instanceof Error?a:new Error(String(a)),source:"vmap"});}}function l({to:a}){a==="ready"&&!n&&(e.off("statechange",l),d());}return e.state==="ready"||e.state==="playing"||e.state==="paused"?d():e.on("statechange",l),()=>{n=true,e.off("statechange",l),r&&r.destroy(),i&&i();}}}}var Oe=globalThis.Vide??(globalThis.Vide={});Object.assign(Oe,{vmap:ce,parseVmap:M,createScheduler:q});})();
|
package/dist/vmap/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { P as Player, f as Plugin } from '../types-
|
|
2
|
-
import { V as VmapResponse, A as AdBreak, a as VmapPluginOptions } from '../types-
|
|
3
|
-
export { b as AdBreakTimeOffset, c as AdBreakTrackingEvents, d as AdSource } from '../types-
|
|
4
|
-
import '../types-
|
|
1
|
+
import { P as Player, f as Plugin } from '../types-BD5ZFUAt.js';
|
|
2
|
+
import { V as VmapResponse, A as AdBreak, a as VmapPluginOptions } from '../types-DWH68b8d.js';
|
|
3
|
+
export { b as AdBreakTimeOffset, c as AdBreakTrackingEvents, d as AdSource } from '../types-DWH68b8d.js';
|
|
4
|
+
import '../types-JlkZYMyA.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Parse a VMAP XML string into a VmapResponse object.
|
package/dist/vmap/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{b as createScheduler,a as parseVmap,c as vmap}from'../chunk-
|
|
1
|
+
export{b as createScheduler,a as parseVmap,c as vmap}from'../chunk-TNHV5PHM.mjs';import'../chunk-2UHU76KF.mjs';import'../chunk-UY5CGRNN.mjs';
|
package/dist/vmap/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{b as createScheduler,a as parseVmap,c as vmap}from'../chunk-
|
|
1
|
+
export{b as createScheduler,a as parseVmap,c as vmap}from'../chunk-TNHV5PHM.mjs';import'../chunk-2UHU76KF.mjs';import'../chunk-UY5CGRNN.mjs';
|