nixamp 0.47.0 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/broadcast.js +3 -1
- package/dist/guide-vods.d.ts +89 -0
- package/dist/guide-vods.js +262 -0
- package/dist/library-cli.js +24 -0
- package/dist/library-routes.d.ts +2 -0
- package/dist/library-routes.js +7 -2
- package/dist/library-usage.d.ts +1 -1
- package/dist/library-usage.js +6 -1
- package/dist/playlist-input.js +4 -1
- package/dist/server.d.ts +6 -0
- package/dist/server.js +127 -38
- package/dist/station-guide.d.ts +2 -2
- package/dist/station-guide.js +6 -4
- package/package.json +1 -1
- package/src/broadcast.ts +3 -1
- package/src/guide-vods.ts +302 -0
- package/src/library-cli.ts +19 -0
- package/src/library-routes.ts +9 -2
- package/src/library-usage.ts +6 -1
- package/src/playlist-input.ts +4 -1
- package/src/server.ts +140 -43
- package/src/station-guide.ts +8 -6
- package/web/dist/assets/{ar-BOy98BLI.js → ar-ropwGSSV.js} +1 -1
- package/web/dist/assets/chunk-Q2XQMA4B-CDsJ8fBU.js +1 -0
- package/web/dist/assets/{cs-BbbskosY.js → cs-Bi7uRYjd.js} +1 -1
- package/web/dist/assets/{da-DHrF2OuF.js → da-B8OELPch.js} +1 -1
- package/web/dist/assets/{de-Dx2W0spi.js → de-DJOTeXET.js} +1 -1
- package/web/dist/assets/{es-qnp4IRsp.js → es-BIupzuzS.js} +1 -1
- package/web/dist/assets/{fi-CfPSgEs-.js → fi-A6MoWkzZ.js} +1 -1
- package/web/dist/assets/{fr-LKBu7Tgy.js → fr-DerIDIwl.js} +1 -1
- package/web/dist/assets/{hi-BzyRQPpa.js → hi-CyUtRBH4.js} +1 -1
- package/web/dist/assets/{hls-OR5FY6YP-jwHO4SPh.js → hls-OR5FY6YP-bdUZBB11.js} +1 -1
- package/web/dist/assets/{hu-AmxPDNs7.js → hu-DD1vrIhY.js} +1 -1
- package/web/dist/assets/{id-CxY-xwNQ.js → id-C6OAMzii.js} +1 -1
- package/web/dist/assets/{it-eoKuPzEe.js → it-Xy86vmU7.js} +1 -1
- package/web/dist/assets/main-CuG8-ADK.js +22 -0
- package/web/dist/assets/{mpegts-7CN75AI2-BtVIb2A1.js → mpegts-7CN75AI2-iUctLWip.js} +1 -1
- package/web/dist/assets/{mpegts-arZIPCfq.js → mpegts-DeEBZUXP.js} +1 -1
- package/web/dist/assets/{nl-Ceg4F0rC.js → nl-4Q-K2Jf1.js} +1 -1
- package/web/dist/assets/{radio-Bmt6N6Tf.js → radio-DI0H8flN.js} +1 -1
- package/web/dist/assets/{ru-BRNZUbKs.js → ru-CpxwOhC4.js} +1 -1
- package/web/dist/assets/{station-BwDP2cuf.css → station-BKmoJ0Sk.css} +1 -1
- package/web/dist/assets/{station-BhCxDaWb.js → station-X8pffqCW.js} +1 -1
- package/web/dist/assets/{sv-k-A6hu8-.js → sv-aRvu7MWa.js} +1 -1
- package/web/dist/assets/{uk-C9owZ3Lc.js → uk-BCwwfngg.js} +1 -1
- package/web/dist/assets/{vi-CtcFEtmC.js → vi-tvWPiAH_.js} +1 -1
- package/web/dist/assets/vod-CdfPMa1u.js +1 -0
- package/web/dist/assets/{watch-BxAnF-yA.js → watch-hdfnhm3C.js} +1 -1
- package/web/dist/assets/{zh-DQrNE8sv.js → zh-Bp2aLEyX.js} +1 -1
- package/web/dist/index.html +3 -3
- package/web/dist/radio.html +2 -2
- package/web/dist/station.html +3 -3
- package/web/dist/sw.js +29 -28
- package/web/dist/vod.html +39 -0
- package/web/dist/watch.html +3 -3
- package/web/dist/assets/chunk-Q2XQMA4B-xxJBbNwd.js +0 -1
- package/web/dist/assets/main-DYATKV1O.js +0 -22
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
|
6
|
+
<title>On demand · nixamp</title>
|
|
7
|
+
<meta name="theme-color" content="#080c09" />
|
|
8
|
+
<link rel="icon" href="/favicon.png" type="image/png" sizes="64x64" />
|
|
9
|
+
<script type="module" crossorigin src="/assets/vod-CdfPMa1u.js"></script>
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/chunk-Q2XQMA4B-CDsJ8fBU.js">
|
|
11
|
+
<link rel="stylesheet" crossorigin href="/assets/chunk-Q2XQMA4B-BBzoLLVb.css">
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/station-BKmoJ0Sk.css">
|
|
13
|
+
</head>
|
|
14
|
+
<body>
|
|
15
|
+
<main class="station-app">
|
|
16
|
+
<div id="one" class="station-card" hidden>
|
|
17
|
+
<span id="state" class="station-chip unavailable" role="status">Loading</span>
|
|
18
|
+
<div id="stage" class="station-stage"></div>
|
|
19
|
+
<h1 id="name"> </h1>
|
|
20
|
+
<div class="station-now"><div id="by" class="station-by"></div><div id="length" class="station-by"></div></div>
|
|
21
|
+
<p id="note" class="station-about" hidden></p>
|
|
22
|
+
<p class="vod-share">
|
|
23
|
+
<input id="link" type="text" readonly aria-label="Link to this video" />
|
|
24
|
+
<button id="copy" type="button">Copy link</button>
|
|
25
|
+
<button id="share" type="button" hidden>Share</button>
|
|
26
|
+
</p>
|
|
27
|
+
<p class="station-small"><a id="raw" href="#">Open in another player</a> · <a id="nixamp" href="https://nixamp.com">Open in nixamp</a></p>
|
|
28
|
+
</div>
|
|
29
|
+
<section id="all" hidden>
|
|
30
|
+
<h1>On demand</h1>
|
|
31
|
+
<p class="station-about">Published files: play from the start, seek anywhere, share the link.</p>
|
|
32
|
+
<ul id="list" class="vod-list"></ul>
|
|
33
|
+
<p id="none" class="station-small" hidden>Nothing has been published here yet.</p>
|
|
34
|
+
</section>
|
|
35
|
+
<p class="station-small"><a href="/vod">All videos</a> · <a href="/">On the air now</a> · Played by <a href="https://nixamp.com">nixamp</a>.</p>
|
|
36
|
+
<div id="announce" class="sr-only" aria-live="assertive"></div>
|
|
37
|
+
</main>
|
|
38
|
+
</body>
|
|
39
|
+
</html>
|
package/web/dist/watch.html
CHANGED
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
<meta name="robots" content="noindex" />
|
|
8
8
|
<meta name="theme-color" content="#080c09" />
|
|
9
9
|
<link rel="icon" href="/favicon.png" type="image/png" sizes="64x64" />
|
|
10
|
-
<script type="module" crossorigin src="/assets/watch-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/chunk-Q2XQMA4B-
|
|
10
|
+
<script type="module" crossorigin src="/assets/watch-hdfnhm3C.js"></script>
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/chunk-Q2XQMA4B-CDsJ8fBU.js">
|
|
12
12
|
<link rel="stylesheet" crossorigin href="/assets/chunk-Q2XQMA4B-BBzoLLVb.css">
|
|
13
|
-
<link rel="stylesheet" crossorigin href="/assets/station-
|
|
13
|
+
<link rel="stylesheet" crossorigin href="/assets/station-BKmoJ0Sk.css">
|
|
14
14
|
</head>
|
|
15
15
|
<body>
|
|
16
16
|
<main class="station-app">
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=`modulepreload`,t=function(e){return`/`+e},n={},r=function(r,i,a){let o=Promise.resolve();if(i&&i.length>0){let r=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function u(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}o=l(i.map(i=>{if(i=t(i,a),i=u(i),i in n)return;n[i]=!0;let o=i.endsWith(`.css`);for(let e=r.length-1;e>=0;e--){let t=r[e];if(t.href===i&&(!o||t.rel===`stylesheet`))return}let s=document.createElement(`link`);if(s.rel=o?`stylesheet`:e,o||(s.as=`script`),s.crossOrigin=``,s.href=i,c&&s.setAttribute(`nonce`,c),document.head.appendChild(s),o)return new Promise((e,t)=>{s.addEventListener(`load`,e),s.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${i}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(e=>{for(let t of e||[])t.status===`rejected`&&s(t.reason);return r().catch(s)})};function i(e,t){if(!e||e.length===0||!Number.isFinite(t)||t<=0)return[];let n=new Set,r=e.filter(e=>!!e&&typeof e.title==`string`).map(e=>({start:Math.floor(e.start),title:e.title.trim()})).filter(e=>Number.isFinite(e.start)&&e.start>=0).filter(e=>e.start<t).filter(e=>e.title!==``).sort((e,t)=>e.start-t.start).filter(e=>!n.has(e.start)&&(n.add(e.start),!0));return r.map((e,n)=>({...e,end:r[n+1]?.start??t,position:e.start/t}))}function a(e,t){if(!Number.isFinite(t))return null;let n=null;for(let r of e)if(r.start<=t)n=r;else break;return n}var o=`profullstack.player.prefs`,s=`profullstack.player.positions`,c=60,l={volume:1,muted:!1,rate:1};function u(e){if(e!==void 0)return e;try{return typeof window>`u`?null:window.localStorage}catch{return null}}function d(e,t){if(!e)return null;try{let n=e.getItem(t);return n===null?null:JSON.parse(n)}catch{return null}}function f(e,t,n){if(e)try{e.setItem(t,JSON.stringify(n))}catch{}}function p(e,t,n,r){return typeof e==`number`&&Number.isFinite(e)?Math.min(n,Math.max(t,e)):r}function m(e){let t=d(u(e),o);return t?{volume:p(t.volume,0,1,l.volume),muted:typeof t.muted==`boolean`?t.muted:l.muted,rate:p(t.rate,.25,4,l.rate)}:{...l}}function h(e,t){f(u(t),o,e)}function g(e){let t=d(e,s);if(!t||typeof t!=`object`)return{};let n={};for(let[e,r]of Object.entries(t)){if(!r||typeof r!=`object`)continue;let t=r;typeof t.t==`number`&&Number.isFinite(t.t)&&(n[e]={t:t.t,d:typeof t.d==`number`&&Number.isFinite(t.d)?t.d:0,at:typeof t.at==`number`&&Number.isFinite(t.at)?t.at:0})}return n}function ee(e,t){return g(u(t))[e]??null}function _(e,t,n,r=Date.now){let i=u(n);if(!i)return;let a=g(i);a[e]={t:t.t,d:t.d,at:r()};let o=Object.entries(a).sort(([,e],[,t])=>t.at-e.at).slice(0,c);f(i,s,Object.fromEntries(o))}function v(e,t){let n=u(t);if(!n)return;let r=g(n);if(!(e in r))return;let i=Object.entries(r).filter(([t])=>t!==e);f(n,s,Object.fromEntries(i))}var y=15,b=20;function x(e,t){return!e||!Number.isFinite(t)||t<=0||Number.isFinite(e.d)&&e.d>0&&Math.abs(e.d-t)>1?!1:e.t>=y&&e.t<=t-b}function S(e){if(!Number.isFinite(e)||e<0)return`--:--`;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${String(n)}:${a(r)}:${a(i)}`:`${String(r)}:${a(i)}`}var C=[[/\bAFT[A-Z0-9]+\b/i,`firetv`],[/\bKF[A-Z]+\b/,`silk`],[/\bSilk\b/i,`silk`],[/\bAndroid TV\b/i,`androidtv`],[/\bGoogleTV\b/i,`googletv`],[/\bTizen\b/i,`tizen`],[/\bWeb0S\b/i,`webos`],[/\bRoku\b/i,`roku`],[/AppleTV/i,`appletv`],[/\bCrKey\b/i,`chromecast`],[/\bSMART-TV\b/i,`smarttv`],[/\bSmartTV\b/i,`smarttv`]];function w(e){if(!e)return null;for(let[t,n]of C)if(t.test(e))return n;return null}function T(e){return w(e)!==null}function te(e){return e?{hideAfterMs:6e3,seekStep:10,alwaysShowFocus:!0}:{hideAfterMs:2800,seekStep:5,alwaysShowFocus:!1}}var E=[[/\.m3u8$/i,`hls`],[/\.(ts|mts|m2ts|mpegts)$/i,`mpegts`],[/\.(mp3|m4a|aac|oga|ogg|opus|wav|flac)$/i,`audio`],[/\.(mp4|m4v|webm|mov|ogv)$/i,`mp4`]],D=[[/mpegurl/i,`hls`],[/mp2t|mpeg-?ts/i,`mpegts`],[/^audio\//i,`audio`],[/^video\//i,`mp4`]];function O(e){if(e.kind)return e.kind;if(e.mimeType){for(let[t,n]of D)if(t.test(e.mimeType))return n}let t=ne(e.src);for(let[e,n]of E)if(e.test(t))return n;return`unknown`}function ne(e){try{return new URL(e,`https://placeholder.invalid`).pathname}catch{return e.split(/[?#]/)[0]??e}}function k(e=globalThis,t=null){let n=e.MediaSource!==void 0,r=!1;try{let e=t??(typeof document>`u`?null:document.createElement(`video`));r=e?e.canPlayType(`application/vnd.apple.mpegurl`)!==``||e.canPlayType(`application/x-mpegURL`)!==``:!1}catch{r=!1}return{mediaSource:n,nativeHls:r}}function re(e,t){let n=O(e);switch(n){case`hls`:return t.mediaSource?{engine:`hls`,kind:n}:t.nativeHls?{engine:`native`,kind:n}:{engine:`native`,kind:n,unplayable:`This browser cannot play HLS streams.`};case`mpegts`:return t.mediaSource?{engine:`mpegts`,kind:n}:{engine:`mpegts`,kind:n,unplayable:`This browser cannot play transport streams.`};default:return{engine:`native`,kind:n}}}function ie(e){return e===`audio`}async function ae(e,t){let n=t.capabilities??k(),i=re({src:t.src,...t.kind?{kind:t.kind}:{},...t.mimeType?{mimeType:t.mimeType}:{}},n),a=()=>void 0,o={media:e,src:t.src,isTv:t.isTv??!1,live:t.live??i.kind===`mpegts`,onError:t.onError??a,onNotice:t.onNotice??a,...t.headers?{headers:t.headers}:{},...t.onReady?{onReady:t.onReady}:{}};if(i.unplayable)return t.onError?.(i.unplayable),{destroy:a,engine:i.engine,kind:i.kind,levels:()=>[],unplayable:i.unplayable};let s,c=t.engines?.[i.engine];if(c)s=await c(o);else if(i.engine===`hls`){let{createHlsEngine:e}=await r(async()=>{let{createHlsEngine:e}=await import(`./hls-OR5FY6YP-jwHO4SPh.js`);return{createHlsEngine:e}},[]);s=await e(o)}else if(i.engine===`mpegts`){let{createMpegtsEngine:e}=await r(async()=>{let{createMpegtsEngine:e}=await import(`./mpegts-7CN75AI2-BtVIb2A1.js`);return{createMpegtsEngine:e}},[]);s=await e(o,{withCredentials:t.withCredentials??!1,unplayableAdvice:t.unplayableAdvice??``})}else{let{createNativeEngine:e}=await r(async()=>{let{createNativeEngine:e}=await import(`./native-C7JTKWJH-BUyIoj0P.js`);return{createNativeEngine:e}},[]);s=await e(o)}return{destroy:()=>{s.destroy()},engine:i.engine,kind:i.kind,levels:s.levels,...s.setLevel?{setLevel:s.setLevel}:{},...s.currentLevel?{currentLevel:s.currentLevel}:{}}}var A=300,oe=120,j=.4;function M(e,t,n,r){return n<=0||e===t?(r(t),Promise.resolve()):new Promise(i=>{let a=Date.now(),o=n*1e3,s=()=>{let n=Math.min(1,(Date.now()-a)/o);r(e+(t-e)*n),n<1?setTimeout(s,16):i()};s()})}var N=e=>Math.min(1,Math.max(0,e));function P(e){return e.volume>0?e.volume:1}function F(e){return e&&e.tagName===`VIDEO`?e:null}function I(e){return e?typeof document<`u`&&document.pictureInPictureElement===e||e.webkitPresentationMode===`picture-in-picture`:!1}async function se(e){let t=e,n=e.requestPictureInPicture;if(typeof n==`function`){await n.call(e);return}if(typeof t.webkitSetPresentationMode==`function`){t.webkitSetPresentationMode(`picture-in-picture`);return}throw Error(`picture-in-picture is not available here`)}var ce=/\.(mp3|m4a|aac|ogg|oga|opus|wav|flac)(\?|#|$)/i;function L(e){let t=typeof e==`string`?{url:e}:e;return{url:t.url,kind:t.kind??(ce.test(t.url)?`audio`:`video`)}}function le(e,t,n,r=()=>Date.now()){let i=Math.max(5,n.everySeconds??A)*1e3,a=Math.max(5,n.maxSeconds??oe)*1e3,o=Math.max(0,n.fadeSeconds??j),s=n.revealStage!==!1;function c(){if(!s||typeof window>`u`)return;let t=e.getBoundingClientRect();if(Math.min(t.bottom,window.innerHeight)-Math.max(t.top,0)>=t.height*.6)return;let n=!window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches;e.scrollIntoView({block:`center`,behavior:n?`smooth`:`auto`})}async function l(e){if(e)try{await se(e)}catch(e){n.onError?.(e)}}let u=0,d=null,f=0,p=!1,m=!1,h=!n.preroll,g=document.createElement(`div`);g.className=`pux-ad`,g.hidden=!0,Object.assign(g.style,{position:`absolute`,inset:`0`,zIndex:`3`,display:`grid`,placeItems:`center`,background:`#000`});let ee=getComputedStyle(e).position;(!ee||ee===`static`)&&(e.style.position=`relative`);let _=document.createElement(`video`);_.className=`pux-ad__video`,_.playsInline=!0,_.preload=`auto`,Object.assign(_.style,{width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`});let v=document.createElement(`audio`);v.className=`pux-ad__audio`,v.preload=`auto`;let y=_;for(let e of[_,v])e.muted=t.muted,e.volume=P(t);let b=document.createElement(`span`);b.className=`pux-ad__badge`,b.textContent=`Ad`,Object.assign(b.style,{position:`absolute`,top:`0.75rem`,left:`0.75rem`,padding:`0.15rem 0.5rem`,borderRadius:`0.25rem`,background:`rgb(0 0 0 / 0.65)`,color:`#fff`,font:`600 0.75rem/1.4 system-ui, sans-serif`,letterSpacing:`0.04em`,textTransform:`uppercase`});let x=document.createElement(`button`);x.type=`button`,x.className=`pux-ad__skip`,x.hidden=!0,Object.assign(x.style,{position:`absolute`,right:`1rem`,bottom:`1rem`,padding:`0.5rem 0.9rem`,border:`1px solid rgb(255 255 255 / 0.4)`,borderRadius:`0.3rem`,background:`rgb(0 0 0 / 0.6)`,color:`#fff`,font:`500 0.85rem/1 system-ui, sans-serif`,cursor:`pointer`}),g.append(_,v,b,x),e.append(g);function S(){if(m||p)return;let e=r();if(t.paused){d=null;return}d!==null&&(u+=e-d),d=e,u>=i&&C()}async function C(){if(p||m)return;p=!0,u=0,d=null;let r=null;try{r=await n.next()}catch(e){n.onError?.(e)}if(!r||m){p=!1;return}let i=L(r),s=i.url;y=i.kind===`audio`?v:_;let h=f++,ee=!t.paused,b=i.kind!==`audio`&&I(t),S=P(t);await M(S,0,o,e=>{t.volume=N(e)}),t.pause(),y.src=s,y.currentTime=0,y.muted=t.muted,y.volume=0,g.style.opacity=`0`,c(),g.hidden=!1,g.classList.toggle(`pux-ad--audio`,i.kind===`audio`);let C=i.kind===`audio`;g.style.background=C?`rgb(0 0 0 / 0.35)`:`#000`,_.style.display=C?`none`:``,e.classList.add(`pux-player--ad`),n.onBreakStart?.({url:s,index:h});let w=!1,T=e=>{p&&(w=e,M(1,0,o,e=>{g.style.opacity=String(e),y.volume=N(S*e)}).then(async()=>{b&&I(y)&&await l(F(t)),te(),n.onBreakEnd?.({url:s,index:h,skipped:w}),!m&&(t.volume=0,ee&&t.play().catch(()=>{}),M(0,S,o,e=>{t.volume=N(e)}))}))};function te(){clearTimeout(ne),clearInterval(re),y.removeEventListener(`ended`,E),y.removeEventListener(`error`,D),x.removeEventListener(`click`,O),y.pause(),y.removeAttribute(`src`),y.load(),g.hidden=!0,g.classList.remove(`pux-ad--audio`),x.hidden=!0,e.classList.remove(`pux-player--ad`),p=!1}let E=()=>T(!1),D=()=>{n.onError?.(Error(`advert failed to play: ${s}`)),T(!1)},O=()=>T(!0);y.addEventListener(`ended`,E),y.addEventListener(`error`,D),x.addEventListener(`click`,O);let ne=setTimeout(()=>T(!1),a),k=n.skipAfter,re=0;if(typeof k==`number`&&k>=0){let e=k;x.hidden=!1;let t=()=>{let t=Math.ceil(e-y.currentTime);t>0?(x.disabled=!0,x.textContent=`Skip in ${t}`):(x.disabled=!1,x.textContent=`Skip ad`)};t(),re=setInterval(t,250)}try{await y.play(),b&&await l(y),await M(0,1,o,e=>{g.style.opacity=String(e),y.volume=N(S*e)})}catch(e){n.onError?.(e),t.volume=N(S),T(!1)}}let w=()=>S(),T=()=>{d=r(),h||(h=!0,C())},te=()=>{S(),d=null},E=()=>{for(let e of[_,v])e.muted=t.muted,e.volume=P(t)};return t.addEventListener(`timeupdate`,w),t.addEventListener(`play`,T),t.addEventListener(`pause`,te),t.addEventListener(`volumechange`,E),{play(){return C()},destroy(){m=!0,I(y)&&l(F(t)),t.removeEventListener(`timeupdate`,w),t.removeEventListener(`play`,T),t.removeEventListener(`pause`,te),t.removeEventListener(`volumechange`,E),_.pause(),v.pause(),g.remove()},get playing(){return p}}}var ue=[1,1.25,1.5,1.75,2,.75],de=5e3,R=10,z={play:`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M8 5v14l11-7z"/></svg>`,pause:`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 5h4v14H6zM14 5h4v14h-4z"/></svg>`,replay:`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5V1L7 6l5 5V7a6 6 0 1 1-6 6H4a8 8 0 1 0 8-8z"/></svg>`,back10:`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5V1L7 6l5 5V7a6 6 0 1 1-6 6H4a8 8 0 1 0 8-8z"/><text x="12" y="17" font-size="8" text-anchor="middle" fill="currentColor">10</text></svg>`,fwd10:`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5V1l5 5-5 5V7a6 6 0 1 0 6 6h2a8 8 0 1 1-8-8z"/><text x="12" y="17" font-size="8" text-anchor="middle" fill="currentColor">10</text></svg>`,volume:`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 9v6h4l5 5V4L7 9H3zm13.5 3a4.5 4.5 0 0 0-2.5-4v8a4.5 4.5 0 0 0 2.5-4z"/></svg>`,muted:`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 9v6h4l5 5V4L7 9H3z"/><path d="M15 9l6 6m0-6l-6 6" stroke="currentColor" stroke-width="2" fill="none"/></svg>`,pip:`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 5h18v14H3z" fill="none" stroke="currentColor" stroke-width="2"/><path d="M12 12h7v5h-7z"/></svg>`,link:`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M8 16a4 4 0 0 1 0-5.7l2-2a4 4 0 0 1 5.7 5.7l-1 1-1.4-1.4 1-1a2 2 0 0 0-2.9-2.9l-2 2A2 2 0 0 0 9.4 14.6L8 16z"/><path d="M16 8a4 4 0 0 1 0 5.7l-2 2A4 4 0 0 1 8.3 10l1-1 1.4 1.4-1 1a2 2 0 0 0 2.9 2.9l2-2A2 2 0 0 0 14.6 9.4L16 8z"/></svg>`,enterFullscreen:`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5v2H6v3H4zm11-5h5v5h-2V6h-3V4zM4 15h2v3h3v2H4v-5zm14 0h2v5h-5v-2h3v-3z"/></svg>`,exitFullscreen:`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 4v3H6v2H4V4h5zm6 0h5v5h-2V7h-3V4zM4 15h2v3h3v2H4v-5zm14 3v-3h2v5h-5v-2h3z"/></svg>`};function B(e,t,n={}){let r=document.createElement(e);r.className=t;for(let[e,t]of Object.entries(n))r.setAttribute(e,t);return r}function V(e,t,n,r){let i=B(`button`,e,{type:`button`,"aria-label":t,title:t,"data-control":r});return i.innerHTML=n,i}function fe(e){let t=e.error,n=t?.message??``;if(/URL safety check/i.test(n))return`This was blocked before it could load. That is a configuration problem on our side, not on yours — please report it.`;switch(t?.code){case 1:return`Playback was stopped before it started.`;case 2:return`The connection dropped while loading. Check your network and try again.`;case 3:return`This could not be decoded by your browser.`;case 4:return`This is missing, or in a format your browser cannot play.`;default:return`This could not be played.`}}function pe(e,t){let{src:n,mediaId:r,startAt:o=null,shareUrl:s=null,storage:c,now:u=Date.now,userAgent:d=typeof navigator>`u`?``:navigator.userAgent}=t,f=T(d),p=te(f),g=t.capabilities??k(),y=re({src:n,...t.kind?{kind:t.kind}:{},...t.mimeType?{mimeType:t.mimeType}:{}},g),b=t.audio??(typeof HTMLAudioElement<`u`&&t.media instanceof HTMLAudioElement||ie(y.kind)),C=t.live??y.kind===`mpegts`,w=t.media??document.createElement(b?`audio`:`video`);t.media||e.append(w),!b&&t.poster&&w instanceof HTMLVideoElement&&(w.poster=t.poster),w instanceof HTMLVideoElement&&(w.playsInline=!0),w.controls=!1,e.classList.add(`pux-player`),f&&e.classList.add(`pux-player--tv`),b&&e.classList.add(`pux-player--audio`),e.hasAttribute(`tabindex`)||e.setAttribute(`tabindex`,`0`);let E=V(`pux-player__overlay`,`Play`,z.play,`overlay`),D=B(`div`,`pux-player__spinner`,{"aria-hidden":`true`}),O=B(`div`,`pux-player__notice`,{role:`status`,"aria-live":`polite`});O.hidden=!0;let ne=B(`span`,`pux-player__notice-text`),A=B(`button`,`pux-player__notice-action`,{type:`button`});A.hidden=!0,O.append(ne,A);let oe=B(`div`,`pux-player__bar`),j=B(`div`,`pux-player__scrub`,{role:`slider`,tabindex:`0`,"aria-label":`Seek`,"aria-valuemin":`0`,"aria-valuenow":`0`}),M=B(`div`,`pux-player__track`),N=B(`div`,`pux-player__buffered`),P=B(`div`,`pux-player__played`),F=B(`div`,`pux-player__marks`,{"aria-hidden":`true`}),I=B(`div`,`pux-player__handle`,{"aria-hidden":`true`}),se=B(`div`,`pux-player__tooltip`,{"aria-hidden":`true`});M.append(N,P,F,I),j.append(M,se);let ce=B(`div`,`pux-player__row`),L=V(`pux-player__btn`,`Play`,z.play,`play`),pe=V(`pux-player__btn`,`Back ${String(R)} seconds`,z.back10,`back`),me=V(`pux-player__btn`,`Forward ${String(R)} seconds`,z.fwd10,`forward`),he=B(`div`,`pux-player__volume`),H=V(`pux-player__btn`,`Mute`,z.volume,`mute`),U=B(`input`,`pux-player__volume-input`,{type:`range`,min:`0`,max:`1`,step:`0.05`,"aria-label":`Volume`,"data-control":`volume`});he.append(H,U);let ge=B(`div`,`pux-player__live`,{"data-control":`live`});ge.textContent=`LIVE`;let _e=B(`div`,`pux-player__time`),ve=B(`div`,`pux-player__chapter`),ye=B(`div`,`pux-player__spacer`),W=B(`button`,`pux-player__btn pux-player__btn--text`,{type:`button`,"aria-label":`Playback speed`,title:`Playback speed`,"data-control":`rate`}),G=B(`button`,`pux-player__btn pux-player__btn--text`,{type:`button`,"aria-label":`Quality`,title:`Quality`,"data-control":`quality`});G.hidden=!0;let be=V(`pux-player__btn`,`Copy link at this time`,z.link,`share`),K=V(`pux-player__btn`,`Picture in picture`,z.pip,`pip`),q=V(`pux-player__btn`,`Fullscreen`,z.enterFullscreen,`fullscreen`);ce.append(L,pe,me,he,ge,_e,ve,ye,W,G,be,K,q),oe.append(j,ce),e.append(E,D,O,oe),f&&(U.hidden=!0,K.hidden=!0),b&&(q.hidden=!0,K.hidden=!0,E.hidden=!0),s||(be.hidden=!0),(typeof document>`u`||!document.pictureInPictureEnabled)&&(K.hidden=!0);let xe=[],Se=t.chapters??[],Ce=[],we=null,Te=null,Ee=0,De=!1,Oe=!1,J=null,ke=[];function Y(e,t,n,r){e.addEventListener(t,n,r),Ce.push(()=>e.removeEventListener(t,n,r))}function X(e,t){ne.textContent=e,O.hidden=!1,Te&&clearTimeout(Te),t?(A.hidden=!1,A.textContent=t.label,A.onclick=()=>{t.run(),Ae()}):(A.hidden=!0,A.onclick=null),Te=setTimeout(Ae,t?9e3:4e3)}function Ae(){O.hidden=!0,A.onclick=null}function je(){e.classList.toggle(`pux-player--live`,C),j.hidden=C,pe.hidden=C,me.hidden=C,W.hidden=C,be.hidden=C||!s,ge.hidden=!C,_e.hidden=C,ve.hidden=C}function Me(){F.replaceChildren();for(let e of xe){let t=B(`button`,`pux-player__mark`,{type:`button`,"aria-label":`${e.title}, ${S(e.start)}`,title:e.title});t.style.left=`${String(e.position*100)}%`,t.addEventListener(`click`,t=>{t.stopPropagation(),w.currentTime=e.start}),F.append(t)}}function Ne(){xe=C?[]:i(Se,w.duration),Me(),Z()}function Z(){if(C)return;let e=w.duration,t=w.currentTime,n=Number.isFinite(e)&&e>0,r=n?Math.min(1,Math.max(0,t/e)):0;if(P.style.width=`${String(r*100)}%`,I.style.left=`${String(r*100)}%`,w.buffered.length>0&&n){let n=0;for(let e=0;e<w.buffered.length;e+=1)if(w.buffered.start(e)<=t&&w.buffered.end(e)>=t){n=w.buffered.end(e);break}N.style.width=`${String(Math.min(1,n/e)*100)}%`}_e.textContent=`${S(t)} / ${S(e)}`,j.setAttribute(`aria-valuenow`,String(Math.floor(t))),n&&j.setAttribute(`aria-valuemax`,String(Math.floor(e))),j.setAttribute(`aria-valuetext`,n?`${S(t)} of ${S(e)}`:S(t));let i=a(xe,t);ve.textContent=i?i.title:``}function Pe(){let t=!w.paused&&!w.ended,n=w.ended,r=n?z.replay:t?z.pause:z.play,i=n?`Play again`:t?`Pause`:`Play`;L.innerHTML=r,L.setAttribute(`aria-label`,i),L.title=i,E.innerHTML=r,E.setAttribute(`aria-label`,i),e.classList.toggle(`pux-player--playing`,t),e.classList.toggle(`pux-player--ended`,n),t||Q(!1)}function Fe(){let e=w.muted||w.volume===0;H.innerHTML=e?z.muted:z.volume,H.setAttribute(`aria-label`,e?`Unmute`:`Mute`),H.setAttribute(`aria-pressed`,e?`true`:`false`),U.value=String(e?0:w.volume)}function Ie(){W.textContent=`${String(w.playbackRate)}\xD7`,W.setAttribute(`aria-label`,`Playback speed, ${String(w.playbackRate)} times`)}function Le(){if(G.hidden=ke.length<2||!J?.setLevel,G.hidden)return;let e=J?.currentLevel?.()??-1,t=ke.find(t=>t.index===e);G.textContent=e===-1?`Auto`:t?.label??`Auto`}function Q(t=!0){e.classList.add(`pux-player--controls`),we&&clearTimeout(we),t&&(we=setTimeout(()=>{w.paused||e.classList.remove(`pux-player--controls`)},p.hideAfterMs))}function Re(){Ye?.playing||(w.paused||w.ended?w.play().catch(()=>void 0):w.pause())}function $(e){if(C)return;let t=Number.isFinite(w.duration)?w.duration:1/0;w.currentTime=Math.min(t,Math.max(0,w.currentTime+e)),Z(),Q()}function ze(e){C||!Number.isFinite(w.duration)||w.duration<=0||(w.currentTime=Math.min(1,Math.max(0,e))*w.duration,Z())}function Be(e){let t=M.getBoundingClientRect();return t.width===0?0:(e-t.left)/t.width}function Ve(e){let t=ue[(ue.indexOf(w.playbackRate)+e+ue.length)%ue.length]??1;w.playbackRate=t}function He(){if(!J?.setLevel)return;let e=[-1,...ke.map(e=>e.index)],t=J.currentLevel?.()??-1,n=e[(e.indexOf(t)+1)%e.length]??-1;J.setLevel(n),Le(),Q()}async function Ue(){try{if(document.fullscreenElement){await document.exitFullscreen();return}await e.requestFullscreen()}catch{w.webkitEnterFullscreen?.()}}async function We(){try{document.pictureInPictureElement?await document.exitPictureInPicture():w instanceof HTMLVideoElement&&await w.requestPictureInPicture()}catch{X(`Picture in picture is not available here.`)}}async function Ge(){if(!s)return;let e=Math.floor(w.currentTime),t=s(e);try{await navigator.clipboard.writeText(t),X(`Link copied, starting at ${S(e)}.`)}catch{X(t)}}Y(w,`loadedmetadata`,()=>{if(Ne(),Z(),C)return;let e=typeof o==`number`&&o>0?o:null;if(e!==null&&Number.isFinite(w.duration)&&e<w.duration){w.currentTime=e;return}if(!r)return;let t=ee(r,c);x(t,w.duration)&&t&&(w.currentTime=t.t,X(`Resumed at ${S(t.t)}.`,{label:`Start over`,run:()=>{w.currentTime=0,v(r,c)}}))});function Ke(){!C&&r&&Number.isFinite(w.duration)&&w.duration>0&&!w.ended&&_(r,{t:w.currentTime,d:w.duration},c,u)}Y(w,`timeupdate`,()=>{De||Z(),!(u()-Ee<de)&&(Ee=u(),Ke())}),Y(w,`progress`,Z),Y(w,`seeked`,Z),Y(w,`seeking`,Z),Y(w,`durationchange`,Ne),Y(w,`play`,Pe),Y(w,`pause`,()=>{Pe(),Ke()}),Y(w,`ended`,()=>{Pe(),r&&v(r,c)}),Y(w,`volumechange`,()=>{Fe(),h({volume:w.volume,muted:w.muted,rate:w.playbackRate},c)}),Y(w,`ratechange`,()=>{Ie(),h({volume:w.volume,muted:w.muted,rate:w.playbackRate},c)}),Y(w,`waiting`,()=>e.classList.add(`pux-player--buffering`)),Y(w,`playing`,()=>e.classList.remove(`pux-player--buffering`)),Y(w,`canplay`,()=>e.classList.remove(`pux-player--buffering`)),Y(w,`error`,()=>{e.classList.remove(`pux-player--buffering`),e.classList.add(`pux-player--failed`),X(fe(w))}),Y(E,`click`,Re),Y(L,`click`,Re),Y(pe,`click`,()=>{$(-R)}),Y(me,`click`,()=>{$(R)}),Y(H,`click`,()=>{w.muted=!w.muted}),Y(U,`input`,()=>{w.volume=Number(U.value),w.muted=Number(U.value)===0}),Y(W,`click`,()=>{Ve(1)}),Y(G,`click`,He),Y(be,`click`,()=>void Ge()),Y(K,`click`,()=>void We()),Y(q,`click`,()=>void Ue()),Y(document,`fullscreenchange`,()=>{let t=document.fullscreenElement===e;e.classList.toggle(`pux-player--fullscreen`,t),q.innerHTML=t?z.exitFullscreen:z.enterFullscreen,q.setAttribute(`aria-label`,t?`Exit fullscreen`:`Fullscreen`)}),Y(j,`pointerdown`,e=>{let t=e;De=!0,j.setPointerCapture(t.pointerId),ze(Be(t.clientX))}),Y(j,`pointermove`,e=>{let t=Be(e.clientX);Number.isFinite(w.duration)&&w.duration>0&&(se.textContent=S(Math.max(0,Math.min(1,t))*w.duration),se.style.left=`${String(Math.max(0,Math.min(1,t))*100)}%`),De&&ze(t)});let qe=e=>{if(!De)return;De=!1;let t=e;j.hasPointerCapture(t.pointerId)&&j.releasePointerCapture(t.pointerId)};Y(j,`pointerup`,qe),Y(j,`pointercancel`,qe),Y(e,`pointermove`,()=>{Q()}),Y(e,`pointerleave`,()=>{w.paused||e.classList.remove(`pux-player--controls`)}),Y(e,`focusin`,()=>{Q()}),Y(e,`keydown`,e=>{let t=e.key,n=e.target,r=n?ce.contains(n):!1;if(!(r&&[`ArrowLeft`,`ArrowRight`,`ArrowUp`,`ArrowDown`].includes(t)))switch(t){case` `:case`k`:case`Enter`:if(t===`Enter`&&n?.closest(`button`))return;e.preventDefault(),Re();break;case`ArrowLeft`:e.preventDefault(),$(-p.seekStep);break;case`ArrowRight`:e.preventDefault(),$(p.seekStep);break;case`j`:$(-R);break;case`l`:$(R);break;case`ArrowUp`:e.preventDefault(),w.volume=Math.min(1,w.volume+.1),w.muted=!1,Q();break;case`ArrowDown`:e.preventDefault(),w.volume=Math.max(0,w.volume-.1),Q();break;case`m`:w.muted=!w.muted,Q();break;case`f`:q.hidden||Ue();break;case`p`:K.hidden||We();break;case`Home`:e.preventDefault(),C||(w.currentTime=0);break;case`End`:e.preventDefault(),!C&&Number.isFinite(w.duration)&&(w.currentTime=w.duration);break;case`<`:case`,`:C||(Ve(-1),Q());break;case`>`:case`.`:C||(Ve(1),Q());break;default:/^[0-9]$/.test(t)&&!r&&!C&&(e.preventDefault(),ze(Number(t)/10))}}),Y(window,`pagehide`,Ke);let Je=m(c);w.volume=Je.volume,w.muted=t.autoplay?!0:Je.muted,w.playbackRate=Je.rate===0?l.rate:Je.rate,je(),Pe(),Fe(),Ie(),Z(),Ne(),Q(!1),y.unplayable&&(e.classList.add(`pux-player--failed`),X(y.unplayable));let Ye=t.ads?le(e,w,t.ads,u):null,Xe=Ze();async function Ze(){if(!y.unplayable)try{let r=await ae(w,{src:n,...t.kind?{kind:t.kind}:{},...t.mimeType?{mimeType:t.mimeType}:{},live:C,isTv:f,capabilities:g,withCredentials:t.withCredentials??!1,...t.headers?{headers:t.headers}:{},unplayableAdvice:t.unplayableAdvice??``,...t.engines?{engines:t.engines}:{},onError:t=>{e.classList.add(`pux-player--failed`),X(t)},onNotice:e=>{e===null?Ae():X(e)},onReady:e=>{Oe||(e.live!==C&&(C=e.live,je(),Ne()),ke=e.levels,Le())}});if(J=r,Oe){r.destroy(),J=null;return}Le(),t.autoplay&&w.play().catch(()=>void 0)}catch{e.classList.add(`pux-player--failed`),X(`The player could not be loaded. Please reload the page.`)}}return{media:w,destroy(){if(!Oe){Oe=!0,Ke(),Ye?.destroy(),we&&clearTimeout(we),Te&&clearTimeout(Te);for(let e of Ce)e();Xe.then(()=>{J?.destroy(),J=null}),E.remove(),D.remove(),O.remove(),oe.remove(),t.media||w.remove(),e.classList.remove(`pux-player`,`pux-player--tv`,`pux-player--audio`,`pux-player--live`,`pux-player--controls`,`pux-player--playing`,`pux-player--ended`,`pux-player--buffering`,`pux-player--failed`,`pux-player--fullscreen`)}},setChapters(e){Se=e,Ne()}}}export{r as a,O as i,ae as n,pe as r,le as t};
|