@mux/playback-core
Advanced tools
Comparing version 0.22.0 to 0.22.1-canary.0-40792e0
@@ -1,4 +0,4 @@ | ||
"use strict";var Ne=Object.create;var D=Object.defineProperty;var _e=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var Ve=Object.getPrototypeOf,Ue=Object.prototype.hasOwnProperty;var Fe=(e,t)=>{for(var n in t)D(e,n,{get:t[n],enumerable:!0})},G=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Oe(t))!Ue.call(e,o)&&o!==n&&D(e,o,{get:()=>t[o],enumerable:!(r=_e(t,o))||r.enumerable});return e};var j=(e,t,n)=>(n=e!=null?Ne(Ve(e)):{},G(t||!e||!e.__esModule?D(n,"default",{value:e,enumerable:!0}):n,e)),We=e=>G(D({},"__esModule",{value:!0}),e);var pt={};Fe(pt,{AutoplayTypes:()=>E,CmcdTypeValues:()=>Ke,CmcdTypes:()=>L,ExtensionMimeTypeMap:()=>b,Hls:()=>f,MaxResolution:()=>$e,MediaError:()=>x,MimeTypeShorthandMap:()=>h,MinResolution:()=>ze,PlaybackTypes:()=>w,RenditionOrder:()=>Xe,StreamTypes:()=>v,addCuePoints:()=>F,addTextTrack:()=>H,allMediaTypes:()=>qe,generatePlayerInitTime:()=>et,generateUUID:()=>xe,getActiveCuePoint:()=>W,getCuePoints:()=>ie,getCuePointsTrack:()=>S,getCurrentPdt:()=>ue,getEnded:()=>Ee,getError:()=>at,getLiveEdgeStart:()=>ct,getMediaPlaylistLinesFromMultivariantPlaylistSrc:()=>Te,getSeekable:()=>ke,getStartDate:()=>ce,getStreamInfoFromHlsjsLevelDetails:()=>ge,getStreamInfoFromPlaylistLines:()=>ye,getStreamInfoFromSrcAndType:()=>me,getStreamType:()=>st,getStreamTypeConfig:()=>Se,getTargetLiveWindow:()=>it,initialize:()=>dt,isKeyOf:()=>I,isMuxVideoSrc:()=>q,isPseudoEnded:()=>Le,loadMedia:()=>De,mux:()=>R.default,muxMediaState:()=>m,removeTextTrack:()=>ae,setupCuePoints:()=>B,setupHls:()=>Ae,setupMux:()=>Re,shorthandKeys:()=>Ye,teardown:()=>he,toMuxVideoURL:()=>tt,updateStreamInfoFromHlsjsLevelDetails:()=>Me,updateStreamInfoFromSrc:()=>K});module.exports=We(pt);var R=j(require("mux-embed"));var Q=j(require("hls.js")),f=Q.default;var M=class M extends Error{constructor(n,r=M.MEDIA_ERR_CUSTOM,o,a){var i;super(n);this.name="MediaError",this.code=r,this.context=a,this.fatal=o!=null?o:r>=M.MEDIA_ERR_NETWORK&&r<=M.MEDIA_ERR_ENCRYPTED,this.message||(this.message=(i=M.defaultMessages[this.code])!=null?i:"")}};M.MEDIA_ERR_ABORTED=1,M.MEDIA_ERR_NETWORK=2,M.MEDIA_ERR_DECODE=3,M.MEDIA_ERR_SRC_NOT_SUPPORTED=4,M.MEDIA_ERR_ENCRYPTED=5,M.MEDIA_ERR_CUSTOM=100,M.defaultMessages={1:"You aborted the media playback",2:"A network error caused the media download to fail.",3:"A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.",4:"An unsupported error occurred. The server or network failed, or your browser does not support this format.",5:"The media is encrypted and there are no keys to decrypt it."};var x=M;var Be=e=>e==null,I=(e,t)=>Be(t)?!1:e in t,E={ANY:"any",MUTED:"muted"},v={ON_DEMAND:"on-demand",LIVE:"live",UNKNOWN:"unknown"},w={MSE:"mse",NATIVE:"native"},L={HEADER:"header",QUERY:"query",NONE:"none"},Ke=Object.values(L),b={M3U8:"application/vnd.apple.mpegurl",MP4:"video/mp4"},h={HLS:b.M3U8},Ye=Object.keys(h),qe=[...Object.values(b),"hls","HLS"],$e={upTo720p:"720p",upTo1080p:"1080p",upTo1440p:"1440p",upTo2160p:"2160p"},ze={noLessThan480p:"480p",noLessThan540p:"540p",noLessThan720p:"720p",noLessThan1080p:"1080p",noLessThan1440p:"1440p",noLessThan2160p:"2160p"},Xe={DESCENDING:"desc"};var g=(e,t,n,r,o=e)=>{o.addEventListener(t,n,r),e.addEventListener("teardown",()=>{o.removeEventListener(t,n)},{once:!0})};function J(e,t,n){t&&n>t&&(n=t);for(let r=0;r<e.length;r++)if(e.start(r)<=n&&e.end(r)>=n)return!0;return!1}var Z=e=>{let t=e.indexOf("?");if(t<0)return[e];let n=e.slice(0,t),r=e.slice(t);return[n,r]},C=e=>{let t=e.type;if(t){let r=t.toUpperCase();return I(r,h)?h[r]:t}let{src:n}=e;return n?Ge(n):""},_=e=>e==="VOD"?v.ON_DEMAND:v.LIVE,O=e=>e==="EVENT"?Number.POSITIVE_INFINITY:e==="VOD"?Number.NaN:0,Ge=e=>{let t="";try{t=new URL(e).pathname}catch{console.error("invalid url")}let n=t.lastIndexOf(".");if(n<0)return"";let o=t.slice(n+1).toUpperCase();return I(o,b)?b[o]:""};var je=Object.values(E),ee=e=>typeof e=="boolean"||typeof e=="string"&&je.includes(e),te=({autoplay:e},t,n)=>{let r=!1,o=!1,a=ee(e)?e:!!e,i=()=>{r||g(t,"playing",()=>{r=!0},{once:!0})};if(i(),g(t,"loadstart",()=>{r=!1,i(),V(t,a)},{once:!0}),g(t,"loadstart",()=>{n||(o=!Number.isFinite(t.duration)),V(t,a)},{once:!0}),n&&n.once(f.Events.LEVEL_LOADED,(d,c)=>{var p;o=(p=c.details.live)!=null?p:!1}),!a){let d=()=>{o&&(n!=null&&n.liveSyncPosition?t.currentTime=n.liveSyncPosition:Number.isFinite(t.seekable.end(0))&&(t.currentTime=t.seekable.end(0)))};n&&g(t,"play",()=>{t.preload==="metadata"?n.once(f.Events.LEVEL_UPDATED,d):d()},{once:!0})}return d=>{r||(a=ee(d)?d:!!d,V(t,a))}},V=(e,t)=>{if(!t)return;let n=e.muted,r=()=>e.muted=n;switch(t){case E.ANY:e.play().catch(()=>{e.muted=!0,e.play().catch(r)});break;case E.MUTED:e.muted=!0,e.play().catch(r);break;default:e.play().catch(()=>{});break}};var ne=({preload:e,src:t},n,r)=>{let o=u=>{u!=null&&["","none","metadata","auto"].includes(u)?n.setAttribute("preload",u):n.removeAttribute("preload")};if(!r)return o(e),o;let a=!1,i=!1,s=r.config.maxBufferLength,d=r.config.maxBufferSize,c=u=>{o(u);let l=u!=null?u:n.preload;i||l==="none"||(l==="metadata"?(r.config.maxBufferLength=1,r.config.maxBufferSize=1):(r.config.maxBufferLength=s,r.config.maxBufferSize=d),p())},p=()=>{!a&&t&&(a=!0,r.loadSource(t))};return g(n,"play",()=>{i=!0,r.config.maxBufferLength=s,r.config.maxBufferSize=d,p()},{once:!0}),c(e),c};function re(e,t){var d;if(!("videoTracks"in e))return;let n=new WeakMap;t.on(f.Events.MANIFEST_PARSED,function(c,p){s();let u=e.addVideoTrack("main");u.selected=!0;for(let[l,T]of p.levels.entries()){let y=u.addRendition(T.url[0],T.width,T.height,T.videoCodec,T.bitrate);n.set(T,`${l}`),y.id=`${l}`}}),t.on(f.Events.AUDIO_TRACKS_UPDATED,function(c,p){i();for(let u of p.audioTracks){let l=u.default?"main":"alternative",T=e.addAudioTrack(l,u.name,u.lang);T.id=`${u.id}`,u.default&&(T.enabled=!0)}}),e.audioTracks.addEventListener("change",()=>{var u;let c=+((u=[...e.audioTracks].find(l=>l.enabled))==null?void 0:u.id),p=t.audioTracks.map(l=>l.id);c!=t.audioTrack&&p.includes(c)&&(t.audioTrack=c)}),t.on(f.Events.LEVELS_UPDATED,function(c,p){var T;let u=e.videoTracks[(T=e.videoTracks.selectedIndex)!=null?T:0];if(!u)return;let l=p.levels.map(y=>n.get(y));for(let y of e.videoRenditions)y.id&&!l.includes(y.id)&&u.removeRendition(y)});let r=c=>{let p=c.target.selectedIndex;p!=t.nextLevel&&o(p)},o=c=>{let p=e.currentTime,u=!1,l=(T,y)=>{u||(u=!Number.isFinite(y.endOffset))};t.on(f.Events.BUFFER_FLUSHING,l),t.nextLevel=c,t.off(f.Events.BUFFER_FLUSHING,l),u||t.trigger(f.Events.BUFFER_FLUSHING,{startOffset:p+10,endOffset:1/0,type:"video"})};(d=e.videoRenditions)==null||d.addEventListener("change",r);let a=()=>{for(let c of e.videoTracks)e.removeVideoTrack(c)},i=()=>{for(let c of e.audioTracks)e.removeAudioTrack(c)},s=()=>{a(),i()};t.once(f.Events.DESTROYING,s)}function oe(e,t){t.on(f.Events.NON_NATIVE_TEXT_TRACKS_FOUND,(o,{tracks:a})=>{a.forEach(i=>{var c;let s=(c=i.subtitleTrack)!=null?c:i.closedCaptions,d=t.subtitleTracks.findIndex(({lang:p,name:u,type:l})=>p==(s==null?void 0:s.lang)&&u===i.label&&l.toLowerCase()===i.kind);H(e,i.kind,i.label,s==null?void 0:s.lang,`${i.kind}${d}`)})});let n=()=>{var i;if(!t.subtitleTracks.length)return;let o=Array.from(e.textTracks).find(s=>s.id&&s.mode==="showing"&&["subtitles","captions"].includes(s.kind)),a=`${(i=t.subtitleTracks[t.subtitleTrack])==null?void 0:i.type.toLowerCase()}${t.subtitleTrack}`;if(o&&(t.subtitleTrack<0||(o==null?void 0:o.id)!==a)){let s=t.subtitleTracks.findIndex(({lang:d,name:c,type:p})=>d==o.language&&c===o.label&&p.toLowerCase()===o.kind);t.subtitleTrack=s}o&&(o==null?void 0:o.id)===a&&o.cues&&Array.from(o.cues).forEach(s=>{o.addCue(s)})};e.textTracks.addEventListener("change",n),t.on(f.Events.CUES_PARSED,(o,{track:a,cues:i})=>{let s=e.textTracks.getTrackById(a);if(!s)return;let d=s.mode==="disabled";d&&(s.mode="hidden"),i.forEach(c=>{var p;(p=s.cues)!=null&&p.getCueById(c.id)||s.addCue(c)}),d&&(s.mode="disabled")}),t.once(f.Events.DESTROYING,()=>{e.textTracks.removeEventListener("change",n),e.querySelectorAll("track[data-removeondestroy]").forEach(a=>{a.remove()})});let r=()=>{Array.from(e.textTracks).forEach(o=>{var a,i;if(!["subtitles","caption"].includes(o.kind)&&o.label==="thumbnails"){if(!((a=o.cues)!=null&&a.length)){let s=e.querySelector('track[label="thumbnails"]'),d=(i=s==null?void 0:s.getAttribute("src"))!=null?i:"";s==null||s.removeAttribute("src"),setTimeout(()=>{s==null||s.setAttribute("src",d)},0)}o.mode!=="hidden"&&(o.mode="hidden")}})};t.once(f.Events.MANIFEST_LOADED,r),t.once(f.Events.MEDIA_ATTACHED,r)}function H(e,t,n,r,o){let a=document.createElement("track");return a.kind=t,a.label=n,r&&(a.srclang=r),o&&(a.id=o),a.track.mode=["subtitles","captions"].includes(t)?"disabled":"hidden",a.setAttribute("data-removeondestroy",""),e.append(a),a.track}function ae(e,t){let n=Array.prototype.find.call(e.querySelectorAll("track"),r=>r.track===t);n==null||n.remove()}var A="cuepoints",U=Object.freeze({label:A}),S=(e,{label:t=A}=U)=>{var n;return(n=Array.from(e.querySelectorAll("track")).find(r=>r.track.label===t&&r.track.kind==="metadata"))==null?void 0:n.track};async function F(e,t,n=U){let r=S(e,n);if(!r){let{label:o=A}=n;r=H(e,"metadata",o),r.mode="hidden",await new Promise(a=>setTimeout(()=>a(void 0),0))}return r.mode!=="hidden"&&(r.mode="hidden"),[...t].sort(({time:o},{time:a})=>a-o).forEach(({time:o,value:a})=>{var u,l;let i=Array.prototype.findIndex.call(r==null?void 0:r.cues,T=>T.startTime>=o),s=(u=r==null?void 0:r.cues)==null?void 0:u[i],d=s?s.startTime:Number.isFinite(e.duration)?e.duration:Number.MAX_SAFE_INTEGER,c=(l=r==null?void 0:r.cues)==null?void 0:l[i-1];c&&(c.endTime=o);let p=new VTTCue(o,d,JSON.stringify(a!=null?a:null));r.addCue(p)}),r}var se=e=>({time:e.startTime,value:JSON.parse(e.text)});function ie(e,t={label:A}){let n=S(e,t);return n!=null&&n.cues?Array.from(n.cues,r=>se(r)):[]}function W(e,t={label:A}){var a,i;let n=S(e,t);if(!((a=n==null?void 0:n.activeCues)!=null&&a.length))return;let{currentTime:r}=e,o=Array.prototype.find.call((i=n.activeCues)!=null?i:[],({startTime:s,endTime:d})=>s<=r&&d>r);return se(o)}async function B(e,t=U){return new Promise(n=>{g(e,"loadstart",async()=>{let r=await F(e,[],t);g(e,"cuechange",()=>{let o=W(e);if(o){let a=new CustomEvent("cuepointchange",{composed:!0,bubbles:!0,detail:o});e.dispatchEvent(a)}},{},r),n(r)})})}function ce(e,t){if(t){let n=t.playingDate;if(n!=null)return new Date(n.getTime()-e.currentTime*1e3)}return typeof e.getStartDate=="function"?e.getStartDate():new Date(NaN)}function ue(e,t){if(t&&t.playingDate)return t.playingDate;if(typeof e.getStartDate=="function"){let n=e.getStartDate();return new Date(n.getTime()+e.currentTime*1e3)}return new Date(NaN)}var Te=async e=>fetch(e).then(t=>t.text()).then(t=>{let n=t.split(` | ||
"use strict";var Oe=Object.create;var R=Object.defineProperty;var Ve=Object.getOwnPropertyDescriptor;var Ue=Object.getOwnPropertyNames;var Fe=Object.getPrototypeOf,We=Object.prototype.hasOwnProperty;var Be=(e,t)=>{for(var n in t)R(e,n,{get:t[n],enumerable:!0})},Q=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ue(t))!We.call(e,o)&&o!==n&&R(e,o,{get:()=>t[o],enumerable:!(r=Ve(t,o))||r.enumerable});return e};var J=(e,t,n)=>(n=e!=null?Oe(Fe(e)):{},Q(t||!e||!e.__esModule?R(n,"default",{value:e,enumerable:!0}):n,e)),Ke=e=>Q(R({},"__esModule",{value:!0}),e);var ft={};Be(ft,{AutoplayTypes:()=>E,CmcdTypeValues:()=>qe,CmcdTypes:()=>k,ExtensionMimeTypeMap:()=>b,Hls:()=>f,MaxResolution:()=>Xe,MediaError:()=>x,MimeTypeShorthandMap:()=>h,MinResolution:()=>Ge,PlaybackTypes:()=>w,RenditionOrder:()=>je,StreamTypes:()=>v,addCuePoints:()=>F,addTextTrack:()=>H,allMediaTypes:()=>ze,generatePlayerInitTime:()=>nt,generateUUID:()=>Pe,getActiveCuePoint:()=>W,getCuePoints:()=>ue,getCuePointsTrack:()=>A,getCurrentPdt:()=>le,getEnded:()=>Ce,getError:()=>it,getLiveEdgeStart:()=>dt,getMediaPlaylistLinesFromMultivariantPlaylistSrc:()=>me,getSeekable:()=>ke,getStartDate:()=>de,getStreamInfoFromHlsjsLevelDetails:()=>ve,getStreamInfoFromPlaylistLines:()=>ge,getStreamInfoFromSrcAndType:()=>Me,getStreamType:()=>ct,getStreamTypeConfig:()=>Re,getTargetLiveWindow:()=>ut,initialize:()=>pt,isKeyOf:()=>I,isMuxVideoSrc:()=>z,isPseudoEnded:()=>he,isStuckOnLastFragment:()=>$,loadMedia:()=>we,mux:()=>D.default,muxMediaState:()=>m,removeTextTrack:()=>ie,setupCuePoints:()=>B,setupHls:()=>De,setupMux:()=>Ie,shorthandKeys:()=>$e,teardown:()=>Se,toMuxVideoURL:()=>rt,updateStreamInfoFromHlsjsLevelDetails:()=>be,updateStreamInfoFromSrc:()=>K});module.exports=Ke(ft);var D=J(require("mux-embed"));var Z=J(require("hls.js")),f=Z.default;var M=class M extends Error{constructor(n,r=M.MEDIA_ERR_CUSTOM,o,a){var i;super(n);this.name="MediaError",this.code=r,this.context=a,this.fatal=o!=null?o:r>=M.MEDIA_ERR_NETWORK&&r<=M.MEDIA_ERR_ENCRYPTED,this.message||(this.message=(i=M.defaultMessages[this.code])!=null?i:"")}};M.MEDIA_ERR_ABORTED=1,M.MEDIA_ERR_NETWORK=2,M.MEDIA_ERR_DECODE=3,M.MEDIA_ERR_SRC_NOT_SUPPORTED=4,M.MEDIA_ERR_ENCRYPTED=5,M.MEDIA_ERR_CUSTOM=100,M.defaultMessages={1:"You aborted the media playback",2:"A network error caused the media download to fail.",3:"A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.",4:"An unsupported error occurred. The server or network failed, or your browser does not support this format.",5:"The media is encrypted and there are no keys to decrypt it."};var x=M;var Ye=e=>e==null,I=(e,t)=>Ye(t)?!1:e in t,E={ANY:"any",MUTED:"muted"},v={ON_DEMAND:"on-demand",LIVE:"live",UNKNOWN:"unknown"},w={MSE:"mse",NATIVE:"native"},k={HEADER:"header",QUERY:"query",NONE:"none"},qe=Object.values(k),b={M3U8:"application/vnd.apple.mpegurl",MP4:"video/mp4"},h={HLS:b.M3U8},$e=Object.keys(h),ze=[...Object.values(b),"hls","HLS"],Xe={upTo720p:"720p",upTo1080p:"1080p",upTo1440p:"1440p",upTo2160p:"2160p"},Ge={noLessThan480p:"480p",noLessThan540p:"540p",noLessThan720p:"720p",noLessThan1080p:"1080p",noLessThan1440p:"1440p",noLessThan2160p:"2160p"},je={DESCENDING:"desc"};var g=(e,t,n,r,o=e)=>{o.addEventListener(t,n,r),e.addEventListener("teardown",()=>{o.removeEventListener(t,n)},{once:!0})};function ee(e,t,n){t&&n>t&&(n=t);for(let r=0;r<e.length;r++)if(e.start(r)<=n&&e.end(r)>=n)return!0;return!1}var te=e=>{let t=e.indexOf("?");if(t<0)return[e];let n=e.slice(0,t),r=e.slice(t);return[n,r]},C=e=>{let t=e.type;if(t){let r=t.toUpperCase();return I(r,h)?h[r]:t}let{src:n}=e;return n?Qe(n):""},_=e=>e==="VOD"?v.ON_DEMAND:v.LIVE,O=e=>e==="EVENT"?Number.POSITIVE_INFINITY:e==="VOD"?Number.NaN:0,Qe=e=>{let t="";try{t=new URL(e).pathname}catch{console.error("invalid url")}let n=t.lastIndexOf(".");if(n<0)return"";let o=t.slice(n+1).toUpperCase();return I(o,b)?b[o]:""};var Je=Object.values(E),ne=e=>typeof e=="boolean"||typeof e=="string"&&Je.includes(e),re=({autoplay:e},t,n)=>{let r=!1,o=!1,a=ne(e)?e:!!e,i=()=>{r||g(t,"playing",()=>{r=!0},{once:!0})};if(i(),g(t,"loadstart",()=>{r=!1,i(),V(t,a)},{once:!0}),g(t,"loadstart",()=>{n||(o=!Number.isFinite(t.duration)),V(t,a)},{once:!0}),n&&n.once(f.Events.LEVEL_LOADED,(d,c)=>{var l;o=(l=c.details.live)!=null?l:!1}),!a){let d=()=>{o&&(n!=null&&n.liveSyncPosition?t.currentTime=n.liveSyncPosition:Number.isFinite(t.seekable.end(0))&&(t.currentTime=t.seekable.end(0)))};n&&g(t,"play",()=>{t.preload==="metadata"?n.once(f.Events.LEVEL_UPDATED,d):d()},{once:!0})}return d=>{r||(a=ne(d)?d:!!d,V(t,a))}},V=(e,t)=>{if(!t)return;let n=e.muted,r=()=>e.muted=n;switch(t){case E.ANY:e.play().catch(()=>{e.muted=!0,e.play().catch(r)});break;case E.MUTED:e.muted=!0,e.play().catch(r);break;default:e.play().catch(()=>{});break}};var oe=({preload:e,src:t},n,r)=>{let o=u=>{u!=null&&["","none","metadata","auto"].includes(u)?n.setAttribute("preload",u):n.removeAttribute("preload")};if(!r)return o(e),o;let a=!1,i=!1,s=r.config.maxBufferLength,d=r.config.maxBufferSize,c=u=>{o(u);let p=u!=null?u:n.preload;i||p==="none"||(p==="metadata"?(r.config.maxBufferLength=1,r.config.maxBufferSize=1):(r.config.maxBufferLength=s,r.config.maxBufferSize=d),l())},l=()=>{!a&&t&&(a=!0,r.loadSource(t))};return g(n,"play",()=>{i=!0,r.config.maxBufferLength=s,r.config.maxBufferSize=d,l()},{once:!0}),c(e),c};function ae(e,t){var d;if(!("videoTracks"in e))return;let n=new WeakMap;t.on(f.Events.MANIFEST_PARSED,function(c,l){s();let u=e.addVideoTrack("main");u.selected=!0;for(let[p,T]of l.levels.entries()){let y=u.addRendition(T.url[0],T.width,T.height,T.videoCodec,T.bitrate);n.set(T,`${p}`),y.id=`${p}`}}),t.on(f.Events.AUDIO_TRACKS_UPDATED,function(c,l){i();for(let u of l.audioTracks){let p=u.default?"main":"alternative",T=e.addAudioTrack(p,u.name,u.lang);T.id=`${u.id}`,u.default&&(T.enabled=!0)}}),e.audioTracks.addEventListener("change",()=>{var u;let c=+((u=[...e.audioTracks].find(p=>p.enabled))==null?void 0:u.id),l=t.audioTracks.map(p=>p.id);c!=t.audioTrack&&l.includes(c)&&(t.audioTrack=c)}),t.on(f.Events.LEVELS_UPDATED,function(c,l){var T;let u=e.videoTracks[(T=e.videoTracks.selectedIndex)!=null?T:0];if(!u)return;let p=l.levels.map(y=>n.get(y));for(let y of e.videoRenditions)y.id&&!p.includes(y.id)&&u.removeRendition(y)});let r=c=>{let l=c.target.selectedIndex;l!=t.nextLevel&&o(l)},o=c=>{let l=e.currentTime,u=!1,p=(T,y)=>{u||(u=!Number.isFinite(y.endOffset))};t.on(f.Events.BUFFER_FLUSHING,p),t.nextLevel=c,t.off(f.Events.BUFFER_FLUSHING,p),u||t.trigger(f.Events.BUFFER_FLUSHING,{startOffset:l+10,endOffset:1/0,type:"video"})};(d=e.videoRenditions)==null||d.addEventListener("change",r);let a=()=>{for(let c of e.videoTracks)e.removeVideoTrack(c)},i=()=>{for(let c of e.audioTracks)e.removeAudioTrack(c)},s=()=>{a(),i()};t.once(f.Events.DESTROYING,s)}function se(e,t){t.on(f.Events.NON_NATIVE_TEXT_TRACKS_FOUND,(o,{tracks:a})=>{a.forEach(i=>{var c;let s=(c=i.subtitleTrack)!=null?c:i.closedCaptions,d=t.subtitleTracks.findIndex(({lang:l,name:u,type:p})=>l==(s==null?void 0:s.lang)&&u===i.label&&p.toLowerCase()===i.kind);H(e,i.kind,i.label,s==null?void 0:s.lang,`${i.kind}${d}`)})});let n=()=>{var i;if(!t.subtitleTracks.length)return;let o=Array.from(e.textTracks).find(s=>s.id&&s.mode==="showing"&&["subtitles","captions"].includes(s.kind)),a=`${(i=t.subtitleTracks[t.subtitleTrack])==null?void 0:i.type.toLowerCase()}${t.subtitleTrack}`;if(o&&(t.subtitleTrack<0||(o==null?void 0:o.id)!==a)){let s=t.subtitleTracks.findIndex(({lang:d,name:c,type:l})=>d==o.language&&c===o.label&&l.toLowerCase()===o.kind);t.subtitleTrack=s}o&&(o==null?void 0:o.id)===a&&o.cues&&Array.from(o.cues).forEach(s=>{o.addCue(s)})};e.textTracks.addEventListener("change",n),t.on(f.Events.CUES_PARSED,(o,{track:a,cues:i})=>{let s=e.textTracks.getTrackById(a);if(!s)return;let d=s.mode==="disabled";d&&(s.mode="hidden"),i.forEach(c=>{var l;(l=s.cues)!=null&&l.getCueById(c.id)||s.addCue(c)}),d&&(s.mode="disabled")}),t.once(f.Events.DESTROYING,()=>{e.textTracks.removeEventListener("change",n),e.querySelectorAll("track[data-removeondestroy]").forEach(a=>{a.remove()})});let r=()=>{Array.from(e.textTracks).forEach(o=>{var a,i;if(!["subtitles","caption"].includes(o.kind)&&o.label==="thumbnails"){if(!((a=o.cues)!=null&&a.length)){let s=e.querySelector('track[label="thumbnails"]'),d=(i=s==null?void 0:s.getAttribute("src"))!=null?i:"";s==null||s.removeAttribute("src"),setTimeout(()=>{s==null||s.setAttribute("src",d)},0)}o.mode!=="hidden"&&(o.mode="hidden")}})};t.once(f.Events.MANIFEST_LOADED,r),t.once(f.Events.MEDIA_ATTACHED,r)}function H(e,t,n,r,o){let a=document.createElement("track");return a.kind=t,a.label=n,r&&(a.srclang=r),o&&(a.id=o),a.track.mode=["subtitles","captions"].includes(t)?"disabled":"hidden",a.setAttribute("data-removeondestroy",""),e.append(a),a.track}function ie(e,t){let n=Array.prototype.find.call(e.querySelectorAll("track"),r=>r.track===t);n==null||n.remove()}var S="cuepoints",U=Object.freeze({label:S}),A=(e,{label:t=S}=U)=>{var n;return(n=Array.from(e.querySelectorAll("track")).find(r=>r.track.label===t&&r.track.kind==="metadata"))==null?void 0:n.track};async function F(e,t,n=U){let r=A(e,n);if(!r){let{label:o=S}=n;r=H(e,"metadata",o),r.mode="hidden",await new Promise(a=>setTimeout(()=>a(void 0),0))}return r.mode!=="hidden"&&(r.mode="hidden"),[...t].sort(({time:o},{time:a})=>a-o).forEach(({time:o,value:a})=>{var u,p;let i=Array.prototype.findIndex.call(r==null?void 0:r.cues,T=>T.startTime>=o),s=(u=r==null?void 0:r.cues)==null?void 0:u[i],d=s?s.startTime:Number.isFinite(e.duration)?e.duration:Number.MAX_SAFE_INTEGER,c=(p=r==null?void 0:r.cues)==null?void 0:p[i-1];c&&(c.endTime=o);let l=new VTTCue(o,d,JSON.stringify(a!=null?a:null));r.addCue(l)}),r}var ce=e=>({time:e.startTime,value:JSON.parse(e.text)});function ue(e,t={label:S}){let n=A(e,t);return n!=null&&n.cues?Array.from(n.cues,r=>ce(r)):[]}function W(e,t={label:S}){var a,i;let n=A(e,t);if(!((a=n==null?void 0:n.activeCues)!=null&&a.length))return;let{currentTime:r}=e,o=Array.prototype.find.call((i=n.activeCues)!=null?i:[],({startTime:s,endTime:d})=>s<=r&&d>r);return ce(o)}async function B(e,t=U){return new Promise(n=>{g(e,"loadstart",async()=>{let r=await F(e,[],t);g(e,"cuechange",()=>{let o=W(e);if(o){let a=new CustomEvent("cuepointchange",{composed:!0,bubbles:!0,detail:o});e.dispatchEvent(a)}},{},r),n(r)})})}function de(e,t){if(t){let n=t.playingDate;if(n!=null)return new Date(n.getTime()-e.currentTime*1e3)}return typeof e.getStartDate=="function"?e.getStartDate():new Date(NaN)}function le(e,t){if(t&&t.playingDate)return t.playingDate;if(typeof e.getStartDate=="function"){let n=e.getStartDate();return new Date(n.getTime()+e.currentTime*1e3)}return new Date(NaN)}var me=async e=>fetch(e).then(t=>t.text()).then(t=>{let n=t.split(` | ||
`).find((r,o,a)=>o&&a[o-1].startsWith("#EXT-X-STREAM-INF"));return fetch(n).then(r=>r.text()).then(r=>r.split(` | ||
`))}),ye=e=>{var i,s,d;let n=(s=((i=e.find(c=>c.startsWith("#EXT-X-PLAYLIST-TYPE")))!=null?i:"").split(":")[1])==null?void 0:s.trim(),r=_(n),o=O(n),a;if(r===v.LIVE){let c=e.find(u=>u.startsWith("#EXT-X-PART-INF"));if(!!c)a=+c.split(":")[1].split("=")[1]*2;else{let u=e.find(y=>y.startsWith("#EXT-X-TARGETDURATION")),l=(d=u==null?void 0:u.split(":"))==null?void 0:d[1];a=+(l!=null?l:6)*3}}return{streamType:r,targetLiveWindow:o,liveEdgeStartOffset:a}},me=async(e,t)=>{if(t===b.MP4)return{streamType:v.ON_DEMAND,targetLiveWindow:Number.NaN,liveEdgeStartOffset:void 0};if(t===b.M3U8){let n=await Te(e);return ye(n)}return console.error(`Media type ${t} is an unrecognized or unsupported type for src ${e}.`),{streamType:void 0,targetLiveWindow:void 0,liveEdgeStartOffset:void 0}},K=async(e,t,n=C({src:e}))=>{var i,s,d;let{streamType:r,targetLiveWindow:o,liveEdgeStartOffset:a}=await me(e,n);((i=m.get(t))!=null?i:{}).liveEdgeStartOffset=a,((s=m.get(t))!=null?s:{}).targetLiveWindow=o,t.dispatchEvent(new CustomEvent("targetlivewindowchange",{composed:!0,bubbles:!0})),((d=m.get(t))!=null?d:{}).streamType=r,t.dispatchEvent(new CustomEvent("streamtypechange",{composed:!0,bubbles:!0}))},ge=e=>{var i;let t=e.type,n=_(t),r=O(t),o,a=!!((i=e.partList)!=null&&i.length);return n===v.LIVE&&(o=a?e.partTarget*2:e.targetduration*3),{streamType:n,targetLiveWindow:r,liveEdgeStartOffset:o,lowLatency:a}},Me=(e,t,n)=>{var s,d,c,p,u,l,T,y;let{streamType:r,targetLiveWindow:o,liveEdgeStartOffset:a,lowLatency:i}=ge(e);if(r===v.LIVE){i?(n.config.backBufferLength=(s=n.userConfig.backBufferLength)!=null?s:4,n.config.maxFragLookUpTolerance=(d=n.userConfig.maxFragLookUpTolerance)!=null?d:.001,n.config.abrBandWidthUpFactor=(c=n.userConfig.abrBandWidthUpFactor)!=null?c:n.config.abrBandWidthFactor):n.config.backBufferLength=(p=n.userConfig.backBufferLength)!=null?p:8;let N=Object.freeze({get length(){return t.seekable.length},start(k){return t.seekable.start(k)},end(k){var P;return k>this.length?t.seekable.end(k):(P=n.liveSyncPosition)!=null?P:t.seekable.end(k)}});((u=m.get(t))!=null?u:{}).seekable=N}((l=m.get(t))!=null?l:{}).liveEdgeStartOffset=a,((T=m.get(t))!=null?T:{}).targetLiveWindow=o,t.dispatchEvent(new CustomEvent("targetlivewindowchange",{composed:!0,bubbles:!0})),((y=m.get(t))!=null?y:{}).streamType=r,t.dispatchEvent(new CustomEvent("streamtypechange",{composed:!0,bubbles:!0}))},de,pe,Qe=(pe=(de=globalThis==null?void 0:globalThis.navigator)==null?void 0:de.userAgent)!=null?pe:"",Je=Qe.toLowerCase().indexOf("android")!==-1,m=new WeakMap,ve="mux.com",le,fe,be=(fe=(le=f).isSupported)==null?void 0:fe.call(le),Ze=Je,et=()=>R.default.utils.now(),xe=R.default.utils.generateUUID,tt=({playbackId:e,customDomain:t=ve,maxResolution:n,minResolution:r,renditionOrder:o,tokens:{playback:a}={},extraSourceParams:i={}}={})=>{if(!e)return;let[s,d=""]=Z(e),c=new URL(`https://stream.${t}/${s}.m3u8${d}`);return a||c.searchParams.has("token")?(c.searchParams.forEach((p,u)=>{u!="token"&&c.searchParams.delete(u)}),a&&c.searchParams.set("token",a)):(n&&c.searchParams.set("max_resolution",n),r&&(c.searchParams.set("min_resolution",r),n&&+n.slice(0,-1)<+r.slice(0,-1)&&console.error("minResolution must be <= maxResolution","minResolution",r,"maxResolution",n)),o&&c.searchParams.set("rendition_order",o),Object.entries(i).forEach(([p,u])=>{u!=null&&c.searchParams.set(p,u)})),c.toString()},nt=e=>{if(!e)return;let[t]=e.split("?");return t||void 0},rt=e=>{if(!e||!e.startsWith("https://stream."))return;let[t]=new URL(e).pathname.slice(1).split(".m3u8");return t||void 0},ot=e=>{var t,n,r;return(t=e==null?void 0:e.metadata)!=null&&t.video_id?e.metadata.video_id:q(e)&&(r=(n=nt(e.playbackId))!=null?n:rt(e.src))!=null?r:e.src},at=e=>{var t;return(t=m.get(e))==null?void 0:t.error},st=e=>{var t,n;return(n=(t=m.get(e))==null?void 0:t.streamType)!=null?n:v.UNKNOWN},it=e=>{var t,n;return(n=(t=m.get(e))==null?void 0:t.targetLiveWindow)!=null?n:Number.NaN},ke=e=>{var t,n;return(n=(t=m.get(e))==null?void 0:t.seekable)!=null?n:e.seekable},ct=e=>{var r;let t=(r=m.get(e))==null?void 0:r.liveEdgeStartOffset;if(typeof t!="number")return Number.NaN;let n=ke(e);return n.length?n.end(n.length-1)-t:Number.NaN},ut=(e,t,n=.001)=>Math.abs(e-t)<=n,Pe=(e,t,n=.001)=>e>t||ut(e,t,n),Le=e=>e.paused&&Pe(e.currentTime,e.duration),Ee=(e,t)=>e.loop||t?e.ended:e.ended||Le(e),dt=(e,t,n)=>{he(t,n);let{metadata:r={}}=e,{view_session_id:o=xe()}=r,a=ot(e);r.view_session_id=o,r.video_id=a,e.metadata=r,m.set(t,{});let i=Ae(e,t);Re(e,t,i),De(e,t,i),B(t);let s=te(e,t,i),d=ne(e,t,i);return{engine:i,setAutoplay:s,setPreload:d}},he=(e,t)=>{let n=t==null?void 0:t.engine;n&&(n.detachMedia(),n.destroy()),e!=null&&e.mux&&!e.mux.deleted&&(e.mux.destroy(),delete e.mux),e&&(e.removeAttribute("src"),e.load(),e.removeEventListener("error",we),e.removeEventListener("error",Y),e.removeEventListener("durationchange",Ie),m.delete(e),e.dispatchEvent(new Event("teardown")))};function Ce(e,t){var c;let n=C(e);if(!(n===b.M3U8))return!0;let o=!n||((c=t.canPlayType(n))!=null?c:!0),{preferPlayback:a}=e,i=a===w.MSE,s=a===w.NATIVE;return o&&(s||!(be&&(i||Ze)))}var Ae=(e,t)=>{let{debug:n,streamType:r,startTime:o=-1,metadata:a,preferCmcd:i,_hlsConfig:s={}}=e,c=C(e)===b.M3U8,p=Ce(e,t);if(c&&!p&&be){let u={backBufferLength:30,renderTextTracksNatively:!1,liveDurationInfinity:!0,capLevelToPlayerSize:!0,capLevelOnFPSDrop:!0},l=Se(r),T=i!==L.NONE?{useHeaders:i===L.HEADER,sessionId:a==null?void 0:a.view_session_id,contentId:a==null?void 0:a.video_id}:void 0;return new f({debug:n,startPosition:o,cmcd:T,xhrSetup:(N,k)=>{var $,z;if(i&&i!==L.QUERY)return;let P=new URL(k);if(!P.searchParams.has("CMCD"))return;let He=((z=($=P.searchParams.get("CMCD"))==null?void 0:$.split(","))!=null?z:[]).filter(X=>X.startsWith("sid")||X.startsWith("cid")).join(",");P.searchParams.set("CMCD",He),N.open("GET",P)},...u,...l,...s})}},Se=e=>e===v.LIVE?{backBufferLength:8}:{},q=({playbackId:e,src:t,customDomain:n})=>{if(e)return!0;if(typeof t!="string")return!1;let r=window==null?void 0:window.location.href,o=new URL(t,r).hostname.toLocaleLowerCase();return o.includes(ve)||!!n&&o.includes(n.toLocaleLowerCase())},Re=(e,t,n)=>{var a;let{envKey:r}=e,o=q(e);if(r||o){let{playerInitTime:i,playerSoftwareName:s,playerSoftwareVersion:d,beaconCollectionDomain:c,debug:p,disableCookies:u}=e,l={...e.metadata,video_title:((a=e==null?void 0:e.metadata)==null?void 0:a.video_title)||void 0},T=y=>typeof y.player_error_code=="string"?!1:typeof e.errorTranslator=="function"?e.errorTranslator(y):y;R.default.monitor(t,{debug:p,beaconCollectionDomain:c,hlsjs:n,Hls:n?f:void 0,automaticErrorTracking:!1,errorTranslator:T,disableCookies:u,data:{...r?{env_key:r}:{},player_software_name:s,player_software:s,player_software_version:d,player_init_time:i,...l}})}},De=(e,t,n)=>{var a;let r=Ce(e,t),{src:o}=e;if(t&&r){let i=C(e);typeof o=="string"?(t.preload==="none"?g(t,"loadstart",()=>K(o,t,i)):K(o,t,i),t.setAttribute("src",o),e.startTime&&(((a=m.get(t))!=null?a:{}).startTime=e.startTime,t.addEventListener("durationchange",Ie,{once:!0}))):t.removeAttribute("src"),t.addEventListener("error",we),t.addEventListener("error",Y),t.addEventListener("emptied",()=>{t.querySelectorAll("track[data-removeondestroy]").forEach(c=>{c.remove()})},{once:!0});let s=()=>{t.ended||Ee(t)&&t.dispatchEvent(new Event("ended"))};g(t,"pause",s),g(t,"seeked",s),g(t,"play",()=>{t.ended||Pe(t.currentTime,t.duration)&&(t.currentTime=t.seekable.start(0))})}else n&&o?(n.once(f.Events.LEVEL_LOADED,(i,s)=>{Me(s.details,t,n)}),n.on(f.Events.ERROR,(i,s)=>{let d={[f.ErrorTypes.NETWORK_ERROR]:x.MEDIA_ERR_NETWORK,[f.ErrorTypes.MEDIA_ERROR]:x.MEDIA_ERR_DECODE},c=new x("",d[s.type]);c.fatal=s.fatal,c.data=s,t.dispatchEvent(new CustomEvent("error",{detail:c}))}),t.addEventListener("error",Y),re(e,n),oe(t,n),n.attachMedia(t)):console.error("It looks like the video you're trying to play will not work on this system! If possible, try upgrading to the newest versions of your browser or software.")};function Ie(e){var r;let t=e.target,n=(r=m.get(t))==null?void 0:r.startTime;if(n&&J(t.seekable,t.duration,n)){let o=t.preload==="auto";o&&(t.preload="none"),t.currentTime=n,o&&(t.preload="auto")}}async function we(e){if(!e.isTrusted)return;e.stopImmediatePropagation();let t=e.target;if(!(t!=null&&t.error))return;let{message:n,code:r}=t.error,o=new x(n,r);if(t.src&&(r!==x.MEDIA_ERR_DECODE||r!==void 0))try{let{status:a}=await fetch(t.src);o.data={response:{code:a}}}catch{}t.dispatchEvent(new CustomEvent("error",{detail:o}))}function Y(e){var r,o;if(!(e instanceof CustomEvent)||!(e.detail instanceof x))return;let t=e.target,n=e.detail;!n||!n.fatal||(((r=m.get(t))!=null?r:{}).error=n,(o=t.mux)==null||o.emit("error",{player_error_code:n.code,player_error_message:n.message,player_error_context:n.context}))} | ||
`))}),ge=e=>{var i,s,d;let n=(s=((i=e.find(c=>c.startsWith("#EXT-X-PLAYLIST-TYPE")))!=null?i:"").split(":")[1])==null?void 0:s.trim(),r=_(n),o=O(n),a;if(r===v.LIVE){let c=e.find(u=>u.startsWith("#EXT-X-PART-INF"));if(!!c)a=+c.split(":")[1].split("=")[1]*2;else{let u=e.find(y=>y.startsWith("#EXT-X-TARGETDURATION")),p=(d=u==null?void 0:u.split(":"))==null?void 0:d[1];a=+(p!=null?p:6)*3}}return{streamType:r,targetLiveWindow:o,liveEdgeStartOffset:a}},Me=async(e,t)=>{if(t===b.MP4)return{streamType:v.ON_DEMAND,targetLiveWindow:Number.NaN,liveEdgeStartOffset:void 0};if(t===b.M3U8){let n=await me(e);return ge(n)}return console.error(`Media type ${t} is an unrecognized or unsupported type for src ${e}.`),{streamType:void 0,targetLiveWindow:void 0,liveEdgeStartOffset:void 0}},K=async(e,t,n=C({src:e}))=>{var i,s,d;let{streamType:r,targetLiveWindow:o,liveEdgeStartOffset:a}=await Me(e,n);((i=m.get(t))!=null?i:{}).liveEdgeStartOffset=a,((s=m.get(t))!=null?s:{}).targetLiveWindow=o,t.dispatchEvent(new CustomEvent("targetlivewindowchange",{composed:!0,bubbles:!0})),((d=m.get(t))!=null?d:{}).streamType=r,t.dispatchEvent(new CustomEvent("streamtypechange",{composed:!0,bubbles:!0}))},ve=e=>{var i;let t=e.type,n=_(t),r=O(t),o,a=!!((i=e.partList)!=null&&i.length);return n===v.LIVE&&(o=a?e.partTarget*2:e.targetduration*3),{streamType:n,targetLiveWindow:r,liveEdgeStartOffset:o,lowLatency:a}},be=(e,t,n)=>{var s,d,c,l,u,p,T,y;let{streamType:r,targetLiveWindow:o,liveEdgeStartOffset:a,lowLatency:i}=ve(e);if(r===v.LIVE){i?(n.config.backBufferLength=(s=n.userConfig.backBufferLength)!=null?s:4,n.config.maxFragLookUpTolerance=(d=n.userConfig.maxFragLookUpTolerance)!=null?d:.001,n.config.abrBandWidthUpFactor=(c=n.userConfig.abrBandWidthUpFactor)!=null?c:n.config.abrBandWidthFactor):n.config.backBufferLength=(l=n.userConfig.backBufferLength)!=null?l:8;let N=Object.freeze({get length(){return t.seekable.length},start(L){return t.seekable.start(L)},end(L){var P;return L>this.length?t.seekable.end(L):(P=n.liveSyncPosition)!=null?P:t.seekable.end(L)}});((u=m.get(t))!=null?u:{}).seekable=N}((p=m.get(t))!=null?p:{}).liveEdgeStartOffset=a,((T=m.get(t))!=null?T:{}).targetLiveWindow=o,t.dispatchEvent(new CustomEvent("targetlivewindowchange",{composed:!0,bubbles:!0})),((y=m.get(t))!=null?y:{}).streamType=r,t.dispatchEvent(new CustomEvent("streamtypechange",{composed:!0,bubbles:!0}))},pe,fe,Ze=(fe=(pe=globalThis==null?void 0:globalThis.navigator)==null?void 0:pe.userAgent)!=null?fe:"",et=Ze.toLowerCase().indexOf("android")!==-1,m=new WeakMap,xe="mux.com",Te,ye,Le=(ye=(Te=f).isSupported)==null?void 0:ye.call(Te),tt=et,nt=()=>D.default.utils.now(),Pe=D.default.utils.generateUUID,rt=({playbackId:e,customDomain:t=xe,maxResolution:n,minResolution:r,renditionOrder:o,tokens:{playback:a}={},extraSourceParams:i={}}={})=>{if(!e)return;let[s,d=""]=te(e),c=new URL(`https://stream.${t}/${s}.m3u8${d}`);return a||c.searchParams.has("token")?(c.searchParams.forEach((l,u)=>{u!="token"&&c.searchParams.delete(u)}),a&&c.searchParams.set("token",a)):(n&&c.searchParams.set("max_resolution",n),r&&(c.searchParams.set("min_resolution",r),n&&+n.slice(0,-1)<+r.slice(0,-1)&&console.error("minResolution must be <= maxResolution","minResolution",r,"maxResolution",n)),o&&c.searchParams.set("rendition_order",o),Object.entries(i).forEach(([l,u])=>{u!=null&&c.searchParams.set(l,u)})),c.toString()},ot=e=>{if(!e)return;let[t]=e.split("?");return t||void 0},at=e=>{if(!e||!e.startsWith("https://stream."))return;let[t]=new URL(e).pathname.slice(1).split(".m3u8");return t||void 0},st=e=>{var t,n,r;return(t=e==null?void 0:e.metadata)!=null&&t.video_id?e.metadata.video_id:z(e)&&(r=(n=ot(e.playbackId))!=null?n:at(e.src))!=null?r:e.src},it=e=>{var t;return(t=m.get(e))==null?void 0:t.error},ct=e=>{var t,n;return(n=(t=m.get(e))==null?void 0:t.streamType)!=null?n:v.UNKNOWN},ut=e=>{var t,n;return(n=(t=m.get(e))==null?void 0:t.targetLiveWindow)!=null?n:Number.NaN},ke=e=>{var t,n;return(n=(t=m.get(e))==null?void 0:t.seekable)!=null?n:e.seekable},dt=e=>{var r;let t=(r=m.get(e))==null?void 0:r.liveEdgeStartOffset;if(typeof t!="number")return Number.NaN;let n=ke(e);return n.length?n.end(n.length-1)-t:Number.NaN},q=.034,lt=(e,t,n=q)=>Math.abs(e-t)<=n,Ee=(e,t,n=q)=>e>t||lt(e,t,n),he=(e,t=q)=>e.paused&&Ee(e.currentTime,e.duration,t),$=(e,t)=>{var c,l,u;if(!t)return;if(e.readyState>2)return!1;let n=t.currentLevel>=0?(l=(c=t.levels)==null?void 0:c[t.currentLevel])==null?void 0:l.details:(u=t.levels.find(p=>!!p.details))==null?void 0:u.details;if(!n||n.live)return;let{fragments:r}=n;if(!(r!=null&&r.length))return;if(e.currentTime<e.duration-(n.targetduration+.5))return!1;let o=r[r.length-1];if(e.currentTime<=o.start)return!1;let a=o.start+o.duration/2,i=e.buffered.start(e.buffered.length-1),s=e.buffered.end(e.buffered.length-1);return a>i&&a<s},Ce=(e,t)=>e.ended||e.loop?e.ended:t&&$(e,t)?!0:he(e),pt=(e,t,n)=>{Se(t,n);let{metadata:r={}}=e,{view_session_id:o=Pe()}=r,a=st(e);r.view_session_id=o,r.video_id=a,e.metadata=r,m.set(t,{});let i=De(e,t);Ie(e,t,i),we(e,t,i),B(t);let s=re(e,t,i),d=oe(e,t,i);return{engine:i,setAutoplay:s,setPreload:d}},Se=(e,t)=>{let n=t==null?void 0:t.engine;n&&(n.detachMedia(),n.destroy()),e!=null&&e.mux&&!e.mux.deleted&&(e.mux.destroy(),delete e.mux),e&&(e.removeAttribute("src"),e.load(),e.removeEventListener("error",Ne),e.removeEventListener("error",Y),e.removeEventListener("durationchange",He),m.delete(e),e.dispatchEvent(new Event("teardown")))};function Ae(e,t){var c;let n=C(e);if(!(n===b.M3U8))return!0;let o=!n||((c=t.canPlayType(n))!=null?c:!0),{preferPlayback:a}=e,i=a===w.MSE,s=a===w.NATIVE;return o&&(s||!(Le&&(i||tt)))}var De=(e,t)=>{let{debug:n,streamType:r,startTime:o=-1,metadata:a,preferCmcd:i,_hlsConfig:s={}}=e,c=C(e)===b.M3U8,l=Ae(e,t);if(c&&!l&&Le){let u={backBufferLength:30,renderTextTracksNatively:!1,liveDurationInfinity:!0,capLevelToPlayerSize:!0,capLevelOnFPSDrop:!0},p=Re(r),T=i!==k.NONE?{useHeaders:i===k.HEADER,sessionId:a==null?void 0:a.view_session_id,contentId:a==null?void 0:a.video_id}:void 0;return new f({debug:n,startPosition:o,cmcd:T,xhrSetup:(N,L)=>{var X,G;if(i&&i!==k.QUERY)return;let P=new URL(L);if(!P.searchParams.has("CMCD"))return;let _e=((G=(X=P.searchParams.get("CMCD"))==null?void 0:X.split(","))!=null?G:[]).filter(j=>j.startsWith("sid")||j.startsWith("cid")).join(",");P.searchParams.set("CMCD",_e),N.open("GET",P)},...u,...p,...s})}},Re=e=>e===v.LIVE?{backBufferLength:8}:{},z=({playbackId:e,src:t,customDomain:n})=>{if(e)return!0;if(typeof t!="string")return!1;let r=window==null?void 0:window.location.href,o=new URL(t,r).hostname.toLocaleLowerCase();return o.includes(xe)||!!n&&o.includes(n.toLocaleLowerCase())},Ie=(e,t,n)=>{var a;let{envKey:r}=e,o=z(e);if(r||o){let{playerInitTime:i,playerSoftwareName:s,playerSoftwareVersion:d,beaconCollectionDomain:c,debug:l,disableCookies:u}=e,p={...e.metadata,video_title:((a=e==null?void 0:e.metadata)==null?void 0:a.video_title)||void 0},T=y=>typeof y.player_error_code=="string"?!1:typeof e.errorTranslator=="function"?e.errorTranslator(y):y;D.default.monitor(t,{debug:l,beaconCollectionDomain:c,hlsjs:n,Hls:n?f:void 0,automaticErrorTracking:!1,errorTranslator:T,disableCookies:u,data:{...r?{env_key:r}:{},player_software_name:s,player_software:s,player_software_version:d,player_init_time:i,...p}})}},we=(e,t,n)=>{var i;let r=Ae(e,t),{src:o}=e,a=s=>{t.ended||!Ce(t,n)||($(t,n)?t.currentTime=t.buffered.end(t.buffered.length-1):t.dispatchEvent(new Event("ended")))};if(t&&r){let s=C(e);typeof o=="string"?(t.preload==="none"?g(t,"loadstart",()=>K(o,t,s)):K(o,t,s),t.setAttribute("src",o),e.startTime&&(((i=m.get(t))!=null?i:{}).startTime=e.startTime,t.addEventListener("durationchange",He,{once:!0}))):t.removeAttribute("src"),t.addEventListener("error",Ne),t.addEventListener("error",Y),t.addEventListener("emptied",()=>{t.querySelectorAll("track[data-removeondestroy]").forEach(c=>{c.remove()})},{once:!0}),g(t,"pause",a),g(t,"seeked",a),g(t,"play",()=>{t.ended||Ee(t.currentTime,t.duration)&&(t.currentTime=t.seekable.start(0))})}else n&&o?(n.once(f.Events.LEVEL_LOADED,(s,d)=>{be(d.details,t,n)}),n.on(f.Events.ERROR,(s,d)=>{let c={[f.ErrorTypes.NETWORK_ERROR]:x.MEDIA_ERR_NETWORK,[f.ErrorTypes.MEDIA_ERROR]:x.MEDIA_ERR_DECODE},l=new x("",c[d.type]);l.fatal=d.fatal,l.data=d,t.dispatchEvent(new CustomEvent("error",{detail:l}))}),t.addEventListener("error",Y),g(t,"waiting",a),ae(e,n),se(t,n),n.attachMedia(t)):console.error("It looks like the video you're trying to play will not work on this system! If possible, try upgrading to the newest versions of your browser or software.")};function He(e){var r;let t=e.target,n=(r=m.get(t))==null?void 0:r.startTime;if(n&&ee(t.seekable,t.duration,n)){let o=t.preload==="auto";o&&(t.preload="none"),t.currentTime=n,o&&(t.preload="auto")}}async function Ne(e){if(!e.isTrusted)return;e.stopImmediatePropagation();let t=e.target;if(!(t!=null&&t.error))return;let{message:n,code:r}=t.error,o=new x(n,r);if(t.src&&(r!==x.MEDIA_ERR_DECODE||r!==void 0))try{let{status:a}=await fetch(t.src);o.data={response:{code:a}}}catch{}t.dispatchEvent(new CustomEvent("error",{detail:o}))}function Y(e){var r,o;if(!(e instanceof CustomEvent)||!(e.detail instanceof x))return;let t=e.target,n=e.detail;!n||!n.fatal||(((r=m.get(t))!=null?r:{}).error=n,(o=t.mux)==null||o.emit("error",{player_error_code:n.code,player_error_message:n.message,player_error_context:n.context}))} | ||
//# sourceMappingURL=index.cjs.js.map |
@@ -60,4 +60,9 @@ /// <reference path="mux-embed.d.ts" /> | ||
export declare const getLiveEdgeStart: (mediaEl: HTMLMediaElement) => number; | ||
export declare const isPseudoEnded: (mediaEl: HTMLMediaElement) => boolean; | ||
export declare const getEnded: (mediaEl: HTMLMediaElement, hls?: HlsInterface) => boolean; | ||
export declare const isPseudoEnded: (mediaEl: HTMLMediaElement, moe?: number) => boolean; | ||
export declare const isStuckOnLastFragment: (mediaEl: HTMLMediaElement, hls?: Pick<Hls, | ||
/** Should we add audio fragments logic here, too? (CJP) */ | ||
'levels' | 'currentLevel'>) => boolean | undefined; | ||
export declare const getEnded: (mediaEl: HTMLMediaElement, hls?: Pick<Hls, | ||
/** Should we add audio fragments logic here, too? (CJP) */ | ||
'levels' | 'currentLevel'>) => boolean; | ||
export declare const initialize: (props: Partial<MuxMediaPropsInternal>, mediaEl: HTMLMediaElement, core?: PlaybackCore) => { | ||
@@ -73,2 +78,2 @@ engine: Hls | undefined; | ||
export declare const setupMux: (props: Partial<Pick<MuxMediaPropsInternal, 'envKey' | 'playerInitTime' | 'beaconCollectionDomain' | 'errorTranslator' | 'metadata' | 'debug' | 'playerSoftwareName' | 'playerSoftwareVersion' | 'playbackId' | 'src' | 'customDomain' | 'disableCookies'>>, mediaEl: HTMLMediaElement, hlsjs?: HlsInterface) => void; | ||
export declare const loadMedia: (props: Partial<Pick<MuxMediaProps, 'preferPlayback' | 'src' | 'type' | 'startTime' | 'streamType' | 'autoplay'>>, mediaEl: HTMLMediaElement, hls?: Pick<Hls, 'config' | 'on' | 'once' | 'off' | 'trigger' | 'startLoad' | 'stopLoad' | 'recoverMediaError' | 'destroy' | 'loadSource' | 'attachMedia' | 'liveSyncPosition' | 'subtitleTracks' | 'subtitleTrack' | 'userConfig' | 'audioTrack' | 'audioTracks' | 'autoLevelEnabled' | 'nextLevel' | 'levels'>) => void; | ||
export declare const loadMedia: (props: Partial<Pick<MuxMediaProps, 'preferPlayback' | 'src' | 'type' | 'startTime' | 'streamType' | 'autoplay'>>, mediaEl: HTMLMediaElement, hls?: Pick<Hls, 'config' | 'on' | 'once' | 'off' | 'trigger' | 'startLoad' | 'stopLoad' | 'recoverMediaError' | 'destroy' | 'loadSource' | 'attachMedia' | 'liveSyncPosition' | 'subtitleTracks' | 'subtitleTrack' | 'userConfig' | 'audioTrack' | 'audioTracks' | 'autoLevelEnabled' | 'nextLevel' | 'levels' | 'currentLevel'>) => void; |
/// <reference path="mux-embed.d.ts" /> | ||
import { Options } from 'mux-embed'; | ||
import { MediaError } from './errors'; | ||
import { VideoTrack, AudioTrack, VideoTrackList, AudioTrackList } from 'media-tracks'; | ||
import { HlsConfig } from 'hls.js'; | ||
@@ -112,8 +111,2 @@ import Hls from 'hls.js'; | ||
}; | ||
export interface MediaTracks { | ||
videoTracks: VideoTrackList; | ||
audioTracks: AudioTrackList; | ||
addAudioTrack(kind: string, label?: string, language?: string): AudioTrack; | ||
addVideoTrack(kind: string, label?: string, language?: string): VideoTrack; | ||
} | ||
export type HTMLMediaElementProps = Partial<Pick<HTMLMediaElement, 'src' | 'preload' | 'error' | 'seekable'>>; | ||
@@ -120,0 +113,0 @@ export type MuxMediaProps = HTMLMediaElementProps & MuxMediaPropTypes; |
@@ -60,4 +60,9 @@ /// <reference path="mux-embed.d.ts" /> | ||
export declare const getLiveEdgeStart: (mediaEl: HTMLMediaElement) => number; | ||
export declare const isPseudoEnded: (mediaEl: HTMLMediaElement) => boolean; | ||
export declare const getEnded: (mediaEl: HTMLMediaElement, hls?: HlsInterface) => boolean; | ||
export declare const isPseudoEnded: (mediaEl: HTMLMediaElement, moe?: number) => boolean; | ||
export declare const isStuckOnLastFragment: (mediaEl: HTMLMediaElement, hls?: Pick<Hls, | ||
/** Should we add audio fragments logic here, too? (CJP) */ | ||
'levels' | 'currentLevel'>) => boolean | undefined; | ||
export declare const getEnded: (mediaEl: HTMLMediaElement, hls?: Pick<Hls, | ||
/** Should we add audio fragments logic here, too? (CJP) */ | ||
'levels' | 'currentLevel'>) => boolean; | ||
export declare const initialize: (props: Partial<MuxMediaPropsInternal>, mediaEl: HTMLMediaElement, core?: PlaybackCore) => { | ||
@@ -73,2 +78,2 @@ engine: Hls | undefined; | ||
export declare const setupMux: (props: Partial<Pick<MuxMediaPropsInternal, 'envKey' | 'playerInitTime' | 'beaconCollectionDomain' | 'errorTranslator' | 'metadata' | 'debug' | 'playerSoftwareName' | 'playerSoftwareVersion' | 'playbackId' | 'src' | 'customDomain' | 'disableCookies'>>, mediaEl: HTMLMediaElement, hlsjs?: HlsInterface) => void; | ||
export declare const loadMedia: (props: Partial<Pick<MuxMediaProps, 'preferPlayback' | 'src' | 'type' | 'startTime' | 'streamType' | 'autoplay'>>, mediaEl: HTMLMediaElement, hls?: Pick<Hls, 'config' | 'on' | 'once' | 'off' | 'trigger' | 'startLoad' | 'stopLoad' | 'recoverMediaError' | 'destroy' | 'loadSource' | 'attachMedia' | 'liveSyncPosition' | 'subtitleTracks' | 'subtitleTrack' | 'userConfig' | 'audioTrack' | 'audioTracks' | 'autoLevelEnabled' | 'nextLevel' | 'levels'>) => void; | ||
export declare const loadMedia: (props: Partial<Pick<MuxMediaProps, 'preferPlayback' | 'src' | 'type' | 'startTime' | 'streamType' | 'autoplay'>>, mediaEl: HTMLMediaElement, hls?: Pick<Hls, 'config' | 'on' | 'once' | 'off' | 'trigger' | 'startLoad' | 'stopLoad' | 'recoverMediaError' | 'destroy' | 'loadSource' | 'attachMedia' | 'liveSyncPosition' | 'subtitleTracks' | 'subtitleTrack' | 'userConfig' | 'audioTrack' | 'audioTracks' | 'autoLevelEnabled' | 'nextLevel' | 'levels' | 'currentLevel'>) => void; |
/// <reference path="mux-embed.d.ts" /> | ||
import type { Options } from 'mux-embed'; | ||
import type { MediaError } from './errors'; | ||
import type { VideoTrack, AudioTrack, VideoTrackList, AudioTrackList } from 'media-tracks'; | ||
import type { HlsConfig } from 'hls.js'; | ||
@@ -112,8 +111,2 @@ import type Hls from 'hls.js'; | ||
}; | ||
export interface MediaTracks { | ||
videoTracks: VideoTrackList; | ||
audioTracks: AudioTrackList; | ||
addAudioTrack(kind: string, label?: string, language?: string): AudioTrack; | ||
addVideoTrack(kind: string, label?: string, language?: string): VideoTrack; | ||
} | ||
export type HTMLMediaElementProps = Partial<Pick<HTMLMediaElement, 'src' | 'preload' | 'error' | 'seekable'>>; | ||
@@ -120,0 +113,0 @@ export type MuxMediaProps = HTMLMediaElementProps & MuxMediaPropTypes; |
{ | ||
"name": "@mux/playback-core", | ||
"version": "0.22.0", | ||
"version": "0.22.1-canary.0-40792e0", | ||
"description": "Core library for media playback in the browser shared by mux elements", | ||
@@ -62,4 +62,4 @@ "main": "./dist/index.cjs.js", | ||
"dependencies": { | ||
"hls.js": "^1.4.12", | ||
"mux-embed": "^4.27.0" | ||
"hls.js": "~1.4.13", | ||
"mux-embed": "~4.30.0" | ||
}, | ||
@@ -79,4 +79,3 @@ "devDependencies": { | ||
"typescript": "^4.9.4" | ||
}, | ||
"gitHead": "c30b7d53c74b0f5d37ba7fecb4cd1c1c949aa4c5" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
5166341
40
6531
+ Addedhls.js@1.4.14(transitive)
- Removedhls.js@1.5.20(transitive)
Updatedhls.js@~1.4.13
Updatedmux-embed@~4.30.0