@mux/playback-core 0.23.1 → 0.24.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/index.cjs.js +3 -3
- package/dist/index.cjs.js.map +3 -3
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +3 -3
- package/dist/playback-core.js +16 -16
- package/dist/playback-core.js.map +3 -3
- package/dist/playback-core.mjs +16 -16
- package/dist/playback-core.mjs.map +3 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/index.d.ts +5 -3
- package/dist/types/text-tracks.d.ts +25 -10
- package/dist/types/types.d.ts +9 -1
- package/dist/types-ts3.4/index.d.ts +5 -3
- package/dist/types-ts3.4/text-tracks.d.ts +25 -10
- package/dist/types-ts3.4/types.d.ts +9 -1
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import W from"mux-embed";import ge from"hls.js";var T=ge;var v=class v extends Error{constructor(n,r=v.MEDIA_ERR_CUSTOM,o,a){var i;super(n);this.name="MediaError",this.code=r,this.context=a,this.fatal=o!=null?o:r>=v.MEDIA_ERR_NETWORK&&r<=v.MEDIA_ERR_ENCRYPTED,this.message||(this.message=(i=v.defaultMessages[this.code])!=null?i:"")}};v.MEDIA_ERR_ABORTED=1,v.MEDIA_ERR_NETWORK=2,v.MEDIA_ERR_DECODE=3,v.MEDIA_ERR_SRC_NOT_SUPPORTED=4,v.MEDIA_ERR_ENCRYPTED=5,v.MEDIA_ERR_CUSTOM=100,v.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=v;var Me=t=>t==null,I=(t,e)=>Me(e)?!1:t in e,C={ANY:"any",MUTED:"muted"},g={ON_DEMAND:"on-demand",LIVE:"live",UNKNOWN:"unknown"},N={MSE:"mse",NATIVE:"native"},E={HEADER:"header",QUERY:"query",NONE:"none"},Xe=Object.values(E),b={M3U8:"application/vnd.apple.mpegurl",MP4:"video/mp4"},A={HLS:b.M3U8},Ge=Object.keys(A),je=[...Object.values(b),"hls","HLS"],Qe={upTo720p:"720p",upTo1080p:"1080p",upTo1440p:"1440p",upTo2160p:"2160p"},Je={noLessThan480p:"480p",noLessThan540p:"540p",noLessThan720p:"720p",noLessThan1080p:"1080p",noLessThan1440p:"1440p",noLessThan2160p:"2160p"},Ze={DESCENDING:"desc"};var y=(t,e,n,r,o=t)=>{o.addEventListener(e,n,r),t.addEventListener("teardown",()=>{o.removeEventListener(e,n)},{once:!0})};function $(t,e,n){e&&n>e&&(n=e);for(let r=0;r<t.length;r++)if(t.start(r)<=n&&t.end(r)>=n)return!0;return!1}var z=t=>{let e=t.indexOf("?");if(e<0)return[t];let n=t.slice(0,e),r=t.slice(e);return[n,r]},h=t=>{let e=t.type;if(e){let r=e.toUpperCase();return I(r,A)?A[r]:e}let{src:n}=t;return n?ve(n):""},R=t=>t==="VOD"?g.ON_DEMAND:g.LIVE,w=t=>t==="EVENT"?Number.POSITIVE_INFINITY:t==="VOD"?Number.NaN:0,ve=t=>{let e="";try{e=new URL(t).pathname}catch{console.error("invalid url")}let n=e.lastIndexOf(".");if(n<0)return"";let o=e.slice(n+1).toUpperCase();return I(o,b)?b[o]:""};var be=Object.values(C),X=t=>typeof t=="boolean"||typeof t=="string"&&be.includes(t),G=(t,e,n)=>{let{autoplay:r}=t,o=!1,a=!1,i=X(r)?r:!!r,c=()=>{o||y(e,"playing",()=>{o=!0},{once:!0})};if(c(),y(e,"loadstart",()=>{o=!1,c(),H(e,i)},{once:!0}),y(e,"loadstart",()=>{n||(t.streamType&&t.streamType!==g.UNKNOWN?a=t.streamType===g.LIVE:a=!Number.isFinite(e.duration)),H(e,i)},{once:!0}),n&&n.once(T.Events.LEVEL_LOADED,(u,d)=>{var s;t.streamType&&t.streamType!==g.UNKNOWN?a=t.streamType===g.LIVE:a=(s=d.details.live)!=null?s:!1}),!i){let u=()=>{!a||Number.isFinite(t.startTime)||(n!=null&&n.liveSyncPosition?e.currentTime=n.liveSyncPosition:Number.isFinite(e.seekable.end(0))&&(e.currentTime=e.seekable.end(0)))};n&&y(e,"play",()=>{e.preload==="metadata"?n.once(T.Events.LEVEL_UPDATED,u):u()},{once:!0})}return u=>{o||(i=X(u)?u:!!u,H(e,i))}},H=(t,e)=>{if(!e)return;let n=t.muted,r=()=>t.muted=n;switch(e){case C.ANY:t.play().catch(()=>{t.muted=!0,t.play().catch(r)});break;case C.MUTED:t.muted=!0,t.play().catch(r);break;default:t.play().catch(()=>{});break}};var j=({preload:t,src:e},n,r)=>{let o=s=>{s!=null&&["","none","metadata","auto"].includes(s)?n.setAttribute("preload",s):n.removeAttribute("preload")};if(!r)return o(t),o;let a=!1,i=!1,c=r.config.maxBufferLength,p=r.config.maxBufferSize,u=s=>{o(s);let l=s!=null?s:n.preload;i||l==="none"||(l==="metadata"?(r.config.maxBufferLength=1,r.config.maxBufferSize=1):(r.config.maxBufferLength=c,r.config.maxBufferSize=p),d())},d=()=>{!a&&e&&(a=!0,r.loadSource(e))};return y(n,"play",()=>{i=!0,r.config.maxBufferLength=c,r.config.maxBufferSize=p,d()},{once:!0}),u(t),u};function Q(t,e){var p;if(!("videoTracks"in t))return;let n=new WeakMap;e.on(T.Events.MANIFEST_PARSED,function(u,d){c();let s=t.addVideoTrack("main");s.selected=!0;for(let[l,f]of d.levels.entries()){let m=s.addRendition(f.url[0],f.width,f.height,f.videoCodec,f.bitrate);n.set(f,`${l}`),m.id=`${l}`}}),e.on(T.Events.AUDIO_TRACKS_UPDATED,function(u,d){i();for(let s of d.audioTracks){let l=s.default?"main":"alternative",f=t.addAudioTrack(l,s.name,s.lang);f.id=`${s.id}`,s.default&&(f.enabled=!0)}}),t.audioTracks.addEventListener("change",()=>{var s;let u=+((s=[...t.audioTracks].find(l=>l.enabled))==null?void 0:s.id),d=e.audioTracks.map(l=>l.id);u!=e.audioTrack&&d.includes(u)&&(e.audioTrack=u)}),e.on(T.Events.LEVELS_UPDATED,function(u,d){var f;let s=t.videoTracks[(f=t.videoTracks.selectedIndex)!=null?f:0];if(!s)return;let l=d.levels.map(m=>n.get(m));for(let m of t.videoRenditions)m.id&&!l.includes(m.id)&&s.removeRendition(m)});let r=u=>{let d=u.target.selectedIndex;d!=e.nextLevel&&o(d)},o=u=>{let d=t.currentTime,s=!1,l=(f,m)=>{s||(s=!Number.isFinite(m.endOffset))};e.on(T.Events.BUFFER_FLUSHING,l),e.nextLevel=u,e.off(T.Events.BUFFER_FLUSHING,l),s||e.trigger(T.Events.BUFFER_FLUSHING,{startOffset:d+10,endOffset:1/0,type:"video"})};(p=t.videoRenditions)==null||p.addEventListener("change",r);let a=()=>{for(let u of t.videoTracks)t.removeVideoTrack(u)},i=()=>{for(let u of t.audioTracks)t.removeAudioTrack(u)},c=()=>{a(),i()};e.once(T.Events.DESTROYING,c)}function J(t,e){e.on(T.Events.NON_NATIVE_TEXT_TRACKS_FOUND,(o,{tracks:a})=>{a.forEach(i=>{var u;let c=(u=i.subtitleTrack)!=null?u:i.closedCaptions,p=e.subtitleTracks.findIndex(({lang:d,name:s,type:l})=>d==(c==null?void 0:c.lang)&&s===i.label&&l.toLowerCase()===i.kind);_(t,i.kind,i.label,c==null?void 0:c.lang,`${i.kind}${p}`)})});let n=()=>{var i;if(!e.subtitleTracks.length)return;let o=Array.from(t.textTracks).find(c=>c.id&&c.mode==="showing"&&["subtitles","captions"].includes(c.kind)),a=`${(i=e.subtitleTracks[e.subtitleTrack])==null?void 0:i.type.toLowerCase()}${e.subtitleTrack}`;if(o&&(e.subtitleTrack<0||(o==null?void 0:o.id)!==a)){let c=e.subtitleTracks.findIndex(({lang:p,name:u,type:d})=>p==o.language&&u===o.label&&d.toLowerCase()===o.kind);e.subtitleTrack=c}o&&(o==null?void 0:o.id)===a&&o.cues&&Array.from(o.cues).forEach(c=>{o.addCue(c)})};t.textTracks.addEventListener("change",n),e.on(T.Events.CUES_PARSED,(o,{track:a,cues:i})=>{let c=t.textTracks.getTrackById(a);if(!c)return;let p=c.mode==="disabled";p&&(c.mode="hidden"),i.forEach(u=>{var d;(d=c.cues)!=null&&d.getCueById(u.id)||c.addCue(u)}),p&&(c.mode="disabled")}),e.once(T.Events.DESTROYING,()=>{t.textTracks.removeEventListener("change",n),t.querySelectorAll("track[data-removeondestroy]").forEach(a=>{a.remove()})});let r=()=>{Array.from(t.textTracks).forEach(o=>{var a,i;if(!["subtitles","caption"].includes(o.kind)&&o.label==="thumbnails"){if(!((a=o.cues)!=null&&a.length)){let c=t.querySelector('track[label="thumbnails"]'),p=(i=c==null?void 0:c.getAttribute("src"))!=null?i:"";c==null||c.removeAttribute("src"),setTimeout(()=>{c==null||c.setAttribute("src",p)},0)}o.mode!=="hidden"&&(o.mode="hidden")}})};e.once(T.Events.MANIFEST_LOADED,r),e.once(T.Events.MEDIA_ATTACHED,r)}function _(t,e,n,r,o){let a=document.createElement("track");return a.kind=e,a.label=n,r&&(a.srclang=r),o&&(a.id=o),a.track.mode=["subtitles","captions"].includes(e)?"disabled":"hidden",a.setAttribute("data-removeondestroy",""),t.append(a),a.track}function xe(t,e){let n=Array.prototype.find.call(t.querySelectorAll("track"),r=>r.track===e);n==null||n.remove()}var S="cuepoints",O=Object.freeze({label:S}),D=(t,{label:e=S}=O)=>{var n;return(n=Array.from(t.querySelectorAll("track")).find(r=>r.track.label===e&&r.track.kind==="metadata"))==null?void 0:n.track};async function Z(t,e,n=O){let r=D(t,n);if(!r){let{label:o=S}=n;r=_(t,"metadata",o),r.mode="hidden",await new Promise(a=>setTimeout(()=>a(void 0),0))}return r.mode!=="hidden"&&(r.mode="hidden"),[...e].sort(({time:o},{time:a})=>a-o).forEach(({time:o,value:a})=>{var s,l;let i=Array.prototype.findIndex.call(r==null?void 0:r.cues,f=>f.startTime>=o),c=(s=r==null?void 0:r.cues)==null?void 0:s[i],p=c?c.startTime:Number.isFinite(t.duration)?t.duration:Number.MAX_SAFE_INTEGER,u=(l=r==null?void 0:r.cues)==null?void 0:l[i-1];u&&(u.endTime=o);let d=new VTTCue(o,p,JSON.stringify(a!=null?a:null));r.addCue(d)}),r}var ee=t=>({time:t.startTime,value:JSON.parse(t.text)});function Le(t,e={label:S}){let n=D(t,e);return n!=null&&n.cues?Array.from(n.cues,r=>ee(r)):[]}function te(t,e={label:S}){var a,i;let n=D(t,e);if(!((a=n==null?void 0:n.activeCues)!=null&&a.length))return;let{currentTime:r}=t,o=Array.prototype.find.call((i=n.activeCues)!=null?i:[],({startTime:c,endTime:p})=>c<=r&&p>r);return ee(o)}async function ne(t,e=O){return new Promise(n=>{y(t,"loadstart",async()=>{let r=await Z(t,[],e);y(t,"cuechange",()=>{let o=te(t);if(o){let a=new CustomEvent("cuepointchange",{composed:!0,bubbles:!0,detail:o});t.dispatchEvent(a)}},{},r),n(r)})})}function Pe(t,e){if(e){let n=e.playingDate;if(n!=null)return new Date(n.getTime()-t.currentTime*1e3)}return typeof t.getStartDate=="function"?t.getStartDate():new Date(NaN)}function ke(t,e){if(e&&e.playingDate)return e.playingDate;if(typeof t.getStartDate=="function"){let n=t.getStartDate();return new Date(n.getTime()+t.currentTime*1e3)}return new Date(NaN)}var Ee=async t=>fetch(t).then(e=>e.text()).then(e=>{let n=e.split(`
|
|
2
|
-
`).find((r,o
|
|
3
|
-
`))}),he=t=>{var i,c,p;let n=(c=((i=t.find(u=>u.startsWith("#EXT-X-PLAYLIST-TYPE")))!=null?i:"").split(":")[1])==null?void 0:c.trim(),r=R(n),o=w(n),a;if(r===g.LIVE){let u=t.find(s=>s.startsWith("#EXT-X-PART-INF"));if(!!u)a=+u.split(":")[1].split("=")[1]*2;else{let s=t.find(m=>m.startsWith("#EXT-X-TARGETDURATION")),l=(p=s==null?void 0:s.split(":"))==null?void 0:p[1];a=+(l!=null?l:6)*3}}return{streamType:r,targetLiveWindow:o,liveEdgeStartOffset:a}},Se=async(t,e)=>{if(e===b.MP4)return{streamType:g.ON_DEMAND,targetLiveWindow:Number.NaN,liveEdgeStartOffset:void 0};if(e===b.M3U8){let n=await Ee(t);return he(n)}return console.error(`Media type ${e} is an unrecognized or unsupported type for src ${t}.`),{streamType:void 0,targetLiveWindow:void 0,liveEdgeStartOffset:void 0}},V=async(t,e,n=h({src:t}))=>{var i,c,p;let{streamType:r,targetLiveWindow:o,liveEdgeStartOffset:a}=await Se(t,n);((i=M.get(e))!=null?i:{}).liveEdgeStartOffset=a,((c=M.get(e))!=null?c:{}).targetLiveWindow=o,e.dispatchEvent(new CustomEvent("targetlivewindowchange",{composed:!0,bubbles:!0})),((p=M.get(e))!=null?p:{}).streamType=r,e.dispatchEvent(new CustomEvent("streamtypechange",{composed:!0,bubbles:!0}))},Ce=t=>{var i;let e=t.type,n=R(e),r=w(e),o,a=!!((i=t.partList)!=null&&i.length);return n===g.LIVE&&(o=a?t.partTarget*2:t.targetduration*3),{streamType:n,targetLiveWindow:r,liveEdgeStartOffset:o,lowLatency:a}},Ae=(t,e,n)=>{var c,p,u,d,s,l,f,m;let{streamType:r,targetLiveWindow:o,liveEdgeStartOffset:a,lowLatency:i}=Ce(t);if(r===g.LIVE){i?(n.config.backBufferLength=(c=n.userConfig.backBufferLength)!=null?c:4,n.config.maxFragLookUpTolerance=(p=n.userConfig.maxFragLookUpTolerance)!=null?p:.001,n.config.abrBandWidthUpFactor=(u=n.userConfig.abrBandWidthUpFactor)!=null?u:n.config.abrBandWidthFactor):n.config.backBufferLength=(d=n.userConfig.backBufferLength)!=null?d:8;let P=Object.freeze({get length(){return e.seekable.length},start(L){return e.seekable.start(L)},end(L){var k;return L>this.length||L<0||Number.isFinite(e.duration)?e.seekable.end(L):(k=n.liveSyncPosition)!=null?k:e.seekable.end(L)}});((s=M.get(e))!=null?s:{}).seekable=P}((l=M.get(e))!=null?l:{}).liveEdgeStartOffset=a,((f=M.get(e))!=null?f:{}).targetLiveWindow=o,e.dispatchEvent(new CustomEvent("targetlivewindowchange",{composed:!0,bubbles:!0})),((m=M.get(e))!=null?m:{}).streamType=r,e.dispatchEvent(new CustomEvent("streamtypechange",{composed:!0,bubbles:!0}))},oe,ae,De=(ae=(oe=globalThis==null?void 0:globalThis.navigator)==null?void 0:oe.userAgent)!=null?ae:"",Ie=De.toLowerCase().indexOf("android")!==-1,M=new WeakMap,ce="mux.com",se,ie,ue=(ie=(se=T).isSupported)==null?void 0:ie.call(se),Ne=Ie,Nt=()=>W.utils.now(),Re=W.utils.generateUUID,Rt=({playbackId:t,customDomain:e=ce,maxResolution:n,minResolution:r,renditionOrder:o,tokens:{playback:a}={},extraSourceParams:i={}}={})=>{if(!t)return;let[c,p=""]=z(t),u=new URL(`https://stream.${e}/${c}.m3u8${p}`);return a||u.searchParams.has("token")?(u.searchParams.forEach((d,s)=>{s!="token"&&u.searchParams.delete(s)}),a&&u.searchParams.set("token",a)):(n&&u.searchParams.set("max_resolution",n),r&&(u.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&&u.searchParams.set("rendition_order",o),Object.entries(i).forEach(([d,s])=>{s!=null&&u.searchParams.set(d,s)})),u.toString()},we=t=>{if(!t)return;let[e]=t.split("?");return e||void 0},He=t=>{if(!t||!t.startsWith("https://stream."))return;let[e]=new URL(t).pathname.slice(1).split(".m3u8");return e||void 0},_e=t=>{var e,n,r;return(e=t==null?void 0:t.metadata)!=null&&e.video_id?t.metadata.video_id:fe(t)&&(r=(n=we(t.playbackId))!=null?n:He(t.src))!=null?r:t.src},wt=t=>{var e;return(e=M.get(t))==null?void 0:e.error},re=t=>{var e,n;return(n=(e=M.get(t))==null?void 0:e.streamType)!=null?n:g.UNKNOWN},Ht=t=>{var e,n;return(n=(e=M.get(t))==null?void 0:e.targetLiveWindow)!=null?n:Number.NaN},U=t=>{var e,n;return(n=(e=M.get(t))==null?void 0:e.seekable)!=null?n:t.seekable},_t=t=>{var r;let e=(r=M.get(t))==null?void 0:r.liveEdgeStartOffset;if(typeof e!="number")return Number.NaN;let n=U(t);return n.length?n.end(n.length-1)-e:Number.NaN},B=.034,Oe=(t,e,n=B)=>Math.abs(t-e)<=n,de=(t,e,n=B)=>t>e||Oe(t,e,n),Ve=(t,e=B)=>t.paused&&de(t.currentTime,t.duration,e),le=(t,e)=>{var u,d,s;if(!e)return;if(t.readyState>2)return!1;let n=e.currentLevel>=0?(d=(u=e.levels)==null?void 0:u[e.currentLevel])==null?void 0:d.details:(s=e.levels.find(l=>!!l.details))==null?void 0:s.details;if(!n||n.live)return;let{fragments:r}=n;if(!(r!=null&&r.length))return;if(t.currentTime<t.duration-(n.targetduration+.5))return!1;let o=r[r.length-1];if(t.currentTime<=o.start)return!1;let a=o.start+o.duration/2,i=t.buffered.start(t.buffered.length-1),c=t.buffered.end(t.buffered.length-1);return a>i&&a<c},Ue=(t,e)=>t.ended||t.loop?t.ended:e&&le(t,e)?!0:Ve(t),Ot=(t,e,n)=>{Fe(e,n);let{metadata:r={}}=t,{view_session_id:o=Re()}=r,a=_e(t);r.view_session_id=o,r.video_id=a,t.metadata=r,M.set(e,{});let i=We(t,e),c=j(t,e,i);Ke(t,e,i),Ye(t,e,i),ne(e);let p=G(t,e,i);return{engine:i,setAutoplay:p,setPreload:c}},Fe=(t,e)=>{let n=e==null?void 0:e.engine;n&&(n.detachMedia(),n.destroy()),t!=null&&t.mux&&!t.mux.deleted&&(t.mux.destroy(),delete t.mux),t&&(t.removeAttribute("src"),t.load(),t.removeEventListener("error",ye),t.removeEventListener("error",F),t.removeEventListener("durationchange",Te),M.delete(t),t.dispatchEvent(new Event("teardown")))};function pe(t,e){var u;let n=h(t);if(!(n===b.M3U8))return!0;let o=!n||((u=e.canPlayType(n))!=null?u:!0),{preferPlayback:a}=t,i=a===N.MSE,c=a===N.NATIVE;return o&&(c||!(ue&&(i||Ne)))}var We=(t,e)=>{let{debug:n,streamType:r,startTime:o=-1,metadata:a,preferCmcd:i,_hlsConfig:c={}}=t,u=h(t)===b.M3U8,d=pe(t,e);if(u&&!d&&ue){let s={backBufferLength:30,renderTextTracksNatively:!1,liveDurationInfinity:!0,capLevelToPlayerSize:!0,capLevelOnFPSDrop:!0},l=Be(r),f=i!==E.NONE?{useHeaders:i===E.HEADER,sessionId:a==null?void 0:a.view_session_id,contentId:a==null?void 0:a.video_id}:void 0;return new T({debug:n,startPosition:o,cmcd:f,xhrSetup:(P,L)=>{var K,Y;if(i&&i!==E.QUERY)return;let k=new URL(L);if(!k.searchParams.has("CMCD"))return;let me=((Y=(K=k.searchParams.get("CMCD"))==null?void 0:K.split(","))!=null?Y:[]).filter(q=>q.startsWith("sid")||q.startsWith("cid")).join(",");k.searchParams.set("CMCD",me),P.open("GET",k)},...s,...l,...c})}},Be=t=>t===g.LIVE?{backBufferLength:8}:{},fe=({playbackId:t,src:e,customDomain:n})=>{if(t)return!0;if(typeof e!="string")return!1;let r=window==null?void 0:window.location.href,o=new URL(e,r).hostname.toLocaleLowerCase();return o.includes(ce)||!!n&&o.includes(n.toLocaleLowerCase())},Ke=(t,e,n)=>{var i;let{envKey:r,disableTracking:o}=t,a=fe(t);if(!o&&(r||a)){let{playerInitTime:c,playerSoftwareName:p,playerSoftwareVersion:u,beaconCollectionDomain:d,debug:s,disableCookies:l}=t,f={...t.metadata,video_title:((i=t==null?void 0:t.metadata)==null?void 0:i.video_title)||void 0},m=P=>typeof P.player_error_code=="string"?!1:typeof t.errorTranslator=="function"?t.errorTranslator(P):P;W.monitor(e,{debug:s,beaconCollectionDomain:d,hlsjs:n,Hls:n?T:void 0,automaticErrorTracking:!1,errorTranslator:m,disableCookies:l,data:{...r?{env_key:r}:{},player_software_name:p,player_software:p,player_software_version:u,player_init_time:c,...f}})}},Ye=(t,e,n)=>{var u;let r=pe(t,e),{src:o}=t,a=()=>{e.ended||!Ue(e,n)||(le(e,n)?e.currentTime=e.buffered.end(e.buffered.length-1):e.dispatchEvent(new Event("ended")))},i,c,p=()=>{var l,f;let d=(l=U(e))==null?void 0:l.start(0),s=(f=U(e))==null?void 0:f.end(0);(c!==s||i!==d)&&e.dispatchEvent(new CustomEvent("seekablechange",{composed:!0})),i=d,c=s};if(y(e,"durationchange",p),e&&r){let d=h(t);if(typeof o=="string"){let s=()=>{if(re(e)!==g.LIVE||Number.isFinite(e.duration))return;let l=setInterval(p,1e3);e.addEventListener("teardown",()=>{clearInterval(l)},{once:!0}),y(e,"durationchange",()=>{Number.isFinite(e.duration)&&clearInterval(l)})};if(e.preload==="none"){let l=()=>{V(o,e,d).then(s),e.removeEventListener("loadedmetadata",f)},f=()=>{V(o,e,d).then(s),e.removeEventListener("play",l)};y(e,"play",l,{once:!0}),y(e,"loadedmetadata",f,{once:!0})}else V(o,e,d).then(s);e.setAttribute("src",o),t.startTime&&(((u=M.get(e))!=null?u:{}).startTime=t.startTime,e.addEventListener("durationchange",Te,{once:!0}))}else e.removeAttribute("src");e.addEventListener("error",ye),e.addEventListener("error",F),e.addEventListener("emptied",()=>{e.querySelectorAll("track[data-removeondestroy]").forEach(l=>{l.remove()})},{once:!0}),y(e,"pause",a),y(e,"seeked",a),y(e,"play",()=>{e.ended||de(e.currentTime,e.duration)&&(e.currentTime=e.seekable.start(0))})}else n&&o?(n.once(T.Events.LEVEL_LOADED,(d,s)=>{Ae(s.details,e,n),p(),re(e)===g.LIVE&&!Number.isFinite(e.duration)&&(n.on(T.Events.LEVEL_UPDATED,p),y(e,"durationchange",()=>{Number.isFinite(e.duration)&&n.off(T.Events.LEVELS_UPDATED,p)}))}),n.on(T.Events.ERROR,(d,s)=>{let l={[T.ErrorTypes.NETWORK_ERROR]:x.MEDIA_ERR_NETWORK,[T.ErrorTypes.MEDIA_ERROR]:x.MEDIA_ERR_DECODE},f=new x("",l[s.type]);f.fatal=s.fatal,f.data=s,e.dispatchEvent(new CustomEvent("error",{detail:f}))}),e.addEventListener("error",F),y(e,"waiting",a),Q(t,n),J(e,n),n.attachMedia(e)):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 Te(t){var r;let e=t.target,n=(r=M.get(e))==null?void 0:r.startTime;if(n&&$(e.seekable,e.duration,n)){let o=e.preload==="auto";o&&(e.preload="none"),e.currentTime=n,o&&(e.preload="auto")}}async function ye(t){if(!t.isTrusted)return;t.stopImmediatePropagation();let e=t.target;if(!(e!=null&&e.error))return;let{message:n,code:r}=e.error,o=new x(n,r);if(e.src&&(r!==x.MEDIA_ERR_DECODE||r!==void 0))try{let{status:a}=await fetch(e.src);o.data={response:{code:a}}}catch{}e.dispatchEvent(new CustomEvent("error",{detail:o}))}function F(t){var r,o;if(!(t instanceof CustomEvent)||!(t.detail instanceof x))return;let e=t.target,n=t.detail;!n||!n.fatal||(((r=M.get(e))!=null?r:{}).error=n,(o=e.mux)==null||o.emit("error",{player_error_code:n.code,player_error_message:n.message,player_error_context:n.context}))}export{C as AutoplayTypes,Xe as CmcdTypeValues,E as CmcdTypes,b as ExtensionMimeTypeMap,T as Hls,Qe as MaxResolution,x as MediaError,A as MimeTypeShorthandMap,Je as MinResolution,N as PlaybackTypes,Ze as RenditionOrder,g as StreamTypes,Z as addCuePoints,_ as addTextTrack,je as allMediaTypes,Nt as generatePlayerInitTime,Re as generateUUID,te as getActiveCuePoint,Le as getCuePoints,D as getCuePointsTrack,ke as getCurrentPdt,Ue as getEnded,wt as getError,_t as getLiveEdgeStart,Ee as getMediaPlaylistLinesFromMultivariantPlaylistSrc,U as getSeekable,Pe as getStartDate,Ce as getStreamInfoFromHlsjsLevelDetails,he as getStreamInfoFromPlaylistLines,Se as getStreamInfoFromSrcAndType,re as getStreamType,Be as getStreamTypeConfig,Ht as getTargetLiveWindow,Ot as initialize,I as isKeyOf,fe as isMuxVideoSrc,Ve as isPseudoEnded,le as isStuckOnLastFragment,Ye as loadMedia,W as mux,M as muxMediaState,xe as removeTextTrack,ne as setupCuePoints,We as setupHls,Ke as setupMux,Ge as shorthandKeys,Fe as teardown,Rt as toMuxVideoURL,Ae as updateStreamInfoFromHlsjsLevelDetails,V as updateStreamInfoFromSrc};
|
|
1
|
+
import Y from"mux-embed";import Ee from"hls.js";var T=Ee;var v=class v extends Error{constructor(n,a=v.MEDIA_ERR_CUSTOM,r,o){var s;super(n);this.name="MediaError",this.code=a,this.context=o,this.fatal=r!=null?r:a>=v.MEDIA_ERR_NETWORK&&a<=v.MEDIA_ERR_ENCRYPTED,this.message||(this.message=(s=v.defaultMessages[this.code])!=null?s:"")}};v.MEDIA_ERR_ABORTED=1,v.MEDIA_ERR_NETWORK=2,v.MEDIA_ERR_DECODE=3,v.MEDIA_ERR_SRC_NOT_SUPPORTED=4,v.MEDIA_ERR_ENCRYPTED=5,v.MEDIA_ERR_CUSTOM=100,v.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=v;var he=e=>e==null,N=(e,t)=>he(t)?!1:e in t,S={ANY:"any",MUTED:"muted"},g={ON_DEMAND:"on-demand",LIVE:"live",UNKNOWN:"unknown"},R={MSE:"mse",NATIVE:"native"},h={HEADER:"header",QUERY:"query",NONE:"none"},rt=Object.values(h),b={M3U8:"application/vnd.apple.mpegurl",MP4:"video/mp4"},A={HLS:b.M3U8},at=Object.keys(A),ot=[...Object.values(b),"hls","HLS"],st={upTo720p:"720p",upTo1080p:"1080p",upTo1440p:"1440p",upTo2160p:"2160p"},it={noLessThan480p:"480p",noLessThan540p:"540p",noLessThan720p:"720p",noLessThan1080p:"1080p",noLessThan1440p:"1440p",noLessThan2160p:"2160p"},ut={DESCENDING:"desc"};var y=(e,t,n,a,r=e)=>{r.addEventListener(t,n,a),e.addEventListener("teardown",()=>{r.removeEventListener(t,n)},{once:!0})};function G(e,t,n){t&&n>t&&(n=t);for(let a=0;a<e.length;a++)if(e.start(a)<=n&&e.end(a)>=n)return!0;return!1}var j=e=>{let t=e.indexOf("?");if(t<0)return[e];let n=e.slice(0,t),a=e.slice(t);return[n,a]},C=e=>{let t=e.type;if(t){let a=t.toUpperCase();return N(a,A)?A[a]:t}let{src:n}=e;return n?Ce(n):""},H=e=>e==="VOD"?g.ON_DEMAND:g.LIVE,w=e=>e==="EVENT"?Number.POSITIVE_INFINITY:e==="VOD"?Number.NaN:0,Ce=e=>{let t="";try{t=new URL(e).pathname}catch{console.error("invalid url")}let n=t.lastIndexOf(".");if(n<0)return"";let r=t.slice(n+1).toUpperCase();return N(r,b)?b[r]:""};var Se=Object.values(S),J=e=>typeof e=="boolean"||typeof e=="string"&&Se.includes(e),Q=(e,t,n)=>{let{autoplay:a}=e,r=!1,o=!1,s=J(a)?a:!!a,u=()=>{r||y(t,"playing",()=>{r=!0},{once:!0})};if(u(),y(t,"loadstart",()=>{r=!1,u(),_(t,s)},{once:!0}),y(t,"loadstart",()=>{n||(e.streamType&&e.streamType!==g.UNKNOWN?o=e.streamType===g.LIVE:o=!Number.isFinite(t.duration)),_(t,s)},{once:!0}),n&&n.once(T.Events.LEVEL_LOADED,(c,d)=>{var i;e.streamType&&e.streamType!==g.UNKNOWN?o=e.streamType===g.LIVE:o=(i=d.details.live)!=null?i:!1}),!s){let c=()=>{!o||Number.isFinite(e.startTime)||(n!=null&&n.liveSyncPosition?t.currentTime=n.liveSyncPosition:Number.isFinite(t.seekable.end(0))&&(t.currentTime=t.seekable.end(0)))};n&&y(t,"play",()=>{t.preload==="metadata"?n.once(T.Events.LEVEL_UPDATED,c):c()},{once:!0})}return c=>{r||(s=J(c)?c:!!c,_(t,s))}},_=(e,t)=>{if(!t)return;let n=e.muted,a=()=>e.muted=n;switch(t){case S.ANY:e.play().catch(()=>{e.muted=!0,e.play().catch(a)});break;case S.MUTED:e.muted=!0,e.play().catch(a);break;default:e.play().catch(()=>{});break}};var Z=({preload:e,src:t},n,a)=>{let r=i=>{i!=null&&["","none","metadata","auto"].includes(i)?n.setAttribute("preload",i):n.removeAttribute("preload")};if(!a)return r(e),r;let o=!1,s=!1,u=a.config.maxBufferLength,p=a.config.maxBufferSize,c=i=>{r(i);let l=i!=null?i:n.preload;s||l==="none"||(l==="metadata"?(a.config.maxBufferLength=1,a.config.maxBufferSize=1):(a.config.maxBufferLength=u,a.config.maxBufferSize=p),d())},d=()=>{!o&&t&&(o=!0,a.loadSource(t))};return y(n,"play",()=>{s=!0,a.config.maxBufferLength=u,a.config.maxBufferSize=p,d()},{once:!0}),c(e),c};function ee(e,t){var p;if(!("videoTracks"in e))return;let n=new WeakMap;t.on(T.Events.MANIFEST_PARSED,function(c,d){u();let i=e.addVideoTrack("main");i.selected=!0;for(let[l,f]of d.levels.entries()){let m=i.addRendition(f.url[0],f.width,f.height,f.videoCodec,f.bitrate);n.set(f,`${l}`),m.id=`${l}`}}),t.on(T.Events.AUDIO_TRACKS_UPDATED,function(c,d){s();for(let i of d.audioTracks){let l=i.default?"main":"alternative",f=e.addAudioTrack(l,i.name,i.lang);f.id=`${i.id}`,i.default&&(f.enabled=!0)}}),e.audioTracks.addEventListener("change",()=>{var i;let c=+((i=[...e.audioTracks].find(l=>l.enabled))==null?void 0:i.id),d=t.audioTracks.map(l=>l.id);c!=t.audioTrack&&d.includes(c)&&(t.audioTrack=c)}),t.on(T.Events.LEVELS_UPDATED,function(c,d){var f;let i=e.videoTracks[(f=e.videoTracks.selectedIndex)!=null?f:0];if(!i)return;let l=d.levels.map(m=>n.get(m));for(let m of e.videoRenditions)m.id&&!l.includes(m.id)&&i.removeRendition(m)});let a=c=>{let d=c.target.selectedIndex;d!=t.nextLevel&&r(d)},r=c=>{let d=e.currentTime,i=!1,l=(f,m)=>{i||(i=!Number.isFinite(m.endOffset))};t.on(T.Events.BUFFER_FLUSHING,l),t.nextLevel=c,t.off(T.Events.BUFFER_FLUSHING,l),i||t.trigger(T.Events.BUFFER_FLUSHING,{startOffset:d+10,endOffset:1/0,type:"video"})};(p=e.videoRenditions)==null||p.addEventListener("change",a);let o=()=>{for(let c of e.videoTracks)e.removeVideoTrack(c)},s=()=>{for(let c of e.audioTracks)e.removeAudioTrack(c)},u=()=>{o(),s()};t.once(T.Events.DESTROYING,u)}var O=e=>"time"in e?e.time:e.startTime;function te(e,t){t.on(T.Events.NON_NATIVE_TEXT_TRACKS_FOUND,(r,{tracks:o})=>{o.forEach(s=>{var c;let u=(c=s.subtitleTrack)!=null?c:s.closedCaptions,p=t.subtitleTracks.findIndex(({lang:d,name:i,type:l})=>d==(u==null?void 0:u.lang)&&i===s.label&&l.toLowerCase()===s.kind);V(e,s.kind,s.label,u==null?void 0:u.lang,`${s.kind}${p}`)})});let n=()=>{var s;if(!t.subtitleTracks.length)return;let r=Array.from(e.textTracks).find(u=>u.id&&u.mode==="showing"&&["subtitles","captions"].includes(u.kind)),o=`${(s=t.subtitleTracks[t.subtitleTrack])==null?void 0:s.type.toLowerCase()}${t.subtitleTrack}`;if(r&&(t.subtitleTrack<0||(r==null?void 0:r.id)!==o)){let u=t.subtitleTracks.findIndex(({lang:p,name:c,type:d})=>p==r.language&&c===r.label&&d.toLowerCase()===r.kind);t.subtitleTrack=u}r&&(r==null?void 0:r.id)===o&&r.cues&&Array.from(r.cues).forEach(u=>{r.addCue(u)})};e.textTracks.addEventListener("change",n),t.on(T.Events.CUES_PARSED,(r,{track:o,cues:s})=>{let u=e.textTracks.getTrackById(o);if(!u)return;let p=u.mode==="disabled";p&&(u.mode="hidden"),s.forEach(c=>{var d;(d=u.cues)!=null&&d.getCueById(c.id)||u.addCue(c)}),p&&(u.mode="disabled")}),t.once(T.Events.DESTROYING,()=>{e.textTracks.removeEventListener("change",n),e.querySelectorAll("track[data-removeondestroy]").forEach(o=>{o.remove()})});let a=()=>{Array.from(e.textTracks).forEach(r=>{var o,s;if(!["subtitles","caption"].includes(r.kind)&&r.label==="thumbnails"){if(!((o=r.cues)!=null&&o.length)){let u=e.querySelector('track[label="thumbnails"]'),p=(s=u==null?void 0:u.getAttribute("src"))!=null?s:"";u==null||u.removeAttribute("src"),setTimeout(()=>{u==null||u.setAttribute("src",p)},0)}r.mode!=="hidden"&&(r.mode="hidden")}})};t.once(T.Events.MANIFEST_LOADED,a),t.once(T.Events.MEDIA_ATTACHED,a)}function V(e,t,n,a,r){let o=document.createElement("track");return o.kind=t,o.label=n,a&&(o.srclang=a),r&&(o.id=r),o.track.mode=["subtitles","captions"].includes(t)?"disabled":"hidden",o.setAttribute("data-removeondestroy",""),e.append(o),o.track}function Ae(e,t){let n=Array.prototype.find.call(e.querySelectorAll("track"),a=>a.track===t);n==null||n.remove()}function E(e,t,n){var a;return(a=Array.from(e.querySelectorAll("track")).find(r=>r.track.label===t&&r.track.kind===n))==null?void 0:a.track}async function ne(e,t,n,a){let r=E(e,n,a);return r||(r=V(e,a,n),r.mode="hidden",await new Promise(o=>setTimeout(()=>o(void 0),0))),r.mode!=="hidden"&&(r.mode="hidden"),[...t].sort((o,s)=>O(s)-O(o)).forEach(o=>{var p,c;let s=o.value,u=O(o);if("endTime"in o&&o.endTime!=null)r==null||r.addCue(new VTTCue(u,o.endTime,a==="chapters"?s:JSON.stringify(s!=null?s:null)));else{let d=Array.prototype.findIndex.call(r==null?void 0:r.cues,m=>m.startTime>=u),i=(p=r==null?void 0:r.cues)==null?void 0:p[d],l=i?i.startTime:Number.isFinite(e.duration)?e.duration:Number.MAX_SAFE_INTEGER,f=(c=r==null?void 0:r.cues)==null?void 0:c[d-1];f&&(f.endTime=u),r==null||r.addCue(new VTTCue(u,l,a==="chapters"?s:JSON.stringify(s!=null?s:null)))}}),e.textTracks.dispatchEvent(new Event("change",{bubbles:!0,composed:!0})),r}var U="cuepoints",re=Object.freeze({label:U});async function ae(e,t,n=re){return ne(e,t,n.label,"metadata")}var D=e=>({time:e.startTime,value:JSON.parse(e.text)});function De(e,t={label:U}){let n=E(e,t.label,"metadata");return n!=null&&n.cues?Array.from(n.cues,a=>D(a)):[]}function oe(e,t={label:U}){var o,s;let n=E(e,t.label,"metadata");if(!((o=n==null?void 0:n.activeCues)!=null&&o.length))return;if(n.activeCues.length===1)return D(n.activeCues[0]);let{currentTime:a}=e,r=Array.prototype.find.call((s=n.activeCues)!=null?s:[],({startTime:u,endTime:p})=>u<=a&&p>a);return D(r||n.activeCues[0])}async function se(e,t=re){return new Promise(n=>{y(e,"loadstart",async()=>{let a=await ae(e,[],t);y(e,"cuechange",()=>{let r=oe(e);if(r){let o=new CustomEvent("cuepointchange",{composed:!0,bubbles:!0,detail:r});e.dispatchEvent(o)}},{},a),n(a)})})}var F="chapters",ie=Object.freeze({label:F}),I=e=>({startTime:e.startTime,endTime:e.endTime,value:e.text});async function ue(e,t,n=ie){return ne(e,t,n.label,"chapters")}function Ie(e,t={label:F}){var a;let n=E(e,t.label,"chapters");return(a=n==null?void 0:n.cues)!=null&&a.length?Array.from(n.cues,r=>I(r)):[]}function ce(e,t={label:F}){var o,s;let n=E(e,t.label,"chapters");if(!((o=n==null?void 0:n.activeCues)!=null&&o.length))return;if(n.activeCues.length===1)return I(n.activeCues[0]);let{currentTime:a}=e,r=Array.prototype.find.call((s=n.activeCues)!=null?s:[],({startTime:u,endTime:p})=>u<=a&&p>a);return I(r||n.activeCues[0])}async function de(e,t=ie){return new Promise(n=>{y(e,"loadstart",async()=>{let a=await ue(e,[],t);y(e,"cuechange",()=>{let r=ce(e);if(r){let o=new CustomEvent("chapterchange",{composed:!0,bubbles:!0,detail:r});e.dispatchEvent(o)}},{},a),n(a)})})}function Ne(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 Re(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 He=async e=>fetch(e).then(t=>t.text()).then(t=>{let n=t.split(`
|
|
2
|
+
`).find((a,r,o)=>r&&o[r-1].startsWith("#EXT-X-STREAM-INF"));return fetch(n).then(a=>a.text()).then(a=>a.split(`
|
|
3
|
+
`))}),we=e=>{var s,u,p;let n=(u=((s=e.find(c=>c.startsWith("#EXT-X-PLAYLIST-TYPE")))!=null?s:"").split(":")[1])==null?void 0:u.trim(),a=H(n),r=w(n),o;if(a===g.LIVE){let c=e.find(i=>i.startsWith("#EXT-X-PART-INF"));if(!!c)o=+c.split(":")[1].split("=")[1]*2;else{let i=e.find(m=>m.startsWith("#EXT-X-TARGETDURATION")),l=(p=i==null?void 0:i.split(":"))==null?void 0:p[1];o=+(l!=null?l:6)*3}}return{streamType:a,targetLiveWindow:r,liveEdgeStartOffset:o}},_e=async(e,t)=>{if(t===b.MP4)return{streamType:g.ON_DEMAND,targetLiveWindow:Number.NaN,liveEdgeStartOffset:void 0};if(t===b.M3U8){let n=await He(e);return we(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}},W=async(e,t,n=C({src:e}))=>{var s,u,p;let{streamType:a,targetLiveWindow:r,liveEdgeStartOffset:o}=await _e(e,n);((s=M.get(t))!=null?s:{}).liveEdgeStartOffset=o,((u=M.get(t))!=null?u:{}).targetLiveWindow=r,t.dispatchEvent(new CustomEvent("targetlivewindowchange",{composed:!0,bubbles:!0})),((p=M.get(t))!=null?p:{}).streamType=a,t.dispatchEvent(new CustomEvent("streamtypechange",{composed:!0,bubbles:!0}))},Oe=e=>{var s;let t=e.type,n=H(t),a=w(t),r,o=!!((s=e.partList)!=null&&s.length);return n===g.LIVE&&(r=o?e.partTarget*2:e.targetduration*3),{streamType:n,targetLiveWindow:a,liveEdgeStartOffset:r,lowLatency:o}},Ve=(e,t,n)=>{var u,p,c,d,i,l,f,m;let{streamType:a,targetLiveWindow:r,liveEdgeStartOffset:o,lowLatency:s}=Oe(e);if(a===g.LIVE){s?(n.config.backBufferLength=(u=n.userConfig.backBufferLength)!=null?u:4,n.config.maxFragLookUpTolerance=(p=n.userConfig.maxFragLookUpTolerance)!=null?p:.001,n.config.abrBandWidthUpFactor=(c=n.userConfig.abrBandWidthUpFactor)!=null?c:n.config.abrBandWidthFactor):n.config.backBufferLength=(d=n.userConfig.backBufferLength)!=null?d:8;let k=Object.freeze({get length(){return t.seekable.length},start(L){return t.seekable.start(L)},end(L){var P;return L>this.length||L<0||Number.isFinite(t.duration)?t.seekable.end(L):(P=n.liveSyncPosition)!=null?P:t.seekable.end(L)}});((i=M.get(t))!=null?i:{}).seekable=k}((l=M.get(t))!=null?l:{}).liveEdgeStartOffset=o,((f=M.get(t))!=null?f:{}).targetLiveWindow=r,t.dispatchEvent(new CustomEvent("targetlivewindowchange",{composed:!0,bubbles:!0})),((m=M.get(t))!=null?m:{}).streamType=a,t.dispatchEvent(new CustomEvent("streamtypechange",{composed:!0,bubbles:!0}))},pe,fe,Ue=(fe=(pe=globalThis==null?void 0:globalThis.navigator)==null?void 0:pe.userAgent)!=null?fe:"",Fe=Ue.toLowerCase().indexOf("android")!==-1,M=new WeakMap,me="mux.com",Te,ye,ge=(ye=(Te=T).isSupported)==null?void 0:ye.call(Te),We=Fe,Wt=()=>Y.utils.now(),Be=Y.utils.generateUUID,Bt=({playbackId:e,customDomain:t=me,maxResolution:n,minResolution:a,renditionOrder:r,programStartTime:o,programEndTime:s,tokens:{playback:u}={},extraSourceParams:p={}}={})=>{if(!e)return;let[c,d=""]=j(e),i=new URL(`https://stream.${t}/${c}.m3u8${d}`);return u||i.searchParams.has("token")?(i.searchParams.forEach((l,f)=>{f!="token"&&i.searchParams.delete(f)}),u&&i.searchParams.set("token",u)):(n&&i.searchParams.set("max_resolution",n),a&&(i.searchParams.set("min_resolution",a),n&&+n.slice(0,-1)<+a.slice(0,-1)&&console.error("minResolution must be <= maxResolution","minResolution",a,"maxResolution",n)),r&&i.searchParams.set("rendition_order",r),o&&i.searchParams.set("program_start_time",`${o}`),s&&i.searchParams.set("program_end_time",`${s}`),Object.entries(p).forEach(([l,f])=>{f!=null&&i.searchParams.set(l,f)})),i.toString()},Ke=e=>{if(!e)return;let[t]=e.split("?");return t||void 0},Ye=e=>{if(!e||!e.startsWith("https://stream."))return;let[t]=new URL(e).pathname.slice(1).split(".m3u8");return t||void 0},$e=e=>{var t,n,a;return(t=e==null?void 0:e.metadata)!=null&&t.video_id?e.metadata.video_id:xe(e)&&(a=(n=Ke(e.playbackId))!=null?n:Ye(e.src))!=null?a:e.src},Kt=e=>{var t;return(t=M.get(e))==null?void 0:t.error},le=e=>{var t,n;return(n=(t=M.get(e))==null?void 0:t.streamType)!=null?n:g.UNKNOWN},Yt=e=>{var t,n;return(n=(t=M.get(e))==null?void 0:t.targetLiveWindow)!=null?n:Number.NaN},B=e=>{var t,n;return(n=(t=M.get(e))==null?void 0:t.seekable)!=null?n:e.seekable},$t=e=>{var a;let t=(a=M.get(e))==null?void 0:a.liveEdgeStartOffset;if(typeof t!="number")return Number.NaN;let n=B(e);return n.length?n.end(n.length-1)-t:Number.NaN},$=.034,qe=(e,t,n=$)=>Math.abs(e-t)<=n,Me=(e,t,n=$)=>e>t||qe(e,t,n),ze=(e,t=$)=>e.paused&&Me(e.currentTime,e.duration,t),ve=(e,t)=>{var c,d,i;if(!t)return;if(e.readyState>2)return!1;let n=t.currentLevel>=0?(d=(c=t.levels)==null?void 0:c[t.currentLevel])==null?void 0:d.details:(i=t.levels.find(l=>!!l.details))==null?void 0:i.details;if(!n||n.live)return;let{fragments:a}=n;if(!(a!=null&&a.length))return;if(e.currentTime<e.duration-(n.targetduration+.5))return!1;let r=a[a.length-1];if(e.currentTime<=r.start)return!1;let o=r.start+r.duration/2,s=e.buffered.start(e.buffered.length-1),u=e.buffered.end(e.buffered.length-1);return o>s&&o<u},Xe=(e,t)=>e.ended||e.loop?e.ended:t&&ve(e,t)?!0:ze(e),qt=(e,t,n)=>{Ge(t,n);let{metadata:a={}}=e,{view_session_id:r=Be()}=a,o=$e(e);a.view_session_id=r,a.video_id=o,e.metadata=a,M.set(t,{});let s=je(e,t),u=Z(e,t,s);Qe(e,t,s),Ze(e,t,s),se(t),de(t);let p=Q(e,t,s);return{engine:s,setAutoplay:p,setPreload:u}},Ge=(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",ke),e.removeEventListener("error",K),e.removeEventListener("durationchange",Le),M.delete(e),e.dispatchEvent(new Event("teardown")))};function be(e,t){var c;let n=C(e);if(!(n===b.M3U8))return!0;let r=!n||((c=t.canPlayType(n))!=null?c:!0),{preferPlayback:o}=e,s=o===R.MSE,u=o===R.NATIVE;return r&&(u||!(ge&&(s||We)))}var je=(e,t)=>{let{debug:n,streamType:a,startTime:r=-1,metadata:o,preferCmcd:s,_hlsConfig:u={}}=e,c=C(e)===b.M3U8,d=be(e,t);if(c&&!d&&ge){let i={backBufferLength:30,renderTextTracksNatively:!1,liveDurationInfinity:!0,capLevelToPlayerSize:!0,capLevelOnFPSDrop:!0},l=Je(a),f=s!==h.NONE?{useHeaders:s===h.HEADER,sessionId:o==null?void 0:o.view_session_id,contentId:o==null?void 0:o.video_id}:void 0;return new T({debug:n,startPosition:r,cmcd:f,xhrSetup:(k,L)=>{var q,z;if(s&&s!==h.QUERY)return;let P=new URL(L);if(!P.searchParams.has("CMCD"))return;let Pe=((z=(q=P.searchParams.get("CMCD"))==null?void 0:q.split(","))!=null?z:[]).filter(X=>X.startsWith("sid")||X.startsWith("cid")).join(",");P.searchParams.set("CMCD",Pe),k.open("GET",P)},...i,...l,...u})}},Je=e=>e===g.LIVE?{backBufferLength:8}:{},xe=({playbackId:e,src:t,customDomain:n})=>{if(e)return!0;if(typeof t!="string")return!1;let a=window==null?void 0:window.location.href,r=new URL(t,a).hostname.toLocaleLowerCase();return r.includes(me)||!!n&&r.includes(n.toLocaleLowerCase())},Qe=(e,t,n)=>{var s;let{envKey:a,disableTracking:r}=e,o=xe(e);if(!r&&(a||o)){let{playerInitTime:u,playerSoftwareName:p,playerSoftwareVersion:c,beaconCollectionDomain:d,debug:i,disableCookies:l}=e,f={...e.metadata,video_title:((s=e==null?void 0:e.metadata)==null?void 0:s.video_title)||void 0},m=k=>typeof k.player_error_code=="string"?!1:typeof e.errorTranslator=="function"?e.errorTranslator(k):k;Y.monitor(t,{debug:i,beaconCollectionDomain:d,hlsjs:n,Hls:n?T:void 0,automaticErrorTracking:!1,errorTranslator:m,disableCookies:l,data:{...a?{env_key:a}:{},player_software_name:p,player_software:p,player_software_version:c,player_init_time:u,...f}})}},Ze=(e,t,n)=>{var c;let a=be(e,t),{src:r}=e,o=()=>{t.ended||!Xe(t,n)||(ve(t,n)?t.currentTime=t.buffered.end(t.buffered.length-1):t.dispatchEvent(new Event("ended")))},s,u,p=()=>{var l,f;let d=(l=B(t))==null?void 0:l.start(0),i=(f=B(t))==null?void 0:f.end(0);(u!==i||s!==d)&&t.dispatchEvent(new CustomEvent("seekablechange",{composed:!0})),s=d,u=i};if(y(t,"durationchange",p),t&&a){let d=C(e);if(typeof r=="string"){let i=()=>{if(le(t)!==g.LIVE||Number.isFinite(t.duration))return;let l=setInterval(p,1e3);t.addEventListener("teardown",()=>{clearInterval(l)},{once:!0}),y(t,"durationchange",()=>{Number.isFinite(t.duration)&&clearInterval(l)})};if(t.preload==="none"){let l=()=>{W(r,t,d).then(i),t.removeEventListener("loadedmetadata",f)},f=()=>{W(r,t,d).then(i),t.removeEventListener("play",l)};y(t,"play",l,{once:!0}),y(t,"loadedmetadata",f,{once:!0})}else W(r,t,d).then(i);t.setAttribute("src",r),e.startTime&&(((c=M.get(t))!=null?c:{}).startTime=e.startTime,t.addEventListener("durationchange",Le,{once:!0}))}else t.removeAttribute("src");t.addEventListener("error",ke),t.addEventListener("error",K),t.addEventListener("emptied",()=>{t.querySelectorAll("track[data-removeondestroy]").forEach(l=>{l.remove()})},{once:!0}),y(t,"pause",o),y(t,"seeked",o),y(t,"play",()=>{t.ended||Me(t.currentTime,t.duration)&&(t.currentTime=t.seekable.start(0))})}else n&&r?(n.once(T.Events.LEVEL_LOADED,(d,i)=>{Ve(i.details,t,n),p(),le(t)===g.LIVE&&!Number.isFinite(t.duration)&&(n.on(T.Events.LEVEL_UPDATED,p),y(t,"durationchange",()=>{Number.isFinite(t.duration)&&n.off(T.Events.LEVELS_UPDATED,p)}))}),n.on(T.Events.ERROR,(d,i)=>{let l={[T.ErrorTypes.NETWORK_ERROR]:x.MEDIA_ERR_NETWORK,[T.ErrorTypes.MEDIA_ERROR]:x.MEDIA_ERR_DECODE},f=new x("",l[i.type]);f.fatal=i.fatal,f.data=i,t.dispatchEvent(new CustomEvent("error",{detail:f}))}),t.addEventListener("error",K),y(t,"waiting",o),ee(e,n),te(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 Le(e){var a;let t=e.target,n=(a=M.get(t))==null?void 0:a.startTime;if(n&&G(t.seekable,t.duration,n)){let r=t.preload==="auto";r&&(t.preload="none"),t.currentTime=n,r&&(t.preload="auto")}}async function ke(e){if(!e.isTrusted)return;e.stopImmediatePropagation();let t=e.target;if(!(t!=null&&t.error))return;let{message:n,code:a}=t.error,r=new x(n,a);if(t.src&&(a!==x.MEDIA_ERR_DECODE||a!==void 0))try{let{status:o}=await fetch(t.src);r.data={response:{code:o}}}catch{}t.dispatchEvent(new CustomEvent("error",{detail:r}))}function K(e){var a,r;if(!(e instanceof CustomEvent)||!(e.detail instanceof x))return;let t=e.target,n=e.detail;!n||!n.fatal||(((a=M.get(t))!=null?a:{}).error=n,(r=t.mux)==null||r.emit("error",{player_error_code:n.code,player_error_message:n.message,player_error_context:n.context}))}export{S as AutoplayTypes,rt as CmcdTypeValues,h as CmcdTypes,b as ExtensionMimeTypeMap,T as Hls,st as MaxResolution,x as MediaError,A as MimeTypeShorthandMap,it as MinResolution,R as PlaybackTypes,ut as RenditionOrder,g as StreamTypes,ue as addChapters,ae as addCuePoints,V as addTextTrack,ot as allMediaTypes,Wt as generatePlayerInitTime,Be as generateUUID,ce as getActiveChapter,oe as getActiveCuePoint,Ie as getChapters,De as getCuePoints,Re as getCurrentPdt,Xe as getEnded,Kt as getError,$t as getLiveEdgeStart,He as getMediaPlaylistLinesFromMultivariantPlaylistSrc,B as getSeekable,Ne as getStartDate,Oe as getStreamInfoFromHlsjsLevelDetails,we as getStreamInfoFromPlaylistLines,_e as getStreamInfoFromSrcAndType,le as getStreamType,Je as getStreamTypeConfig,Yt as getTargetLiveWindow,E as getTextTrack,qt as initialize,N as isKeyOf,xe as isMuxVideoSrc,ze as isPseudoEnded,ve as isStuckOnLastFragment,Ze as loadMedia,Y as mux,M as muxMediaState,Ae as removeTextTrack,de as setupChapters,se as setupCuePoints,je as setupHls,Qe as setupMux,at as shorthandKeys,Ge as teardown,Bt as toMuxVideoURL,Ve as updateStreamInfoFromHlsjsLevelDetails,W as updateStreamInfoFromSrc};
|
|
4
4
|
//# sourceMappingURL=index.mjs.map
|