@munsonlabs/video-player 0.2.4 → 0.2.6

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.
Files changed (48) hide show
  1. package/README.md +6 -680
  2. package/dist/chunks/{ads-BV769SMr.mjs → ads-Dph3guS9.mjs} +1 -1
  3. package/dist/{elements/chunks/brightcove-rNI-XRxB.mjs → chunks/brightcove-DiJF_74z.mjs} +1 -1
  4. package/dist/chunks/constants-35ZnLsDv.mjs +1 -0
  5. package/dist/chunks/dailymotion-DTooszoV.mjs +1 -0
  6. package/dist/chunks/embedShared-CbArTtuR.mjs +1 -0
  7. package/dist/chunks/{jwplayer-WIkwoJTA.mjs → jwplayer-Dhq65VxK.mjs} +1 -1
  8. package/dist/chunks/loadScript-CxzeXqTe.mjs +1 -0
  9. package/dist/chunks/{sourceHelpers-rbs6D6ZG.mjs → sourceHelpers-B0tH-grj.mjs} +1 -1
  10. package/dist/chunks/vimeo-D0GAjId0.mjs +1 -0
  11. package/dist/chunks/youtube-B8AT2F-4.mjs +1 -0
  12. package/dist/elements/chunks/{ads-BV769SMr.mjs → ads-Dph3guS9.mjs} +1 -1
  13. package/dist/{chunks/brightcove-rNI-XRxB.mjs → elements/chunks/brightcove-DiJF_74z.mjs} +1 -1
  14. package/dist/elements/chunks/constants-35ZnLsDv.mjs +1 -0
  15. package/dist/elements/chunks/dailymotion-DTooszoV.mjs +1 -0
  16. package/dist/elements/chunks/embedShared-CbArTtuR.mjs +1 -0
  17. package/dist/elements/chunks/font-KFHs3p_4-KFHs3p_4.mjs +1 -0
  18. package/dist/elements/chunks/{jwplayer-WIkwoJTA.mjs → jwplayer-Dhq65VxK.mjs} +1 -1
  19. package/dist/elements/chunks/loadScript-CxzeXqTe.mjs +1 -0
  20. package/dist/elements/chunks/{sourceHelpers-rbs6D6ZG.mjs → sourceHelpers-B0tH-grj.mjs} +1 -1
  21. package/dist/elements/chunks/svg-C5y9tsRK-D3IfNKbR.mjs +1 -0
  22. package/dist/elements/chunks/vimeo-D0GAjId0.mjs +1 -0
  23. package/dist/elements/chunks/youtube-B8AT2F-4.mjs +1 -0
  24. package/dist/elements/controls.css +1 -1
  25. package/dist/elements/controls.d.mts +166 -38
  26. package/dist/elements/controls.mjs +1 -1
  27. package/dist/elements/core.css +1 -1
  28. package/dist/elements/core.d.mts +23 -31
  29. package/dist/elements/core.mjs +1 -1
  30. package/dist/elements/index.d.mts +133 -69
  31. package/dist/elements/index.mjs +1 -1
  32. package/dist/elements/style.css +1 -1
  33. package/dist/index.d.mts +203 -209
  34. package/dist/index.mjs +1 -1
  35. package/dist/style.css +1 -1
  36. package/package.json +8 -5
  37. package/dist/chunks/constants-zR-UwEWY.mjs +0 -1
  38. package/dist/chunks/dailymotion-gEquA4h5.mjs +0 -1
  39. package/dist/chunks/embedShared-duyOYFQN.mjs +0 -1
  40. package/dist/chunks/loadScript-Du6JsTc2.mjs +0 -1
  41. package/dist/chunks/vimeo-WJYDJPA3.mjs +0 -1
  42. package/dist/chunks/youtube-DbJ-IrvP.mjs +0 -1
  43. package/dist/elements/chunks/constants-zR-UwEWY.mjs +0 -1
  44. package/dist/elements/chunks/dailymotion-gEquA4h5.mjs +0 -1
  45. package/dist/elements/chunks/embedShared-duyOYFQN.mjs +0 -1
  46. package/dist/elements/chunks/loadScript-Du6JsTc2.mjs +0 -1
  47. package/dist/elements/chunks/vimeo-WJYDJPA3.mjs +0 -1
  48. package/dist/elements/chunks/youtube-DbJ-IrvP.mjs +0 -1
@@ -1 +1 @@
1
- import{c as e,f as t,p as n}from"./constants-zR-UwEWY.mjs";import{n as r}from"./platform-Dg9JBh8M.mjs";import{t as i}from"./loadScript-Du6JsTc2.mjs";function a(){return window.google?.ima?Promise.resolve():i(e,`ima`)}function o(e,i,o,s){let c=document.createElement(`div`);c.className=`ima-ad-container`,e.appendChild(c);let l=o,u=null,d=null,f=null,p=!1,m=!1,h=!1,g=!1,_=!1,v=!1,y=1,b=!1,x=``,S=new ResizeObserver(([e])=>{let t=window.google?.ima;if(!f||!t)return;let{width:n,height:r}=e.contentRect;f.resize(n,r,t.ViewMode.NORMAL)});S.observe(i);function C(){d?.contentComplete()}function w(r){g=r,e.classList.toggle(n,r),r||(_=!1,e.classList.remove(t))}function T(){if(p||!m||!h||!u||!d||!l)return;p=!0;let e=window.google?.ima;if(!e)return;u.initialize();let t=new e.AdsRequest;t.adTagUrl=l,d.requestAds(t)}function E(e){l=e,T()}a().then(()=>{if(v)return;let n=window.google?.ima;n&&(u=new n.AdDisplayContainer(c,i),d=new n.AdsLoader(u),m=!0,d.addEventListener(n.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,a=>{if(v)return;let o=new n.AdsRenderingSettings;o.restoreCustomPlaybackStateOnAdBreakComplete=!0,f=a.getAdsManager(i,o),i.addEventListener(`ended`,C),x=i.currentSrc,f.addEventListener(n.AdEvent.Type.CONTENT_PAUSE_REQUESTED,()=>{i.removeEventListener(`ended`,C),i.ended&&r()&&(b=!0),i.pause(),w(!0),s.onAdStart();let e=f?.getVolume()??1;e>0&&(y=e),s.onAdMuteChange(e===0)}),f.addEventListener(n.AdEvent.Type.CONTENT_RESUME_REQUESTED,()=>{if(i.addEventListener(`ended`,C),w(!1),s.onAdEnd(),b){b=!1,x&&i.currentSrc!==x&&(i.src=x);let e=i.duration;e&&isFinite(e)&&(i.currentTime=e-.5);return}i.ended||i.play()}),f.addEventListener(n.AdEvent.Type.PAUSED,()=>{_=!0,e.classList.add(t),s.onAdPauseChange(!0)}),f.addEventListener(n.AdEvent.Type.RESUMED,()=>{_=!1,e.classList.remove(t),s.onAdPauseChange(!1)}),f.addEventListener(n.AdEvent.Type.AD_PROGRESS,()=>{s.onAdProgress(f?.getRemainingTime()??0)}),f.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{w(!1),s.onError(e.getError().getMessage()),i.play()});try{f.init(i.clientWidth,i.clientHeight,n.ViewMode.NORMAL),f.start()}catch(e){s.onError(e instanceof Error?e.message:`Ad playback failed to start.`)}}),d.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{s.onError(e.getError().getMessage())}),T())}).catch(e=>s.onError(e.message));function D(){h=!0,T()}function O(){if(!f)return;let e=f.getVolume();e>0?(y=e,f.setVolume(0)):f.setVolume(y||1),s.onAdMuteChange(f.getVolume()===0)}return{isAdPlaying:()=>g,isAdPaused:()=>_,requestAdsOnFirstPlay:D,setAdTagUrl:E,pauseAd:()=>f?.pause(),resumeAd:()=>f?.resume(),toggleAdMute:O,dispose:()=>{v=!0,b=!1,x=``,S.disconnect(),i.removeEventListener(`ended`,C),f?.destroy(),d?.destroy(),c.remove(),e.classList.remove(n,t)}}}export{o as attachAds};
1
+ import{c as e,f as t,p as n}from"./constants-35ZnLsDv.mjs";import{n as r}from"./platform-Dg9JBh8M.mjs";import{t as i}from"./loadScript-CxzeXqTe.mjs";function a(){return window.google?.ima?Promise.resolve():i(e,`ima`)}function o(e,i,o,s){let c=document.createElement(`div`);c.className=`ima-ad-container`,e.appendChild(c);let l=o,u=null,d=null,f=null,p=!1,m=!1,h=!1,g=!1,_=!1,v=!1,y=1,b=!1,x=``,S=new ResizeObserver(([e])=>{let t=window.google?.ima;if(!f||!t)return;let{width:n,height:r}=e.contentRect;f.resize(n,r,t.ViewMode.NORMAL)});S.observe(i);function C(){d?.contentComplete()}function w(r){g=r,e.classList.toggle(n,r),r||(_=!1,e.classList.remove(t))}function T(){if(p||!m||!h||!u||!d||!l)return;p=!0;let e=window.google?.ima;if(!e)return;u.initialize();let t=new e.AdsRequest;t.adTagUrl=l,d.requestAds(t)}function E(e){l=e,T()}a().then(()=>{if(v)return;let n=window.google?.ima;n&&(u=new n.AdDisplayContainer(c,i),d=new n.AdsLoader(u),m=!0,d.addEventListener(n.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,a=>{if(v)return;let o=new n.AdsRenderingSettings;o.restoreCustomPlaybackStateOnAdBreakComplete=!0,f=a.getAdsManager(i,o),i.addEventListener(`ended`,C),x=i.currentSrc,f.addEventListener(n.AdEvent.Type.CONTENT_PAUSE_REQUESTED,()=>{i.removeEventListener(`ended`,C),i.ended&&r()&&(b=!0),i.pause(),w(!0),s.onAdStart();let e=f?.getVolume()??1;e>0&&(y=e),s.onAdMuteChange(e===0)}),f.addEventListener(n.AdEvent.Type.CONTENT_RESUME_REQUESTED,()=>{if(i.addEventListener(`ended`,C),w(!1),s.onAdEnd(),b){b=!1,x&&i.currentSrc!==x&&(i.src=x);let e=i.duration;e&&isFinite(e)&&(i.currentTime=e-.5);return}i.ended||i.play().catch(()=>{})}),f.addEventListener(n.AdEvent.Type.PAUSED,()=>{_=!0,e.classList.add(t),s.onAdPauseChange(!0)}),f.addEventListener(n.AdEvent.Type.RESUMED,()=>{_=!1,e.classList.remove(t),s.onAdPauseChange(!1)}),f.addEventListener(n.AdEvent.Type.AD_PROGRESS,()=>{s.onAdProgress(f?.getRemainingTime()??0)}),f.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{w(!1),s.onError(e.getError().getMessage()),i.play().catch(()=>{})});try{f.init(i.clientWidth,i.clientHeight,n.ViewMode.NORMAL),f.start()}catch(e){s.onError(e instanceof Error?e.message:`Ad playback failed to start.`)}}),d.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{s.onError(e.getError().getMessage())}),T())}).catch(e=>s.onError(e.message));function D(){h=!0,T()}function O(){if(!f)return;let e=f.getVolume();e>0?(y=e,f.setVolume(0)):f.setVolume(y||1),s.onAdMuteChange(f.getVolume()===0)}return{isAdPlaying:()=>g,isAdPaused:()=>_,requestAdsOnFirstPlay:D,setAdTagUrl:E,pauseAd:()=>f?.pause(),resumeAd:()=>f?.resume(),toggleAdMute:O,dispose:()=>{v=!0,b=!1,x=``,S.disconnect(),i.removeEventListener(`ended`,C),f?.destroy(),d?.destroy(),c.remove(),e.classList.remove(n,t)}}}export{o as attachAds};
@@ -1 +1 @@
1
- import{n as e,t}from"./constants-zR-UwEWY.mjs";import{n,t as r}from"./sourceHelpers-rbs6D6ZG.mjs";function i(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 a(e){for(let t of e?.plugins??[]){let e=t.options?.serverUrl??t.options?.imaOptions?.serverUrl;if(e)return e}return null}const o=r(async(t,n,r,i)=>{let o=await fetch(`${e}/${t}/${n}_${r}/config.json`);if(!o.ok)throw Error(`Brightcove: could not load player config (${o.status})`);let s=await o.json(),c=i??s?.video_cloud?.policy_key;if(!c)throw Error(`Brightcove: policy_key not found in player config`);return{policyKey:c,adTagUrl:a(s)}},(e,t,n)=>`${e}/${t}_${n}`);async function s(e,r,i){let a=await fetch(`${t}/${e}/videos/${r}`,{headers:{Accept:`application/json;pk=${i}`}});if(!a.ok)throw Error(`Brightcove Playback API error: ${a.status}`);let o=await a.json(),s=n(o.sources||[]);if(!s.length)throw Error(`Brightcove: no playable sources found`);return{sources:s.map(e=>({src:e.src,type:e.type})),poster:o.poster??o.thumbnail??null}}async function c(e,t){let n=i(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:a,embed:c,videoId:l}=n,{policyKey:u,adTagUrl:d}=await o(r,a,c,t),{sources:f,poster:p}=await s(r,l,u);return{...f[0],poster:p,adTagUrl:d}}export{c as resolveSource};
1
+ import{n as e,t}from"./constants-35ZnLsDv.mjs";import{n,t as r}from"./sourceHelpers-B0tH-grj.mjs";function i(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 a(e){for(let t of e?.plugins??[]){let e=t.options?.serverUrl??t.options?.imaOptions?.serverUrl;if(e)return e}return null}const o=r(async(t,n,r,i)=>{let o=await fetch(`${e}/${t}/${n}_${r}/config.json`);if(!o.ok)throw Error(`Brightcove: could not load player config (${o.status})`);let s=await o.json(),c=i??s?.video_cloud?.policy_key;if(!c)throw Error(`Brightcove: policy_key not found in player config`);return{policyKey:c,adTagUrl:a(s)}},(e,t,n)=>`${e}/${t}_${n}`);async function s(e,r,i){let a=await fetch(`${t}/${e}/videos/${r}`,{headers:{Accept:`application/json;pk=${i}`}});if(!a.ok)throw Error(`Brightcove Playback API error: ${a.status}`);let o=await a.json(),s=n(o.sources||[]);if(!s.length)throw Error(`Brightcove: no playable sources found`);return{sources:s.map(e=>({src:e.src,type:e.type})),poster:o.poster??o.thumbnail??null}}async function c(e,t){let n=i(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:a,embed:c,videoId:l}=n,{policyKey:u,adTagUrl:d}=await o(r,a,c,t),{sources:f,poster:p}=await s(r,l,u);return{...f[0],poster:p,adTagUrl:d}}export{c as resolveSource};
@@ -0,0 +1 @@
1
+ const e=`video-select`,t=`video-toggle`,n=`fullscreen-pending`,r=`fullscreen-pending-done`,i=`player:positions`,a=`player:autoAdvance`,o=`player:audio`,s={muted:!1,volume:1},c=`mlv-tech`,l=`mlv-youtube`,u=`mlv-vimeo`,d=`mlv-dailymotion`,f=`mlv-ad-playing`,p=`mlv-ad-paused`,m=`16:9`,h=`application/x-mpegURL`,g=`application/dash+xml`,_=`video/mp4`,v=[h,_],y=[.5,.75,1,1.25,1.5,2],b=3500,x=.1,S=3e3,C=[[.25,`firstQuartile`],[.5,`midpoint`],[.75,`thirdQuartile`]],w=.1,T=`https://imasdk.googleapis.com/js/sdkloader/ima3.js`,E=`https://player.vimeo.com/api/player.js`,D=`https://cdn.jwplayer.com/v2/media`,O=`https://edge.api.brightcove.com/playback/v1/accounts`,k=`https://players.brightcove.net`;export{t as A,S as C,i as D,a as E,E as O,C as S,o as T,c as _,s as a,x as b,T as c,_ as d,p as f,r as g,n as h,m as i,e as k,D as l,d as m,k as n,h as o,f as p,g as r,b as s,O as t,w as u,u as v,v as w,y as x,l as y};
@@ -0,0 +1 @@
1
+ import{m as e}from"./constants-35ZnLsDv.mjs";import{r as t}from"./embedShared-CbArTtuR.mjs";import{t as n}from"./loadScript-CxzeXqTe.mjs";function r(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 i(i,a){let o=null;return t(i,a,{cssClass:e,connect:async({techId:e,emitter:t,state:i,isDisposed:s,consumeQueuedPlay:c})=>{let l=r(a.src);if(!l){i.errorState={code:4,message:`Could not parse video ID from source URL`},t.trigger(`error`);return}let u=!1;try{let r=await n(`https://geo.dailymotion.com/libs/player.js`,`dailymotion-sdk`).then(()=>window.dailymotion);if(!r||s())return;let d=await r.createPlayer(e,{video:l,params:{autoplay:!!a.autoplay,mute:!!a.muted}});o=d,a.volume!==void 0&&d.setVolume(a.volume);let f=r.events;c(()=>o?.play()),d.on(f.VIDEO_PLAY,()=>{i.paused=!1,t.trigger(`play`),t.trigger(`playing`),!a.autoplay&&!u&&(u=!0,d.pause())}),d.on(f.VIDEO_PLAYING,()=>{i.paused=!1,t.trigger(`play`),t.trigger(`playing`)}),d.on(f.VIDEO_PAUSE,()=>{i.paused=!0,t.trigger(`pause`)}),f.VIDEO_BUFFERING&&d.on(f.VIDEO_BUFFERING,()=>t.trigger(`waiting`)),d.on(f.VIDEO_END,()=>{i.paused=!0,t.trigger(`ended`)}),d.on(f.VIDEO_TIMECHANGE,e=>{i.currentTime=e.videoTime??i.currentTime,i.duration=e.videoDuration??i.duration,t.trigger(`timeupdate`)}),d.on(f.VIDEO_DURATIONCHANGE,e=>{i.duration=e.videoDuration??i.duration,t.trigger(`durationchange`)}),d.on(f.VIDEO_SEEKEND,e=>{i.currentTime=e.videoTime??i.currentTime,t.trigger(`seeked`)}),d.on(f.PLAYER_VOLUMECHANGE,e=>{i.volume=e.playerVolume??i.volume,i.muted=e.playerIsMuted??i.muted,t.trigger(`volumechange`)}),d.on(f.PLAYER_ERROR,()=>t.trigger(`error`)),f.AD_START&&d.on(f.AD_START,()=>{i.paused=!1,t.trigger(`play`),t.trigger(`adstart`)}),f.AD_END&&d.on(f.AD_END,()=>t.trigger(`adend`))}catch(e){i.errorState={code:4,message:e instanceof Error?e.message:`This video could not be played.`},t.trigger(`error`)}},hasPlayer:()=>!!o,play:()=>o?.play(),pause:()=>o?.pause(),seekToSdk:e=>o?.seek(e),volumeToSdk:e=>o?.setVolume(e),muteToSdk:(e,t)=>o?.setMute(t),sdkFullscreenEnter:()=>o?.setFullscreen(!0),sdkFullscreenExit:()=>o?.setFullscreen(!1),destroyPlayer:()=>{let e=o;o=null,e?.destroy?.()}})}export{i as createDailymotionAdapter};
@@ -0,0 +1 @@
1
+ import{_ as e,g as t,h as n}from"./constants-35ZnLsDv.mjs";import{n as r,r as i,t as a}from"./platform-Dg9JBh8M.mjs";function o(){let e=new Map;function t(t,n){e.has(t)||e.set(t,new Set),e.get(t)?.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 s={supportsCaptions:()=>!1,getCaptionTracks:()=>[],setCaptionTrack:()=>{},getActiveCaptionTrack:()=>null,supportsQuality:()=>!1,getQualityLevels:()=>[],getCurrentQuality:()=>null,isAutoQuality:()=>!0,setQuality:()=>{},supportsPip:()=>!1,isPipActive:()=>!1,togglePip:()=>{}};let c=0;function l(e){let t=e.querySelector(`iframe`);if(t){t.tabIndex=-1;return}let n=new MutationObserver(()=>{let t=e.querySelector(`iframe`);t&&(t.tabIndex=-1,n.disconnect())});n.observe(e,{childList:!0,subtree:!0})}function u(t,n,r){t.parentElement?.classList.add(n);let i=`${n}-${++c}`,a=document.createElement(`div`);a.id=i,a.className=e,a.style.cssText=`width:100%;height:100%;top:0;left:0;position:absolute`;let o=document.createElement(`div`);return o.style.cssText=`width:100%;height:100%;position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity 0.2s`,o.appendChild(a),t.parentElement?.insertBefore(o,t),r||l(o),{techId:i,wrapper:o}}function d(e,t){e.style.display=`none`,t.style.opacity=`1`,t.style.pointerEvents=``}function f(e,t,n){t.remove(),e.parentElement?.classList.remove(n),e.style.display=``}function p(e){return e.closest(`.player__shell`)}function m(e,t){if(r()&&t()!==!1)return;let n=p(e);n&&i(n)}function h(){let e=new Set;return{schedule(t,n=0){let r=setTimeout(()=>{e.delete(r),t()},n);e.add(r)},clearAll(){e.forEach(clearTimeout),e.clear()}}}function g(e){e.trigger(n);let r=document.createElement(`div`);r.style.cssText=`position:fixed;inset:0;z-index:99999;opacity:0;pointer-events:none`,document.body.appendChild(r);let i=!1;function a(){i||e.trigger(t)}function o(n){i||(i=!0,e.trigger(t),r.remove(),n?.())}return{overlay:r,reveal:a,finish:o}}function _(e,t,n){let i=o(),{techId:c,wrapper:l}=u(e,n.cssClass,t.nativeUi),{schedule:d,clearAll:p}=h(),g={currentTime:0,duration:0,volume:t.volume??1,muted:!1,paused:!0,playQueued:!1,errorState:null},_=!1,v={techId:c,wrapper:l,emitter:i,state:g,schedule:d,isDisposed:()=>_,consumeQueuedPlay(e){g.playQueued&&(g.playQueued=!1,e())}};n.connect(v);function y(){m(e,()=>{if(!n.sdkFullscreenEnter)return!1;n.sdkFullscreenEnter()})}function b(){if(r()&&n.sdkFullscreenExit){n.sdkFullscreenExit();return}a()}return{el:l,play:()=>n.hasPlayer()?Promise.resolve(n.play()):(g.playQueued=!0,Promise.resolve()),pause:()=>n.pause(),paused:()=>g.paused,currentTime:()=>g.currentTime,setCurrentTime:e=>{g.currentTime=e,n.seekToSdk?.(e)},duration:()=>g.duration,volume:()=>g.volume,setVolume:e=>{g.volume=e,n.volumeToSdk(e)},muted:()=>g.muted,setMuted:e=>{g.muted=e,n.muteToSdk(v,e)},playbackRate:()=>1,setPlaybackRate:()=>{},bufferedEnd:()=>g.currentTime,error:()=>g.errorState,setSrc:e=>{(!n.hasPlayer()||g.errorState)&&(t.src=e,g.errorState=null,n.destroyPlayer(),n.connect(v))},supportsPlaybackRate:()=>!1,...s,enterFullscreen:y,exitFullscreen:b,on:i.on,off:i.off,dispose:()=>{_=!0,p(),n.destroyPlayer(),f(e,l,n.cssClass),i.dispose()}}}export{m as a,g as c,h as i,f as l,u as n,p as o,_ as r,d as s,s as t,o as u};
@@ -1 +1 @@
1
- import{d as e,l as t,o as n}from"./constants-zR-UwEWY.mjs";import{n as r,t as i}from"./sourceHelpers-rbs6D6ZG.mjs";function a(e){return e.match(/cdn\.jwplayer\.com\/videos\/([^-]+)/)?.[1]??e.match(/cdn\.jwplayer\.com\/manifests\/([^.]+)/)?.[1]??e.match(/^jwplayer:\/\/([^/]+)$/)?.[1]??null}function o(e){let t=e?.advertising?.schedule;return Array.isArray(t)&&t.length?t[0].tag??null:e?.advertising?.tag??null}const s=i(async e=>{let n=await fetch(`${t}/${e}`);if(!n.ok)throw Error(`JW Platform API error: ${n.status}`);let i=(await n.json()).playlist?.[0];if(!i)throw Error(`JW Platform: empty playlist`);let a=r((i.sources??[]).map(e=>({src:e.file,type:e.type})));if(!a.length)throw Error(`JW Platform: no playable sources found`);return{src:a[0].src,type:a[0].type,poster:i.image??null,adTagUrl:o(i)}});async function c(t){let r=a(t);if(!r)throw Error(`JW Platform: unrecognised source URL: ${t}`);let i=await s(r);if(t.startsWith(`jwplayer://`))return i;let o=/\.mp4(\?|#|$)/.test(t)?e:n;return{...i,src:t,type:o}}export{c as resolveSource};
1
+ import{d as e,l as t,o as n}from"./constants-35ZnLsDv.mjs";import{n as r,t as i}from"./sourceHelpers-B0tH-grj.mjs";function a(e){return e.match(/cdn\.jwplayer\.com\/videos\/([^-]+)/)?.[1]??e.match(/cdn\.jwplayer\.com\/manifests\/([^.]+)/)?.[1]??e.match(/^jwplayer:\/\/([^/]+)$/)?.[1]??null}function o(e){let t=e?.advertising?.schedule;return Array.isArray(t)&&t.length?t[0].tag??null:e?.advertising?.tag??null}const s=i(async e=>{let n=await fetch(`${t}/${e}`);if(!n.ok)throw Error(`JW Platform API error: ${n.status}`);let i=(await n.json()).playlist?.[0];if(!i)throw Error(`JW Platform: empty playlist`);let a=r((i.sources??[]).map(e=>({src:e.file,type:e.type})));if(!a.length)throw Error(`JW Platform: no playable sources found`);return{src:a[0].src,type:a[0].type,poster:i.image??null,adTagUrl:o(i)}});async function c(t){let r=a(t);if(!r)throw Error(`JW Platform: unrecognised source URL: ${t}`);let i=await s(r);if(t.startsWith(`jwplayer://`))return i;let o=/\.mp4(\?|#|$)/.test(t)?e:n;return{...i,src:t,type:o}}export{c as resolveSource};
@@ -0,0 +1 @@
1
+ const e={};function t(t,n=t){if(!e[n]){let r=new Promise((e,n)=>{let r=document.createElement(`script`);r.src=t,r.onload=()=>e(),r.onerror=()=>{r.remove(),n(Error(`Failed to load script: ${t}`))},document.head.appendChild(r)});r.catch(()=>{e[n]===r&&delete e[n]}),e[n]=r}return e[n]}export{t};
@@ -1 +1 @@
1
- import{w as e}from"./constants-zR-UwEWY.mjs";function t(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 n(t){return t.filter(t=>t.src&&e.includes(t.type)).sort((t,n)=>e.indexOf(t.type)-e.indexOf(n.type))}export{n,t};
1
+ import{w as e}from"./constants-35ZnLsDv.mjs";function t(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 n(t){return t.filter(t=>t.src&&e.includes(t.type)).sort((t,n)=>e.indexOf(t.type)-e.indexOf(n.type))}export{n,t};
@@ -0,0 +1 @@
1
+ import{O as e,v as t}from"./constants-35ZnLsDv.mjs";import{r as n}from"./embedShared-CbArTtuR.mjs";import{t as r}from"./loadScript-CxzeXqTe.mjs";function i(e){return e.match(/(?:vimeo\.com\/(?:video\/|channels\/[^/]+\/|groups\/[^/]+\/videos\/)?|player\.vimeo\.com\/video\/)(\d+)/)?.[1]??null}function a(a,o){let s=null;return n(a,o,{cssClass:t,connect:async({techId:t,emitter:n,state:a,isDisposed:c,consumeQueuedPlay:l})=>{let u=i(o.src);if(!u)return;try{await r(e,`vimeo`)}catch(e){if(c())return;a.errorState={code:4,message:e instanceof Error?e.message:`The Vimeo player failed to load.`},n.trigger(`error`);return}if(c())return;if(!window.Vimeo){a.errorState={code:4,message:`The Vimeo player failed to load.`},n.trigger(`error`);return}let d={id:Number(u),byline:!1,portrait:!1,title:!1,transparent:!0,controls:!!o.nativeUi,autopause:!1,...o.autoplay!==void 0&&{autoplay:o.autoplay},...o.muted!==void 0&&{muted:o.muted}};s=new window.Vimeo.Player(t,d),o.autoplay&&(a.playQueued=!0),s.ready().then(()=>{o.muted&&s?.setMuted(!0).catch(()=>{}),o.volume!==void 0&&s?.setVolume(o.volume).catch(()=>{}),l(()=>void s?.play().catch(()=>{}))}).catch(e=>{a.errorState={code:4,message:e?.message||`This video is unavailable or cannot be embedded here.`},n.trigger(`error`)}),s.on(`play`,()=>{a.paused=!1,n.trigger(`play`),n.trigger(`playing`)}),s.on(`pause`,()=>{a.paused=!0,n.trigger(`pause`)}),s.on(`ended`,()=>{a.paused=!0,n.trigger(`ended`)});let f=!1;s.on(`timeupdate`,e=>{let{seconds:t,duration:r}=e;a.currentTime=t,a.duration=r,n.trigger(`timeupdate`),r&&!f&&(f=!0,n.trigger(`durationchange`))}),s.on(`loaded`,()=>{f=!1,n.trigger(`durationchange`)}),s.on(`seeked`,e=>{a.currentTime=e.seconds,n.trigger(`seeked`),n.trigger(`timeupdate`)}),s.on(`bufferstart`,()=>n.trigger(`waiting`)),s.on(`bufferend`,()=>n.trigger(`canplay`)),s.on(`volumechange`,e=>{a.volume=e.volume,n.trigger(`volumechange`)}),s.on(`error`,()=>n.trigger(`error`))},hasPlayer:()=>!!s,play:()=>s?.play(),pause:()=>void s?.pause().catch(()=>{}),seekToSdk:e=>void s?.setCurrentTime(e).catch(()=>{}),volumeToSdk:e=>void s?.setVolume(e).catch(()=>{}),muteToSdk:({emitter:e,schedule:t},n)=>{s?.setMuted(n).then(()=>t(()=>e.trigger(`volumechange`),50)).catch(()=>{})},sdkFullscreenEnter:()=>void s?.requestFullscreen().catch(()=>{}),destroyPlayer:()=>{let e=s;s=null,e?.destroy().catch(()=>{})}})}export{a as createVimeoAdapter};
@@ -0,0 +1 @@
1
+ import{y as e}from"./constants-35ZnLsDv.mjs";import{t}from"./platform-Dg9JBh8M.mjs";import{a as n,c as r,i,l as a,n as o,t as s,u as c}from"./embedShared-CbArTtuR.mjs";import{t as l}from"./loadScript-CxzeXqTe.mjs";function u(e,t){return t===e.PlayerState.PLAYING||t===e.PlayerState.BUFFERING}function d(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 f=null,p=null;function m(){return f?Promise.resolve(f):(p||(p=l(`https://www.youtube.com/iframe_api`).then(()=>new Promise((e,t)=>{let n=window.YT;if(!n){t(Error(`The YouTube player failed to load.`));return}n.ready(()=>{f=n,e(n)})})),p.catch(()=>{p=null})),p)}function h(l,p){let h=c(),{techId:g,wrapper:_}=o(l,e,p.nativeUi),v=d(p.src),y=null,b=v.videoId,x=!1,S=!1,C=!1,w=null,T=!1,E=null,D=null,O=!1,k=!1,{schedule:A,clearAll:j}=i(),M=null,N={active:!1,wasPaused:!1,timeBefore:0,catchUpInterval:null};function P(){try{let e=y?.getPlayerResponse()?.adPlacements;return Array.isArray(e)&&e.length>0}catch{return!1}}function F(e){y?.loadVideoById({videoId:e})}function I(e){y?.cueVideoById({videoId:e})}function L(){return v.videoId?(N.wasPaused=!1,x?b===v.videoId?y?.playVideo():(F(v.videoId),b=v.videoId):(h.trigger(`waiting`),S=!0),Promise.resolve()):Promise.resolve()}function R(){N.catchUpInterval&&clearInterval(N.catchUpInterval),N.active=!1,N.wasPaused&&y?.pauseVideo(),h.trigger(`seeked`)}function z(){k=(y?.getAvailablePlaybackRates()??[]).length>1,x=!0,p.muted&&y?.mute(),p.volume!==void 0&&y?.setVolume(p.volume*100),S?L():C&&v.videoId&&(I(v.videoId),b=v.videoId)}function B(e){if(e===w||E!==null)return;w=e;let t=P();t!==T&&(T=t,h.trigger(t?`adstart`:`adend`));let n=window.YT;if(n){switch(e){case-1:h.trigger(`durationchange`),h.trigger(`ratechange`);break;case n.PlayerState.ENDED:h.trigger(`ended`);break;case n.PlayerState.PLAYING:h.trigger(`timeupdate`),h.trigger(`durationchange`),h.trigger(`playing`),h.trigger(`play`),N.active&&R();break;case n.PlayerState.PAUSED:h.trigger(`canplay`),N.active||h.trigger(`pause`);break;case n.PlayerState.BUFFERING:h.trigger(`waiting`);break;case n.PlayerState.CUED:h.trigger(`canplay`)}M&&=(clearInterval(M),null),e===n.PlayerState.PLAYING&&(M=setInterval(()=>h.trigger(`timeupdate`),250))}}function V(){let e={controls:+!!p.nativeUi,modestbranding:1,rel:0,showinfo:0,mute:+!!p.muted,origin:window.location.origin,allowfullscreen:1,fullscreen:1,fs:1,autoplay:0,playsinline:1};b=v.videoId,y=new window.YT.Player(g,{videoId:b??void 0,playerVars:e,events:{onReady:z,onStateChange:e=>B(e.data),onPlaybackRateChange:()=>h.trigger(`ratechange`),onVolumeChange:()=>h.trigger(`volumechange`),onError:e=>{E=e.data,h.trigger(`error`),A(()=>{E=null})}}})}function H(){if(f){V();return}m().then(()=>{O||V()},e=>{O||(D={code:4,message:e instanceof Error?e.message:`The YouTube player failed to load.`},h.trigger(`error`))})}H(),p.autoplay?x?L():S=!0:v.videoId&&(C=!0);function U(){if(!y)return;let e=y.getCurrentTime(),{video_id:t}=y.getVideoData();y.pauseVideo();let{overlay:n,reveal:i,finish:a}=r(h),o=document.createElement(`div`);o.id=`yt-fs-${Math.random().toString(36).slice(2)}`,n.appendChild(o);let s=null,c=()=>{document.removeEventListener(`pointerdown`,l,!0),a(()=>{let t=s?.getCurrentTime()??e;try{s?.destroy()}catch{}y?.seekTo(t,!0),h.trigger(`timeupdate`)})};function l(){c()}s=new window.YT.Player(o.id,{videoId:t,playerVars:{playsinline:0,autoplay:0,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.ENDED?c():e.data===t.PlayerState.PAUSED?(document.removeEventListener(`pointerdown`,l,!0),document.addEventListener(`pointerdown`,l,{capture:!0,once:!0})):(document.removeEventListener(`pointerdown`,l,!0),i()))}}})}function W(){n(l,()=>{if(!y)return!1;U()})}return{el:_,play:L,pause:()=>y?.pauseVideo(),paused:()=>{if(!y)return!0;let e=window.YT;return!e||!u(e,w)},currentTime:()=>x?y?.getCurrentTime()??0:0,setCurrentTime:e=>{if(!x||!y)return;let t=window.YT;t&&w===t.PlayerState.PAUSED&&(N.timeBefore=y.getCurrentTime()),N.active||(N.wasPaused=!t||!u(t,w)),y.seekTo(e,!0),h.trigger(`timeupdate`),N.active=!0,t&&w===t.PlayerState.PAUSED&&N.timeBefore!==e&&(N.catchUpInterval&&clearInterval(N.catchUpInterval),N.catchUpInterval=setInterval(()=>{w!==t.PlayerState.PAUSED||!N.active?N.catchUpInterval&&clearInterval(N.catchUpInterval):y&&y.getCurrentTime()!==N.timeBefore&&(h.trigger(`timeupdate`),R())},250))},duration:()=>x?y?.getDuration()??0:0,volume:()=>x&&y?y.getVolume()/100:1,setVolume:e=>{x&&y?.setVolume(e*100)},muted:()=>x?y?.isMuted()??!1:!1,setMuted:e=>{x&&y&&(e?y.mute():y.unMute(),A(()=>h.trigger(`volumechange`),50))},playbackRate:()=>x?y?.getPlaybackRate()??1:1,setPlaybackRate:e=>{x&&y?.setPlaybackRate(e)},bufferedEnd:()=>!x||!y?.getVideoLoadedFraction?0:y.getVideoLoadedFraction()*y.getDuration(),error:()=>D??(E===null?null:{code:E,message:`This video could not be played.`}),setSrc:e=>{let t=d(e);if(v.videoId=t.videoId,v.listId=t.listId,v.videoId){if(D){D=null,p.autoplay||(C=!0),H();return}x?(F(v.videoId),b=v.videoId):C=!0}},supportsPlaybackRate:()=>k,...s,enterFullscreen:W,exitFullscreen:t,on:h.on,off:h.off,dispose:()=>{if(O=!0,j(),M&&clearInterval(M),N.catchUpInterval&&clearInterval(N.catchUpInterval),y)try{y.stopVideo(),y.destroy()}catch{}y=null,a(l,_,e),h.dispose()}}}export{h as createYoutubeAdapter};
@@ -1 +1 @@
1
- import{c as e,f as t,p as n}from"./constants-zR-UwEWY.mjs";import{n as r}from"./platform-Dg9JBh8M.mjs";import{t as i}from"./loadScript-Du6JsTc2.mjs";function a(){return window.google?.ima?Promise.resolve():i(e,`ima`)}function o(e,i,o,s){let c=document.createElement(`div`);c.className=`ima-ad-container`,e.appendChild(c);let l=o,u=null,d=null,f=null,p=!1,m=!1,h=!1,g=!1,_=!1,v=!1,y=1,b=!1,x=``,S=new ResizeObserver(([e])=>{let t=window.google?.ima;if(!f||!t)return;let{width:n,height:r}=e.contentRect;f.resize(n,r,t.ViewMode.NORMAL)});S.observe(i);function C(){d?.contentComplete()}function w(r){g=r,e.classList.toggle(n,r),r||(_=!1,e.classList.remove(t))}function T(){if(p||!m||!h||!u||!d||!l)return;p=!0;let e=window.google?.ima;if(!e)return;u.initialize();let t=new e.AdsRequest;t.adTagUrl=l,d.requestAds(t)}function E(e){l=e,T()}a().then(()=>{if(v)return;let n=window.google?.ima;n&&(u=new n.AdDisplayContainer(c,i),d=new n.AdsLoader(u),m=!0,d.addEventListener(n.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,a=>{if(v)return;let o=new n.AdsRenderingSettings;o.restoreCustomPlaybackStateOnAdBreakComplete=!0,f=a.getAdsManager(i,o),i.addEventListener(`ended`,C),x=i.currentSrc,f.addEventListener(n.AdEvent.Type.CONTENT_PAUSE_REQUESTED,()=>{i.removeEventListener(`ended`,C),i.ended&&r()&&(b=!0),i.pause(),w(!0),s.onAdStart();let e=f?.getVolume()??1;e>0&&(y=e),s.onAdMuteChange(e===0)}),f.addEventListener(n.AdEvent.Type.CONTENT_RESUME_REQUESTED,()=>{if(i.addEventListener(`ended`,C),w(!1),s.onAdEnd(),b){b=!1,x&&i.currentSrc!==x&&(i.src=x);let e=i.duration;e&&isFinite(e)&&(i.currentTime=e-.5);return}i.ended||i.play()}),f.addEventListener(n.AdEvent.Type.PAUSED,()=>{_=!0,e.classList.add(t),s.onAdPauseChange(!0)}),f.addEventListener(n.AdEvent.Type.RESUMED,()=>{_=!1,e.classList.remove(t),s.onAdPauseChange(!1)}),f.addEventListener(n.AdEvent.Type.AD_PROGRESS,()=>{s.onAdProgress(f?.getRemainingTime()??0)}),f.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{w(!1),s.onError(e.getError().getMessage()),i.play()});try{f.init(i.clientWidth,i.clientHeight,n.ViewMode.NORMAL),f.start()}catch(e){s.onError(e instanceof Error?e.message:`Ad playback failed to start.`)}}),d.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{s.onError(e.getError().getMessage())}),T())}).catch(e=>s.onError(e.message));function D(){h=!0,T()}function O(){if(!f)return;let e=f.getVolume();e>0?(y=e,f.setVolume(0)):f.setVolume(y||1),s.onAdMuteChange(f.getVolume()===0)}return{isAdPlaying:()=>g,isAdPaused:()=>_,requestAdsOnFirstPlay:D,setAdTagUrl:E,pauseAd:()=>f?.pause(),resumeAd:()=>f?.resume(),toggleAdMute:O,dispose:()=>{v=!0,b=!1,x=``,S.disconnect(),i.removeEventListener(`ended`,C),f?.destroy(),d?.destroy(),c.remove(),e.classList.remove(n,t)}}}export{o as attachAds};
1
+ import{c as e,f as t,p as n}from"./constants-35ZnLsDv.mjs";import{n as r}from"./platform-Dg9JBh8M.mjs";import{t as i}from"./loadScript-CxzeXqTe.mjs";function a(){return window.google?.ima?Promise.resolve():i(e,`ima`)}function o(e,i,o,s){let c=document.createElement(`div`);c.className=`ima-ad-container`,e.appendChild(c);let l=o,u=null,d=null,f=null,p=!1,m=!1,h=!1,g=!1,_=!1,v=!1,y=1,b=!1,x=``,S=new ResizeObserver(([e])=>{let t=window.google?.ima;if(!f||!t)return;let{width:n,height:r}=e.contentRect;f.resize(n,r,t.ViewMode.NORMAL)});S.observe(i);function C(){d?.contentComplete()}function w(r){g=r,e.classList.toggle(n,r),r||(_=!1,e.classList.remove(t))}function T(){if(p||!m||!h||!u||!d||!l)return;p=!0;let e=window.google?.ima;if(!e)return;u.initialize();let t=new e.AdsRequest;t.adTagUrl=l,d.requestAds(t)}function E(e){l=e,T()}a().then(()=>{if(v)return;let n=window.google?.ima;n&&(u=new n.AdDisplayContainer(c,i),d=new n.AdsLoader(u),m=!0,d.addEventListener(n.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,a=>{if(v)return;let o=new n.AdsRenderingSettings;o.restoreCustomPlaybackStateOnAdBreakComplete=!0,f=a.getAdsManager(i,o),i.addEventListener(`ended`,C),x=i.currentSrc,f.addEventListener(n.AdEvent.Type.CONTENT_PAUSE_REQUESTED,()=>{i.removeEventListener(`ended`,C),i.ended&&r()&&(b=!0),i.pause(),w(!0),s.onAdStart();let e=f?.getVolume()??1;e>0&&(y=e),s.onAdMuteChange(e===0)}),f.addEventListener(n.AdEvent.Type.CONTENT_RESUME_REQUESTED,()=>{if(i.addEventListener(`ended`,C),w(!1),s.onAdEnd(),b){b=!1,x&&i.currentSrc!==x&&(i.src=x);let e=i.duration;e&&isFinite(e)&&(i.currentTime=e-.5);return}i.ended||i.play().catch(()=>{})}),f.addEventListener(n.AdEvent.Type.PAUSED,()=>{_=!0,e.classList.add(t),s.onAdPauseChange(!0)}),f.addEventListener(n.AdEvent.Type.RESUMED,()=>{_=!1,e.classList.remove(t),s.onAdPauseChange(!1)}),f.addEventListener(n.AdEvent.Type.AD_PROGRESS,()=>{s.onAdProgress(f?.getRemainingTime()??0)}),f.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{w(!1),s.onError(e.getError().getMessage()),i.play().catch(()=>{})});try{f.init(i.clientWidth,i.clientHeight,n.ViewMode.NORMAL),f.start()}catch(e){s.onError(e instanceof Error?e.message:`Ad playback failed to start.`)}}),d.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{s.onError(e.getError().getMessage())}),T())}).catch(e=>s.onError(e.message));function D(){h=!0,T()}function O(){if(!f)return;let e=f.getVolume();e>0?(y=e,f.setVolume(0)):f.setVolume(y||1),s.onAdMuteChange(f.getVolume()===0)}return{isAdPlaying:()=>g,isAdPaused:()=>_,requestAdsOnFirstPlay:D,setAdTagUrl:E,pauseAd:()=>f?.pause(),resumeAd:()=>f?.resume(),toggleAdMute:O,dispose:()=>{v=!0,b=!1,x=``,S.disconnect(),i.removeEventListener(`ended`,C),f?.destroy(),d?.destroy(),c.remove(),e.classList.remove(n,t)}}}export{o as attachAds};
@@ -1 +1 @@
1
- import{n as e,t}from"./constants-zR-UwEWY.mjs";import{n,t as r}from"./sourceHelpers-rbs6D6ZG.mjs";function i(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 a(e){for(let t of e?.plugins??[]){let e=t.options?.serverUrl??t.options?.imaOptions?.serverUrl;if(e)return e}return null}const o=r(async(t,n,r,i)=>{let o=await fetch(`${e}/${t}/${n}_${r}/config.json`);if(!o.ok)throw Error(`Brightcove: could not load player config (${o.status})`);let s=await o.json(),c=i??s?.video_cloud?.policy_key;if(!c)throw Error(`Brightcove: policy_key not found in player config`);return{policyKey:c,adTagUrl:a(s)}},(e,t,n)=>`${e}/${t}_${n}`);async function s(e,r,i){let a=await fetch(`${t}/${e}/videos/${r}`,{headers:{Accept:`application/json;pk=${i}`}});if(!a.ok)throw Error(`Brightcove Playback API error: ${a.status}`);let o=await a.json(),s=n(o.sources||[]);if(!s.length)throw Error(`Brightcove: no playable sources found`);return{sources:s.map(e=>({src:e.src,type:e.type})),poster:o.poster??o.thumbnail??null}}async function c(e,t){let n=i(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:a,embed:c,videoId:l}=n,{policyKey:u,adTagUrl:d}=await o(r,a,c,t),{sources:f,poster:p}=await s(r,l,u);return{...f[0],poster:p,adTagUrl:d}}export{c as resolveSource};
1
+ import{n as e,t}from"./constants-35ZnLsDv.mjs";import{n,t as r}from"./sourceHelpers-B0tH-grj.mjs";function i(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 a(e){for(let t of e?.plugins??[]){let e=t.options?.serverUrl??t.options?.imaOptions?.serverUrl;if(e)return e}return null}const o=r(async(t,n,r,i)=>{let o=await fetch(`${e}/${t}/${n}_${r}/config.json`);if(!o.ok)throw Error(`Brightcove: could not load player config (${o.status})`);let s=await o.json(),c=i??s?.video_cloud?.policy_key;if(!c)throw Error(`Brightcove: policy_key not found in player config`);return{policyKey:c,adTagUrl:a(s)}},(e,t,n)=>`${e}/${t}_${n}`);async function s(e,r,i){let a=await fetch(`${t}/${e}/videos/${r}`,{headers:{Accept:`application/json;pk=${i}`}});if(!a.ok)throw Error(`Brightcove Playback API error: ${a.status}`);let o=await a.json(),s=n(o.sources||[]);if(!s.length)throw Error(`Brightcove: no playable sources found`);return{sources:s.map(e=>({src:e.src,type:e.type})),poster:o.poster??o.thumbnail??null}}async function c(e,t){let n=i(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:a,embed:c,videoId:l}=n,{policyKey:u,adTagUrl:d}=await o(r,a,c,t),{sources:f,poster:p}=await s(r,l,u);return{...f[0],poster:p,adTagUrl:d}}export{c as resolveSource};
@@ -0,0 +1 @@
1
+ const e=`video-select`,t=`video-toggle`,n=`fullscreen-pending`,r=`fullscreen-pending-done`,i=`player:positions`,a=`player:autoAdvance`,o=`player:audio`,s={muted:!1,volume:1},c=`mlv-tech`,l=`mlv-youtube`,u=`mlv-vimeo`,d=`mlv-dailymotion`,f=`mlv-ad-playing`,p=`mlv-ad-paused`,m=`16:9`,h=`application/x-mpegURL`,g=`application/dash+xml`,_=`video/mp4`,v=[h,_],y=[.5,.75,1,1.25,1.5,2],b=3500,x=.1,S=3e3,C=[[.25,`firstQuartile`],[.5,`midpoint`],[.75,`thirdQuartile`]],w=.1,T=`https://imasdk.googleapis.com/js/sdkloader/ima3.js`,E=`https://player.vimeo.com/api/player.js`,D=`https://cdn.jwplayer.com/v2/media`,O=`https://edge.api.brightcove.com/playback/v1/accounts`,k=`https://players.brightcove.net`;export{t as A,S as C,i as D,a as E,E as O,C as S,o as T,c as _,s as a,x as b,T as c,_ as d,p as f,r as g,n as h,m as i,e as k,D as l,d as m,k as n,h as o,f as p,g as r,b as s,O as t,w as u,u as v,v as w,y as x,l as y};
@@ -0,0 +1 @@
1
+ import{m as e}from"./constants-35ZnLsDv.mjs";import{r as t}from"./embedShared-CbArTtuR.mjs";import{t as n}from"./loadScript-CxzeXqTe.mjs";function r(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 i(i,a){let o=null;return t(i,a,{cssClass:e,connect:async({techId:e,emitter:t,state:i,isDisposed:s,consumeQueuedPlay:c})=>{let l=r(a.src);if(!l){i.errorState={code:4,message:`Could not parse video ID from source URL`},t.trigger(`error`);return}let u=!1;try{let r=await n(`https://geo.dailymotion.com/libs/player.js`,`dailymotion-sdk`).then(()=>window.dailymotion);if(!r||s())return;let d=await r.createPlayer(e,{video:l,params:{autoplay:!!a.autoplay,mute:!!a.muted}});o=d,a.volume!==void 0&&d.setVolume(a.volume);let f=r.events;c(()=>o?.play()),d.on(f.VIDEO_PLAY,()=>{i.paused=!1,t.trigger(`play`),t.trigger(`playing`),!a.autoplay&&!u&&(u=!0,d.pause())}),d.on(f.VIDEO_PLAYING,()=>{i.paused=!1,t.trigger(`play`),t.trigger(`playing`)}),d.on(f.VIDEO_PAUSE,()=>{i.paused=!0,t.trigger(`pause`)}),f.VIDEO_BUFFERING&&d.on(f.VIDEO_BUFFERING,()=>t.trigger(`waiting`)),d.on(f.VIDEO_END,()=>{i.paused=!0,t.trigger(`ended`)}),d.on(f.VIDEO_TIMECHANGE,e=>{i.currentTime=e.videoTime??i.currentTime,i.duration=e.videoDuration??i.duration,t.trigger(`timeupdate`)}),d.on(f.VIDEO_DURATIONCHANGE,e=>{i.duration=e.videoDuration??i.duration,t.trigger(`durationchange`)}),d.on(f.VIDEO_SEEKEND,e=>{i.currentTime=e.videoTime??i.currentTime,t.trigger(`seeked`)}),d.on(f.PLAYER_VOLUMECHANGE,e=>{i.volume=e.playerVolume??i.volume,i.muted=e.playerIsMuted??i.muted,t.trigger(`volumechange`)}),d.on(f.PLAYER_ERROR,()=>t.trigger(`error`)),f.AD_START&&d.on(f.AD_START,()=>{i.paused=!1,t.trigger(`play`),t.trigger(`adstart`)}),f.AD_END&&d.on(f.AD_END,()=>t.trigger(`adend`))}catch(e){i.errorState={code:4,message:e instanceof Error?e.message:`This video could not be played.`},t.trigger(`error`)}},hasPlayer:()=>!!o,play:()=>o?.play(),pause:()=>o?.pause(),seekToSdk:e=>o?.seek(e),volumeToSdk:e=>o?.setVolume(e),muteToSdk:(e,t)=>o?.setMute(t),sdkFullscreenEnter:()=>o?.setFullscreen(!0),sdkFullscreenExit:()=>o?.setFullscreen(!1),destroyPlayer:()=>{let e=o;o=null,e?.destroy?.()}})}export{i as createDailymotionAdapter};
@@ -0,0 +1 @@
1
+ import{_ as e,g as t,h as n}from"./constants-35ZnLsDv.mjs";import{n as r,r as i,t as a}from"./platform-Dg9JBh8M.mjs";function o(){let e=new Map;function t(t,n){e.has(t)||e.set(t,new Set),e.get(t)?.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 s={supportsCaptions:()=>!1,getCaptionTracks:()=>[],setCaptionTrack:()=>{},getActiveCaptionTrack:()=>null,supportsQuality:()=>!1,getQualityLevels:()=>[],getCurrentQuality:()=>null,isAutoQuality:()=>!0,setQuality:()=>{},supportsPip:()=>!1,isPipActive:()=>!1,togglePip:()=>{}};let c=0;function l(e){let t=e.querySelector(`iframe`);if(t){t.tabIndex=-1;return}let n=new MutationObserver(()=>{let t=e.querySelector(`iframe`);t&&(t.tabIndex=-1,n.disconnect())});n.observe(e,{childList:!0,subtree:!0})}function u(t,n,r){t.parentElement?.classList.add(n);let i=`${n}-${++c}`,a=document.createElement(`div`);a.id=i,a.className=e,a.style.cssText=`width:100%;height:100%;top:0;left:0;position:absolute`;let o=document.createElement(`div`);return o.style.cssText=`width:100%;height:100%;position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity 0.2s`,o.appendChild(a),t.parentElement?.insertBefore(o,t),r||l(o),{techId:i,wrapper:o}}function d(e,t){e.style.display=`none`,t.style.opacity=`1`,t.style.pointerEvents=``}function f(e,t,n){t.remove(),e.parentElement?.classList.remove(n),e.style.display=``}function p(e){return e.closest(`.player__shell`)}function m(e,t){if(r()&&t()!==!1)return;let n=p(e);n&&i(n)}function h(){let e=new Set;return{schedule(t,n=0){let r=setTimeout(()=>{e.delete(r),t()},n);e.add(r)},clearAll(){e.forEach(clearTimeout),e.clear()}}}function g(e){e.trigger(n);let r=document.createElement(`div`);r.style.cssText=`position:fixed;inset:0;z-index:99999;opacity:0;pointer-events:none`,document.body.appendChild(r);let i=!1;function a(){i||e.trigger(t)}function o(n){i||(i=!0,e.trigger(t),r.remove(),n?.())}return{overlay:r,reveal:a,finish:o}}function _(e,t,n){let i=o(),{techId:c,wrapper:l}=u(e,n.cssClass,t.nativeUi),{schedule:d,clearAll:p}=h(),g={currentTime:0,duration:0,volume:t.volume??1,muted:!1,paused:!0,playQueued:!1,errorState:null},_=!1,v={techId:c,wrapper:l,emitter:i,state:g,schedule:d,isDisposed:()=>_,consumeQueuedPlay(e){g.playQueued&&(g.playQueued=!1,e())}};n.connect(v);function y(){m(e,()=>{if(!n.sdkFullscreenEnter)return!1;n.sdkFullscreenEnter()})}function b(){if(r()&&n.sdkFullscreenExit){n.sdkFullscreenExit();return}a()}return{el:l,play:()=>n.hasPlayer()?Promise.resolve(n.play()):(g.playQueued=!0,Promise.resolve()),pause:()=>n.pause(),paused:()=>g.paused,currentTime:()=>g.currentTime,setCurrentTime:e=>{g.currentTime=e,n.seekToSdk?.(e)},duration:()=>g.duration,volume:()=>g.volume,setVolume:e=>{g.volume=e,n.volumeToSdk(e)},muted:()=>g.muted,setMuted:e=>{g.muted=e,n.muteToSdk(v,e)},playbackRate:()=>1,setPlaybackRate:()=>{},bufferedEnd:()=>g.currentTime,error:()=>g.errorState,setSrc:e=>{(!n.hasPlayer()||g.errorState)&&(t.src=e,g.errorState=null,n.destroyPlayer(),n.connect(v))},supportsPlaybackRate:()=>!1,...s,enterFullscreen:y,exitFullscreen:b,on:i.on,off:i.off,dispose:()=>{_=!0,p(),n.destroyPlayer(),f(e,l,n.cssClass),i.dispose()}}}export{m as a,g as c,h as i,f as l,u as n,p as o,_ as r,d as s,s as t,o as u};
@@ -0,0 +1 @@
1
+ const e=/^[0-9a-f]{4,6}$/i;function t(t){return e.test(t)?String.fromCodePoint(parseInt(t,16)):t}function n(e,t,n){return typeof e==`function`?e(t,n):e[t]}function r({className:e,mapping:r,glyphs:i}){return{resolveSync({name:a,variant:o}){let s;if(r!==void 0){if(s=n(r,a,o),s===void 0)return}else i===void 0&&(s=a);let c;if(i!==void 0){let e=n(i,a,o);if(e===void 0)return;c=t(e)}return{tag:`i`,className:s===void 0?e:`${e} ${s}`,text:c}}}}export{r as fontLibrary};
@@ -1 +1 @@
1
- import{d as e,l as t,o as n}from"./constants-zR-UwEWY.mjs";import{n as r,t as i}from"./sourceHelpers-rbs6D6ZG.mjs";function a(e){return e.match(/cdn\.jwplayer\.com\/videos\/([^-]+)/)?.[1]??e.match(/cdn\.jwplayer\.com\/manifests\/([^.]+)/)?.[1]??e.match(/^jwplayer:\/\/([^/]+)$/)?.[1]??null}function o(e){let t=e?.advertising?.schedule;return Array.isArray(t)&&t.length?t[0].tag??null:e?.advertising?.tag??null}const s=i(async e=>{let n=await fetch(`${t}/${e}`);if(!n.ok)throw Error(`JW Platform API error: ${n.status}`);let i=(await n.json()).playlist?.[0];if(!i)throw Error(`JW Platform: empty playlist`);let a=r((i.sources??[]).map(e=>({src:e.file,type:e.type})));if(!a.length)throw Error(`JW Platform: no playable sources found`);return{src:a[0].src,type:a[0].type,poster:i.image??null,adTagUrl:o(i)}});async function c(t){let r=a(t);if(!r)throw Error(`JW Platform: unrecognised source URL: ${t}`);let i=await s(r);if(t.startsWith(`jwplayer://`))return i;let o=/\.mp4(\?|#|$)/.test(t)?e:n;return{...i,src:t,type:o}}export{c as resolveSource};
1
+ import{d as e,l as t,o as n}from"./constants-35ZnLsDv.mjs";import{n as r,t as i}from"./sourceHelpers-B0tH-grj.mjs";function a(e){return e.match(/cdn\.jwplayer\.com\/videos\/([^-]+)/)?.[1]??e.match(/cdn\.jwplayer\.com\/manifests\/([^.]+)/)?.[1]??e.match(/^jwplayer:\/\/([^/]+)$/)?.[1]??null}function o(e){let t=e?.advertising?.schedule;return Array.isArray(t)&&t.length?t[0].tag??null:e?.advertising?.tag??null}const s=i(async e=>{let n=await fetch(`${t}/${e}`);if(!n.ok)throw Error(`JW Platform API error: ${n.status}`);let i=(await n.json()).playlist?.[0];if(!i)throw Error(`JW Platform: empty playlist`);let a=r((i.sources??[]).map(e=>({src:e.file,type:e.type})));if(!a.length)throw Error(`JW Platform: no playable sources found`);return{src:a[0].src,type:a[0].type,poster:i.image??null,adTagUrl:o(i)}});async function c(t){let r=a(t);if(!r)throw Error(`JW Platform: unrecognised source URL: ${t}`);let i=await s(r);if(t.startsWith(`jwplayer://`))return i;let o=/\.mp4(\?|#|$)/.test(t)?e:n;return{...i,src:t,type:o}}export{c as resolveSource};
@@ -0,0 +1 @@
1
+ const e={};function t(t,n=t){if(!e[n]){let r=new Promise((e,n)=>{let r=document.createElement(`script`);r.src=t,r.onload=()=>e(),r.onerror=()=>{r.remove(),n(Error(`Failed to load script: ${t}`))},document.head.appendChild(r)});r.catch(()=>{e[n]===r&&delete e[n]}),e[n]=r}return e[n]}export{t};
@@ -1 +1 @@
1
- import{w as e}from"./constants-zR-UwEWY.mjs";function t(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 n(t){return t.filter(t=>t.src&&e.includes(t.type)).sort((t,n)=>e.indexOf(t.type)-e.indexOf(n.type))}export{n,t};
1
+ import{w as e}from"./constants-35ZnLsDv.mjs";function t(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 n(t){return t.filter(t=>t.src&&e.includes(t.type)).sort((t,n)=>e.indexOf(t.type)-e.indexOf(n.type))}export{n,t};
@@ -0,0 +1 @@
1
+ function e({name:e,variant:t}){return JSON.stringify([e,t??null])}function t(t){let n=new Map,r=new Map;return{resolveSync(r){return n.get(e(r))??t.resolveSync?.(r)},async resolve(i){let a=e(i),o=n.get(a)??t.resolveSync?.(i);if(o)return o;if(!t.resolve)return;let s=r.get(a);return s||(s=t.resolve(i).then(e=>(e&&n.set(a,e),e)).finally(()=>{r.delete(a)}),r.set(a,s)),s},dispose(){n.clear(),r.clear(),t.dispose?.()}}}const n=/^(?:https?:\/\/|\/|\.\/)/,r=/^\s*(?:<\?xml[^>]*>\s*)?(?:<!--[\s\S]*?-->\s*)*<svg[\s>]/i;async function i(e){let t=typeof e==`object`&&e&&`default`in e?e.default:e;if(typeof t!=`string`)throw TypeError(`SVG resolver must return markup, a URL, or a module with a default string export`);if(!n.test(t))return t;let r=await fetch(t);if(!r.ok)throw Error(`Failed to fetch icon (${r.status}): ${t}`);return r.text()}function a(e,t){let n=new DOMParser().parseFromString(e,`image/svg+xml`).documentElement;if(n.nodeName!==`svg`)throw Error(`Icon "${t}" did not resolve to an <svg> document`);return n}function o(e){return async(t,n=`default`)=>{let r=(await e)[t];if(r===void 0)throw Error(`Icon "${t}" is not in this library`);if(typeof r==`string`)return r;let i=r[n]??r.default;if(i===void 0)throw Error(`Icon "${t}" has no "${n}" variant`);return i}}function s(e){return{tag:`span`,className:`icon-svg`,html:e}}function c(e){let n=e.resolver??(e.icons?o(e.icons):void 0);if(!n)throw Error(`svgLibrary needs a resolver or an icons map`);let{mutator:c}=e;return typeof DOMParser>`u`?{async resolve({name:e,variant:t}){let a=await i(await n(e,t));if(!r.test(a))throw Error(`Icon "${e}" did not resolve to an <svg> document`);return s(a)}}:t({async resolve({name:e,variant:t}){let r=await i(await n(e,t)),o=a(r,e);return c?(c(o),s(new XMLSerializer().serializeToString(o))):s(r)}})}export{c as svgLibrary};
@@ -0,0 +1 @@
1
+ import{O as e,v as t}from"./constants-35ZnLsDv.mjs";import{r as n}from"./embedShared-CbArTtuR.mjs";import{t as r}from"./loadScript-CxzeXqTe.mjs";function i(e){return e.match(/(?:vimeo\.com\/(?:video\/|channels\/[^/]+\/|groups\/[^/]+\/videos\/)?|player\.vimeo\.com\/video\/)(\d+)/)?.[1]??null}function a(a,o){let s=null;return n(a,o,{cssClass:t,connect:async({techId:t,emitter:n,state:a,isDisposed:c,consumeQueuedPlay:l})=>{let u=i(o.src);if(!u)return;try{await r(e,`vimeo`)}catch(e){if(c())return;a.errorState={code:4,message:e instanceof Error?e.message:`The Vimeo player failed to load.`},n.trigger(`error`);return}if(c())return;if(!window.Vimeo){a.errorState={code:4,message:`The Vimeo player failed to load.`},n.trigger(`error`);return}let d={id:Number(u),byline:!1,portrait:!1,title:!1,transparent:!0,controls:!!o.nativeUi,autopause:!1,...o.autoplay!==void 0&&{autoplay:o.autoplay},...o.muted!==void 0&&{muted:o.muted}};s=new window.Vimeo.Player(t,d),o.autoplay&&(a.playQueued=!0),s.ready().then(()=>{o.muted&&s?.setMuted(!0).catch(()=>{}),o.volume!==void 0&&s?.setVolume(o.volume).catch(()=>{}),l(()=>void s?.play().catch(()=>{}))}).catch(e=>{a.errorState={code:4,message:e?.message||`This video is unavailable or cannot be embedded here.`},n.trigger(`error`)}),s.on(`play`,()=>{a.paused=!1,n.trigger(`play`),n.trigger(`playing`)}),s.on(`pause`,()=>{a.paused=!0,n.trigger(`pause`)}),s.on(`ended`,()=>{a.paused=!0,n.trigger(`ended`)});let f=!1;s.on(`timeupdate`,e=>{let{seconds:t,duration:r}=e;a.currentTime=t,a.duration=r,n.trigger(`timeupdate`),r&&!f&&(f=!0,n.trigger(`durationchange`))}),s.on(`loaded`,()=>{f=!1,n.trigger(`durationchange`)}),s.on(`seeked`,e=>{a.currentTime=e.seconds,n.trigger(`seeked`),n.trigger(`timeupdate`)}),s.on(`bufferstart`,()=>n.trigger(`waiting`)),s.on(`bufferend`,()=>n.trigger(`canplay`)),s.on(`volumechange`,e=>{a.volume=e.volume,n.trigger(`volumechange`)}),s.on(`error`,()=>n.trigger(`error`))},hasPlayer:()=>!!s,play:()=>s?.play(),pause:()=>void s?.pause().catch(()=>{}),seekToSdk:e=>void s?.setCurrentTime(e).catch(()=>{}),volumeToSdk:e=>void s?.setVolume(e).catch(()=>{}),muteToSdk:({emitter:e,schedule:t},n)=>{s?.setMuted(n).then(()=>t(()=>e.trigger(`volumechange`),50)).catch(()=>{})},sdkFullscreenEnter:()=>void s?.requestFullscreen().catch(()=>{}),destroyPlayer:()=>{let e=s;s=null,e?.destroy().catch(()=>{})}})}export{a as createVimeoAdapter};
@@ -0,0 +1 @@
1
+ import{y as e}from"./constants-35ZnLsDv.mjs";import{t}from"./platform-Dg9JBh8M.mjs";import{a as n,c as r,i,l as a,n as o,t as s,u as c}from"./embedShared-CbArTtuR.mjs";import{t as l}from"./loadScript-CxzeXqTe.mjs";function u(e,t){return t===e.PlayerState.PLAYING||t===e.PlayerState.BUFFERING}function d(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 f=null,p=null;function m(){return f?Promise.resolve(f):(p||(p=l(`https://www.youtube.com/iframe_api`).then(()=>new Promise((e,t)=>{let n=window.YT;if(!n){t(Error(`The YouTube player failed to load.`));return}n.ready(()=>{f=n,e(n)})})),p.catch(()=>{p=null})),p)}function h(l,p){let h=c(),{techId:g,wrapper:_}=o(l,e,p.nativeUi),v=d(p.src),y=null,b=v.videoId,x=!1,S=!1,C=!1,w=null,T=!1,E=null,D=null,O=!1,k=!1,{schedule:A,clearAll:j}=i(),M=null,N={active:!1,wasPaused:!1,timeBefore:0,catchUpInterval:null};function P(){try{let e=y?.getPlayerResponse()?.adPlacements;return Array.isArray(e)&&e.length>0}catch{return!1}}function F(e){y?.loadVideoById({videoId:e})}function I(e){y?.cueVideoById({videoId:e})}function L(){return v.videoId?(N.wasPaused=!1,x?b===v.videoId?y?.playVideo():(F(v.videoId),b=v.videoId):(h.trigger(`waiting`),S=!0),Promise.resolve()):Promise.resolve()}function R(){N.catchUpInterval&&clearInterval(N.catchUpInterval),N.active=!1,N.wasPaused&&y?.pauseVideo(),h.trigger(`seeked`)}function z(){k=(y?.getAvailablePlaybackRates()??[]).length>1,x=!0,p.muted&&y?.mute(),p.volume!==void 0&&y?.setVolume(p.volume*100),S?L():C&&v.videoId&&(I(v.videoId),b=v.videoId)}function B(e){if(e===w||E!==null)return;w=e;let t=P();t!==T&&(T=t,h.trigger(t?`adstart`:`adend`));let n=window.YT;if(n){switch(e){case-1:h.trigger(`durationchange`),h.trigger(`ratechange`);break;case n.PlayerState.ENDED:h.trigger(`ended`);break;case n.PlayerState.PLAYING:h.trigger(`timeupdate`),h.trigger(`durationchange`),h.trigger(`playing`),h.trigger(`play`),N.active&&R();break;case n.PlayerState.PAUSED:h.trigger(`canplay`),N.active||h.trigger(`pause`);break;case n.PlayerState.BUFFERING:h.trigger(`waiting`);break;case n.PlayerState.CUED:h.trigger(`canplay`)}M&&=(clearInterval(M),null),e===n.PlayerState.PLAYING&&(M=setInterval(()=>h.trigger(`timeupdate`),250))}}function V(){let e={controls:+!!p.nativeUi,modestbranding:1,rel:0,showinfo:0,mute:+!!p.muted,origin:window.location.origin,allowfullscreen:1,fullscreen:1,fs:1,autoplay:0,playsinline:1};b=v.videoId,y=new window.YT.Player(g,{videoId:b??void 0,playerVars:e,events:{onReady:z,onStateChange:e=>B(e.data),onPlaybackRateChange:()=>h.trigger(`ratechange`),onVolumeChange:()=>h.trigger(`volumechange`),onError:e=>{E=e.data,h.trigger(`error`),A(()=>{E=null})}}})}function H(){if(f){V();return}m().then(()=>{O||V()},e=>{O||(D={code:4,message:e instanceof Error?e.message:`The YouTube player failed to load.`},h.trigger(`error`))})}H(),p.autoplay?x?L():S=!0:v.videoId&&(C=!0);function U(){if(!y)return;let e=y.getCurrentTime(),{video_id:t}=y.getVideoData();y.pauseVideo();let{overlay:n,reveal:i,finish:a}=r(h),o=document.createElement(`div`);o.id=`yt-fs-${Math.random().toString(36).slice(2)}`,n.appendChild(o);let s=null,c=()=>{document.removeEventListener(`pointerdown`,l,!0),a(()=>{let t=s?.getCurrentTime()??e;try{s?.destroy()}catch{}y?.seekTo(t,!0),h.trigger(`timeupdate`)})};function l(){c()}s=new window.YT.Player(o.id,{videoId:t,playerVars:{playsinline:0,autoplay:0,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.ENDED?c():e.data===t.PlayerState.PAUSED?(document.removeEventListener(`pointerdown`,l,!0),document.addEventListener(`pointerdown`,l,{capture:!0,once:!0})):(document.removeEventListener(`pointerdown`,l,!0),i()))}}})}function W(){n(l,()=>{if(!y)return!1;U()})}return{el:_,play:L,pause:()=>y?.pauseVideo(),paused:()=>{if(!y)return!0;let e=window.YT;return!e||!u(e,w)},currentTime:()=>x?y?.getCurrentTime()??0:0,setCurrentTime:e=>{if(!x||!y)return;let t=window.YT;t&&w===t.PlayerState.PAUSED&&(N.timeBefore=y.getCurrentTime()),N.active||(N.wasPaused=!t||!u(t,w)),y.seekTo(e,!0),h.trigger(`timeupdate`),N.active=!0,t&&w===t.PlayerState.PAUSED&&N.timeBefore!==e&&(N.catchUpInterval&&clearInterval(N.catchUpInterval),N.catchUpInterval=setInterval(()=>{w!==t.PlayerState.PAUSED||!N.active?N.catchUpInterval&&clearInterval(N.catchUpInterval):y&&y.getCurrentTime()!==N.timeBefore&&(h.trigger(`timeupdate`),R())},250))},duration:()=>x?y?.getDuration()??0:0,volume:()=>x&&y?y.getVolume()/100:1,setVolume:e=>{x&&y?.setVolume(e*100)},muted:()=>x?y?.isMuted()??!1:!1,setMuted:e=>{x&&y&&(e?y.mute():y.unMute(),A(()=>h.trigger(`volumechange`),50))},playbackRate:()=>x?y?.getPlaybackRate()??1:1,setPlaybackRate:e=>{x&&y?.setPlaybackRate(e)},bufferedEnd:()=>!x||!y?.getVideoLoadedFraction?0:y.getVideoLoadedFraction()*y.getDuration(),error:()=>D??(E===null?null:{code:E,message:`This video could not be played.`}),setSrc:e=>{let t=d(e);if(v.videoId=t.videoId,v.listId=t.listId,v.videoId){if(D){D=null,p.autoplay||(C=!0),H();return}x?(F(v.videoId),b=v.videoId):C=!0}},supportsPlaybackRate:()=>k,...s,enterFullscreen:W,exitFullscreen:t,on:h.on,off:h.off,dispose:()=>{if(O=!0,j(),M&&clearInterval(M),N.catchUpInterval&&clearInterval(N.catchUpInterval),y)try{y.stopVideo(),y.destroy()}catch{}y=null,a(l,_,e),h.dispose()}}}export{h as createYoutubeAdapter};
@@ -1 +1 @@
1
- .mlv-scrubber-wrap[data-v-043f1bc8]{width:100%;position:relative}:where(.mlv-scrubber[data-v-043f1bc8]){cursor:pointer;accent-color:currentColor;width:100%}:where(.mlv-scrubber[data-v-043f1bc8]):focus-visible{outline-offset:0!important;outline:2px solid #fff!important}.mlv-scrubber__preview[data-v-043f1bc8]{font-variant-numeric:tabular-nums;pointer-events:none;white-space:nowrap;margin-bottom:.4rem;font-size:.75rem;position:absolute;bottom:100%;transform:translate(-50%)}:where(.mlv-play-button[data-v-218255bd]){all:unset;cursor:pointer;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-play-button[data-v-218255bd]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-play-button svg[data-v-218255bd]){width:1em;height:1em}:where(.mlv-mute-button[data-v-1940b598]){all:unset;cursor:pointer;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-mute-button[data-v-1940b598]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-mute-button svg[data-v-1940b598]){width:1em;height:1em}:where(.mlv-fullscreen-button[data-v-b93a5017]){all:unset;cursor:pointer;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-fullscreen-button[data-v-b93a5017]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-fullscreen-button svg[data-v-b93a5017]){width:1em;height:1em}@keyframes spin-259be2b2{to{transform:rotate(360deg)}}.spinner[data-v-259be2b2]{border-style:solid;border-color:#fffc #ffffff26 #ffffff26;border-radius:50%;animation:.75s linear infinite spin-259be2b2}:where(.mlv-buffering[data-v-454fec7f]){justify-content:center;align-items:center;display:inline-flex}:where(.mlv-loop-button[data-v-e32eda25]){all:unset;cursor:pointer;opacity:.6;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-loop-button[data-v-e32eda25]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-loop-button--active[data-v-e32eda25]){opacity:1}:where(.mlv-loop-button svg[data-v-e32eda25]){width:1em;height:1em}:where(.mlv-pip-button[data-v-f654d93e]){all:unset;cursor:pointer;opacity:.6;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-pip-button[data-v-f654d93e]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-pip-button--active[data-v-f654d93e]){opacity:1}:where(.mlv-pip-button svg[data-v-f654d93e]){width:1em;height:1em}:where(.mlv-captions-button[data-v-2572c4f2]){all:unset;cursor:pointer;opacity:.6;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-captions-button[data-v-2572c4f2]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-captions-button--active[data-v-2572c4f2]){opacity:1}:where(.mlv-captions-button svg[data-v-2572c4f2]){width:1em;height:1em}:where(.mlv-quality-button[data-v-d1352878]){all:unset;cursor:pointer;opacity:.6;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-quality-button[data-v-d1352878]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-quality-button--active[data-v-d1352878]){opacity:1}:where(.mlv-quality-button svg[data-v-d1352878]){width:1em;height:1em}:where(.mlv-playback-rate-button[data-v-646c9bc1]){all:unset;cursor:pointer;font-variant-numeric:tabular-nums;opacity:.6;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-playback-rate-button[data-v-646c9bc1]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-playback-rate-button--active[data-v-646c9bc1]){opacity:1}.mlv-volume-wrap[data-v-fbb2c86c]{align-items:center;gap:.75rem;width:100%;display:flex}:where(.mlv-volume-slider[data-v-fbb2c86c]){cursor:pointer;accent-color:currentColor;flex:1}:where(.mlv-volume-slider[data-v-fbb2c86c]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-volume-pct[data-v-fbb2c86c]){font-variant-numeric:tabular-nums;text-align:right;min-width:2rem}:where(.mlv-time-display[data-v-0285c811]){font-variant-numeric:tabular-nums;align-items:center;gap:.35rem;display:inline-flex}:where(.mlv-time-display__dot[data-v-0285c811]){background:currentColor;border-radius:50%;width:6px;height:6px}:where(.mlv-transcript[data-v-c166a2c5]){margin:0;padding:0;list-style:none;overflow-y:auto}:where(.mlv-transcript__cue[data-v-c166a2c5]){all:unset;cursor:pointer;box-sizing:border-box;border-radius:4px;align-items:baseline;gap:.5rem;width:100%;padding:.35rem .5rem;display:flex}:where(.mlv-transcript__cue[data-v-c166a2c5]):focus-visible{outline-offset:-2px;outline:2px solid}:where(.mlv-transcript__cue[data-v-c166a2c5]:hover){background:#7f7f7f26}:where(.mlv-transcript__cue--active[data-v-c166a2c5]){background:#7f7f7f40;font-weight:600}:where(.mlv-transcript__speech-toggle[data-v-c166a2c5]){all:unset;cursor:pointer;background:var(--mlv-btn-bg,#7f7f7f1a);width:2rem;height:2rem;color:var(--mlv-btn-color,inherit);border:1px solid #7f7f7f4d;border-radius:50%;justify-content:center;align-items:center;margin-bottom:.5rem;transition:background .2s,transform .15s;display:inline-flex}:where(.mlv-transcript__speech-toggle[data-v-c166a2c5]):focus-visible{outline-offset:2px;outline:2px solid}:where(.mlv-transcript__speech-toggle[data-v-c166a2c5]:hover){background:var(--mlv-btn-bg,#7f7f7f33);transform:scale(1.08)}:where(.mlv-transcript__speech-toggle[aria-pressed=true][data-v-c166a2c5]){border-color:var(--mlv-accent,#3b82f6);background:color-mix(in srgb, var(--mlv-accent,#3b82f6) 30%, var(--mlv-btn-bg,#7f7f7f1a));color:var(--mlv-btn-color,inherit)}:where(.mlv-transcript__speech-toggle svg[data-v-c166a2c5]){width:1.1em;height:1.1em}:where(.mlv-transcript__time[data-v-c166a2c5]){font-variant-numeric:tabular-nums;opacity:.7;flex-shrink:0}
1
+ .mlv-scrubber-wrap[data-v-043f1bc8]{width:100%;position:relative}:where(.mlv-scrubber[data-v-043f1bc8]){cursor:pointer;accent-color:currentColor;width:100%}:where(.mlv-scrubber[data-v-043f1bc8]):focus-visible{outline-offset:0!important;outline:2px solid #fff!important}.mlv-scrubber__preview[data-v-043f1bc8]{font-variant-numeric:tabular-nums;pointer-events:none;white-space:nowrap;margin-bottom:.4rem;font-size:.75rem;position:absolute;bottom:100%;transform:translate(-50%)}.mlv-icon[data-v-26446d8e]{display:contents}:where(.mlv-play-button[data-v-218255bd]){all:unset;cursor:pointer;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-play-button[data-v-218255bd]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-play-button[data-v-218255bd] svg){width:1em;height:1em}:where(.mlv-mute-button[data-v-1940b598]){all:unset;cursor:pointer;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-mute-button[data-v-1940b598]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-mute-button[data-v-1940b598] svg){width:1em;height:1em}:where(.mlv-fullscreen-button[data-v-b93a5017]){all:unset;cursor:pointer;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-fullscreen-button[data-v-b93a5017]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-fullscreen-button[data-v-b93a5017] svg){width:1em;height:1em}@keyframes spin-259be2b2{to{transform:rotate(360deg)}}.spinner[data-v-259be2b2]{border-style:solid;border-color:#fffc #ffffff26 #ffffff26;border-radius:50%;animation:.75s linear infinite spin-259be2b2}:where(.mlv-buffering[data-v-454fec7f]){justify-content:center;align-items:center;display:inline-flex}:where(.mlv-loop-button[data-v-e32eda25]){all:unset;cursor:pointer;opacity:.6;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-loop-button[data-v-e32eda25]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-loop-button--active[data-v-e32eda25]){opacity:1}:where(.mlv-loop-button[data-v-e32eda25] svg){width:1em;height:1em}:where(.mlv-pip-button[data-v-f654d93e]){all:unset;cursor:pointer;opacity:.6;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-pip-button[data-v-f654d93e]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-pip-button--active[data-v-f654d93e]){opacity:1}:where(.mlv-pip-button[data-v-f654d93e] svg){width:1em;height:1em}:where(.mlv-captions-button[data-v-2572c4f2]){all:unset;cursor:pointer;opacity:.6;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-captions-button[data-v-2572c4f2]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-captions-button--active[data-v-2572c4f2]){opacity:1}:where(.mlv-captions-button[data-v-2572c4f2] svg){width:1em;height:1em}:where(.mlv-quality-button[data-v-d1352878]){all:unset;cursor:pointer;opacity:.6;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-quality-button[data-v-d1352878]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-quality-button--active[data-v-d1352878]){opacity:1}:where(.mlv-quality-button[data-v-d1352878] svg){width:1em;height:1em}:where(.mlv-playback-rate-button[data-v-646c9bc1]){all:unset;cursor:pointer;font-variant-numeric:tabular-nums;opacity:.6;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-playback-rate-button[data-v-646c9bc1]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-playback-rate-button--active[data-v-646c9bc1]){opacity:1}.mlv-volume-wrap[data-v-fbb2c86c]{align-items:center;gap:.75rem;width:100%;display:flex}:where(.mlv-volume-slider[data-v-fbb2c86c]){cursor:pointer;accent-color:currentColor;flex:1}:where(.mlv-volume-slider[data-v-fbb2c86c]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-volume-pct[data-v-fbb2c86c]){font-variant-numeric:tabular-nums;text-align:right;min-width:2rem}:where(.mlv-time-display[data-v-0285c811]){font-variant-numeric:tabular-nums;align-items:center;gap:.35rem;display:inline-flex}:where(.mlv-time-display__dot[data-v-0285c811]){background:currentColor;border-radius:50%;width:6px;height:6px}:where(.mlv-transcript[data-v-c166a2c5]){margin:0;padding:0;list-style:none;overflow-y:auto}:where(.mlv-transcript__cue[data-v-c166a2c5]){all:unset;cursor:pointer;box-sizing:border-box;border-radius:4px;align-items:baseline;gap:.5rem;width:100%;padding:.35rem .5rem;display:flex}:where(.mlv-transcript__cue[data-v-c166a2c5]):focus-visible{outline-offset:-2px;outline:2px solid}:where(.mlv-transcript__cue[data-v-c166a2c5]:hover){background:#7f7f7f26}:where(.mlv-transcript__cue--active[data-v-c166a2c5]){background:#7f7f7f40;font-weight:600}:where(.mlv-transcript__speech-toggle[data-v-c166a2c5]){all:unset;cursor:pointer;background:var(--mlv-btn-bg,#7f7f7f1a);width:2rem;height:2rem;color:var(--mlv-btn-color,inherit);border:1px solid #7f7f7f4d;border-radius:50%;justify-content:center;align-items:center;margin-bottom:.5rem;transition:background .2s,transform .15s;display:inline-flex}:where(.mlv-transcript__speech-toggle[data-v-c166a2c5]):focus-visible{outline-offset:2px;outline:2px solid}:where(.mlv-transcript__speech-toggle[data-v-c166a2c5]:hover){background:var(--mlv-btn-bg,#7f7f7f33);transform:scale(1.08)}:where(.mlv-transcript__speech-toggle[aria-pressed=true][data-v-c166a2c5]){border-color:var(--mlv-accent,#3b82f6);background:color-mix(in srgb, var(--mlv-accent,#3b82f6) 30%, var(--mlv-btn-bg,#7f7f7f1a));color:var(--mlv-btn-color,inherit)}:where(.mlv-transcript__speech-toggle[data-v-c166a2c5] svg){width:1.1em;height:1.1em}:where(.mlv-transcript__time[data-v-c166a2c5]){font-variant-numeric:tabular-nums;opacity:.7;flex-shrink:0}
@@ -1,4 +1,4 @@
1
- import "vue";
1
+ import { Ref, UnwrapNestedRefs } from "vue";
2
2
  //#region src/types/playback.d.ts
3
3
  interface CaptionTrackInfo {
4
4
  index: number;
@@ -12,49 +12,177 @@ interface QualityLevelInfo {
12
12
  label: string;
13
13
  }
14
14
  //#endregion
15
+ //#region src/composables/player/playerState.d.ts
16
+ declare function createPlayerState(props: PlayerProps): {
17
+ isPlaying: import("vue").Ref<boolean, boolean>;
18
+ hasEnded: import("vue").Ref<boolean, boolean>;
19
+ isReady: import("vue").Ref<boolean, boolean>;
20
+ isLoaded: import("vue").Ref<boolean, boolean>;
21
+ isLive: import("vue").Ref<boolean, boolean>;
22
+ hasStarted: import("vue").Ref<boolean, boolean>;
23
+ isError: import("vue").Ref<boolean, boolean>;
24
+ errorMessage: import("vue").Ref<string, string>;
25
+ current: import("vue").Ref<number, number>;
26
+ total: import("vue").Ref<number, number>;
27
+ buffered: import("vue").Ref<number, number>;
28
+ progress: import("vue").ComputedRef<number>;
29
+ bufferedDisplay: import("vue").ComputedRef<number>;
30
+ vol: import("vue").Ref<number, number>;
31
+ isMuted: import("vue").Ref<boolean, boolean>;
32
+ isAudible: import("vue").ComputedRef<boolean>;
33
+ isLooping: import("vue").Ref<boolean, boolean>;
34
+ currentPlaybackRate: import("vue").Ref<number, number>;
35
+ supportsPlaybackRate: import("vue").Ref<boolean, boolean>;
36
+ isAdPlaying: import("vue").Ref<boolean, boolean>;
37
+ isAdPaused: import("vue").Ref<boolean, boolean>;
38
+ isAdMuted: import("vue").Ref<boolean, boolean>;
39
+ adRemainingTime: import("vue").Ref<number, number>;
40
+ supportsCaptions: import("vue").Ref<boolean, boolean>;
41
+ captionTracks: import("vue").Ref<{
42
+ index: number;
43
+ label: string;
44
+ language: string;
45
+ }[], CaptionTrackInfo[] | {
46
+ index: number;
47
+ label: string;
48
+ language: string;
49
+ }[]>;
50
+ activeCaptionIndex: import("vue").Ref<number | null, number | null>;
51
+ supportsQuality: import("vue").Ref<boolean, boolean>;
52
+ qualityLevels: import("vue").Ref<{
53
+ index: number;
54
+ height: number;
55
+ bitrate: number;
56
+ label: string;
57
+ }[], QualityLevelInfo[] | {
58
+ index: number;
59
+ height: number;
60
+ bitrate: number;
61
+ label: string;
62
+ }[]>;
63
+ currentQualityIndex: import("vue").Ref<number | null, number | null>;
64
+ isAutoQuality: import("vue").Ref<boolean, boolean>;
65
+ supportsPip: import("vue").Ref<boolean, boolean>;
66
+ isPipActive: import("vue").Ref<boolean, boolean>;
67
+ isNativeUi: import("vue").Ref<boolean, boolean>;
68
+ };
69
+ type PlayerState = ReturnType<typeof createPlayerState>;
70
+ //#endregion
71
+ //#region src/composables/player/usePlayerControls.d.ts
72
+ interface UsePlayerControlsReturn {
73
+ play: () => Promise<void>;
74
+ pause: () => void;
75
+ replay: () => Promise<void>;
76
+ togglePlay: () => void;
77
+ seek: (percent: number) => void;
78
+ seekTo: (seconds: number) => void;
79
+ toggleMute: () => void;
80
+ setVolume: (vol: number) => void;
81
+ toggleLoop: () => void;
82
+ setPlaybackRate: (rate: number) => void;
83
+ setCaptionTrack: (index: number | null) => void;
84
+ setQuality: (index: number | null) => void;
85
+ togglePip: () => void;
86
+ }
87
+ //#endregion
88
+ //#region src/composables/player/usePlayer.d.ts
89
+ type UsePlayerReturn = PlayerState & UsePlayerControlsReturn & {
90
+ fire: (type: StateChangeType, extras?: Partial<StateChangeEvent>) => void;
91
+ retry: () => void;
92
+ isBuffering: Ref<boolean>;
93
+ toggleAdMute: () => void;
94
+ isFullscreen: Ref<boolean>;
95
+ isFullscreenPending: Ref<boolean>;
96
+ toggleFullscreen: () => void;
97
+ };
98
+ //#endregion
99
+ //#region src/composables/player/playerSurface.d.ts
100
+ declare const PLAYER_METHOD_KEYS: readonly ["retry", "play", "pause", "replay", "togglePlay", "seek", "seekTo", "toggleMute", "setVolume", "toggleFullscreen", "toggleLoop", "toggleAdMute", "setPlaybackRate", "setCaptionTrack", "setQuality", "togglePip"];
101
+ declare const PLAYER_STATE_KEYS: readonly ["isPlaying", "hasEnded", "isReady", "isLoaded", "isAdPlaying", "isAdPaused", "isAdMuted", "adRemainingTime", "isLive", "isBuffering", "current", "total", "vol", "isMuted", "isAudible", "isLooping", "currentPlaybackRate", "hasStarted", "isError", "errorMessage", "progress", "bufferedDisplay", "isFullscreen", "supportsPlaybackRate", "supportsCaptions", "captionTracks", "activeCaptionIndex", "supportsQuality", "qualityLevels", "currentQualityIndex", "isAutoQuality", "supportsPip", "isPipActive", "isNativeUi"];
102
+ type PlayerMethodKey = (typeof PLAYER_METHOD_KEYS)[number];
103
+ type PlayerStateKey = (typeof PLAYER_STATE_KEYS)[number];
104
+ //#endregion
15
105
  //#region src/types/player.d.ts
106
+ type BuiltinAction = 'mute' | 'loop' | 'autoplay';
107
+ interface CustomAction {
108
+ icon: string;
109
+ label: string;
110
+ onClick: () => void;
111
+ }
112
+ type PlayerAction = BuiltinAction | CustomAction;
113
+ type StateChangeType = 'loaded' | 'play' | 'pause' | 'ended' | 'seeked' | 'error' | 'adstart' | 'adend' | 'volumechange' | 'ratechange' | 'captionchange' | 'qualitychange' | 'pipchange' | 'loopchange' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'controlsopen' | 'controlsclose' | 'stageopen' | 'stageclose' | 'bufferstart' | 'bufferend' | 'timeupdate' | 'tap';
114
+ interface StateChangeEvent {
115
+ type: StateChangeType;
116
+ currentTime: number;
117
+ duration: number;
118
+ src: string;
119
+ error?: {
120
+ code: number;
121
+ message: string;
122
+ } | null;
123
+ isMuted?: boolean;
124
+ playbackRate?: number;
125
+ captionIndex?: number | null;
126
+ qualityIndex?: number | null;
127
+ isPipActive?: boolean;
128
+ isLooping?: boolean;
129
+ element?: HTMLElement | null;
130
+ payload?: Record<string, unknown>;
131
+ }
132
+ interface HeaderBiddingAdUnit {
133
+ code: string;
134
+ mediaTypes: {
135
+ video: Record<string, unknown>;
136
+ };
137
+ bids: Array<{
138
+ bidder: string;
139
+ params?: Record<string, unknown>;
140
+ }>;
141
+ }
142
+ interface HeaderBiddingConfig {
143
+ adUnit: HeaderBiddingAdUnit;
144
+ params?: Record<string, string>;
145
+ timeoutMs?: number;
146
+ }
147
+ interface CaptionTrackDef {
148
+ src: string;
149
+ kind?: 'captions' | 'subtitles';
150
+ srclang?: string;
151
+ label?: string;
152
+ default?: boolean;
153
+ }
154
+ interface PlayerProps {
155
+ src: string;
156
+ label?: string;
157
+ poster?: string;
158
+ aspectRatio?: string;
159
+ adTagUrl?: string;
160
+ adMacroParams?: Record<string, string>;
161
+ headerBidding?: HeaderBiddingConfig;
162
+ tracks?: CaptionTrackDef[];
163
+ autoplay?: boolean;
164
+ muted?: boolean;
165
+ volume?: number;
166
+ playbackRate?: number;
167
+ nativeUi?: boolean;
168
+ payload?: Record<string, unknown> | string;
169
+ action?: PlayerAction | null;
170
+ disableTapCapture?: boolean;
171
+ disableKeyboardShortcuts?: boolean;
172
+ controls?: boolean;
173
+ playInView?: boolean;
174
+ pin?: PinCorner;
175
+ loop?: boolean;
176
+ preload?: PreloadMode;
177
+ }
178
+ type PinCorner = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
179
+ type PreloadMode = 'none' | 'metadata' | 'auto';
16
180
  interface TranscriptCue {
17
181
  time: number;
18
182
  end?: number;
19
183
  text: string;
20
184
  }
21
- interface PlayerHandle {
22
- isPlaying: boolean;
23
- togglePlay(): void;
24
- hasEnded: boolean;
25
- isError: boolean;
26
- retry(): void;
27
- isMuted: boolean;
28
- toggleMute(): void;
29
- isAudible: boolean;
30
- isFullscreen: boolean;
31
- toggleFullscreen(): void;
32
- current: number;
33
- total: number;
34
- seek(percent: number): void;
35
- bufferedDisplay: number;
36
- isBuffering: boolean;
37
- isLive: boolean;
38
- vol: number;
39
- setVolume(vol: number): void;
40
- isLooping: boolean;
41
- toggleLoop(): void;
42
- supportsPip: boolean;
43
- isPipActive: boolean;
44
- togglePip(): void;
45
- supportsCaptions: boolean;
46
- captionTracks: CaptionTrackInfo[];
47
- activeCaptionIndex: number | null;
48
- setCaptionTrack(index: number | null): void;
49
- supportsQuality: boolean;
50
- qualityLevels: QualityLevelInfo[];
51
- currentQualityIndex: number | null;
52
- isAutoQuality: boolean;
53
- setQuality(index: number | null): void;
54
- supportsPlaybackRate: boolean;
55
- currentPlaybackRate: number;
56
- setPlaybackRate(rate: number): void;
57
- }
185
+ type PlayerHandle = Pick<UnwrapNestedRefs<UsePlayerReturn>, PlayerMethodKey | PlayerStateKey>;
58
186
  //#endregion
59
187
  //#region src/composables/controls/useResolvedPlayer.d.ts
60
188
  interface ResolvedPlayerProps {
@@ -1 +1 @@
1
- import{Fragment as e,computed as t,createBlock as n,createCommentVNode as r,createElementBlock as i,createElementVNode as a,createTextVNode as o,createVNode as s,defineComponent as c,defineCustomElement as l,mergeProps as u,nextTick as d,normalizeClass as f,normalizeStyle as p,onBeforeUnmount as m,openBlock as h,ref as g,renderList as _,renderSlot as v,toDisplayString as y,toRef as b,unref as x,watch as S}from"vue";const C=[.5,.75,1,1.25,1.5,2],w=3e3;function T(e){let n=g(!1),r=g(null),i=!1,a=null,o=!1,s=t(()=>{let t=e.value;return t?.total?t.current/t.total*100:0}),c=t(()=>r.value??s.value),l=t(()=>r.value!==null),u=t(()=>{let t=e.value?.total??0;return c.value/100*t});function d(){a&&clearTimeout(a),a=null}function f(){d(),r.value=null}function p(t){let a=e.value;a?.total&&(n.value||=(i=a.isPlaying,a.isPlaying&&a.togglePlay(),!0),d(),r.value=Number(t.target.value))}function h(t){if(!n.value)return;n.value=!1,o=!0;let s=e.value;if(!s)return;let c=Number(t.target.value);r.value=c,s.seek(c),i&&s.togglePlay(),d(),a=setTimeout(f,w)}function _(t){if(n.value||o)return;o=!1;let s=e.value;if(!s?.total)return;let c=Number(t.target.value);r.value=c,s.seek(c),i&&s.togglePlay(),d(),a=setTimeout(f,w)}return S(()=>e.value?.current,()=>{let t=e.value;if(r.value===null||!t?.total)return;let n=r.value/100*t.total;Math.abs(t.current-n)<1&&f()}),m(f),{scrubbing:l,displayPercent:c,previewSeconds:u,onInput:p,onChange:h,onTouchEnd:_}}function E(e,n){return t(()=>e.value?e.value:n.value?document.getElementById(n.value)??null:null)}function D(e,t=!1){if(!e||isNaN(e))return`0:00`;let n=t?Math.round(e):Math.floor(e);return`${Math.floor(n/60)}:${String(n%60).padStart(2,`0`)}`}const O={class:`mlv-scrubber-wrap`},k=[`value`,`aria-valuetext`];var A=c({inheritAttrs:!1,__name:`Scrubber`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=e,n=E(b(t,`player`),b(t,`for`)),{scrubbing:o,displayPercent:s,previewSeconds:c,onInput:l,onChange:d,onTouchEnd:f}=T(n),m=e=>D(e,!0);return(e,t)=>(h(),i(`div`,O,[a(`input`,u({type:`range`,min:`0`,max:`100`,step:`0.5`,value:x(s),class:`mlv-scrubber`},e.$attrs,{style:{"--p":`${x(s)}%`,"--b":`${x(n)?.bufferedDisplay??0}%`},"aria-label":`Seek`,"aria-valuetext":`${m(x(c))} of ${m(x(n)?.total??0)}`,onInput:t[0]||=(...e)=>x(l)&&x(l)(...e),onChange:t[1]||=(...e)=>x(d)&&x(d)(...e),onTouchend:t[2]||=(...e)=>x(f)&&x(f)(...e)}),null,16,k),v(e.$slots,`preview`,{scrubbing:x(o),percent:x(s),previewSeconds:x(c),formatTime:m},()=>[x(o)?(h(),i(`div`,{key:0,class:`mlv-scrubber__preview`,style:p({left:`${x(s)}%`})},y(m(x(c))),5)):r(`v-if`,!0)],!0)]))}}),j=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},ee=j(A,[[`__scopeId`,`data-v-043f1bc8`]]);const te={},ne={viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function re(e,t){return h(),i(`svg`,ne,[...t[0]||=[a(`rect`,{x:`2`,y:`5`,width:`20`,height:`14`,rx:`2`},null,-1),a(`path`,{d:`M9.5 10.5a2 2 0 0 0-3.5 1.3v.4a2 2 0 0 0 3.5 1.3`},null,-1),a(`path`,{d:`M17.5 10.5a2 2 0 0 0-3.5 1.3v.4a2 2 0 0 0 3.5 1.3`},null,-1)]])}var ie=j(te,[[`render`,re]]);const ae={},oe={viewBox:`0 0 24 24`,fill:`currentColor`};function se(e,t){return h(),i(`svg`,oe,[...t[0]||=[a(`path`,{d:`M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z`},null,-1)]])}var ce=j(ae,[[`render`,se]]);const le={},ue={viewBox:`0 0 24 24`,fill:`currentColor`};function de(e,t){return h(),i(`svg`,ue,[...t[0]||=[a(`path`,{d:`M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z`},null,-1)]])}var fe=j(le,[[`render`,de]]);const pe={},me={viewBox:`0 0 24 24`,fill:`currentColor`};function he(e,t){return h(),i(`svg`,me,[...t[0]||=[a(`path`,{d:`M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z`},null,-1)]])}var ge=j(pe,[[`render`,he]]);const M={},N={viewBox:`0 0 24 24`,fill:`currentColor`};function P(e,t){return h(),i(`svg`,N,[...t[0]||=[a(`path`,{d:`M6 19h4V5H6v14zm8-14v14h4V5h-4z`},null,-1)]])}var F=j(M,[[`render`,P]]);const I={},L={viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function _e(e,t){return h(),i(`svg`,L,[...t[0]||=[a(`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`},null,-1),a(`rect`,{x:`12`,y:`11`,width:`8`,height:`6`,rx:`1`,fill:`currentColor`,stroke:`none`},null,-1)]])}var ve=j(I,[[`render`,_e]]);const ye={},be={viewBox:`0 0 24 24`,fill:`currentColor`};function xe(e,t){return h(),i(`svg`,be,[...t[0]||=[a(`path`,{d:`M8 5v14l11-7z`},null,-1)]])}var Se=j(ye,[[`render`,xe]]);const Ce={},we={viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function Te(e,t){return h(),i(`svg`,we,[...t[0]||=[a(`rect`,{x:`2`,y:`6`,width:`20`,height:`12`,rx:`2`},null,-1),a(`path`,{d:`M7 14v-4M12 14V8M17 14v-2`},null,-1)]])}var Ee=j(Ce,[[`render`,Te]]);const De={},Oe={viewBox:`0 0 24 24`,fill:`currentColor`};function ke(e,t){return h(),i(`svg`,Oe,[...t[0]||=[a(`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 Ae=j(De,[[`render`,ke]]);const je={},Me={viewBox:`0 0 24 24`,fill:`currentColor`};function Ne(e,t){return h(),i(`svg`,Me,[...t[0]||=[a(`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 R=j(je,[[`render`,Ne]]);const Pe={},Fe={viewBox:`0 0 24 24`,fill:`currentColor`};function Ie(e,t){return h(),i(`svg`,Fe,[...t[0]||=[a(`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 z=j(Pe,[[`render`,Ie]]);const Le=[`aria-label`];var Re=j(c({__name:`PlayButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let r=e,a=E(b(r,`player`),b(r,`for`)),o=t(()=>a.value?.isError?`error`:a.value?.hasEnded?`ended`:a.value?.isPlaying?`playing`:`idle`),s=t(()=>{switch(o.value){case`error`:return`Retry`;case`ended`:return`Replay`;case`playing`:return`Pause`;default:return`Play`}});function c(){let e=a.value;e&&(e.isError?e.retry():e.togglePlay())}return(e,t)=>(h(),i(`button`,{type:`button`,class:`mlv-play-button`,"aria-label":s.value,onClick:c},[v(e.$slots,`default`,{isPlaying:x(a)?.isPlaying??!1,hasEnded:x(a)?.hasEnded??!1,isError:x(a)?.isError??!1},()=>[o.value===`error`||o.value===`ended`?(h(),n(x(Ae),{key:0})):o.value===`playing`?(h(),n(x(F),{key:1})):(h(),n(x(Se),{key:2}))],!0)],8,Le))}}),[[`__scopeId`,`data-v-218255bd`]]),ze=c({__name:`VolumeIcon`,props:{isAudible:{type:Boolean,required:!0}},setup(e){return(t,r)=>e.isAudible?(h(),n(x(z),{key:0})):(h(),n(x(R),{key:1}))}});const Be=[`aria-label`];var Ve=j(c({__name:`MuteButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=e,n=E(b(t,`player`),b(t,`for`));return(e,t)=>(h(),i(`button`,{type:`button`,class:`mlv-mute-button`,"aria-label":x(n)?.isMuted?`Unmute`:`Mute`,onClick:t[0]||=e=>x(n)?.toggleMute()},[v(e.$slots,`default`,{isMuted:x(n)?.isMuted??!1},()=>[s(ze,{"is-audible":x(n)?.isAudible??!1},null,8,[`is-audible`])],!0)],8,Be))}}),[[`__scopeId`,`data-v-1940b598`]]);const He=[`aria-label`];var Ue=j(c({__name:`FullscreenButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=e,r=E(b(t,`player`),b(t,`for`));return(e,t)=>(h(),i(`button`,{type:`button`,class:`mlv-fullscreen-button`,"aria-label":x(r)?.isFullscreen?`Exit fullscreen`:`Enter fullscreen`,onClick:t[0]||=e=>x(r)?.toggleFullscreen()},[v(e.$slots,`default`,{isFullscreen:x(r)?.isFullscreen??!1},()=>[x(r)?.isFullscreen?(h(),n(x(fe),{key:0})):(h(),n(x(ce),{key:1}))],!0)],8,He))}}),[[`__scopeId`,`data-v-b93a5017`]]),We=j(c({__name:`Spinner`,props:{size:{type:Number,required:!1,default:14},borderWidth:{type:Number,required:!1,default:2}},setup(e){return(t,n)=>(h(),i(`div`,{class:`spinner`,style:p({width:`${e.size}px`,height:`${e.size}px`,borderWidth:`${e.borderWidth}px`})},null,4))}}),[[`__scopeId`,`data-v-259be2b2`]]);const Ge={key:0,class:`mlv-buffering`};var Ke=j(c({__name:`Buffering`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=e,n=E(b(t,`player`),b(t,`for`));return(e,t)=>x(n)?.isBuffering?(h(),i(`div`,Ge,[v(e.$slots,`default`,{},()=>[s(We)],!0)])):r(`v-if`,!0)}}),[[`__scopeId`,`data-v-454fec7f`]]);const qe=[`aria-pressed`];var Je=j(c({__name:`LoopButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=e,n=E(b(t,`player`),b(t,`for`));return(e,t)=>(h(),i(`button`,{type:`button`,class:f([`mlv-loop-button`,{"mlv-loop-button--active":x(n)?.isLooping}]),"aria-pressed":x(n)?.isLooping??!1,"aria-label":`Toggle loop`,onClick:t[0]||=e=>x(n)?.toggleLoop()},[v(e.$slots,`default`,{isLooping:x(n)?.isLooping??!1},()=>[s(x(ge))],!0)],10,qe))}}),[[`__scopeId`,`data-v-e32eda25`]]);const Ye=[`aria-pressed`];var Xe=j(c({__name:`PipButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=e,n=E(b(t,`player`),b(t,`for`));return(e,t)=>x(n)?.supportsPip?(h(),i(`button`,{key:0,type:`button`,class:f([`mlv-pip-button`,{"mlv-pip-button--active":x(n)?.isPipActive}]),"aria-pressed":x(n)?.isPipActive??!1,"aria-label":`Toggle Picture-in-Picture`,onClick:t[0]||=e=>x(n)?.togglePip()},[v(e.$slots,`default`,{isPipActive:x(n)?.isPipActive??!1},()=>[s(x(ve))],!0)],10,Ye)):r(`v-if`,!0)}}),[[`__scopeId`,`data-v-f654d93e`]]);function Ze(e){function t(){let t=e.captionTracks;if(!t.length)return;let n=t[t.findIndex(t=>t.index===e.activeCaptionIndex)+1];e.setCaptionTrack(n?n.index:null)}function n(){return e.captionTracks.find(t=>t.index===e.activeCaptionIndex)?.label??`Off`}return{cycleCaptionTrack:t,currentCaptionLabel:n}}const Qe=[`aria-label`];var $e=j(c({__name:`CaptionsButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let n=e,a=E(b(n,`player`),b(n,`for`)),o=t(()=>a.value?Ze(a.value):null),c=t(()=>o.value?.currentCaptionLabel()??`Off`);function l(){o.value?.cycleCaptionTrack()}return(e,t)=>x(a)?.supportsCaptions?(h(),i(`button`,{key:0,type:`button`,class:f([`mlv-captions-button`,{"mlv-captions-button--active":x(a)?.activeCaptionIndex!==null}]),"aria-label":`Captions: ${c.value}`,onClick:l},[v(e.$slots,`default`,{currentLabel:c.value,tracks:x(a)?.captionTracks??[],activeIndex:x(a)?.activeCaptionIndex??null},()=>[s(x(ie))],!0)],10,Qe)):r(`v-if`,!0)}}),[[`__scopeId`,`data-v-2572c4f2`]]);function et(e){function t(){let t=e.qualityLevels;if(!t.length)return;if(e.isAutoQuality){e.setQuality(t[t.length-1].index);return}let n=t.findIndex(t=>t.index===e.currentQualityIndex);e.setQuality(n<=0?null:t[n-1].index)}function n(){return e.isAutoQuality?`Auto`:e.qualityLevels.find(t=>t.index===e.currentQualityIndex)?.label??`Auto`}return{cycleQuality:t,currentQualityLabel:n}}const tt=[`aria-label`];var nt=j(c({__name:`QualityButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let n=e,a=E(b(n,`player`),b(n,`for`)),o=t(()=>a.value?et(a.value):null),c=t(()=>o.value?.currentQualityLabel()??`Auto`);function l(){o.value?.cycleQuality()}return(e,t)=>x(a)?.supportsQuality?(h(),i(`button`,{key:0,type:`button`,class:f([`mlv-quality-button`,{"mlv-quality-button--active":!x(a)?.isAutoQuality}]),"aria-label":`Quality: ${c.value}`,onClick:l},[v(e.$slots,`default`,{currentLabel:c.value,levels:x(a)?.qualityLevels??[],currentIndex:x(a)?.currentQualityIndex??null,isAuto:x(a)?.isAutoQuality??!0},()=>[s(x(Ee))],!0)],10,tt)):r(`v-if`,!0)}}),[[`__scopeId`,`data-v-d1352878`]]);function rt(e){function t(){let t=C.indexOf(e.currentPlaybackRate);e.setPlaybackRate(C[(t+1)%C.length])}function n(e){return`${e}×`}return{cycleRate:t,fmtRate:n}}const it=[`aria-label`];var at=j(c({__name:`PlaybackRateButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let n=e,a=E(b(n,`player`),b(n,`for`)),s=t(()=>a.value?rt(a.value):null),c=t(()=>s.value?s.value.fmtRate(a.value.currentPlaybackRate):`1×`);function l(){s.value?.cycleRate()}return(e,t)=>x(a)?.supportsPlaybackRate?(h(),i(`button`,{key:0,type:`button`,class:f([`mlv-playback-rate-button`,{"mlv-playback-rate-button--active":x(a)?.currentPlaybackRate!==1}]),"aria-label":`Playback speed: ${c.value}`,onClick:l},[v(e.$slots,`default`,{currentLabel:c.value,rate:x(a)?.currentPlaybackRate??1,rates:[...x(C)]},()=>[o(y(c.value),1)],!0)],10,it)):r(`v-if`,!0)}}),[[`__scopeId`,`data-v-646c9bc1`]]);const ot={class:`mlv-volume-wrap`},st=[`value`],ct={class:`mlv-volume-pct`};var lt=j(c({inheritAttrs:!1,__name:`VolumeSlider`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let n=e,r=E(b(n,`player`),b(n,`for`)),o=t(()=>{let e=r.value;return e?e.isMuted?0:Math.round(e.vol*100):0});function s(e){r.value?.setVolume(Number(e.target.value)/100)}return(e,t)=>(h(),i(`div`,ot,[a(`input`,u({type:`range`,min:`0`,max:`100`,step:`1`,value:o.value,class:`mlv-volume-slider`},e.$attrs,{style:{"--v":`${o.value}%`},"aria-label":`Volume`,onInput:s}),null,16,st),v(e.$slots,`default`,{percent:o.value},()=>[a(`span`,ct,y(o.value)+`%`,1)],!0)]))}}),[[`__scopeId`,`data-v-fbb2c86c`]]);const ut={class:`mlv-time-display__time`},dt={class:`mlv-time-display__total`};var ft=j(c({__name:`TimeDisplay`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(t){let n=t,r=E(b(n,`player`),b(n,`for`));return(t,n)=>(h(),i(`span`,{class:f([`mlv-time-display`,{"mlv-time-display--live":x(r)?.isLive}])},[v(t.$slots,`default`,{isLive:x(r)?.isLive??!1,current:x(r)?.current??0,total:x(r)?.total??0,formatTime:x(D)},()=>[x(r)?.isLive?(h(),i(e,{key:0},[n[0]||=a(`span`,{class:`mlv-time-display__dot`},null,-1),n[1]||=o(`Live `,-1)],64)):(h(),i(e,{key:1},[a(`span`,ut,y(x(D)(x(r)?.current??0)),1),a(`span`,dt,`/ `+y(x(D)(x(r)?.total??0)),1)],64))],!0)],2))}}),[[`__scopeId`,`data-v-0285c811`]]);const pt=[`aria-label`,`aria-pressed`],mt=[`aria-current`,`onClick`],B={class:`mlv-transcript__time`},ht={class:`mlv-transcript__text`};var gt=j(c({__name:`Transcript`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1},cues:{type:[Array,String],required:!1}},setup(o){let s=o,c=E(b(s,`player`),b(s,`for`)),l=t(()=>{if(typeof s.cues!=`string`)return s.cues??[];try{return JSON.parse(s.cues)}catch{return[]}}),u=t(()=>{let e=c.value?.current??0,t=l.value;for(let n=t.length-1;n>=0;n--){let r=t[n];if(!(r.time>e))return r.end!==void 0&&e>=r.end?null:n}return null}),p=g(null),C=g(!1);function w(e){let t=c.value;t&&(t.total>0&&t.seek(e.time/t.total*100),t.isPlaying||t.togglePlay())}S(u,async e=>{e===null||C.value||(await d(),p.value?.querySelector(`.mlv-transcript__cue--active`)?.scrollIntoView?.({block:`nearest`,behavior:`smooth`}))});let T=typeof window<`u`&&`speechSynthesis`in window,O=g(!1),k=g(!1);function A(){if(T){if(O.value=!O.value,O.value){c.value&&!c.value.isMuted&&(c.value.toggleMute(),k.value=!0);return}window.speechSynthesis.cancel(),k.value&&c.value?.isMuted&&c.value.toggleMute(),k.value=!1}}return S(u,e=>{if(!T||!O.value||e===null)return;let t=l.value[e];if(!t)return;window.speechSynthesis.cancel();let n=new SpeechSynthesisUtterance(t.text);n.pitch=2,n.rate=1.5,window.speechSynthesis.speak(n)}),S(()=>c.value?.isMuted,e=>{T&&O.value&&e===!1&&(window.speechSynthesis.cancel(),O.value=!1,k.value=!1)}),m(()=>{T&&window.speechSynthesis.cancel(),k.value&&c.value?.isMuted&&c.value.toggleMute()}),(t,o)=>(h(),i(e,null,[x(T)?(h(),i(`button`,{key:0,type:`button`,class:`mlv-transcript__speech-toggle`,"aria-label":O.value?`Mute transcript readout`:`Unmute transcript readout`,"aria-pressed":O.value,onClick:A},[O.value?(h(),n(z,{key:0})):(h(),n(R,{key:1}))],8,pt)):r(`v-if`,!0),a(`ol`,{ref_key:`listEl`,ref:p,class:`mlv-transcript`,onPointerenter:o[0]||=e=>C.value=!0,onPointerleave:o[1]||=e=>C.value=!1},[(h(!0),i(e,null,_(l.value,(e,n)=>(h(),i(`li`,{key:`${e.time}-${n}`,class:`mlv-transcript__item`},[a(`button`,{type:`button`,class:f([`mlv-transcript__cue`,{"mlv-transcript__cue--active":n===u.value}]),"aria-current":n===u.value?`true`:void 0,onClick:t=>w(e)},[v(t.$slots,`default`,{cue:e,index:n,isActive:n===u.value,formatTime:x(D)},()=>[a(`span`,B,y(x(D)(e.time)),1),a(`span`,ht,y(e.text),1)],!0)],10,mt)]))),128))],544)],64))}}),[[`__scopeId`,`data-v-c166a2c5`]]);const V=l(ee,{shadowRoot:!1}),H=l(Re,{shadowRoot:!1}),U=l(Ve,{shadowRoot:!1}),W=l(Ue,{shadowRoot:!1}),G=l(Ke,{shadowRoot:!1}),K=l(Je,{shadowRoot:!1}),q=l(Xe,{shadowRoot:!1}),J=l($e,{shadowRoot:!1}),Y=l(nt,{shadowRoot:!1}),X=l(at,{shadowRoot:!1}),Z=l(lt,{shadowRoot:!1}),Q=l(ft,{shadowRoot:!1}),$=l(gt,{shadowRoot:!1});customElements.define(`ml-controls-scrubber`,V),customElements.define(`ml-controls-play-button`,H),customElements.define(`ml-controls-mute-button`,U),customElements.define(`ml-controls-fullscreen-button`,W),customElements.define(`ml-controls-buffering`,G),customElements.define(`ml-controls-loop-button`,K),customElements.define(`ml-controls-pip-button`,q),customElements.define(`ml-controls-captions-button`,J),customElements.define(`ml-controls-quality-button`,Y),customElements.define(`ml-controls-playback-rate-button`,X),customElements.define(`ml-controls-volume-slider`,Z),customElements.define(`ml-controls-time-display`,Q),customElements.define(`ml-controls-transcript`,$);export{G as BufferingElement,J as CaptionsButtonElement,W as FullscreenButtonElement,K as LoopButtonElement,U as MuteButtonElement,q as PipButtonElement,H as PlayButtonElement,X as PlaybackRateButtonElement,Y as QualityButtonElement,V as ScrubberElement,Q as TimeDisplayElement,$ as TranscriptElement,Z as VolumeSliderElement};
1
+ import{Fragment as e,computed as t,createBlock as n,createCommentVNode as r,createElementBlock as i,createElementVNode as a,createTextVNode as o,createVNode as s,defineComponent as c,defineCustomElement as l,h as u,mergeProps as d,nextTick as f,normalizeClass as p,normalizeStyle as m,onBeforeUnmount as h,openBlock as g,ref as _,renderList as ee,renderSlot as v,shallowRef as y,toDisplayString as b,toRef as x,unref as S,watch as C}from"vue";const w=[.5,.75,1,1.25,1.5,2],T=3e3;function E(e){let n=_(!1),r=_(null),i=!1,a=null,o=!1,s=t(()=>{let t=e.value;return t?.total?t.current/t.total*100:0}),c=t(()=>r.value??s.value),l=t(()=>r.value!==null),u=t(()=>{let t=e.value?.total??0;return c.value/100*t});function d(){a&&clearTimeout(a),a=null}function f(){d(),r.value=null}function p(t){let a=e.value;a?.total&&(n.value||=(i=a.isPlaying,a.pause(),!0),d(),r.value=Number(t.target.value))}function m(t){if(!n.value)return;n.value=!1,o=!0;let s=e.value;if(!s)return;let c=Number(t.target.value);r.value=c,s.seek(c),i&&s.play().catch(()=>{}),d(),a=setTimeout(f,T)}function g(t){if(n.value||o)return;o=!1;let s=e.value;if(!s?.total)return;let c=Number(t.target.value);r.value=c,s.seek(c),i&&s.play().catch(()=>{}),d(),a=setTimeout(f,T)}return C(()=>e.value?.current,()=>{let t=e.value;if(r.value===null||!t?.total)return;let n=r.value/100*t.total;Math.abs(t.current-n)<1&&f()}),h(f),{scrubbing:l,displayPercent:c,previewSeconds:u,onInput:p,onChange:m,onTouchEnd:g}}function D(e,n){return t(()=>e.value?e.value:n.value?document.getElementById(n.value)??null:null)}function O(e,t=!1){if(!e||isNaN(e))return`0:00`;let n=t?Math.round(e):Math.floor(e);return`${Math.floor(n/60)}:${String(n%60).padStart(2,`0`)}`}const k={class:`mlv-scrubber-wrap`},te=[`value`,`aria-valuetext`];var ne=c({inheritAttrs:!1,__name:`Scrubber`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=e,n=D(x(t,`player`),x(t,`for`)),{scrubbing:o,displayPercent:s,previewSeconds:c,onInput:l,onChange:u,onTouchEnd:f}=E(n),p=e=>O(e,!0);return(e,t)=>(g(),i(`div`,k,[a(`input`,d({type:`range`,min:`0`,max:`100`,step:`0.5`,value:S(s),class:`mlv-scrubber`},e.$attrs,{style:{"--p":`${S(s)}%`,"--b":`${S(n)?.bufferedDisplay??0}%`},"aria-label":`Seek`,"aria-valuetext":`${p(S(c))} of ${p(S(n)?.total??0)}`,onInput:t[0]||=(...e)=>S(l)&&S(l)(...e),onChange:t[1]||=(...e)=>S(u)&&S(u)(...e),onTouchend:t[2]||=(...e)=>S(f)&&S(f)(...e)}),null,16,te),v(e.$slots,`preview`,{scrubbing:S(o),percent:S(s),previewSeconds:S(c),formatTime:p},()=>[S(o)?(g(),i(`div`,{key:0,class:`mlv-scrubber__preview`,style:m({left:`${S(s)}%`})},b(p(S(c))),5)):r(`v-if`,!0)],!0)]))}}),A=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},re=A(ne,[[`__scopeId`,`data-v-043f1bc8`]]);function ie(e,t){if(t.library!==void 0)return t.library;if(e.defaultLibrary!==null)return e.defaultLibrary;if(e.libraries.size===1)return e.libraries.keys().next().value}function ae(e,t,n){return{tag:`span`,className:`icon-svg`,html:typeof e==`function`?e({...t,library:n}):e}}function j(e,t,n){let r={name:t,variant:n.variant},i=ie(e,n),a=e.overrides.get(t);return{request:r,source:i===void 0?void 0:e.libraries.get(i),override:a===void 0?void 0:ae(a,r,i)}}function oe({request:e,source:t,override:n}){return n||t?.resolveSync?.(e)}function M(e,t){return e?.resolveSync?.(t)||e?.resolve?.(t)}function se(e,t){let n,r=!1,i=e.then(e=>{if(r){e.dispose?.();return}n=e,t(e)});return[{resolveSync(e){return n?.resolveSync?.(e)},async resolve(e){return await i,M(n,e)},dispose(){r=!0,n?.dispose?.()}},i]}function ce(e){return`resolveSync`in e||`resolve`in e}async function le(e,t){if(`resolver`in t||`icons`in t){let{svgLibrary:e}=await import(`./chunks/svg-C5y9tsRK-D3IfNKbR.mjs`);return e(t)}if(`className`in t){let{fontLibrary:e}=await import(`./chunks/font-KFHs3p_4-KFHs3p_4.mjs`);return e(t)}throw Error(`Unrecognised library config for "${e}"`)}function ue(){return{overrides:new Map,libraries:new Map,listeners:new Set,defaultLibrary:null}}function de({listeners:e}){for(let t of e)t()}function fe(){let e=ue();function t(){de(e)}return{version:`0.0.1`,get defaultLibrary(){return e.defaultLibrary},get libraries(){return[...e.libraries.keys()]},register(n,r,i={}){if(e.libraries.get(n)?.dispose?.(),i.default&&(e.defaultLibrary=n),ce(r))return e.libraries.set(n,r),t(),Promise.resolve();let[a,o]=se(le(n,r),r=>{e.libraries.get(n)===a&&(e.libraries.set(n,r),t())});return e.libraries.set(n,a),t(),o.catch(r=>{throw e.defaultLibrary===n&&(e.defaultLibrary=null,t()),r})},unregister(n){e.libraries.get(n)?.dispose?.(),e.libraries.delete(n),e.defaultLibrary===n&&(e.defaultLibrary=null),t()},use(n){e.defaultLibrary=n,t()},override(n,r){let i=typeof n==`string`?[[n,r??null]]:Object.entries(n);for(let[t,n]of i)n===null?e.overrides.delete(t):e.overrides.set(t,n);t()},getIconSync(t,n={}){return oe(j(e,t,n))},async getIcon(t,n={}){let{request:r,source:i,override:a}=j(e,t,n);if(a)return a;try{return await M(i,r)}catch(e){import.meta.env?.DEV&&console.warn(`[sigil] "${t}" failed to resolve`,e);return}},subscribe(t){return e.listeners.add(t),()=>{e.listeners.delete(t)}},clear(){for(let t of e.libraries.values())t.dispose?.();e.overrides.clear(),e.libraries.clear(),e.defaultLibrary=null,t()}}}const pe=Symbol.for(`@munsonlabs/sigil`),me=globalThis,N=me[pe]??=fe(),{register:P,unregister:he,override:ge,use:_e,getIcon:ve,getIconSync:ye,subscribe:be,clear:xe}=N;function F(e,t,n,r=N){let i=0;function a(){let a=++i,o=r.getIconSync(e,t);if(o){n(o);return}r.getIcon(e,t).then(e=>{a===i&&n(e)})}let o=r.subscribe(a);return a(),()=>{i++,o()}}const I=c({name:`Sigil`,inheritAttrs:!1,props:{name:{type:String,required:!0},library:{type:String,default:void 0},variant:{type:String,default:void 0}},setup(e,{attrs:t}){let n=y();return C(()=>[e.name,e.library,e.variant],([e,t,r],i,a)=>{a(F(e,{library:t,variant:r},e=>{n.value=e}))},{immediate:!0}),()=>{let e=n.value;if(!e)return null;let r={...t,class:[e.className,t.class],"aria-hidden":`true`};return e.html===void 0?u(e.tag,r,e.text):u(e.tag,{...r,innerHTML:e.html})}}}),Se={"mlv-back":`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z"/></svg>`,"mlv-captions":`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="5" width="20" height="14" rx="2"/><path d="M9.5 10.5a2 2 0 0 0-3.5 1.3v.4a2 2 0 0 0 3.5 1.3"/><path d="M17.5 10.5a2 2 0 0 0-3.5 1.3v.4a2 2 0 0 0 3.5 1.3"/></svg>`,"mlv-close":`<svg viewBox="0 0 24 24" fill="currentColor"><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"/></svg>`,"mlv-controls":`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="4" y1="6" x2="20" y2="6"/><line x1="4" y1="12" x2="20" y2="12"/><line x1="4" y1="18" x2="20" y2="18"/><circle cx="9" cy="6" r="2.5" fill="currentColor" stroke="none"/><circle cx="15" cy="12" r="2.5" fill="currentColor" stroke="none"/><circle cx="9" cy="18" r="2.5" fill="currentColor" stroke="none"/></svg>`,"mlv-expand":`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M4 12l1.41 1.41L11 7.83V20h2V7.83l5.59 5.58L20 12l-8-8-8 8z"/></svg>`,"mlv-fullscreen-enter":`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"/></svg>`,"mlv-fullscreen-exit":`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"/></svg>`,"mlv-loop":`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z"/></svg>`,"mlv-more":`<svg viewBox="0 0 24 24" fill="currentColor"><circle cx="5" cy="12" r="2"/><circle cx="12" cy="12" r="2"/><circle cx="19" cy="12" r="2"/></svg>`,"mlv-pause":`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M6 19h4V5H6v14zm8-14v14h4V5h-4z"/></svg>`,"mlv-pip":`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="4" width="20" height="16" rx="2"/><rect x="12" y="11" width="8" height="6" rx="1" fill="currentColor" stroke="none"/></svg>`,"mlv-play":`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M8 5v14l11-7z"/></svg>`,"mlv-quality":`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="6" width="20" height="12" rx="2"/><path d="M7 14v-4M12 14V8M17 14v-2"/></svg>`,"mlv-replay":`<svg viewBox="0 0 24 24" fill="currentColor"><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"/></svg>`,"mlv-skip-next":`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z"/></svg>`,"mlv-volume-mute":`<svg viewBox="0 0 24 24" fill="currentColor"><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"/></svg>`,"mlv-volume-on":`<svg viewBox="0 0 24 24" fill="currentColor"><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"/></svg>`};let L=!1;function R(){L||(L=!0,N.subscribe(R)),!N.libraries.includes(`mlv`)&&P(`mlv`,{resolveSync({name:e}){let t=Se[e];if(t!==void 0)return{tag:`span`,className:`icon-svg`,html:t}}})}var z=A(c({__name:`Icon`,props:{name:{type:String,required:!0}},setup(e){return R(),(t,r)=>(g(),n(S(I),{name:`mlv-${e.name}`,library:`mlv`,class:`mlv-icon`},null,8,[`name`]))}}),[[`__scopeId`,`data-v-26446d8e`]]);const Ce=[`aria-label`];var we=A(c({__name:`PlayButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let r=e,a=D(x(r,`player`),x(r,`for`)),o=t(()=>a.value?.isError?`error`:a.value?.hasEnded?`ended`:a.value?.isPlaying?`playing`:`idle`),s=t(()=>{switch(o.value){case`error`:return`Retry`;case`ended`:return`Replay`;case`playing`:return`Pause`;default:return`Play`}});function c(){let e=a.value;e&&(e.isError?e.retry():e.togglePlay())}return(e,t)=>(g(),i(`button`,{type:`button`,class:`mlv-play-button`,"aria-label":s.value,onClick:c},[v(e.$slots,`default`,{isPlaying:S(a)?.isPlaying??!1,hasEnded:S(a)?.hasEnded??!1,isError:S(a)?.isError??!1},()=>[o.value===`error`||o.value===`ended`?(g(),n(z,{key:0,name:`replay`})):o.value===`playing`?(g(),n(z,{key:1,name:`pause`})):(g(),n(z,{key:2,name:`play`}))],!0)],8,Ce))}}),[[`__scopeId`,`data-v-218255bd`]]),Te=c({__name:`VolumeIcon`,props:{isAudible:{type:Boolean,required:!0}},setup(e){return(t,r)=>e.isAudible?(g(),n(z,{key:0,name:`volume-on`})):(g(),n(z,{key:1,name:`volume-mute`}))}});const Ee=[`aria-label`];var De=A(c({__name:`MuteButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=e,n=D(x(t,`player`),x(t,`for`));return(e,t)=>(g(),i(`button`,{type:`button`,class:`mlv-mute-button`,"aria-label":S(n)?.isMuted?`Unmute`:`Mute`,onClick:t[0]||=e=>S(n)?.toggleMute()},[v(e.$slots,`default`,{isMuted:S(n)?.isMuted??!1},()=>[s(Te,{"is-audible":S(n)?.isAudible??!1},null,8,[`is-audible`])],!0)],8,Ee))}}),[[`__scopeId`,`data-v-1940b598`]]);const Oe=[`aria-label`];var ke=A(c({__name:`FullscreenButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=e,r=D(x(t,`player`),x(t,`for`));return(e,t)=>(g(),i(`button`,{type:`button`,class:`mlv-fullscreen-button`,"aria-label":S(r)?.isFullscreen?`Exit fullscreen`:`Enter fullscreen`,onClick:t[0]||=e=>S(r)?.toggleFullscreen()},[v(e.$slots,`default`,{isFullscreen:S(r)?.isFullscreen??!1},()=>[S(r)?.isFullscreen?(g(),n(z,{key:0,name:`fullscreen-exit`})):(g(),n(z,{key:1,name:`fullscreen-enter`}))],!0)],8,Oe))}}),[[`__scopeId`,`data-v-b93a5017`]]),Ae=A(c({__name:`Spinner`,props:{size:{type:Number,required:!1,default:14},borderWidth:{type:Number,required:!1,default:2}},setup(e){return(t,n)=>(g(),i(`div`,{class:`spinner`,style:m({width:`${e.size}px`,height:`${e.size}px`,borderWidth:`${e.borderWidth}px`})},null,4))}}),[[`__scopeId`,`data-v-259be2b2`]]);const je={key:0,class:`mlv-buffering`};var Me=A(c({__name:`Buffering`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=e,n=D(x(t,`player`),x(t,`for`));return(e,t)=>S(n)?.isBuffering?(g(),i(`div`,je,[v(e.$slots,`default`,{},()=>[s(Ae)],!0)])):r(`v-if`,!0)}}),[[`__scopeId`,`data-v-454fec7f`]]);const Ne=[`aria-pressed`];var Pe=A(c({__name:`LoopButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=e,n=D(x(t,`player`),x(t,`for`));return(e,t)=>(g(),i(`button`,{type:`button`,class:p([`mlv-loop-button`,{"mlv-loop-button--active":S(n)?.isLooping}]),"aria-pressed":S(n)?.isLooping??!1,"aria-label":`Toggle loop`,onClick:t[0]||=e=>S(n)?.toggleLoop()},[v(e.$slots,`default`,{isLooping:S(n)?.isLooping??!1},()=>[s(z,{name:`loop`})],!0)],10,Ne))}}),[[`__scopeId`,`data-v-e32eda25`]]);const Fe=[`aria-pressed`];var Ie=A(c({__name:`PipButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=e,n=D(x(t,`player`),x(t,`for`));return(e,t)=>S(n)?.supportsPip?(g(),i(`button`,{key:0,type:`button`,class:p([`mlv-pip-button`,{"mlv-pip-button--active":S(n)?.isPipActive}]),"aria-pressed":S(n)?.isPipActive??!1,"aria-label":`Toggle Picture-in-Picture`,onClick:t[0]||=e=>S(n)?.togglePip()},[v(e.$slots,`default`,{isPipActive:S(n)?.isPipActive??!1},()=>[s(z,{name:`pip`})],!0)],10,Fe)):r(`v-if`,!0)}}),[[`__scopeId`,`data-v-f654d93e`]]);function Le(e){function t(){let t=e.captionTracks;if(!t.length)return;let n=t[t.findIndex(t=>t.index===e.activeCaptionIndex)+1];e.setCaptionTrack(n?n.index:null)}function n(){return e.captionTracks.find(t=>t.index===e.activeCaptionIndex)?.label??`Off`}return{cycleCaptionTrack:t,currentCaptionLabel:n}}const Re=[`aria-label`];var ze=A(c({__name:`CaptionsButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let n=e,a=D(x(n,`player`),x(n,`for`)),o=t(()=>a.value?Le(a.value):null),c=t(()=>o.value?.currentCaptionLabel()??`Off`);function l(){o.value?.cycleCaptionTrack()}return(e,t)=>S(a)?.supportsCaptions?(g(),i(`button`,{key:0,type:`button`,class:p([`mlv-captions-button`,{"mlv-captions-button--active":S(a)?.activeCaptionIndex!==null}]),"aria-label":`Captions: ${c.value}`,onClick:l},[v(e.$slots,`default`,{currentLabel:c.value,tracks:S(a)?.captionTracks??[],activeIndex:S(a)?.activeCaptionIndex??null},()=>[s(z,{name:`captions`})],!0)],10,Re)):r(`v-if`,!0)}}),[[`__scopeId`,`data-v-2572c4f2`]]);function Be(e){function t(){let t=e.qualityLevels;if(!t.length)return;if(e.isAutoQuality){e.setQuality(t[t.length-1].index);return}let n=t.findIndex(t=>t.index===e.currentQualityIndex);e.setQuality(n<=0?null:t[n-1].index)}function n(){return e.isAutoQuality?`Auto`:e.qualityLevels.find(t=>t.index===e.currentQualityIndex)?.label??`Auto`}return{cycleQuality:t,currentQualityLabel:n}}const Ve=[`aria-label`];var He=A(c({__name:`QualityButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let n=e,a=D(x(n,`player`),x(n,`for`)),o=t(()=>a.value?Be(a.value):null),c=t(()=>o.value?.currentQualityLabel()??`Auto`);function l(){o.value?.cycleQuality()}return(e,t)=>S(a)?.supportsQuality?(g(),i(`button`,{key:0,type:`button`,class:p([`mlv-quality-button`,{"mlv-quality-button--active":!S(a)?.isAutoQuality}]),"aria-label":`Quality: ${c.value}`,onClick:l},[v(e.$slots,`default`,{currentLabel:c.value,levels:S(a)?.qualityLevels??[],currentIndex:S(a)?.currentQualityIndex??null,isAuto:S(a)?.isAutoQuality??!0},()=>[s(z,{name:`quality`})],!0)],10,Ve)):r(`v-if`,!0)}}),[[`__scopeId`,`data-v-d1352878`]]);function Ue(e){function t(){let t=w.indexOf(e.currentPlaybackRate);e.setPlaybackRate(w[(t+1)%w.length])}function n(e){return`${e}×`}return{cycleRate:t,fmtRate:n}}const We=[`aria-label`];var Ge=A(c({__name:`PlaybackRateButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let n=e,a=D(x(n,`player`),x(n,`for`)),s=t(()=>a.value?Ue(a.value):null),c=t(()=>s.value?s.value.fmtRate(a.value.currentPlaybackRate):`1×`);function l(){s.value?.cycleRate()}return(e,t)=>S(a)?.supportsPlaybackRate?(g(),i(`button`,{key:0,type:`button`,class:p([`mlv-playback-rate-button`,{"mlv-playback-rate-button--active":S(a)?.currentPlaybackRate!==1}]),"aria-label":`Playback speed: ${c.value}`,onClick:l},[v(e.$slots,`default`,{currentLabel:c.value,rate:S(a)?.currentPlaybackRate??1,rates:[...S(w)]},()=>[o(b(c.value),1)],!0)],10,We)):r(`v-if`,!0)}}),[[`__scopeId`,`data-v-646c9bc1`]]);const Ke={class:`mlv-volume-wrap`},qe=[`value`],Je={class:`mlv-volume-pct`};var Ye=A(c({inheritAttrs:!1,__name:`VolumeSlider`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let n=e,r=D(x(n,`player`),x(n,`for`)),o=t(()=>{let e=r.value;return e?e.isMuted?0:Math.round(e.vol*100):0});function s(e){r.value?.setVolume(Number(e.target.value)/100)}return(e,t)=>(g(),i(`div`,Ke,[a(`input`,d({type:`range`,min:`0`,max:`100`,step:`1`,value:o.value,class:`mlv-volume-slider`},e.$attrs,{style:{"--v":`${o.value}%`},"aria-label":`Volume`,onInput:s}),null,16,qe),v(e.$slots,`default`,{percent:o.value},()=>[a(`span`,Je,b(o.value)+`%`,1)],!0)]))}}),[[`__scopeId`,`data-v-fbb2c86c`]]);const Xe={class:`mlv-time-display__time`},Ze={class:`mlv-time-display__total`};var Qe=A(c({__name:`TimeDisplay`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(t){let n=t,r=D(x(n,`player`),x(n,`for`));return(t,n)=>(g(),i(`span`,{class:p([`mlv-time-display`,{"mlv-time-display--live":S(r)?.isLive}])},[v(t.$slots,`default`,{isLive:S(r)?.isLive??!1,current:S(r)?.current??0,total:S(r)?.total??0,formatTime:S(O)},()=>[S(r)?.isLive?(g(),i(e,{key:0},[n[0]||=a(`span`,{class:`mlv-time-display__dot`},null,-1),n[1]||=o(`Live `,-1)],64)):(g(),i(e,{key:1},[a(`span`,Xe,b(S(O)(S(r)?.current??0)),1),a(`span`,Ze,`/ `+b(S(O)(S(r)?.total??0)),1)],64))],!0)],2))}}),[[`__scopeId`,`data-v-0285c811`]]);const $e=[`aria-label`,`aria-pressed`],et=[`aria-current`,`onClick`],B={class:`mlv-transcript__time`},tt={class:`mlv-transcript__text`};var nt=A(c({__name:`Transcript`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1},cues:{type:[Array,String],required:!1}},setup(o){let s=o,c=D(x(s,`player`),x(s,`for`)),l=t(()=>{if(typeof s.cues!=`string`)return s.cues??[];try{return JSON.parse(s.cues)}catch{return[]}}),u=t(()=>{let e=c.value?.current??0,t=l.value;for(let n=t.length-1;n>=0;n--){let r=t[n];if(!(r.time>e))return r.end!==void 0&&e>=r.end?null:n}return null}),d=_(null),m=_(!1);function y(e){let t=c.value;t&&(t.total>0&&t.seek(e.time/t.total*100),t.play().catch(()=>{}))}C(u,async e=>{e===null||m.value||(await f(),d.value?.querySelector(`.mlv-transcript__cue--active`)?.scrollIntoView?.({block:`nearest`,behavior:`smooth`}))});let w=typeof window<`u`&&`speechSynthesis`in window,T=_(!1),E=_(!1);function k(){if(w){if(T.value=!T.value,T.value){c.value&&!c.value.isMuted&&(c.value.toggleMute(),E.value=!0);return}window.speechSynthesis.cancel(),E.value&&c.value?.isMuted&&c.value.toggleMute(),E.value=!1}}return C(u,e=>{if(!w||!T.value||e===null)return;let t=l.value[e];if(!t)return;window.speechSynthesis.cancel();let n=new SpeechSynthesisUtterance(t.text);n.pitch=2,n.rate=1.5,window.speechSynthesis.speak(n)}),C(()=>c.value?.isMuted,e=>{w&&T.value&&e===!1&&(window.speechSynthesis.cancel(),T.value=!1,E.value=!1)}),h(()=>{w&&window.speechSynthesis.cancel(),E.value&&c.value?.isMuted&&c.value.toggleMute()}),(t,o)=>(g(),i(e,null,[S(w)?(g(),i(`button`,{key:0,type:`button`,class:`mlv-transcript__speech-toggle`,"aria-label":T.value?`Mute transcript readout`:`Unmute transcript readout`,"aria-pressed":T.value,onClick:k},[T.value?(g(),n(z,{key:0,name:`volume-on`})):(g(),n(z,{key:1,name:`volume-mute`}))],8,$e)):r(`v-if`,!0),a(`ol`,{ref_key:`listEl`,ref:d,class:`mlv-transcript`,onPointerenter:o[0]||=e=>m.value=!0,onPointerleave:o[1]||=e=>m.value=!1},[(g(!0),i(e,null,ee(l.value,(e,n)=>(g(),i(`li`,{key:`${e.time}-${n}`,class:`mlv-transcript__item`},[a(`button`,{type:`button`,class:p([`mlv-transcript__cue`,{"mlv-transcript__cue--active":n===u.value}]),"aria-current":n===u.value?`true`:void 0,onClick:t=>y(e)},[v(t.$slots,`default`,{cue:e,index:n,isActive:n===u.value,formatTime:S(O)},()=>[a(`span`,B,b(S(O)(e.time)),1),a(`span`,tt,b(e.text),1)],!0)],10,et)]))),128))],544)],64))}}),[[`__scopeId`,`data-v-c166a2c5`]]);const V=l(re,{shadowRoot:!1}),H=l(we,{shadowRoot:!1}),U=l(De,{shadowRoot:!1}),W=l(ke,{shadowRoot:!1}),G=l(Me,{shadowRoot:!1}),K=l(Pe,{shadowRoot:!1}),q=l(Ie,{shadowRoot:!1}),J=l(ze,{shadowRoot:!1}),Y=l(He,{shadowRoot:!1}),X=l(Ge,{shadowRoot:!1}),Z=l(Ye,{shadowRoot:!1}),Q=l(Qe,{shadowRoot:!1}),$=l(nt,{shadowRoot:!1});customElements.define(`ml-controls-scrubber`,V),customElements.define(`ml-controls-play-button`,H),customElements.define(`ml-controls-mute-button`,U),customElements.define(`ml-controls-fullscreen-button`,W),customElements.define(`ml-controls-buffering`,G),customElements.define(`ml-controls-loop-button`,K),customElements.define(`ml-controls-pip-button`,q),customElements.define(`ml-controls-captions-button`,J),customElements.define(`ml-controls-quality-button`,Y),customElements.define(`ml-controls-playback-rate-button`,X),customElements.define(`ml-controls-volume-slider`,Z),customElements.define(`ml-controls-time-display`,Q),customElements.define(`ml-controls-transcript`,$);export{G as BufferingElement,J as CaptionsButtonElement,W as FullscreenButtonElement,K as LoopButtonElement,U as MuteButtonElement,q as PipButtonElement,H as PlayButtonElement,X as PlaybackRateButtonElement,Y as QualityButtonElement,V as ScrubberElement,Q as TimeDisplayElement,$ as TranscriptElement,Z as VolumeSliderElement};