@munsonlabs/video-player 0.0.11 → 0.0.12

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/element.mjs CHANGED
@@ -1 +1 @@
1
- import{Fragment as e,Transition as t,computed as n,createBlock as r,createCommentVNode as i,createElementBlock as a,createElementVNode as o,createStaticVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,defineCustomElement as d,inject as f,mergeProps as p,nextTick as m,normalizeClass as h,normalizeProps as g,normalizeStyle as _,onBeforeUnmount as v,onMounted as y,openBlock as b,provide as x,reactive as S,ref as C,toDisplayString as w,toRef as T,unref as E,watch as D,withCtx as O,withModifiers as k}from"vue";function A(){return/iPad|iPhone|iPod/.test(navigator.userAgent)||/Mac/.test(navigator.userAgent)&&navigator.maxTouchPoints>1}function j(e){(e.requestFullscreen||e.webkitRequestFullscreen)?.call(e)}function M(){(document.exitFullscreen||document.webkitExitFullscreen)?.call(document)}function N(e){let[t,n]=e.split(`:`).map(Number);return{isPortrait:n>t,cssRatio:`${t}/${n}`}}function P(e){return!e||isNaN(e)?`0:00`:`${Math.floor(e/60)}:${String(Math.floor(e%60)).padStart(2,`0`)}`}function F(e,t=(...e)=>String(e[0])){let n={};return async(...r)=>{let i=t(...r);if(n[i])return n[i];let a=await e(...r);return n[i]=a,a}}function I(e){return e.filter(e=>e.src&&(e.type===`application/x-mpegURL`||e.type===`video/mp4`)).sort((e,t)=>e.type===`application/x-mpegURL`?-1:1)}const L=`video-select`,ee=`video-state`,R=`fullscreen-pending`,z=`fullscreen-pending-done`,B=`player:autoAdvance`,te=`mvp-youtube`,V=`mvp-vimeo`,H=`mvp-dailymotion`,U=`mvp-ad-playing`,W=`mvp-ad-paused`,G=`16:9`,K=[.5,.75,1,1.25,1.5,2],ne=[[.25,`firstQuartile`],[.5,`midpoint`],[.75,`thirdQuartile`]];function re(e){return e.match(/cdn\.jwplayer\.com\/videos\/([^-]+)/)?.[1]??e.match(/cdn\.jwplayer\.com\/manifests\/([^.]+)/)?.[1]??e.match(/^jwplayer:\/\/([^/]+)$/)?.[1]??null}function ie(e){let t=e?.advertising?.schedule;return Array.isArray(t)&&t.length?t[0].tag??null:e?.advertising?.tag??null}const q=F(async e=>{let t=await fetch(`https://cdn.jwplayer.com/v2/media/${e}`);if(!t.ok)throw Error(`JW Platform API error: ${t.status}`);let n=(await t.json()).playlist?.[0];if(!n)throw Error(`JW Platform: empty playlist`);let r=I((n.sources??[]).map(e=>({src:e.file,type:e.type})));if(!r.length)throw Error(`JW Platform: no playable sources found`);return{src:r[0].src,type:r[0].type,poster:n.image??null,adTagUrl:ie(n)}});async function ae(e){let t=re(e);if(!t)throw Error(`JW Platform: unrecognised source URL: ${e}`);let n=await q(t);if(e.startsWith(`jwplayer://`))return n;let r=/\.mp4(\?|#|$)/.test(e)?`video/mp4`:`application/x-mpegURL`;return{...n,src:e,type:r}}function oe(e){let t;try{t=new URL(e)}catch{return null}if(t.hostname!==`players.brightcove.net`)return null;let[,n,r]=t.pathname.split(`/`),i=t.searchParams.get(`videoId`),a=r?.indexOf(`_`)??-1;return!n||a===-1||!i?null:{accountId:n,playerId:r.slice(0,a),embed:r.slice(a+1),videoId:i}}function se(e){return(e?.plugins??[]).find(e=>e.name===`ima3`)?.options?.serverUrl??null}const ce=F(async(e,t,n,r)=>{let i=await fetch(`https://players.brightcove.net/${e}/${t}_${n}/config.json`);if(!i.ok)throw Error(`Brightcove: could not load player config (${i.status})`);let a=await i.json(),o=r??a?.video_cloud?.policy_key;if(!o)throw Error(`Brightcove: policy_key not found in player config`);return{policyKey:o,adTagUrl:se(a)}},(e,t,n)=>`${e}/${t}_${n}`);async function le(e,t,n){let r=await fetch(`https://edge.api.brightcove.com/playback/v1/accounts/${e}/videos/${t}`,{headers:{Accept:`application/json;pk=${n}`}});if(!r.ok)throw Error(`Brightcove Playback API error: ${r.status}`);let i=await r.json(),a=I(i.sources||[]);if(!a.length)throw Error(`Brightcove: no playable sources found`);return{sources:a.map(e=>({src:e.src,type:e.type})),poster:i.poster??i.thumbnail??null}}async function ue(e,t){let n=oe(e);if(!n)throw Error(`Brightcove: invalid src — expected a Brightcove embed URL, e.g. "https://players.brightcove.net/{accountId}/{playerId}_{embed}/index.html?videoId={videoId}"`);let{accountId:r,playerId:i,embed:a,videoId:o}=n,{policyKey:s,adTagUrl:c}=await ce(r,i,a,t),{sources:l,poster:u}=await le(r,o,s);return{...l[0],poster:u,adTagUrl:c}}function de(){let e=new Map;function t(t,n){for(let r of Array.isArray(t)?t:[t])e.has(r)||e.set(r,new Set),e.get(r)?.add(n)}function n(t,n){e.get(t)?.delete(n)}function r(t,...n){e.get(t)?.forEach(e=>e(...n))}function i(){e.clear()}return{on:t,off:n,trigger:r,dispose:i}}const fe={};function pe(e,t=e){return fe[t]||(fe[t]=new Promise((t,n)=>{let r=document.createElement(`script`);r.src=e,r.onload=()=>t(),r.onerror=()=>n(Error(`Failed to load script: ${e}`)),document.head.appendChild(r)})),fe[t]}let me=0;function he(e,t){e.parentElement?.classList.add(t);let n=`${t}-${++me}`,r=document.createElement(`div`);r.id=n,r.className=`mvp-tech`,r.style.cssText=`width:100%;height:100%;top:0;left:0;position:absolute`;let i=document.createElement(`div`);return i.style.cssText=`width:100%;height:100%;position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity 0.2s`,i.appendChild(r),e.parentElement?.insertBefore(i,e),{techId:n,wrapper:i,innerDiv:r}}function ge(e,t){e.style.display=`none`,t.style.opacity=`1`,t.style.pointerEvents=``}function _e(e,t,n){t.remove(),e.parentElement?.classList.remove(n),e.style.display=``}function ve(e){return e.closest(`.player__shell`)}function ye(e){e.trigger(R);let t=document.createElement(`div`);t.style.cssText=`position:fixed;inset:0;z-index:99999;opacity:0;pointer-events:none`,document.body.appendChild(t);let n=!1;function r(){n||(e.trigger(z),t.style.opacity=`1`,t.style.pointerEvents=`auto`)}function i(r){n||(n=!0,e.trigger(z),t.remove(),r?.())}return{overlay:t,reveal:r,finish:i}}function be(e,t){return t===e.PlayerState.PLAYING||t===e.PlayerState.BUFFERING}function xe(e){let t={videoId:null,listId:null},n=e.match(/^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|shorts\/|&v=)([^#&?]*).*/);n?.[2]?.length===11&&(t.videoId=n[2]);let r=e.match(/[?&]list=([^#&?]+)/);return r?.[1]&&(t.listId=r[1]),t}let Se=!1,Ce=!1;const J=[];function we(){Ce||(Ce=!0,pe(`https://www.youtube.com/iframe_api`).then(()=>{window.YT?.ready(()=>{Se=!0,J.forEach(e=>e()),J.length=0})}))}function Te(e,t){we();let n=de(),{techId:r,wrapper:i}=he(e,te),a=xe(t.src),o=null,s=a.videoId,c=!1,l=!1,u=!1,d=null,f=!1,p=null,m=!1,h=new Set,g=null,_={active:!1,wasPaused:!1,timeBefore:0,catchUpInterval:null};function v(e,t=0){let n=setTimeout(()=>{h.delete(n),e()},t);h.add(n)}function y(){try{let e=o?.getPlayerResponse()?.adPlacements;return Array.isArray(e)&&e.length>0}catch{return!1}}function b(e){o?.loadVideoById({videoId:e})}function x(e){o?.cueVideoById({videoId:e})}function S(){a.videoId&&(_.wasPaused=!1,c?s===a.videoId?o?.playVideo():(b(a.videoId),s=a.videoId):(n.trigger(`waiting`),l=!0))}function C(){_.catchUpInterval&&clearInterval(_.catchUpInterval),_.active=!1,_.wasPaused&&o?.pauseVideo(),n.trigger(`seeked`)}function w(){m=(o?.getAvailablePlaybackRates()??[]).length>1,c=!0,t.muted&&o?.mute(),l?S():u&&a.videoId&&(x(a.videoId),s=a.videoId)}function T(e){if(e===d||p!==null)return;d=e;let t=y();t!==f&&(f=t,n.trigger(t?`adstart`:`adend`));let r=window.YT;if(r){switch(e){case-1:n.trigger(`loadstart`),n.trigger(`loadedmetadata`),n.trigger(`durationchange`),n.trigger(`ratechange`);break;case r.PlayerState.ENDED:n.trigger(`ended`);break;case r.PlayerState.PLAYING:n.trigger(`timeupdate`),n.trigger(`durationchange`),n.trigger(`playing`),n.trigger(`play`),_.active&&C();break;case r.PlayerState.PAUSED:n.trigger(`canplay`),_.active||n.trigger(`pause`);break;case r.PlayerState.BUFFERING:n.trigger(`waiting`);break;case r.PlayerState.CUED:n.trigger(`canplay`);break}g&&=(clearInterval(g),null),e===r.PlayerState.PLAYING&&(g=setInterval(()=>n.trigger(`timeupdate`),250))}}function E(){let e={controls:+!!t.nativeUi,modestbranding:1,rel:0,showinfo:0,mute:+!!t.muted,origin:window.location.origin,allowfullscreen:1,fullscreen:1,fs:1,playsinline:1,...t.customVars};s=a.videoId,o=new window.YT.Player(r,{videoId:s??void 0,playerVars:e,events:{onReady:w,onStateChange:e=>T(e.data),onPlaybackRateChange:()=>n.trigger(`ratechange`),onVolumeChange:()=>n.trigger(`volumechange`),onError:e=>{p=e.data,n.trigger(`error`),v(()=>{p=null})}}})}Se?E():J.push(E),t.autoplay?c?S():l=!0:a.videoId&&(u=!0);function D(){if(!o)return;let e=o.getCurrentTime(),{video_id:t}=o.getVideoData();o.pauseVideo();let{overlay:r,reveal:i,finish:a}=ye(n),s=document.createElement(`div`);s.id=`yt-fs-${Math.random().toString(36).slice(2)}`,r.appendChild(s);let c=null,l=()=>{a(()=>{let t=c?.getCurrentTime()??e;try{c?.destroy()}catch{}o?.seekTo(t,!0),n.trigger(`timeupdate`)})};c=new window.YT.Player(s.id,{videoId:t,playerVars:{playsinline:0,autoplay:1,controls:1,modestbranding:1,rel:0,start:Math.floor(e)},events:{onReady:t=>{i(),t.target.seekTo(e,!0),t.target.playVideo()},onStateChange:e=>{let t=window.YT;t&&(e.data===t.PlayerState.PAUSED||e.data===t.PlayerState.ENDED)&&l()}}})}function O(){if(A()&&o){D();return}let t=ve(e);t&&j(t)}function k(){M()}return{el:i,play:S,pause:()=>o?.pauseVideo(),paused:()=>{if(!o)return!0;let e=window.YT;return!e||!be(e,d)},currentTime:()=>o?.getCurrentTime()??0,setCurrentTime:e=>{if(!o)return;let t=window.YT;t&&d===t.PlayerState.PAUSED&&(_.timeBefore=o.getCurrentTime()),_.active||(_.wasPaused=!t||!be(t,d)),o.seekTo(e,!0),n.trigger(`timeupdate`),n.trigger(`seeking`),_.active=!0,t&&d===t.PlayerState.PAUSED&&_.timeBefore!==e&&(_.catchUpInterval&&clearInterval(_.catchUpInterval),_.catchUpInterval=setInterval(()=>{d!==t.PlayerState.PAUSED||!_.active?_.catchUpInterval&&clearInterval(_.catchUpInterval):o&&o.getCurrentTime()!==_.timeBefore&&(n.trigger(`timeupdate`),C())},250))},duration:()=>o?.getDuration()??0,volume:()=>o?o.getVolume()/100:1,setVolume:e=>o?.setVolume(e*100),muted:()=>o?.isMuted()??!1,setMuted:e=>{o&&(e?o.mute():o.unMute(),v(()=>n.trigger(`volumechange`),50))},playbackRate:()=>o?.getPlaybackRate()??1,setPlaybackRate:e=>o?.setPlaybackRate(e),bufferedEnd:()=>o?.getVideoLoadedFraction?o.getVideoLoadedFraction()*o.getDuration():0,error:()=>p===null?null:{code:p,message:`This video could not be played.`},setSrc:e=>{let t=xe(e);a.videoId=t.videoId,a.listId=t.listId,a.videoId&&(c?(b(a.videoId),s=a.videoId):u=!0)},featuresPlaybackRate:()=>m,enterFullscreen:O,exitFullscreen:k,on:n.on,off:n.off,dispose:()=>{if(h.forEach(clearTimeout),h.clear(),g&&clearInterval(g),_.catchUpInterval&&clearInterval(_.catchUpInterval),o)try{o.stopVideo(),o.destroy()}catch{}else{let e=J.indexOf(E);e!==-1&&J.splice(e,1)}o=null,_e(e,i,te),n.dispose()}}}function Ee(e){return e.match(/(?:vimeo\.com\/(?:video\/|channels\/[^/]+\/|groups\/[^/]+\/videos\/)?|player\.vimeo\.com\/video\/)(\d+)/)?.[1]??null}function De(e,t){let n=de(),{techId:r,wrapper:i}=he(e,V),a=Ee(t.src),o=null,s=0,c=0,l=1,u=!1,d=!0,f=1,p=!1,m=!1,h=!1,g=null,_=new Set;function v(e,t=0){let n=setTimeout(()=>{_.delete(n),e()},t);_.add(n)}function y(){if(!o){m=!0;return}o.play().catch(()=>{})}function b(){t.muted&&o?.setMuted(!0).catch(()=>{}),m&&y()}async function x(e){if(await pe(`https://player.vimeo.com/api/player.js`,`vimeo`),h||!window.Vimeo)return;let i={id:Number(e),byline:!1,portrait:!1,title:!1,transparent:!0,controls:!!t.nativeUi,autopause:!1,...t.autoplay!==void 0&&{autoplay:t.autoplay},...t.muted!==void 0&&{muted:t.muted}};o=new window.Vimeo.Player(r,i),t.autoplay&&(m=!0),o.ready().then(b).catch(e=>{g={code:4,message:e?.message||`This video is unavailable or cannot be embedded here.`},n.trigger(`error`)}),o.on(`play`,()=>{d=!1,n.trigger(`play`),n.trigger(`playing`)}),o.on(`pause`,()=>{d=!0,n.trigger(`pause`)}),o.on(`ended`,()=>{d=!0,n.trigger(`ended`)}),o.on(`timeupdate`,e=>{let{seconds:t,duration:r}=e;s=t,c=r,n.trigger(`timeupdate`),r&&!p&&(p=!0,n.trigger(`durationchange`))}),o.on(`loaded`,()=>{p=!1,n.trigger(`loadedmetadata`),n.trigger(`durationchange`)}),o.on(`seeking`,e=>{s=e.seconds,n.trigger(`seeking`)}),o.on(`seeked`,e=>{s=e.seconds,n.trigger(`seeked`),n.trigger(`timeupdate`)}),o.on(`bufferstart`,()=>n.trigger(`waiting`)),o.on(`bufferend`,()=>n.trigger(`canplay`)),o.on(`volumechange`,e=>{l=e.volume,n.trigger(`volumechange`)}),o.on(`error`,()=>n.trigger(`error`))}a&&x(a);function S(){if(!A()){let t=ve(e);t&&j(t);return}o?.requestFullscreen().catch(()=>{})}function C(){M()}return{el:i,play:y,pause:()=>o?.pause().catch(()=>{}),paused:()=>d,currentTime:()=>s,setCurrentTime:e=>{o?.setCurrentTime(e).catch(()=>{}),n.trigger(`timeupdate`),n.trigger(`seeking`)},duration:()=>c,volume:()=>l,setVolume:e=>{l=e,o?.setVolume(e).catch(()=>{})},muted:()=>u,setMuted:e=>{u=e,o?.setMuted(e).then(()=>v(()=>n.trigger(`volumechange`),50)).catch(()=>{})},playbackRate:()=>f,setPlaybackRate:e=>{f=e,o?.setPlaybackRate(e).catch(()=>{}),n.trigger(`ratechange`)},bufferedEnd:()=>s,error:()=>g,setSrc:()=>{},featuresPlaybackRate:()=>!1,enterFullscreen:S,exitFullscreen:C,on:n.on,off:n.off,dispose:()=>{h=!0,_.forEach(clearTimeout),_.clear(),o?.destroy().catch(()=>{}),o=null,_e(e,i,V),n.dispose()}}}function Oe(e){let t=e.match(/[?&]video=([a-zA-Z0-9]+)/);return t?t[1]:e.match(/(?:dailymotion\.com\/(?:embed\/)?video\/|dai\.ly\/)([a-zA-Z0-9]+)/)?.[1]??null}function ke(e,t){let n=de(),{techId:r,wrapper:i}=he(e,H),a=ve(e),o=Oe(t.src),s=typeof t.customVars?.playerId==`string`?t.customVars.playerId:void 0,c=null,l=0,u=0,d=1,f=!1,p=!0,m=!1,h=!1,g=null;async function _(){if(!o){g={code:4,message:`Could not parse video ID from source URL`},n.trigger(`error`);return}try{let e=await pe(s?`https://geo.dailymotion.com/libs/player/${s}.js`:`https://geo.dailymotion.com/libs/player.js`,s||`dailymotion-sdk`).then(()=>window.dailymotion);if(!e)return;let i=await e.createPlayer(r,{...s&&{player:s},video:o,params:{autoplay:!!t.autoplay,mute:!!t.muted}});c=i;let a=e.events;m&&i.play(),i.on(a.PLAYER_CRITICALPATHREADY,e=>{let t=e.videoThumbnails;if(!t)return;let r=Object.keys(t).map(Number).sort((e,t)=>t-e)[0],i=r===void 0?void 0:t[r];i&&n.trigger(`posterchange`,i)}),i.on(a.VIDEO_PLAY,()=>{p=!1,n.trigger(`play`),n.trigger(`playing`),!t.autoplay&&!h&&(h=!0,i.pause())}),i.on(a.VIDEO_PLAYING,()=>{p=!1,n.trigger(`play`),n.trigger(`playing`)}),i.on(a.VIDEO_PAUSE,()=>{p=!0,n.trigger(`pause`)}),a.VIDEO_BUFFERING&&i.on(a.VIDEO_BUFFERING,()=>n.trigger(`waiting`)),i.on(a.VIDEO_END,()=>{p=!0,n.trigger(`ended`)}),i.on(a.VIDEO_TIMECHANGE,e=>{l=e.videoTime??l,u=e.videoDuration??u,n.trigger(`timeupdate`)}),i.on(a.VIDEO_DURATIONCHANGE,e=>{u=e.videoDuration??u,n.trigger(`durationchange`)}),i.on(a.VIDEO_SEEKSTART,()=>n.trigger(`seeking`)),i.on(a.VIDEO_SEEKEND,e=>{l=e.videoTime??l,n.trigger(`seeked`)}),i.on(a.PLAYER_VOLUMECHANGE,e=>{d=e.playerVolume??d,f=e.playerIsMuted??f,n.trigger(`volumechange`)}),i.on(a.PLAYER_ERROR,()=>n.trigger(`error`)),a.AD_START&&i.on(a.AD_START,()=>{p=!1,n.trigger(`play`),n.trigger(`adstart`)}),a.AD_END&&i.on(a.AD_END,()=>n.trigger(`adend`))}catch(e){g={code:4,message:e instanceof Error?e.message:`This video could not be played.`},n.trigger(`error`)}}_();function v(){c?c.play():m=!0}function y(){if(A()){c?.setFullscreen(!0);return}a&&j(a)}function b(){if(A()){c?.setFullscreen(!1);return}M()}return{el:i,play:v,pause:()=>c?.pause(),paused:()=>p,currentTime:()=>l,setCurrentTime:e=>{l=e,c?.seek(e),n.trigger(`seeking`)},duration:()=>u,volume:()=>d,setVolume:e=>{d=e,c?.setVolume(e)},muted:()=>f,setMuted:e=>{f=e,c?.setMute(e)},playbackRate:()=>1,setPlaybackRate:()=>{},bufferedEnd:()=>l,error:()=>g,setSrc:()=>{},featuresPlaybackRate:()=>!1,enterFullscreen:y,exitFullscreen:b,on:n.on,off:n.off,dispose:()=>{c?.destroy?.(),c=null,_e(e,i,H),n.dispose()}}}const Ae=[{test:e=>/youtu\.be|youtube\.com/.test(e),key:`youtube`,embed:!0},{test:e=>/vimeo\.com|player\.vimeo\.com/.test(e),key:`vimeo`,embed:!0},{test:e=>/dailymotion\.com|dai\.ly/.test(e),key:`dailymotion`,embed:!0},{test:e=>/cdn\.jwplayer\.com/.test(e)||e.startsWith(`jwplayer://`),key:`jwplayer`,embed:!1},{test:e=>/players\.brightcove\.net/.test(e),key:`brightcove`,embed:!1}];function je(e){return Ae.find(t=>t.test(e))?.key??`html5`}function Me(e){if(/\.m3u8(\?|#|$)/.test(e))return`application/x-mpegURL`;if(/\.mp4(\?|#|$)/.test(e))return`video/mp4`}function Ne(e){return Ae.find(t=>t.test(e))?.embed??!1}const Pe={youtube:Te,vimeo:De,dailymotion:ke};function Fe(e,t,n){let r=Pe[je(e)];return r?r(t,n):null}async function Ie(e){let t=je(e);return t===`jwplayer`?ae(e):t===`brightcove`?ue(e):{src:e,type:Me(e)}}const Le=[`play`,`pause`,`ended`,`error`,`timeupdate`,`durationchange`,`progress`,`volumechange`,`ratechange`,`seeking`,`seeked`,`waiting`,`playing`,`canplay`];function Re(e,t){let n=de(),r=null,i=!1,a=null;async function o(t){let{default:n}=await import(`hls.js`);if(!(i||a!==t)){if(!n.isSupported()){e.src=t;return}r=new n({liveDurationInfinity:!0}),r.loadSource(t),r.attachMedia(e)}}function s(t,n){if(r?.destroy(),r=null,a=null,n===`application/x-mpegURL`){a=t,o(t);return}e.src=t}let c=e=>()=>n.trigger(e),l=Le.map(e=>[e,c(e)]);for(let[t,n]of l)e.addEventListener(t,n);let u=[[`webkitbeginfullscreen`,c(`nativefullscreenenter`)],[`webkitendfullscreen`,c(`nativefullscreenexit`)]];for(let[t,n]of u)e.addEventListener(t,n);e.poster=t.poster??``,e.muted=t.muted??t.autoplay??!1,e.playbackRate=t.playbackRate??1,e.playsInline=!0,s(t.src,t.type),t.autoplay&&e.play();function d(){let t=e;if(typeof t.webkitEnterFullscreen==`function`){t.webkitEnterFullscreen();return}let n=e.closest(`.player__shell`);n instanceof HTMLElement&&j(n)}function f(){let t=e;if(typeof t.webkitExitFullscreen==`function`){t.webkitExitFullscreen();return}M()}return{el:e,play:()=>e.play(),pause:()=>e.pause(),paused:()=>e.paused,currentTime:()=>e.currentTime,setCurrentTime:t=>{e.currentTime=t},duration:()=>e.duration,volume:()=>e.volume,setVolume:t=>{e.volume=t},muted:()=>e.muted,setMuted:t=>{e.muted=t},playbackRate:()=>e.playbackRate,setPlaybackRate:t=>{e.playbackRate=t},bufferedEnd:()=>{let{buffered:t,duration:n}=e;if(!t.length)return 0;let r=t.end(t.length-1);return n&&r>n?n:r},error:()=>{let t=e.error;return t?{code:t.code,message:t.message||`This video could not be played.`}:null},setSrc:s,featuresPlaybackRate:()=>!0,enterFullscreen:d,exitFullscreen:f,on:n.on,off:n.off,dispose:()=>{i=!0,r?.destroy();for(let[t,n]of l)e.removeEventListener(t,n);for(let[t,n]of u)e.removeEventListener(t,n);n.dispose()}}}function ze(){return window.google?.ima?Promise.resolve():new Promise((e,t)=>{let n=document.createElement(`script`);n.src=`https://imasdk.googleapis.com/js/sdkloader/ima3.js`,n.onload=()=>e(),n.onerror=()=>t(Error(`Failed to load Google IMA SDK`)),document.head.appendChild(n)})}function Be(e,t,n,r){let i=document.createElement(`div`);i.className=`ima-ad-container`,e.appendChild(i);let a=null,o=null,s=null,c=!1,l=!1,u=!1,d=!1,f=!1,p=!1,m=1,h=new ResizeObserver(([e])=>{let t=window.google?.ima;if(!s||!t)return;let{width:n,height:r}=e.contentRect;s.resize(n,r,t.ViewMode.NORMAL)});h.observe(t);function g(){o?.contentComplete()}function _(t){d=t,e.classList.toggle(U,t),t||(f=!1,e.classList.remove(W))}function v(){if(c||!l||!u||!a||!o)return;c=!0;let e=window.google?.ima;if(!e)return;a.initialize();let t=new e.AdsRequest;t.adTagUrl=n,o.requestAds(t)}ze().then(()=>{if(p)return;let n=window.google?.ima;n&&(a=new n.AdDisplayContainer(i,t),o=new n.AdsLoader(a),l=!0,o.addEventListener(n.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,i=>{if(p)return;let a=new n.AdsRenderingSettings;a.restoreCustomPlaybackStateOnAdBreakComplete=!0,s=i.getAdsManager(t,a),t.addEventListener(`ended`,g),s.addEventListener(n.AdEvent.Type.CONTENT_PAUSE_REQUESTED,()=>{t.removeEventListener(`ended`,g),t.pause(),_(!0),r.onAdStart();let e=s?.getVolume()??1;e>0&&(m=e),r.onAdMuteChange(e===0)}),s.addEventListener(n.AdEvent.Type.CONTENT_RESUME_REQUESTED,()=>{t.addEventListener(`ended`,g),_(!1),r.onAdEnd(),t.ended||t.play()}),s.addEventListener(n.AdEvent.Type.PAUSED,()=>{f=!0,e.classList.add(W),r.onAdPauseChange(!0)}),s.addEventListener(n.AdEvent.Type.RESUMED,()=>{f=!1,e.classList.remove(W),r.onAdPauseChange(!1)}),s.addEventListener(n.AdEvent.Type.AD_PROGRESS,()=>{r.onAdProgress(s?.getRemainingTime()??0)}),s.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{_(!1),r.onError(e.getError().getMessage()),t.play()});try{s.init(t.clientWidth,t.clientHeight,n.ViewMode.NORMAL),s.start()}catch(e){r.onError(e instanceof Error?e.message:`Ad playback failed to start.`)}}),o.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{r.onError(e.getError().getMessage())}),v())}).catch(e=>r.onError(e.message));function y(){u=!0,v()}function b(){if(!s)return;let e=s.getVolume();e>0?(m=e,s.setVolume(0)):s.setVolume(m||1),r.onAdMuteChange(s.getVolume()===0)}return{isAdPlaying:()=>d,isAdPaused:()=>f,requestAdsOnFirstPlay:y,pauseAd:()=>s?.pause(),resumeAd:()=>s?.resume(),toggleAdMute:b,dispose:()=>{p=!0,h.disconnect(),t.removeEventListener(`ended`,g),s?.destroy(),o?.destroy(),i.remove(),e.classList.remove(U,W)}}}const Ve=new Set;function He(e){return Ve.add(e),()=>Ve.delete(e)}function Ue(e){Ve.forEach(t=>{if(t!==e)try{t()}catch{}})}function We(e){let t=C(!1),n=C(!1);function r(){let e=document;t.value=!!(document.fullscreenElement||e.webkitFullscreenElement),n.value=!1}function i(){let n=e();if(n){if(t.value){n.exitFullscreen();return}n.enterFullscreen()}}function a(){n.value=!0}function o(e){e.on(R,()=>{n.value=!0}),e.on(z,()=>{n.value=!1}),e.on(`nativefullscreenenter`,()=>{t.value=!0,n.value=!1}),e.on(`nativefullscreenexit`,()=>{t.value=!1,n.value=!1})}return y(()=>{document.addEventListener(`fullscreenchange`,r),document.addEventListener(`webkitfullscreenchange`,r)}),v(()=>{document.removeEventListener(`fullscreenchange`,r),document.removeEventListener(`webkitfullscreenchange`,r)}),{isFullscreen:t,isFullscreenPending:n,toggleFullscreen:i,markFullscreenPending:a,attachPlayerEvents:o}}function Ge(){let e=C(!1),t=null;function n(){clearTimeout(t??void 0),e.value=!1}function r(r){r.on(`waiting`,()=>{clearTimeout(t??void 0),t=setTimeout(()=>{e.value=!0},500)}),r.on(`playing`,n),r.on(`canplay`,n)}return v(()=>clearTimeout(t??void 0)),{isBuffering:e,attachPlayerEvents:r,reset:n}}function Ke(e,t,n){let r=new Set;function i(){if(!t.value)return;let i=e.value/t.value;for(let[e,t]of ne)!r.has(e)&&i>=e&&(r.add(e),n(t))}function a(){r.clear()}return{checkQuartiles:i,reset:a}}function qe(){try{return JSON.parse(localStorage.getItem(`player:positions`)??`[]`)}catch{return[]}}function Je(e){localStorage.setItem(`player:positions`,JSON.stringify(e))}function Ye(e,t){if(t<5)return;let n=qe().filter(t=>t.url!==e);n.unshift({url:e,time:t}),Je(n.slice(0,5))}function Xe(e){return qe().find(t=>t.url===e)?.time??null}function Ze(e){Je(qe().filter(t=>t.url!==e))}function Qe(e,t,n){let r=!1;function i(t){if(r)return;let n=Xe(e);n&&t.setCurrentTime(n),r=!0}function a(t){!t||n.value||Ye(e,t.currentTime()??0)}function o(){Ze(e)}function s(){document.visibilityState===`hidden`&&a(t())}return y(()=>document.addEventListener(`visibilitychange`,s)),v(()=>{a(t()),document.removeEventListener(`visibilitychange`,s)}),{restoreOnce:i,save:a,clear:o}}function $e(e,t,n,r){let i=null;y(()=>{let a=e.value?.closest(`.player__shell`);a&&(i=new IntersectionObserver(([e])=>{let i=t();!e.isIntersecting&&i&&!i.paused()&&!n.value&&!r.value&&i.pause()},{threshold:.1}),i.observe(a))}),v(()=>i?.disconnect())}function et(e,t,n,r,i,a){function o(){let n=e();if(!(!n||!t.value)){if(!a.value){n.play();return}n.pause()}}function s(t){e()?.setCurrentTime(n.value*(t/100))}function c(){let t=e();t?.setMuted(!t.muted())}function l(t){let n=e();n&&(n.setVolume(t),n.setMuted(t===0))}function u(){r.value=!r.value}function d(t){let n=e();n&&(n.setPlaybackRate(t),i.value=t)}return{togglePlay:o,seek:s,toggleMute:c,setVolume:l,toggleLoop:u,setPlaybackRate:d}}function tt(e,t){let{isPlaying:n,hasEnded:r,isReady:i,isAdPlaying:a,isLive:o,current:s,total:c,buffered:l,vol:u,isMuted:d,isLooping:f,playbackRate:p,supportsPlaybackRate:m,hasStarted:h,isError:g,errorMessage:_}=e,{fire:v,pauseThisPlayer:y,positionMemory:b,quartiles:x,buffering:S,fullscreen:C}=t;function w(e){i.value=!0,m.value=e.featuresPlaybackRate();let t=()=>{let t=e.duration();if(t===1/0){o.value=!0;return}o.value=!1,t&&t>0&&isFinite(t)&&(c.value=t)};e.on(`adstart`,()=>{Ue(y),a.value=!0,v(`adstart`)}),e.on(`adend`,()=>{a.value=!1,v(`adend`)}),e.on(`play`,()=>{Ue(y),h.value=!0,n.value=!0,r.value=!1,o.value||b.restoreOnce(e),v(`play`)}),e.on(`pause`,()=>{n.value=!1,o.value||b.save(e),v(`pause`)}),e.on(`ended`,()=>{if(n.value=!1,x.reset(),S.reset(),f.value){e.setCurrentTime(0),e.play();return}c.value&&(s.value=c.value),r.value=!0,b.clear(),v(`ended`)}),e.on(`seeked`,()=>{v(`seeked`)}),e.on(`error`,()=>{let t=e.error();_.value=t?.message||`This video could not be played.`,g.value=!0,i.value=!0,v(`error`,{error:t})}),e.on(`timeupdate`,()=>{r.value||(s.value=e.currentTime()??0,c.value||t(),m.value||=e.featuresPlaybackRate(),o.value||x.checkQuartiles())}),e.on(`durationchange`,t),e.on(`progress`,()=>{let t=e.duration();l.value=t?e.bufferedEnd()/t*100:0}),e.on(`volumechange`,()=>{let t=e.muted();u.value=e.volume()??1,d.value=t??!1,h.value&&v(`volumechange`,{isMuted:t})}),e.on(`ratechange`,()=>{let t=e.playbackRate()??1;p.value=t,h.value&&v(`ratechange`,{playbackRate:t})}),S.attachPlayerEvents(e),C.attachPlayerEvents(e)}return{attachPlayerEvents:w}}function nt(e,t,r){let i=null,a=null,o=null,s=null,c=C(!1),l=C(!1),u=C(!1),d=C(!1),f=C(!1),p=C(!1),m=C(0),h=C(!1),g=C(0),_=C(0),b=C(0),x=C(1),S=C(t.muted??t.autoplay??!1),w=C(!1),T=C(t.playbackRate??1),E=C(!1),O=C(!1),k=C(!1),A=C(``),j=C(!1),M=n(()=>_.value?g.value/_.value*100:0),N=n(()=>Math.max(b.value,M.value)),F=()=>i,I=We(F),L=Ge(),ee=Qe(t.videoUrl,F,l);function R(e,n={}){r(`state-change`,{type:e,currentTime:g.value,duration:_.value,src:t.videoUrl,...n,payload:t.payload})}let z=Ke(g,_,R);function B(){!i||!s||(k.value=!1,A.value=``,i.setSrc(s.src,s.type))}function te(){a?.toggleAdMute()}function V(){if(a?.isAdPlaying()){a.pauseAd();return}i?.pause()}function H(){if(a?.isAdPlaying()){a.isAdPaused()?a.resumeAd():a.pauseAd();return}U.togglePlay()}let U=et(F,u,_,w,T,c),{attachPlayerEvents:W}=tt({isPlaying:c,hasEnded:l,isReady:u,isAdPlaying:d,isLive:h,current:g,total:_,buffered:b,vol:x,isMuted:S,isLooping:w,playbackRate:T,supportsPlaybackRate:E,hasStarted:O,isError:k,errorMessage:A},{fire:R,pauseThisPlayer:V,positionMemory:ee,quartiles:z,buffering:L,fullscreen:I});return D(()=>t.muted,e=>{!i||e===void 0||i.setMuted(e)}),D(()=>t.playbackRate,e=>{!i||e===void 0||i.setPlaybackRate(e)}),$e(e,F,I.isFullscreen,I.isFullscreenPending),D(O,t=>{!t||!e.value||!i||i.el===e.value||ge(e.value,i.el)}),y(async()=>{if(Ne(t.videoUrl)){if(!e.value)return;let n=Fe(t.videoUrl,e.value,{src:t.videoUrl,poster:t.poster,autoplay:t.autoplay,muted:t.muted??t.autoplay,nativeUi:t.nativeUi});if(!n){k.value=!0,u.value=!0,A.value=`This platform is not yet supported.`;return}j.value=!!t.nativeUi,i=n,s={src:t.videoUrl},o=He(V),W(i);return}let n=await Ie(t.videoUrl).catch(()=>({src:t.videoUrl}));if(!e.value)return;s={src:n.src,type:n.type},i=Re(e.value,{src:n.src,type:n.type,poster:n.poster||t.poster||``,autoplay:t.autoplay,muted:t.muted??t.autoplay,playbackRate:T.value});let r=t.adTagUrl||n.adTagUrl||``;r&&e.value.parentElement&&(a=Be(e.value.parentElement,e.value,r,{onAdStart:()=>{d.value=!0,f.value=!1,R(`adstart`)},onAdEnd:()=>{d.value=!1,f.value=!1,m.value=0,R(`adend`)},onAdPauseChange:e=>{f.value=e,e||Ue(V)},onAdMuteChange:e=>{p.value=e},onAdProgress:e=>{m.value=e},onError:e=>{d.value=!1,f.value=!1,m.value=0,console.error(`Ad playback error for ${r}:`,e)}}),i.on(`play`,()=>a?.requestAdsOnFirstPlay())),o=He(V),W(i)}),v(()=>{o?.(),a?.dispose(),a=null,i?.dispose(),i=null}),{isPlaying:c,hasEnded:l,isReady:u,isAdPlaying:d,isAdPaused:f,isAdMuted:p,adRemainingTime:m,isLive:h,isBuffering:L.isBuffering,current:g,total:_,vol:x,isMuted:S,isLooping:w,playbackRate:T,hasStarted:O,isError:k,errorMessage:A,progress:M,bufferedDisplay:N,isFullscreen:I.isFullscreen,isFullscreenPending:I.isFullscreenPending,fmt:P,fire:R,retry:B,togglePlay:H,seek:U.seek,toggleMute:U.toggleMute,setVolume:U.setVolume,toggleFullscreen:I.toggleFullscreen,markFullscreenPending:I.markFullscreenPending,toggleLoop:U.toggleLoop,toggleAdMute:te,setPlaybackRate:U.setPlaybackRate,supportsPlaybackRate:E,nativeUi:j}}function rt(e){let t=C(!0),n=C(!1),r=null,i=0;function a(e=400){i=Date.now()+e}function o(e=3500){clearTimeout(r??void 0),r=setTimeout(()=>{t.value=!1,n.value=!1},e)}function s(){clearTimeout(r??void 0)}function c(){n.value=!0,t.value=!0,o()}function l(){n.value=!1,e.value&&o()}function u(){e.value&&o()}function d(){t.value=!0,e.value&&o()}function f(){t.value=!0,o()}function p(){Date.now()<i||e.value&&o(600)}return D(e,e=>{if(!e){clearTimeout(r??void 0),t.value=!0;return}o()}),v(()=>clearTimeout(r??void 0)),{showHUD:t,isOpen:n,scheduleHide:o,pauseHide:s,onVideoTap:d,onMouseMove:f,onMouseLeave:p,openControls:c,closeControls:l,keepOpen:u,suppressMouseLeave:a}}const Y=Symbol(`player`),X=Symbol(`hud`),it=Symbol(`action`),at=Symbol(`compact`),ot=Symbol(`playlist`);function Z(e){let t=f(e);if(t===void 0)throw Error(`[video-player] missing "${String(e.description)}" context — this component must be rendered inside <VideoPlayer>`);return t}function st(e,t){return{hudVisible:n(()=>!e.isReady||e.isError?!1:t.showHUD),popupVisible:n(()=>!e.isReady||e.isError?!1:e.isFullscreen?t.showHUD:t.isOpen)}}function ct(e,t){return n(()=>!(!e?.value||t.isFullscreen))}function lt(e,t,r){let i=n(()=>e?.value??null),a=n(()=>!!i.value&&typeof i.value==`object`),o=n(()=>a.value?i.value:null),s=n(()=>i.value===`mute`?t.isMuted?`Unmute`:`Mute`:i.value===`loop`?t.isLooping?`Disable loop`:`Loop`:i.value===`autoplay`?r.autoAdvance?`Disable autoplay next`:`Autoplay next`:``),c=n(()=>i.value===`mute`?t.isMuted:i.value===`loop`?t.isLooping:i.value===`autoplay`&&r.autoAdvance);function l(){i.value===`mute`?t.toggleMute():i.value===`loop`?t.toggleLoop():i.value===`autoplay`&&r.toggleAutoAdvance()}return{currentAction:i,isCustom:a,customAction:o,builtinLabel:s,builtinActive:c,onBuiltinClick:l}}var Q=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n};const ut={},dt={viewBox:`0 0 24 24`,fill:`currentColor`};function ft(e,t){return b(),a(`svg`,dt,[...t[0]||=[o(`path`,{d:`M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z`},null,-1)]])}var pt=Q(ut,[[`render`,ft]]);const mt={},ht={viewBox:`0 0 24 24`,fill:`currentColor`};function gt(e,t){return b(),a(`svg`,ht,[...t[0]||=[o(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`},null,-1)]])}var _t=Q(mt,[[`render`,gt]]);const vt={},yt={viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function bt(e,t){return b(),a(`svg`,yt,[...t[0]||=[s(`<line x1="4" y1="6" x2="20" y2="6"></line><line x1="4" y1="12" x2="20" y2="12"></line><line x1="4" y1="18" x2="20" y2="18"></line><circle cx="9" cy="6" r="2.5" fill="currentColor" stroke="none"></circle><circle cx="15" cy="12" r="2.5" fill="currentColor" stroke="none"></circle><circle cx="9" cy="18" r="2.5" fill="currentColor" stroke="none"></circle>`,6)]])}var xt=Q(vt,[[`render`,bt]]);const St={},Ct={viewBox:`0 0 24 24`,fill:`currentColor`};function wt(e,t){return b(),a(`svg`,Ct,[...t[0]||=[o(`path`,{d:`M4 12l1.41 1.41L11 7.83V20h2V7.83l5.59 5.58L20 12l-8-8-8 8z`},null,-1)]])}var Tt=Q(St,[[`render`,wt]]);const Et={},Dt={viewBox:`0 0 24 24`,fill:`currentColor`};function Ot(e,t){return b(),a(`svg`,Dt,[...t[0]||=[o(`path`,{d:`M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z`},null,-1)]])}var kt=Q(Et,[[`render`,Ot]]);const At={},jt={viewBox:`0 0 24 24`,fill:`currentColor`};function Mt(e,t){return b(),a(`svg`,jt,[...t[0]||=[o(`path`,{d:`M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z`},null,-1)]])}var Nt=Q(At,[[`render`,Mt]]);const Pt={},Ft={viewBox:`0 0 24 24`,fill:`currentColor`};function It(e,t){return b(),a(`svg`,Ft,[...t[0]||=[o(`path`,{d:`M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z`},null,-1)]])}var Lt=Q(Pt,[[`render`,It]]);const Rt={},zt={viewBox:`0 0 24 24`,fill:`currentColor`};function Bt(e,t){return b(),a(`svg`,zt,[...t[0]||=[o(`circle`,{cx:`5`,cy:`12`,r:`2`},null,-1),o(`circle`,{cx:`12`,cy:`12`,r:`2`},null,-1),o(`circle`,{cx:`19`,cy:`12`,r:`2`},null,-1)]])}var Vt=Q(Rt,[[`render`,Bt]]);const Ht={},Ut={viewBox:`0 0 24 24`,fill:`currentColor`};function Wt(e,t){return b(),a(`svg`,Ut,[...t[0]||=[o(`path`,{d:`M6 19h4V5H6v14zm8-14v14h4V5h-4z`},null,-1)]])}var Gt=Q(Ht,[[`render`,Wt]]);const Kt={},qt={viewBox:`0 0 24 24`,fill:`currentColor`};function Jt(e,t){return b(),a(`svg`,qt,[...t[0]||=[o(`path`,{d:`M8 5v14l11-7z`},null,-1)]])}var Yt=Q(Kt,[[`render`,Jt]]);const Xt={},Zt={viewBox:`0 0 24 24`,fill:`currentColor`};function Qt(e,t){return b(),a(`svg`,Zt,[...t[0]||=[o(`path`,{d:`M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z`},null,-1)]])}var $t=Q(Xt,[[`render`,Qt]]);const en={},tn={viewBox:`0 0 24 24`,fill:`currentColor`};function nn(e,t){return b(),a(`svg`,tn,[...t[0]||=[o(`path`,{d:`M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z`},null,-1)]])}var rn=Q(en,[[`render`,nn]]);const an={},on={viewBox:`0 0 24 24`,fill:`currentColor`};function sn(e,t){return b(),a(`svg`,on,[...t[0]||=[o(`path`,{d:`M16.5 12A4.5 4.5 0 0 0 14 7.97v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51A8.796 8.796 0 0 0 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.06A8.99 8.99 0 0 0 17.73 18L19 19.27 20.27 18 5.27 3 4.27 3zM12 4L9.91 6.09 12 8.18V4z`},null,-1)]])}var cn=Q(an,[[`render`,sn]]);const ln={},un={viewBox:`0 0 24 24`,fill:`currentColor`};function dn(e,t){return b(),a(`svg`,un,[...t[0]||=[o(`path`,{d:`M3 9v6h4l5 5V4L7 9H3zm13.5 3A4.5 4.5 0 0 0 14 7.97v8.05c1.48-.73 2.5-2.25 2.5-4.02z`},null,-1)]])}var fn=Q(ln,[[`render`,dn]]);const pn=[`aria-label`];var $=Q(u({__name:`PlayPauseButton`,props:{isPlaying:{type:Boolean,required:!0},hasEnded:{type:Boolean,required:!1,default:!1},size:{type:String,required:!1,default:`sm`}},emits:[`toggle-play`],setup(e){let t=e,i=n(()=>t.isPlaying?`Pause`:t.hasEnded?`Replay`:`Play`);return(t,n)=>(b(),a(`button`,{class:h([`ppbtn`,`ppbtn--${e.size}`]),"aria-label":i.value,onClick:n[0]||=k(e=>t.$emit(`toggle-play`),[`stop`])},[e.isPlaying?(b(),r(E(Gt),{key:0})):e.hasEnded?(b(),r(E($t),{key:1})):(b(),r(E(Yt),{key:2}))],10,pn))}}),[[`__scopeId`,`data-v-85902525`]]),mn=u({__name:`VolumeIcon`,setup(e){let t=Z(Y),i=n(()=>!t.isMuted&&t.vol>0);return(e,t)=>i.value?(b(),r(E(fn),{key:0})):(b(),r(E(cn),{key:1}))}}),hn=Q(u({__name:`Spinner`,props:{size:{type:Number,required:!1,default:14},borderWidth:{type:Number,required:!1,default:2}},setup(e){return(t,n)=>(b(),a(`div`,{class:`spinner`,style:_({width:`${e.size}px`,height:`${e.size}px`,borderWidth:`${e.borderWidth}px`})},null,4))}}),[[`__scopeId`,`data-v-259be2b2`]]);const gn={class:`hud`},_n=[`aria-label`],vn=[`aria-label`],yn=[`aria-label`],bn=[`aria-label`,`innerHTML`],xn={key:4,class:`hud__spacer`},Sn={class:`hud__play-wrap`};var Cn=Q(u({__name:`HudButtons`,setup(t){let n=Z(Y),s=Z(X),{currentAction:c,isCustom:u,customAction:d,builtinLabel:p,builtinActive:m,onBuiltinClick:g}=lt(f(it),n,Z(ot));return(t,f)=>(b(),a(`div`,gn,[!E(s).isOpen&&!E(n).isFullscreen?(b(),a(e,{key:0},[E(c)===`mute`?(b(),a(`button`,{key:0,class:h([`hud__btn`,{"hud__btn--active":E(m)}]),"aria-label":E(p),onClick:f[0]||=k((...e)=>E(g)&&E(g)(...e),[`stop`])},[l(mn)],10,_n)):E(c)===`loop`?(b(),a(`button`,{key:1,class:h([`hud__btn`,{"hud__btn--active":E(m)}]),"aria-label":E(p),onClick:f[1]||=k((...e)=>E(g)&&E(g)(...e),[`stop`])},[l(E(Lt))],10,vn)):E(c)===`autoplay`?(b(),a(`button`,{key:2,class:h([`hud__btn`,{"hud__btn--active":E(m)}]),"aria-label":E(p),onClick:f[2]||=k((...e)=>E(g)&&E(g)(...e),[`stop`])},[l(E(rn))],10,yn)):E(u)&&E(d)?(b(),a(`button`,{key:3,class:`hud__btn`,"aria-label":E(d).label,onClick:f[3]||=k(e=>E(d).onClick(),[`stop`]),innerHTML:E(d).icon},null,8,bn)):(b(),a(`div`,xn))],64)):i(`v-if`,!0),o(`div`,Sn,[l($,{"is-playing":E(n).isPlaying,"has-ended":E(n).hasEnded,size:`lg`,onTogglePlay:E(n).togglePlay},null,8,[`is-playing`,`has-ended`,`onTogglePlay`]),E(n).isBuffering?(b(),r(hn,{key:0,class:`hud__buf-spinner`})):i(`v-if`,!0)]),!E(s).isOpen&&!E(n).isFullscreen?(b(),a(`button`,{key:1,class:`hud__btn`,"aria-label":`Show controls`,onClick:f[4]||=k((...e)=>E(s).openControls&&E(s).openControls(...e),[`stop`])},[l(E(xt))])):i(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-a6d118e7`]]);function wn(e){let t=C(null),r=n(()=>t.value??e.progress),i=null;function a(){i&&clearTimeout(i),i=null,t.value=null}function o(e){i&&clearTimeout(i),i=null,t.value=Number(e.target.value)}function s(n){let r=Number(n.target.value);t.value=r,e.seek(r),i&&clearTimeout(i),i=setTimeout(a,3e3)}return D(()=>e.current,()=>{if(t.value===null||!e.total)return;let n=t.value/100*e.total;Math.abs(e.current-n)<1&&a()}),v(a),{displaySeek:r,onSeekInput:o,onSeekChange:s}}function Tn(e,t,n){if(!document.startViewTransition||!e.value){n();return}e.value.style.viewTransitionName=t,document.startViewTransition(async()=>{n(),await m()}).finished.finally(()=>{e.value&&(e.value.style.viewTransitionName=``)})}const En={class:`controls__vol-header`},Dn=[`aria-label`],On={class:`controls__vol-body`},kn=[`value`],An={class:`controls__vol-pct`};var jn=Q(u({__name:`VolumePanel`,emits:[`back`],setup(t){let r=Z(Y),i=Z(X),s=n(()=>r.isMuted?0:Math.round(r.vol*100));function c(e){r.setVolume(Number(e.target.value)/100)}return(t,n)=>(b(),a(e,null,[o(`div`,En,[o(`button`,{class:`controls__btn`,"aria-label":`Back`,onClick:n[0]||=e=>t.$emit(`back`)},[l(E(pt))]),n[6]||=o(`span`,{class:`controls__vol-label`},`Volume`,-1),o(`button`,{class:`controls__btn`,"aria-label":E(r).isMuted?`Unmute`:`Mute`,onClick:n[1]||=e=>E(r).toggleMute()},[l(mn)],8,Dn)]),o(`div`,On,[o(`input`,{type:`range`,min:`0`,max:`100`,step:`1`,value:s.value,class:`controls__vol-slider`,style:_({"--v":s.value+`%`}),"aria-label":`Volume`,onInput:c,onMousedown:n[2]||=e=>E(i).pauseHide(),onMouseup:n[3]||=e=>E(i).scheduleHide(),onTouchstartPassive:n[4]||=e=>E(i).pauseHide(),onTouchend:n[5]||=e=>E(i).scheduleHide()},null,44,kn),o(`span`,An,w(s.value)+`%`,1)])],64))}}),[[`__scopeId`,`data-v-10b0ae67`]]);function Mn(e){function t(){let t=K.indexOf(e.playbackRate);e.setPlaybackRate(K[(t+1)%K.length])}function n(e){return`${e}×`}return{cycleRate:t,fmtRate:n}}const Nn={class:`controls__more-header`},Pn={class:`controls__more-body`},Fn={class:`controls__more-value`},In={class:`controls__more-row-label`},Ln={class:`controls__more-value`},Rn={class:`controls__more-row-label`},zn={class:`controls__more-value`},Bn=[`aria-label`],Vn={class:`controls__more-row-label`},Hn=[`innerHTML`];var Un=Q(u({__name:`MoreMenu`,props:{isCustom:{type:Boolean,required:!0},customAction:{type:[Object,null],required:!0}},emits:[`back`],setup(t){let n=Z(Y),r=Z(ot),{cycleRate:s,fmtRate:u}=Mn(n);return(d,f)=>(b(),a(e,null,[o(`div`,Nn,[o(`button`,{class:`controls__btn`,"aria-label":`Back`,onClick:f[0]||=e=>d.$emit(`back`)},[l(E(pt))]),f[5]||=o(`span`,{class:`controls__more-label`},`More`,-1)]),o(`div`,Pn,[E(n).supportsPlaybackRate?(b(),a(`button`,{key:0,class:`controls__more-row`,"aria-label":`Playback speed`,onClick:f[1]||=(...e)=>E(s)&&E(s)(...e)},[f[6]||=o(`span`,null,`Playback speed`,-1),o(`span`,Fn,w(E(u)(E(n).playbackRate)),1)])):i(`v-if`,!0),o(`button`,{class:h([`controls__more-row`,{"controls__more-row--active":E(n).isLooping}]),"aria-label":`Toggle loop`,onClick:f[2]||=e=>E(n).toggleLoop()},[o(`span`,In,[l(E(Lt),{class:`controls__more-row-icon`}),f[7]||=c(`Loop`,-1)]),o(`span`,Ln,w(E(n).isLooping?`On`:`Off`),1)],2),E(r).hasPlaylist?(b(),a(`button`,{key:1,class:h([`controls__more-row`,{"controls__more-row--active":E(r).autoAdvance}]),"aria-label":`Toggle autoplay next`,onClick:f[3]||=e=>E(r).toggleAutoAdvance()},[o(`span`,Rn,[l(E(rn),{class:`controls__more-row-icon`}),f[8]||=c(`Autoplay next`,-1)]),o(`span`,zn,w(E(r).autoAdvance?`On`:`Off`),1)],2)):i(`v-if`,!0),t.isCustom&&t.customAction?(b(),a(`button`,{key:2,class:`controls__more-row`,"aria-label":t.customAction.label,onClick:f[4]||=e=>t.customAction.onClick()},[o(`span`,Vn,[o(`span`,{class:`controls__more-row-icon`,innerHTML:t.customAction.icon},null,8,Hn),c(w(t.customAction.label),1)])],8,Bn)):i(`v-if`,!0)])],64))}}),[[`__scopeId`,`data-v-e89a8208`]]);const Wn=[`value`],Gn={class:`controls__row`},Kn={class:`controls__play-wrap`},qn={key:0,class:`controls__live`},Jn={key:1,class:`controls__time`},Yn={class:`controls__fs-wrap`},Xn=[`aria-label`];var Zn=Q(u({__name:`ControlsPopup`,setup(t){let n=Z(Y),s=Z(X),u=Z(ot),d=ct(f(at),n),{isCustom:p,customAction:m}=lt(f(it),n,u),g=C(!1),x=C(!1),S=C(null);function T(e){return!S.value||S.value.contains(e)?!1:(s.closeControls(),!0)}function D(e){T(e.target)}function O(e){T(e.target)&&e.preventDefault()}y(()=>{n.fire(`controlsopen`,{element:S.value}),document.addEventListener(`click`,D,!0),document.addEventListener(`touchend`,O,!0)}),v(()=>{g.value=!1,x.value=!1,n.fire(`controlsclose`,{element:S.value}),document.removeEventListener(`click`,D,!0),document.removeEventListener(`touchend`,O,!0)});function j(e){s.suppressMouseLeave(),Tn(S,`controls-popup`,e)}function M(){if(A()){n.toggleMute();return}j(()=>{g.value=!0})}function N(){j(()=>{x.value=!0})}let{displaySeek:P,onSeekInput:F,onSeekChange:I}=wn(n);function L(){n.isFullscreen||n.markFullscreenPending(),n.toggleFullscreen()}return(t,f)=>(b(),a(`div`,{ref_key:`popupEl`,ref:S,class:h([`controls`,{"controls--fs":E(n).isFullscreen,"controls--compact":E(d)}]),onMousemove:f[10]||=k((...e)=>E(s).keepOpen&&E(s).keepOpen(...e),[`stop`])},[g.value?(b(),r(jn,{key:0,onBack:f[0]||=e=>j(()=>g.value=!1)})):x.value?(b(),r(Un,{key:1,"is-custom":E(p),"custom-action":E(m),onBack:f[1]||=e=>j(()=>x.value=!1)},null,8,[`is-custom`,`custom-action`])):(b(),a(e,{key:2},[E(n).isLive?i(`v-if`,!0):(b(),a(`input`,{key:0,type:`range`,min:`0`,max:`100`,value:E(P),class:`controls__seek`,style:_({"--p":E(P)+`%`,"--b":E(n).bufferedDisplay+`%`}),onInput:f[2]||=(...e)=>E(F)&&E(F)(...e),onChange:f[3]||=(...e)=>E(I)&&E(I)(...e),onMousedown:f[4]||=e=>E(s).pauseHide(),onMouseup:f[5]||=e=>E(s).scheduleHide(),onTouchstartPassive:f[6]||=e=>E(s).pauseHide(),onTouchend:f[7]||=e=>E(s).scheduleHide()},null,44,Wn)),o(`div`,Gn,[o(`div`,Kn,[E(n).isBuffering?(b(),r(hn,{key:0})):(b(),r($,{key:1,"is-playing":E(n).isPlaying,"has-ended":E(n).hasEnded,size:`sm`,onTogglePlay:f[8]||=e=>E(n).togglePlay()},null,8,[`is-playing`,`has-ended`]))]),E(n).isLive?(b(),a(`span`,qn,[...f[11]||=[o(`span`,{class:`controls__live-dot`},null,-1),c(`Live`,-1)]])):(b(),a(`span`,Jn,w(E(n).fmt(E(n).current))+` / `+w(E(n).fmt(E(n).total)),1)),E(u).hasNext?(b(),a(`button`,{key:2,class:`controls__btn`,"aria-label":`Play next`,onClick:f[9]||=e=>E(u).playNext()},[l(E(rn))])):i(`v-if`,!0),o(`button`,{class:`controls__btn`,"aria-label":`Volume`,onClick:M},[l(mn)]),o(`button`,{class:h([`controls__btn controls__btn--more`,{"controls__btn--active":E(n).isLooping||E(n).playbackRate!==1||E(u).autoAdvance}]),"aria-label":`More`,onClick:N},[l(E(Vt))],2),o(`div`,Yn,[E(n).isFullscreenPending?(b(),r(hn,{key:0})):(b(),a(`button`,{key:1,class:`controls__btn`,"aria-label":E(n).isFullscreen?`Exit fullscreen`:`Fullscreen`,onClick:L},[E(n).isFullscreen?(b(),r(E(Nt),{key:0})):(b(),r(E(kt),{key:1}))],8,Xn))])])],64))],34))}}),[[`__scopeId`,`data-v-5712aad4`]]);const Qn={class:`ad-overlay`},$n={class:`ad-overlay__bar`},er={class:`ad-overlay__badge`},tr={key:0,class:`ad-overlay__countdown`},nr=[`aria-label`],rr={key:0,class:`ad-overlay__resume`};var ir=Q(u({__name:`AdOverlay`,setup(e){let t=Z(Y),s=n(()=>t.adRemainingTime>0?t.fmt(t.adRemainingTime):``);return(e,n)=>(b(),a(`div`,Qn,[o(`div`,$n,[o(`div`,er,[n[2]||=o(`span`,null,`Ad`,-1),s.value?(b(),a(`span`,tr,w(s.value),1)):i(`v-if`,!0)]),o(`button`,{class:`ad-overlay__mute`,"aria-label":E(t).isAdMuted?`Unmute ad`:`Mute ad`,onClick:n[0]||=e=>E(t).toggleAdMute()},[E(t).isAdMuted?(b(),r(E(cn),{key:0})):(b(),r(E(fn),{key:1}))],8,nr)]),E(t).isAdPaused?(b(),a(`div`,rr,[l($,{"is-playing":!1,size:`lg`,onTogglePlay:n[1]||=e=>E(t).togglePlay()})])):i(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-23efcc8b`]]);const ar={key:0,class:`overlay__spinner`},or={key:0,class:`overlay__error`};var sr=Q(u({__name:`PlayerOverlay`,props:{disableTapCapture:{type:Boolean,required:!1,default:!1}},setup(n){let s=Z(Y),c=Z(X),{hudVisible:u,popupVisible:d}=st(s,c);function f(){if(s.isAdPlaying&&s.isAdPaused){s.togglePlay();return}c.onVideoTap()}return(c,p)=>(b(),a(e,null,[!n.disableTapCapture&&E(s).hasStarted&&!(E(s).isAdPlaying&&!E(s).isAdPaused)?(b(),a(`div`,{key:0,class:`overlay__tap-capture`,onClick:f,onTouchend:k(f,[`prevent`,`stop`])},null,32)):i(`v-if`,!0),E(s).isAdPlaying?(b(),r(ir,{key:1})):i(`v-if`,!0),l(t,{name:`fade`},{default:O(()=>[!E(s).isReady&&!E(s).isError?(b(),a(`div`,ar,[l(hn,{size:40,"border-width":3})])):i(`v-if`,!0)]),_:1}),l(t,{name:`fade`},{default:O(()=>[E(s).isError?(b(),a(`div`,or,[o(`p`,null,w(E(s).errorMessage||`This video could not be played.`),1),o(`button`,{class:`overlay__retry`,onClick:p[0]||=k((...e)=>E(s).retry&&E(s).retry(...e),[`stop`])},`Retry`)])):i(`v-if`,!0)]),_:1}),o(`div`,{class:h([`overlay__hud`,{"overlay__hud--visible":E(u)}])},[l(Cn)],2),l(t,{name:`popup`},{default:O(()=>[E(d)?(b(),a(`div`,{key:0,class:h([`overlay__popup`,{"overlay__popup--fs":E(s).isFullscreen}])},[l(Zn)],2)):i(`v-if`,!0)]),_:1})],64))}}),[[`__scopeId`,`data-v-f3307b98`]]);const cr={class:`player`},lr={"data-mvp-player":``},ur=[`poster`],dr={key:1,class:`player__native-play`};var fr=Q(u({__name:`VideoPlayer`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1,default:``},poster:{type:String,required:!1,default:``},aspectRatio:{type:String,required:!1,default:G},adTagUrl:{type:String,required:!1,default:``},autoplay:{type:Boolean,required:!1,default:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1,default:!1},autoStage:{type:Boolean,required:!1,default:!1},lazy:{type:Boolean,required:!1,default:!1},payload:{type:Object,required:!1,default:()=>({})},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1,default:!1},hasPlaylist:{type:Boolean,required:!1,default:!1},hasNext:{type:Boolean,required:!1,default:!1},hasPrevious:{type:Boolean,required:!1,default:!1},autoAdvance:{type:Boolean,required:!1,default:!1}},emits:[`state-change`,`play-next`,`play-previous`,`toggle-auto-advance`],setup(e,{expose:t,emit:s}){let c=e,u=s,d=C(null),f=S(nt(d,c,u)),p=S(rt(T(f,`isPlaying`)));x(Y,f),x(X,p),x(it,T(c,`action`)),x(ot,S({hasPlaylist:n(()=>c.hasPlaylist),hasNext:n(()=>c.hasNext),hasPrevious:n(()=>c.hasPrevious),autoAdvance:n(()=>c.autoAdvance),playNext:()=>u(`play-next`),playPrevious:()=>u(`play-previous`),toggleAutoAdvance:()=>u(`toggle-auto-advance`)}));let m=n(()=>N(c.aspectRatio)),g=n(()=>m.value.isPortrait),v=n(()=>m.value.cssRatio),y=n(()=>!c.poster&&!f.isReady);return t(f),(e,t)=>(b(),a(`div`,cr,[o(`div`,{class:h([`player__shell`,{"player__shell--portrait":g.value}]),style:_({aspectRatio:v.value}),onMousemove:t[0]||=e=>p.onMouseMove(),onContextmenuCapture:t[1]||=k(()=>{},[`prevent`]),onMouseleave:t[2]||=e=>p.onMouseLeave()},[o(`div`,lr,[o(`video`,{ref_key:`videoEl`,ref:d,class:h([`mvp-video`,{"mvp-video--hidden":y.value}]),poster:c.poster,playsinline:``},null,10,ur),f.nativeUi?i(`v-if`,!0):(b(),r(sr,{key:0,"disable-tap-capture":c.disableTapCapture},null,8,[`disable-tap-capture`])),f.nativeUi&&!f.hasStarted?(b(),a(`div`,dr,[l($,{"is-playing":!1,size:`lg`,onTogglePlay:f.togglePlay},null,8,[`onTogglePlay`])])):i(`v-if`,!0)])],38)]))}}),[[`__scopeId`,`data-v-4ab3cf75`]]);const pr=C(0),mr=n(()=>pr.value>0);function hr(){pr.value++}function gr(){pr.value--}function _r(e,t){window.dispatchEvent(new CustomEvent(e,{detail:t}))}function vr(e,t){let n=e=>t(e.detail);y(()=>window.addEventListener(e,n)),v(()=>window.removeEventListener(e,n))}function yr(e,t){let r=n(()=>!e.value||!t.value?-1:e.value.findIndex(e=>e.videoUrl===t.value?.videoUrl)),i=n(()=>r.value===-1||!e.value?null:e.value[r.value+1]??null),a=n(()=>r.value<=0||!e.value?null:e.value[r.value-1]??null);return{hasNext:n(()=>i.value!==null),hasPrevious:n(()=>a.value!==null),nextEntry:i,previousEntry:a}}function br(){return localStorage.getItem(B)===`true`}function xr(e){localStorage.setItem(B,String(e))}const Sr=[`src`],Cr={class:`stage__idle-body`},wr={class:`stage__idle-btn`},Tr={class:`stage__idle-title`},Er={key:1,class:`stage__idle-empty`};var Dr=Q(u({__name:`VideoStage`,props:{pinPosition:{type:String,required:!1,default:`bottom-right`},playlist:{type:Array,required:!1}},emits:[`state-change`],setup(t,{expose:s,emit:c}){let u=t,d=c,f=C(br());D(f,xr);let m=n(()=>!!u.playlist?.length),g=C(null),S=C(null),O=C(!1),A=C(!1),j=C(null),M=C(null),P=C(!1);x(at,P);let{hasNext:F,hasPrevious:I,nextEntry:R,previousEntry:z}=yr(T(u,`playlist`),S),B=n(()=>P.value&&!!S.value&&O.value),te=n(()=>N(S.value?.aspectRatio||`16:9`).cssRatio),V=C(null),H=C(null);D(P,e=>{V.value=e&&M.value?{height:M.value.offsetHeight,width:M.value.offsetWidth}:null});let U=n(()=>{if(!V.value)return{};let{height:e,width:t}=V.value,n=H.value&&t?H.value/t:1;return{height:`${Math.round(e*n)}px`}}),W=null,G=null;function K(){W?.disconnect(),G?.disconnect(),j.value&&(W=new IntersectionObserver(([e])=>{P.value=!e.isIntersecting},{threshold:1}),W.observe(j.value),G=new ResizeObserver(([e])=>{H.value=e.contentRect.width}),G.observe(j.value))}D(j,K);function ne(){S.value&&(S.value={...S.value,autoplay:!0},O.value=!0)}function re(){j.value?.scrollIntoView({behavior:`smooth`,block:`center`})}function ie(){S.value=null,O.value=!1,A.value=!1,P.value=!1,V.value=null,q()}function q(){_r(ee,{currentVideoUrl:S.value?.videoUrl??null,isPlaying:A.value})}function ae(e){if(S.value?.videoUrl===e.videoUrl&&O.value){g.value?.togglePlay();return}S.value=e,O.value=!1,A.value=!1,q(),O.value=!0}function oe(e){if(!(!S.value||e.videoUrl!==S.value.videoUrl)){if(!O.value){S.value={...S.value,autoplay:!0},O.value=!0;return}g.value?.togglePlay()}}function se(){R.value&&ae({...R.value,autoplay:!0})}function ce(){z.value&&ae({...z.value,autoplay:!0})}function le(e){e.type===`play`&&(A.value=!0),(e.type===`pause`||e.type===`ended`)&&(A.value=!1),e.type===`ended`&&f.value&&se(),q(),d(`state-change`,e)}return vr(L,ae),vr(`video-toggle`,oe),y(hr),v(()=>{gr(),W?.disconnect(),G?.disconnect()}),s({playNext:se,playPrevious:ce,hasNext:F,hasPrevious:I}),(n,s)=>(b(),a(`div`,{ref_key:`wrapperEl`,ref:j,class:`stage-wrapper`,style:_(U.value)},[o(`div`,{ref_key:`stageEl`,ref:M,class:h([`stage`,{"stage--minified":B.value,[`stage--pin-${t.pinPosition}`]:B.value}])},[B.value?(b(),a(`button`,{key:0,class:`stage__scroll-to`,"aria-label":`Scroll to player`,onClick:k(re,[`stop`])},[l(E(Tt))])):i(`v-if`,!0),B.value?(b(),a(`button`,{key:1,class:`stage__dismiss`,"aria-label":`Close`,onClick:k(ie,[`stop`])},[l(E(_t))])):i(`v-if`,!0),S.value&&O.value?(b(),r(fr,p({ref_key:`playerRef`,ref:g,key:S.value.videoUrl},S.value,{"has-playlist":m.value,"has-next":E(F),"has-previous":E(I),"auto-advance":f.value,onStateChange:le,onPlayNext:se,onPlayPrevious:ce,onToggleAutoAdvance:s[0]||=e=>f.value=!f.value}),null,16,[`has-playlist`,`has-next`,`has-previous`,`auto-advance`])):(b(),a(`div`,{key:3,class:`stage__idle`,style:_({aspectRatio:te.value}),onClick:ne},[S.value?.poster?(b(),a(`img`,{key:0,src:S.value.poster,class:`stage__idle-poster`},null,8,Sr)):i(`v-if`,!0),s[1]||=o(`div`,{class:`stage__idle-scrim`},null,-1),o(`div`,Cr,[S.value?(b(),a(e,{key:0},[o(`div`,wr,[l(E(Yt))]),o(`p`,Tr,w(S.value.title),1)],64)):(b(),a(`p`,Er,`Select a video to play`))])],4))],2)],4))}}),[[`__scopeId`,`data-v-fb8c86cf`]]);const Or={class:`placeholder`},kr=[`src`,`alt`],Ar={class:`placeholder__btn-wrap`},jr={key:1,class:`placeholder__footer`},Mr={class:`placeholder__title`};var Nr=Q(u({__name:`VideoPlaceholder`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1,default:``},poster:{type:String,required:!1,default:``},aspectRatio:{type:String,required:!1,default:G},adTagUrl:{type:String,required:!1,default:``},autoplay:{type:Boolean,required:!1,default:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1,default:!1},autoStage:{type:Boolean,required:!1,default:!1},lazy:{type:Boolean,required:!1},payload:{type:Object,required:!1,default:()=>({})},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1}},setup(e){let t=e,r=n(()=>N(t.aspectRatio)),s=n(()=>r.value.isPortrait),c=n(()=>r.value.cssRatio),u=C(!1),d=C(!1);vr(ee,e=>{u.value=e.currentVideoUrl===t.videoUrl,d.value=u.value&&e.isPlaying});function f(e){_r(L,{...t,...e!==void 0&&{autoplay:e}})}function p(){f(!0)}return y(()=>{t.autoStage&&f()}),(t,n)=>(b(),a(`div`,Or,[o(`div`,{class:h([`placeholder__shell`,{"placeholder__shell--portrait":s.value,"placeholder__shell--active":u.value}]),style:_({aspectRatio:c.value}),onClick:p},[e.poster?(b(),a(`img`,{key:0,class:`placeholder__poster`,src:e.poster,alt:e.title},null,8,kr)):i(`v-if`,!0),n[0]||=o(`div`,{class:`placeholder__scrim`},null,-1),o(`div`,Ar,[l($,{"is-playing":u.value&&d.value,size:`lg`,onTogglePlay:p},null,8,[`is-playing`])]),e.title?(b(),a(`div`,jr,[o(`p`,Mr,w(e.title),1)])):i(`v-if`,!0)],6)]))}}),[[`__scopeId`,`data-v-dbcb4f82`]]),Pr=u({__name:`VideoItem`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1},poster:{type:String,required:!1},aspectRatio:{type:String,required:!1},adTagUrl:{type:String,required:!1},autoplay:{type:Boolean,required:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1},autoStage:{type:Boolean,required:!1},lazy:{type:Boolean,required:!1,default:!0},payload:{type:Object,required:!1},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1}},emits:[`state-change`],setup(t,{emit:n}){let i=t,o=n,s=C(!1);return(t,n)=>E(mr)?(b(),r(Nr,g(p({key:0},i)),null,16)):(b(),a(e,{key:1},[i.lazy&&!s.value&&!i.autoplay?(b(),r(Nr,p({key:0},i,{onClickCapture:n[0]||=e=>s.value=!0}),null,16)):(b(),r(fr,p({key:1},i,{autoplay:s.value||i.autoplay,onStateChange:n[1]||=e=>o(`state-change`,e)}),null,16,[`autoplay`]))],64))}});const Fr=d(fr,{shadowRoot:!1}),Ir=d(Dr,{shadowRoot:!1}),Lr=d(Nr,{shadowRoot:!1}),Rr=d(Pr,{shadowRoot:!1});customElements.define(`video-player`,Fr),customElements.define(`video-stage`,Ir),customElements.define(`video-placeholder`,Lr),customElements.define(`video-item`,Rr);export{Rr as VideoItemElement,Lr as VideoPlaceholderElement,Fr as VideoPlayerElement,Ir as VideoStageElement};
1
+ import{Fragment as e,Transition as t,computed as n,createBlock as r,createCommentVNode as i,createElementBlock as a,createElementVNode as o,createStaticVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,defineCustomElement as d,inject as f,mergeProps as p,nextTick as m,normalizeClass as h,normalizeProps as g,normalizeStyle as _,onBeforeUnmount as v,onMounted as y,openBlock as b,provide as x,reactive as S,ref as C,toDisplayString as w,toRef as T,unref as E,watch as D,withCtx as O,withModifiers as k}from"vue";function A(){return/iPad|iPhone|iPod/.test(navigator.userAgent)||/Mac/.test(navigator.userAgent)&&navigator.maxTouchPoints>1}function j(e){(e.requestFullscreen||e.webkitRequestFullscreen)?.call(e)}function M(){(document.exitFullscreen||document.webkitExitFullscreen)?.call(document)}function N(e){let[t,n]=e.split(`:`).map(Number);return{isPortrait:n>t,cssRatio:`${t}/${n}`}}function P(e){return!e||isNaN(e)?`0:00`:`${Math.floor(e/60)}:${String(Math.floor(e%60)).padStart(2,`0`)}`}function F(e,t=(...e)=>String(e[0])){let n={};return async(...r)=>{let i=t(...r);if(n[i])return n[i];let a=await e(...r);return n[i]=a,a}}function I(e){return e.filter(e=>e.src&&(e.type===`application/x-mpegURL`||e.type===`video/mp4`)).sort((e,t)=>e.type===`application/x-mpegURL`?-1:1)}const L=`video-select`,ee=`video-state`,R=`fullscreen-pending`,z=`fullscreen-pending-done`,B=`player:autoAdvance`,te=`mvp-youtube`,V=`mvp-vimeo`,H=`mvp-dailymotion`,U=`mvp-ad-playing`,W=`mvp-ad-paused`,G=`16:9`,K=[.5,.75,1,1.25,1.5,2],ne=[[.25,`firstQuartile`],[.5,`midpoint`],[.75,`thirdQuartile`]];function re(e){return e.match(/cdn\.jwplayer\.com\/videos\/([^-]+)/)?.[1]??e.match(/cdn\.jwplayer\.com\/manifests\/([^.]+)/)?.[1]??e.match(/^jwplayer:\/\/([^/]+)$/)?.[1]??null}function ie(e){let t=e?.advertising?.schedule;return Array.isArray(t)&&t.length?t[0].tag??null:e?.advertising?.tag??null}const q=F(async e=>{let t=await fetch(`https://cdn.jwplayer.com/v2/media/${e}`);if(!t.ok)throw Error(`JW Platform API error: ${t.status}`);let n=(await t.json()).playlist?.[0];if(!n)throw Error(`JW Platform: empty playlist`);let r=I((n.sources??[]).map(e=>({src:e.file,type:e.type})));if(!r.length)throw Error(`JW Platform: no playable sources found`);return{src:r[0].src,type:r[0].type,poster:n.image??null,adTagUrl:ie(n)}});async function ae(e){let t=re(e);if(!t)throw Error(`JW Platform: unrecognised source URL: ${e}`);let n=await q(t);if(e.startsWith(`jwplayer://`))return n;let r=/\.mp4(\?|#|$)/.test(e)?`video/mp4`:`application/x-mpegURL`;return{...n,src:e,type:r}}function oe(e){let t;try{t=new URL(e)}catch{return null}if(t.hostname!==`players.brightcove.net`)return null;let[,n,r]=t.pathname.split(`/`),i=t.searchParams.get(`videoId`),a=r?.indexOf(`_`)??-1;return!n||a===-1||!i?null:{accountId:n,playerId:r.slice(0,a),embed:r.slice(a+1),videoId:i}}function se(e){return(e?.plugins??[]).find(e=>e.name===`ima3`)?.options?.serverUrl??null}const ce=F(async(e,t,n,r)=>{let i=await fetch(`https://players.brightcove.net/${e}/${t}_${n}/config.json`);if(!i.ok)throw Error(`Brightcove: could not load player config (${i.status})`);let a=await i.json(),o=r??a?.video_cloud?.policy_key;if(!o)throw Error(`Brightcove: policy_key not found in player config`);return{policyKey:o,adTagUrl:se(a)}},(e,t,n)=>`${e}/${t}_${n}`);async function le(e,t,n){let r=await fetch(`https://edge.api.brightcove.com/playback/v1/accounts/${e}/videos/${t}`,{headers:{Accept:`application/json;pk=${n}`}});if(!r.ok)throw Error(`Brightcove Playback API error: ${r.status}`);let i=await r.json(),a=I(i.sources||[]);if(!a.length)throw Error(`Brightcove: no playable sources found`);return{sources:a.map(e=>({src:e.src,type:e.type})),poster:i.poster??i.thumbnail??null}}async function ue(e,t){let n=oe(e);if(!n)throw Error(`Brightcove: invalid src — expected a Brightcove embed URL, e.g. "https://players.brightcove.net/{accountId}/{playerId}_{embed}/index.html?videoId={videoId}"`);let{accountId:r,playerId:i,embed:a,videoId:o}=n,{policyKey:s,adTagUrl:c}=await ce(r,i,a,t),{sources:l,poster:u}=await le(r,o,s);return{...l[0],poster:u,adTagUrl:c}}function de(){let e=new Map;function t(t,n){for(let r of Array.isArray(t)?t:[t])e.has(r)||e.set(r,new Set),e.get(r)?.add(n)}function n(t,n){e.get(t)?.delete(n)}function r(t,...n){e.get(t)?.forEach(e=>e(...n))}function i(){e.clear()}return{on:t,off:n,trigger:r,dispose:i}}const fe={};function pe(e,t=e){return fe[t]||(fe[t]=new Promise((t,n)=>{let r=document.createElement(`script`);r.src=e,r.onload=()=>t(),r.onerror=()=>n(Error(`Failed to load script: ${e}`)),document.head.appendChild(r)})),fe[t]}let me=0;function he(e,t){e.parentElement?.classList.add(t);let n=`${t}-${++me}`,r=document.createElement(`div`);r.id=n,r.className=`mvp-tech`,r.style.cssText=`width:100%;height:100%;top:0;left:0;position:absolute`;let i=document.createElement(`div`);return i.style.cssText=`width:100%;height:100%;position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity 0.2s`,i.appendChild(r),e.parentElement?.insertBefore(i,e),{techId:n,wrapper:i,innerDiv:r}}function ge(e,t){e.style.display=`none`,t.style.opacity=`1`,t.style.pointerEvents=``}function _e(e,t,n){t.remove(),e.parentElement?.classList.remove(n),e.style.display=``}function ve(e){return e.closest(`.player__shell`)}function ye(e){e.trigger(R);let t=document.createElement(`div`);t.style.cssText=`position:fixed;inset:0;z-index:99999;opacity:0;pointer-events:none`,document.body.appendChild(t);let n=!1;function r(){n||(e.trigger(z),t.style.opacity=`1`,t.style.pointerEvents=`auto`)}function i(r){n||(n=!0,e.trigger(z),t.remove(),r?.())}return{overlay:t,reveal:r,finish:i}}function be(e,t){return t===e.PlayerState.PLAYING||t===e.PlayerState.BUFFERING}function xe(e){let t={videoId:null,listId:null},n=e.match(/^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|shorts\/|&v=)([^#&?]*).*/);n?.[2]?.length===11&&(t.videoId=n[2]);let r=e.match(/[?&]list=([^#&?]+)/);return r?.[1]&&(t.listId=r[1]),t}let Se=!1,Ce=!1;const J=[];function we(){Ce||(Ce=!0,pe(`https://www.youtube.com/iframe_api`).then(()=>{window.YT?.ready(()=>{Se=!0,J.forEach(e=>e()),J.length=0})}))}function Te(e,t){we();let n=de(),{techId:r,wrapper:i}=he(e,te),a=xe(t.src),o=null,s=a.videoId,c=!1,l=!1,u=!1,d=null,f=!1,p=null,m=!1,h=new Set,g=null,_={active:!1,wasPaused:!1,timeBefore:0,catchUpInterval:null};function v(e,t=0){let n=setTimeout(()=>{h.delete(n),e()},t);h.add(n)}function y(){try{let e=o?.getPlayerResponse()?.adPlacements;return Array.isArray(e)&&e.length>0}catch{return!1}}function b(e){o?.loadVideoById({videoId:e})}function x(e){o?.cueVideoById({videoId:e})}function S(){a.videoId&&(_.wasPaused=!1,c?s===a.videoId?o?.playVideo():(b(a.videoId),s=a.videoId):(n.trigger(`waiting`),l=!0))}function C(){_.catchUpInterval&&clearInterval(_.catchUpInterval),_.active=!1,_.wasPaused&&o?.pauseVideo(),n.trigger(`seeked`)}function w(){m=(o?.getAvailablePlaybackRates()??[]).length>1,c=!0,t.muted&&o?.mute(),l?S():u&&a.videoId&&(x(a.videoId),s=a.videoId)}function T(e){if(e===d||p!==null)return;d=e;let t=y();t!==f&&(f=t,n.trigger(t?`adstart`:`adend`));let r=window.YT;if(r){switch(e){case-1:n.trigger(`loadstart`),n.trigger(`loadedmetadata`),n.trigger(`durationchange`),n.trigger(`ratechange`);break;case r.PlayerState.ENDED:n.trigger(`ended`);break;case r.PlayerState.PLAYING:n.trigger(`timeupdate`),n.trigger(`durationchange`),n.trigger(`playing`),n.trigger(`play`),_.active&&C();break;case r.PlayerState.PAUSED:n.trigger(`canplay`),_.active||n.trigger(`pause`);break;case r.PlayerState.BUFFERING:n.trigger(`waiting`);break;case r.PlayerState.CUED:n.trigger(`canplay`);break}g&&=(clearInterval(g),null),e===r.PlayerState.PLAYING&&(g=setInterval(()=>n.trigger(`timeupdate`),250))}}function E(){let e={controls:+!!t.nativeUi,modestbranding:1,rel:0,showinfo:0,mute:+!!t.muted,origin:window.location.origin,allowfullscreen:1,fullscreen:1,fs:1,playsinline:1,...t.customVars};s=a.videoId,o=new window.YT.Player(r,{videoId:s??void 0,playerVars:e,events:{onReady:w,onStateChange:e=>T(e.data),onPlaybackRateChange:()=>n.trigger(`ratechange`),onVolumeChange:()=>n.trigger(`volumechange`),onError:e=>{p=e.data,n.trigger(`error`),v(()=>{p=null})}}})}Se?E():J.push(E),t.autoplay?c?S():l=!0:a.videoId&&(u=!0);function D(){if(!o)return;let e=o.getCurrentTime(),{video_id:t}=o.getVideoData();o.pauseVideo();let{overlay:r,reveal:i,finish:a}=ye(n),s=document.createElement(`div`);s.id=`yt-fs-${Math.random().toString(36).slice(2)}`,r.appendChild(s);let c=null,l=()=>{a(()=>{let t=c?.getCurrentTime()??e;try{c?.destroy()}catch{}o?.seekTo(t,!0),n.trigger(`timeupdate`)})};c=new window.YT.Player(s.id,{videoId:t,playerVars:{playsinline:0,autoplay:1,controls:1,modestbranding:1,rel:0,start:Math.floor(e)},events:{onReady:t=>{i(),t.target.seekTo(e,!0),t.target.playVideo()},onStateChange:e=>{let t=window.YT;t&&(e.data===t.PlayerState.PAUSED||e.data===t.PlayerState.ENDED)&&l()}}})}function O(){if(A()&&o){D();return}let t=ve(e);t&&j(t)}function k(){M()}return{el:i,play:S,pause:()=>o?.pauseVideo(),paused:()=>{if(!o)return!0;let e=window.YT;return!e||!be(e,d)},currentTime:()=>o?.getCurrentTime()??0,setCurrentTime:e=>{if(!o)return;let t=window.YT;t&&d===t.PlayerState.PAUSED&&(_.timeBefore=o.getCurrentTime()),_.active||(_.wasPaused=!t||!be(t,d)),o.seekTo(e,!0),n.trigger(`timeupdate`),n.trigger(`seeking`),_.active=!0,t&&d===t.PlayerState.PAUSED&&_.timeBefore!==e&&(_.catchUpInterval&&clearInterval(_.catchUpInterval),_.catchUpInterval=setInterval(()=>{d!==t.PlayerState.PAUSED||!_.active?_.catchUpInterval&&clearInterval(_.catchUpInterval):o&&o.getCurrentTime()!==_.timeBefore&&(n.trigger(`timeupdate`),C())},250))},duration:()=>o?.getDuration()??0,volume:()=>o?o.getVolume()/100:1,setVolume:e=>o?.setVolume(e*100),muted:()=>o?.isMuted()??!1,setMuted:e=>{o&&(e?o.mute():o.unMute(),v(()=>n.trigger(`volumechange`),50))},playbackRate:()=>o?.getPlaybackRate()??1,setPlaybackRate:e=>o?.setPlaybackRate(e),bufferedEnd:()=>o?.getVideoLoadedFraction?o.getVideoLoadedFraction()*o.getDuration():0,error:()=>p===null?null:{code:p,message:`This video could not be played.`},setSrc:e=>{let t=xe(e);a.videoId=t.videoId,a.listId=t.listId,a.videoId&&(c?(b(a.videoId),s=a.videoId):u=!0)},featuresPlaybackRate:()=>m,enterFullscreen:O,exitFullscreen:k,on:n.on,off:n.off,dispose:()=>{if(h.forEach(clearTimeout),h.clear(),g&&clearInterval(g),_.catchUpInterval&&clearInterval(_.catchUpInterval),o)try{o.stopVideo(),o.destroy()}catch{}else{let e=J.indexOf(E);e!==-1&&J.splice(e,1)}o=null,_e(e,i,te),n.dispose()}}}function Ee(e){return e.match(/(?:vimeo\.com\/(?:video\/|channels\/[^/]+\/|groups\/[^/]+\/videos\/)?|player\.vimeo\.com\/video\/)(\d+)/)?.[1]??null}function De(e,t){let n=de(),{techId:r,wrapper:i}=he(e,V),a=Ee(t.src),o=null,s=0,c=0,l=1,u=!1,d=!0,f=1,p=!1,m=!1,h=!1,g=null,_=new Set;function v(e,t=0){let n=setTimeout(()=>{_.delete(n),e()},t);_.add(n)}function y(){if(!o){m=!0;return}o.play().catch(()=>{})}function b(){t.muted&&o?.setMuted(!0).catch(()=>{}),m&&y()}async function x(e){if(await pe(`https://player.vimeo.com/api/player.js`,`vimeo`),h||!window.Vimeo)return;let i={id:Number(e),byline:!1,portrait:!1,title:!1,transparent:!0,controls:!!t.nativeUi,autopause:!1,...t.autoplay!==void 0&&{autoplay:t.autoplay},...t.muted!==void 0&&{muted:t.muted}};o=new window.Vimeo.Player(r,i),t.autoplay&&(m=!0),o.ready().then(b).catch(e=>{g={code:4,message:e?.message||`This video is unavailable or cannot be embedded here.`},n.trigger(`error`)}),o.on(`play`,()=>{d=!1,n.trigger(`play`),n.trigger(`playing`)}),o.on(`pause`,()=>{d=!0,n.trigger(`pause`)}),o.on(`ended`,()=>{d=!0,n.trigger(`ended`)}),o.on(`timeupdate`,e=>{let{seconds:t,duration:r}=e;s=t,c=r,n.trigger(`timeupdate`),r&&!p&&(p=!0,n.trigger(`durationchange`))}),o.on(`loaded`,()=>{p=!1,n.trigger(`loadedmetadata`),n.trigger(`durationchange`)}),o.on(`seeking`,e=>{s=e.seconds,n.trigger(`seeking`)}),o.on(`seeked`,e=>{s=e.seconds,n.trigger(`seeked`),n.trigger(`timeupdate`)}),o.on(`bufferstart`,()=>n.trigger(`waiting`)),o.on(`bufferend`,()=>n.trigger(`canplay`)),o.on(`volumechange`,e=>{l=e.volume,n.trigger(`volumechange`)}),o.on(`error`,()=>n.trigger(`error`))}a&&x(a);function S(){if(!A()){let t=ve(e);t&&j(t);return}o?.requestFullscreen().catch(()=>{})}function C(){M()}return{el:i,play:y,pause:()=>o?.pause().catch(()=>{}),paused:()=>d,currentTime:()=>s,setCurrentTime:e=>{o?.setCurrentTime(e).catch(()=>{}),n.trigger(`timeupdate`),n.trigger(`seeking`)},duration:()=>c,volume:()=>l,setVolume:e=>{l=e,o?.setVolume(e).catch(()=>{})},muted:()=>u,setMuted:e=>{u=e,o?.setMuted(e).then(()=>v(()=>n.trigger(`volumechange`),50)).catch(()=>{})},playbackRate:()=>f,setPlaybackRate:e=>{f=e,o?.setPlaybackRate(e).catch(()=>{}),n.trigger(`ratechange`)},bufferedEnd:()=>s,error:()=>g,setSrc:()=>{},featuresPlaybackRate:()=>!1,enterFullscreen:S,exitFullscreen:C,on:n.on,off:n.off,dispose:()=>{h=!0,_.forEach(clearTimeout),_.clear(),o?.destroy().catch(()=>{}),o=null,_e(e,i,V),n.dispose()}}}function Oe(e){let t=e.match(/[?&]video=([a-zA-Z0-9]+)/);return t?t[1]:e.match(/(?:dailymotion\.com\/(?:embed\/)?video\/|dai\.ly\/)([a-zA-Z0-9]+)/)?.[1]??null}function ke(e,t){let n=de(),{techId:r,wrapper:i}=he(e,H),a=ve(e),o=Oe(t.src),s=typeof t.customVars?.playerId==`string`?t.customVars.playerId:void 0,c=null,l=0,u=0,d=1,f=!1,p=!0,m=!1,h=!1,g=null;async function _(){if(!o){g={code:4,message:`Could not parse video ID from source URL`},n.trigger(`error`);return}try{let e=await pe(s?`https://geo.dailymotion.com/libs/player/${s}.js`:`https://geo.dailymotion.com/libs/player.js`,s||`dailymotion-sdk`).then(()=>window.dailymotion);if(!e)return;let i=await e.createPlayer(r,{...s&&{player:s},video:o,params:{autoplay:!!t.autoplay,mute:!!t.muted}});c=i;let a=e.events;m&&i.play(),i.on(a.PLAYER_CRITICALPATHREADY,e=>{let t=e.videoThumbnails;if(!t)return;let r=Object.keys(t).map(Number).sort((e,t)=>t-e)[0],i=r===void 0?void 0:t[r];i&&n.trigger(`posterchange`,i)}),i.on(a.VIDEO_PLAY,()=>{p=!1,n.trigger(`play`),n.trigger(`playing`),!t.autoplay&&!h&&(h=!0,i.pause())}),i.on(a.VIDEO_PLAYING,()=>{p=!1,n.trigger(`play`),n.trigger(`playing`)}),i.on(a.VIDEO_PAUSE,()=>{p=!0,n.trigger(`pause`)}),a.VIDEO_BUFFERING&&i.on(a.VIDEO_BUFFERING,()=>n.trigger(`waiting`)),i.on(a.VIDEO_END,()=>{p=!0,n.trigger(`ended`)}),i.on(a.VIDEO_TIMECHANGE,e=>{l=e.videoTime??l,u=e.videoDuration??u,n.trigger(`timeupdate`)}),i.on(a.VIDEO_DURATIONCHANGE,e=>{u=e.videoDuration??u,n.trigger(`durationchange`)}),i.on(a.VIDEO_SEEKSTART,()=>n.trigger(`seeking`)),i.on(a.VIDEO_SEEKEND,e=>{l=e.videoTime??l,n.trigger(`seeked`)}),i.on(a.PLAYER_VOLUMECHANGE,e=>{d=e.playerVolume??d,f=e.playerIsMuted??f,n.trigger(`volumechange`)}),i.on(a.PLAYER_ERROR,()=>n.trigger(`error`)),a.AD_START&&i.on(a.AD_START,()=>{p=!1,n.trigger(`play`),n.trigger(`adstart`)}),a.AD_END&&i.on(a.AD_END,()=>n.trigger(`adend`))}catch(e){g={code:4,message:e instanceof Error?e.message:`This video could not be played.`},n.trigger(`error`)}}_();function v(){c?c.play():m=!0}function y(){if(A()){c?.setFullscreen(!0);return}a&&j(a)}function b(){if(A()){c?.setFullscreen(!1);return}M()}return{el:i,play:v,pause:()=>c?.pause(),paused:()=>p,currentTime:()=>l,setCurrentTime:e=>{l=e,c?.seek(e),n.trigger(`seeking`)},duration:()=>u,volume:()=>d,setVolume:e=>{d=e,c?.setVolume(e)},muted:()=>f,setMuted:e=>{f=e,c?.setMute(e)},playbackRate:()=>1,setPlaybackRate:()=>{},bufferedEnd:()=>l,error:()=>g,setSrc:()=>{},featuresPlaybackRate:()=>!1,enterFullscreen:y,exitFullscreen:b,on:n.on,off:n.off,dispose:()=>{c?.destroy?.(),c=null,_e(e,i,H),n.dispose()}}}const Ae=[{test:e=>/youtu\.be|youtube\.com/.test(e),key:`youtube`,embed:!0},{test:e=>/vimeo\.com|player\.vimeo\.com/.test(e),key:`vimeo`,embed:!0},{test:e=>/dailymotion\.com|dai\.ly/.test(e),key:`dailymotion`,embed:!0},{test:e=>/cdn\.jwplayer\.com/.test(e)||e.startsWith(`jwplayer://`),key:`jwplayer`,embed:!1},{test:e=>/players\.brightcove\.net/.test(e),key:`brightcove`,embed:!1}];function je(e){return Ae.find(t=>t.test(e))?.key??`html5`}function Me(e){if(/\.m3u8(\?|#|$)/.test(e))return`application/x-mpegURL`;if(/\.mp4(\?|#|$)/.test(e))return`video/mp4`}function Ne(e){return Ae.find(t=>t.test(e))?.embed??!1}const Pe={youtube:Te,vimeo:De,dailymotion:ke};function Fe(e,t,n){let r=Pe[je(e)];return r?r(t,n):null}async function Ie(e){let t=je(e);return t===`jwplayer`?ae(e):t===`brightcove`?ue(e):{src:e,type:Me(e)}}const Le=`application/x-mpegURL`,Re=[`play`,`pause`,`ended`,`error`,`timeupdate`,`durationchange`,`progress`,`volumechange`,`ratechange`,`seeking`,`seeked`,`waiting`,`playing`,`canplay`];function ze(e,t){let n=de(),r=null,i=!1,a=null;async function o(t){let{default:o}=await import(`hls.js`);if(i||a!==t)return;if(typeof o?.isSupported!=`function`||!o.isSupported()){e.src=t;return}r=new o({liveDurationInfinity:!0}),r.loadSource(t),r.attachMedia(e);let s=o.Events,c=o.ErrorTypes;r.on(s.ERROR,(e,o)=>{if(!(!o.fatal||i||a!==t))switch(o.type){case c.NETWORK_ERROR:r?.startLoad();break;case c.MEDIA_ERROR:r?.recoverMediaError();break;default:r?.destroy(),r=null,n.trigger(`error`);break}})}function s(){return e.canPlayType(`application/vnd.apple.mpegurl`)!==``||e.canPlayType(Le)!==``}function c(t,n){if(r?.destroy(),r=null,a=null,n===Le&&!s()){a=t,o(t);return}e.src=t}let l=e=>()=>n.trigger(e),u=Re.map(e=>[e,l(e)]);for(let[t,n]of u)e.addEventListener(t,n);let d=[[`webkitbeginfullscreen`,l(`nativefullscreenenter`)],[`webkitendfullscreen`,l(`nativefullscreenexit`)]];for(let[t,n]of d)e.addEventListener(t,n);e.poster=t.poster??``,e.muted=t.muted??t.autoplay??!1,e.playbackRate=t.playbackRate??1,e.playsInline=!0,c(t.src,t.type),t.autoplay&&e.play();function f(){let t=e;if(typeof t.webkitEnterFullscreen==`function`){t.webkitEnterFullscreen();return}let n=e.closest(`.player__shell`);n instanceof HTMLElement&&j(n)}function p(){let t=e;if(typeof t.webkitExitFullscreen==`function`){t.webkitExitFullscreen();return}M()}return{el:e,play:()=>e.play(),pause:()=>e.pause(),paused:()=>e.paused,currentTime:()=>e.currentTime,setCurrentTime:t=>{e.currentTime=t},duration:()=>e.duration,volume:()=>e.volume,setVolume:t=>{e.volume=t},muted:()=>e.muted,setMuted:t=>{e.muted=t},playbackRate:()=>e.playbackRate,setPlaybackRate:t=>{e.playbackRate=t},bufferedEnd:()=>{let{buffered:t,duration:n}=e;if(!t.length)return 0;let r=t.end(t.length-1);return n&&r>n?n:r},error:()=>{let t=e.error;return t?{code:t.code,message:t.message||`This video could not be played.`}:null},setSrc:c,featuresPlaybackRate:()=>!0,enterFullscreen:f,exitFullscreen:p,on:n.on,off:n.off,dispose:()=>{i=!0,r?.destroy();for(let[t,n]of u)e.removeEventListener(t,n);for(let[t,n]of d)e.removeEventListener(t,n);n.dispose()}}}function Be(){return window.google?.ima?Promise.resolve():new Promise((e,t)=>{let n=document.createElement(`script`);n.src=`https://imasdk.googleapis.com/js/sdkloader/ima3.js`,n.onload=()=>e(),n.onerror=()=>t(Error(`Failed to load Google IMA SDK`)),document.head.appendChild(n)})}function Ve(e,t,n,r){let i=document.createElement(`div`);i.className=`ima-ad-container`,e.appendChild(i);let a=null,o=null,s=null,c=!1,l=!1,u=!1,d=!1,f=!1,p=!1,m=1,h=new ResizeObserver(([e])=>{let t=window.google?.ima;if(!s||!t)return;let{width:n,height:r}=e.contentRect;s.resize(n,r,t.ViewMode.NORMAL)});h.observe(t);function g(){o?.contentComplete()}function _(t){d=t,e.classList.toggle(U,t),t||(f=!1,e.classList.remove(W))}function v(){if(c||!l||!u||!a||!o)return;c=!0;let e=window.google?.ima;if(!e)return;a.initialize();let t=new e.AdsRequest;t.adTagUrl=n,o.requestAds(t)}Be().then(()=>{if(p)return;let n=window.google?.ima;n&&(a=new n.AdDisplayContainer(i,t),o=new n.AdsLoader(a),l=!0,o.addEventListener(n.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,i=>{if(p)return;let a=new n.AdsRenderingSettings;a.restoreCustomPlaybackStateOnAdBreakComplete=!0,s=i.getAdsManager(t,a),t.addEventListener(`ended`,g),s.addEventListener(n.AdEvent.Type.CONTENT_PAUSE_REQUESTED,()=>{t.removeEventListener(`ended`,g),t.pause(),_(!0),r.onAdStart();let e=s?.getVolume()??1;e>0&&(m=e),r.onAdMuteChange(e===0)}),s.addEventListener(n.AdEvent.Type.CONTENT_RESUME_REQUESTED,()=>{t.addEventListener(`ended`,g),_(!1),r.onAdEnd(),t.ended||t.play()}),s.addEventListener(n.AdEvent.Type.PAUSED,()=>{f=!0,e.classList.add(W),r.onAdPauseChange(!0)}),s.addEventListener(n.AdEvent.Type.RESUMED,()=>{f=!1,e.classList.remove(W),r.onAdPauseChange(!1)}),s.addEventListener(n.AdEvent.Type.AD_PROGRESS,()=>{r.onAdProgress(s?.getRemainingTime()??0)}),s.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{_(!1),r.onError(e.getError().getMessage()),t.play()});try{s.init(t.clientWidth,t.clientHeight,n.ViewMode.NORMAL),s.start()}catch(e){r.onError(e instanceof Error?e.message:`Ad playback failed to start.`)}}),o.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{r.onError(e.getError().getMessage())}),v())}).catch(e=>r.onError(e.message));function y(){u=!0,v()}function b(){if(!s)return;let e=s.getVolume();e>0?(m=e,s.setVolume(0)):s.setVolume(m||1),r.onAdMuteChange(s.getVolume()===0)}return{isAdPlaying:()=>d,isAdPaused:()=>f,requestAdsOnFirstPlay:y,pauseAd:()=>s?.pause(),resumeAd:()=>s?.resume(),toggleAdMute:b,dispose:()=>{p=!0,h.disconnect(),t.removeEventListener(`ended`,g),s?.destroy(),o?.destroy(),i.remove(),e.classList.remove(U,W)}}}const He=new Set;function Ue(e){return He.add(e),()=>He.delete(e)}function We(e){He.forEach(t=>{if(t!==e)try{t()}catch{}})}function Ge(e){let t=C(!1),n=C(!1);function r(){let e=document;t.value=!!(document.fullscreenElement||e.webkitFullscreenElement),n.value=!1}function i(){let n=e();if(n){if(t.value){n.exitFullscreen();return}n.enterFullscreen()}}function a(){n.value=!0}function o(e){e.on(R,()=>{n.value=!0}),e.on(z,()=>{n.value=!1}),e.on(`nativefullscreenenter`,()=>{t.value=!0,n.value=!1}),e.on(`nativefullscreenexit`,()=>{t.value=!1,n.value=!1})}return y(()=>{document.addEventListener(`fullscreenchange`,r),document.addEventListener(`webkitfullscreenchange`,r)}),v(()=>{document.removeEventListener(`fullscreenchange`,r),document.removeEventListener(`webkitfullscreenchange`,r)}),{isFullscreen:t,isFullscreenPending:n,toggleFullscreen:i,markFullscreenPending:a,attachPlayerEvents:o}}function Ke(){let e=C(!1),t=null;function n(){clearTimeout(t??void 0),e.value=!1}function r(r){r.on(`waiting`,()=>{clearTimeout(t??void 0),t=setTimeout(()=>{e.value=!0},500)}),r.on(`playing`,n),r.on(`canplay`,n)}return v(()=>clearTimeout(t??void 0)),{isBuffering:e,attachPlayerEvents:r,reset:n}}function qe(e,t,n){let r=new Set;function i(){if(!t.value)return;let i=e.value/t.value;for(let[e,t]of ne)!r.has(e)&&i>=e&&(r.add(e),n(t))}function a(){r.clear()}return{checkQuartiles:i,reset:a}}function Je(){try{return JSON.parse(localStorage.getItem(`player:positions`)??`[]`)}catch{return[]}}function Ye(e){localStorage.setItem(`player:positions`,JSON.stringify(e))}function Xe(e,t){if(t<5)return;let n=Je().filter(t=>t.url!==e);n.unshift({url:e,time:t}),Ye(n.slice(0,5))}function Ze(e){return Je().find(t=>t.url===e)?.time??null}function Qe(e){Ye(Je().filter(t=>t.url!==e))}function $e(e,t,n){let r=!1;function i(t){if(r)return;let n=Ze(e);n&&t.setCurrentTime(n),r=!0}function a(t){!t||n.value||Xe(e,t.currentTime()??0)}function o(){Qe(e)}function s(){document.visibilityState===`hidden`&&a(t())}return y(()=>document.addEventListener(`visibilitychange`,s)),v(()=>{a(t()),document.removeEventListener(`visibilitychange`,s)}),{restoreOnce:i,save:a,clear:o}}function et(e,t,n,r){let i=null;y(()=>{let a=e.value?.closest(`.player__shell`);a&&(i=new IntersectionObserver(([e])=>{let i=t();!e.isIntersecting&&i&&!i.paused()&&!n.value&&!r.value&&i.pause()},{threshold:.1}),i.observe(a))}),v(()=>i?.disconnect())}function tt(e,t,n,r,i,a){function o(){let n=e();if(!(!n||!t.value)){if(!a.value){n.play();return}n.pause()}}function s(t){e()?.setCurrentTime(n.value*(t/100))}function c(){let t=e();t?.setMuted(!t.muted())}function l(t){let n=e();n&&(n.setVolume(t),n.setMuted(t===0))}function u(){r.value=!r.value}function d(t){let n=e();n&&(n.setPlaybackRate(t),i.value=t)}return{togglePlay:o,seek:s,toggleMute:c,setVolume:l,toggleLoop:u,setPlaybackRate:d}}function nt(e,t){let{isPlaying:n,hasEnded:r,isReady:i,isAdPlaying:a,isLive:o,current:s,total:c,buffered:l,vol:u,isMuted:d,isLooping:f,playbackRate:p,supportsPlaybackRate:m,hasStarted:h,isError:g,errorMessage:_}=e,{fire:v,pauseThisPlayer:y,positionMemory:b,quartiles:x,buffering:S,fullscreen:C}=t;function w(e){i.value=!0,m.value=e.featuresPlaybackRate();let t=()=>{let t=e.duration();if(t===1/0){o.value=!0;return}o.value=!1,t&&t>0&&isFinite(t)&&(c.value=t)};e.on(`adstart`,()=>{We(y),a.value=!0,v(`adstart`)}),e.on(`adend`,()=>{a.value=!1,v(`adend`)}),e.on(`play`,()=>{We(y),h.value=!0,n.value=!0,r.value=!1,o.value||b.restoreOnce(e),v(`play`)}),e.on(`pause`,()=>{n.value=!1,o.value||b.save(e),v(`pause`)}),e.on(`ended`,()=>{if(n.value=!1,x.reset(),S.reset(),f.value){e.setCurrentTime(0),e.play();return}c.value&&(s.value=c.value),r.value=!0,b.clear(),v(`ended`)}),e.on(`seeked`,()=>{v(`seeked`)}),e.on(`error`,()=>{let t=e.error();_.value=t?.message||`This video could not be played.`,g.value=!0,i.value=!0,v(`error`,{error:t})}),e.on(`timeupdate`,()=>{r.value||(s.value=e.currentTime()??0,c.value||t(),m.value||=e.featuresPlaybackRate(),o.value||x.checkQuartiles())}),e.on(`durationchange`,t),e.on(`progress`,()=>{let t=e.duration();l.value=t?e.bufferedEnd()/t*100:0}),e.on(`volumechange`,()=>{let t=e.muted();u.value=e.volume()??1,d.value=t??!1,h.value&&v(`volumechange`,{isMuted:t})}),e.on(`ratechange`,()=>{let t=e.playbackRate()??1;p.value=t,h.value&&v(`ratechange`,{playbackRate:t})}),S.attachPlayerEvents(e),C.attachPlayerEvents(e)}return{attachPlayerEvents:w}}function rt(e,t,r){let i=null,a=null,o=null,s=null,c=C(!1),l=C(!1),u=C(!1),d=C(!1),f=C(!1),p=C(!1),m=C(0),h=C(!1),g=C(0),_=C(0),b=C(0),x=C(1),S=C(t.muted??t.autoplay??!1),w=C(!1),T=C(t.playbackRate??1),E=C(!1),O=C(!1),k=C(!1),A=C(``),j=C(!1),M=n(()=>_.value?g.value/_.value*100:0),N=n(()=>Math.max(b.value,M.value)),F=()=>i,I=Ge(F),L=Ke(),ee=$e(t.videoUrl,F,l);function R(e,n={}){r(`state-change`,{type:e,currentTime:g.value,duration:_.value,src:t.videoUrl,...n,payload:t.payload})}let z=qe(g,_,R);function B(){!i||!s||(k.value=!1,A.value=``,i.setSrc(s.src,s.type))}function te(){a?.toggleAdMute()}function V(){if(a?.isAdPlaying()){a.pauseAd();return}i?.pause()}function H(){if(a?.isAdPlaying()){a.isAdPaused()?a.resumeAd():a.pauseAd();return}U.togglePlay()}let U=tt(F,u,_,w,T,c),{attachPlayerEvents:W}=nt({isPlaying:c,hasEnded:l,isReady:u,isAdPlaying:d,isLive:h,current:g,total:_,buffered:b,vol:x,isMuted:S,isLooping:w,playbackRate:T,supportsPlaybackRate:E,hasStarted:O,isError:k,errorMessage:A},{fire:R,pauseThisPlayer:V,positionMemory:ee,quartiles:z,buffering:L,fullscreen:I});return D(()=>t.muted,e=>{!i||e===void 0||i.setMuted(e)}),D(()=>t.playbackRate,e=>{!i||e===void 0||i.setPlaybackRate(e)}),et(e,F,I.isFullscreen,I.isFullscreenPending),D(O,t=>{!t||!e.value||!i||i.el===e.value||ge(e.value,i.el)}),y(async()=>{if(Ne(t.videoUrl)){if(!e.value)return;let n=Fe(t.videoUrl,e.value,{src:t.videoUrl,poster:t.poster,autoplay:t.autoplay,muted:t.muted??t.autoplay,nativeUi:t.nativeUi});if(!n){k.value=!0,u.value=!0,A.value=`This platform is not yet supported.`;return}j.value=!!t.nativeUi,i=n,s={src:t.videoUrl},o=Ue(V),W(i);return}let n=await Ie(t.videoUrl).catch(()=>({src:t.videoUrl}));if(!e.value)return;s={src:n.src,type:n.type},i=ze(e.value,{src:n.src,type:n.type,poster:n.poster||t.poster||``,autoplay:t.autoplay,muted:t.muted??t.autoplay,playbackRate:T.value});let r=t.adTagUrl||n.adTagUrl||``;r&&e.value.parentElement&&(a=Ve(e.value.parentElement,e.value,r,{onAdStart:()=>{d.value=!0,f.value=!1,R(`adstart`)},onAdEnd:()=>{d.value=!1,f.value=!1,m.value=0,R(`adend`)},onAdPauseChange:e=>{f.value=e,e||We(V)},onAdMuteChange:e=>{p.value=e},onAdProgress:e=>{m.value=e},onError:e=>{d.value=!1,f.value=!1,m.value=0,console.error(`Ad playback error for ${r}:`,e)}}),i.on(`play`,()=>a?.requestAdsOnFirstPlay())),o=Ue(V),W(i)}),v(()=>{o?.(),a?.dispose(),a=null,i?.dispose(),i=null}),{isPlaying:c,hasEnded:l,isReady:u,isAdPlaying:d,isAdPaused:f,isAdMuted:p,adRemainingTime:m,isLive:h,isBuffering:L.isBuffering,current:g,total:_,vol:x,isMuted:S,isLooping:w,playbackRate:T,hasStarted:O,isError:k,errorMessage:A,progress:M,bufferedDisplay:N,isFullscreen:I.isFullscreen,isFullscreenPending:I.isFullscreenPending,fmt:P,fire:R,retry:B,togglePlay:H,seek:U.seek,toggleMute:U.toggleMute,setVolume:U.setVolume,toggleFullscreen:I.toggleFullscreen,markFullscreenPending:I.markFullscreenPending,toggleLoop:U.toggleLoop,toggleAdMute:te,setPlaybackRate:U.setPlaybackRate,supportsPlaybackRate:E,nativeUi:j}}function it(e){let t=C(!0),n=C(!1),r=null,i=0;function a(e=400){i=Date.now()+e}function o(e=3500){clearTimeout(r??void 0),r=setTimeout(()=>{t.value=!1,n.value=!1},e)}function s(){clearTimeout(r??void 0)}function c(){n.value=!0,t.value=!0,o()}function l(){n.value=!1,e.value&&o()}function u(){e.value&&o()}function d(){t.value=!0,e.value&&o()}function f(){t.value=!0,o()}function p(){Date.now()<i||e.value&&o(600)}return D(e,e=>{if(!e){clearTimeout(r??void 0),t.value=!0;return}o()}),v(()=>clearTimeout(r??void 0)),{showHUD:t,isOpen:n,scheduleHide:o,pauseHide:s,onVideoTap:d,onMouseMove:f,onMouseLeave:p,openControls:c,closeControls:l,keepOpen:u,suppressMouseLeave:a}}const Y=Symbol(`player`),X=Symbol(`hud`),at=Symbol(`action`),ot=Symbol(`compact`),st=Symbol(`playlist`);function Z(e){let t=f(e);if(t===void 0)throw Error(`[video-player] missing "${String(e.description)}" context — this component must be rendered inside <VideoPlayer>`);return t}function ct(e,t){return{hudVisible:n(()=>!e.isReady||e.isError?!1:t.showHUD),popupVisible:n(()=>!e.isReady||e.isError?!1:e.isFullscreen?t.showHUD:t.isOpen)}}function lt(e,t){return n(()=>!(!e?.value||t.isFullscreen))}function ut(e,t,r){let i=n(()=>e?.value??null),a=n(()=>!!i.value&&typeof i.value==`object`),o=n(()=>a.value?i.value:null),s=n(()=>i.value===`mute`?t.isMuted?`Unmute`:`Mute`:i.value===`loop`?t.isLooping?`Disable loop`:`Loop`:i.value===`autoplay`?r.autoAdvance?`Disable autoplay next`:`Autoplay next`:``),c=n(()=>i.value===`mute`?t.isMuted:i.value===`loop`?t.isLooping:i.value===`autoplay`&&r.autoAdvance);function l(){i.value===`mute`?t.toggleMute():i.value===`loop`?t.toggleLoop():i.value===`autoplay`&&r.toggleAutoAdvance()}return{currentAction:i,isCustom:a,customAction:o,builtinLabel:s,builtinActive:c,onBuiltinClick:l}}var Q=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n};const dt={},ft={viewBox:`0 0 24 24`,fill:`currentColor`};function pt(e,t){return b(),a(`svg`,ft,[...t[0]||=[o(`path`,{d:`M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z`},null,-1)]])}var mt=Q(dt,[[`render`,pt]]);const ht={},gt={viewBox:`0 0 24 24`,fill:`currentColor`};function _t(e,t){return b(),a(`svg`,gt,[...t[0]||=[o(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`},null,-1)]])}var vt=Q(ht,[[`render`,_t]]);const yt={},bt={viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function xt(e,t){return b(),a(`svg`,bt,[...t[0]||=[s(`<line x1="4" y1="6" x2="20" y2="6"></line><line x1="4" y1="12" x2="20" y2="12"></line><line x1="4" y1="18" x2="20" y2="18"></line><circle cx="9" cy="6" r="2.5" fill="currentColor" stroke="none"></circle><circle cx="15" cy="12" r="2.5" fill="currentColor" stroke="none"></circle><circle cx="9" cy="18" r="2.5" fill="currentColor" stroke="none"></circle>`,6)]])}var St=Q(yt,[[`render`,xt]]);const Ct={},wt={viewBox:`0 0 24 24`,fill:`currentColor`};function Tt(e,t){return b(),a(`svg`,wt,[...t[0]||=[o(`path`,{d:`M4 12l1.41 1.41L11 7.83V20h2V7.83l5.59 5.58L20 12l-8-8-8 8z`},null,-1)]])}var Et=Q(Ct,[[`render`,Tt]]);const Dt={},Ot={viewBox:`0 0 24 24`,fill:`currentColor`};function kt(e,t){return b(),a(`svg`,Ot,[...t[0]||=[o(`path`,{d:`M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z`},null,-1)]])}var At=Q(Dt,[[`render`,kt]]);const jt={},Mt={viewBox:`0 0 24 24`,fill:`currentColor`};function Nt(e,t){return b(),a(`svg`,Mt,[...t[0]||=[o(`path`,{d:`M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z`},null,-1)]])}var Pt=Q(jt,[[`render`,Nt]]);const Ft={},It={viewBox:`0 0 24 24`,fill:`currentColor`};function Lt(e,t){return b(),a(`svg`,It,[...t[0]||=[o(`path`,{d:`M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z`},null,-1)]])}var Rt=Q(Ft,[[`render`,Lt]]);const zt={},Bt={viewBox:`0 0 24 24`,fill:`currentColor`};function Vt(e,t){return b(),a(`svg`,Bt,[...t[0]||=[o(`circle`,{cx:`5`,cy:`12`,r:`2`},null,-1),o(`circle`,{cx:`12`,cy:`12`,r:`2`},null,-1),o(`circle`,{cx:`19`,cy:`12`,r:`2`},null,-1)]])}var Ht=Q(zt,[[`render`,Vt]]);const Ut={},Wt={viewBox:`0 0 24 24`,fill:`currentColor`};function Gt(e,t){return b(),a(`svg`,Wt,[...t[0]||=[o(`path`,{d:`M6 19h4V5H6v14zm8-14v14h4V5h-4z`},null,-1)]])}var Kt=Q(Ut,[[`render`,Gt]]);const qt={},Jt={viewBox:`0 0 24 24`,fill:`currentColor`};function Yt(e,t){return b(),a(`svg`,Jt,[...t[0]||=[o(`path`,{d:`M8 5v14l11-7z`},null,-1)]])}var Xt=Q(qt,[[`render`,Yt]]);const Zt={},Qt={viewBox:`0 0 24 24`,fill:`currentColor`};function $t(e,t){return b(),a(`svg`,Qt,[...t[0]||=[o(`path`,{d:`M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z`},null,-1)]])}var en=Q(Zt,[[`render`,$t]]);const tn={},nn={viewBox:`0 0 24 24`,fill:`currentColor`};function rn(e,t){return b(),a(`svg`,nn,[...t[0]||=[o(`path`,{d:`M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z`},null,-1)]])}var an=Q(tn,[[`render`,rn]]);const on={},sn={viewBox:`0 0 24 24`,fill:`currentColor`};function cn(e,t){return b(),a(`svg`,sn,[...t[0]||=[o(`path`,{d:`M16.5 12A4.5 4.5 0 0 0 14 7.97v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51A8.796 8.796 0 0 0 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.06A8.99 8.99 0 0 0 17.73 18L19 19.27 20.27 18 5.27 3 4.27 3zM12 4L9.91 6.09 12 8.18V4z`},null,-1)]])}var ln=Q(on,[[`render`,cn]]);const un={},dn={viewBox:`0 0 24 24`,fill:`currentColor`};function fn(e,t){return b(),a(`svg`,dn,[...t[0]||=[o(`path`,{d:`M3 9v6h4l5 5V4L7 9H3zm13.5 3A4.5 4.5 0 0 0 14 7.97v8.05c1.48-.73 2.5-2.25 2.5-4.02z`},null,-1)]])}var pn=Q(un,[[`render`,fn]]);const mn=[`aria-label`];var $=Q(u({__name:`PlayPauseButton`,props:{isPlaying:{type:Boolean,required:!0},hasEnded:{type:Boolean,required:!1,default:!1},size:{type:String,required:!1,default:`sm`}},emits:[`toggle-play`],setup(e){let t=e,i=n(()=>t.isPlaying?`Pause`:t.hasEnded?`Replay`:`Play`);return(t,n)=>(b(),a(`button`,{class:h([`ppbtn`,`ppbtn--${e.size}`]),"aria-label":i.value,onClick:n[0]||=k(e=>t.$emit(`toggle-play`),[`stop`])},[e.isPlaying?(b(),r(E(Kt),{key:0})):e.hasEnded?(b(),r(E(en),{key:1})):(b(),r(E(Xt),{key:2}))],10,mn))}}),[[`__scopeId`,`data-v-85902525`]]),hn=u({__name:`VolumeIcon`,setup(e){let t=Z(Y),i=n(()=>!t.isMuted&&t.vol>0);return(e,t)=>i.value?(b(),r(E(pn),{key:0})):(b(),r(E(ln),{key:1}))}}),gn=Q(u({__name:`Spinner`,props:{size:{type:Number,required:!1,default:14},borderWidth:{type:Number,required:!1,default:2}},setup(e){return(t,n)=>(b(),a(`div`,{class:`spinner`,style:_({width:`${e.size}px`,height:`${e.size}px`,borderWidth:`${e.borderWidth}px`})},null,4))}}),[[`__scopeId`,`data-v-259be2b2`]]);const _n={class:`hud`},vn=[`aria-label`],yn=[`aria-label`],bn=[`aria-label`],xn=[`aria-label`,`innerHTML`],Sn={key:4,class:`hud__spacer`},Cn={class:`hud__play-wrap`};var wn=Q(u({__name:`HudButtons`,setup(t){let n=Z(Y),s=Z(X),{currentAction:c,isCustom:u,customAction:d,builtinLabel:p,builtinActive:m,onBuiltinClick:g}=ut(f(at),n,Z(st));return(t,f)=>(b(),a(`div`,_n,[!E(s).isOpen&&!E(n).isFullscreen?(b(),a(e,{key:0},[E(c)===`mute`?(b(),a(`button`,{key:0,class:h([`hud__btn`,{"hud__btn--active":E(m)}]),"aria-label":E(p),onClick:f[0]||=k((...e)=>E(g)&&E(g)(...e),[`stop`])},[l(hn)],10,vn)):E(c)===`loop`?(b(),a(`button`,{key:1,class:h([`hud__btn`,{"hud__btn--active":E(m)}]),"aria-label":E(p),onClick:f[1]||=k((...e)=>E(g)&&E(g)(...e),[`stop`])},[l(E(Rt))],10,yn)):E(c)===`autoplay`?(b(),a(`button`,{key:2,class:h([`hud__btn`,{"hud__btn--active":E(m)}]),"aria-label":E(p),onClick:f[2]||=k((...e)=>E(g)&&E(g)(...e),[`stop`])},[l(E(an))],10,bn)):E(u)&&E(d)?(b(),a(`button`,{key:3,class:`hud__btn`,"aria-label":E(d).label,onClick:f[3]||=k(e=>E(d).onClick(),[`stop`]),innerHTML:E(d).icon},null,8,xn)):(b(),a(`div`,Sn))],64)):i(`v-if`,!0),o(`div`,Cn,[l($,{"is-playing":E(n).isPlaying,"has-ended":E(n).hasEnded,size:`lg`,onTogglePlay:E(n).togglePlay},null,8,[`is-playing`,`has-ended`,`onTogglePlay`]),E(n).isBuffering?(b(),r(gn,{key:0,class:`hud__buf-spinner`})):i(`v-if`,!0)]),!E(s).isOpen&&!E(n).isFullscreen?(b(),a(`button`,{key:1,class:`hud__btn`,"aria-label":`Show controls`,onClick:f[4]||=k((...e)=>E(s).openControls&&E(s).openControls(...e),[`stop`])},[l(E(St))])):i(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-a6d118e7`]]);function Tn(e){let t=C(null),r=n(()=>t.value??e.progress),i=null;function a(){i&&clearTimeout(i),i=null,t.value=null}function o(e){i&&clearTimeout(i),i=null,t.value=Number(e.target.value)}function s(n){let r=Number(n.target.value);t.value=r,e.seek(r),i&&clearTimeout(i),i=setTimeout(a,3e3)}return D(()=>e.current,()=>{if(t.value===null||!e.total)return;let n=t.value/100*e.total;Math.abs(e.current-n)<1&&a()}),v(a),{displaySeek:r,onSeekInput:o,onSeekChange:s}}function En(e,t,n){if(!document.startViewTransition||!e.value){n();return}e.value.style.viewTransitionName=t,document.startViewTransition(async()=>{n(),await m()}).finished.finally(()=>{e.value&&(e.value.style.viewTransitionName=``)})}const Dn={class:`controls__vol-header`},On=[`aria-label`],kn={class:`controls__vol-body`},An=[`value`],jn={class:`controls__vol-pct`};var Mn=Q(u({__name:`VolumePanel`,emits:[`back`],setup(t){let r=Z(Y),i=Z(X),s=n(()=>r.isMuted?0:Math.round(r.vol*100));function c(e){r.setVolume(Number(e.target.value)/100)}return(t,n)=>(b(),a(e,null,[o(`div`,Dn,[o(`button`,{class:`controls__btn`,"aria-label":`Back`,onClick:n[0]||=e=>t.$emit(`back`)},[l(E(mt))]),n[6]||=o(`span`,{class:`controls__vol-label`},`Volume`,-1),o(`button`,{class:`controls__btn`,"aria-label":E(r).isMuted?`Unmute`:`Mute`,onClick:n[1]||=e=>E(r).toggleMute()},[l(hn)],8,On)]),o(`div`,kn,[o(`input`,{type:`range`,min:`0`,max:`100`,step:`1`,value:s.value,class:`controls__vol-slider`,style:_({"--v":s.value+`%`}),"aria-label":`Volume`,onInput:c,onMousedown:n[2]||=e=>E(i).pauseHide(),onMouseup:n[3]||=e=>E(i).scheduleHide(),onTouchstartPassive:n[4]||=e=>E(i).pauseHide(),onTouchend:n[5]||=e=>E(i).scheduleHide()},null,44,An),o(`span`,jn,w(s.value)+`%`,1)])],64))}}),[[`__scopeId`,`data-v-10b0ae67`]]);function Nn(e){function t(){let t=K.indexOf(e.playbackRate);e.setPlaybackRate(K[(t+1)%K.length])}function n(e){return`${e}×`}return{cycleRate:t,fmtRate:n}}const Pn={class:`controls__more-header`},Fn={class:`controls__more-body`},In={class:`controls__more-value`},Ln={class:`controls__more-row-label`},Rn={class:`controls__more-value`},zn={class:`controls__more-row-label`},Bn={class:`controls__more-value`},Vn=[`aria-label`],Hn={class:`controls__more-row-label`},Un=[`innerHTML`];var Wn=Q(u({__name:`MoreMenu`,props:{isCustom:{type:Boolean,required:!0},customAction:{type:[Object,null],required:!0}},emits:[`back`],setup(t){let n=Z(Y),r=Z(st),{cycleRate:s,fmtRate:u}=Nn(n);return(d,f)=>(b(),a(e,null,[o(`div`,Pn,[o(`button`,{class:`controls__btn`,"aria-label":`Back`,onClick:f[0]||=e=>d.$emit(`back`)},[l(E(mt))]),f[5]||=o(`span`,{class:`controls__more-label`},`More`,-1)]),o(`div`,Fn,[E(n).supportsPlaybackRate?(b(),a(`button`,{key:0,class:`controls__more-row`,"aria-label":`Playback speed`,onClick:f[1]||=(...e)=>E(s)&&E(s)(...e)},[f[6]||=o(`span`,null,`Playback speed`,-1),o(`span`,In,w(E(u)(E(n).playbackRate)),1)])):i(`v-if`,!0),o(`button`,{class:h([`controls__more-row`,{"controls__more-row--active":E(n).isLooping}]),"aria-label":`Toggle loop`,onClick:f[2]||=e=>E(n).toggleLoop()},[o(`span`,Ln,[l(E(Rt),{class:`controls__more-row-icon`}),f[7]||=c(`Loop`,-1)]),o(`span`,Rn,w(E(n).isLooping?`On`:`Off`),1)],2),E(r).hasPlaylist?(b(),a(`button`,{key:1,class:h([`controls__more-row`,{"controls__more-row--active":E(r).autoAdvance}]),"aria-label":`Toggle autoplay next`,onClick:f[3]||=e=>E(r).toggleAutoAdvance()},[o(`span`,zn,[l(E(an),{class:`controls__more-row-icon`}),f[8]||=c(`Autoplay next`,-1)]),o(`span`,Bn,w(E(r).autoAdvance?`On`:`Off`),1)],2)):i(`v-if`,!0),t.isCustom&&t.customAction?(b(),a(`button`,{key:2,class:`controls__more-row`,"aria-label":t.customAction.label,onClick:f[4]||=e=>t.customAction.onClick()},[o(`span`,Hn,[o(`span`,{class:`controls__more-row-icon`,innerHTML:t.customAction.icon},null,8,Un),c(w(t.customAction.label),1)])],8,Vn)):i(`v-if`,!0)])],64))}}),[[`__scopeId`,`data-v-e89a8208`]]);const Gn=[`value`],Kn={class:`controls__row`},qn={class:`controls__play-wrap`},Jn={key:0,class:`controls__live`},Yn={key:1,class:`controls__time`},Xn={class:`controls__fs-wrap`},Zn=[`aria-label`];var Qn=Q(u({__name:`ControlsPopup`,setup(t){let n=Z(Y),s=Z(X),u=Z(st),d=lt(f(ot),n),{isCustom:p,customAction:m}=ut(f(at),n,u),g=C(!1),x=C(!1),S=C(null);function T(e){return!S.value||S.value.contains(e)?!1:(s.closeControls(),!0)}function D(e){T(e.target)}function O(e){T(e.target)&&e.preventDefault()}y(()=>{n.fire(`controlsopen`,{element:S.value}),document.addEventListener(`click`,D,!0),document.addEventListener(`touchend`,O,!0)}),v(()=>{g.value=!1,x.value=!1,n.fire(`controlsclose`,{element:S.value}),document.removeEventListener(`click`,D,!0),document.removeEventListener(`touchend`,O,!0)});function j(e){s.suppressMouseLeave(),En(S,`controls-popup`,e)}function M(){if(A()){n.toggleMute();return}j(()=>{g.value=!0})}function N(){j(()=>{x.value=!0})}let{displaySeek:P,onSeekInput:F,onSeekChange:I}=Tn(n);function L(){n.isFullscreen||n.markFullscreenPending(),n.toggleFullscreen()}return(t,f)=>(b(),a(`div`,{ref_key:`popupEl`,ref:S,class:h([`controls`,{"controls--fs":E(n).isFullscreen,"controls--compact":E(d)}]),onMousemove:f[10]||=k((...e)=>E(s).keepOpen&&E(s).keepOpen(...e),[`stop`])},[g.value?(b(),r(Mn,{key:0,onBack:f[0]||=e=>j(()=>g.value=!1)})):x.value?(b(),r(Wn,{key:1,"is-custom":E(p),"custom-action":E(m),onBack:f[1]||=e=>j(()=>x.value=!1)},null,8,[`is-custom`,`custom-action`])):(b(),a(e,{key:2},[E(n).isLive?i(`v-if`,!0):(b(),a(`input`,{key:0,type:`range`,min:`0`,max:`100`,value:E(P),class:`controls__seek`,style:_({"--p":E(P)+`%`,"--b":E(n).bufferedDisplay+`%`}),onInput:f[2]||=(...e)=>E(F)&&E(F)(...e),onChange:f[3]||=(...e)=>E(I)&&E(I)(...e),onMousedown:f[4]||=e=>E(s).pauseHide(),onMouseup:f[5]||=e=>E(s).scheduleHide(),onTouchstartPassive:f[6]||=e=>E(s).pauseHide(),onTouchend:f[7]||=e=>E(s).scheduleHide()},null,44,Gn)),o(`div`,Kn,[o(`div`,qn,[E(n).isBuffering?(b(),r(gn,{key:0})):(b(),r($,{key:1,"is-playing":E(n).isPlaying,"has-ended":E(n).hasEnded,size:`sm`,onTogglePlay:f[8]||=e=>E(n).togglePlay()},null,8,[`is-playing`,`has-ended`]))]),E(n).isLive?(b(),a(`span`,Jn,[...f[11]||=[o(`span`,{class:`controls__live-dot`},null,-1),c(`Live`,-1)]])):(b(),a(`span`,Yn,w(E(n).fmt(E(n).current))+` / `+w(E(n).fmt(E(n).total)),1)),E(u).hasNext?(b(),a(`button`,{key:2,class:`controls__btn`,"aria-label":`Play next`,onClick:f[9]||=e=>E(u).playNext()},[l(E(an))])):i(`v-if`,!0),o(`button`,{class:`controls__btn`,"aria-label":`Volume`,onClick:M},[l(hn)]),o(`button`,{class:h([`controls__btn controls__btn--more`,{"controls__btn--active":E(n).isLooping||E(n).playbackRate!==1||E(u).autoAdvance}]),"aria-label":`More`,onClick:N},[l(E(Ht))],2),o(`div`,Xn,[E(n).isFullscreenPending?(b(),r(gn,{key:0})):(b(),a(`button`,{key:1,class:`controls__btn`,"aria-label":E(n).isFullscreen?`Exit fullscreen`:`Fullscreen`,onClick:L},[E(n).isFullscreen?(b(),r(E(Pt),{key:0})):(b(),r(E(At),{key:1}))],8,Zn))])])],64))],34))}}),[[`__scopeId`,`data-v-5712aad4`]]);const $n={class:`ad-overlay`},er={class:`ad-overlay__bar`},tr={class:`ad-overlay__badge`},nr={key:0,class:`ad-overlay__countdown`},rr=[`aria-label`],ir={key:0,class:`ad-overlay__resume`};var ar=Q(u({__name:`AdOverlay`,setup(e){let t=Z(Y),s=n(()=>t.adRemainingTime>0?t.fmt(t.adRemainingTime):``);return(e,n)=>(b(),a(`div`,$n,[o(`div`,er,[o(`div`,tr,[n[2]||=o(`span`,null,`Ad`,-1),s.value?(b(),a(`span`,nr,w(s.value),1)):i(`v-if`,!0)]),o(`button`,{class:`ad-overlay__mute`,"aria-label":E(t).isAdMuted?`Unmute ad`:`Mute ad`,onClick:n[0]||=e=>E(t).toggleAdMute()},[E(t).isAdMuted?(b(),r(E(ln),{key:0})):(b(),r(E(pn),{key:1}))],8,rr)]),E(t).isAdPaused?(b(),a(`div`,ir,[l($,{"is-playing":!1,size:`lg`,onTogglePlay:n[1]||=e=>E(t).togglePlay()})])):i(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-23efcc8b`]]);const or={key:0,class:`overlay__spinner`},sr={key:0,class:`overlay__error`};var cr=Q(u({__name:`PlayerOverlay`,props:{disableTapCapture:{type:Boolean,required:!1,default:!1}},setup(n){let s=Z(Y),c=Z(X),{hudVisible:u,popupVisible:d}=ct(s,c);function f(){if(s.isAdPlaying&&s.isAdPaused){s.togglePlay();return}c.onVideoTap()}return(c,p)=>(b(),a(e,null,[!n.disableTapCapture&&E(s).hasStarted&&!(E(s).isAdPlaying&&!E(s).isAdPaused)?(b(),a(`div`,{key:0,class:`overlay__tap-capture`,onClick:f,onTouchend:k(f,[`prevent`,`stop`])},null,32)):i(`v-if`,!0),E(s).isAdPlaying?(b(),r(ar,{key:1})):i(`v-if`,!0),l(t,{name:`fade`},{default:O(()=>[!E(s).isReady&&!E(s).isError?(b(),a(`div`,or,[l(gn,{size:40,"border-width":3})])):i(`v-if`,!0)]),_:1}),l(t,{name:`fade`},{default:O(()=>[E(s).isError?(b(),a(`div`,sr,[o(`p`,null,w(E(s).errorMessage||`This video could not be played.`),1),o(`button`,{class:`overlay__retry`,onClick:p[0]||=k((...e)=>E(s).retry&&E(s).retry(...e),[`stop`])},`Retry`)])):i(`v-if`,!0)]),_:1}),o(`div`,{class:h([`overlay__hud`,{"overlay__hud--visible":E(u)}])},[l(wn)],2),l(t,{name:`popup`},{default:O(()=>[E(d)?(b(),a(`div`,{key:0,class:h([`overlay__popup`,{"overlay__popup--fs":E(s).isFullscreen}])},[l(Qn)],2)):i(`v-if`,!0)]),_:1})],64))}}),[[`__scopeId`,`data-v-f3307b98`]]);const lr={class:`player`},ur={"data-mvp-player":``},dr=[`poster`],fr={key:1,class:`player__native-play`};var pr=Q(u({__name:`VideoPlayer`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1,default:``},poster:{type:String,required:!1,default:``},aspectRatio:{type:String,required:!1,default:G},adTagUrl:{type:String,required:!1,default:``},autoplay:{type:Boolean,required:!1,default:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1,default:!1},autoStage:{type:Boolean,required:!1,default:!1},lazy:{type:Boolean,required:!1,default:!1},payload:{type:Object,required:!1,default:()=>({})},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1,default:!1},hasPlaylist:{type:Boolean,required:!1,default:!1},hasNext:{type:Boolean,required:!1,default:!1},hasPrevious:{type:Boolean,required:!1,default:!1},autoAdvance:{type:Boolean,required:!1,default:!1}},emits:[`state-change`,`play-next`,`play-previous`,`toggle-auto-advance`],setup(e,{expose:t,emit:s}){let c=e,u=s,d=C(null),f=S(rt(d,c,u)),p=S(it(T(f,`isPlaying`)));x(Y,f),x(X,p),x(at,T(c,`action`)),x(st,S({hasPlaylist:n(()=>c.hasPlaylist),hasNext:n(()=>c.hasNext),hasPrevious:n(()=>c.hasPrevious),autoAdvance:n(()=>c.autoAdvance),playNext:()=>u(`play-next`),playPrevious:()=>u(`play-previous`),toggleAutoAdvance:()=>u(`toggle-auto-advance`)}));let m=n(()=>N(c.aspectRatio)),g=n(()=>m.value.isPortrait),v=n(()=>m.value.cssRatio),y=n(()=>!c.poster&&!f.isReady);return t(f),(e,t)=>(b(),a(`div`,lr,[o(`div`,{class:h([`player__shell`,{"player__shell--portrait":g.value}]),style:_({aspectRatio:v.value}),onMousemove:t[0]||=e=>p.onMouseMove(),onContextmenuCapture:t[1]||=k(()=>{},[`prevent`]),onMouseleave:t[2]||=e=>p.onMouseLeave()},[o(`div`,ur,[o(`video`,{ref_key:`videoEl`,ref:d,class:h([`mvp-video`,{"mvp-video--hidden":y.value}]),poster:c.poster,playsinline:``},null,10,dr),f.nativeUi?i(`v-if`,!0):(b(),r(cr,{key:0,"disable-tap-capture":c.disableTapCapture},null,8,[`disable-tap-capture`])),f.nativeUi&&!f.hasStarted?(b(),a(`div`,fr,[l($,{"is-playing":!1,size:`lg`,onTogglePlay:f.togglePlay},null,8,[`onTogglePlay`])])):i(`v-if`,!0)])],38)]))}}),[[`__scopeId`,`data-v-4ab3cf75`]]);const mr=C(0),hr=n(()=>mr.value>0);function gr(){mr.value++}function _r(){mr.value--}function vr(e,t){window.dispatchEvent(new CustomEvent(e,{detail:t}))}function yr(e,t){let n=e=>t(e.detail);y(()=>window.addEventListener(e,n)),v(()=>window.removeEventListener(e,n))}function br(e,t){let r=n(()=>!e.value||!t.value?-1:e.value.findIndex(e=>e.videoUrl===t.value?.videoUrl)),i=n(()=>r.value===-1||!e.value?null:e.value[r.value+1]??null),a=n(()=>r.value<=0||!e.value?null:e.value[r.value-1]??null);return{hasNext:n(()=>i.value!==null),hasPrevious:n(()=>a.value!==null),nextEntry:i,previousEntry:a}}function xr(){return localStorage.getItem(B)===`true`}function Sr(e){localStorage.setItem(B,String(e))}const Cr=[`src`],wr={class:`stage__idle-body`},Tr={class:`stage__idle-btn`},Er={class:`stage__idle-title`},Dr={key:1,class:`stage__idle-empty`};var Or=Q(u({__name:`VideoStage`,props:{pinPosition:{type:String,required:!1,default:`bottom-right`},playlist:{type:Array,required:!1}},emits:[`state-change`],setup(t,{expose:s,emit:c}){let u=t,d=c,f=C(xr());D(f,Sr);let m=n(()=>!!u.playlist?.length),g=C(null),S=C(null),O=C(!1),A=C(!1),j=C(null),M=C(null),P=C(!1);x(ot,P);let{hasNext:F,hasPrevious:I,nextEntry:R,previousEntry:z}=br(T(u,`playlist`),S),B=n(()=>P.value&&!!S.value&&O.value),te=n(()=>N(S.value?.aspectRatio||`16:9`).cssRatio),V=C(null),H=C(null);D(P,e=>{V.value=e&&M.value?{height:M.value.offsetHeight,width:M.value.offsetWidth}:null});let U=n(()=>{if(!V.value)return{};let{height:e,width:t}=V.value,n=H.value&&t?H.value/t:1;return{height:`${Math.round(e*n)}px`}}),W=null,G=null;function K(){W?.disconnect(),G?.disconnect(),j.value&&(W=new IntersectionObserver(([e])=>{P.value=!e.isIntersecting},{threshold:1}),W.observe(j.value),G=new ResizeObserver(([e])=>{H.value=e.contentRect.width}),G.observe(j.value))}D(j,K);function ne(){S.value&&(S.value={...S.value,autoplay:!0},O.value=!0)}function re(){j.value?.scrollIntoView({behavior:`smooth`,block:`center`})}function ie(){S.value=null,O.value=!1,A.value=!1,P.value=!1,V.value=null,q()}function q(){vr(ee,{currentVideoUrl:S.value?.videoUrl??null,isPlaying:A.value})}function ae(e){if(S.value?.videoUrl===e.videoUrl&&O.value){g.value?.togglePlay();return}S.value=e,O.value=!1,A.value=!1,q(),O.value=!0}function oe(e){if(!(!S.value||e.videoUrl!==S.value.videoUrl)){if(!O.value){S.value={...S.value,autoplay:!0},O.value=!0;return}g.value?.togglePlay()}}function se(){R.value&&ae({...R.value,autoplay:!0})}function ce(){z.value&&ae({...z.value,autoplay:!0})}function le(e){e.type===`play`&&(A.value=!0),(e.type===`pause`||e.type===`ended`)&&(A.value=!1),e.type===`ended`&&f.value&&se(),q(),d(`state-change`,e)}return yr(L,ae),yr(`video-toggle`,oe),y(gr),v(()=>{_r(),W?.disconnect(),G?.disconnect()}),s({playNext:se,playPrevious:ce,hasNext:F,hasPrevious:I}),(n,s)=>(b(),a(`div`,{ref_key:`wrapperEl`,ref:j,class:`stage-wrapper`,style:_(U.value)},[o(`div`,{ref_key:`stageEl`,ref:M,class:h([`stage`,{"stage--minified":B.value,[`stage--pin-${t.pinPosition}`]:B.value}])},[B.value?(b(),a(`button`,{key:0,class:`stage__scroll-to`,"aria-label":`Scroll to player`,onClick:k(re,[`stop`])},[l(E(Et))])):i(`v-if`,!0),B.value?(b(),a(`button`,{key:1,class:`stage__dismiss`,"aria-label":`Close`,onClick:k(ie,[`stop`])},[l(E(vt))])):i(`v-if`,!0),S.value&&O.value?(b(),r(pr,p({ref_key:`playerRef`,ref:g,key:S.value.videoUrl},S.value,{"has-playlist":m.value,"has-next":E(F),"has-previous":E(I),"auto-advance":f.value,onStateChange:le,onPlayNext:se,onPlayPrevious:ce,onToggleAutoAdvance:s[0]||=e=>f.value=!f.value}),null,16,[`has-playlist`,`has-next`,`has-previous`,`auto-advance`])):(b(),a(`div`,{key:3,class:`stage__idle`,style:_({aspectRatio:te.value}),onClick:ne},[S.value?.poster?(b(),a(`img`,{key:0,src:S.value.poster,class:`stage__idle-poster`},null,8,Cr)):i(`v-if`,!0),s[1]||=o(`div`,{class:`stage__idle-scrim`},null,-1),o(`div`,wr,[S.value?(b(),a(e,{key:0},[o(`div`,Tr,[l(E(Xt))]),o(`p`,Er,w(S.value.title),1)],64)):(b(),a(`p`,Dr,`Select a video to play`))])],4))],2)],4))}}),[[`__scopeId`,`data-v-fb8c86cf`]]);const kr={class:`placeholder`},Ar=[`src`,`alt`],jr={class:`placeholder__btn-wrap`},Mr={key:1,class:`placeholder__footer`},Nr={class:`placeholder__title`};var Pr=Q(u({__name:`VideoPlaceholder`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1,default:``},poster:{type:String,required:!1,default:``},aspectRatio:{type:String,required:!1,default:G},adTagUrl:{type:String,required:!1,default:``},autoplay:{type:Boolean,required:!1,default:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1,default:!1},autoStage:{type:Boolean,required:!1,default:!1},lazy:{type:Boolean,required:!1},payload:{type:Object,required:!1,default:()=>({})},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1}},setup(e){let t=e,r=n(()=>N(t.aspectRatio)),s=n(()=>r.value.isPortrait),c=n(()=>r.value.cssRatio),u=C(!1),d=C(!1);yr(ee,e=>{u.value=e.currentVideoUrl===t.videoUrl,d.value=u.value&&e.isPlaying});function f(e){vr(L,{...t,...e!==void 0&&{autoplay:e}})}function p(){f(!0)}return y(()=>{t.autoStage&&f()}),(t,n)=>(b(),a(`div`,kr,[o(`div`,{class:h([`placeholder__shell`,{"placeholder__shell--portrait":s.value,"placeholder__shell--active":u.value}]),style:_({aspectRatio:c.value}),onClick:p},[e.poster?(b(),a(`img`,{key:0,class:`placeholder__poster`,src:e.poster,alt:e.title},null,8,Ar)):i(`v-if`,!0),n[0]||=o(`div`,{class:`placeholder__scrim`},null,-1),o(`div`,jr,[l($,{"is-playing":u.value&&d.value,size:`lg`,onTogglePlay:p},null,8,[`is-playing`])]),e.title?(b(),a(`div`,Mr,[o(`p`,Nr,w(e.title),1)])):i(`v-if`,!0)],6)]))}}),[[`__scopeId`,`data-v-dbcb4f82`]]),Fr=u({__name:`VideoItem`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1},poster:{type:String,required:!1},aspectRatio:{type:String,required:!1},adTagUrl:{type:String,required:!1},autoplay:{type:Boolean,required:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1},autoStage:{type:Boolean,required:!1},lazy:{type:Boolean,required:!1,default:!0},payload:{type:Object,required:!1},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1}},emits:[`state-change`],setup(t,{emit:n}){let i=t,o=n,s=C(!1);return(t,n)=>E(hr)?(b(),r(Pr,g(p({key:0},i)),null,16)):(b(),a(e,{key:1},[i.lazy&&!s.value&&!i.autoplay?(b(),r(Pr,p({key:0},i,{onClickCapture:n[0]||=e=>s.value=!0}),null,16)):(b(),r(pr,p({key:1},i,{autoplay:s.value||i.autoplay,onStateChange:n[1]||=e=>o(`state-change`,e)}),null,16,[`autoplay`]))],64))}});const Ir=d(pr,{shadowRoot:!1}),Lr=d(Or,{shadowRoot:!1}),Rr=d(Pr,{shadowRoot:!1}),zr=d(Fr,{shadowRoot:!1});customElements.define(`video-player`,Ir),customElements.define(`video-stage`,Lr),customElements.define(`video-placeholder`,Rr),customElements.define(`video-item`,zr);export{zr as VideoItemElement,Rr as VideoPlaceholderElement,Ir as VideoPlayerElement,Lr as VideoStageElement};
package/dist/index.d.mts CHANGED
@@ -103,21 +103,21 @@ declare const __VLS_export$3: import("vue").DefineComponent<__VLS_Props$1, {
103
103
  "onPlay-previous"?: (() => any) | undefined;
104
104
  "onToggle-auto-advance"?: (() => any) | undefined;
105
105
  }>, {
106
- nativeUi: boolean;
107
- autoplay: boolean;
106
+ hasNext: boolean;
107
+ hasPrevious: boolean;
108
108
  title: string;
109
109
  poster: string;
110
110
  aspectRatio: string;
111
111
  adTagUrl: string;
112
+ autoplay: boolean;
112
113
  muted: boolean;
114
+ nativeUi: boolean;
113
115
  autoStage: boolean;
114
116
  lazy: boolean;
115
117
  payload: Record<string, unknown>;
116
118
  action: PlayerAction | null;
117
119
  disableTapCapture: boolean;
118
120
  hasPlaylist: boolean;
119
- hasNext: boolean;
120
- hasPrevious: boolean;
121
121
  autoAdvance: boolean;
122
122
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
123
123
  declare const _default$2: typeof __VLS_export$3;
@@ -145,13 +145,13 @@ declare const _default$3: typeof __VLS_export$2;
145
145
  //#endregion
146
146
  //#region src/components/VideoPlaceholder.vue.d.ts
147
147
  declare const __VLS_export$1: import("vue").DefineComponent<PlayerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<PlayerProps> & Readonly<{}>, {
148
- nativeUi: boolean;
149
- autoplay: boolean;
150
148
  title: string;
151
149
  poster: string;
152
150
  aspectRatio: string;
153
151
  adTagUrl: string;
152
+ autoplay: boolean;
154
153
  muted: boolean;
154
+ nativeUi: boolean;
155
155
  autoStage: boolean;
156
156
  payload: Record<string, unknown>;
157
157
  action: PlayerAction | null;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{Fragment as e,Transition as t,computed as n,createBlock as r,createCommentVNode as i,createElementBlock as a,createElementVNode as o,createStaticVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,inject as d,mergeProps as f,nextTick as p,normalizeClass as m,normalizeProps as h,normalizeStyle as g,onBeforeUnmount as _,onMounted as v,openBlock as y,provide as b,reactive as x,ref as S,toDisplayString as C,toRef as w,unref as T,watch as E,withCtx as D,withModifiers as O}from"vue";function k(){return/iPad|iPhone|iPod/.test(navigator.userAgent)||/Mac/.test(navigator.userAgent)&&navigator.maxTouchPoints>1}function A(e){(e.requestFullscreen||e.webkitRequestFullscreen)?.call(e)}function j(){(document.exitFullscreen||document.webkitExitFullscreen)?.call(document)}function M(e){let[t,n]=e.split(`:`).map(Number);return{isPortrait:n>t,cssRatio:`${t}/${n}`}}function N(e){return!e||isNaN(e)?`0:00`:`${Math.floor(e/60)}:${String(Math.floor(e%60)).padStart(2,`0`)}`}function P(e,t=(...e)=>String(e[0])){let n={};return async(...r)=>{let i=t(...r);if(n[i])return n[i];let a=await e(...r);return n[i]=a,a}}function F(e){return e.filter(e=>e.src&&(e.type===`application/x-mpegURL`||e.type===`video/mp4`)).sort((e,t)=>e.type===`application/x-mpegURL`?-1:1)}const I=`video-select`,L=`video-state`,R=`fullscreen-pending`,z=`fullscreen-pending-done`,B=`player:autoAdvance`,V=`mvp-youtube`,ee=`mvp-vimeo`,H=`mvp-dailymotion`,U=`mvp-ad-playing`,W=`mvp-ad-paused`,G=`16:9`,K=[.5,.75,1,1.25,1.5,2],te=[[.25,`firstQuartile`],[.5,`midpoint`],[.75,`thirdQuartile`]];function ne(e){return e.match(/cdn\.jwplayer\.com\/videos\/([^-]+)/)?.[1]??e.match(/cdn\.jwplayer\.com\/manifests\/([^.]+)/)?.[1]??e.match(/^jwplayer:\/\/([^/]+)$/)?.[1]??null}function re(e){let t=e?.advertising?.schedule;return Array.isArray(t)&&t.length?t[0].tag??null:e?.advertising?.tag??null}const ie=P(async e=>{let t=await fetch(`https://cdn.jwplayer.com/v2/media/${e}`);if(!t.ok)throw Error(`JW Platform API error: ${t.status}`);let n=(await t.json()).playlist?.[0];if(!n)throw Error(`JW Platform: empty playlist`);let r=F((n.sources??[]).map(e=>({src:e.file,type:e.type})));if(!r.length)throw Error(`JW Platform: no playable sources found`);return{src:r[0].src,type:r[0].type,poster:n.image??null,adTagUrl:re(n)}});async function ae(e){let t=ne(e);if(!t)throw Error(`JW Platform: unrecognised source URL: ${e}`);let n=await ie(t);if(e.startsWith(`jwplayer://`))return n;let r=/\.mp4(\?|#|$)/.test(e)?`video/mp4`:`application/x-mpegURL`;return{...n,src:e,type:r}}function oe(e){let t;try{t=new URL(e)}catch{return null}if(t.hostname!==`players.brightcove.net`)return null;let[,n,r]=t.pathname.split(`/`),i=t.searchParams.get(`videoId`),a=r?.indexOf(`_`)??-1;return!n||a===-1||!i?null:{accountId:n,playerId:r.slice(0,a),embed:r.slice(a+1),videoId:i}}function se(e){return(e?.plugins??[]).find(e=>e.name===`ima3`)?.options?.serverUrl??null}const ce=P(async(e,t,n,r)=>{let i=await fetch(`https://players.brightcove.net/${e}/${t}_${n}/config.json`);if(!i.ok)throw Error(`Brightcove: could not load player config (${i.status})`);let a=await i.json(),o=r??a?.video_cloud?.policy_key;if(!o)throw Error(`Brightcove: policy_key not found in player config`);return{policyKey:o,adTagUrl:se(a)}},(e,t,n)=>`${e}/${t}_${n}`);async function le(e,t,n){let r=await fetch(`https://edge.api.brightcove.com/playback/v1/accounts/${e}/videos/${t}`,{headers:{Accept:`application/json;pk=${n}`}});if(!r.ok)throw Error(`Brightcove Playback API error: ${r.status}`);let i=await r.json(),a=F(i.sources||[]);if(!a.length)throw Error(`Brightcove: no playable sources found`);return{sources:a.map(e=>({src:e.src,type:e.type})),poster:i.poster??i.thumbnail??null}}async function ue(e,t){let n=oe(e);if(!n)throw Error(`Brightcove: invalid src — expected a Brightcove embed URL, e.g. "https://players.brightcove.net/{accountId}/{playerId}_{embed}/index.html?videoId={videoId}"`);let{accountId:r,playerId:i,embed:a,videoId:o}=n,{policyKey:s,adTagUrl:c}=await ce(r,i,a,t),{sources:l,poster:u}=await le(r,o,s);return{...l[0],poster:u,adTagUrl:c}}function de(){let e=new Map;function t(t,n){for(let r of Array.isArray(t)?t:[t])e.has(r)||e.set(r,new Set),e.get(r)?.add(n)}function n(t,n){e.get(t)?.delete(n)}function r(t,...n){e.get(t)?.forEach(e=>e(...n))}function i(){e.clear()}return{on:t,off:n,trigger:r,dispose:i}}const fe={};function pe(e,t=e){return fe[t]||(fe[t]=new Promise((t,n)=>{let r=document.createElement(`script`);r.src=e,r.onload=()=>t(),r.onerror=()=>n(Error(`Failed to load script: ${e}`)),document.head.appendChild(r)})),fe[t]}let me=0;function he(e,t){e.parentElement?.classList.add(t);let n=`${t}-${++me}`,r=document.createElement(`div`);r.id=n,r.className=`mvp-tech`,r.style.cssText=`width:100%;height:100%;top:0;left:0;position:absolute`;let i=document.createElement(`div`);return i.style.cssText=`width:100%;height:100%;position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity 0.2s`,i.appendChild(r),e.parentElement?.insertBefore(i,e),{techId:n,wrapper:i,innerDiv:r}}function ge(e,t){e.style.display=`none`,t.style.opacity=`1`,t.style.pointerEvents=``}function _e(e,t,n){t.remove(),e.parentElement?.classList.remove(n),e.style.display=``}function ve(e){return e.closest(`.player__shell`)}function ye(e){e.trigger(R);let t=document.createElement(`div`);t.style.cssText=`position:fixed;inset:0;z-index:99999;opacity:0;pointer-events:none`,document.body.appendChild(t);let n=!1;function r(){n||(e.trigger(z),t.style.opacity=`1`,t.style.pointerEvents=`auto`)}function i(r){n||(n=!0,e.trigger(z),t.remove(),r?.())}return{overlay:t,reveal:r,finish:i}}function be(e,t){return t===e.PlayerState.PLAYING||t===e.PlayerState.BUFFERING}function xe(e){let t={videoId:null,listId:null},n=e.match(/^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|shorts\/|&v=)([^#&?]*).*/);n?.[2]?.length===11&&(t.videoId=n[2]);let r=e.match(/[?&]list=([^#&?]+)/);return r?.[1]&&(t.listId=r[1]),t}let Se=!1,Ce=!1;const q=[];function we(){Ce||(Ce=!0,pe(`https://www.youtube.com/iframe_api`).then(()=>{window.YT?.ready(()=>{Se=!0,q.forEach(e=>e()),q.length=0})}))}function Te(e,t){we();let n=de(),{techId:r,wrapper:i}=he(e,V),a=xe(t.src),o=null,s=a.videoId,c=!1,l=!1,u=!1,d=null,f=!1,p=null,m=!1,h=new Set,g=null,_={active:!1,wasPaused:!1,timeBefore:0,catchUpInterval:null};function v(e,t=0){let n=setTimeout(()=>{h.delete(n),e()},t);h.add(n)}function y(){try{let e=o?.getPlayerResponse()?.adPlacements;return Array.isArray(e)&&e.length>0}catch{return!1}}function b(e){o?.loadVideoById({videoId:e})}function x(e){o?.cueVideoById({videoId:e})}function S(){a.videoId&&(_.wasPaused=!1,c?s===a.videoId?o?.playVideo():(b(a.videoId),s=a.videoId):(n.trigger(`waiting`),l=!0))}function C(){_.catchUpInterval&&clearInterval(_.catchUpInterval),_.active=!1,_.wasPaused&&o?.pauseVideo(),n.trigger(`seeked`)}function w(){m=(o?.getAvailablePlaybackRates()??[]).length>1,c=!0,t.muted&&o?.mute(),l?S():u&&a.videoId&&(x(a.videoId),s=a.videoId)}function T(e){if(e===d||p!==null)return;d=e;let t=y();t!==f&&(f=t,n.trigger(t?`adstart`:`adend`));let r=window.YT;if(r){switch(e){case-1:n.trigger(`loadstart`),n.trigger(`loadedmetadata`),n.trigger(`durationchange`),n.trigger(`ratechange`);break;case r.PlayerState.ENDED:n.trigger(`ended`);break;case r.PlayerState.PLAYING:n.trigger(`timeupdate`),n.trigger(`durationchange`),n.trigger(`playing`),n.trigger(`play`),_.active&&C();break;case r.PlayerState.PAUSED:n.trigger(`canplay`),_.active||n.trigger(`pause`);break;case r.PlayerState.BUFFERING:n.trigger(`waiting`);break;case r.PlayerState.CUED:n.trigger(`canplay`);break}g&&=(clearInterval(g),null),e===r.PlayerState.PLAYING&&(g=setInterval(()=>n.trigger(`timeupdate`),250))}}function E(){let e={controls:+!!t.nativeUi,modestbranding:1,rel:0,showinfo:0,mute:+!!t.muted,origin:window.location.origin,allowfullscreen:1,fullscreen:1,fs:1,playsinline:1,...t.customVars};s=a.videoId,o=new window.YT.Player(r,{videoId:s??void 0,playerVars:e,events:{onReady:w,onStateChange:e=>T(e.data),onPlaybackRateChange:()=>n.trigger(`ratechange`),onVolumeChange:()=>n.trigger(`volumechange`),onError:e=>{p=e.data,n.trigger(`error`),v(()=>{p=null})}}})}Se?E():q.push(E),t.autoplay?c?S():l=!0:a.videoId&&(u=!0);function D(){if(!o)return;let e=o.getCurrentTime(),{video_id:t}=o.getVideoData();o.pauseVideo();let{overlay:r,reveal:i,finish:a}=ye(n),s=document.createElement(`div`);s.id=`yt-fs-${Math.random().toString(36).slice(2)}`,r.appendChild(s);let c=null,l=()=>{a(()=>{let t=c?.getCurrentTime()??e;try{c?.destroy()}catch{}o?.seekTo(t,!0),n.trigger(`timeupdate`)})};c=new window.YT.Player(s.id,{videoId:t,playerVars:{playsinline:0,autoplay:1,controls:1,modestbranding:1,rel:0,start:Math.floor(e)},events:{onReady:t=>{i(),t.target.seekTo(e,!0),t.target.playVideo()},onStateChange:e=>{let t=window.YT;t&&(e.data===t.PlayerState.PAUSED||e.data===t.PlayerState.ENDED)&&l()}}})}function O(){if(k()&&o){D();return}let t=ve(e);t&&A(t)}function M(){j()}return{el:i,play:S,pause:()=>o?.pauseVideo(),paused:()=>{if(!o)return!0;let e=window.YT;return!e||!be(e,d)},currentTime:()=>o?.getCurrentTime()??0,setCurrentTime:e=>{if(!o)return;let t=window.YT;t&&d===t.PlayerState.PAUSED&&(_.timeBefore=o.getCurrentTime()),_.active||(_.wasPaused=!t||!be(t,d)),o.seekTo(e,!0),n.trigger(`timeupdate`),n.trigger(`seeking`),_.active=!0,t&&d===t.PlayerState.PAUSED&&_.timeBefore!==e&&(_.catchUpInterval&&clearInterval(_.catchUpInterval),_.catchUpInterval=setInterval(()=>{d!==t.PlayerState.PAUSED||!_.active?_.catchUpInterval&&clearInterval(_.catchUpInterval):o&&o.getCurrentTime()!==_.timeBefore&&(n.trigger(`timeupdate`),C())},250))},duration:()=>o?.getDuration()??0,volume:()=>o?o.getVolume()/100:1,setVolume:e=>o?.setVolume(e*100),muted:()=>o?.isMuted()??!1,setMuted:e=>{o&&(e?o.mute():o.unMute(),v(()=>n.trigger(`volumechange`),50))},playbackRate:()=>o?.getPlaybackRate()??1,setPlaybackRate:e=>o?.setPlaybackRate(e),bufferedEnd:()=>o?.getVideoLoadedFraction?o.getVideoLoadedFraction()*o.getDuration():0,error:()=>p===null?null:{code:p,message:`This video could not be played.`},setSrc:e=>{let t=xe(e);a.videoId=t.videoId,a.listId=t.listId,a.videoId&&(c?(b(a.videoId),s=a.videoId):u=!0)},featuresPlaybackRate:()=>m,enterFullscreen:O,exitFullscreen:M,on:n.on,off:n.off,dispose:()=>{if(h.forEach(clearTimeout),h.clear(),g&&clearInterval(g),_.catchUpInterval&&clearInterval(_.catchUpInterval),o)try{o.stopVideo(),o.destroy()}catch{}else{let e=q.indexOf(E);e!==-1&&q.splice(e,1)}o=null,_e(e,i,V),n.dispose()}}}function Ee(e){return e.match(/(?:vimeo\.com\/(?:video\/|channels\/[^/]+\/|groups\/[^/]+\/videos\/)?|player\.vimeo\.com\/video\/)(\d+)/)?.[1]??null}function De(e,t){let n=de(),{techId:r,wrapper:i}=he(e,ee),a=Ee(t.src),o=null,s=0,c=0,l=1,u=!1,d=!0,f=1,p=!1,m=!1,h=!1,g=null,_=new Set;function v(e,t=0){let n=setTimeout(()=>{_.delete(n),e()},t);_.add(n)}function y(){if(!o){m=!0;return}o.play().catch(()=>{})}function b(){t.muted&&o?.setMuted(!0).catch(()=>{}),m&&y()}async function x(e){if(await pe(`https://player.vimeo.com/api/player.js`,`vimeo`),h||!window.Vimeo)return;let i={id:Number(e),byline:!1,portrait:!1,title:!1,transparent:!0,controls:!!t.nativeUi,autopause:!1,...t.autoplay!==void 0&&{autoplay:t.autoplay},...t.muted!==void 0&&{muted:t.muted}};o=new window.Vimeo.Player(r,i),t.autoplay&&(m=!0),o.ready().then(b).catch(e=>{g={code:4,message:e?.message||`This video is unavailable or cannot be embedded here.`},n.trigger(`error`)}),o.on(`play`,()=>{d=!1,n.trigger(`play`),n.trigger(`playing`)}),o.on(`pause`,()=>{d=!0,n.trigger(`pause`)}),o.on(`ended`,()=>{d=!0,n.trigger(`ended`)}),o.on(`timeupdate`,e=>{let{seconds:t,duration:r}=e;s=t,c=r,n.trigger(`timeupdate`),r&&!p&&(p=!0,n.trigger(`durationchange`))}),o.on(`loaded`,()=>{p=!1,n.trigger(`loadedmetadata`),n.trigger(`durationchange`)}),o.on(`seeking`,e=>{s=e.seconds,n.trigger(`seeking`)}),o.on(`seeked`,e=>{s=e.seconds,n.trigger(`seeked`),n.trigger(`timeupdate`)}),o.on(`bufferstart`,()=>n.trigger(`waiting`)),o.on(`bufferend`,()=>n.trigger(`canplay`)),o.on(`volumechange`,e=>{l=e.volume,n.trigger(`volumechange`)}),o.on(`error`,()=>n.trigger(`error`))}a&&x(a);function S(){if(!k()){let t=ve(e);t&&A(t);return}o?.requestFullscreen().catch(()=>{})}function C(){j()}return{el:i,play:y,pause:()=>o?.pause().catch(()=>{}),paused:()=>d,currentTime:()=>s,setCurrentTime:e=>{o?.setCurrentTime(e).catch(()=>{}),n.trigger(`timeupdate`),n.trigger(`seeking`)},duration:()=>c,volume:()=>l,setVolume:e=>{l=e,o?.setVolume(e).catch(()=>{})},muted:()=>u,setMuted:e=>{u=e,o?.setMuted(e).then(()=>v(()=>n.trigger(`volumechange`),50)).catch(()=>{})},playbackRate:()=>f,setPlaybackRate:e=>{f=e,o?.setPlaybackRate(e).catch(()=>{}),n.trigger(`ratechange`)},bufferedEnd:()=>s,error:()=>g,setSrc:()=>{},featuresPlaybackRate:()=>!1,enterFullscreen:S,exitFullscreen:C,on:n.on,off:n.off,dispose:()=>{h=!0,_.forEach(clearTimeout),_.clear(),o?.destroy().catch(()=>{}),o=null,_e(e,i,ee),n.dispose()}}}function Oe(e){let t=e.match(/[?&]video=([a-zA-Z0-9]+)/);return t?t[1]:e.match(/(?:dailymotion\.com\/(?:embed\/)?video\/|dai\.ly\/)([a-zA-Z0-9]+)/)?.[1]??null}function ke(e,t){let n=de(),{techId:r,wrapper:i}=he(e,H),a=ve(e),o=Oe(t.src),s=typeof t.customVars?.playerId==`string`?t.customVars.playerId:void 0,c=null,l=0,u=0,d=1,f=!1,p=!0,m=!1,h=!1,g=null;async function _(){if(!o){g={code:4,message:`Could not parse video ID from source URL`},n.trigger(`error`);return}try{let e=await pe(s?`https://geo.dailymotion.com/libs/player/${s}.js`:`https://geo.dailymotion.com/libs/player.js`,s||`dailymotion-sdk`).then(()=>window.dailymotion);if(!e)return;let i=await e.createPlayer(r,{...s&&{player:s},video:o,params:{autoplay:!!t.autoplay,mute:!!t.muted}});c=i;let a=e.events;m&&i.play(),i.on(a.PLAYER_CRITICALPATHREADY,e=>{let t=e.videoThumbnails;if(!t)return;let r=Object.keys(t).map(Number).sort((e,t)=>t-e)[0],i=r===void 0?void 0:t[r];i&&n.trigger(`posterchange`,i)}),i.on(a.VIDEO_PLAY,()=>{p=!1,n.trigger(`play`),n.trigger(`playing`),!t.autoplay&&!h&&(h=!0,i.pause())}),i.on(a.VIDEO_PLAYING,()=>{p=!1,n.trigger(`play`),n.trigger(`playing`)}),i.on(a.VIDEO_PAUSE,()=>{p=!0,n.trigger(`pause`)}),a.VIDEO_BUFFERING&&i.on(a.VIDEO_BUFFERING,()=>n.trigger(`waiting`)),i.on(a.VIDEO_END,()=>{p=!0,n.trigger(`ended`)}),i.on(a.VIDEO_TIMECHANGE,e=>{l=e.videoTime??l,u=e.videoDuration??u,n.trigger(`timeupdate`)}),i.on(a.VIDEO_DURATIONCHANGE,e=>{u=e.videoDuration??u,n.trigger(`durationchange`)}),i.on(a.VIDEO_SEEKSTART,()=>n.trigger(`seeking`)),i.on(a.VIDEO_SEEKEND,e=>{l=e.videoTime??l,n.trigger(`seeked`)}),i.on(a.PLAYER_VOLUMECHANGE,e=>{d=e.playerVolume??d,f=e.playerIsMuted??f,n.trigger(`volumechange`)}),i.on(a.PLAYER_ERROR,()=>n.trigger(`error`)),a.AD_START&&i.on(a.AD_START,()=>{p=!1,n.trigger(`play`),n.trigger(`adstart`)}),a.AD_END&&i.on(a.AD_END,()=>n.trigger(`adend`))}catch(e){g={code:4,message:e instanceof Error?e.message:`This video could not be played.`},n.trigger(`error`)}}_();function v(){c?c.play():m=!0}function y(){if(k()){c?.setFullscreen(!0);return}a&&A(a)}function b(){if(k()){c?.setFullscreen(!1);return}j()}return{el:i,play:v,pause:()=>c?.pause(),paused:()=>p,currentTime:()=>l,setCurrentTime:e=>{l=e,c?.seek(e),n.trigger(`seeking`)},duration:()=>u,volume:()=>d,setVolume:e=>{d=e,c?.setVolume(e)},muted:()=>f,setMuted:e=>{f=e,c?.setMute(e)},playbackRate:()=>1,setPlaybackRate:()=>{},bufferedEnd:()=>l,error:()=>g,setSrc:()=>{},featuresPlaybackRate:()=>!1,enterFullscreen:y,exitFullscreen:b,on:n.on,off:n.off,dispose:()=>{c?.destroy?.(),c=null,_e(e,i,H),n.dispose()}}}const Ae=[{test:e=>/youtu\.be|youtube\.com/.test(e),key:`youtube`,embed:!0},{test:e=>/vimeo\.com|player\.vimeo\.com/.test(e),key:`vimeo`,embed:!0},{test:e=>/dailymotion\.com|dai\.ly/.test(e),key:`dailymotion`,embed:!0},{test:e=>/cdn\.jwplayer\.com/.test(e)||e.startsWith(`jwplayer://`),key:`jwplayer`,embed:!1},{test:e=>/players\.brightcove\.net/.test(e),key:`brightcove`,embed:!1}];function je(e){return Ae.find(t=>t.test(e))?.key??`html5`}function Me(e){if(/\.m3u8(\?|#|$)/.test(e))return`application/x-mpegURL`;if(/\.mp4(\?|#|$)/.test(e))return`video/mp4`}function Ne(e){return Ae.find(t=>t.test(e))?.embed??!1}const Pe={youtube:Te,vimeo:De,dailymotion:ke};function Fe(e,t,n){let r=Pe[je(e)];return r?r(t,n):null}async function Ie(e){let t=je(e);return t===`jwplayer`?ae(e):t===`brightcove`?ue(e):{src:e,type:Me(e)}}const Le=[`play`,`pause`,`ended`,`error`,`timeupdate`,`durationchange`,`progress`,`volumechange`,`ratechange`,`seeking`,`seeked`,`waiting`,`playing`,`canplay`];function Re(e,t){let n=de(),r=null,i=!1,a=null;async function o(t){let{default:n}=await import(`hls.js`);if(!(i||a!==t)){if(!n.isSupported()){e.src=t;return}r=new n({liveDurationInfinity:!0}),r.loadSource(t),r.attachMedia(e)}}function s(t,n){if(r?.destroy(),r=null,a=null,n===`application/x-mpegURL`){a=t,o(t);return}e.src=t}let c=e=>()=>n.trigger(e),l=Le.map(e=>[e,c(e)]);for(let[t,n]of l)e.addEventListener(t,n);let u=[[`webkitbeginfullscreen`,c(`nativefullscreenenter`)],[`webkitendfullscreen`,c(`nativefullscreenexit`)]];for(let[t,n]of u)e.addEventListener(t,n);e.poster=t.poster??``,e.muted=t.muted??t.autoplay??!1,e.playbackRate=t.playbackRate??1,e.playsInline=!0,s(t.src,t.type),t.autoplay&&e.play();function d(){let t=e;if(typeof t.webkitEnterFullscreen==`function`){t.webkitEnterFullscreen();return}let n=e.closest(`.player__shell`);n instanceof HTMLElement&&A(n)}function f(){let t=e;if(typeof t.webkitExitFullscreen==`function`){t.webkitExitFullscreen();return}j()}return{el:e,play:()=>e.play(),pause:()=>e.pause(),paused:()=>e.paused,currentTime:()=>e.currentTime,setCurrentTime:t=>{e.currentTime=t},duration:()=>e.duration,volume:()=>e.volume,setVolume:t=>{e.volume=t},muted:()=>e.muted,setMuted:t=>{e.muted=t},playbackRate:()=>e.playbackRate,setPlaybackRate:t=>{e.playbackRate=t},bufferedEnd:()=>{let{buffered:t,duration:n}=e;if(!t.length)return 0;let r=t.end(t.length-1);return n&&r>n?n:r},error:()=>{let t=e.error;return t?{code:t.code,message:t.message||`This video could not be played.`}:null},setSrc:s,featuresPlaybackRate:()=>!0,enterFullscreen:d,exitFullscreen:f,on:n.on,off:n.off,dispose:()=>{i=!0,r?.destroy();for(let[t,n]of l)e.removeEventListener(t,n);for(let[t,n]of u)e.removeEventListener(t,n);n.dispose()}}}function ze(){return window.google?.ima?Promise.resolve():new Promise((e,t)=>{let n=document.createElement(`script`);n.src=`https://imasdk.googleapis.com/js/sdkloader/ima3.js`,n.onload=()=>e(),n.onerror=()=>t(Error(`Failed to load Google IMA SDK`)),document.head.appendChild(n)})}function Be(e,t,n,r){let i=document.createElement(`div`);i.className=`ima-ad-container`,e.appendChild(i);let a=null,o=null,s=null,c=!1,l=!1,u=!1,d=!1,f=!1,p=!1,m=1,h=new ResizeObserver(([e])=>{let t=window.google?.ima;if(!s||!t)return;let{width:n,height:r}=e.contentRect;s.resize(n,r,t.ViewMode.NORMAL)});h.observe(t);function g(){o?.contentComplete()}function _(t){d=t,e.classList.toggle(U,t),t||(f=!1,e.classList.remove(W))}function v(){if(c||!l||!u||!a||!o)return;c=!0;let e=window.google?.ima;if(!e)return;a.initialize();let t=new e.AdsRequest;t.adTagUrl=n,o.requestAds(t)}ze().then(()=>{if(p)return;let n=window.google?.ima;n&&(a=new n.AdDisplayContainer(i,t),o=new n.AdsLoader(a),l=!0,o.addEventListener(n.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,i=>{if(p)return;let a=new n.AdsRenderingSettings;a.restoreCustomPlaybackStateOnAdBreakComplete=!0,s=i.getAdsManager(t,a),t.addEventListener(`ended`,g),s.addEventListener(n.AdEvent.Type.CONTENT_PAUSE_REQUESTED,()=>{t.removeEventListener(`ended`,g),t.pause(),_(!0),r.onAdStart();let e=s?.getVolume()??1;e>0&&(m=e),r.onAdMuteChange(e===0)}),s.addEventListener(n.AdEvent.Type.CONTENT_RESUME_REQUESTED,()=>{t.addEventListener(`ended`,g),_(!1),r.onAdEnd(),t.ended||t.play()}),s.addEventListener(n.AdEvent.Type.PAUSED,()=>{f=!0,e.classList.add(W),r.onAdPauseChange(!0)}),s.addEventListener(n.AdEvent.Type.RESUMED,()=>{f=!1,e.classList.remove(W),r.onAdPauseChange(!1)}),s.addEventListener(n.AdEvent.Type.AD_PROGRESS,()=>{r.onAdProgress(s?.getRemainingTime()??0)}),s.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{_(!1),r.onError(e.getError().getMessage()),t.play()});try{s.init(t.clientWidth,t.clientHeight,n.ViewMode.NORMAL),s.start()}catch(e){r.onError(e instanceof Error?e.message:`Ad playback failed to start.`)}}),o.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{r.onError(e.getError().getMessage())}),v())}).catch(e=>r.onError(e.message));function y(){u=!0,v()}function b(){if(!s)return;let e=s.getVolume();e>0?(m=e,s.setVolume(0)):s.setVolume(m||1),r.onAdMuteChange(s.getVolume()===0)}return{isAdPlaying:()=>d,isAdPaused:()=>f,requestAdsOnFirstPlay:y,pauseAd:()=>s?.pause(),resumeAd:()=>s?.resume(),toggleAdMute:b,dispose:()=>{p=!0,h.disconnect(),t.removeEventListener(`ended`,g),s?.destroy(),o?.destroy(),i.remove(),e.classList.remove(U,W)}}}const Ve=new Set;function He(e){return Ve.add(e),()=>Ve.delete(e)}function Ue(e){Ve.forEach(t=>{if(t!==e)try{t()}catch{}})}function We(e){let t=S(!1),n=S(!1);function r(){let e=document;t.value=!!(document.fullscreenElement||e.webkitFullscreenElement),n.value=!1}function i(){let n=e();if(n){if(t.value){n.exitFullscreen();return}n.enterFullscreen()}}function a(){n.value=!0}function o(e){e.on(R,()=>{n.value=!0}),e.on(z,()=>{n.value=!1}),e.on(`nativefullscreenenter`,()=>{t.value=!0,n.value=!1}),e.on(`nativefullscreenexit`,()=>{t.value=!1,n.value=!1})}return v(()=>{document.addEventListener(`fullscreenchange`,r),document.addEventListener(`webkitfullscreenchange`,r)}),_(()=>{document.removeEventListener(`fullscreenchange`,r),document.removeEventListener(`webkitfullscreenchange`,r)}),{isFullscreen:t,isFullscreenPending:n,toggleFullscreen:i,markFullscreenPending:a,attachPlayerEvents:o}}function Ge(){let e=S(!1),t=null;function n(){clearTimeout(t??void 0),e.value=!1}function r(r){r.on(`waiting`,()=>{clearTimeout(t??void 0),t=setTimeout(()=>{e.value=!0},500)}),r.on(`playing`,n),r.on(`canplay`,n)}return _(()=>clearTimeout(t??void 0)),{isBuffering:e,attachPlayerEvents:r,reset:n}}function Ke(e,t,n){let r=new Set;function i(){if(!t.value)return;let i=e.value/t.value;for(let[e,t]of te)!r.has(e)&&i>=e&&(r.add(e),n(t))}function a(){r.clear()}return{checkQuartiles:i,reset:a}}function qe(){try{return JSON.parse(localStorage.getItem(`player:positions`)??`[]`)}catch{return[]}}function Je(e){localStorage.setItem(`player:positions`,JSON.stringify(e))}function Ye(e,t){if(t<5)return;let n=qe().filter(t=>t.url!==e);n.unshift({url:e,time:t}),Je(n.slice(0,5))}function Xe(e){return qe().find(t=>t.url===e)?.time??null}function Ze(e){Je(qe().filter(t=>t.url!==e))}function Qe(e,t,n){let r=!1;function i(t){if(r)return;let n=Xe(e);n&&t.setCurrentTime(n),r=!0}function a(t){!t||n.value||Ye(e,t.currentTime()??0)}function o(){Ze(e)}function s(){document.visibilityState===`hidden`&&a(t())}return v(()=>document.addEventListener(`visibilitychange`,s)),_(()=>{a(t()),document.removeEventListener(`visibilitychange`,s)}),{restoreOnce:i,save:a,clear:o}}function $e(e,t,n,r){let i=null;v(()=>{let a=e.value?.closest(`.player__shell`);a&&(i=new IntersectionObserver(([e])=>{let i=t();!e.isIntersecting&&i&&!i.paused()&&!n.value&&!r.value&&i.pause()},{threshold:.1}),i.observe(a))}),_(()=>i?.disconnect())}function et(e,t,n,r,i,a){function o(){let n=e();if(!(!n||!t.value)){if(!a.value){n.play();return}n.pause()}}function s(t){e()?.setCurrentTime(n.value*(t/100))}function c(){let t=e();t?.setMuted(!t.muted())}function l(t){let n=e();n&&(n.setVolume(t),n.setMuted(t===0))}function u(){r.value=!r.value}function d(t){let n=e();n&&(n.setPlaybackRate(t),i.value=t)}return{togglePlay:o,seek:s,toggleMute:c,setVolume:l,toggleLoop:u,setPlaybackRate:d}}function tt(e,t){let{isPlaying:n,hasEnded:r,isReady:i,isAdPlaying:a,isLive:o,current:s,total:c,buffered:l,vol:u,isMuted:d,isLooping:f,playbackRate:p,supportsPlaybackRate:m,hasStarted:h,isError:g,errorMessage:_}=e,{fire:v,pauseThisPlayer:y,positionMemory:b,quartiles:x,buffering:S,fullscreen:C}=t;function w(e){i.value=!0,m.value=e.featuresPlaybackRate();let t=()=>{let t=e.duration();if(t===1/0){o.value=!0;return}o.value=!1,t&&t>0&&isFinite(t)&&(c.value=t)};e.on(`adstart`,()=>{Ue(y),a.value=!0,v(`adstart`)}),e.on(`adend`,()=>{a.value=!1,v(`adend`)}),e.on(`play`,()=>{Ue(y),h.value=!0,n.value=!0,r.value=!1,o.value||b.restoreOnce(e),v(`play`)}),e.on(`pause`,()=>{n.value=!1,o.value||b.save(e),v(`pause`)}),e.on(`ended`,()=>{if(n.value=!1,x.reset(),S.reset(),f.value){e.setCurrentTime(0),e.play();return}c.value&&(s.value=c.value),r.value=!0,b.clear(),v(`ended`)}),e.on(`seeked`,()=>{v(`seeked`)}),e.on(`error`,()=>{let t=e.error();_.value=t?.message||`This video could not be played.`,g.value=!0,i.value=!0,v(`error`,{error:t})}),e.on(`timeupdate`,()=>{r.value||(s.value=e.currentTime()??0,c.value||t(),m.value||=e.featuresPlaybackRate(),o.value||x.checkQuartiles())}),e.on(`durationchange`,t),e.on(`progress`,()=>{let t=e.duration();l.value=t?e.bufferedEnd()/t*100:0}),e.on(`volumechange`,()=>{let t=e.muted();u.value=e.volume()??1,d.value=t??!1,h.value&&v(`volumechange`,{isMuted:t})}),e.on(`ratechange`,()=>{let t=e.playbackRate()??1;p.value=t,h.value&&v(`ratechange`,{playbackRate:t})}),S.attachPlayerEvents(e),C.attachPlayerEvents(e)}return{attachPlayerEvents:w}}function nt(e,t,r){let i=null,a=null,o=null,s=null,c=S(!1),l=S(!1),u=S(!1),d=S(!1),f=S(!1),p=S(!1),m=S(0),h=S(!1),g=S(0),y=S(0),b=S(0),x=S(1),C=S(t.muted??t.autoplay??!1),w=S(!1),T=S(t.playbackRate??1),D=S(!1),O=S(!1),k=S(!1),A=S(``),j=S(!1),M=n(()=>y.value?g.value/y.value*100:0),P=n(()=>Math.max(b.value,M.value)),F=()=>i,I=We(F),L=Ge(),R=Qe(t.videoUrl,F,l);function z(e,n={}){r(`state-change`,{type:e,currentTime:g.value,duration:y.value,src:t.videoUrl,...n,payload:t.payload})}let B=Ke(g,y,z);function V(){!i||!s||(k.value=!1,A.value=``,i.setSrc(s.src,s.type))}function ee(){a?.toggleAdMute()}function H(){if(a?.isAdPlaying()){a.pauseAd();return}i?.pause()}function U(){if(a?.isAdPlaying()){a.isAdPaused()?a.resumeAd():a.pauseAd();return}W.togglePlay()}let W=et(F,u,y,w,T,c),{attachPlayerEvents:G}=tt({isPlaying:c,hasEnded:l,isReady:u,isAdPlaying:d,isLive:h,current:g,total:y,buffered:b,vol:x,isMuted:C,isLooping:w,playbackRate:T,supportsPlaybackRate:D,hasStarted:O,isError:k,errorMessage:A},{fire:z,pauseThisPlayer:H,positionMemory:R,quartiles:B,buffering:L,fullscreen:I});return E(()=>t.muted,e=>{!i||e===void 0||i.setMuted(e)}),E(()=>t.playbackRate,e=>{!i||e===void 0||i.setPlaybackRate(e)}),$e(e,F,I.isFullscreen,I.isFullscreenPending),E(O,t=>{!t||!e.value||!i||i.el===e.value||ge(e.value,i.el)}),v(async()=>{if(Ne(t.videoUrl)){if(!e.value)return;let n=Fe(t.videoUrl,e.value,{src:t.videoUrl,poster:t.poster,autoplay:t.autoplay,muted:t.muted??t.autoplay,nativeUi:t.nativeUi});if(!n){k.value=!0,u.value=!0,A.value=`This platform is not yet supported.`;return}j.value=!!t.nativeUi,i=n,s={src:t.videoUrl},o=He(H),G(i);return}let n=await Ie(t.videoUrl).catch(()=>({src:t.videoUrl}));if(!e.value)return;s={src:n.src,type:n.type},i=Re(e.value,{src:n.src,type:n.type,poster:n.poster||t.poster||``,autoplay:t.autoplay,muted:t.muted??t.autoplay,playbackRate:T.value});let r=t.adTagUrl||n.adTagUrl||``;r&&e.value.parentElement&&(a=Be(e.value.parentElement,e.value,r,{onAdStart:()=>{d.value=!0,f.value=!1,z(`adstart`)},onAdEnd:()=>{d.value=!1,f.value=!1,m.value=0,z(`adend`)},onAdPauseChange:e=>{f.value=e,e||Ue(H)},onAdMuteChange:e=>{p.value=e},onAdProgress:e=>{m.value=e},onError:e=>{d.value=!1,f.value=!1,m.value=0,console.error(`Ad playback error for ${r}:`,e)}}),i.on(`play`,()=>a?.requestAdsOnFirstPlay())),o=He(H),G(i)}),_(()=>{o?.(),a?.dispose(),a=null,i?.dispose(),i=null}),{isPlaying:c,hasEnded:l,isReady:u,isAdPlaying:d,isAdPaused:f,isAdMuted:p,adRemainingTime:m,isLive:h,isBuffering:L.isBuffering,current:g,total:y,vol:x,isMuted:C,isLooping:w,playbackRate:T,hasStarted:O,isError:k,errorMessage:A,progress:M,bufferedDisplay:P,isFullscreen:I.isFullscreen,isFullscreenPending:I.isFullscreenPending,fmt:N,fire:z,retry:V,togglePlay:U,seek:W.seek,toggleMute:W.toggleMute,setVolume:W.setVolume,toggleFullscreen:I.toggleFullscreen,markFullscreenPending:I.markFullscreenPending,toggleLoop:W.toggleLoop,toggleAdMute:ee,setPlaybackRate:W.setPlaybackRate,supportsPlaybackRate:D,nativeUi:j}}function rt(e){let t=S(!0),n=S(!1),r=null,i=0;function a(e=400){i=Date.now()+e}function o(e=3500){clearTimeout(r??void 0),r=setTimeout(()=>{t.value=!1,n.value=!1},e)}function s(){clearTimeout(r??void 0)}function c(){n.value=!0,t.value=!0,o()}function l(){n.value=!1,e.value&&o()}function u(){e.value&&o()}function d(){t.value=!0,e.value&&o()}function f(){t.value=!0,o()}function p(){Date.now()<i||e.value&&o(600)}return E(e,e=>{if(!e){clearTimeout(r??void 0),t.value=!0;return}o()}),_(()=>clearTimeout(r??void 0)),{showHUD:t,isOpen:n,scheduleHide:o,pauseHide:s,onVideoTap:d,onMouseMove:f,onMouseLeave:p,openControls:c,closeControls:l,keepOpen:u,suppressMouseLeave:a}}const J=Symbol(`player`),Y=Symbol(`hud`),it=Symbol(`action`),at=Symbol(`compact`),X=Symbol(`playlist`);function Z(e){let t=d(e);if(t===void 0)throw Error(`[video-player] missing "${String(e.description)}" context — this component must be rendered inside <VideoPlayer>`);return t}function ot(e,t){return{hudVisible:n(()=>!e.isReady||e.isError?!1:t.showHUD),popupVisible:n(()=>!e.isReady||e.isError?!1:e.isFullscreen?t.showHUD:t.isOpen)}}function st(e,t){return n(()=>!(!e?.value||t.isFullscreen))}function ct(e,t,r){let i=n(()=>e?.value??null),a=n(()=>!!i.value&&typeof i.value==`object`),o=n(()=>a.value?i.value:null),s=n(()=>i.value===`mute`?t.isMuted?`Unmute`:`Mute`:i.value===`loop`?t.isLooping?`Disable loop`:`Loop`:i.value===`autoplay`?r.autoAdvance?`Disable autoplay next`:`Autoplay next`:``),c=n(()=>i.value===`mute`?t.isMuted:i.value===`loop`?t.isLooping:i.value===`autoplay`&&r.autoAdvance);function l(){i.value===`mute`?t.toggleMute():i.value===`loop`?t.toggleLoop():i.value===`autoplay`&&r.toggleAutoAdvance()}return{currentAction:i,isCustom:a,customAction:o,builtinLabel:s,builtinActive:c,onBuiltinClick:l}}var Q=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n};const lt={},ut={viewBox:`0 0 24 24`,fill:`currentColor`};function dt(e,t){return y(),a(`svg`,ut,[...t[0]||=[o(`path`,{d:`M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z`},null,-1)]])}var ft=Q(lt,[[`render`,dt]]);const pt={},mt={viewBox:`0 0 24 24`,fill:`currentColor`};function ht(e,t){return y(),a(`svg`,mt,[...t[0]||=[o(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`},null,-1)]])}var gt=Q(pt,[[`render`,ht]]);const _t={},vt={viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function yt(e,t){return y(),a(`svg`,vt,[...t[0]||=[s(`<line x1="4" y1="6" x2="20" y2="6"></line><line x1="4" y1="12" x2="20" y2="12"></line><line x1="4" y1="18" x2="20" y2="18"></line><circle cx="9" cy="6" r="2.5" fill="currentColor" stroke="none"></circle><circle cx="15" cy="12" r="2.5" fill="currentColor" stroke="none"></circle><circle cx="9" cy="18" r="2.5" fill="currentColor" stroke="none"></circle>`,6)]])}var bt=Q(_t,[[`render`,yt]]);const xt={},St={viewBox:`0 0 24 24`,fill:`currentColor`};function Ct(e,t){return y(),a(`svg`,St,[...t[0]||=[o(`path`,{d:`M4 12l1.41 1.41L11 7.83V20h2V7.83l5.59 5.58L20 12l-8-8-8 8z`},null,-1)]])}var wt=Q(xt,[[`render`,Ct]]);const Tt={},Et={viewBox:`0 0 24 24`,fill:`currentColor`};function Dt(e,t){return y(),a(`svg`,Et,[...t[0]||=[o(`path`,{d:`M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z`},null,-1)]])}var Ot=Q(Tt,[[`render`,Dt]]);const kt={},At={viewBox:`0 0 24 24`,fill:`currentColor`};function jt(e,t){return y(),a(`svg`,At,[...t[0]||=[o(`path`,{d:`M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z`},null,-1)]])}var Mt=Q(kt,[[`render`,jt]]);const Nt={},Pt={viewBox:`0 0 24 24`,fill:`currentColor`};function Ft(e,t){return y(),a(`svg`,Pt,[...t[0]||=[o(`path`,{d:`M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z`},null,-1)]])}var It=Q(Nt,[[`render`,Ft]]);const Lt={},Rt={viewBox:`0 0 24 24`,fill:`currentColor`};function zt(e,t){return y(),a(`svg`,Rt,[...t[0]||=[o(`circle`,{cx:`5`,cy:`12`,r:`2`},null,-1),o(`circle`,{cx:`12`,cy:`12`,r:`2`},null,-1),o(`circle`,{cx:`19`,cy:`12`,r:`2`},null,-1)]])}var Bt=Q(Lt,[[`render`,zt]]);const Vt={},Ht={viewBox:`0 0 24 24`,fill:`currentColor`};function Ut(e,t){return y(),a(`svg`,Ht,[...t[0]||=[o(`path`,{d:`M6 19h4V5H6v14zm8-14v14h4V5h-4z`},null,-1)]])}var Wt=Q(Vt,[[`render`,Ut]]);const Gt={},Kt={viewBox:`0 0 24 24`,fill:`currentColor`};function qt(e,t){return y(),a(`svg`,Kt,[...t[0]||=[o(`path`,{d:`M8 5v14l11-7z`},null,-1)]])}var Jt=Q(Gt,[[`render`,qt]]);const Yt={},Xt={viewBox:`0 0 24 24`,fill:`currentColor`};function Zt(e,t){return y(),a(`svg`,Xt,[...t[0]||=[o(`path`,{d:`M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z`},null,-1)]])}var Qt=Q(Yt,[[`render`,Zt]]);const $t={},en={viewBox:`0 0 24 24`,fill:`currentColor`};function tn(e,t){return y(),a(`svg`,en,[...t[0]||=[o(`path`,{d:`M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z`},null,-1)]])}var nn=Q($t,[[`render`,tn]]);const rn={},an={viewBox:`0 0 24 24`,fill:`currentColor`};function on(e,t){return y(),a(`svg`,an,[...t[0]||=[o(`path`,{d:`M16.5 12A4.5 4.5 0 0 0 14 7.97v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51A8.796 8.796 0 0 0 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.06A8.99 8.99 0 0 0 17.73 18L19 19.27 20.27 18 5.27 3 4.27 3zM12 4L9.91 6.09 12 8.18V4z`},null,-1)]])}var sn=Q(rn,[[`render`,on]]);const cn={},ln={viewBox:`0 0 24 24`,fill:`currentColor`};function un(e,t){return y(),a(`svg`,ln,[...t[0]||=[o(`path`,{d:`M3 9v6h4l5 5V4L7 9H3zm13.5 3A4.5 4.5 0 0 0 14 7.97v8.05c1.48-.73 2.5-2.25 2.5-4.02z`},null,-1)]])}var dn=Q(cn,[[`render`,un]]);const fn=[`aria-label`];var $=Q(u({__name:`PlayPauseButton`,props:{isPlaying:{type:Boolean,required:!0},hasEnded:{type:Boolean,required:!1,default:!1},size:{type:String,required:!1,default:`sm`}},emits:[`toggle-play`],setup(e){let t=e,i=n(()=>t.isPlaying?`Pause`:t.hasEnded?`Replay`:`Play`);return(t,n)=>(y(),a(`button`,{class:m([`ppbtn`,`ppbtn--${e.size}`]),"aria-label":i.value,onClick:n[0]||=O(e=>t.$emit(`toggle-play`),[`stop`])},[e.isPlaying?(y(),r(T(Wt),{key:0})):e.hasEnded?(y(),r(T(Qt),{key:1})):(y(),r(T(Jt),{key:2}))],10,fn))}}),[[`__scopeId`,`data-v-85902525`]]),pn=u({__name:`VolumeIcon`,setup(e){let t=Z(J),i=n(()=>!t.isMuted&&t.vol>0);return(e,t)=>i.value?(y(),r(T(dn),{key:0})):(y(),r(T(sn),{key:1}))}}),mn=Q(u({__name:`Spinner`,props:{size:{type:Number,required:!1,default:14},borderWidth:{type:Number,required:!1,default:2}},setup(e){return(t,n)=>(y(),a(`div`,{class:`spinner`,style:g({width:`${e.size}px`,height:`${e.size}px`,borderWidth:`${e.borderWidth}px`})},null,4))}}),[[`__scopeId`,`data-v-259be2b2`]]);const hn={class:`hud`},gn=[`aria-label`],_n=[`aria-label`],vn=[`aria-label`],yn=[`aria-label`,`innerHTML`],bn={key:4,class:`hud__spacer`},xn={class:`hud__play-wrap`};var Sn=Q(u({__name:`HudButtons`,setup(t){let n=Z(J),s=Z(Y),{currentAction:c,isCustom:u,customAction:f,builtinLabel:p,builtinActive:h,onBuiltinClick:g}=ct(d(it),n,Z(X));return(t,d)=>(y(),a(`div`,hn,[!T(s).isOpen&&!T(n).isFullscreen?(y(),a(e,{key:0},[T(c)===`mute`?(y(),a(`button`,{key:0,class:m([`hud__btn`,{"hud__btn--active":T(h)}]),"aria-label":T(p),onClick:d[0]||=O((...e)=>T(g)&&T(g)(...e),[`stop`])},[l(pn)],10,gn)):T(c)===`loop`?(y(),a(`button`,{key:1,class:m([`hud__btn`,{"hud__btn--active":T(h)}]),"aria-label":T(p),onClick:d[1]||=O((...e)=>T(g)&&T(g)(...e),[`stop`])},[l(T(It))],10,_n)):T(c)===`autoplay`?(y(),a(`button`,{key:2,class:m([`hud__btn`,{"hud__btn--active":T(h)}]),"aria-label":T(p),onClick:d[2]||=O((...e)=>T(g)&&T(g)(...e),[`stop`])},[l(T(nn))],10,vn)):T(u)&&T(f)?(y(),a(`button`,{key:3,class:`hud__btn`,"aria-label":T(f).label,onClick:d[3]||=O(e=>T(f).onClick(),[`stop`]),innerHTML:T(f).icon},null,8,yn)):(y(),a(`div`,bn))],64)):i(`v-if`,!0),o(`div`,xn,[l($,{"is-playing":T(n).isPlaying,"has-ended":T(n).hasEnded,size:`lg`,onTogglePlay:T(n).togglePlay},null,8,[`is-playing`,`has-ended`,`onTogglePlay`]),T(n).isBuffering?(y(),r(mn,{key:0,class:`hud__buf-spinner`})):i(`v-if`,!0)]),!T(s).isOpen&&!T(n).isFullscreen?(y(),a(`button`,{key:1,class:`hud__btn`,"aria-label":`Show controls`,onClick:d[4]||=O((...e)=>T(s).openControls&&T(s).openControls(...e),[`stop`])},[l(T(bt))])):i(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-a6d118e7`]]);function Cn(e){let t=S(null),r=n(()=>t.value??e.progress),i=null;function a(){i&&clearTimeout(i),i=null,t.value=null}function o(e){i&&clearTimeout(i),i=null,t.value=Number(e.target.value)}function s(n){let r=Number(n.target.value);t.value=r,e.seek(r),i&&clearTimeout(i),i=setTimeout(a,3e3)}return E(()=>e.current,()=>{if(t.value===null||!e.total)return;let n=t.value/100*e.total;Math.abs(e.current-n)<1&&a()}),_(a),{displaySeek:r,onSeekInput:o,onSeekChange:s}}function wn(e,t,n){if(!document.startViewTransition||!e.value){n();return}e.value.style.viewTransitionName=t,document.startViewTransition(async()=>{n(),await p()}).finished.finally(()=>{e.value&&(e.value.style.viewTransitionName=``)})}const Tn={class:`controls__vol-header`},En=[`aria-label`],Dn={class:`controls__vol-body`},On=[`value`],kn={class:`controls__vol-pct`};var An=Q(u({__name:`VolumePanel`,emits:[`back`],setup(t){let r=Z(J),i=Z(Y),s=n(()=>r.isMuted?0:Math.round(r.vol*100));function c(e){r.setVolume(Number(e.target.value)/100)}return(t,n)=>(y(),a(e,null,[o(`div`,Tn,[o(`button`,{class:`controls__btn`,"aria-label":`Back`,onClick:n[0]||=e=>t.$emit(`back`)},[l(T(ft))]),n[6]||=o(`span`,{class:`controls__vol-label`},`Volume`,-1),o(`button`,{class:`controls__btn`,"aria-label":T(r).isMuted?`Unmute`:`Mute`,onClick:n[1]||=e=>T(r).toggleMute()},[l(pn)],8,En)]),o(`div`,Dn,[o(`input`,{type:`range`,min:`0`,max:`100`,step:`1`,value:s.value,class:`controls__vol-slider`,style:g({"--v":s.value+`%`}),"aria-label":`Volume`,onInput:c,onMousedown:n[2]||=e=>T(i).pauseHide(),onMouseup:n[3]||=e=>T(i).scheduleHide(),onTouchstartPassive:n[4]||=e=>T(i).pauseHide(),onTouchend:n[5]||=e=>T(i).scheduleHide()},null,44,On),o(`span`,kn,C(s.value)+`%`,1)])],64))}}),[[`__scopeId`,`data-v-10b0ae67`]]);function jn(e){function t(){let t=K.indexOf(e.playbackRate);e.setPlaybackRate(K[(t+1)%K.length])}function n(e){return`${e}×`}return{cycleRate:t,fmtRate:n}}const Mn={class:`controls__more-header`},Nn={class:`controls__more-body`},Pn={class:`controls__more-value`},Fn={class:`controls__more-row-label`},In={class:`controls__more-value`},Ln={class:`controls__more-row-label`},Rn={class:`controls__more-value`},zn=[`aria-label`],Bn={class:`controls__more-row-label`},Vn=[`innerHTML`];var Hn=Q(u({__name:`MoreMenu`,props:{isCustom:{type:Boolean,required:!0},customAction:{type:[Object,null],required:!0}},emits:[`back`],setup(t){let n=Z(J),r=Z(X),{cycleRate:s,fmtRate:u}=jn(n);return(d,f)=>(y(),a(e,null,[o(`div`,Mn,[o(`button`,{class:`controls__btn`,"aria-label":`Back`,onClick:f[0]||=e=>d.$emit(`back`)},[l(T(ft))]),f[5]||=o(`span`,{class:`controls__more-label`},`More`,-1)]),o(`div`,Nn,[T(n).supportsPlaybackRate?(y(),a(`button`,{key:0,class:`controls__more-row`,"aria-label":`Playback speed`,onClick:f[1]||=(...e)=>T(s)&&T(s)(...e)},[f[6]||=o(`span`,null,`Playback speed`,-1),o(`span`,Pn,C(T(u)(T(n).playbackRate)),1)])):i(`v-if`,!0),o(`button`,{class:m([`controls__more-row`,{"controls__more-row--active":T(n).isLooping}]),"aria-label":`Toggle loop`,onClick:f[2]||=e=>T(n).toggleLoop()},[o(`span`,Fn,[l(T(It),{class:`controls__more-row-icon`}),f[7]||=c(`Loop`,-1)]),o(`span`,In,C(T(n).isLooping?`On`:`Off`),1)],2),T(r).hasPlaylist?(y(),a(`button`,{key:1,class:m([`controls__more-row`,{"controls__more-row--active":T(r).autoAdvance}]),"aria-label":`Toggle autoplay next`,onClick:f[3]||=e=>T(r).toggleAutoAdvance()},[o(`span`,Ln,[l(T(nn),{class:`controls__more-row-icon`}),f[8]||=c(`Autoplay next`,-1)]),o(`span`,Rn,C(T(r).autoAdvance?`On`:`Off`),1)],2)):i(`v-if`,!0),t.isCustom&&t.customAction?(y(),a(`button`,{key:2,class:`controls__more-row`,"aria-label":t.customAction.label,onClick:f[4]||=e=>t.customAction.onClick()},[o(`span`,Bn,[o(`span`,{class:`controls__more-row-icon`,innerHTML:t.customAction.icon},null,8,Vn),c(C(t.customAction.label),1)])],8,zn)):i(`v-if`,!0)])],64))}}),[[`__scopeId`,`data-v-e89a8208`]]);const Un=[`value`],Wn={class:`controls__row`},Gn={class:`controls__play-wrap`},Kn={key:0,class:`controls__live`},qn={key:1,class:`controls__time`},Jn={class:`controls__fs-wrap`},Yn=[`aria-label`];var Xn=Q(u({__name:`ControlsPopup`,setup(t){let n=Z(J),s=Z(Y),u=Z(X),f=st(d(at),n),{isCustom:p,customAction:h}=ct(d(it),n,u),b=S(!1),x=S(!1),w=S(null);function E(e){return!w.value||w.value.contains(e)?!1:(s.closeControls(),!0)}function D(e){E(e.target)}function A(e){E(e.target)&&e.preventDefault()}v(()=>{n.fire(`controlsopen`,{element:w.value}),document.addEventListener(`click`,D,!0),document.addEventListener(`touchend`,A,!0)}),_(()=>{b.value=!1,x.value=!1,n.fire(`controlsclose`,{element:w.value}),document.removeEventListener(`click`,D,!0),document.removeEventListener(`touchend`,A,!0)});function j(e){s.suppressMouseLeave(),wn(w,`controls-popup`,e)}function M(){if(k()){n.toggleMute();return}j(()=>{b.value=!0})}function N(){j(()=>{x.value=!0})}let{displaySeek:P,onSeekInput:F,onSeekChange:I}=Cn(n);function L(){n.isFullscreen||n.markFullscreenPending(),n.toggleFullscreen()}return(t,d)=>(y(),a(`div`,{ref_key:`popupEl`,ref:w,class:m([`controls`,{"controls--fs":T(n).isFullscreen,"controls--compact":T(f)}]),onMousemove:d[10]||=O((...e)=>T(s).keepOpen&&T(s).keepOpen(...e),[`stop`])},[b.value?(y(),r(An,{key:0,onBack:d[0]||=e=>j(()=>b.value=!1)})):x.value?(y(),r(Hn,{key:1,"is-custom":T(p),"custom-action":T(h),onBack:d[1]||=e=>j(()=>x.value=!1)},null,8,[`is-custom`,`custom-action`])):(y(),a(e,{key:2},[T(n).isLive?i(`v-if`,!0):(y(),a(`input`,{key:0,type:`range`,min:`0`,max:`100`,value:T(P),class:`controls__seek`,style:g({"--p":T(P)+`%`,"--b":T(n).bufferedDisplay+`%`}),onInput:d[2]||=(...e)=>T(F)&&T(F)(...e),onChange:d[3]||=(...e)=>T(I)&&T(I)(...e),onMousedown:d[4]||=e=>T(s).pauseHide(),onMouseup:d[5]||=e=>T(s).scheduleHide(),onTouchstartPassive:d[6]||=e=>T(s).pauseHide(),onTouchend:d[7]||=e=>T(s).scheduleHide()},null,44,Un)),o(`div`,Wn,[o(`div`,Gn,[T(n).isBuffering?(y(),r(mn,{key:0})):(y(),r($,{key:1,"is-playing":T(n).isPlaying,"has-ended":T(n).hasEnded,size:`sm`,onTogglePlay:d[8]||=e=>T(n).togglePlay()},null,8,[`is-playing`,`has-ended`]))]),T(n).isLive?(y(),a(`span`,Kn,[...d[11]||=[o(`span`,{class:`controls__live-dot`},null,-1),c(`Live`,-1)]])):(y(),a(`span`,qn,C(T(n).fmt(T(n).current))+` / `+C(T(n).fmt(T(n).total)),1)),T(u).hasNext?(y(),a(`button`,{key:2,class:`controls__btn`,"aria-label":`Play next`,onClick:d[9]||=e=>T(u).playNext()},[l(T(nn))])):i(`v-if`,!0),o(`button`,{class:`controls__btn`,"aria-label":`Volume`,onClick:M},[l(pn)]),o(`button`,{class:m([`controls__btn controls__btn--more`,{"controls__btn--active":T(n).isLooping||T(n).playbackRate!==1||T(u).autoAdvance}]),"aria-label":`More`,onClick:N},[l(T(Bt))],2),o(`div`,Jn,[T(n).isFullscreenPending?(y(),r(mn,{key:0})):(y(),a(`button`,{key:1,class:`controls__btn`,"aria-label":T(n).isFullscreen?`Exit fullscreen`:`Fullscreen`,onClick:L},[T(n).isFullscreen?(y(),r(T(Mt),{key:0})):(y(),r(T(Ot),{key:1}))],8,Yn))])])],64))],34))}}),[[`__scopeId`,`data-v-5712aad4`]]);const Zn={class:`ad-overlay`},Qn={class:`ad-overlay__bar`},$n={class:`ad-overlay__badge`},er={key:0,class:`ad-overlay__countdown`},tr=[`aria-label`],nr={key:0,class:`ad-overlay__resume`};var rr=Q(u({__name:`AdOverlay`,setup(e){let t=Z(J),s=n(()=>t.adRemainingTime>0?t.fmt(t.adRemainingTime):``);return(e,n)=>(y(),a(`div`,Zn,[o(`div`,Qn,[o(`div`,$n,[n[2]||=o(`span`,null,`Ad`,-1),s.value?(y(),a(`span`,er,C(s.value),1)):i(`v-if`,!0)]),o(`button`,{class:`ad-overlay__mute`,"aria-label":T(t).isAdMuted?`Unmute ad`:`Mute ad`,onClick:n[0]||=e=>T(t).toggleAdMute()},[T(t).isAdMuted?(y(),r(T(sn),{key:0})):(y(),r(T(dn),{key:1}))],8,tr)]),T(t).isAdPaused?(y(),a(`div`,nr,[l($,{"is-playing":!1,size:`lg`,onTogglePlay:n[1]||=e=>T(t).togglePlay()})])):i(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-23efcc8b`]]);const ir={key:0,class:`overlay__spinner`},ar={key:0,class:`overlay__error`};var or=Q(u({__name:`PlayerOverlay`,props:{disableTapCapture:{type:Boolean,required:!1,default:!1}},setup(n){let s=Z(J),c=Z(Y),{hudVisible:u,popupVisible:d}=ot(s,c);function f(){if(s.isAdPlaying&&s.isAdPaused){s.togglePlay();return}c.onVideoTap()}return(c,p)=>(y(),a(e,null,[!n.disableTapCapture&&T(s).hasStarted&&!(T(s).isAdPlaying&&!T(s).isAdPaused)?(y(),a(`div`,{key:0,class:`overlay__tap-capture`,onClick:f,onTouchend:O(f,[`prevent`,`stop`])},null,32)):i(`v-if`,!0),T(s).isAdPlaying?(y(),r(rr,{key:1})):i(`v-if`,!0),l(t,{name:`fade`},{default:D(()=>[!T(s).isReady&&!T(s).isError?(y(),a(`div`,ir,[l(mn,{size:40,"border-width":3})])):i(`v-if`,!0)]),_:1}),l(t,{name:`fade`},{default:D(()=>[T(s).isError?(y(),a(`div`,ar,[o(`p`,null,C(T(s).errorMessage||`This video could not be played.`),1),o(`button`,{class:`overlay__retry`,onClick:p[0]||=O((...e)=>T(s).retry&&T(s).retry(...e),[`stop`])},`Retry`)])):i(`v-if`,!0)]),_:1}),o(`div`,{class:m([`overlay__hud`,{"overlay__hud--visible":T(u)}])},[l(Sn)],2),l(t,{name:`popup`},{default:D(()=>[T(d)?(y(),a(`div`,{key:0,class:m([`overlay__popup`,{"overlay__popup--fs":T(s).isFullscreen}])},[l(Xn)],2)):i(`v-if`,!0)]),_:1})],64))}}),[[`__scopeId`,`data-v-f3307b98`]]);const sr={class:`player`},cr={"data-mvp-player":``},lr=[`poster`],ur={key:1,class:`player__native-play`};var dr=Q(u({__name:`VideoPlayer`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1,default:``},poster:{type:String,required:!1,default:``},aspectRatio:{type:String,required:!1,default:G},adTagUrl:{type:String,required:!1,default:``},autoplay:{type:Boolean,required:!1,default:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1,default:!1},autoStage:{type:Boolean,required:!1,default:!1},lazy:{type:Boolean,required:!1,default:!1},payload:{type:Object,required:!1,default:()=>({})},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1,default:!1},hasPlaylist:{type:Boolean,required:!1,default:!1},hasNext:{type:Boolean,required:!1,default:!1},hasPrevious:{type:Boolean,required:!1,default:!1},autoAdvance:{type:Boolean,required:!1,default:!1}},emits:[`state-change`,`play-next`,`play-previous`,`toggle-auto-advance`],setup(e,{expose:t,emit:s}){let c=e,u=s,d=S(null),f=x(nt(d,c,u)),p=x(rt(w(f,`isPlaying`)));b(J,f),b(Y,p),b(it,w(c,`action`)),b(X,x({hasPlaylist:n(()=>c.hasPlaylist),hasNext:n(()=>c.hasNext),hasPrevious:n(()=>c.hasPrevious),autoAdvance:n(()=>c.autoAdvance),playNext:()=>u(`play-next`),playPrevious:()=>u(`play-previous`),toggleAutoAdvance:()=>u(`toggle-auto-advance`)}));let h=n(()=>M(c.aspectRatio)),_=n(()=>h.value.isPortrait),v=n(()=>h.value.cssRatio),C=n(()=>!c.poster&&!f.isReady);return t(f),(e,t)=>(y(),a(`div`,sr,[o(`div`,{class:m([`player__shell`,{"player__shell--portrait":_.value}]),style:g({aspectRatio:v.value}),onMousemove:t[0]||=e=>p.onMouseMove(),onContextmenuCapture:t[1]||=O(()=>{},[`prevent`]),onMouseleave:t[2]||=e=>p.onMouseLeave()},[o(`div`,cr,[o(`video`,{ref_key:`videoEl`,ref:d,class:m([`mvp-video`,{"mvp-video--hidden":C.value}]),poster:c.poster,playsinline:``},null,10,lr),f.nativeUi?i(`v-if`,!0):(y(),r(or,{key:0,"disable-tap-capture":c.disableTapCapture},null,8,[`disable-tap-capture`])),f.nativeUi&&!f.hasStarted?(y(),a(`div`,ur,[l($,{"is-playing":!1,size:`lg`,onTogglePlay:f.togglePlay},null,8,[`onTogglePlay`])])):i(`v-if`,!0)])],38)]))}}),[[`__scopeId`,`data-v-4ab3cf75`]]);const fr=S(0),pr=n(()=>fr.value>0);function mr(){fr.value++}function hr(){fr.value--}function gr(e,t){window.dispatchEvent(new CustomEvent(e,{detail:t}))}function _r(e,t){let n=e=>t(e.detail);v(()=>window.addEventListener(e,n)),_(()=>window.removeEventListener(e,n))}function vr(e,t){let r=n(()=>!e.value||!t.value?-1:e.value.findIndex(e=>e.videoUrl===t.value?.videoUrl)),i=n(()=>r.value===-1||!e.value?null:e.value[r.value+1]??null),a=n(()=>r.value<=0||!e.value?null:e.value[r.value-1]??null);return{hasNext:n(()=>i.value!==null),hasPrevious:n(()=>a.value!==null),nextEntry:i,previousEntry:a}}function yr(){return localStorage.getItem(B)===`true`}function br(e){localStorage.setItem(B,String(e))}const xr=[`src`],Sr={class:`stage__idle-body`},Cr={class:`stage__idle-btn`},wr={class:`stage__idle-title`},Tr={key:1,class:`stage__idle-empty`};var Er=Q(u({__name:`VideoStage`,props:{pinPosition:{type:String,required:!1,default:`bottom-right`},playlist:{type:Array,required:!1}},emits:[`state-change`],setup(t,{expose:s,emit:c}){let u=t,d=c,p=S(yr());E(p,br);let h=n(()=>!!u.playlist?.length),x=S(null),D=S(null),k=S(!1),A=S(!1),j=S(null),N=S(null),P=S(!1);b(at,P);let{hasNext:F,hasPrevious:R,nextEntry:z,previousEntry:B}=vr(w(u,`playlist`),D),V=n(()=>P.value&&!!D.value&&k.value),ee=n(()=>M(D.value?.aspectRatio||`16:9`).cssRatio),H=S(null),U=S(null);E(P,e=>{H.value=e&&N.value?{height:N.value.offsetHeight,width:N.value.offsetWidth}:null});let W=n(()=>{if(!H.value)return{};let{height:e,width:t}=H.value,n=U.value&&t?U.value/t:1;return{height:`${Math.round(e*n)}px`}}),G=null,K=null;function te(){G?.disconnect(),K?.disconnect(),j.value&&(G=new IntersectionObserver(([e])=>{P.value=!e.isIntersecting},{threshold:1}),G.observe(j.value),K=new ResizeObserver(([e])=>{U.value=e.contentRect.width}),K.observe(j.value))}E(j,te);function ne(){D.value&&(D.value={...D.value,autoplay:!0},k.value=!0)}function re(){j.value?.scrollIntoView({behavior:`smooth`,block:`center`})}function ie(){D.value=null,k.value=!1,A.value=!1,P.value=!1,H.value=null,ae()}function ae(){gr(L,{currentVideoUrl:D.value?.videoUrl??null,isPlaying:A.value})}function oe(e){if(D.value?.videoUrl===e.videoUrl&&k.value){x.value?.togglePlay();return}D.value=e,k.value=!1,A.value=!1,ae(),k.value=!0}function se(e){if(!(!D.value||e.videoUrl!==D.value.videoUrl)){if(!k.value){D.value={...D.value,autoplay:!0},k.value=!0;return}x.value?.togglePlay()}}function ce(){z.value&&oe({...z.value,autoplay:!0})}function le(){B.value&&oe({...B.value,autoplay:!0})}function ue(e){e.type===`play`&&(A.value=!0),(e.type===`pause`||e.type===`ended`)&&(A.value=!1),e.type===`ended`&&p.value&&ce(),ae(),d(`state-change`,e)}return _r(I,oe),_r(`video-toggle`,se),v(mr),_(()=>{hr(),G?.disconnect(),K?.disconnect()}),s({playNext:ce,playPrevious:le,hasNext:F,hasPrevious:R}),(n,s)=>(y(),a(`div`,{ref_key:`wrapperEl`,ref:j,class:`stage-wrapper`,style:g(W.value)},[o(`div`,{ref_key:`stageEl`,ref:N,class:m([`stage`,{"stage--minified":V.value,[`stage--pin-${t.pinPosition}`]:V.value}])},[V.value?(y(),a(`button`,{key:0,class:`stage__scroll-to`,"aria-label":`Scroll to player`,onClick:O(re,[`stop`])},[l(T(wt))])):i(`v-if`,!0),V.value?(y(),a(`button`,{key:1,class:`stage__dismiss`,"aria-label":`Close`,onClick:O(ie,[`stop`])},[l(T(gt))])):i(`v-if`,!0),D.value&&k.value?(y(),r(dr,f({ref_key:`playerRef`,ref:x,key:D.value.videoUrl},D.value,{"has-playlist":h.value,"has-next":T(F),"has-previous":T(R),"auto-advance":p.value,onStateChange:ue,onPlayNext:ce,onPlayPrevious:le,onToggleAutoAdvance:s[0]||=e=>p.value=!p.value}),null,16,[`has-playlist`,`has-next`,`has-previous`,`auto-advance`])):(y(),a(`div`,{key:3,class:`stage__idle`,style:g({aspectRatio:ee.value}),onClick:ne},[D.value?.poster?(y(),a(`img`,{key:0,src:D.value.poster,class:`stage__idle-poster`},null,8,xr)):i(`v-if`,!0),s[1]||=o(`div`,{class:`stage__idle-scrim`},null,-1),o(`div`,Sr,[D.value?(y(),a(e,{key:0},[o(`div`,Cr,[l(T(Jt))]),o(`p`,wr,C(D.value.title),1)],64)):(y(),a(`p`,Tr,`Select a video to play`))])],4))],2)],4))}}),[[`__scopeId`,`data-v-fb8c86cf`]]);const Dr={class:`placeholder`},Or=[`src`,`alt`],kr={class:`placeholder__btn-wrap`},Ar={key:1,class:`placeholder__footer`},jr={class:`placeholder__title`};var Mr=Q(u({__name:`VideoPlaceholder`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1,default:``},poster:{type:String,required:!1,default:``},aspectRatio:{type:String,required:!1,default:G},adTagUrl:{type:String,required:!1,default:``},autoplay:{type:Boolean,required:!1,default:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1,default:!1},autoStage:{type:Boolean,required:!1,default:!1},lazy:{type:Boolean,required:!1},payload:{type:Object,required:!1,default:()=>({})},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1}},setup(e){let t=e,r=n(()=>M(t.aspectRatio)),s=n(()=>r.value.isPortrait),c=n(()=>r.value.cssRatio),u=S(!1),d=S(!1);_r(L,e=>{u.value=e.currentVideoUrl===t.videoUrl,d.value=u.value&&e.isPlaying});function f(e){gr(I,{...t,...e!==void 0&&{autoplay:e}})}function p(){f(!0)}return v(()=>{t.autoStage&&f()}),(t,n)=>(y(),a(`div`,Dr,[o(`div`,{class:m([`placeholder__shell`,{"placeholder__shell--portrait":s.value,"placeholder__shell--active":u.value}]),style:g({aspectRatio:c.value}),onClick:p},[e.poster?(y(),a(`img`,{key:0,class:`placeholder__poster`,src:e.poster,alt:e.title},null,8,Or)):i(`v-if`,!0),n[0]||=o(`div`,{class:`placeholder__scrim`},null,-1),o(`div`,kr,[l($,{"is-playing":u.value&&d.value,size:`lg`,onTogglePlay:p},null,8,[`is-playing`])]),e.title?(y(),a(`div`,Ar,[o(`p`,jr,C(e.title),1)])):i(`v-if`,!0)],6)]))}}),[[`__scopeId`,`data-v-dbcb4f82`]]),Nr=u({__name:`VideoItem`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1},poster:{type:String,required:!1},aspectRatio:{type:String,required:!1},adTagUrl:{type:String,required:!1},autoplay:{type:Boolean,required:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1},autoStage:{type:Boolean,required:!1},lazy:{type:Boolean,required:!1,default:!0},payload:{type:Object,required:!1},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1}},emits:[`state-change`],setup(t,{emit:n}){let i=t,o=n,s=S(!1);return(t,n)=>T(pr)?(y(),r(Mr,h(f({key:0},i)),null,16)):(y(),a(e,{key:1},[i.lazy&&!s.value&&!i.autoplay?(y(),r(Mr,f({key:0},i,{onClickCapture:n[0]||=e=>s.value=!0}),null,16)):(y(),r(dr,f({key:1},i,{autoplay:s.value||i.autoplay,onStateChange:n[1]||=e=>o(`state-change`,e)}),null,16,[`autoplay`]))],64))}});const Pr={install(e){e.component(`VideoPlayer`,dr),e.component(`VideoStage`,Er),e.component(`VideoPlaceholder`,Mr),e.component(`VideoItem`,Nr)}};export{it as ActionKey,at as CompactKey,Y as HudKey,J as PlayerKey,X as PlaylistKey,Nr as VideoItem,Mr as VideoPlaceholder,dr as VideoPlayer,Pr as VideoPlayerPlugin,Pr as default,Er as VideoStage,je as getPlatform,Z as injectStrict};
1
+ import{Fragment as e,Transition as t,computed as n,createBlock as r,createCommentVNode as i,createElementBlock as a,createElementVNode as o,createStaticVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,inject as d,mergeProps as f,nextTick as p,normalizeClass as m,normalizeProps as h,normalizeStyle as g,onBeforeUnmount as _,onMounted as v,openBlock as y,provide as b,reactive as x,ref as S,toDisplayString as C,toRef as w,unref as T,watch as E,withCtx as D,withModifiers as O}from"vue";function k(){return/iPad|iPhone|iPod/.test(navigator.userAgent)||/Mac/.test(navigator.userAgent)&&navigator.maxTouchPoints>1}function A(e){(e.requestFullscreen||e.webkitRequestFullscreen)?.call(e)}function j(){(document.exitFullscreen||document.webkitExitFullscreen)?.call(document)}function M(e){let[t,n]=e.split(`:`).map(Number);return{isPortrait:n>t,cssRatio:`${t}/${n}`}}function N(e){return!e||isNaN(e)?`0:00`:`${Math.floor(e/60)}:${String(Math.floor(e%60)).padStart(2,`0`)}`}function P(e,t=(...e)=>String(e[0])){let n={};return async(...r)=>{let i=t(...r);if(n[i])return n[i];let a=await e(...r);return n[i]=a,a}}function F(e){return e.filter(e=>e.src&&(e.type===`application/x-mpegURL`||e.type===`video/mp4`)).sort((e,t)=>e.type===`application/x-mpegURL`?-1:1)}const I=`video-select`,L=`video-state`,R=`fullscreen-pending`,z=`fullscreen-pending-done`,B=`player:autoAdvance`,V=`mvp-youtube`,ee=`mvp-vimeo`,H=`mvp-dailymotion`,U=`mvp-ad-playing`,W=`mvp-ad-paused`,G=`16:9`,K=[.5,.75,1,1.25,1.5,2],te=[[.25,`firstQuartile`],[.5,`midpoint`],[.75,`thirdQuartile`]];function ne(e){return e.match(/cdn\.jwplayer\.com\/videos\/([^-]+)/)?.[1]??e.match(/cdn\.jwplayer\.com\/manifests\/([^.]+)/)?.[1]??e.match(/^jwplayer:\/\/([^/]+)$/)?.[1]??null}function re(e){let t=e?.advertising?.schedule;return Array.isArray(t)&&t.length?t[0].tag??null:e?.advertising?.tag??null}const ie=P(async e=>{let t=await fetch(`https://cdn.jwplayer.com/v2/media/${e}`);if(!t.ok)throw Error(`JW Platform API error: ${t.status}`);let n=(await t.json()).playlist?.[0];if(!n)throw Error(`JW Platform: empty playlist`);let r=F((n.sources??[]).map(e=>({src:e.file,type:e.type})));if(!r.length)throw Error(`JW Platform: no playable sources found`);return{src:r[0].src,type:r[0].type,poster:n.image??null,adTagUrl:re(n)}});async function ae(e){let t=ne(e);if(!t)throw Error(`JW Platform: unrecognised source URL: ${e}`);let n=await ie(t);if(e.startsWith(`jwplayer://`))return n;let r=/\.mp4(\?|#|$)/.test(e)?`video/mp4`:`application/x-mpegURL`;return{...n,src:e,type:r}}function oe(e){let t;try{t=new URL(e)}catch{return null}if(t.hostname!==`players.brightcove.net`)return null;let[,n,r]=t.pathname.split(`/`),i=t.searchParams.get(`videoId`),a=r?.indexOf(`_`)??-1;return!n||a===-1||!i?null:{accountId:n,playerId:r.slice(0,a),embed:r.slice(a+1),videoId:i}}function se(e){return(e?.plugins??[]).find(e=>e.name===`ima3`)?.options?.serverUrl??null}const ce=P(async(e,t,n,r)=>{let i=await fetch(`https://players.brightcove.net/${e}/${t}_${n}/config.json`);if(!i.ok)throw Error(`Brightcove: could not load player config (${i.status})`);let a=await i.json(),o=r??a?.video_cloud?.policy_key;if(!o)throw Error(`Brightcove: policy_key not found in player config`);return{policyKey:o,adTagUrl:se(a)}},(e,t,n)=>`${e}/${t}_${n}`);async function le(e,t,n){let r=await fetch(`https://edge.api.brightcove.com/playback/v1/accounts/${e}/videos/${t}`,{headers:{Accept:`application/json;pk=${n}`}});if(!r.ok)throw Error(`Brightcove Playback API error: ${r.status}`);let i=await r.json(),a=F(i.sources||[]);if(!a.length)throw Error(`Brightcove: no playable sources found`);return{sources:a.map(e=>({src:e.src,type:e.type})),poster:i.poster??i.thumbnail??null}}async function ue(e,t){let n=oe(e);if(!n)throw Error(`Brightcove: invalid src — expected a Brightcove embed URL, e.g. "https://players.brightcove.net/{accountId}/{playerId}_{embed}/index.html?videoId={videoId}"`);let{accountId:r,playerId:i,embed:a,videoId:o}=n,{policyKey:s,adTagUrl:c}=await ce(r,i,a,t),{sources:l,poster:u}=await le(r,o,s);return{...l[0],poster:u,adTagUrl:c}}function de(){let e=new Map;function t(t,n){for(let r of Array.isArray(t)?t:[t])e.has(r)||e.set(r,new Set),e.get(r)?.add(n)}function n(t,n){e.get(t)?.delete(n)}function r(t,...n){e.get(t)?.forEach(e=>e(...n))}function i(){e.clear()}return{on:t,off:n,trigger:r,dispose:i}}const fe={};function pe(e,t=e){return fe[t]||(fe[t]=new Promise((t,n)=>{let r=document.createElement(`script`);r.src=e,r.onload=()=>t(),r.onerror=()=>n(Error(`Failed to load script: ${e}`)),document.head.appendChild(r)})),fe[t]}let me=0;function he(e,t){e.parentElement?.classList.add(t);let n=`${t}-${++me}`,r=document.createElement(`div`);r.id=n,r.className=`mvp-tech`,r.style.cssText=`width:100%;height:100%;top:0;left:0;position:absolute`;let i=document.createElement(`div`);return i.style.cssText=`width:100%;height:100%;position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity 0.2s`,i.appendChild(r),e.parentElement?.insertBefore(i,e),{techId:n,wrapper:i,innerDiv:r}}function ge(e,t){e.style.display=`none`,t.style.opacity=`1`,t.style.pointerEvents=``}function _e(e,t,n){t.remove(),e.parentElement?.classList.remove(n),e.style.display=``}function ve(e){return e.closest(`.player__shell`)}function ye(e){e.trigger(R);let t=document.createElement(`div`);t.style.cssText=`position:fixed;inset:0;z-index:99999;opacity:0;pointer-events:none`,document.body.appendChild(t);let n=!1;function r(){n||(e.trigger(z),t.style.opacity=`1`,t.style.pointerEvents=`auto`)}function i(r){n||(n=!0,e.trigger(z),t.remove(),r?.())}return{overlay:t,reveal:r,finish:i}}function be(e,t){return t===e.PlayerState.PLAYING||t===e.PlayerState.BUFFERING}function xe(e){let t={videoId:null,listId:null},n=e.match(/^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|shorts\/|&v=)([^#&?]*).*/);n?.[2]?.length===11&&(t.videoId=n[2]);let r=e.match(/[?&]list=([^#&?]+)/);return r?.[1]&&(t.listId=r[1]),t}let Se=!1,Ce=!1;const q=[];function we(){Ce||(Ce=!0,pe(`https://www.youtube.com/iframe_api`).then(()=>{window.YT?.ready(()=>{Se=!0,q.forEach(e=>e()),q.length=0})}))}function Te(e,t){we();let n=de(),{techId:r,wrapper:i}=he(e,V),a=xe(t.src),o=null,s=a.videoId,c=!1,l=!1,u=!1,d=null,f=!1,p=null,m=!1,h=new Set,g=null,_={active:!1,wasPaused:!1,timeBefore:0,catchUpInterval:null};function v(e,t=0){let n=setTimeout(()=>{h.delete(n),e()},t);h.add(n)}function y(){try{let e=o?.getPlayerResponse()?.adPlacements;return Array.isArray(e)&&e.length>0}catch{return!1}}function b(e){o?.loadVideoById({videoId:e})}function x(e){o?.cueVideoById({videoId:e})}function S(){a.videoId&&(_.wasPaused=!1,c?s===a.videoId?o?.playVideo():(b(a.videoId),s=a.videoId):(n.trigger(`waiting`),l=!0))}function C(){_.catchUpInterval&&clearInterval(_.catchUpInterval),_.active=!1,_.wasPaused&&o?.pauseVideo(),n.trigger(`seeked`)}function w(){m=(o?.getAvailablePlaybackRates()??[]).length>1,c=!0,t.muted&&o?.mute(),l?S():u&&a.videoId&&(x(a.videoId),s=a.videoId)}function T(e){if(e===d||p!==null)return;d=e;let t=y();t!==f&&(f=t,n.trigger(t?`adstart`:`adend`));let r=window.YT;if(r){switch(e){case-1:n.trigger(`loadstart`),n.trigger(`loadedmetadata`),n.trigger(`durationchange`),n.trigger(`ratechange`);break;case r.PlayerState.ENDED:n.trigger(`ended`);break;case r.PlayerState.PLAYING:n.trigger(`timeupdate`),n.trigger(`durationchange`),n.trigger(`playing`),n.trigger(`play`),_.active&&C();break;case r.PlayerState.PAUSED:n.trigger(`canplay`),_.active||n.trigger(`pause`);break;case r.PlayerState.BUFFERING:n.trigger(`waiting`);break;case r.PlayerState.CUED:n.trigger(`canplay`);break}g&&=(clearInterval(g),null),e===r.PlayerState.PLAYING&&(g=setInterval(()=>n.trigger(`timeupdate`),250))}}function E(){let e={controls:+!!t.nativeUi,modestbranding:1,rel:0,showinfo:0,mute:+!!t.muted,origin:window.location.origin,allowfullscreen:1,fullscreen:1,fs:1,playsinline:1,...t.customVars};s=a.videoId,o=new window.YT.Player(r,{videoId:s??void 0,playerVars:e,events:{onReady:w,onStateChange:e=>T(e.data),onPlaybackRateChange:()=>n.trigger(`ratechange`),onVolumeChange:()=>n.trigger(`volumechange`),onError:e=>{p=e.data,n.trigger(`error`),v(()=>{p=null})}}})}Se?E():q.push(E),t.autoplay?c?S():l=!0:a.videoId&&(u=!0);function D(){if(!o)return;let e=o.getCurrentTime(),{video_id:t}=o.getVideoData();o.pauseVideo();let{overlay:r,reveal:i,finish:a}=ye(n),s=document.createElement(`div`);s.id=`yt-fs-${Math.random().toString(36).slice(2)}`,r.appendChild(s);let c=null,l=()=>{a(()=>{let t=c?.getCurrentTime()??e;try{c?.destroy()}catch{}o?.seekTo(t,!0),n.trigger(`timeupdate`)})};c=new window.YT.Player(s.id,{videoId:t,playerVars:{playsinline:0,autoplay:1,controls:1,modestbranding:1,rel:0,start:Math.floor(e)},events:{onReady:t=>{i(),t.target.seekTo(e,!0),t.target.playVideo()},onStateChange:e=>{let t=window.YT;t&&(e.data===t.PlayerState.PAUSED||e.data===t.PlayerState.ENDED)&&l()}}})}function O(){if(k()&&o){D();return}let t=ve(e);t&&A(t)}function M(){j()}return{el:i,play:S,pause:()=>o?.pauseVideo(),paused:()=>{if(!o)return!0;let e=window.YT;return!e||!be(e,d)},currentTime:()=>o?.getCurrentTime()??0,setCurrentTime:e=>{if(!o)return;let t=window.YT;t&&d===t.PlayerState.PAUSED&&(_.timeBefore=o.getCurrentTime()),_.active||(_.wasPaused=!t||!be(t,d)),o.seekTo(e,!0),n.trigger(`timeupdate`),n.trigger(`seeking`),_.active=!0,t&&d===t.PlayerState.PAUSED&&_.timeBefore!==e&&(_.catchUpInterval&&clearInterval(_.catchUpInterval),_.catchUpInterval=setInterval(()=>{d!==t.PlayerState.PAUSED||!_.active?_.catchUpInterval&&clearInterval(_.catchUpInterval):o&&o.getCurrentTime()!==_.timeBefore&&(n.trigger(`timeupdate`),C())},250))},duration:()=>o?.getDuration()??0,volume:()=>o?o.getVolume()/100:1,setVolume:e=>o?.setVolume(e*100),muted:()=>o?.isMuted()??!1,setMuted:e=>{o&&(e?o.mute():o.unMute(),v(()=>n.trigger(`volumechange`),50))},playbackRate:()=>o?.getPlaybackRate()??1,setPlaybackRate:e=>o?.setPlaybackRate(e),bufferedEnd:()=>o?.getVideoLoadedFraction?o.getVideoLoadedFraction()*o.getDuration():0,error:()=>p===null?null:{code:p,message:`This video could not be played.`},setSrc:e=>{let t=xe(e);a.videoId=t.videoId,a.listId=t.listId,a.videoId&&(c?(b(a.videoId),s=a.videoId):u=!0)},featuresPlaybackRate:()=>m,enterFullscreen:O,exitFullscreen:M,on:n.on,off:n.off,dispose:()=>{if(h.forEach(clearTimeout),h.clear(),g&&clearInterval(g),_.catchUpInterval&&clearInterval(_.catchUpInterval),o)try{o.stopVideo(),o.destroy()}catch{}else{let e=q.indexOf(E);e!==-1&&q.splice(e,1)}o=null,_e(e,i,V),n.dispose()}}}function Ee(e){return e.match(/(?:vimeo\.com\/(?:video\/|channels\/[^/]+\/|groups\/[^/]+\/videos\/)?|player\.vimeo\.com\/video\/)(\d+)/)?.[1]??null}function De(e,t){let n=de(),{techId:r,wrapper:i}=he(e,ee),a=Ee(t.src),o=null,s=0,c=0,l=1,u=!1,d=!0,f=1,p=!1,m=!1,h=!1,g=null,_=new Set;function v(e,t=0){let n=setTimeout(()=>{_.delete(n),e()},t);_.add(n)}function y(){if(!o){m=!0;return}o.play().catch(()=>{})}function b(){t.muted&&o?.setMuted(!0).catch(()=>{}),m&&y()}async function x(e){if(await pe(`https://player.vimeo.com/api/player.js`,`vimeo`),h||!window.Vimeo)return;let i={id:Number(e),byline:!1,portrait:!1,title:!1,transparent:!0,controls:!!t.nativeUi,autopause:!1,...t.autoplay!==void 0&&{autoplay:t.autoplay},...t.muted!==void 0&&{muted:t.muted}};o=new window.Vimeo.Player(r,i),t.autoplay&&(m=!0),o.ready().then(b).catch(e=>{g={code:4,message:e?.message||`This video is unavailable or cannot be embedded here.`},n.trigger(`error`)}),o.on(`play`,()=>{d=!1,n.trigger(`play`),n.trigger(`playing`)}),o.on(`pause`,()=>{d=!0,n.trigger(`pause`)}),o.on(`ended`,()=>{d=!0,n.trigger(`ended`)}),o.on(`timeupdate`,e=>{let{seconds:t,duration:r}=e;s=t,c=r,n.trigger(`timeupdate`),r&&!p&&(p=!0,n.trigger(`durationchange`))}),o.on(`loaded`,()=>{p=!1,n.trigger(`loadedmetadata`),n.trigger(`durationchange`)}),o.on(`seeking`,e=>{s=e.seconds,n.trigger(`seeking`)}),o.on(`seeked`,e=>{s=e.seconds,n.trigger(`seeked`),n.trigger(`timeupdate`)}),o.on(`bufferstart`,()=>n.trigger(`waiting`)),o.on(`bufferend`,()=>n.trigger(`canplay`)),o.on(`volumechange`,e=>{l=e.volume,n.trigger(`volumechange`)}),o.on(`error`,()=>n.trigger(`error`))}a&&x(a);function S(){if(!k()){let t=ve(e);t&&A(t);return}o?.requestFullscreen().catch(()=>{})}function C(){j()}return{el:i,play:y,pause:()=>o?.pause().catch(()=>{}),paused:()=>d,currentTime:()=>s,setCurrentTime:e=>{o?.setCurrentTime(e).catch(()=>{}),n.trigger(`timeupdate`),n.trigger(`seeking`)},duration:()=>c,volume:()=>l,setVolume:e=>{l=e,o?.setVolume(e).catch(()=>{})},muted:()=>u,setMuted:e=>{u=e,o?.setMuted(e).then(()=>v(()=>n.trigger(`volumechange`),50)).catch(()=>{})},playbackRate:()=>f,setPlaybackRate:e=>{f=e,o?.setPlaybackRate(e).catch(()=>{}),n.trigger(`ratechange`)},bufferedEnd:()=>s,error:()=>g,setSrc:()=>{},featuresPlaybackRate:()=>!1,enterFullscreen:S,exitFullscreen:C,on:n.on,off:n.off,dispose:()=>{h=!0,_.forEach(clearTimeout),_.clear(),o?.destroy().catch(()=>{}),o=null,_e(e,i,ee),n.dispose()}}}function Oe(e){let t=e.match(/[?&]video=([a-zA-Z0-9]+)/);return t?t[1]:e.match(/(?:dailymotion\.com\/(?:embed\/)?video\/|dai\.ly\/)([a-zA-Z0-9]+)/)?.[1]??null}function ke(e,t){let n=de(),{techId:r,wrapper:i}=he(e,H),a=ve(e),o=Oe(t.src),s=typeof t.customVars?.playerId==`string`?t.customVars.playerId:void 0,c=null,l=0,u=0,d=1,f=!1,p=!0,m=!1,h=!1,g=null;async function _(){if(!o){g={code:4,message:`Could not parse video ID from source URL`},n.trigger(`error`);return}try{let e=await pe(s?`https://geo.dailymotion.com/libs/player/${s}.js`:`https://geo.dailymotion.com/libs/player.js`,s||`dailymotion-sdk`).then(()=>window.dailymotion);if(!e)return;let i=await e.createPlayer(r,{...s&&{player:s},video:o,params:{autoplay:!!t.autoplay,mute:!!t.muted}});c=i;let a=e.events;m&&i.play(),i.on(a.PLAYER_CRITICALPATHREADY,e=>{let t=e.videoThumbnails;if(!t)return;let r=Object.keys(t).map(Number).sort((e,t)=>t-e)[0],i=r===void 0?void 0:t[r];i&&n.trigger(`posterchange`,i)}),i.on(a.VIDEO_PLAY,()=>{p=!1,n.trigger(`play`),n.trigger(`playing`),!t.autoplay&&!h&&(h=!0,i.pause())}),i.on(a.VIDEO_PLAYING,()=>{p=!1,n.trigger(`play`),n.trigger(`playing`)}),i.on(a.VIDEO_PAUSE,()=>{p=!0,n.trigger(`pause`)}),a.VIDEO_BUFFERING&&i.on(a.VIDEO_BUFFERING,()=>n.trigger(`waiting`)),i.on(a.VIDEO_END,()=>{p=!0,n.trigger(`ended`)}),i.on(a.VIDEO_TIMECHANGE,e=>{l=e.videoTime??l,u=e.videoDuration??u,n.trigger(`timeupdate`)}),i.on(a.VIDEO_DURATIONCHANGE,e=>{u=e.videoDuration??u,n.trigger(`durationchange`)}),i.on(a.VIDEO_SEEKSTART,()=>n.trigger(`seeking`)),i.on(a.VIDEO_SEEKEND,e=>{l=e.videoTime??l,n.trigger(`seeked`)}),i.on(a.PLAYER_VOLUMECHANGE,e=>{d=e.playerVolume??d,f=e.playerIsMuted??f,n.trigger(`volumechange`)}),i.on(a.PLAYER_ERROR,()=>n.trigger(`error`)),a.AD_START&&i.on(a.AD_START,()=>{p=!1,n.trigger(`play`),n.trigger(`adstart`)}),a.AD_END&&i.on(a.AD_END,()=>n.trigger(`adend`))}catch(e){g={code:4,message:e instanceof Error?e.message:`This video could not be played.`},n.trigger(`error`)}}_();function v(){c?c.play():m=!0}function y(){if(k()){c?.setFullscreen(!0);return}a&&A(a)}function b(){if(k()){c?.setFullscreen(!1);return}j()}return{el:i,play:v,pause:()=>c?.pause(),paused:()=>p,currentTime:()=>l,setCurrentTime:e=>{l=e,c?.seek(e),n.trigger(`seeking`)},duration:()=>u,volume:()=>d,setVolume:e=>{d=e,c?.setVolume(e)},muted:()=>f,setMuted:e=>{f=e,c?.setMute(e)},playbackRate:()=>1,setPlaybackRate:()=>{},bufferedEnd:()=>l,error:()=>g,setSrc:()=>{},featuresPlaybackRate:()=>!1,enterFullscreen:y,exitFullscreen:b,on:n.on,off:n.off,dispose:()=>{c?.destroy?.(),c=null,_e(e,i,H),n.dispose()}}}const Ae=[{test:e=>/youtu\.be|youtube\.com/.test(e),key:`youtube`,embed:!0},{test:e=>/vimeo\.com|player\.vimeo\.com/.test(e),key:`vimeo`,embed:!0},{test:e=>/dailymotion\.com|dai\.ly/.test(e),key:`dailymotion`,embed:!0},{test:e=>/cdn\.jwplayer\.com/.test(e)||e.startsWith(`jwplayer://`),key:`jwplayer`,embed:!1},{test:e=>/players\.brightcove\.net/.test(e),key:`brightcove`,embed:!1}];function je(e){return Ae.find(t=>t.test(e))?.key??`html5`}function Me(e){if(/\.m3u8(\?|#|$)/.test(e))return`application/x-mpegURL`;if(/\.mp4(\?|#|$)/.test(e))return`video/mp4`}function Ne(e){return Ae.find(t=>t.test(e))?.embed??!1}const Pe={youtube:Te,vimeo:De,dailymotion:ke};function Fe(e,t,n){let r=Pe[je(e)];return r?r(t,n):null}async function Ie(e){let t=je(e);return t===`jwplayer`?ae(e):t===`brightcove`?ue(e):{src:e,type:Me(e)}}const Le=`application/x-mpegURL`,Re=[`play`,`pause`,`ended`,`error`,`timeupdate`,`durationchange`,`progress`,`volumechange`,`ratechange`,`seeking`,`seeked`,`waiting`,`playing`,`canplay`];function ze(e,t){let n=de(),r=null,i=!1,a=null;async function o(t){let{default:o}=await import(`hls.js`);if(i||a!==t)return;if(typeof o?.isSupported!=`function`||!o.isSupported()){e.src=t;return}r=new o({liveDurationInfinity:!0}),r.loadSource(t),r.attachMedia(e);let s=o.Events,c=o.ErrorTypes;r.on(s.ERROR,(e,o)=>{if(!(!o.fatal||i||a!==t))switch(o.type){case c.NETWORK_ERROR:r?.startLoad();break;case c.MEDIA_ERROR:r?.recoverMediaError();break;default:r?.destroy(),r=null,n.trigger(`error`);break}})}function s(){return e.canPlayType(`application/vnd.apple.mpegurl`)!==``||e.canPlayType(Le)!==``}function c(t,n){if(r?.destroy(),r=null,a=null,n===Le&&!s()){a=t,o(t);return}e.src=t}let l=e=>()=>n.trigger(e),u=Re.map(e=>[e,l(e)]);for(let[t,n]of u)e.addEventListener(t,n);let d=[[`webkitbeginfullscreen`,l(`nativefullscreenenter`)],[`webkitendfullscreen`,l(`nativefullscreenexit`)]];for(let[t,n]of d)e.addEventListener(t,n);e.poster=t.poster??``,e.muted=t.muted??t.autoplay??!1,e.playbackRate=t.playbackRate??1,e.playsInline=!0,c(t.src,t.type),t.autoplay&&e.play();function f(){let t=e;if(typeof t.webkitEnterFullscreen==`function`){t.webkitEnterFullscreen();return}let n=e.closest(`.player__shell`);n instanceof HTMLElement&&A(n)}function p(){let t=e;if(typeof t.webkitExitFullscreen==`function`){t.webkitExitFullscreen();return}j()}return{el:e,play:()=>e.play(),pause:()=>e.pause(),paused:()=>e.paused,currentTime:()=>e.currentTime,setCurrentTime:t=>{e.currentTime=t},duration:()=>e.duration,volume:()=>e.volume,setVolume:t=>{e.volume=t},muted:()=>e.muted,setMuted:t=>{e.muted=t},playbackRate:()=>e.playbackRate,setPlaybackRate:t=>{e.playbackRate=t},bufferedEnd:()=>{let{buffered:t,duration:n}=e;if(!t.length)return 0;let r=t.end(t.length-1);return n&&r>n?n:r},error:()=>{let t=e.error;return t?{code:t.code,message:t.message||`This video could not be played.`}:null},setSrc:c,featuresPlaybackRate:()=>!0,enterFullscreen:f,exitFullscreen:p,on:n.on,off:n.off,dispose:()=>{i=!0,r?.destroy();for(let[t,n]of u)e.removeEventListener(t,n);for(let[t,n]of d)e.removeEventListener(t,n);n.dispose()}}}function Be(){return window.google?.ima?Promise.resolve():new Promise((e,t)=>{let n=document.createElement(`script`);n.src=`https://imasdk.googleapis.com/js/sdkloader/ima3.js`,n.onload=()=>e(),n.onerror=()=>t(Error(`Failed to load Google IMA SDK`)),document.head.appendChild(n)})}function Ve(e,t,n,r){let i=document.createElement(`div`);i.className=`ima-ad-container`,e.appendChild(i);let a=null,o=null,s=null,c=!1,l=!1,u=!1,d=!1,f=!1,p=!1,m=1,h=new ResizeObserver(([e])=>{let t=window.google?.ima;if(!s||!t)return;let{width:n,height:r}=e.contentRect;s.resize(n,r,t.ViewMode.NORMAL)});h.observe(t);function g(){o?.contentComplete()}function _(t){d=t,e.classList.toggle(U,t),t||(f=!1,e.classList.remove(W))}function v(){if(c||!l||!u||!a||!o)return;c=!0;let e=window.google?.ima;if(!e)return;a.initialize();let t=new e.AdsRequest;t.adTagUrl=n,o.requestAds(t)}Be().then(()=>{if(p)return;let n=window.google?.ima;n&&(a=new n.AdDisplayContainer(i,t),o=new n.AdsLoader(a),l=!0,o.addEventListener(n.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,i=>{if(p)return;let a=new n.AdsRenderingSettings;a.restoreCustomPlaybackStateOnAdBreakComplete=!0,s=i.getAdsManager(t,a),t.addEventListener(`ended`,g),s.addEventListener(n.AdEvent.Type.CONTENT_PAUSE_REQUESTED,()=>{t.removeEventListener(`ended`,g),t.pause(),_(!0),r.onAdStart();let e=s?.getVolume()??1;e>0&&(m=e),r.onAdMuteChange(e===0)}),s.addEventListener(n.AdEvent.Type.CONTENT_RESUME_REQUESTED,()=>{t.addEventListener(`ended`,g),_(!1),r.onAdEnd(),t.ended||t.play()}),s.addEventListener(n.AdEvent.Type.PAUSED,()=>{f=!0,e.classList.add(W),r.onAdPauseChange(!0)}),s.addEventListener(n.AdEvent.Type.RESUMED,()=>{f=!1,e.classList.remove(W),r.onAdPauseChange(!1)}),s.addEventListener(n.AdEvent.Type.AD_PROGRESS,()=>{r.onAdProgress(s?.getRemainingTime()??0)}),s.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{_(!1),r.onError(e.getError().getMessage()),t.play()});try{s.init(t.clientWidth,t.clientHeight,n.ViewMode.NORMAL),s.start()}catch(e){r.onError(e instanceof Error?e.message:`Ad playback failed to start.`)}}),o.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{r.onError(e.getError().getMessage())}),v())}).catch(e=>r.onError(e.message));function y(){u=!0,v()}function b(){if(!s)return;let e=s.getVolume();e>0?(m=e,s.setVolume(0)):s.setVolume(m||1),r.onAdMuteChange(s.getVolume()===0)}return{isAdPlaying:()=>d,isAdPaused:()=>f,requestAdsOnFirstPlay:y,pauseAd:()=>s?.pause(),resumeAd:()=>s?.resume(),toggleAdMute:b,dispose:()=>{p=!0,h.disconnect(),t.removeEventListener(`ended`,g),s?.destroy(),o?.destroy(),i.remove(),e.classList.remove(U,W)}}}const He=new Set;function Ue(e){return He.add(e),()=>He.delete(e)}function We(e){He.forEach(t=>{if(t!==e)try{t()}catch{}})}function Ge(e){let t=S(!1),n=S(!1);function r(){let e=document;t.value=!!(document.fullscreenElement||e.webkitFullscreenElement),n.value=!1}function i(){let n=e();if(n){if(t.value){n.exitFullscreen();return}n.enterFullscreen()}}function a(){n.value=!0}function o(e){e.on(R,()=>{n.value=!0}),e.on(z,()=>{n.value=!1}),e.on(`nativefullscreenenter`,()=>{t.value=!0,n.value=!1}),e.on(`nativefullscreenexit`,()=>{t.value=!1,n.value=!1})}return v(()=>{document.addEventListener(`fullscreenchange`,r),document.addEventListener(`webkitfullscreenchange`,r)}),_(()=>{document.removeEventListener(`fullscreenchange`,r),document.removeEventListener(`webkitfullscreenchange`,r)}),{isFullscreen:t,isFullscreenPending:n,toggleFullscreen:i,markFullscreenPending:a,attachPlayerEvents:o}}function Ke(){let e=S(!1),t=null;function n(){clearTimeout(t??void 0),e.value=!1}function r(r){r.on(`waiting`,()=>{clearTimeout(t??void 0),t=setTimeout(()=>{e.value=!0},500)}),r.on(`playing`,n),r.on(`canplay`,n)}return _(()=>clearTimeout(t??void 0)),{isBuffering:e,attachPlayerEvents:r,reset:n}}function qe(e,t,n){let r=new Set;function i(){if(!t.value)return;let i=e.value/t.value;for(let[e,t]of te)!r.has(e)&&i>=e&&(r.add(e),n(t))}function a(){r.clear()}return{checkQuartiles:i,reset:a}}function Je(){try{return JSON.parse(localStorage.getItem(`player:positions`)??`[]`)}catch{return[]}}function Ye(e){localStorage.setItem(`player:positions`,JSON.stringify(e))}function Xe(e,t){if(t<5)return;let n=Je().filter(t=>t.url!==e);n.unshift({url:e,time:t}),Ye(n.slice(0,5))}function Ze(e){return Je().find(t=>t.url===e)?.time??null}function Qe(e){Ye(Je().filter(t=>t.url!==e))}function $e(e,t,n){let r=!1;function i(t){if(r)return;let n=Ze(e);n&&t.setCurrentTime(n),r=!0}function a(t){!t||n.value||Xe(e,t.currentTime()??0)}function o(){Qe(e)}function s(){document.visibilityState===`hidden`&&a(t())}return v(()=>document.addEventListener(`visibilitychange`,s)),_(()=>{a(t()),document.removeEventListener(`visibilitychange`,s)}),{restoreOnce:i,save:a,clear:o}}function et(e,t,n,r){let i=null;v(()=>{let a=e.value?.closest(`.player__shell`);a&&(i=new IntersectionObserver(([e])=>{let i=t();!e.isIntersecting&&i&&!i.paused()&&!n.value&&!r.value&&i.pause()},{threshold:.1}),i.observe(a))}),_(()=>i?.disconnect())}function tt(e,t,n,r,i,a){function o(){let n=e();if(!(!n||!t.value)){if(!a.value){n.play();return}n.pause()}}function s(t){e()?.setCurrentTime(n.value*(t/100))}function c(){let t=e();t?.setMuted(!t.muted())}function l(t){let n=e();n&&(n.setVolume(t),n.setMuted(t===0))}function u(){r.value=!r.value}function d(t){let n=e();n&&(n.setPlaybackRate(t),i.value=t)}return{togglePlay:o,seek:s,toggleMute:c,setVolume:l,toggleLoop:u,setPlaybackRate:d}}function nt(e,t){let{isPlaying:n,hasEnded:r,isReady:i,isAdPlaying:a,isLive:o,current:s,total:c,buffered:l,vol:u,isMuted:d,isLooping:f,playbackRate:p,supportsPlaybackRate:m,hasStarted:h,isError:g,errorMessage:_}=e,{fire:v,pauseThisPlayer:y,positionMemory:b,quartiles:x,buffering:S,fullscreen:C}=t;function w(e){i.value=!0,m.value=e.featuresPlaybackRate();let t=()=>{let t=e.duration();if(t===1/0){o.value=!0;return}o.value=!1,t&&t>0&&isFinite(t)&&(c.value=t)};e.on(`adstart`,()=>{We(y),a.value=!0,v(`adstart`)}),e.on(`adend`,()=>{a.value=!1,v(`adend`)}),e.on(`play`,()=>{We(y),h.value=!0,n.value=!0,r.value=!1,o.value||b.restoreOnce(e),v(`play`)}),e.on(`pause`,()=>{n.value=!1,o.value||b.save(e),v(`pause`)}),e.on(`ended`,()=>{if(n.value=!1,x.reset(),S.reset(),f.value){e.setCurrentTime(0),e.play();return}c.value&&(s.value=c.value),r.value=!0,b.clear(),v(`ended`)}),e.on(`seeked`,()=>{v(`seeked`)}),e.on(`error`,()=>{let t=e.error();_.value=t?.message||`This video could not be played.`,g.value=!0,i.value=!0,v(`error`,{error:t})}),e.on(`timeupdate`,()=>{r.value||(s.value=e.currentTime()??0,c.value||t(),m.value||=e.featuresPlaybackRate(),o.value||x.checkQuartiles())}),e.on(`durationchange`,t),e.on(`progress`,()=>{let t=e.duration();l.value=t?e.bufferedEnd()/t*100:0}),e.on(`volumechange`,()=>{let t=e.muted();u.value=e.volume()??1,d.value=t??!1,h.value&&v(`volumechange`,{isMuted:t})}),e.on(`ratechange`,()=>{let t=e.playbackRate()??1;p.value=t,h.value&&v(`ratechange`,{playbackRate:t})}),S.attachPlayerEvents(e),C.attachPlayerEvents(e)}return{attachPlayerEvents:w}}function rt(e,t,r){let i=null,a=null,o=null,s=null,c=S(!1),l=S(!1),u=S(!1),d=S(!1),f=S(!1),p=S(!1),m=S(0),h=S(!1),g=S(0),y=S(0),b=S(0),x=S(1),C=S(t.muted??t.autoplay??!1),w=S(!1),T=S(t.playbackRate??1),D=S(!1),O=S(!1),k=S(!1),A=S(``),j=S(!1),M=n(()=>y.value?g.value/y.value*100:0),P=n(()=>Math.max(b.value,M.value)),F=()=>i,I=Ge(F),L=Ke(),R=$e(t.videoUrl,F,l);function z(e,n={}){r(`state-change`,{type:e,currentTime:g.value,duration:y.value,src:t.videoUrl,...n,payload:t.payload})}let B=qe(g,y,z);function V(){!i||!s||(k.value=!1,A.value=``,i.setSrc(s.src,s.type))}function ee(){a?.toggleAdMute()}function H(){if(a?.isAdPlaying()){a.pauseAd();return}i?.pause()}function U(){if(a?.isAdPlaying()){a.isAdPaused()?a.resumeAd():a.pauseAd();return}W.togglePlay()}let W=tt(F,u,y,w,T,c),{attachPlayerEvents:G}=nt({isPlaying:c,hasEnded:l,isReady:u,isAdPlaying:d,isLive:h,current:g,total:y,buffered:b,vol:x,isMuted:C,isLooping:w,playbackRate:T,supportsPlaybackRate:D,hasStarted:O,isError:k,errorMessage:A},{fire:z,pauseThisPlayer:H,positionMemory:R,quartiles:B,buffering:L,fullscreen:I});return E(()=>t.muted,e=>{!i||e===void 0||i.setMuted(e)}),E(()=>t.playbackRate,e=>{!i||e===void 0||i.setPlaybackRate(e)}),et(e,F,I.isFullscreen,I.isFullscreenPending),E(O,t=>{!t||!e.value||!i||i.el===e.value||ge(e.value,i.el)}),v(async()=>{if(Ne(t.videoUrl)){if(!e.value)return;let n=Fe(t.videoUrl,e.value,{src:t.videoUrl,poster:t.poster,autoplay:t.autoplay,muted:t.muted??t.autoplay,nativeUi:t.nativeUi});if(!n){k.value=!0,u.value=!0,A.value=`This platform is not yet supported.`;return}j.value=!!t.nativeUi,i=n,s={src:t.videoUrl},o=Ue(H),G(i);return}let n=await Ie(t.videoUrl).catch(()=>({src:t.videoUrl}));if(!e.value)return;s={src:n.src,type:n.type},i=ze(e.value,{src:n.src,type:n.type,poster:n.poster||t.poster||``,autoplay:t.autoplay,muted:t.muted??t.autoplay,playbackRate:T.value});let r=t.adTagUrl||n.adTagUrl||``;r&&e.value.parentElement&&(a=Ve(e.value.parentElement,e.value,r,{onAdStart:()=>{d.value=!0,f.value=!1,z(`adstart`)},onAdEnd:()=>{d.value=!1,f.value=!1,m.value=0,z(`adend`)},onAdPauseChange:e=>{f.value=e,e||We(H)},onAdMuteChange:e=>{p.value=e},onAdProgress:e=>{m.value=e},onError:e=>{d.value=!1,f.value=!1,m.value=0,console.error(`Ad playback error for ${r}:`,e)}}),i.on(`play`,()=>a?.requestAdsOnFirstPlay())),o=Ue(H),G(i)}),_(()=>{o?.(),a?.dispose(),a=null,i?.dispose(),i=null}),{isPlaying:c,hasEnded:l,isReady:u,isAdPlaying:d,isAdPaused:f,isAdMuted:p,adRemainingTime:m,isLive:h,isBuffering:L.isBuffering,current:g,total:y,vol:x,isMuted:C,isLooping:w,playbackRate:T,hasStarted:O,isError:k,errorMessage:A,progress:M,bufferedDisplay:P,isFullscreen:I.isFullscreen,isFullscreenPending:I.isFullscreenPending,fmt:N,fire:z,retry:V,togglePlay:U,seek:W.seek,toggleMute:W.toggleMute,setVolume:W.setVolume,toggleFullscreen:I.toggleFullscreen,markFullscreenPending:I.markFullscreenPending,toggleLoop:W.toggleLoop,toggleAdMute:ee,setPlaybackRate:W.setPlaybackRate,supportsPlaybackRate:D,nativeUi:j}}function it(e){let t=S(!0),n=S(!1),r=null,i=0;function a(e=400){i=Date.now()+e}function o(e=3500){clearTimeout(r??void 0),r=setTimeout(()=>{t.value=!1,n.value=!1},e)}function s(){clearTimeout(r??void 0)}function c(){n.value=!0,t.value=!0,o()}function l(){n.value=!1,e.value&&o()}function u(){e.value&&o()}function d(){t.value=!0,e.value&&o()}function f(){t.value=!0,o()}function p(){Date.now()<i||e.value&&o(600)}return E(e,e=>{if(!e){clearTimeout(r??void 0),t.value=!0;return}o()}),_(()=>clearTimeout(r??void 0)),{showHUD:t,isOpen:n,scheduleHide:o,pauseHide:s,onVideoTap:d,onMouseMove:f,onMouseLeave:p,openControls:c,closeControls:l,keepOpen:u,suppressMouseLeave:a}}const J=Symbol(`player`),Y=Symbol(`hud`),at=Symbol(`action`),ot=Symbol(`compact`),X=Symbol(`playlist`);function Z(e){let t=d(e);if(t===void 0)throw Error(`[video-player] missing "${String(e.description)}" context — this component must be rendered inside <VideoPlayer>`);return t}function st(e,t){return{hudVisible:n(()=>!e.isReady||e.isError?!1:t.showHUD),popupVisible:n(()=>!e.isReady||e.isError?!1:e.isFullscreen?t.showHUD:t.isOpen)}}function ct(e,t){return n(()=>!(!e?.value||t.isFullscreen))}function lt(e,t,r){let i=n(()=>e?.value??null),a=n(()=>!!i.value&&typeof i.value==`object`),o=n(()=>a.value?i.value:null),s=n(()=>i.value===`mute`?t.isMuted?`Unmute`:`Mute`:i.value===`loop`?t.isLooping?`Disable loop`:`Loop`:i.value===`autoplay`?r.autoAdvance?`Disable autoplay next`:`Autoplay next`:``),c=n(()=>i.value===`mute`?t.isMuted:i.value===`loop`?t.isLooping:i.value===`autoplay`&&r.autoAdvance);function l(){i.value===`mute`?t.toggleMute():i.value===`loop`?t.toggleLoop():i.value===`autoplay`&&r.toggleAutoAdvance()}return{currentAction:i,isCustom:a,customAction:o,builtinLabel:s,builtinActive:c,onBuiltinClick:l}}var Q=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n};const ut={},dt={viewBox:`0 0 24 24`,fill:`currentColor`};function ft(e,t){return y(),a(`svg`,dt,[...t[0]||=[o(`path`,{d:`M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z`},null,-1)]])}var pt=Q(ut,[[`render`,ft]]);const mt={},ht={viewBox:`0 0 24 24`,fill:`currentColor`};function gt(e,t){return y(),a(`svg`,ht,[...t[0]||=[o(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`},null,-1)]])}var _t=Q(mt,[[`render`,gt]]);const vt={},yt={viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function bt(e,t){return y(),a(`svg`,yt,[...t[0]||=[s(`<line x1="4" y1="6" x2="20" y2="6"></line><line x1="4" y1="12" x2="20" y2="12"></line><line x1="4" y1="18" x2="20" y2="18"></line><circle cx="9" cy="6" r="2.5" fill="currentColor" stroke="none"></circle><circle cx="15" cy="12" r="2.5" fill="currentColor" stroke="none"></circle><circle cx="9" cy="18" r="2.5" fill="currentColor" stroke="none"></circle>`,6)]])}var xt=Q(vt,[[`render`,bt]]);const St={},Ct={viewBox:`0 0 24 24`,fill:`currentColor`};function wt(e,t){return y(),a(`svg`,Ct,[...t[0]||=[o(`path`,{d:`M4 12l1.41 1.41L11 7.83V20h2V7.83l5.59 5.58L20 12l-8-8-8 8z`},null,-1)]])}var Tt=Q(St,[[`render`,wt]]);const Et={},Dt={viewBox:`0 0 24 24`,fill:`currentColor`};function Ot(e,t){return y(),a(`svg`,Dt,[...t[0]||=[o(`path`,{d:`M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z`},null,-1)]])}var kt=Q(Et,[[`render`,Ot]]);const At={},jt={viewBox:`0 0 24 24`,fill:`currentColor`};function Mt(e,t){return y(),a(`svg`,jt,[...t[0]||=[o(`path`,{d:`M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z`},null,-1)]])}var Nt=Q(At,[[`render`,Mt]]);const Pt={},Ft={viewBox:`0 0 24 24`,fill:`currentColor`};function It(e,t){return y(),a(`svg`,Ft,[...t[0]||=[o(`path`,{d:`M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z`},null,-1)]])}var Lt=Q(Pt,[[`render`,It]]);const Rt={},zt={viewBox:`0 0 24 24`,fill:`currentColor`};function Bt(e,t){return y(),a(`svg`,zt,[...t[0]||=[o(`circle`,{cx:`5`,cy:`12`,r:`2`},null,-1),o(`circle`,{cx:`12`,cy:`12`,r:`2`},null,-1),o(`circle`,{cx:`19`,cy:`12`,r:`2`},null,-1)]])}var Vt=Q(Rt,[[`render`,Bt]]);const Ht={},Ut={viewBox:`0 0 24 24`,fill:`currentColor`};function Wt(e,t){return y(),a(`svg`,Ut,[...t[0]||=[o(`path`,{d:`M6 19h4V5H6v14zm8-14v14h4V5h-4z`},null,-1)]])}var Gt=Q(Ht,[[`render`,Wt]]);const Kt={},qt={viewBox:`0 0 24 24`,fill:`currentColor`};function Jt(e,t){return y(),a(`svg`,qt,[...t[0]||=[o(`path`,{d:`M8 5v14l11-7z`},null,-1)]])}var Yt=Q(Kt,[[`render`,Jt]]);const Xt={},Zt={viewBox:`0 0 24 24`,fill:`currentColor`};function Qt(e,t){return y(),a(`svg`,Zt,[...t[0]||=[o(`path`,{d:`M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z`},null,-1)]])}var $t=Q(Xt,[[`render`,Qt]]);const en={},tn={viewBox:`0 0 24 24`,fill:`currentColor`};function nn(e,t){return y(),a(`svg`,tn,[...t[0]||=[o(`path`,{d:`M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z`},null,-1)]])}var rn=Q(en,[[`render`,nn]]);const an={},on={viewBox:`0 0 24 24`,fill:`currentColor`};function sn(e,t){return y(),a(`svg`,on,[...t[0]||=[o(`path`,{d:`M16.5 12A4.5 4.5 0 0 0 14 7.97v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51A8.796 8.796 0 0 0 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.06A8.99 8.99 0 0 0 17.73 18L19 19.27 20.27 18 5.27 3 4.27 3zM12 4L9.91 6.09 12 8.18V4z`},null,-1)]])}var cn=Q(an,[[`render`,sn]]);const ln={},un={viewBox:`0 0 24 24`,fill:`currentColor`};function dn(e,t){return y(),a(`svg`,un,[...t[0]||=[o(`path`,{d:`M3 9v6h4l5 5V4L7 9H3zm13.5 3A4.5 4.5 0 0 0 14 7.97v8.05c1.48-.73 2.5-2.25 2.5-4.02z`},null,-1)]])}var fn=Q(ln,[[`render`,dn]]);const pn=[`aria-label`];var $=Q(u({__name:`PlayPauseButton`,props:{isPlaying:{type:Boolean,required:!0},hasEnded:{type:Boolean,required:!1,default:!1},size:{type:String,required:!1,default:`sm`}},emits:[`toggle-play`],setup(e){let t=e,i=n(()=>t.isPlaying?`Pause`:t.hasEnded?`Replay`:`Play`);return(t,n)=>(y(),a(`button`,{class:m([`ppbtn`,`ppbtn--${e.size}`]),"aria-label":i.value,onClick:n[0]||=O(e=>t.$emit(`toggle-play`),[`stop`])},[e.isPlaying?(y(),r(T(Gt),{key:0})):e.hasEnded?(y(),r(T($t),{key:1})):(y(),r(T(Yt),{key:2}))],10,pn))}}),[[`__scopeId`,`data-v-85902525`]]),mn=u({__name:`VolumeIcon`,setup(e){let t=Z(J),i=n(()=>!t.isMuted&&t.vol>0);return(e,t)=>i.value?(y(),r(T(fn),{key:0})):(y(),r(T(cn),{key:1}))}}),hn=Q(u({__name:`Spinner`,props:{size:{type:Number,required:!1,default:14},borderWidth:{type:Number,required:!1,default:2}},setup(e){return(t,n)=>(y(),a(`div`,{class:`spinner`,style:g({width:`${e.size}px`,height:`${e.size}px`,borderWidth:`${e.borderWidth}px`})},null,4))}}),[[`__scopeId`,`data-v-259be2b2`]]);const gn={class:`hud`},_n=[`aria-label`],vn=[`aria-label`],yn=[`aria-label`],bn=[`aria-label`,`innerHTML`],xn={key:4,class:`hud__spacer`},Sn={class:`hud__play-wrap`};var Cn=Q(u({__name:`HudButtons`,setup(t){let n=Z(J),s=Z(Y),{currentAction:c,isCustom:u,customAction:f,builtinLabel:p,builtinActive:h,onBuiltinClick:g}=lt(d(at),n,Z(X));return(t,d)=>(y(),a(`div`,gn,[!T(s).isOpen&&!T(n).isFullscreen?(y(),a(e,{key:0},[T(c)===`mute`?(y(),a(`button`,{key:0,class:m([`hud__btn`,{"hud__btn--active":T(h)}]),"aria-label":T(p),onClick:d[0]||=O((...e)=>T(g)&&T(g)(...e),[`stop`])},[l(mn)],10,_n)):T(c)===`loop`?(y(),a(`button`,{key:1,class:m([`hud__btn`,{"hud__btn--active":T(h)}]),"aria-label":T(p),onClick:d[1]||=O((...e)=>T(g)&&T(g)(...e),[`stop`])},[l(T(Lt))],10,vn)):T(c)===`autoplay`?(y(),a(`button`,{key:2,class:m([`hud__btn`,{"hud__btn--active":T(h)}]),"aria-label":T(p),onClick:d[2]||=O((...e)=>T(g)&&T(g)(...e),[`stop`])},[l(T(rn))],10,yn)):T(u)&&T(f)?(y(),a(`button`,{key:3,class:`hud__btn`,"aria-label":T(f).label,onClick:d[3]||=O(e=>T(f).onClick(),[`stop`]),innerHTML:T(f).icon},null,8,bn)):(y(),a(`div`,xn))],64)):i(`v-if`,!0),o(`div`,Sn,[l($,{"is-playing":T(n).isPlaying,"has-ended":T(n).hasEnded,size:`lg`,onTogglePlay:T(n).togglePlay},null,8,[`is-playing`,`has-ended`,`onTogglePlay`]),T(n).isBuffering?(y(),r(hn,{key:0,class:`hud__buf-spinner`})):i(`v-if`,!0)]),!T(s).isOpen&&!T(n).isFullscreen?(y(),a(`button`,{key:1,class:`hud__btn`,"aria-label":`Show controls`,onClick:d[4]||=O((...e)=>T(s).openControls&&T(s).openControls(...e),[`stop`])},[l(T(xt))])):i(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-a6d118e7`]]);function wn(e){let t=S(null),r=n(()=>t.value??e.progress),i=null;function a(){i&&clearTimeout(i),i=null,t.value=null}function o(e){i&&clearTimeout(i),i=null,t.value=Number(e.target.value)}function s(n){let r=Number(n.target.value);t.value=r,e.seek(r),i&&clearTimeout(i),i=setTimeout(a,3e3)}return E(()=>e.current,()=>{if(t.value===null||!e.total)return;let n=t.value/100*e.total;Math.abs(e.current-n)<1&&a()}),_(a),{displaySeek:r,onSeekInput:o,onSeekChange:s}}function Tn(e,t,n){if(!document.startViewTransition||!e.value){n();return}e.value.style.viewTransitionName=t,document.startViewTransition(async()=>{n(),await p()}).finished.finally(()=>{e.value&&(e.value.style.viewTransitionName=``)})}const En={class:`controls__vol-header`},Dn=[`aria-label`],On={class:`controls__vol-body`},kn=[`value`],An={class:`controls__vol-pct`};var jn=Q(u({__name:`VolumePanel`,emits:[`back`],setup(t){let r=Z(J),i=Z(Y),s=n(()=>r.isMuted?0:Math.round(r.vol*100));function c(e){r.setVolume(Number(e.target.value)/100)}return(t,n)=>(y(),a(e,null,[o(`div`,En,[o(`button`,{class:`controls__btn`,"aria-label":`Back`,onClick:n[0]||=e=>t.$emit(`back`)},[l(T(pt))]),n[6]||=o(`span`,{class:`controls__vol-label`},`Volume`,-1),o(`button`,{class:`controls__btn`,"aria-label":T(r).isMuted?`Unmute`:`Mute`,onClick:n[1]||=e=>T(r).toggleMute()},[l(mn)],8,Dn)]),o(`div`,On,[o(`input`,{type:`range`,min:`0`,max:`100`,step:`1`,value:s.value,class:`controls__vol-slider`,style:g({"--v":s.value+`%`}),"aria-label":`Volume`,onInput:c,onMousedown:n[2]||=e=>T(i).pauseHide(),onMouseup:n[3]||=e=>T(i).scheduleHide(),onTouchstartPassive:n[4]||=e=>T(i).pauseHide(),onTouchend:n[5]||=e=>T(i).scheduleHide()},null,44,kn),o(`span`,An,C(s.value)+`%`,1)])],64))}}),[[`__scopeId`,`data-v-10b0ae67`]]);function Mn(e){function t(){let t=K.indexOf(e.playbackRate);e.setPlaybackRate(K[(t+1)%K.length])}function n(e){return`${e}×`}return{cycleRate:t,fmtRate:n}}const Nn={class:`controls__more-header`},Pn={class:`controls__more-body`},Fn={class:`controls__more-value`},In={class:`controls__more-row-label`},Ln={class:`controls__more-value`},Rn={class:`controls__more-row-label`},zn={class:`controls__more-value`},Bn=[`aria-label`],Vn={class:`controls__more-row-label`},Hn=[`innerHTML`];var Un=Q(u({__name:`MoreMenu`,props:{isCustom:{type:Boolean,required:!0},customAction:{type:[Object,null],required:!0}},emits:[`back`],setup(t){let n=Z(J),r=Z(X),{cycleRate:s,fmtRate:u}=Mn(n);return(d,f)=>(y(),a(e,null,[o(`div`,Nn,[o(`button`,{class:`controls__btn`,"aria-label":`Back`,onClick:f[0]||=e=>d.$emit(`back`)},[l(T(pt))]),f[5]||=o(`span`,{class:`controls__more-label`},`More`,-1)]),o(`div`,Pn,[T(n).supportsPlaybackRate?(y(),a(`button`,{key:0,class:`controls__more-row`,"aria-label":`Playback speed`,onClick:f[1]||=(...e)=>T(s)&&T(s)(...e)},[f[6]||=o(`span`,null,`Playback speed`,-1),o(`span`,Fn,C(T(u)(T(n).playbackRate)),1)])):i(`v-if`,!0),o(`button`,{class:m([`controls__more-row`,{"controls__more-row--active":T(n).isLooping}]),"aria-label":`Toggle loop`,onClick:f[2]||=e=>T(n).toggleLoop()},[o(`span`,In,[l(T(Lt),{class:`controls__more-row-icon`}),f[7]||=c(`Loop`,-1)]),o(`span`,Ln,C(T(n).isLooping?`On`:`Off`),1)],2),T(r).hasPlaylist?(y(),a(`button`,{key:1,class:m([`controls__more-row`,{"controls__more-row--active":T(r).autoAdvance}]),"aria-label":`Toggle autoplay next`,onClick:f[3]||=e=>T(r).toggleAutoAdvance()},[o(`span`,Rn,[l(T(rn),{class:`controls__more-row-icon`}),f[8]||=c(`Autoplay next`,-1)]),o(`span`,zn,C(T(r).autoAdvance?`On`:`Off`),1)],2)):i(`v-if`,!0),t.isCustom&&t.customAction?(y(),a(`button`,{key:2,class:`controls__more-row`,"aria-label":t.customAction.label,onClick:f[4]||=e=>t.customAction.onClick()},[o(`span`,Vn,[o(`span`,{class:`controls__more-row-icon`,innerHTML:t.customAction.icon},null,8,Hn),c(C(t.customAction.label),1)])],8,Bn)):i(`v-if`,!0)])],64))}}),[[`__scopeId`,`data-v-e89a8208`]]);const Wn=[`value`],Gn={class:`controls__row`},Kn={class:`controls__play-wrap`},qn={key:0,class:`controls__live`},Jn={key:1,class:`controls__time`},Yn={class:`controls__fs-wrap`},Xn=[`aria-label`];var Zn=Q(u({__name:`ControlsPopup`,setup(t){let n=Z(J),s=Z(Y),u=Z(X),f=ct(d(ot),n),{isCustom:p,customAction:h}=lt(d(at),n,u),b=S(!1),x=S(!1),w=S(null);function E(e){return!w.value||w.value.contains(e)?!1:(s.closeControls(),!0)}function D(e){E(e.target)}function A(e){E(e.target)&&e.preventDefault()}v(()=>{n.fire(`controlsopen`,{element:w.value}),document.addEventListener(`click`,D,!0),document.addEventListener(`touchend`,A,!0)}),_(()=>{b.value=!1,x.value=!1,n.fire(`controlsclose`,{element:w.value}),document.removeEventListener(`click`,D,!0),document.removeEventListener(`touchend`,A,!0)});function j(e){s.suppressMouseLeave(),Tn(w,`controls-popup`,e)}function M(){if(k()){n.toggleMute();return}j(()=>{b.value=!0})}function N(){j(()=>{x.value=!0})}let{displaySeek:P,onSeekInput:F,onSeekChange:I}=wn(n);function L(){n.isFullscreen||n.markFullscreenPending(),n.toggleFullscreen()}return(t,d)=>(y(),a(`div`,{ref_key:`popupEl`,ref:w,class:m([`controls`,{"controls--fs":T(n).isFullscreen,"controls--compact":T(f)}]),onMousemove:d[10]||=O((...e)=>T(s).keepOpen&&T(s).keepOpen(...e),[`stop`])},[b.value?(y(),r(jn,{key:0,onBack:d[0]||=e=>j(()=>b.value=!1)})):x.value?(y(),r(Un,{key:1,"is-custom":T(p),"custom-action":T(h),onBack:d[1]||=e=>j(()=>x.value=!1)},null,8,[`is-custom`,`custom-action`])):(y(),a(e,{key:2},[T(n).isLive?i(`v-if`,!0):(y(),a(`input`,{key:0,type:`range`,min:`0`,max:`100`,value:T(P),class:`controls__seek`,style:g({"--p":T(P)+`%`,"--b":T(n).bufferedDisplay+`%`}),onInput:d[2]||=(...e)=>T(F)&&T(F)(...e),onChange:d[3]||=(...e)=>T(I)&&T(I)(...e),onMousedown:d[4]||=e=>T(s).pauseHide(),onMouseup:d[5]||=e=>T(s).scheduleHide(),onTouchstartPassive:d[6]||=e=>T(s).pauseHide(),onTouchend:d[7]||=e=>T(s).scheduleHide()},null,44,Wn)),o(`div`,Gn,[o(`div`,Kn,[T(n).isBuffering?(y(),r(hn,{key:0})):(y(),r($,{key:1,"is-playing":T(n).isPlaying,"has-ended":T(n).hasEnded,size:`sm`,onTogglePlay:d[8]||=e=>T(n).togglePlay()},null,8,[`is-playing`,`has-ended`]))]),T(n).isLive?(y(),a(`span`,qn,[...d[11]||=[o(`span`,{class:`controls__live-dot`},null,-1),c(`Live`,-1)]])):(y(),a(`span`,Jn,C(T(n).fmt(T(n).current))+` / `+C(T(n).fmt(T(n).total)),1)),T(u).hasNext?(y(),a(`button`,{key:2,class:`controls__btn`,"aria-label":`Play next`,onClick:d[9]||=e=>T(u).playNext()},[l(T(rn))])):i(`v-if`,!0),o(`button`,{class:`controls__btn`,"aria-label":`Volume`,onClick:M},[l(mn)]),o(`button`,{class:m([`controls__btn controls__btn--more`,{"controls__btn--active":T(n).isLooping||T(n).playbackRate!==1||T(u).autoAdvance}]),"aria-label":`More`,onClick:N},[l(T(Vt))],2),o(`div`,Yn,[T(n).isFullscreenPending?(y(),r(hn,{key:0})):(y(),a(`button`,{key:1,class:`controls__btn`,"aria-label":T(n).isFullscreen?`Exit fullscreen`:`Fullscreen`,onClick:L},[T(n).isFullscreen?(y(),r(T(Nt),{key:0})):(y(),r(T(kt),{key:1}))],8,Xn))])])],64))],34))}}),[[`__scopeId`,`data-v-5712aad4`]]);const Qn={class:`ad-overlay`},$n={class:`ad-overlay__bar`},er={class:`ad-overlay__badge`},tr={key:0,class:`ad-overlay__countdown`},nr=[`aria-label`],rr={key:0,class:`ad-overlay__resume`};var ir=Q(u({__name:`AdOverlay`,setup(e){let t=Z(J),s=n(()=>t.adRemainingTime>0?t.fmt(t.adRemainingTime):``);return(e,n)=>(y(),a(`div`,Qn,[o(`div`,$n,[o(`div`,er,[n[2]||=o(`span`,null,`Ad`,-1),s.value?(y(),a(`span`,tr,C(s.value),1)):i(`v-if`,!0)]),o(`button`,{class:`ad-overlay__mute`,"aria-label":T(t).isAdMuted?`Unmute ad`:`Mute ad`,onClick:n[0]||=e=>T(t).toggleAdMute()},[T(t).isAdMuted?(y(),r(T(cn),{key:0})):(y(),r(T(fn),{key:1}))],8,nr)]),T(t).isAdPaused?(y(),a(`div`,rr,[l($,{"is-playing":!1,size:`lg`,onTogglePlay:n[1]||=e=>T(t).togglePlay()})])):i(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-23efcc8b`]]);const ar={key:0,class:`overlay__spinner`},or={key:0,class:`overlay__error`};var sr=Q(u({__name:`PlayerOverlay`,props:{disableTapCapture:{type:Boolean,required:!1,default:!1}},setup(n){let s=Z(J),c=Z(Y),{hudVisible:u,popupVisible:d}=st(s,c);function f(){if(s.isAdPlaying&&s.isAdPaused){s.togglePlay();return}c.onVideoTap()}return(c,p)=>(y(),a(e,null,[!n.disableTapCapture&&T(s).hasStarted&&!(T(s).isAdPlaying&&!T(s).isAdPaused)?(y(),a(`div`,{key:0,class:`overlay__tap-capture`,onClick:f,onTouchend:O(f,[`prevent`,`stop`])},null,32)):i(`v-if`,!0),T(s).isAdPlaying?(y(),r(ir,{key:1})):i(`v-if`,!0),l(t,{name:`fade`},{default:D(()=>[!T(s).isReady&&!T(s).isError?(y(),a(`div`,ar,[l(hn,{size:40,"border-width":3})])):i(`v-if`,!0)]),_:1}),l(t,{name:`fade`},{default:D(()=>[T(s).isError?(y(),a(`div`,or,[o(`p`,null,C(T(s).errorMessage||`This video could not be played.`),1),o(`button`,{class:`overlay__retry`,onClick:p[0]||=O((...e)=>T(s).retry&&T(s).retry(...e),[`stop`])},`Retry`)])):i(`v-if`,!0)]),_:1}),o(`div`,{class:m([`overlay__hud`,{"overlay__hud--visible":T(u)}])},[l(Cn)],2),l(t,{name:`popup`},{default:D(()=>[T(d)?(y(),a(`div`,{key:0,class:m([`overlay__popup`,{"overlay__popup--fs":T(s).isFullscreen}])},[l(Zn)],2)):i(`v-if`,!0)]),_:1})],64))}}),[[`__scopeId`,`data-v-f3307b98`]]);const cr={class:`player`},lr={"data-mvp-player":``},ur=[`poster`],dr={key:1,class:`player__native-play`};var fr=Q(u({__name:`VideoPlayer`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1,default:``},poster:{type:String,required:!1,default:``},aspectRatio:{type:String,required:!1,default:G},adTagUrl:{type:String,required:!1,default:``},autoplay:{type:Boolean,required:!1,default:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1,default:!1},autoStage:{type:Boolean,required:!1,default:!1},lazy:{type:Boolean,required:!1,default:!1},payload:{type:Object,required:!1,default:()=>({})},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1,default:!1},hasPlaylist:{type:Boolean,required:!1,default:!1},hasNext:{type:Boolean,required:!1,default:!1},hasPrevious:{type:Boolean,required:!1,default:!1},autoAdvance:{type:Boolean,required:!1,default:!1}},emits:[`state-change`,`play-next`,`play-previous`,`toggle-auto-advance`],setup(e,{expose:t,emit:s}){let c=e,u=s,d=S(null),f=x(rt(d,c,u)),p=x(it(w(f,`isPlaying`)));b(J,f),b(Y,p),b(at,w(c,`action`)),b(X,x({hasPlaylist:n(()=>c.hasPlaylist),hasNext:n(()=>c.hasNext),hasPrevious:n(()=>c.hasPrevious),autoAdvance:n(()=>c.autoAdvance),playNext:()=>u(`play-next`),playPrevious:()=>u(`play-previous`),toggleAutoAdvance:()=>u(`toggle-auto-advance`)}));let h=n(()=>M(c.aspectRatio)),_=n(()=>h.value.isPortrait),v=n(()=>h.value.cssRatio),C=n(()=>!c.poster&&!f.isReady);return t(f),(e,t)=>(y(),a(`div`,cr,[o(`div`,{class:m([`player__shell`,{"player__shell--portrait":_.value}]),style:g({aspectRatio:v.value}),onMousemove:t[0]||=e=>p.onMouseMove(),onContextmenuCapture:t[1]||=O(()=>{},[`prevent`]),onMouseleave:t[2]||=e=>p.onMouseLeave()},[o(`div`,lr,[o(`video`,{ref_key:`videoEl`,ref:d,class:m([`mvp-video`,{"mvp-video--hidden":C.value}]),poster:c.poster,playsinline:``},null,10,ur),f.nativeUi?i(`v-if`,!0):(y(),r(sr,{key:0,"disable-tap-capture":c.disableTapCapture},null,8,[`disable-tap-capture`])),f.nativeUi&&!f.hasStarted?(y(),a(`div`,dr,[l($,{"is-playing":!1,size:`lg`,onTogglePlay:f.togglePlay},null,8,[`onTogglePlay`])])):i(`v-if`,!0)])],38)]))}}),[[`__scopeId`,`data-v-4ab3cf75`]]);const pr=S(0),mr=n(()=>pr.value>0);function hr(){pr.value++}function gr(){pr.value--}function _r(e,t){window.dispatchEvent(new CustomEvent(e,{detail:t}))}function vr(e,t){let n=e=>t(e.detail);v(()=>window.addEventListener(e,n)),_(()=>window.removeEventListener(e,n))}function yr(e,t){let r=n(()=>!e.value||!t.value?-1:e.value.findIndex(e=>e.videoUrl===t.value?.videoUrl)),i=n(()=>r.value===-1||!e.value?null:e.value[r.value+1]??null),a=n(()=>r.value<=0||!e.value?null:e.value[r.value-1]??null);return{hasNext:n(()=>i.value!==null),hasPrevious:n(()=>a.value!==null),nextEntry:i,previousEntry:a}}function br(){return localStorage.getItem(B)===`true`}function xr(e){localStorage.setItem(B,String(e))}const Sr=[`src`],Cr={class:`stage__idle-body`},wr={class:`stage__idle-btn`},Tr={class:`stage__idle-title`},Er={key:1,class:`stage__idle-empty`};var Dr=Q(u({__name:`VideoStage`,props:{pinPosition:{type:String,required:!1,default:`bottom-right`},playlist:{type:Array,required:!1}},emits:[`state-change`],setup(t,{expose:s,emit:c}){let u=t,d=c,p=S(br());E(p,xr);let h=n(()=>!!u.playlist?.length),x=S(null),D=S(null),k=S(!1),A=S(!1),j=S(null),N=S(null),P=S(!1);b(ot,P);let{hasNext:F,hasPrevious:R,nextEntry:z,previousEntry:B}=yr(w(u,`playlist`),D),V=n(()=>P.value&&!!D.value&&k.value),ee=n(()=>M(D.value?.aspectRatio||`16:9`).cssRatio),H=S(null),U=S(null);E(P,e=>{H.value=e&&N.value?{height:N.value.offsetHeight,width:N.value.offsetWidth}:null});let W=n(()=>{if(!H.value)return{};let{height:e,width:t}=H.value,n=U.value&&t?U.value/t:1;return{height:`${Math.round(e*n)}px`}}),G=null,K=null;function te(){G?.disconnect(),K?.disconnect(),j.value&&(G=new IntersectionObserver(([e])=>{P.value=!e.isIntersecting},{threshold:1}),G.observe(j.value),K=new ResizeObserver(([e])=>{U.value=e.contentRect.width}),K.observe(j.value))}E(j,te);function ne(){D.value&&(D.value={...D.value,autoplay:!0},k.value=!0)}function re(){j.value?.scrollIntoView({behavior:`smooth`,block:`center`})}function ie(){D.value=null,k.value=!1,A.value=!1,P.value=!1,H.value=null,ae()}function ae(){_r(L,{currentVideoUrl:D.value?.videoUrl??null,isPlaying:A.value})}function oe(e){if(D.value?.videoUrl===e.videoUrl&&k.value){x.value?.togglePlay();return}D.value=e,k.value=!1,A.value=!1,ae(),k.value=!0}function se(e){if(!(!D.value||e.videoUrl!==D.value.videoUrl)){if(!k.value){D.value={...D.value,autoplay:!0},k.value=!0;return}x.value?.togglePlay()}}function ce(){z.value&&oe({...z.value,autoplay:!0})}function le(){B.value&&oe({...B.value,autoplay:!0})}function ue(e){e.type===`play`&&(A.value=!0),(e.type===`pause`||e.type===`ended`)&&(A.value=!1),e.type===`ended`&&p.value&&ce(),ae(),d(`state-change`,e)}return vr(I,oe),vr(`video-toggle`,se),v(hr),_(()=>{gr(),G?.disconnect(),K?.disconnect()}),s({playNext:ce,playPrevious:le,hasNext:F,hasPrevious:R}),(n,s)=>(y(),a(`div`,{ref_key:`wrapperEl`,ref:j,class:`stage-wrapper`,style:g(W.value)},[o(`div`,{ref_key:`stageEl`,ref:N,class:m([`stage`,{"stage--minified":V.value,[`stage--pin-${t.pinPosition}`]:V.value}])},[V.value?(y(),a(`button`,{key:0,class:`stage__scroll-to`,"aria-label":`Scroll to player`,onClick:O(re,[`stop`])},[l(T(Tt))])):i(`v-if`,!0),V.value?(y(),a(`button`,{key:1,class:`stage__dismiss`,"aria-label":`Close`,onClick:O(ie,[`stop`])},[l(T(_t))])):i(`v-if`,!0),D.value&&k.value?(y(),r(fr,f({ref_key:`playerRef`,ref:x,key:D.value.videoUrl},D.value,{"has-playlist":h.value,"has-next":T(F),"has-previous":T(R),"auto-advance":p.value,onStateChange:ue,onPlayNext:ce,onPlayPrevious:le,onToggleAutoAdvance:s[0]||=e=>p.value=!p.value}),null,16,[`has-playlist`,`has-next`,`has-previous`,`auto-advance`])):(y(),a(`div`,{key:3,class:`stage__idle`,style:g({aspectRatio:ee.value}),onClick:ne},[D.value?.poster?(y(),a(`img`,{key:0,src:D.value.poster,class:`stage__idle-poster`},null,8,Sr)):i(`v-if`,!0),s[1]||=o(`div`,{class:`stage__idle-scrim`},null,-1),o(`div`,Cr,[D.value?(y(),a(e,{key:0},[o(`div`,wr,[l(T(Yt))]),o(`p`,Tr,C(D.value.title),1)],64)):(y(),a(`p`,Er,`Select a video to play`))])],4))],2)],4))}}),[[`__scopeId`,`data-v-fb8c86cf`]]);const Or={class:`placeholder`},kr=[`src`,`alt`],Ar={class:`placeholder__btn-wrap`},jr={key:1,class:`placeholder__footer`},Mr={class:`placeholder__title`};var Nr=Q(u({__name:`VideoPlaceholder`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1,default:``},poster:{type:String,required:!1,default:``},aspectRatio:{type:String,required:!1,default:G},adTagUrl:{type:String,required:!1,default:``},autoplay:{type:Boolean,required:!1,default:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1,default:!1},autoStage:{type:Boolean,required:!1,default:!1},lazy:{type:Boolean,required:!1},payload:{type:Object,required:!1,default:()=>({})},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1}},setup(e){let t=e,r=n(()=>M(t.aspectRatio)),s=n(()=>r.value.isPortrait),c=n(()=>r.value.cssRatio),u=S(!1),d=S(!1);vr(L,e=>{u.value=e.currentVideoUrl===t.videoUrl,d.value=u.value&&e.isPlaying});function f(e){_r(I,{...t,...e!==void 0&&{autoplay:e}})}function p(){f(!0)}return v(()=>{t.autoStage&&f()}),(t,n)=>(y(),a(`div`,Or,[o(`div`,{class:m([`placeholder__shell`,{"placeholder__shell--portrait":s.value,"placeholder__shell--active":u.value}]),style:g({aspectRatio:c.value}),onClick:p},[e.poster?(y(),a(`img`,{key:0,class:`placeholder__poster`,src:e.poster,alt:e.title},null,8,kr)):i(`v-if`,!0),n[0]||=o(`div`,{class:`placeholder__scrim`},null,-1),o(`div`,Ar,[l($,{"is-playing":u.value&&d.value,size:`lg`,onTogglePlay:p},null,8,[`is-playing`])]),e.title?(y(),a(`div`,jr,[o(`p`,Mr,C(e.title),1)])):i(`v-if`,!0)],6)]))}}),[[`__scopeId`,`data-v-dbcb4f82`]]),Pr=u({__name:`VideoItem`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1},poster:{type:String,required:!1},aspectRatio:{type:String,required:!1},adTagUrl:{type:String,required:!1},autoplay:{type:Boolean,required:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1},autoStage:{type:Boolean,required:!1},lazy:{type:Boolean,required:!1,default:!0},payload:{type:Object,required:!1},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1}},emits:[`state-change`],setup(t,{emit:n}){let i=t,o=n,s=S(!1);return(t,n)=>T(mr)?(y(),r(Nr,h(f({key:0},i)),null,16)):(y(),a(e,{key:1},[i.lazy&&!s.value&&!i.autoplay?(y(),r(Nr,f({key:0},i,{onClickCapture:n[0]||=e=>s.value=!0}),null,16)):(y(),r(fr,f({key:1},i,{autoplay:s.value||i.autoplay,onStateChange:n[1]||=e=>o(`state-change`,e)}),null,16,[`autoplay`]))],64))}});const Fr={install(e){e.component(`VideoPlayer`,fr),e.component(`VideoStage`,Dr),e.component(`VideoPlaceholder`,Nr),e.component(`VideoItem`,Pr)}};export{at as ActionKey,ot as CompactKey,Y as HudKey,J as PlayerKey,X as PlaylistKey,Pr as VideoItem,Nr as VideoPlaceholder,fr as VideoPlayer,Fr as VideoPlayerPlugin,Fr as default,Dr as VideoStage,je as getPlatform,Z as injectStrict};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@munsonlabs/video-player",
3
- "version": "0.0.11",
3
+ "version": "0.0.12",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "dist"