@munsonlabs/video-player 0.2.6 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/chunks/ads-B8PU62NC.mjs +1 -0
- package/dist/chunks/brightcove-CPKzsnF0.mjs +1 -0
- package/dist/chunks/constants-Buc1xZvW.mjs +1 -0
- package/dist/chunks/dailymotion-DHCBjqaZ.mjs +1 -0
- package/dist/chunks/embedShared-R2ohosIo.mjs +1 -0
- package/dist/chunks/jwplayer-D8oOCmi4.mjs +1 -0
- package/dist/chunks/sourceHelpers-BNIZ7kmT.mjs +1 -0
- package/dist/chunks/vimeo-DC3q3YWJ.mjs +1 -0
- package/dist/chunks/youtube-e1csmnHD.mjs +1 -0
- package/dist/elements/chunks/ads-B8PU62NC.mjs +1 -0
- package/dist/elements/chunks/brightcove-CPKzsnF0.mjs +1 -0
- package/dist/elements/chunks/constants-Buc1xZvW.mjs +1 -0
- package/dist/elements/chunks/dailymotion-DHCBjqaZ.mjs +1 -0
- package/dist/elements/chunks/embedShared-R2ohosIo.mjs +1 -0
- package/dist/elements/chunks/jwplayer-D8oOCmi4.mjs +1 -0
- package/dist/elements/chunks/sourceHelpers-BNIZ7kmT.mjs +1 -0
- package/dist/elements/chunks/svg-BLBI83Ed-BjsPx0LR.mjs +1 -0
- package/dist/elements/chunks/vimeo-DC3q3YWJ.mjs +1 -0
- package/dist/elements/chunks/youtube-e1csmnHD.mjs +1 -0
- package/dist/elements/controls.css +1 -1
- package/dist/elements/controls.d.mts +23 -17
- package/dist/elements/controls.mjs +1 -1
- package/dist/elements/core.css +1 -1
- package/dist/elements/core.d.mts +32 -23
- package/dist/elements/core.mjs +1 -1
- package/dist/elements/index.d.mts +53 -40
- package/dist/elements/index.mjs +1 -1
- package/dist/elements/style.css +1 -1
- package/dist/index.d.mts +140 -90
- package/dist/index.mjs +1 -1
- package/dist/style.css +1 -1
- package/package.json +4 -4
- package/dist/chunks/ads-Dph3guS9.mjs +0 -1
- package/dist/chunks/brightcove-DiJF_74z.mjs +0 -1
- package/dist/chunks/constants-35ZnLsDv.mjs +0 -1
- package/dist/chunks/dailymotion-DTooszoV.mjs +0 -1
- package/dist/chunks/embedShared-CbArTtuR.mjs +0 -1
- package/dist/chunks/jwplayer-Dhq65VxK.mjs +0 -1
- package/dist/chunks/sourceHelpers-B0tH-grj.mjs +0 -1
- package/dist/chunks/vimeo-D0GAjId0.mjs +0 -1
- package/dist/chunks/youtube-B8AT2F-4.mjs +0 -1
- package/dist/elements/chunks/ads-Dph3guS9.mjs +0 -1
- package/dist/elements/chunks/brightcove-DiJF_74z.mjs +0 -1
- package/dist/elements/chunks/constants-35ZnLsDv.mjs +0 -1
- package/dist/elements/chunks/dailymotion-DTooszoV.mjs +0 -1
- package/dist/elements/chunks/embedShared-CbArTtuR.mjs +0 -1
- package/dist/elements/chunks/jwplayer-Dhq65VxK.mjs +0 -1
- package/dist/elements/chunks/sourceHelpers-B0tH-grj.mjs +0 -1
- package/dist/elements/chunks/svg-C5y9tsRK-D3IfNKbR.mjs +0 -1
- package/dist/elements/chunks/vimeo-D0GAjId0.mjs +0 -1
- package/dist/elements/chunks/youtube-B8AT2F-4.mjs +0 -1
package/README.md
CHANGED
|
@@ -19,8 +19,8 @@ import '@munsonlabs/video-player/style'
|
|
|
19
19
|
<template>
|
|
20
20
|
<VideoCard
|
|
21
21
|
label="Big Buck Bunny"
|
|
22
|
-
src="https://
|
|
23
|
-
poster="https://
|
|
22
|
+
src="https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4"
|
|
23
|
+
poster="https://img.youtube.com/vi/aqz-KE-bpKQ/0.jpg"
|
|
24
24
|
/>
|
|
25
25
|
</template>
|
|
26
26
|
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./platform-Dg9JBh8M.mjs";import{t}from"./loadScript-CxzeXqTe.mjs";const n=`mlv-ad-playing`,r=`mlv-ad-paused`;function i(){return window.google?.ima?Promise.resolve():t(`https://imasdk.googleapis.com/js/sdkloader/ima3.js`,`ima`)}function a(t,a,o,s){let c=document.createElement(`div`);c.className=`ima-ad-container`,t.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(a);function C(){d?.contentComplete()}function w(e){g=e,t.classList.toggle(n,e),e||(_=!1,t.classList.remove(r))}function T(){if(p||!m||!h||!u||!d||!l)return;let e=window.google?.ima;if(!e)return;p=!0,u.initialize();let t=new e.AdsRequest;t.adTagUrl=l,d.requestAds(t)}function E(e){l=e,T()}i().then(()=>{if(v)return;let n=window.google?.ima;n&&(u=new n.AdDisplayContainer(c,a),d=new n.AdsLoader(u),m=!0,d.addEventListener(n.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,i=>{if(v)return;let o=new n.AdsRenderingSettings;o.restoreCustomPlaybackStateOnAdBreakComplete=!0,f=i.getAdsManager(a,o),a.addEventListener(`ended`,C),x=a.currentSrc,f.addEventListener(n.AdEvent.Type.CONTENT_PAUSE_REQUESTED,()=>{a.removeEventListener(`ended`,C),a.ended&&e()&&(b=!0),a.pause(),w(!0),s.onAdStart();let t=f?.getVolume()??1;t>0&&(y=t),s.onAdMuteChange(t===0)}),f.addEventListener(n.AdEvent.Type.CONTENT_RESUME_REQUESTED,()=>{if(a.addEventListener(`ended`,C),w(!1),s.onAdEnd(),b){b=!1,x&&a.currentSrc!==x&&(a.src=x);let e=a.duration;e&&isFinite(e)&&(a.currentTime=e-.5);return}a.ended||a.play().catch(()=>{})}),f.addEventListener(n.AdEvent.Type.PAUSED,()=>{_=!0,t.classList.add(r),s.onAdPauseChange(!0)}),f.addEventListener(n.AdEvent.Type.RESUMED,()=>{_=!1,t.classList.remove(r),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()),a.play().catch(()=>{})});try{f.init(a.clientWidth,a.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=>{f||(p=!1),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(),a.removeEventListener(`ended`,C),f?.destroy(),d?.destroy(),c.remove(),t.classList.remove(n,r)}}}export{a as attachAds};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,t}from"./sourceHelpers-BNIZ7kmT.mjs";function n(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 r(e){for(let t of e?.plugins??[]){let e=t.options?.serverUrl??t.options?.imaOptions?.serverUrl;if(e)return e}return null}const i=t(async(e,t,n,i)=>{let a=await fetch(`https://players.brightcove.net/${e}/${t}_${n}/config.json`);if(!a.ok)throw Error(`Brightcove: could not load player config (${a.status})`);let o=await a.json(),s=i??o?.video_cloud?.policy_key;if(!s)throw Error(`Brightcove: policy_key not found in player config`);return{policyKey:s,adTagUrl:r(o)}},(e,t,n)=>`${e}/${t}_${n}`);async function a(t,n,r){let i=await fetch(`https://edge.api.brightcove.com/playback/v1/accounts/${t}/videos/${n}`,{headers:{Accept:`application/json;pk=${r}`}});if(!i.ok)throw Error(`Brightcove Playback API error: ${i.status}`);let a=await i.json(),o=e(a.sources||[]);if(!o.length)throw Error(`Brightcove: no playable sources found`);return{sources:o.map(e=>({src:e.src,type:e.type})),poster:a.poster??a.thumbnail??null}}async function o(e,t){let r=n(e);if(!r)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:o,playerId:s,embed:c,videoId:l}=r,{policyKey:u,adTagUrl:d}=await i(o,s,c,t),{sources:f,poster:p}=await a(o,l,u);return{...f[0],poster:p,adTagUrl:d}}export{o as resolveSource};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=`video-select`,t=`video-toggle`,n=`fullscreen-pending`,r=`fullscreen-pending-done`,i=`player__shell`,a=`16:9`,o=`application/x-mpegURL`,s=`application/dash+xml`,c=`video/mp4`,l=[.5,.75,1,1.25,1.5,2],u=.1;export{o as a,l as c,t as d,r as i,i as l,a as n,c as o,n as r,u as s,s as t,e as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,n as t}from"./embedShared-R2ohosIo.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:`mlv-dailymotion`,connect:async({techId:t,emitter:i,state:s,isDisposed:c,consumeQueuedPlay:l})=>{let u=r(a.src);if(!u){s.errorState={code:4,message:`Could not parse video ID from source URL`},i.trigger(`error`);return}let d=!1;try{let r=await n(`https://geo.dailymotion.com/libs/player.js`,`dailymotion-sdk`).then(()=>window.dailymotion);if(!r||c())return;let f=await r.createPlayer(t,{video:u,params:{autoplay:!!a.autoplay,mute:!!a.muted}});if(c()){f.destroy?.();return}o=f,a.volume!==void 0&&f.setVolume(a.volume);let p=r.events;l(()=>o?.play()),f.on(p.VIDEO_PLAY,()=>{s.paused=!1,i.trigger(`play`),i.trigger(`playing`),!a.autoplay&&!d&&(d=!0,f.pause())}),f.on(p.VIDEO_PLAYING,()=>{s.paused=!1,i.trigger(`play`),i.trigger(`playing`)}),f.on(p.VIDEO_PAUSE,()=>{s.paused=!0,i.trigger(`pause`)}),p.VIDEO_BUFFERING&&f.on(p.VIDEO_BUFFERING,()=>i.trigger(`waiting`)),f.on(p.VIDEO_END,()=>{s.paused=!0,i.trigger(`ended`)}),f.on(p.VIDEO_TIMECHANGE,e=>{s.currentTime=e.videoTime??s.currentTime,s.duration=e.videoDuration??s.duration,i.trigger(`timeupdate`)}),f.on(p.VIDEO_DURATIONCHANGE,e=>{s.duration=e.videoDuration??s.duration,i.trigger(`durationchange`)}),f.on(p.VIDEO_SEEKEND,e=>{s.currentTime=e.videoTime??s.currentTime,i.trigger(`seeked`)}),f.on(p.PLAYER_VOLUMECHANGE,e=>{s.volume=e.playerVolume??s.volume,s.muted=e.playerIsMuted??s.muted,i.trigger(`volumechange`)}),f.on(p.PLAYER_ERROR,t=>{e(s,i,t?.error?.message,`This video could not be played.`)}),p.AD_START&&f.on(p.AD_START,()=>{s.paused=!1,i.trigger(`play`),i.trigger(`adstart`)}),p.AD_END&&f.on(p.AD_END,()=>i.trigger(`adend`))}catch(e){s.errorState={code:4,message:e instanceof Error?e.message:`This video could not be played.`},i.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{i as e,l as t,r as n}from"./constants-Buc1xZvW.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}}function s(e){return e.closest(`.${t}`)}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}),u.set(e,n)}const u=new WeakMap;function d(e,t,n){e.parentElement?.classList.add(t);let r=`${t}-${++c}`,i=document.createElement(`div`);i.id=r,i.className=`mlv-tech`,i.style.cssText=`width:100%;height:100%;top:0;left:0;position:absolute`;let a=document.createElement(`div`);return a.style.cssText=`width:100%;height:100%;position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity 0.2s`,a.appendChild(i),e.parentElement?.insertBefore(a,e),n||l(a),{techId:r,wrapper:a}}function f(e,t){e.style.display=`none`,t.style.opacity=`1`,t.style.pointerEvents=``}function p(e,t,n){u.get(t)?.disconnect(),u.delete(t),t.remove(),e.parentElement?.classList.remove(n),e.style.display=``}function m(e,t){if(r()&&t()!==!1)return;let n=s(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(t){t.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,a=!1;function o(){i||a||(a=!0,t.trigger(e))}function s(n){i||(i=!0,t.trigger(e),r.remove(),n?.())}return{overlay:r,reveal:o,finish:s}}function _(e,t,n,r){e.errorState={code:4,message:n||r},t.trigger(`error`)}function v(e,t,n){let i=o(),{techId:s,wrapper:c}=d(e,n.cssClass,t.nativeUi),{schedule:l,clearAll:u}=h(),g={currentTime:0,duration:0,volume:t.volume??1,muted:!1,paused:!0,playQueued:!1,errorState:null},_=!1,v={techId:s,wrapper:c,emitter:i,state:g,schedule:l,isDisposed:()=>_,consumeQueuedPlay(e){g.playQueued&&(g.playQueued=!1,e())}};n.connect(v);function y(){g.errorState=null,n.destroyPlayer(),n.connect(v)}function b(){m(e,()=>{if(!n.sdkFullscreenEnter)return!1;n.sdkFullscreenEnter()})}function x(){if(r()&&n.sdkFullscreenExit){n.sdkFullscreenExit();return}a()}return{el:c,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,reveal:e=>f(e,c),load:e=>{t.src=e,y()},retry:y,supportsPlaybackRate:()=>!1,enterFullscreen:b,exitFullscreen:x,on:i.on,off:i.off,dispose:()=>{_=!0,u(),n.destroyPlayer(),p(e,c,n.cssClass),i.dispose()}}}export{_ as a,p as c,m as i,s as l,v as n,f as o,h as r,g as s,d as t,o as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,o as t}from"./constants-Buc1xZvW.mjs";import{n,t as r}from"./sourceHelpers-BNIZ7kmT.mjs";function i(e){return e.match(/cdn\.jwplayer\.com\/videos\/([^-]+)/)?.[1]??e.match(/cdn\.jwplayer\.com\/manifests\/([^.]+)/)?.[1]??e.match(/^jwplayer:\/\/([^/]+)$/)?.[1]??null}function a(e){let t=e?.advertising?.schedule;return Array.isArray(t)&&t.length?t[0].tag??null:e?.advertising?.tag??null}const o=r(async e=>{let t=await fetch(`https://cdn.jwplayer.com/v2/media/${e}`);if(!t.ok)throw Error(`JW Platform API error: ${t.status}`);let r=(await t.json()).playlist?.[0];if(!r)throw Error(`JW Platform: empty playlist`);let i=n((r.sources??[]).map(e=>({src:e.file,type:e.type})));if(!i.length)throw Error(`JW Platform: no playable sources found`);return{src:i[0].src,type:i[0].type,poster:r.image??null,adTagUrl:a(r)}});async function s(n){let r=i(n);if(!r)throw Error(`JW Platform: unrecognised source URL: ${n}`);let a=await o(r);if(n.startsWith(`jwplayer://`))return a;let s=/\.mp4(\?|#|$)/.test(n)?t:e;return{...a,src:n,type:s}}export{s as resolveSource};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,o as t}from"./constants-Buc1xZvW.mjs";const n=[e,t];function r(e,t=(...e)=>String(e[0])){let n={};return async(...r)=>{let i=t(...r);if(n[i])return n[i];let a=await e(...r);return n[i]=a,a}}function i(e){return e.filter(e=>e.src&&n.includes(e.type)).sort((e,t)=>n.indexOf(e.type)-n.indexOf(t.type))}export{i as n,r as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,n as t}from"./embedShared-R2ohosIo.mjs";import{t as n}from"./loadScript-CxzeXqTe.mjs";function r(e){return e.match(/(?:vimeo\.com\/(?:video\/|channels\/[^/]+\/|groups\/[^/]+\/videos\/)?|player\.vimeo\.com\/video\/)(\d+)/)?.[1]??null}function i(i,a){let o=null;return t(i,a,{cssClass:`mlv-vimeo`,connect:async({techId:t,emitter:i,state:s,isDisposed:c,consumeQueuedPlay:l})=>{let u=r(a.src);if(!u)return;try{await n(`https://player.vimeo.com/api/player.js`,`vimeo`)}catch(e){if(c())return;s.errorState={code:4,message:e instanceof Error?e.message:`The Vimeo player failed to load.`},i.trigger(`error`);return}if(c())return;if(!window.Vimeo){s.errorState={code:4,message:`The Vimeo player failed to load.`},i.trigger(`error`);return}let d={id:Number(u),byline:!1,portrait:!1,title:!1,transparent:!0,controls:!!a.nativeUi,autopause:!1,...a.autoplay!==void 0&&{autoplay:a.autoplay},...a.muted!==void 0&&{muted:a.muted}};o=new window.Vimeo.Player(t,d),a.autoplay&&(s.playQueued=!0),o.ready().then(()=>{a.muted&&o?.setMuted(!0).catch(()=>{}),a.volume!==void 0&&o?.setVolume(a.volume).catch(()=>{}),l(()=>void o?.play().catch(()=>{}))}).catch(t=>{e(s,i,t?.message,`This video is unavailable or cannot be embedded here.`)}),o.on(`play`,()=>{s.paused=!1,i.trigger(`play`),i.trigger(`playing`)}),o.on(`pause`,()=>{s.paused=!0,i.trigger(`pause`)}),o.on(`ended`,()=>{s.paused=!0,i.trigger(`ended`)});let f=!1;o.on(`timeupdate`,e=>{let{seconds:t,duration:n}=e;s.currentTime=t,s.duration=n,i.trigger(`timeupdate`),n&&!f&&(f=!0,i.trigger(`durationchange`))}),o.on(`loaded`,()=>{f=!1,i.trigger(`durationchange`)}),o.on(`seeked`,e=>{s.currentTime=e.seconds,i.trigger(`seeked`),i.trigger(`timeupdate`)}),o.on(`bufferstart`,()=>i.trigger(`waiting`)),o.on(`bufferend`,()=>i.trigger(`canplay`)),o.on(`volumechange`,e=>{s.volume=e.volume,i.trigger(`volumechange`)}),o.on(`error`,t=>{let n=t?.message;e(s,i,n,`This video is unavailable or cannot be embedded here.`)})},hasPlayer:()=>!!o,play:()=>o?.play(),pause:()=>void o?.pause().catch(()=>{}),seekToSdk:e=>void o?.setCurrentTime(e).catch(()=>{}),volumeToSdk:e=>void o?.setVolume(e).catch(()=>{}),muteToSdk:({emitter:e,schedule:t},n)=>{o?.setMuted(n).then(()=>t(()=>e.trigger(`volumechange`),50)).catch(()=>{})},sdkFullscreenEnter:()=>void o?.requestFullscreen().catch(()=>{}),destroyPlayer:()=>{let e=o;o=null,e?.destroy().catch(()=>{})}})}export{i as createVimeoAdapter};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e,i as t,o as n,r,s as i,t as a,u as o}from"./embedShared-R2ohosIo.mjs";import{t as s}from"./platform-Dg9JBh8M.mjs";import{t as c}from"./loadScript-CxzeXqTe.mjs";const l=`mlv-youtube`;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=c(`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(c,p){let h=o(),{techId:g,wrapper:_}=a(c,l,p.nativeUi),v=d(p.src),y=null,b=null,x=v.videoId,S=!1,C=!1,w=!1,T=null,E=!1,D=null,O=null,k=!1,A=!1,{schedule:j,clearAll:M}=r(),N=null,P={active:!1,wasPaused:!1,timeBefore:0,catchUpInterval:null};function F(){try{let e=y?.getPlayerResponse()?.adPlacements;return Array.isArray(e)&&e.length>0}catch{return!1}}function I(e){y?.loadVideoById({videoId:e})}function L(e){y?.cueVideoById({videoId:e})}function R(){return v.videoId?(P.wasPaused=!1,S?x===v.videoId?y?.playVideo():(I(v.videoId),x=v.videoId):(h.trigger(`waiting`),C=!0),Promise.resolve()):Promise.resolve()}function z(){P.catchUpInterval&&clearInterval(P.catchUpInterval),P.active=!1,P.wasPaused&&y?.pauseVideo(),h.trigger(`seeked`)}function B(){A=(y?.getAvailablePlaybackRates()??[]).length>1,S=!0,p.muted&&y?.mute(),p.volume!==void 0&&y?.setVolume(p.volume*100),C?R():w&&v.videoId&&(L(v.videoId),x=v.videoId)}function V(e){if(e===T||D!==null)return;T=e;let t=F();t!==E&&(E=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`),P.active&&z();break;case n.PlayerState.PAUSED:h.trigger(`canplay`),P.active||h.trigger(`pause`);break;case n.PlayerState.BUFFERING:h.trigger(`waiting`);break;case n.PlayerState.CUED:h.trigger(`canplay`)}N&&=(clearInterval(N),null),e===n.PlayerState.PLAYING&&(N=setInterval(()=>h.trigger(`timeupdate`),250))}}function H(){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};x=v.videoId,y=new window.YT.Player(g,{videoId:x??void 0,playerVars:e,events:{onReady:B,onStateChange:e=>V(e.data),onPlaybackRateChange:()=>h.trigger(`ratechange`),onVolumeChange:()=>h.trigger(`volumechange`),onError:e=>{D=e.data,h.trigger(`error`),j(()=>{D=null})}}})}function U(){if(f){H();return}m().then(()=>{k||H()},e=>{k||(O={code:4,message:e instanceof Error?e.message:`The YouTube player failed to load.`},h.trigger(`error`))})}U(),p.autoplay?S?R():C=!0:v.videoId&&(w=!0);function W(){if(v.videoId){if(O){O=null,p.autoplay||(w=!0),U();return}if(S){I(v.videoId),x=v.videoId;return}w=!0}}function G(){if(!y)return;b?.();let e=y.getCurrentTime(),{video_id:t}=y.getVideoData();y.pauseVideo();let{overlay:n,reveal:r,finish:a}=i(h),o=document.createElement(`div`);o.id=`yt-fs-${Math.random().toString(36).slice(2)}`,n.appendChild(o);let s=null,c=()=>{b=null,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()}b=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=>{r(),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),r()))}}})}function K(){t(c,()=>{if(!y)return!1;G()})}return{el:_,play:R,pause:()=>y?.pauseVideo(),paused:()=>{if(!y)return!0;let e=window.YT;return!e||!u(e,T)},currentTime:()=>S?y?.getCurrentTime()??0:0,setCurrentTime:e=>{if(!S||!y)return;let t=window.YT;t&&T===t.PlayerState.PAUSED&&(P.timeBefore=y.getCurrentTime()),P.active||(P.wasPaused=!t||!u(t,T)),y.seekTo(e,!0),h.trigger(`timeupdate`),P.active=!0,t&&T===t.PlayerState.PAUSED&&P.timeBefore!==e&&(P.catchUpInterval&&clearInterval(P.catchUpInterval),P.catchUpInterval=setInterval(()=>{T!==t.PlayerState.PAUSED||!P.active?P.catchUpInterval&&clearInterval(P.catchUpInterval):y&&y.getCurrentTime()!==P.timeBefore&&(h.trigger(`timeupdate`),z())},250))},duration:()=>S?y?.getDuration()??0:0,volume:()=>S&&y?y.getVolume()/100:1,setVolume:e=>{S&&y?.setVolume(e*100)},muted:()=>S?y?.isMuted()??!1:!1,setMuted:e=>{S&&y&&(e?y.mute():y.unMute(),j(()=>h.trigger(`volumechange`),50))},playbackRate:()=>S?y?.getPlaybackRate()??1:1,setPlaybackRate:e=>{S&&y?.setPlaybackRate(e)},bufferedEnd:()=>!S||!y?.getVideoLoadedFraction?0:y.getVideoLoadedFraction()*y.getDuration(),error:()=>O??(D===null?null:{code:D,message:`This video could not be played.`}),reveal:e=>n(e,_),load:e=>{let t=d(e);v.videoId=t.videoId,v.listId=t.listId,v.videoId&&W()},retry:W,supportsPlaybackRate:()=>A,enterFullscreen:K,exitFullscreen:s,on:h.on,off:h.off,dispose:()=>{if(k=!0,b?.(),M(),N&&clearInterval(N),P.catchUpInterval&&clearInterval(P.catchUpInterval),y)try{y.stopVideo(),y.destroy()}catch{}y=null,e(c,_,l),h.dispose()}}}export{h as createYoutubeAdapter};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./platform-Dg9JBh8M.mjs";import{t}from"./loadScript-CxzeXqTe.mjs";const n=`mlv-ad-playing`,r=`mlv-ad-paused`;function i(){return window.google?.ima?Promise.resolve():t(`https://imasdk.googleapis.com/js/sdkloader/ima3.js`,`ima`)}function a(t,a,o,s){let c=document.createElement(`div`);c.className=`ima-ad-container`,t.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(a);function C(){d?.contentComplete()}function w(e){g=e,t.classList.toggle(n,e),e||(_=!1,t.classList.remove(r))}function T(){if(p||!m||!h||!u||!d||!l)return;let e=window.google?.ima;if(!e)return;p=!0,u.initialize();let t=new e.AdsRequest;t.adTagUrl=l,d.requestAds(t)}function E(e){l=e,T()}i().then(()=>{if(v)return;let n=window.google?.ima;n&&(u=new n.AdDisplayContainer(c,a),d=new n.AdsLoader(u),m=!0,d.addEventListener(n.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,i=>{if(v)return;let o=new n.AdsRenderingSettings;o.restoreCustomPlaybackStateOnAdBreakComplete=!0,f=i.getAdsManager(a,o),a.addEventListener(`ended`,C),x=a.currentSrc,f.addEventListener(n.AdEvent.Type.CONTENT_PAUSE_REQUESTED,()=>{a.removeEventListener(`ended`,C),a.ended&&e()&&(b=!0),a.pause(),w(!0),s.onAdStart();let t=f?.getVolume()??1;t>0&&(y=t),s.onAdMuteChange(t===0)}),f.addEventListener(n.AdEvent.Type.CONTENT_RESUME_REQUESTED,()=>{if(a.addEventListener(`ended`,C),w(!1),s.onAdEnd(),b){b=!1,x&&a.currentSrc!==x&&(a.src=x);let e=a.duration;e&&isFinite(e)&&(a.currentTime=e-.5);return}a.ended||a.play().catch(()=>{})}),f.addEventListener(n.AdEvent.Type.PAUSED,()=>{_=!0,t.classList.add(r),s.onAdPauseChange(!0)}),f.addEventListener(n.AdEvent.Type.RESUMED,()=>{_=!1,t.classList.remove(r),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()),a.play().catch(()=>{})});try{f.init(a.clientWidth,a.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=>{f||(p=!1),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(),a.removeEventListener(`ended`,C),f?.destroy(),d?.destroy(),c.remove(),t.classList.remove(n,r)}}}export{a as attachAds};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,t}from"./sourceHelpers-BNIZ7kmT.mjs";function n(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 r(e){for(let t of e?.plugins??[]){let e=t.options?.serverUrl??t.options?.imaOptions?.serverUrl;if(e)return e}return null}const i=t(async(e,t,n,i)=>{let a=await fetch(`https://players.brightcove.net/${e}/${t}_${n}/config.json`);if(!a.ok)throw Error(`Brightcove: could not load player config (${a.status})`);let o=await a.json(),s=i??o?.video_cloud?.policy_key;if(!s)throw Error(`Brightcove: policy_key not found in player config`);return{policyKey:s,adTagUrl:r(o)}},(e,t,n)=>`${e}/${t}_${n}`);async function a(t,n,r){let i=await fetch(`https://edge.api.brightcove.com/playback/v1/accounts/${t}/videos/${n}`,{headers:{Accept:`application/json;pk=${r}`}});if(!i.ok)throw Error(`Brightcove Playback API error: ${i.status}`);let a=await i.json(),o=e(a.sources||[]);if(!o.length)throw Error(`Brightcove: no playable sources found`);return{sources:o.map(e=>({src:e.src,type:e.type})),poster:a.poster??a.thumbnail??null}}async function o(e,t){let r=n(e);if(!r)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:o,playerId:s,embed:c,videoId:l}=r,{policyKey:u,adTagUrl:d}=await i(o,s,c,t),{sources:f,poster:p}=await a(o,l,u);return{...f[0],poster:p,adTagUrl:d}}export{o as resolveSource};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=`video-select`,t=`video-toggle`,n=`fullscreen-pending`,r=`fullscreen-pending-done`,i=`player__shell`,a=`16:9`,o=`application/x-mpegURL`,s=`application/dash+xml`,c=`video/mp4`,l=[.5,.75,1,1.25,1.5,2],u=.1;export{o as a,l as c,t as d,r as i,i as l,a as n,c as o,n as r,u as s,s as t,e as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,n as t}from"./embedShared-R2ohosIo.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:`mlv-dailymotion`,connect:async({techId:t,emitter:i,state:s,isDisposed:c,consumeQueuedPlay:l})=>{let u=r(a.src);if(!u){s.errorState={code:4,message:`Could not parse video ID from source URL`},i.trigger(`error`);return}let d=!1;try{let r=await n(`https://geo.dailymotion.com/libs/player.js`,`dailymotion-sdk`).then(()=>window.dailymotion);if(!r||c())return;let f=await r.createPlayer(t,{video:u,params:{autoplay:!!a.autoplay,mute:!!a.muted}});if(c()){f.destroy?.();return}o=f,a.volume!==void 0&&f.setVolume(a.volume);let p=r.events;l(()=>o?.play()),f.on(p.VIDEO_PLAY,()=>{s.paused=!1,i.trigger(`play`),i.trigger(`playing`),!a.autoplay&&!d&&(d=!0,f.pause())}),f.on(p.VIDEO_PLAYING,()=>{s.paused=!1,i.trigger(`play`),i.trigger(`playing`)}),f.on(p.VIDEO_PAUSE,()=>{s.paused=!0,i.trigger(`pause`)}),p.VIDEO_BUFFERING&&f.on(p.VIDEO_BUFFERING,()=>i.trigger(`waiting`)),f.on(p.VIDEO_END,()=>{s.paused=!0,i.trigger(`ended`)}),f.on(p.VIDEO_TIMECHANGE,e=>{s.currentTime=e.videoTime??s.currentTime,s.duration=e.videoDuration??s.duration,i.trigger(`timeupdate`)}),f.on(p.VIDEO_DURATIONCHANGE,e=>{s.duration=e.videoDuration??s.duration,i.trigger(`durationchange`)}),f.on(p.VIDEO_SEEKEND,e=>{s.currentTime=e.videoTime??s.currentTime,i.trigger(`seeked`)}),f.on(p.PLAYER_VOLUMECHANGE,e=>{s.volume=e.playerVolume??s.volume,s.muted=e.playerIsMuted??s.muted,i.trigger(`volumechange`)}),f.on(p.PLAYER_ERROR,t=>{e(s,i,t?.error?.message,`This video could not be played.`)}),p.AD_START&&f.on(p.AD_START,()=>{s.paused=!1,i.trigger(`play`),i.trigger(`adstart`)}),p.AD_END&&f.on(p.AD_END,()=>i.trigger(`adend`))}catch(e){s.errorState={code:4,message:e instanceof Error?e.message:`This video could not be played.`},i.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{i as e,l as t,r as n}from"./constants-Buc1xZvW.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}}function s(e){return e.closest(`.${t}`)}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}),u.set(e,n)}const u=new WeakMap;function d(e,t,n){e.parentElement?.classList.add(t);let r=`${t}-${++c}`,i=document.createElement(`div`);i.id=r,i.className=`mlv-tech`,i.style.cssText=`width:100%;height:100%;top:0;left:0;position:absolute`;let a=document.createElement(`div`);return a.style.cssText=`width:100%;height:100%;position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity 0.2s`,a.appendChild(i),e.parentElement?.insertBefore(a,e),n||l(a),{techId:r,wrapper:a}}function f(e,t){e.style.display=`none`,t.style.opacity=`1`,t.style.pointerEvents=``}function p(e,t,n){u.get(t)?.disconnect(),u.delete(t),t.remove(),e.parentElement?.classList.remove(n),e.style.display=``}function m(e,t){if(r()&&t()!==!1)return;let n=s(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(t){t.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,a=!1;function o(){i||a||(a=!0,t.trigger(e))}function s(n){i||(i=!0,t.trigger(e),r.remove(),n?.())}return{overlay:r,reveal:o,finish:s}}function _(e,t,n,r){e.errorState={code:4,message:n||r},t.trigger(`error`)}function v(e,t,n){let i=o(),{techId:s,wrapper:c}=d(e,n.cssClass,t.nativeUi),{schedule:l,clearAll:u}=h(),g={currentTime:0,duration:0,volume:t.volume??1,muted:!1,paused:!0,playQueued:!1,errorState:null},_=!1,v={techId:s,wrapper:c,emitter:i,state:g,schedule:l,isDisposed:()=>_,consumeQueuedPlay(e){g.playQueued&&(g.playQueued=!1,e())}};n.connect(v);function y(){g.errorState=null,n.destroyPlayer(),n.connect(v)}function b(){m(e,()=>{if(!n.sdkFullscreenEnter)return!1;n.sdkFullscreenEnter()})}function x(){if(r()&&n.sdkFullscreenExit){n.sdkFullscreenExit();return}a()}return{el:c,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,reveal:e=>f(e,c),load:e=>{t.src=e,y()},retry:y,supportsPlaybackRate:()=>!1,enterFullscreen:b,exitFullscreen:x,on:i.on,off:i.off,dispose:()=>{_=!0,u(),n.destroyPlayer(),p(e,c,n.cssClass),i.dispose()}}}export{_ as a,p as c,m as i,s as l,v as n,f as o,h as r,g as s,d as t,o as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,o as t}from"./constants-Buc1xZvW.mjs";import{n,t as r}from"./sourceHelpers-BNIZ7kmT.mjs";function i(e){return e.match(/cdn\.jwplayer\.com\/videos\/([^-]+)/)?.[1]??e.match(/cdn\.jwplayer\.com\/manifests\/([^.]+)/)?.[1]??e.match(/^jwplayer:\/\/([^/]+)$/)?.[1]??null}function a(e){let t=e?.advertising?.schedule;return Array.isArray(t)&&t.length?t[0].tag??null:e?.advertising?.tag??null}const o=r(async e=>{let t=await fetch(`https://cdn.jwplayer.com/v2/media/${e}`);if(!t.ok)throw Error(`JW Platform API error: ${t.status}`);let r=(await t.json()).playlist?.[0];if(!r)throw Error(`JW Platform: empty playlist`);let i=n((r.sources??[]).map(e=>({src:e.file,type:e.type})));if(!i.length)throw Error(`JW Platform: no playable sources found`);return{src:i[0].src,type:i[0].type,poster:r.image??null,adTagUrl:a(r)}});async function s(n){let r=i(n);if(!r)throw Error(`JW Platform: unrecognised source URL: ${n}`);let a=await o(r);if(n.startsWith(`jwplayer://`))return a;let s=/\.mp4(\?|#|$)/.test(n)?t:e;return{...a,src:n,type:s}}export{s as resolveSource};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,o as t}from"./constants-Buc1xZvW.mjs";const n=[e,t];function r(e,t=(...e)=>String(e[0])){let n={};return async(...r)=>{let i=t(...r);if(n[i])return n[i];let a=await e(...r);return n[i]=a,a}}function i(e){return e.filter(e=>e.src&&n.includes(e.type)).sort((e,t)=>n.indexOf(e.type)-n.indexOf(t.type))}export{i as n,r as 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{a as e,n as t}from"./embedShared-R2ohosIo.mjs";import{t as n}from"./loadScript-CxzeXqTe.mjs";function r(e){return e.match(/(?:vimeo\.com\/(?:video\/|channels\/[^/]+\/|groups\/[^/]+\/videos\/)?|player\.vimeo\.com\/video\/)(\d+)/)?.[1]??null}function i(i,a){let o=null;return t(i,a,{cssClass:`mlv-vimeo`,connect:async({techId:t,emitter:i,state:s,isDisposed:c,consumeQueuedPlay:l})=>{let u=r(a.src);if(!u)return;try{await n(`https://player.vimeo.com/api/player.js`,`vimeo`)}catch(e){if(c())return;s.errorState={code:4,message:e instanceof Error?e.message:`The Vimeo player failed to load.`},i.trigger(`error`);return}if(c())return;if(!window.Vimeo){s.errorState={code:4,message:`The Vimeo player failed to load.`},i.trigger(`error`);return}let d={id:Number(u),byline:!1,portrait:!1,title:!1,transparent:!0,controls:!!a.nativeUi,autopause:!1,...a.autoplay!==void 0&&{autoplay:a.autoplay},...a.muted!==void 0&&{muted:a.muted}};o=new window.Vimeo.Player(t,d),a.autoplay&&(s.playQueued=!0),o.ready().then(()=>{a.muted&&o?.setMuted(!0).catch(()=>{}),a.volume!==void 0&&o?.setVolume(a.volume).catch(()=>{}),l(()=>void o?.play().catch(()=>{}))}).catch(t=>{e(s,i,t?.message,`This video is unavailable or cannot be embedded here.`)}),o.on(`play`,()=>{s.paused=!1,i.trigger(`play`),i.trigger(`playing`)}),o.on(`pause`,()=>{s.paused=!0,i.trigger(`pause`)}),o.on(`ended`,()=>{s.paused=!0,i.trigger(`ended`)});let f=!1;o.on(`timeupdate`,e=>{let{seconds:t,duration:n}=e;s.currentTime=t,s.duration=n,i.trigger(`timeupdate`),n&&!f&&(f=!0,i.trigger(`durationchange`))}),o.on(`loaded`,()=>{f=!1,i.trigger(`durationchange`)}),o.on(`seeked`,e=>{s.currentTime=e.seconds,i.trigger(`seeked`),i.trigger(`timeupdate`)}),o.on(`bufferstart`,()=>i.trigger(`waiting`)),o.on(`bufferend`,()=>i.trigger(`canplay`)),o.on(`volumechange`,e=>{s.volume=e.volume,i.trigger(`volumechange`)}),o.on(`error`,t=>{let n=t?.message;e(s,i,n,`This video is unavailable or cannot be embedded here.`)})},hasPlayer:()=>!!o,play:()=>o?.play(),pause:()=>void o?.pause().catch(()=>{}),seekToSdk:e=>void o?.setCurrentTime(e).catch(()=>{}),volumeToSdk:e=>void o?.setVolume(e).catch(()=>{}),muteToSdk:({emitter:e,schedule:t},n)=>{o?.setMuted(n).then(()=>t(()=>e.trigger(`volumechange`),50)).catch(()=>{})},sdkFullscreenEnter:()=>void o?.requestFullscreen().catch(()=>{}),destroyPlayer:()=>{let e=o;o=null,e?.destroy().catch(()=>{})}})}export{i as createVimeoAdapter};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e,i as t,o as n,r,s as i,t as a,u as o}from"./embedShared-R2ohosIo.mjs";import{t as s}from"./platform-Dg9JBh8M.mjs";import{t as c}from"./loadScript-CxzeXqTe.mjs";const l=`mlv-youtube`;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=c(`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(c,p){let h=o(),{techId:g,wrapper:_}=a(c,l,p.nativeUi),v=d(p.src),y=null,b=null,x=v.videoId,S=!1,C=!1,w=!1,T=null,E=!1,D=null,O=null,k=!1,A=!1,{schedule:j,clearAll:M}=r(),N=null,P={active:!1,wasPaused:!1,timeBefore:0,catchUpInterval:null};function F(){try{let e=y?.getPlayerResponse()?.adPlacements;return Array.isArray(e)&&e.length>0}catch{return!1}}function I(e){y?.loadVideoById({videoId:e})}function L(e){y?.cueVideoById({videoId:e})}function R(){return v.videoId?(P.wasPaused=!1,S?x===v.videoId?y?.playVideo():(I(v.videoId),x=v.videoId):(h.trigger(`waiting`),C=!0),Promise.resolve()):Promise.resolve()}function z(){P.catchUpInterval&&clearInterval(P.catchUpInterval),P.active=!1,P.wasPaused&&y?.pauseVideo(),h.trigger(`seeked`)}function B(){A=(y?.getAvailablePlaybackRates()??[]).length>1,S=!0,p.muted&&y?.mute(),p.volume!==void 0&&y?.setVolume(p.volume*100),C?R():w&&v.videoId&&(L(v.videoId),x=v.videoId)}function V(e){if(e===T||D!==null)return;T=e;let t=F();t!==E&&(E=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`),P.active&&z();break;case n.PlayerState.PAUSED:h.trigger(`canplay`),P.active||h.trigger(`pause`);break;case n.PlayerState.BUFFERING:h.trigger(`waiting`);break;case n.PlayerState.CUED:h.trigger(`canplay`)}N&&=(clearInterval(N),null),e===n.PlayerState.PLAYING&&(N=setInterval(()=>h.trigger(`timeupdate`),250))}}function H(){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};x=v.videoId,y=new window.YT.Player(g,{videoId:x??void 0,playerVars:e,events:{onReady:B,onStateChange:e=>V(e.data),onPlaybackRateChange:()=>h.trigger(`ratechange`),onVolumeChange:()=>h.trigger(`volumechange`),onError:e=>{D=e.data,h.trigger(`error`),j(()=>{D=null})}}})}function U(){if(f){H();return}m().then(()=>{k||H()},e=>{k||(O={code:4,message:e instanceof Error?e.message:`The YouTube player failed to load.`},h.trigger(`error`))})}U(),p.autoplay?S?R():C=!0:v.videoId&&(w=!0);function W(){if(v.videoId){if(O){O=null,p.autoplay||(w=!0),U();return}if(S){I(v.videoId),x=v.videoId;return}w=!0}}function G(){if(!y)return;b?.();let e=y.getCurrentTime(),{video_id:t}=y.getVideoData();y.pauseVideo();let{overlay:n,reveal:r,finish:a}=i(h),o=document.createElement(`div`);o.id=`yt-fs-${Math.random().toString(36).slice(2)}`,n.appendChild(o);let s=null,c=()=>{b=null,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()}b=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=>{r(),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),r()))}}})}function K(){t(c,()=>{if(!y)return!1;G()})}return{el:_,play:R,pause:()=>y?.pauseVideo(),paused:()=>{if(!y)return!0;let e=window.YT;return!e||!u(e,T)},currentTime:()=>S?y?.getCurrentTime()??0:0,setCurrentTime:e=>{if(!S||!y)return;let t=window.YT;t&&T===t.PlayerState.PAUSED&&(P.timeBefore=y.getCurrentTime()),P.active||(P.wasPaused=!t||!u(t,T)),y.seekTo(e,!0),h.trigger(`timeupdate`),P.active=!0,t&&T===t.PlayerState.PAUSED&&P.timeBefore!==e&&(P.catchUpInterval&&clearInterval(P.catchUpInterval),P.catchUpInterval=setInterval(()=>{T!==t.PlayerState.PAUSED||!P.active?P.catchUpInterval&&clearInterval(P.catchUpInterval):y&&y.getCurrentTime()!==P.timeBefore&&(h.trigger(`timeupdate`),z())},250))},duration:()=>S?y?.getDuration()??0:0,volume:()=>S&&y?y.getVolume()/100:1,setVolume:e=>{S&&y?.setVolume(e*100)},muted:()=>S?y?.isMuted()??!1:!1,setMuted:e=>{S&&y&&(e?y.mute():y.unMute(),j(()=>h.trigger(`volumechange`),50))},playbackRate:()=>S?y?.getPlaybackRate()??1:1,setPlaybackRate:e=>{S&&y?.setPlaybackRate(e)},bufferedEnd:()=>!S||!y?.getVideoLoadedFraction?0:y.getVideoLoadedFraction()*y.getDuration(),error:()=>O??(D===null?null:{code:D,message:`This video could not be played.`}),reveal:e=>n(e,_),load:e=>{let t=d(e);v.videoId=t.videoId,v.listId=t.listId,v.videoId&&W()},retry:W,supportsPlaybackRate:()=>A,enterFullscreen:K,exitFullscreen:s,on:h.on,off:h.off,dispose:()=>{if(k=!0,b?.(),M(),N&&clearInterval(N),P.catchUpInterval&&clearInterval(P.catchUpInterval),y)try{y.stopVideo(),y.destroy()}catch{}y=null,e(c,_,l),h.dispose()}}}export{h as createYoutubeAdapter};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.mlv-scrubber-wrap[data-v-
|
|
1
|
+
.mlv-scrubber-wrap[data-v-00e26db0]{width:100%;position:relative}:where(.mlv-scrubber[data-v-00e26db0]){cursor:pointer;accent-color:currentColor;width:100%}:where(.mlv-scrubber[data-v-00e26db0]):focus-visible{outline-offset:0!important;outline:2px solid #fff!important}.mlv-scrubber__preview[data-v-00e26db0]{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-control-btn){all:unset;cursor:pointer;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-control-btn):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-control-btn) svg{width:1em;height:1em}:where(.mlv-control-btn--toggle){opacity:.6}:where(.mlv-control-btn--toggle.mlv-control-btn--active){opacity:1}.mlv-icon[data-v-466b80a9]{display:contents}@keyframes spin-7c461437{to{transform:rotate(360deg)}}.spinner[data-v-7c461437]{border-style:solid;border-color:#fffc #ffffff26 #ffffff26;border-radius:50%;animation:.75s linear infinite spin-7c461437}:where(.mlv-buffering[data-v-c446a450]){justify-content:center;align-items:center;display:inline-flex}.mlv-volume-wrap[data-v-512c68f4]{align-items:center;gap:.75rem;width:100%;display:flex}:where(.mlv-volume-slider[data-v-512c68f4]){cursor:pointer;accent-color:currentColor;flex:1}:where(.mlv-volume-slider[data-v-512c68f4]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-volume-pct[data-v-512c68f4]){font-variant-numeric:tabular-nums;text-align:right;min-width:2rem}:where(.mlv-time-display[data-v-d2dbce42]){font-variant-numeric:tabular-nums;align-items:center;gap:.35rem;display:inline-flex}:where(.mlv-time-display__dot[data-v-d2dbce42]){background:currentColor;border-radius:50%;width:6px;height:6px}:where(.mlv-transcript[data-v-3cf9e708]){margin:0;padding:0;list-style:none;overflow-y:auto}:where(.mlv-transcript__cue[data-v-3cf9e708]){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-3cf9e708]):focus-visible{outline-offset:-2px;outline:2px solid}:where(.mlv-transcript__cue[data-v-3cf9e708]:hover){background:#7f7f7f26}:where(.mlv-transcript__cue--active[data-v-3cf9e708]){background:#7f7f7f40;font-weight:600}:where(.mlv-transcript__speech-toggle[data-v-3cf9e708]){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-3cf9e708]):focus-visible{outline-offset:2px;outline:2px solid}:where(.mlv-transcript__speech-toggle[data-v-3cf9e708]:hover){background:var(--mlv-btn-bg,#7f7f7f33);transform:scale(1.08)}:where(.mlv-transcript__speech-toggle[aria-pressed=true][data-v-3cf9e708]){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-3cf9e708] svg){width:1.1em;height:1.1em}:where(.mlv-transcript__time[data-v-3cf9e708]){font-variant-numeric:tabular-nums;opacity:.7;flex-shrink:0}
|
|
@@ -12,7 +12,7 @@ interface QualityLevelInfo {
|
|
|
12
12
|
label: string;
|
|
13
13
|
}
|
|
14
14
|
//#endregion
|
|
15
|
-
//#region src/
|
|
15
|
+
//#region src/ui/player/playerState.d.ts
|
|
16
16
|
declare function createPlayerState(props: PlayerProps): {
|
|
17
17
|
isPlaying: import("vue").Ref<boolean, boolean>;
|
|
18
18
|
hasEnded: import("vue").Ref<boolean, boolean>;
|
|
@@ -22,12 +22,12 @@ declare function createPlayerState(props: PlayerProps): {
|
|
|
22
22
|
hasStarted: import("vue").Ref<boolean, boolean>;
|
|
23
23
|
isError: import("vue").Ref<boolean, boolean>;
|
|
24
24
|
errorMessage: import("vue").Ref<string, string>;
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
currentTime: import("vue").Ref<number, number>;
|
|
26
|
+
duration: import("vue").Ref<number, number>;
|
|
27
27
|
buffered: import("vue").Ref<number, number>;
|
|
28
28
|
progress: import("vue").ComputedRef<number>;
|
|
29
29
|
bufferedDisplay: import("vue").ComputedRef<number>;
|
|
30
|
-
|
|
30
|
+
currentVolume: import("vue").Ref<number, number>;
|
|
31
31
|
isMuted: import("vue").Ref<boolean, boolean>;
|
|
32
32
|
isAudible: import("vue").ComputedRef<boolean>;
|
|
33
33
|
isLooping: import("vue").Ref<boolean, boolean>;
|
|
@@ -60,7 +60,7 @@ declare function createPlayerState(props: PlayerProps): {
|
|
|
60
60
|
bitrate: number;
|
|
61
61
|
label: string;
|
|
62
62
|
}[]>;
|
|
63
|
-
|
|
63
|
+
currentQualityHeight: import("vue").Ref<number | null, number | null>;
|
|
64
64
|
isAutoQuality: import("vue").Ref<boolean, boolean>;
|
|
65
65
|
supportsPip: import("vue").Ref<boolean, boolean>;
|
|
66
66
|
isPipActive: import("vue").Ref<boolean, boolean>;
|
|
@@ -68,25 +68,27 @@ declare function createPlayerState(props: PlayerProps): {
|
|
|
68
68
|
};
|
|
69
69
|
type PlayerState = ReturnType<typeof createPlayerState>;
|
|
70
70
|
//#endregion
|
|
71
|
-
//#region src/
|
|
72
|
-
interface
|
|
71
|
+
//#region src/ui/player/createPlayerControls.d.ts
|
|
72
|
+
interface PlayerControls {
|
|
73
73
|
play: () => Promise<void>;
|
|
74
74
|
pause: () => void;
|
|
75
75
|
replay: () => Promise<void>;
|
|
76
76
|
togglePlay: () => void;
|
|
77
|
-
seek: (
|
|
78
|
-
seekTo: (seconds: number) => void;
|
|
77
|
+
seek: (seconds: number) => void;
|
|
79
78
|
toggleMute: () => void;
|
|
80
79
|
setVolume: (vol: number) => void;
|
|
81
80
|
toggleLoop: () => void;
|
|
82
81
|
setPlaybackRate: (rate: number) => void;
|
|
83
82
|
setCaptionTrack: (index: number | null) => void;
|
|
84
|
-
setQuality: (
|
|
83
|
+
setQuality: (height: number | null) => void;
|
|
84
|
+
applyQuality: (height: number | null, options?: {
|
|
85
|
+
remember?: boolean;
|
|
86
|
+
}) => void;
|
|
85
87
|
togglePip: () => void;
|
|
86
88
|
}
|
|
87
89
|
//#endregion
|
|
88
|
-
//#region src/
|
|
89
|
-
type UsePlayerReturn = PlayerState &
|
|
90
|
+
//#region src/ui/player/usePlayer.d.ts
|
|
91
|
+
type UsePlayerReturn = PlayerState & PlayerControls & {
|
|
90
92
|
fire: (type: StateChangeType, extras?: Partial<StateChangeEvent>) => void;
|
|
91
93
|
retry: () => void;
|
|
92
94
|
isBuffering: Ref<boolean>;
|
|
@@ -96,9 +98,9 @@ type UsePlayerReturn = PlayerState & UsePlayerControlsReturn & {
|
|
|
96
98
|
toggleFullscreen: () => void;
|
|
97
99
|
};
|
|
98
100
|
//#endregion
|
|
99
|
-
//#region src/
|
|
100
|
-
declare const PLAYER_METHOD_KEYS: readonly ["retry", "play", "pause", "replay", "togglePlay", "seek", "
|
|
101
|
-
declare const PLAYER_STATE_KEYS: readonly ["isPlaying", "hasEnded", "isReady", "isLoaded", "isAdPlaying", "isAdPaused", "isAdMuted", "adRemainingTime", "isLive", "isBuffering", "
|
|
101
|
+
//#region src/ui/player/playerSurface.d.ts
|
|
102
|
+
declare const PLAYER_METHOD_KEYS: readonly ["retry", "play", "pause", "replay", "togglePlay", "seek", "toggleMute", "setVolume", "toggleFullscreen", "toggleLoop", "toggleAdMute", "setPlaybackRate", "setCaptionTrack", "setQuality", "togglePip"];
|
|
103
|
+
declare const PLAYER_STATE_KEYS: readonly ["isPlaying", "hasEnded", "isReady", "isLoaded", "isAdPlaying", "isAdPaused", "isAdMuted", "adRemainingTime", "isLive", "isBuffering", "currentTime", "duration", "currentVolume", "isMuted", "isAudible", "isLooping", "currentPlaybackRate", "hasStarted", "isError", "errorMessage", "progress", "bufferedDisplay", "isFullscreen", "supportsPlaybackRate", "supportsCaptions", "captionTracks", "activeCaptionIndex", "supportsQuality", "qualityLevels", "currentQualityHeight", "isAutoQuality", "supportsPip", "isPipActive", "isNativeUi"];
|
|
102
104
|
type PlayerMethodKey = (typeof PLAYER_METHOD_KEYS)[number];
|
|
103
105
|
type PlayerStateKey = (typeof PLAYER_STATE_KEYS)[number];
|
|
104
106
|
//#endregion
|
|
@@ -123,7 +125,7 @@ interface StateChangeEvent {
|
|
|
123
125
|
isMuted?: boolean;
|
|
124
126
|
playbackRate?: number;
|
|
125
127
|
captionIndex?: number | null;
|
|
126
|
-
|
|
128
|
+
qualityHeight?: number | null;
|
|
127
129
|
isPipActive?: boolean;
|
|
128
130
|
isLooping?: boolean;
|
|
129
131
|
element?: HTMLElement | null;
|
|
@@ -160,10 +162,12 @@ interface PlayerProps {
|
|
|
160
162
|
adMacroParams?: Record<string, string>;
|
|
161
163
|
headerBidding?: HeaderBiddingConfig;
|
|
162
164
|
tracks?: CaptionTrackDef[];
|
|
165
|
+
captionLine?: number;
|
|
163
166
|
autoplay?: boolean;
|
|
164
167
|
muted?: boolean;
|
|
165
168
|
volume?: number;
|
|
166
169
|
playbackRate?: number;
|
|
170
|
+
quality?: number | null;
|
|
167
171
|
nativeUi?: boolean;
|
|
168
172
|
payload?: Record<string, unknown> | string;
|
|
169
173
|
action?: PlayerAction | null;
|
|
@@ -184,7 +188,7 @@ interface TranscriptCue {
|
|
|
184
188
|
}
|
|
185
189
|
type PlayerHandle = Pick<UnwrapNestedRefs<UsePlayerReturn>, PlayerMethodKey | PlayerStateKey>;
|
|
186
190
|
//#endregion
|
|
187
|
-
//#region src/
|
|
191
|
+
//#region src/ui/controls/useResolvedPlayer.d.ts
|
|
188
192
|
interface ResolvedPlayerProps {
|
|
189
193
|
player?: PlayerHandle | null;
|
|
190
194
|
for?: string;
|
|
@@ -205,6 +209,8 @@ declare const VolumeSliderElement: import("vue").VueElementConstructor<ResolvedP
|
|
|
205
209
|
declare const TimeDisplayElement: import("vue").VueElementConstructor<ResolvedPlayerProps>;
|
|
206
210
|
declare const TranscriptElement: import("vue").VueElementConstructor<ResolvedPlayerProps & {
|
|
207
211
|
cues?: TranscriptCue[] | string;
|
|
212
|
+
speechPitch?: number;
|
|
213
|
+
speechRate?: number;
|
|
208
214
|
}>;
|
|
209
215
|
//#endregion
|
|
210
216
|
export { BufferingElement, CaptionsButtonElement, FullscreenButtonElement, LoopButtonElement, MuteButtonElement, PipButtonElement, PlayButtonElement, PlaybackRateButtonElement, QualityButtonElement, ScrubberElement, TimeDisplayElement, TranscriptElement, VolumeSliderElement };
|
|
@@ -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,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};
|
|
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,inject as d,mergeProps as f,nextTick as p,normalizeClass as m,normalizeStyle as h,onBeforeUnmount as g,onMounted as _,openBlock as v,ref as y,renderList as b,renderSlot as x,shallowRef as S,toDisplayString as C,unref as w,watch as T}from"vue";function E(e){let n=y(!1),r=y(null),i=!1,a=null,o=!1,s=t(()=>{let t=e.value;return t?.duration?t.currentTime/t.duration*100:0}),c=t(()=>r.value??s.value),l=t(()=>r.value!==null),u=t(()=>{let t=e.value?.duration??0;return c.value/100*t});function d(){a&&clearTimeout(a),a=null}function f(){d(),r.value=null}function p(e){n.value||=(i=e.isPlaying,e.pause(),!0)}function m(e){return Number(e.target.value)}function h(t){let o=e.value;o&&!n.value&&p(o),n.value=!1,o&&(r.value=t,o.seek(t*(o.duration||0)/100),i&&o.play().catch(()=>{}),d(),a=setTimeout(f,3e3))}function _(t){let n=e.value;n?.duration&&(p(n),d(),r.value=m(t))}function v(e){n.value&&(o=!0,h(m(e)))}function b(){o=!1}function x(t){if(o){o=!1;return}e.value?.duration&&h(m(t))}function S(){n.value&&(n.value=!1,i&&e.value?.play().catch(()=>{}),f())}return T(()=>e.value?.currentTime,()=>{let t=e.value;if(r.value===null||!t?.duration)return;let n=r.value/100*t.duration;Math.abs(t.currentTime-n)<1&&f()}),g(f),{scrubbing:l,displayPercent:c,previewSeconds:u,onInput:_,onChange:v,onTouchStart:b,onTouchEnd:x,onPointerCancel:S}}const ee=Symbol(`player`);function te(e){return typeof e?.togglePlay==`function`}function D(e){let n=d(ee,null),r=S(null),i=null,a=!1;function o(){i?.disconnect(),i=null}function s(e){let t=document.getElementById(e);return te(t)?(r.value=t,o(),!0):!1}function c(){o(),r.value=null;let t=e.for;if(!t||a||s(t))return;let n=document.getElementById(t)?.tagName.toLowerCase();n?.includes(`-`)&&customElements.whenDefined(n).then(()=>{!a&&e.for===t&&s(t)}),p(()=>{a||e.for!==t||r.value||s(t)||(i=new MutationObserver(()=>s(t)),i.observe(document.body,{childList:!0,subtree:!0}))})}return _(c),T(()=>e.for,c),g(()=>{a=!0,o()}),t(()=>e.player??r.value??n??null)}function O(e,t=!1){if(!e||isNaN(e)||e<0)return`0:00`;let n=t?Math.round(e):Math.floor(e),r=Math.floor(n/3600),i=Math.floor(n%3600/60),a=String(n%60).padStart(2,`0`);return r?`${r}:${String(i).padStart(2,`0`)}:${a}`:`${i}:${a}`}const ne={class:`mlv-scrubber-wrap`},k=[`value`,`aria-valuetext`];var re=c({inheritAttrs:!1,__name:`Scrubber`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=D(e),{scrubbing:n,displayPercent:o,previewSeconds:s,onInput:c,onChange:l,onTouchStart:u,onTouchEnd:d,onPointerCancel:p}=E(t),m=e=>O(e,!0);return(e,g)=>(v(),i(`div`,ne,[a(`input`,f({type:`range`,min:`0`,max:`100`,step:`0.5`,value:w(o),class:`mlv-scrubber`,style:{"--p":`${w(o)}%`,"--b":`${w(t)?.bufferedDisplay??0}%`},"aria-label":`Seek`,"aria-valuetext":`${m(w(s))} of ${m(w(t)?.duration??0)}`,onInput:g[0]||=(...e)=>w(c)&&w(c)(...e),onChange:g[1]||=(...e)=>w(l)&&w(l)(...e),onTouchstart:g[2]||=(...e)=>w(u)&&w(u)(...e),onTouchend:g[3]||=(...e)=>w(d)&&w(d)(...e),onPointercancel:g[4]||=(...e)=>w(p)&&w(p)(...e)},e.$attrs),null,16,k),x(e.$slots,`preview`,{scrubbing:w(n),percent:w(o),previewSeconds:w(s),formatTime:m},()=>[w(n)?(v(),i(`div`,{key:0,class:`mlv-scrubber__preview`,style:h({left:`${w(o)}%`})},C(m(w(s))),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},ie=A(re,[[`__scopeId`,`data-v-00e26db0`]]);function ae(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 oe(e,t,n){return{tag:`span`,className:`icon-svg`,html:typeof e==`function`?e({...t,library:n}):e}}function se(e,t,n){if(n!==void 0){let r=e.libraryOverrides.get(n)?.get(t);if(r!==void 0)return r}return e.overrides.get(t)}function j(e,t,n){let r={name:t,variant:n.variant},i=ae(e,n),a=se(e,t,i);return{request:r,source:i===void 0?void 0:e.libraries.get(i),override:a===void 0?void 0:oe(a,r,i)}}function ce({request:e,source:t,override:n}){return n||t?.resolveSync?.(e)}function M(e,t){return e?.resolveSync?.(t)||e?.resolve?.(t)}function le(e,t){let n,r=!1,i=e.then(e=>{if(r)return e.dispose?.();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 ue(e){return`resolveSync`in e||`resolve`in e}async function de(e,t){if(`resolver`in t||`icons`in t){let{svgLibrary:e}=await import(`./chunks/svg-BLBI83Ed-BjsPx0LR.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 fe(){return{overrides:new Map,libraryOverrides:new Map,libraries:new Map,listeners:new Set,defaultLibrary:null}}function pe({listeners:e}){for(let t of e)t()}function me(){let e=fe();function t(e,t){let n=e.get(t);return n===void 0&&(n=new Map,e.set(t,n)),n}function n(){pe(e)}return{version:`0.0.2`,get defaultLibrary(){return e.defaultLibrary},get libraries(){return[...e.libraries.keys()]},register(t,r,i={}){if(e.libraries.get(t)?.dispose?.(),i.default&&(e.defaultLibrary=t),ue(r))return e.libraries.set(t,r),n(),Promise.resolve();let[a,o]=le(de(t,r),r=>{e.libraries.get(t)===a&&(e.libraries.set(t,r),n())});return e.libraries.set(t,a),n(),o.catch(r=>{throw e.defaultLibrary===t&&(e.defaultLibrary=null,n()),r})},unregister(t){e.libraries.get(t)?.dispose?.(),e.libraries.delete(t),e.defaultLibrary===t&&(e.defaultLibrary=null),n()},use(t){e.defaultLibrary=t,n()},override(r,i,a){let o,s;typeof r==`string`?(o=[[r,i??null]],s=a):(o=Object.entries(r),s=i);let c=s?.library===void 0?e.overrides:t(e.libraryOverrides,s.library);for(let[e,t]of o)t===null?c.delete(e):c.set(e,t);n()},getIconSync(t,n={}){return ce(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.libraryOverrides.clear(),e.libraries.clear(),e.defaultLibrary=null,n()}}}const he=Symbol.for(`@munsonlabs/sigil`),ge=globalThis,N=ge[he]??=me(),{register:_e,unregister:ve,override:ye,use:be,getIcon:xe,getIconSync:Se,subscribe:Ce,clear:we}=N;function P(e,t,n,r=N){let i=0,a=r.subscribe(()=>void o());async function o(){let a=++i,o=r.getIconSync(e,t);if(o)return n(o);let s=await r.getIcon(e,t);a===i&&n(s)}return o(),()=>{i++,a()}}const F=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=S();return T(()=>[e.name,e.library,e.variant],([e,t,r],i,a)=>{a(P(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})}}});function I(e,t,n=N){function r(){n.libraries.includes(e)||n.register(e,t)}return r(),n.subscribe(r)}const L={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>`,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>`,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>`,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>`,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>`,"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>`,"fullscreen-exit":`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"/></svg>`,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>`,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>`,pause:`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M6 19h4V5H6v14zm8-14v14h4V5h-4z"/></svg>`,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>`,play:`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M8 5v14l11-7z"/></svg>`,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>`,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>`,"skip-next":`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z"/></svg>`,"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>`,"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 Te;function Ee(){Te??=I(`mlv`,{resolveSync({name:e}){let t=L[e];if(t!==void 0)return{tag:`span`,className:`icon-svg`,html:t}}})}Ee();var R=A(c({__name:`Icon`,props:{name:{type:String,required:!0}},setup(e){return(t,r)=>(v(),n(w(F),{name:e.name,library:`mlv`,class:`mlv-icon`},null,8,[`name`]))}}),[[`__scopeId`,`data-v-466b80a9`]]);const De=[`aria-label`];var Oe=c({__name:`PlayButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let r=D(e),a=t(()=>r.value?.isError?`error`:r.value?.hasEnded?`ended`:r.value?.isPlaying?`playing`:`idle`),o=t(()=>{switch(a.value){case`error`:return`Retry`;case`ended`:return`Replay`;case`playing`:return`Pause`;default:return`Play`}});function s(){let e=r.value;e&&(e.isError?e.retry():e.togglePlay())}return(e,t)=>(v(),i(`button`,{type:`button`,class:`mlv-control-btn mlv-play-button`,"aria-label":o.value,onClick:s},[x(e.$slots,`default`,{isPlaying:w(r)?.isPlaying??!1,hasEnded:w(r)?.hasEnded??!1,isError:w(r)?.isError??!1},()=>[a.value===`error`||a.value===`ended`?(v(),n(R,{key:0,name:`replay`})):a.value===`playing`?(v(),n(R,{key:1,name:`pause`})):(v(),n(R,{key:2,name:`play`}))])],8,De))}}),ke=c({__name:`VolumeIcon`,props:{isAudible:{type:Boolean,required:!0}},setup(e){return(t,r)=>e.isAudible?(v(),n(R,{key:0,name:`volume-on`})):(v(),n(R,{key:1,name:`volume-mute`}))}});const Ae=[`aria-pressed`,`aria-label`];var je=c({__name:`MuteButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=D(e);return(e,n)=>(v(),i(`button`,{type:`button`,class:`mlv-control-btn mlv-mute-button`,"aria-pressed":w(t)?.isMuted??!1,"aria-label":w(t)?.isMuted?`Unmute`:`Mute`,onClick:n[0]||=e=>w(t)?.toggleMute()},[x(e.$slots,`default`,{isMuted:w(t)?.isMuted??!1},()=>[s(ke,{"is-audible":w(t)?.isAudible??!1},null,8,[`is-audible`])])],8,Ae))}});const Me=[`aria-label`];var Ne=c({__name:`FullscreenButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=D(e);return(e,r)=>(v(),i(`button`,{type:`button`,class:`mlv-control-btn mlv-fullscreen-button`,"aria-label":w(t)?.isFullscreen?`Exit fullscreen`:`Enter fullscreen`,onClick:r[0]||=e=>w(t)?.toggleFullscreen()},[x(e.$slots,`default`,{isFullscreen:w(t)?.isFullscreen??!1},()=>[w(t)?.isFullscreen?(v(),n(R,{key:0,name:`fullscreen-exit`})):(v(),n(R,{key:1,name:`fullscreen-enter`}))])],8,Me))}}),Pe=A(c({__name:`Spinner`,props:{size:{type:Number,required:!1,default:14},borderWidth:{type:Number,required:!1,default:2}},setup(e){return(t,n)=>(v(),i(`div`,{class:`spinner`,style:h({width:`${e.size}px`,height:`${e.size}px`,borderWidth:`${e.borderWidth}px`})},null,4))}}),[[`__scopeId`,`data-v-7c461437`]]);const Fe={key:0,class:`mlv-buffering`,role:`status`,"aria-label":`Buffering`};var Ie=A(c({__name:`Buffering`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=D(e);return(e,n)=>w(t)?.isBuffering?(v(),i(`div`,Fe,[x(e.$slots,`default`,{isBuffering:!0},()=>[s(Pe)],!0)])):r(`v-if`,!0)}}),[[`__scopeId`,`data-v-c446a450`]]);const Le=[`aria-pressed`];var Re=c({__name:`LoopButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=D(e);return(e,n)=>(v(),i(`button`,{type:`button`,class:m([`mlv-control-btn mlv-control-btn--toggle mlv-loop-button`,{"mlv-control-btn--active mlv-loop-button--active":w(t)?.isLooping}]),"aria-pressed":w(t)?.isLooping??!1,"aria-label":`Toggle loop`,onClick:n[0]||=e=>w(t)?.toggleLoop()},[x(e.$slots,`default`,{isLooping:w(t)?.isLooping??!1},()=>[s(R,{name:`loop`})])],10,Le))}});const ze=[`aria-pressed`];var Be=c({__name:`PipButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let t=D(e);return(e,n)=>w(t)?.supportsPip?(v(),i(`button`,{key:0,type:`button`,class:m([`mlv-control-btn mlv-control-btn--toggle mlv-pip-button`,{"mlv-control-btn--active mlv-pip-button--active":w(t)?.isPipActive}]),"aria-pressed":w(t)?.isPipActive??!1,"aria-label":`Toggle Picture-in-Picture`,onClick:n[0]||=e=>w(t)?.togglePip()},[x(e.$slots,`default`,{isPipActive:w(t)?.isPipActive??!1},()=>[s(R,{name:`pip`})])],10,ze)):r(`v-if`,!0)}});const z=[.5,.75,1,1.25,1.5,2];function Ve(e){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 He(e){return e.captionTracks.find(t=>t.index===e.activeCaptionIndex)?.label??`Off`}function Ue(e){let t=e.qualityLevels;if(!t.length)return;if(e.isAutoQuality){e.setQuality(t[t.length-1].height);return}let n=t.findIndex(t=>t.height===e.currentQualityHeight);e.setQuality(n<=0?null:t[n-1].height)}function We(e){return e.isAutoQuality?`Auto`:e.qualityLevels.find(t=>t.height===e.currentQualityHeight)?.label??`Auto`}function Ge(e){let t=e.currentPlaybackRate,n=z.indexOf(t);if(n!==-1){e.setPlaybackRate(z[(n+1)%z.length]);return}e.setPlaybackRate(z.find(e=>e>t)??z[0])}function Ke(e){return`${e}×`}const qe=[`aria-label`];var Je=c({__name:`CaptionsButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let n=D(e),a=t(()=>n.value?He(n.value):`Off`);function o(){n.value&&Ve(n.value)}return(e,t)=>w(n)?.supportsCaptions?(v(),i(`button`,{key:0,type:`button`,class:m([`mlv-control-btn mlv-control-btn--toggle mlv-captions-button`,{"mlv-control-btn--active mlv-captions-button--active":w(n)?.activeCaptionIndex!==null}]),"aria-label":`Captions: ${a.value}`,onClick:o},[x(e.$slots,`default`,{currentLabel:a.value,tracks:w(n)?.captionTracks??[],activeIndex:w(n)?.activeCaptionIndex??null},()=>[s(R,{name:`captions`})])],10,qe)):r(`v-if`,!0)}});const Ye=[`aria-label`];var Xe=c({__name:`QualityButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let n=D(e),a=t(()=>n.value?We(n.value):`Auto`);function o(){n.value&&Ue(n.value)}return(e,t)=>w(n)?.supportsQuality?(v(),i(`button`,{key:0,type:`button`,class:m([`mlv-control-btn mlv-control-btn--toggle mlv-quality-button`,{"mlv-control-btn--active mlv-quality-button--active":!w(n)?.isAutoQuality}]),"aria-label":`Quality: ${a.value}`,onClick:o},[x(e.$slots,`default`,{currentLabel:a.value,levels:w(n)?.qualityLevels??[],currentHeight:w(n)?.currentQualityHeight??null,isAuto:w(n)?.isAutoQuality??!0},()=>[s(R,{name:`quality`})])],10,Ye)):r(`v-if`,!0)}});const Ze=[`aria-label`];var Qe=c({__name:`PlaybackRateButton`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let n=D(e),a=t(()=>Ke(n.value?.currentPlaybackRate??1));function s(){n.value&&Ge(n.value)}return(e,t)=>w(n)?.supportsPlaybackRate?(v(),i(`button`,{key:0,type:`button`,class:m([`mlv-control-btn mlv-control-btn--toggle mlv-playback-rate-button`,{"mlv-control-btn--active mlv-playback-rate-button--active":w(n)?.currentPlaybackRate!==1}]),"aria-label":`Playback speed: ${a.value}`,onClick:s},[x(e.$slots,`default`,{currentLabel:a.value,rate:w(n)?.currentPlaybackRate??1,rates:[...w(z)]},()=>[o(C(a.value),1)])],10,Ze)):r(`v-if`,!0)}});const $e={class:`mlv-volume-wrap`},et=[`value`],tt={class:`mlv-volume-pct`};var nt=A(c({inheritAttrs:!1,__name:`VolumeSlider`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(e){let n=D(e),r=t(()=>{let e=n.value;return e?e.isMuted?0:Math.round(e.currentVolume*100):0});function o(e){n.value?.setVolume(Number(e.target.value)/100)}return(e,t)=>(v(),i(`div`,$e,[a(`input`,f({type:`range`,min:`0`,max:`100`,step:`1`,value:r.value,class:`mlv-volume-slider`,style:{"--v":`${r.value}%`},"aria-label":`Volume`,onInput:o},e.$attrs),null,16,et),x(e.$slots,`default`,{percent:r.value},()=>[a(`span`,tt,C(r.value)+`%`,1)],!0)]))}}),[[`__scopeId`,`data-v-512c68f4`]]);const rt={class:`mlv-time-display__time`},it={class:`mlv-time-display__total`};var at=A(c({__name:`TimeDisplay`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1}},setup(t){let n=D(t);return(t,r)=>(v(),i(`span`,{class:m([`mlv-time-display`,{"mlv-time-display--live":w(n)?.isLive}])},[x(t.$slots,`default`,{isLive:w(n)?.isLive??!1,currentTime:w(n)?.currentTime??0,duration:w(n)?.duration??0,formatTime:w(O)},()=>[w(n)?.isLive?(v(),i(e,{key:0},[r[0]||=a(`span`,{class:`mlv-time-display__dot`},null,-1),r[1]||=o(`Live `,-1)],64)):(v(),i(e,{key:1},[a(`span`,rt,C(w(O)(w(n)?.currentTime??0)),1),a(`span`,it,`/ `+C(w(O)(w(n)?.duration??0)),1)],64))],!0)],2))}}),[[`__scopeId`,`data-v-d2dbce42`]]);function ot(e,t,n,r={}){let i=typeof window<`u`&&`speechSynthesis`in window,a=y(!1),o=y(!1);function s(){o.value&&e.value?.isMuted&&e.value.toggleMute(),o.value=!1}function c(){if(i){if(a.value=!a.value,a.value){e.value&&!e.value.isMuted&&(e.value.toggleMute(),o.value=!0);return}window.speechSynthesis.cancel(),s()}}return T(n,e=>{if(!i||!a.value||e===null)return;let n=t.value[e];if(!n)return;window.speechSynthesis.cancel();let o=new SpeechSynthesisUtterance(n.text);r.pitch!==void 0&&(o.pitch=r.pitch),r.rate!==void 0&&(o.rate=r.rate),window.speechSynthesis.speak(o)}),T(()=>e.value?.isMuted,e=>{i&&a.value&&e===!1&&(window.speechSynthesis.cancel(),a.value=!1,o.value=!1)}),g(()=>{i&&window.speechSynthesis.cancel(),a.value&&s()}),{canSpeak:i,speechEnabled:a,toggleSpeech:c}}const st=[`aria-label`,`aria-pressed`],B=[`aria-current`,`onClick`],ct={class:`mlv-transcript__time`},lt={class:`mlv-transcript__text`};var ut=A(c({inheritAttrs:!1,__name:`Transcript`,props:{player:{type:[Object,null],required:!1},for:{type:String,required:!1},cues:{type:[Array,String],required:!1},speechPitch:{type:Number,required:!1},speechRate:{type:Number,required:!1}},setup(o){let s=o,c=D(s),l=t(()=>{if(typeof s.cues!=`string`)return s.cues??[];try{return JSON.parse(s.cues)}catch{return[]}}),u=t(()=>{let e=c.value?.currentTime??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=y(null),h=y(!1);function g(e){let t=c.value;t&&(t.seek(e.time),t.play().catch(()=>{}))}T(u,async e=>{e===null||h.value||(await p(),d.value?.querySelector(`.mlv-transcript__cue--active`)?.scrollIntoView?.({block:`nearest`,behavior:`smooth`}))});let{canSpeak:_,speechEnabled:S,toggleSpeech:E}=ot(c,l,u,{pitch:s.speechPitch,rate:s.speechRate});return(t,o)=>(v(),i(e,null,[w(_)?(v(),i(`button`,{key:0,type:`button`,class:`mlv-transcript__speech-toggle`,"aria-label":w(S)?`Mute transcript readout`:`Unmute transcript readout`,"aria-pressed":w(S),onClick:o[0]||=(...e)=>w(E)&&w(E)(...e)},[w(S)?(v(),n(R,{key:0,name:`volume-on`})):(v(),n(R,{key:1,name:`volume-mute`}))],8,st)):r(`v-if`,!0),a(`ol`,f({ref_key:`listEl`,ref:d,class:`mlv-transcript`},t.$attrs,{onPointerenter:o[1]||=e=>h.value=!0,onPointerleave:o[2]||=e=>h.value=!1}),[(v(!0),i(e,null,b(l.value,(e,n)=>(v(),i(`li`,{key:`${e.time}-${n}`,class:`mlv-transcript__item`},[a(`button`,{type:`button`,class:m([`mlv-transcript__cue`,{"mlv-transcript__cue--active":n===u.value}]),"aria-current":n===u.value?`true`:void 0,onClick:t=>g(e)},[x(t.$slots,`default`,{cue:e,index:n,isActive:n===u.value,formatTime:w(O)},()=>[a(`span`,ct,C(w(O)(e.time)),1),a(`span`,lt,C(e.text),1)],!0)],10,B)]))),128))],16)],64))}}),[[`__scopeId`,`data-v-3cf9e708`]]);const V=l(ie,{shadowRoot:!1}),H=l(Oe,{shadowRoot:!1}),U=l(je,{shadowRoot:!1}),W=l(Ne,{shadowRoot:!1}),G=l(Ie,{shadowRoot:!1}),K=l(Re,{shadowRoot:!1}),q=l(Be,{shadowRoot:!1}),J=l(Je,{shadowRoot:!1}),Y=l(Xe,{shadowRoot:!1}),X=l(Qe,{shadowRoot:!1}),Z=l(nt,{shadowRoot:!1}),Q=l(at,{shadowRoot:!1}),$=l(ut,{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};
|
package/dist/elements/core.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.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}@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}.ppbtn{backdrop-filter:blur(12px);will-change:backdrop-filter;color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff2e;border-radius:50%;justify-content:center;align-items:center;transition:background .2s,transform .15s;display:flex}.ppbtn:hover{background:#fff3;transform:scale(1.08)}.ppbtn--lg{background:var(--mlv-btn-bg,#ffffff1a);width:clamp(48px,20cqw,64px);height:clamp(48px,20cqw,64px);color:var(--mlv-btn-color,#fff)}.ppbtn--lg svg{width:clamp(20px,9cqw,28px);height:clamp(20px,9cqw,28px)}.ppbtn--lg:hover{background:var(--mlv-btn-bg,#fff3);filter:brightness(1.12)}.ppbtn--sm{color:#ffffffbf;background:0 0;border:none;border-radius:8px;width:30px;height:30px}.ppbtn--sm svg{width:16px;height:16px}.ppbtn--sm:hover{color:#fff;background:#ffffff1a;transform:none}.hud[data-v-a6d118e7]{align-items:center;gap:clamp(12px,5cqw,20px);display:flex}.hud__play-wrap[data-v-a6d118e7]{display:flex;position:relative}.hud__buf-spinner[data-v-a6d118e7]{margin-top:8px;position:absolute;top:100%;left:calc(50% - 7px)}.hud__spacer[data-v-a6d118e7]{flex-shrink:0;width:clamp(36px,14cqw,44px);height:clamp(36px,14cqw,44px)}.hud__btn[data-v-a6d118e7]{background:var(--mlv-btn-bg,#ffffff1a);backdrop-filter:blur(12px);will-change:backdrop-filter;width:clamp(36px,14cqw,44px);height:clamp(36px,14cqw,44px);color:var(--mlv-btn-color,#fff);cursor:pointer;border:1px solid #ffffff2e;border-radius:50%;justify-content:center;align-items:center;transition:background .2s,transform .15s;display:flex}.hud__btn[data-v-a6d118e7] svg{width:clamp(16px,6cqw,18px);height:clamp(16px,6cqw,18px)}.hud__btn[data-v-a6d118e7]:hover{background:var(--mlv-btn-bg,#fff3);filter:brightness(1.12);transform:scale(1.08)}.hud__btn--active[data-v-a6d118e7]{border-color:var(--mlv-accent,#3b82f6);background:color-mix(in srgb, var(--mlv-accent,#3b82f6) 30%, var(--mlv-btn-bg,#ffffff1a));color:var(--mlv-btn-color,#fff)}.hud__btn--active[data-v-a6d118e7]:hover{background:color-mix(in srgb, var(--mlv-accent,#3b82f6) 45%, var(--mlv-btn-bg,#fff3))}: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}: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}.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-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}.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}.controls__vol-slider{-webkit-appearance:none;appearance:none;cursor:pointer;background:linear-gradient(to right, #fff 0%, #fff var(--v), #ffffff26 var(--v), #ffffff26 100%);outline:none;flex:1;height:5px;transition:height .15s}.controls__vol-slider:hover{height:7px}.controls__vol-slider:focus-visible{outline-offset:2px;outline:2px solid #fff}.controls__vol-slider::-webkit-slider-runnable-track{background:0 0;height:5px}.controls__vol-slider::-webkit-slider-thumb{-webkit-appearance:none;cursor:pointer;background:#fff;border-radius:50%;width:16px;height:16px;margin-top:-5.5px;transition:transform .15s;box-shadow:0 0 0 3px #fff3}.controls__vol-slider:hover::-webkit-slider-thumb{transform:scale(1.2)}.controls__vol-slider::-moz-range-track{background:#ffffff26;height:5px}.controls__vol-slider::-moz-range-progress{background:#fff;height:5px}.controls__vol-slider::-moz-range-thumb{cursor:pointer;background:#fff;border:none;border-radius:50%;width:16px;height:16px;box-shadow:0 0 0 3px #fff3}.controls__vol-header[data-v-10b0ae67]{align-items:center;gap:4px;display:flex}.controls__vol-label[data-v-10b0ae67]{color:#ffffffe6;flex:1;padding:0 4px;font-size:.8rem;font-weight:600}.controls__vol-body[data-v-10b0ae67]{align-items:center;gap:12px;padding:6px 0 4px;display:flex}.controls__vol-pct[data-v-10b0ae67]{font-variant-numeric:tabular-nums;color:#fff9;text-align:right;min-width:32px;font-size:.75rem;font-weight:600}.controls__more-row[data-v-47ca5bfc]{color:#ffffffd9;cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:space-between;align-items:center;width:100%;padding:8px 4px;font-size:.8rem;font-weight:500;transition:background .15s;display:flex}.controls__more-row[data-v-47ca5bfc]:hover{background:#ffffff14}.controls__more-row-label[data-v-47ca5bfc]{align-items:center;gap:8px;display:flex}.controls__more-row-icon[data-v-47ca5bfc],.controls__more-row-icon[data-v-47ca5bfc] svg{flex-shrink:0;width:16px;height:16px}.controls__more-value[data-v-47ca5bfc]{font-variant-numeric:tabular-nums;color:#ffffff80;font-size:.7rem;font-weight:600}.controls__more-row--active .controls__more-value[data-v-47ca5bfc]{color:var(--mlv-accent,#3b82f6)}.controls__more-header[data-v-e89a8208]{flex-shrink:0;align-items:center;gap:4px;display:flex}.controls__more-label[data-v-e89a8208]{color:#ffffffe6;flex:1;padding:0 4px;font-size:.8rem;font-weight:600}.controls__more-body[data-v-e89a8208]{flex-direction:column;min-height:0;padding:2px 0;display:flex;overflow-y:auto}.controls__btn{color:#ffffffbf;cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;transition:background .15s,color .15s;display:flex}.controls__inner:has(.controls__more-body){flex-direction:column;max-width:100%;height:100%;display:flex;overflow:auto}.controls__btn svg{width:16px;height:16px}.controls__btn:hover{color:#fff;background:#ffffff1a}.controls--compact .controls__seek,.controls--compact .mlv-scrubber-wrap,.controls--compact .mlv-time-display__total,.controls--compact .controls__btn--pip,.controls--compact .controls__btn--next,.controls--compact .controls__btn--volume{display:none}.controls__seek{-webkit-appearance:none;appearance:none;cursor:pointer;box-sizing:border-box;background:padding-box content-box;background-image:linear-gradient(to right, var(--mlv-accent,#3b82f6) 0%, var(--mlv-accent,#3b82f6) var(--p), #ffffff4d var(--p), #ffffff4d var(--b), #ffffff1a var(--b), #ffffff1a 100%);outline:none;width:100%;height:20px;padding:8px 0}.controls__seek::-webkit-slider-runnable-track{background:0 0;height:4px}.controls__seek::-webkit-slider-thumb{-webkit-appearance:none;background:var(--mlv-accent,#3b82f6);width:14px;height:14px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mlv-accent,#3b82f6) 30%, transparent);cursor:pointer;border-radius:50%;margin-top:-5px;transition:transform .15s}.controls__seek:hover::-webkit-slider-thumb{transform:scale(1.25)}.controls__seek::-moz-range-track{background:#ffffff1a;height:4px}.controls__seek::-moz-range-progress{background:var(--mlv-accent,#3b82f6);height:4px}.controls__seek::-moz-range-thumb{background:var(--mlv-accent,#3b82f6);width:14px;height:14px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mlv-accent,#3b82f6) 30%, transparent);cursor:pointer;border:none;border-radius:50%}.controls[data-v-5712aad4]{width:var(--mlv-controls-width,min(450px, calc(100% - 32px)));-webkit-backdrop-filter:blur(20px);background:#0a0a0e;border:1px solid #ffffff1a;border-radius:18px;flex-direction:column;gap:10px;max-height:100%;padding:14px 16px 12px;display:flex;position:relative;overflow:hidden;box-shadow:0 8px 32px #00000080}.controls--fs[data-v-5712aad4]{width:100%}.controls__close[data-v-5712aad4]{clip:rect(0, 0, 0, 0);white-space:nowrap;color:#fff;cursor:pointer;background:0 0;border:0;width:1px;height:1px;padding:0;font-size:.75rem;position:absolute;bottom:4px;left:50%;overflow:hidden;transform:translate(-50%)}.controls__close[data-v-5712aad4]:focus{clip:auto;white-space:normal;outline-offset:2px;background:#ffffff1a;border-radius:6px;outline:2px solid #fff;width:auto;height:auto;padding:6px 10px;overflow:visible}.controls__row[data-v-5712aad4]{align-items:center;gap:4px;display:flex}.controls__time-display[data-v-5712aad4]{color:#fff9;letter-spacing:.02em;flex:1;padding:0 4px;font-size:.7rem;font-weight:500}.controls__time-display.mlv-time-display--live[data-v-5712aad4]{letter-spacing:.04em;text-transform:uppercase;color:#f87171;font-weight:700}.controls__play-wrap[data-v-5712aad4]{flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;display:flex}.controls__btn--active[data-v-5712aad4],.controls__btn--pip.mlv-pip-button--active[data-v-5712aad4]{color:var(--mlv-accent,#3b82f6)}.controls__btn--active[data-v-5712aad4]:hover,.controls__btn--pip.mlv-pip-button--active[data-v-5712aad4]:hover{color:var(--mlv-accent,#60a5fa)}.controls__fs-wrap[data-v-5712aad4]{flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;display:flex}.overlay__spinner[data-v-2fba5782]{z-index:5;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.fade-enter-active[data-v-2fba5782],.fade-leave-active[data-v-2fba5782]{transition:opacity .25s}.fade-enter-from[data-v-2fba5782],.fade-leave-to[data-v-2fba5782]{opacity:0}.overlay__error[data-v-2fba5782]{z-index:6;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding:1.5rem;display:flex;position:absolute;inset:0}.overlay__error p[data-v-2fba5782]{color:#ffffffb3;text-align:center;max-width:260px;font-size:.875rem;line-height:1.5}.overlay__retry[data-v-2fba5782]{pointer-events:auto;color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff40;border-radius:8px;padding:.4rem 1rem;font-size:.8rem;font-weight:600;transition:background .15s}.overlay__retry[data-v-2fba5782]:hover{background:#fff3}.overlay__reveal[data-v-2fba5782]{z-index:10;clip:rect(0, 0, 0, 0);white-space:nowrap;color:#fff;cursor:pointer;background:#000000d9;border:0;border-radius:6px;width:1px;height:1px;margin:-1px;padding:0;font-size:.8rem;position:absolute;top:8px;left:8px;overflow:hidden}.overlay__reveal[data-v-2fba5782]:focus{clip:auto;white-space:normal;outline-offset:2px;outline:2px solid #fff;width:auto;height:auto;margin:0;padding:.4rem .75rem;overflow:visible}.overlay__hud[data-v-2fba5782]{z-index:4;opacity:0;pointer-events:none;justify-content:center;align-items:center;transition:opacity .3s;display:flex;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.overlay__hud--visible[data-v-2fba5782]{opacity:1;pointer-events:all}.overlay__hud[data-v-2fba5782]:has(~.overlay__popup){opacity:0!important;pointer-events:none!important}.overlay__popup[data-v-2fba5782]{z-index:5;align-items:var(--mlv-popup-align,center);pointer-events:none;justify-content:center;padding:16px;display:flex;position:absolute;inset:0}.overlay__popup[data-v-2fba5782] .controls{pointer-events:auto}.overlay__popup--fs[data-v-2fba5782]{align-items:flex-end}.popup-enter-active[data-v-2fba5782],.popup-leave-active[data-v-2fba5782]{transition:opacity .2s,transform .2s}.popup-enter-from[data-v-2fba5782],.popup-leave-to[data-v-2fba5782]{opacity:0;transform:scale(.95)}.ad-overlay[data-v-23efcc8b]{z-index:21;pointer-events:none;position:absolute;inset:0}.ad-overlay__bar[data-v-23efcc8b]{align-items:center;gap:6px;display:flex;position:absolute;bottom:10px;left:10px}.ad-overlay__badge[data-v-23efcc8b]{color:#fff;text-transform:uppercase;letter-spacing:.06em;background:#0009;border-radius:4px;align-items:center;gap:6px;padding:3px 8px;font-size:.65rem;font-weight:700;display:flex}.ad-overlay__countdown[data-v-23efcc8b]{font-variant-numeric:tabular-nums;text-transform:none;letter-spacing:.02em;opacity:.8;font-weight:500}.ad-overlay__btn[data-v-23efcc8b]{color:#fff;cursor:pointer;pointer-events:auto;background:#0009;border:none;border-radius:4px;justify-content:center;align-items:center;padding:3px;transition:background .15s;display:flex}.ad-overlay__btn[data-v-23efcc8b]:hover{background:#000c}.ad-overlay__btn[data-v-23efcc8b] svg{width:11px;height:11px}.player-wrapper[data-v-a2f8a547]{display:block}.player-wrapper[data-v-9188c23a]{display:contents}.pinned-controls__dismiss[data-v-690b416a],.pinned-controls__scroll-to[data-v-690b416a]{z-index:25;backdrop-filter:blur(6px);color:#fff;cursor:pointer;background:#0009;border:none;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;transition:all .15s;display:flex;position:absolute;top:.4rem}.pinned-controls__dismiss[data-v-690b416a]:hover,.pinned-controls__scroll-to[data-v-690b416a]:hover{background:#000000d9}.pinned-controls__dismiss[data-v-690b416a] svg,.pinned-controls__scroll-to[data-v-690b416a] svg{width:14px;height:14px}.pinned-controls__dismiss[data-v-690b416a]{right:.4rem}.pinned-controls__scroll-to[data-v-690b416a]{left:.4rem}.stage--pin-bottom-right,.stage--pin-bottom-left,.stage--pin-top-right,.stage--pin-top-left,.player--pin-bottom-right,.player--pin-bottom-left,.player--pin-top-right,.player--pin-top-left{border-radius:var(--mlv-radius,12px);transition:transform .18s}.stage--pin-bottom-right,.player--pin-bottom-right{bottom:1.25rem;right:1.25rem}.stage--pin-bottom-left,.player--pin-bottom-left{bottom:1.25rem;left:1.25rem}.stage--pin-top-right,.player--pin-top-right{top:1.25rem;right:1.25rem}.stage--pin-top-left,.player--pin-top-left{top:1.25rem;left:1.25rem}.stage--pin-bottom-right.stage--tucked,.stage--pin-top-right.stage--tucked,.player--pin-bottom-right.player--tucked,.player--pin-top-right.player--tucked{transform:translateX(calc(100% - var(--mlv-stage-tuck,32px)))}.stage--pin-bottom-left.stage--tucked,.stage--pin-top-left.stage--tucked,.player--pin-bottom-left.player--tucked,.player--pin-top-left.player--tucked{transform:translateX(calc(-100% + var(--mlv-stage-tuck,32px)))}.player[data-v-4ab3cf75]{width:100%;max-width:var(--mlv-max-width,800px);user-select:none;-webkit-tap-highlight-color:transparent;margin:0 auto;position:relative}.player--pinned[data-v-4ab3cf75]{z-index:100;width:70dvw;max-width:360px;margin:0;transition:transform .18s;position:fixed;box-shadow:0 8px 32px #0009}@media (width<=740px){.player--pinned[data-v-4ab3cf75]{max-width:300px}}[data-mlv-player][data-v-4ab3cf75]{position:absolute;inset:0}.player__shell[data-v-4ab3cf75]{border-radius:var(--mlv-radius,12px);cursor:pointer;background:#000;position:relative;overflow:hidden;container:player-shell/inline-size}.mlv-video--hidden[data-v-4ab3cf75]{opacity:0}.overlay__tap-capture[data-v-4ab3cf75]{z-index:2;position:absolute;inset:0}.mlv-youtube .overlay__tap-capture[data-v-4ab3cf75]{clip-path:polygon(0 0,100% 0,100% 100%,64px 100%,64px calc(100% - 64px),0 calc(100% - 64px))}.mlv-dailymotion .overlay__tap-capture[data-v-4ab3cf75]{clip-path:polygon(0 64px,0 100%,100% 100%,100% 0,64px 0,64px 64px)}.player__shell--portrait[data-v-4ab3cf75]{width:auto;max-width:100%;max-height:75dvh;margin:0 auto}.player__native-play[data-v-4ab3cf75]{z-index:3;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.player__native-play[data-v-4ab3cf75]>*{pointer-events:auto}.player__shell[data-v-4ab3cf75]:fullscreen{border-radius:0;width:100vw;height:100dvh}.player__shell:fullscreen .mlv-video[data-v-4ab3cf75],.player__shell:fullscreen [data-mlv-player][data-v-4ab3cf75]{width:100%!important;height:100%!important}.mlv-video{border-radius:var(--mlv-radius,12px);object-fit:cover;background:#000;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.mlv-dailymotion .mlv-tech>*,.mlv-dailymotion .dailymotion-player-root,.mlv-dailymotion iframe{width:100%!important;height:100%!important;position:absolute!important;inset:0!important}.mlv-vimeo .mlv-tech>div{width:100%!important;height:100%!important;padding:0!important;position:absolute!important;top:0!important;left:0!important}.mlv-vimeo iframe{width:100%!important;height:100%!important;position:absolute!important;top:0!important;left:0!important}[data-mlv-player] .ima-ad-container{pointer-events:none;z-index:20!important;width:100%!important;height:100%!important;position:absolute!important;top:0!important;left:0!important}.mlv-ad-playing .ima-ad-container{pointer-events:auto}.mlv-ad-playing .overlay__hud,.mlv-ad-playing .overlay__spinner{display:none!important}.stage-wrapper[data-v-fb8c86cf]{width:100%;max-width:var(--mlv-max-width,800px);margin:0 auto}.stage[data-v-fb8c86cf]{width:100%}.stage--minified[data-v-fb8c86cf]{z-index:100;margin:0;position:fixed;overflow:hidden;box-shadow:0 8px 32px #0009}.stage--pin-bottom-right[data-v-fb8c86cf],.stage--pin-bottom-left[data-v-fb8c86cf],.stage--pin-top-right[data-v-fb8c86cf],.stage--pin-top-left[data-v-fb8c86cf]{width:70dvw;max-width:360px;@media (width<=740px){max-width:300px}}.stage--pin-full-width[data-v-fb8c86cf]{width:100%;max-width:100%;box-shadow:none;border-radius:0;top:0;left:0;right:0}.stage__idle[data-v-fb8c86cf]{border-radius:var(--mlv-radius,12px);cursor:pointer;background:#111;justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.stage__idle-poster[data-v-fb8c86cf]{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.stage__idle-scrim[data-v-fb8c86cf]{background:#00000073;transition:background .15s;position:absolute;inset:0}.stage__idle:hover .stage__idle-scrim[data-v-fb8c86cf]{background:#0000004d}.stage__idle-body[data-v-fb8c86cf]{text-align:center;flex-direction:column;align-items:center;gap:.75rem;padding:1rem;display:flex;position:relative}.stage__idle-btn[data-v-fb8c86cf]{backdrop-filter:blur(4px);color:#fff;background:#0009;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;transition:transform .15s,background .15s;display:flex}.stage__idle:hover .stage__idle-btn[data-v-fb8c86cf]{background:#000c;transform:scale(1.1)}.stage__idle-btn[data-v-fb8c86cf] svg{width:32px;height:32px}.stage__idle-title[data-v-fb8c86cf]{color:#f1f5f9;text-shadow:0 1px 4px #000c;font-size:1rem;font-weight:600}.stage__idle-empty[data-v-fb8c86cf]{color:#64748b;font-size:.95rem}.placeholder[data-v-dbcb4f82]{width:100%;max-width:var(--mlv-max-width,800px);margin:0 auto}.placeholder__shell[data-v-dbcb4f82]{border-radius:var(--mlv-radius,12px);cursor:pointer;background:#111;position:relative;overflow:hidden}.placeholder__shell--portrait[data-v-dbcb4f82]{width:auto;max-height:75dvh;margin:0 auto}.placeholder__poster[data-v-dbcb4f82]{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.placeholder__scrim[data-v-dbcb4f82]{background:#00000059;transition:background .15s;position:absolute;inset:0}.placeholder__shell:hover .placeholder__scrim[data-v-dbcb4f82]{background:#00000026}.placeholder__btn-wrap[data-v-dbcb4f82]{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.placeholder__btn-wrap[data-v-dbcb4f82]>*{pointer-events:auto}.placeholder__footer[data-v-dbcb4f82]{pointer-events:none;background:linear-gradient(#0000 0%,#000c 100%);padding:1.5rem .75rem .6rem;position:absolute;bottom:0;left:0;right:0}.placeholder__title[data-v-dbcb4f82]{color:#f1f5f9;white-space:nowrap;text-overflow:ellipsis;text-shadow:0 1px 3px #0009;font-size:.8rem;font-weight:600;overflow:hidden}.mlv-hide-marker[data-v-bacb702a]{width:100%;min-height:1px}
|
|
1
|
+
.mlv-video{border-radius:var(--mlv-radius,12px);object-fit:cover;background:#000;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.mlv-dailymotion .mlv-tech>*,.mlv-dailymotion .dailymotion-player-root,.mlv-dailymotion iframe{width:100%!important;height:100%!important;position:absolute!important;inset:0!important}.mlv-vimeo .mlv-tech>div{width:100%!important;height:100%!important;padding:0!important;position:absolute!important;top:0!important;left:0!important}.mlv-vimeo iframe{width:100%!important;height:100%!important;position:absolute!important;top:0!important;left:0!important}[data-mlv-player] .ima-ad-container{pointer-events:none;z-index:20!important;width:100%!important;height:100%!important;position:absolute!important;top:0!important;left:0!important}.mlv-ad-playing .ima-ad-container{pointer-events:auto}.mlv-ad-playing .overlay__hud,.mlv-ad-playing .overlay__spinner{display:none!important}:where(.mlv-control-btn){all:unset;cursor:pointer;justify-content:center;align-items:center;display:inline-flex}:where(.mlv-control-btn):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-control-btn) svg{width:1em;height:1em}:where(.mlv-control-btn--toggle){opacity:.6}:where(.mlv-control-btn--toggle.mlv-control-btn--active){opacity:1}.mlv-icon[data-v-466b80a9]{display:contents}@keyframes spin-7c461437{to{transform:rotate(360deg)}}.spinner[data-v-7c461437]{border-style:solid;border-color:#fffc #ffffff26 #ffffff26;border-radius:50%;animation:.75s linear infinite spin-7c461437}:where(.mlv-buffering[data-v-c446a450]){justify-content:center;align-items:center;display:inline-flex}.ppbtn{backdrop-filter:blur(12px);will-change:backdrop-filter;color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff2e;border-radius:50%;justify-content:center;align-items:center;transition:background .2s,transform .15s;display:flex}.ppbtn:hover{background:#fff3;transform:scale(1.08)}.ppbtn--lg{background:var(--mlv-btn-bg,#ffffff1a);width:clamp(48px,20cqw,64px);height:clamp(48px,20cqw,64px);color:var(--mlv-btn-color,#fff)}.ppbtn--lg svg{width:clamp(20px,9cqw,28px);height:clamp(20px,9cqw,28px)}.ppbtn--lg:hover{background:var(--mlv-btn-bg,#fff3);filter:brightness(1.12)}.ppbtn--sm{color:#ffffffbf;background:0 0;border:none;border-radius:8px;width:30px;height:30px}.ppbtn--sm svg{width:16px;height:16px}.ppbtn--sm:hover{color:#fff;background:#ffffff1a;transform:none}.hud[data-v-58e9bcdd]{align-items:center;gap:clamp(12px,5cqw,20px);display:flex}.hud__play-wrap[data-v-58e9bcdd]{display:flex;position:relative}.hud__buf-spinner[data-v-58e9bcdd]{margin-top:8px;position:absolute;top:100%;left:calc(50% - 7px)}.hud__spacer[data-v-58e9bcdd]{flex-shrink:0;width:clamp(36px,14cqw,44px);height:clamp(36px,14cqw,44px)}.hud__btn[data-v-58e9bcdd]{background:var(--mlv-btn-bg,#ffffff1a);backdrop-filter:blur(12px);will-change:backdrop-filter;width:clamp(36px,14cqw,44px);height:clamp(36px,14cqw,44px);color:var(--mlv-btn-color,#fff);cursor:pointer;border:1px solid #ffffff2e;border-radius:50%;justify-content:center;align-items:center;transition:background .2s,transform .15s;display:flex}.hud__btn[data-v-58e9bcdd] svg{width:clamp(16px,6cqw,18px);height:clamp(16px,6cqw,18px)}.hud__btn[data-v-58e9bcdd]:hover{background:var(--mlv-btn-bg,#fff3);filter:brightness(1.12);transform:scale(1.08)}.hud__btn--active[data-v-58e9bcdd]{border-color:var(--mlv-accent,#3b82f6);background:color-mix(in srgb, var(--mlv-accent,#3b82f6) 30%, var(--mlv-btn-bg,#ffffff1a));color:var(--mlv-btn-color,#fff)}.hud__btn--active[data-v-58e9bcdd]:hover{background:color-mix(in srgb, var(--mlv-accent,#3b82f6) 45%, var(--mlv-btn-bg,#fff3))}.controls__btn{color:#ffffffbf;cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;transition:background .15s,color .15s;display:flex}.controls__inner:has(.controls__more-body){flex-direction:column;max-width:100%;height:100%;display:flex;overflow:auto}.controls__btn svg{width:16px;height:16px}.controls__btn:hover{color:#fff;background:#ffffff1a}.controls--compact .controls__seek,.controls--compact .mlv-scrubber-wrap,.controls--compact .mlv-time-display__total,.controls--compact .controls__btn--pip,.controls--compact .controls__btn--next,.controls--compact .controls__btn--volume{display:none}.controls__seek{-webkit-appearance:none;appearance:none;cursor:pointer;box-sizing:border-box;background:padding-box content-box;background-image:linear-gradient(to right, var(--mlv-accent,#3b82f6) 0%, var(--mlv-accent,#3b82f6) var(--p), #ffffff4d var(--p), #ffffff4d var(--b), #ffffff1a var(--b), #ffffff1a 100%);outline:none;width:100%;height:20px;padding:8px 0}.controls__seek::-webkit-slider-runnable-track{background:0 0;height:4px}.controls__seek::-webkit-slider-thumb{-webkit-appearance:none;background:var(--mlv-accent,#3b82f6);width:14px;height:14px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mlv-accent,#3b82f6) 30%, transparent);cursor:pointer;border-radius:50%;margin-top:-5px;transition:transform .15s}.controls__seek:hover::-webkit-slider-thumb{transform:scale(1.25)}.controls__seek::-moz-range-track{background:#ffffff1a;height:4px}.controls__seek::-moz-range-progress{background:var(--mlv-accent,#3b82f6);height:4px}.controls__seek::-moz-range-thumb{background:var(--mlv-accent,#3b82f6);width:14px;height:14px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mlv-accent,#3b82f6) 30%, transparent);cursor:pointer;border:none;border-radius:50%}.controls__vol-slider{-webkit-appearance:none;appearance:none;cursor:pointer;background:linear-gradient(to right, #fff 0%, #fff var(--v), #ffffff26 var(--v), #ffffff26 100%);outline:none;flex:1;height:5px;transition:height .15s}.controls__vol-slider:hover{height:7px}.controls__vol-slider:focus-visible{outline-offset:2px;outline:2px solid #fff}.controls__vol-slider::-webkit-slider-runnable-track{background:0 0;height:5px}.controls__vol-slider::-webkit-slider-thumb{-webkit-appearance:none;cursor:pointer;background:#fff;border-radius:50%;width:16px;height:16px;margin-top:-5.5px;transition:transform .15s;box-shadow:0 0 0 3px #fff3}.controls__vol-slider:hover::-webkit-slider-thumb{transform:scale(1.2)}.controls__vol-slider::-moz-range-track{background:#ffffff26;height:5px}.controls__vol-slider::-moz-range-progress{background:#fff;height:5px}.controls__vol-slider::-moz-range-thumb{cursor:pointer;background:#fff;border:none;border-radius:50%;width:16px;height:16px;box-shadow:0 0 0 3px #fff3}.mlv-scrubber-wrap[data-v-00e26db0]{width:100%;position:relative}:where(.mlv-scrubber[data-v-00e26db0]){cursor:pointer;accent-color:currentColor;width:100%}:where(.mlv-scrubber[data-v-00e26db0]):focus-visible{outline-offset:0!important;outline:2px solid #fff!important}.mlv-scrubber__preview[data-v-00e26db0]{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-time-display[data-v-d2dbce42]){font-variant-numeric:tabular-nums;align-items:center;gap:.35rem;display:inline-flex}:where(.mlv-time-display__dot[data-v-d2dbce42]){background:currentColor;border-radius:50%;width:6px;height:6px}.mlv-volume-wrap[data-v-512c68f4]{align-items:center;gap:.75rem;width:100%;display:flex}:where(.mlv-volume-slider[data-v-512c68f4]){cursor:pointer;accent-color:currentColor;flex:1}:where(.mlv-volume-slider[data-v-512c68f4]):focus-visible{outline-offset:2px;outline:2px solid #fff}:where(.mlv-volume-pct[data-v-512c68f4]){font-variant-numeric:tabular-nums;text-align:right;min-width:2rem}.controls__vol-header[data-v-7fa1bc26]{align-items:center;gap:4px;display:flex}.controls__vol-label[data-v-7fa1bc26]{color:#ffffffe6;flex:1;padding:0 4px;font-size:.8rem;font-weight:600}.controls__vol-body[data-v-7fa1bc26]{align-items:center;gap:12px;padding:6px 0 4px;display:flex}.controls__vol-pct[data-v-7fa1bc26]{font-variant-numeric:tabular-nums;color:#fff9;text-align:right;min-width:32px;font-size:.75rem;font-weight:600}.controls__more-row[data-v-73312b97]{color:#ffffffd9;cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:space-between;align-items:center;width:100%;padding:8px 4px;font-size:.8rem;font-weight:500;transition:background .15s;display:flex}.controls__more-row[data-v-73312b97]:hover{background:#ffffff14}.controls__more-row-label[data-v-73312b97]{align-items:center;gap:8px;display:flex}.controls__more-row-icon[data-v-73312b97],.controls__more-row-icon[data-v-73312b97] svg{flex-shrink:0;width:16px;height:16px}.controls__more-value[data-v-73312b97]{font-variant-numeric:tabular-nums;color:#ffffff80;font-size:.7rem;font-weight:600}.controls__more-row--active .controls__more-value[data-v-73312b97]{color:var(--mlv-accent,#3b82f6)}.controls__more-header[data-v-23430f8a]{flex-shrink:0;align-items:center;gap:4px;display:flex}.controls__more-label[data-v-23430f8a]{color:#ffffffe6;flex:1;padding:0 4px;font-size:.8rem;font-weight:600}.controls__more-body[data-v-23430f8a]{flex-direction:column;min-height:0;padding:2px 0;display:flex;overflow-y:auto}.controls[data-v-330d8c86]{width:var(--mlv-controls-width,min(450px, calc(100% - 32px)));-webkit-backdrop-filter:blur(20px);background:#0a0a0e;border:1px solid #ffffff1a;border-radius:18px;flex-direction:column;gap:10px;max-height:100%;padding:14px 16px 12px;display:flex;position:relative;overflow:hidden;box-shadow:0 8px 32px #00000080}.controls--fs[data-v-330d8c86]{width:100%}.controls__close[data-v-330d8c86]{clip:rect(0, 0, 0, 0);white-space:nowrap;color:#fff;cursor:pointer;background:0 0;border:0;width:1px;height:1px;padding:0;font-size:.75rem;position:absolute;bottom:4px;left:50%;overflow:hidden;transform:translate(-50%)}.controls__close[data-v-330d8c86]:focus{clip:auto;white-space:normal;outline-offset:2px;background:#ffffff1a;border-radius:6px;outline:2px solid #fff;width:auto;height:auto;padding:6px 10px;overflow:visible}.controls__row[data-v-330d8c86]{align-items:center;gap:4px;display:flex}.controls__time-display[data-v-330d8c86]{color:#fff9;letter-spacing:.02em;flex:1;padding:0 4px;font-size:.7rem;font-weight:500}.controls__time-display.mlv-time-display--live[data-v-330d8c86]{letter-spacing:.04em;text-transform:uppercase;color:#f87171;font-weight:700}.controls__play-wrap[data-v-330d8c86]{flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;display:flex}.controls__btn--active[data-v-330d8c86],.controls__btn--pip.mlv-pip-button--active[data-v-330d8c86]{color:var(--mlv-accent,#3b82f6)}.controls__btn--active[data-v-330d8c86]:hover,.controls__btn--pip.mlv-pip-button--active[data-v-330d8c86]:hover{color:var(--mlv-accent,#60a5fa)}.controls__fs-wrap[data-v-330d8c86]{flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;display:flex}.overlay__spinner[data-v-c795dad9]{z-index:5;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.fade-enter-active[data-v-c795dad9],.fade-leave-active[data-v-c795dad9]{transition:opacity .25s}.fade-enter-from[data-v-c795dad9],.fade-leave-to[data-v-c795dad9]{opacity:0}.overlay__error[data-v-c795dad9]{z-index:6;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding:1.5rem;display:flex;position:absolute;inset:0}.overlay__error p[data-v-c795dad9]{color:#ffffffb3;text-align:center;max-width:260px;font-size:.875rem;line-height:1.5}.overlay__retry[data-v-c795dad9]{pointer-events:auto;color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff40;border-radius:8px;padding:.4rem 1rem;font-size:.8rem;font-weight:600;transition:background .15s}.overlay__retry[data-v-c795dad9]:hover{background:#fff3}.overlay__reveal[data-v-c795dad9]{z-index:10;clip:rect(0, 0, 0, 0);white-space:nowrap;color:#fff;cursor:pointer;background:#000000d9;border:0;border-radius:6px;width:1px;height:1px;margin:-1px;padding:0;font-size:.8rem;position:absolute;top:8px;left:8px;overflow:hidden}.overlay__reveal[data-v-c795dad9]:focus{clip:auto;white-space:normal;outline-offset:2px;outline:2px solid #fff;width:auto;height:auto;margin:0;padding:.4rem .75rem;overflow:visible}.overlay__hud[data-v-c795dad9]{z-index:4;opacity:0;pointer-events:none;justify-content:center;align-items:center;transition:opacity .3s;display:flex;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.overlay__hud--visible[data-v-c795dad9]{opacity:1;pointer-events:all}.overlay__hud[data-v-c795dad9]:has(~.overlay__popup:not(.overlay__popup--fs)){opacity:0!important;pointer-events:none!important}.overlay__popup[data-v-c795dad9]{z-index:5;align-items:var(--mlv-popup-align,center);pointer-events:none;justify-content:center;padding:16px;display:flex;position:absolute;inset:0}.overlay__popup[data-v-c795dad9] .controls{pointer-events:auto}.overlay__popup--fs[data-v-c795dad9]{align-items:flex-end}.popup-enter-active[data-v-c795dad9],.popup-leave-active[data-v-c795dad9]{transition:opacity .2s,transform .2s}.popup-enter-from[data-v-c795dad9],.popup-leave-to[data-v-c795dad9]{opacity:0;transform:scale(.95)}.ad-overlay[data-v-feb17dae]{z-index:21;pointer-events:none;position:absolute;inset:0}.ad-overlay__bar[data-v-feb17dae]{align-items:center;gap:6px;display:flex;position:absolute;bottom:10px;left:10px}.ad-overlay__badge[data-v-feb17dae]{color:#fff;text-transform:uppercase;letter-spacing:.06em;background:#0009;border-radius:4px;align-items:center;gap:6px;padding:3px 8px;font-size:.65rem;font-weight:700;display:flex}.ad-overlay__countdown[data-v-feb17dae]{font-variant-numeric:tabular-nums;text-transform:none;letter-spacing:.02em;opacity:.8;font-weight:500}.ad-overlay__btn[data-v-feb17dae]{color:#fff;cursor:pointer;pointer-events:auto;background:#0009;border:none;border-radius:4px;justify-content:center;align-items:center;padding:3px;transition:background .15s;display:flex}.ad-overlay__btn[data-v-feb17dae]:hover{background:#000c}.ad-overlay__btn[data-v-feb17dae] svg{width:11px;height:11px}.player-wrapper[data-v-b25b3a73]{display:block}.player-wrapper[data-v-3fc2947d]{display:contents}.pinned-controls__dismiss[data-v-2d2ea6e1],.pinned-controls__scroll-to[data-v-2d2ea6e1]{z-index:25;backdrop-filter:blur(6px);color:#fff;cursor:pointer;background:#0009;border:none;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;transition:all .15s;display:flex;position:absolute;top:.4rem}.pinned-controls__dismiss[data-v-2d2ea6e1]:hover,.pinned-controls__scroll-to[data-v-2d2ea6e1]:hover{background:#000000d9}.pinned-controls__dismiss[data-v-2d2ea6e1] svg,.pinned-controls__scroll-to[data-v-2d2ea6e1] svg{width:14px;height:14px}.pinned-controls__dismiss[data-v-2d2ea6e1]{right:.4rem}.pinned-controls__scroll-to[data-v-2d2ea6e1]{left:.4rem}.stage--pin-bottom-right,.stage--pin-bottom-left,.stage--pin-top-right,.stage--pin-top-left,.player--pin-bottom-right,.player--pin-bottom-left,.player--pin-top-right,.player--pin-top-left{border-radius:var(--mlv-radius,12px);transition:transform .18s}.stage--pin-bottom-right,.player--pin-bottom-right{bottom:1.25rem;right:1.25rem}.stage--pin-bottom-left,.player--pin-bottom-left{bottom:1.25rem;left:1.25rem}.stage--pin-top-right,.player--pin-top-right{top:1.25rem;right:1.25rem}.stage--pin-top-left,.player--pin-top-left{top:1.25rem;left:1.25rem}.stage--pin-bottom-right.stage--tucked,.stage--pin-top-right.stage--tucked,.player--pin-bottom-right.player--tucked,.player--pin-top-right.player--tucked{transform:translateX(calc(100% - var(--mlv-stage-tuck,32px)))}.stage--pin-bottom-left.stage--tucked,.stage--pin-top-left.stage--tucked,.player--pin-bottom-left.player--tucked,.player--pin-top-left.player--tucked{transform:translateX(calc(-100% + var(--mlv-stage-tuck,32px)))}.player[data-v-6cbcb413]{width:100%;max-width:var(--mlv-max-width,800px);user-select:none;-webkit-tap-highlight-color:transparent;margin:0 auto;position:relative}.player--pinned[data-v-6cbcb413]{z-index:100;width:70dvw;max-width:360px;margin:0;transition:transform .18s;position:fixed;box-shadow:0 8px 32px #0009}@media (width<=740px){.player--pinned[data-v-6cbcb413]{max-width:300px}}[data-mlv-player][data-v-6cbcb413]{position:absolute;inset:0}.player__shell[data-v-6cbcb413]{border-radius:var(--mlv-radius,12px);cursor:pointer;background:#000;position:relative;overflow:hidden;container:player-shell/inline-size}.mlv-video--hidden[data-v-6cbcb413]{opacity:0}.overlay__tap-capture[data-v-6cbcb413]{z-index:2;position:absolute;inset:0}.mlv-youtube .overlay__tap-capture[data-v-6cbcb413]{clip-path:polygon(0 0,100% 0,100% 100%,64px 100%,64px calc(100% - 64px),0 calc(100% - 64px))}.mlv-dailymotion .overlay__tap-capture[data-v-6cbcb413]{clip-path:polygon(0 64px,0 100%,100% 100%,100% 0,64px 0,64px 64px)}.player__shell--portrait[data-v-6cbcb413]{width:auto;max-width:100%;max-height:75dvh;margin:0 auto}.player__custom-hud[data-v-6cbcb413]{z-index:3;pointer-events:none;position:absolute;inset:0}.player__custom-hud[data-v-6cbcb413]>*{pointer-events:auto}.player__native-play[data-v-6cbcb413]{z-index:3;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.player__native-play[data-v-6cbcb413]>*{pointer-events:auto}.player__shell[data-v-6cbcb413]:fullscreen{border-radius:0;width:100vw;height:100dvh}.player__shell:fullscreen .mlv-video[data-v-6cbcb413],.player__shell:fullscreen [data-mlv-player][data-v-6cbcb413]{width:100%!important;height:100%!important}.stage-wrapper[data-v-b2a7f3d1]{width:100%;max-width:var(--mlv-max-width,800px);margin:0 auto}.stage[data-v-b2a7f3d1]{width:100%}.stage--minified[data-v-b2a7f3d1]{z-index:100;margin:0;position:fixed;overflow:hidden;box-shadow:0 8px 32px #0009}.stage--pin-bottom-right[data-v-b2a7f3d1],.stage--pin-bottom-left[data-v-b2a7f3d1],.stage--pin-top-right[data-v-b2a7f3d1],.stage--pin-top-left[data-v-b2a7f3d1]{width:70dvw;max-width:360px;@media (width<=740px){max-width:300px}}.stage--pin-full-width[data-v-b2a7f3d1]{width:100%;max-width:100%;box-shadow:none;border-radius:0;top:0;left:0;right:0}.stage__idle[data-v-b2a7f3d1]{border-radius:var(--mlv-radius,12px);cursor:pointer;background:#111;justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.stage__idle-poster[data-v-b2a7f3d1]{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.stage__idle-scrim[data-v-b2a7f3d1]{background:#00000073;transition:background .15s;position:absolute;inset:0}.stage__idle:hover .stage__idle-scrim[data-v-b2a7f3d1]{background:#0000004d}.stage__idle-body[data-v-b2a7f3d1]{text-align:center;flex-direction:column;align-items:center;gap:.75rem;padding:1rem;display:flex;position:relative}.stage__idle-btn[data-v-b2a7f3d1]{backdrop-filter:blur(4px);color:#fff;background:#0009;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;transition:transform .15s,background .15s;display:flex}.stage__idle:hover .stage__idle-btn[data-v-b2a7f3d1]{background:#000c;transform:scale(1.1)}.stage__idle-btn[data-v-b2a7f3d1] svg{width:32px;height:32px}.stage__idle-title[data-v-b2a7f3d1]{color:#f1f5f9;text-shadow:0 1px 4px #000c;font-size:1rem;font-weight:600}.stage__idle-empty[data-v-b2a7f3d1]{color:#64748b;font-size:.95rem}.placeholder[data-v-a7f74cef]{width:100%;max-width:var(--mlv-max-width,800px);margin:0 auto}.placeholder__shell[data-v-a7f74cef]{border-radius:var(--mlv-radius,12px);cursor:pointer;background:#111;position:relative;overflow:hidden}.placeholder__shell--portrait[data-v-a7f74cef]{width:auto;max-height:75dvh;margin:0 auto}.placeholder__poster[data-v-a7f74cef]{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.placeholder__scrim[data-v-a7f74cef]{background:#00000059;transition:background .15s;position:absolute;inset:0}.placeholder__shell:hover .placeholder__scrim[data-v-a7f74cef]{background:#00000026}.placeholder__btn-wrap[data-v-a7f74cef]{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.placeholder__btn-wrap[data-v-a7f74cef]>*{pointer-events:auto}.placeholder__footer[data-v-a7f74cef]{pointer-events:none;background:linear-gradient(#0000 0%,#000c 100%);padding:1.5rem .75rem .6rem;position:absolute;bottom:0;left:0;right:0}.placeholder__title[data-v-a7f74cef]{color:#f1f5f9;white-space:nowrap;text-overflow:ellipsis;text-shadow:0 1px 3px #0009;font-size:.8rem;font-weight:600;overflow:hidden}.mlv-hide-marker[data-v-8afc6c98]{width:100%;min-height:1px}
|