@vkontakte/videoplayer-core 2.0.102-beta.3 → 2.0.103-dev.c555938f.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/es2015.cjs.js +4 -4
- package/es2015.esm.js +4 -4
- package/es2018.cjs.js +4 -4
- package/es2018.esm.js +4 -4
- package/esnext.cjs.js +4 -4
- package/esnext.esm.js +4 -4
- package/evergreen.esm.js +4 -4
- package/package.json +2 -2
package/es2018.esm.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vkontakte/videoplayer-core v2.0.
|
|
3
|
-
* Tue,
|
|
4
|
-
* https://st.mycdn.me/static/vkontakte-videoplayer/2-0-
|
|
2
|
+
* @vkontakte/videoplayer-core v2.0.103-dev.c555938f.0
|
|
3
|
+
* Tue, 28 May 2024 09:13:35 GMT
|
|
4
|
+
* https://st.mycdn.me/static/vkontakte-videoplayer/2-0-103/doc/
|
|
5
5
|
*/
|
|
6
|
-
import{ValueSubject as y,Subject as R,Subscription as ie,isNonNullable as D,ErrorCategory as _,isNullable as Q,fromEvent as C,assertNever as U,merge as N,tap as vi,map as $,observableFrom as Ce,filterChanged as he,assertNonNullable as P,debounce as Ke,getHighestQuality as hd,timeout as fd,getCurrentBrowser as Or,CurrentClientBrowser as Bn,combine as Re,once as Ae,mapTo as Zi,filter as ce,VideoQuality as Pe,now as ne,assertNotEmptyArray as pd,videoSizeToQuality as kt,isInvariantQuality as Pt,isHigher as Xt,isLower as Wi,isHigherOrEqual as Sr,isLowerOrEqual as es,interval as fi,videoQualityToHeight as md,abortable as we,getExponentialDelay as zi,throttle as vd,Observable as Mr,observeElementSize as gd,isIOS as Sd,CurrentClientDevice as bd,safeStorage as Rs,fillWithDefault as yd,Logger as Td}from"@vkontakte/videoplayer-shared/es2018.esm.js";import{Observable as tg,Subject as ig,Subscription as sg,ValueSubject as rg,VideoQuality as ag}from"@vkontakte/videoplayer-shared/es2018.esm.js";const Ed="2.0.102-beta.3";var p;(function(i){i.STOPPED="stopped",i.READY="ready",i.PLAYING="playing",i.PAUSED="paused"})(p||(p={}));var b;(function(i){i.MPEG="MPEG",i.DASH="DASH_SEP",i.DASH_SEP="DASH_SEP",i.DASH_SEP_VK="DASH_SEP",i.DASH_WEBM="DASH_WEBM",i.DASH_WEBM_AV1="DASH_WEBM_AV1",i.DASH_WEBM_VK="DASH_WEBM",i.DASH_ONDEMAND="DASH_ONDEMAND",i.DASH_ONDEMAND_VK="DASH_ONDEMAND",i.DASH_LIVE="DASH_LIVE",i.DASH_LIVE_CMAF="DASH_LIVE_CMAF",i.DASH_LIVE_WEBM="DASH_LIVE_WEBM",i.HLS="HLS",i.HLS_ONDEMAND="HLS_ONDEMAND",i.HLS_JS="HLS",i.HLS_LIVE="HLS_LIVE",i.HLS_LIVE_CMAF="HLS_LIVE_CMAF",i.WEB_RTC_LIVE="WEB_RTC_LIVE"})(b||(b={}));var ye;(function(i){i.SCREEN="SCREEN",i.CHROMECAST="CHROMECAST"})(ye||(ye={}));var ge;(function(i){i.NOT_AVAILABLE="NOT_AVAILABLE",i.AVAILABLE="AVAILABLE",i.CONNECTING="CONNECTING",i.CONNECTED="CONNECTED"})(ge||(ge={}));var br;(function(i){i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic"})(br||(br={}));var Y;(function(i){i.None="none",i.Requested="requested",i.Applying="applying"})(Y||(Y={}));var ht;(function(i){i.NONE="none",i.INLINE="inline",i.FULLSCREEN="fullscreen",i.SECOND_SCREEN="second_screen",i.PIP="pip"})(ht||(ht={}));var $d=i=>new Promise((e,t)=>{const s=document.createElement("script");s.setAttribute("src",i),s.onload=()=>e,s.onerror=()=>t,document.body.appendChild(s)});class Ad{constructor(e){var t;this.connection$=new y(void 0),this.castState$=new y(ge.NOT_AVAILABLE),this.errorEvent$=new R,this.realCastState$=new y(ge.NOT_AVAILABLE),this.subscription=new ie,this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastInitializer");const s="chrome"in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${s}`}),e.isDisabled||!s)return;const r=D((t=window.chrome)===null||t===void 0?void 0:t.cast),a=!!window.__onGCastApiAvailable;r?this.initializeCastApi():(window.__onGCastApiAvailable=n=>{delete window.__onGCastApiAvailable,n&&this.initializeCastApi()},a||$d("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:_.NETWORK,message:"Script loading failed!"})))}connect(){var e;(e=cast.framework.CastContext.getInstance())===null||e===void 0||e.requestSession()}disconnect(){var e,t;(t=(e=cast.framework.CastContext.getInstance())===null||e===void 0?void 0:e.getCurrentSession())===null||t===void 0||t.endSession(!0)}stopMedia(){return new Promise((e,t)=>{var s,r,a;(a=(r=(s=cast.framework.CastContext.getInstance())===null||s===void 0?void 0:s.getCurrentSession())===null||r===void 0?void 0:r.getMediaSession())===null||a===void 0||a.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){D(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){const t=this.connection$.getValue();Q(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){const t=this.connection$.getValue();Q(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.subscription.unsubscribe()}initListeners(){const e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),s=cast.framework.CastContext.getInstance();this.subscription.add(C(s,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(r=>{var a,n;switch(r.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=(n=(a=s.getCurrentSession())===null||a===void 0?void 0:a.getMediaSession())===null||n===void 0?void 0:n.media.contentId;break;case cast.framework.SessionState.NO_SESSION:case cast.framework.SessionState.SESSION_ENDING:case cast.framework.SessionState.SESSION_ENDED:case cast.framework.SessionState.SESSION_START_FAILED:this.contentId=void 0;break;default:return U(r.sessionState)}})).add(N(C(s,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(vi(r=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(r)}`})}),$(r=>r.castState)),Ce([s.getCastState()])).pipe(he(),$(wd),vi(r=>{this.log({message:`realCastState$: ${r}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{var a;const n=r===ge.CONNECTED,o=D(this.connection$.getValue());if(n&&!o){const u=s.getCurrentSession();P(u);const d=u.getCastDevice(),l=(a=u.getMediaSession())===null||a===void 0?void 0:a.media.contentId;(Q(l)||l===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:u,castDevice:d}))}else!n&&o&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(r===ge.CONNECTED?D(this.connection$.getValue())?ge.CONNECTED:ge.AVAILABLE:r)}))}initializeCastApi(){var e;let t,s,r;try{t=cast.framework.CastContext.getInstance(),s=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,r=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch(a){return}try{t.setOptions({receiverApplicationId:(e=this.params.receiverApplicationId)!==null&&e!==void 0?e:s,autoJoinPolicy:r}),this.initListeners()}catch(a){this.errorEvent$.next({id:"ChromecastInitializer",category:_.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:a})}}}const wd=i=>{switch(i){case cast.framework.CastState.NO_DEVICES_AVAILABLE:return ge.NOT_AVAILABLE;case cast.framework.CastState.NOT_CONNECTED:return ge.AVAILABLE;case cast.framework.CastState.CONNECTING:return ge.CONNECTING;case cast.framework.CastState.CONNECTED:return ge.CONNECTED;default:return U(i)}};var Is=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Br(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var rt=function(i){try{return!!i()}catch(e){return!0}},kd=rt,ls=!kd(function(){var i=function(){}.bind();return typeof i!="function"||i.hasOwnProperty("prototype")}),Nn=ls,Fn=Function.prototype,yr=Fn.call,Pd=Nn&&Fn.bind.bind(yr,yr),at=Nn?Pd:function(i){return function(){return yr.apply(i,arguments)}},Vn=at,Dd=Vn({}.toString),Ld=Vn("".slice),us=function(i){return Ld(Dd(i),8,-1)},xd=at,_d=rt,Rd=us,Cs=Object,Id=xd("".split),Cd=_d(function(){return!Cs("z").propertyIsEnumerable(0)})?function(i){return Rd(i)=="String"?Id(i,""):Cs(i)}:Cs,cs=function(i){return i==null},Od=cs,Md=TypeError,Nr=function(i){if(Od(i))throw Md("Can't call method on "+i);return i},Bd=Cd,Nd=Nr,yi=function(i){return Bd(Nd(i))},ii={},_i=function(i){return i&&i.Math==Math&&i},Ve=_i(typeof globalThis=="object"&&globalThis)||_i(typeof window=="object"&&window)||_i(typeof self=="object"&&self)||_i(typeof Is=="object"&&Is)||function(){return this}()||Is||Function("return this")(),Tr=typeof document=="object"&&document.all,Fd=typeof Tr=="undefined"&&Tr!==void 0,Un={all:Tr,IS_HTMLDDA:Fd},Hn=Un,Vd=Hn.all,Oe=Hn.IS_HTMLDDA?function(i){return typeof i=="function"||i===Vd}:function(i){return typeof i=="function"},Ud=Ve,Hd=Oe,ma=Ud.WeakMap,Gd=Hd(ma)&&/native code/.test(String(ma)),va=Oe,Gn=Un,Yd=Gn.all,Lt=Gn.IS_HTMLDDA?function(i){return typeof i=="object"?i!==null:va(i)||i===Yd}:function(i){return typeof i=="object"?i!==null:va(i)},qd=rt,xt=!qd(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7}),si={},jd=Ve,ga=Lt,Er=jd.document,Wd=ga(Er)&&ga(Er.createElement),Yn=function(i){return Wd?Er.createElement(i):{}},zd=xt,Qd=rt,Kd=Yn,qn=!zd&&!Qd(function(){return Object.defineProperty(Kd("div"),"a",{get:function(){return 7}}).a!=7}),Jd=xt,Xd=rt,jn=Jd&&Xd(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!=42}),Zd=Lt,el=String,tl=TypeError,_t=function(i){if(Zd(i))return i;throw tl(el(i)+" is not an object")},il=ls,Ri=Function.prototype.call,nt=il?Ri.bind(Ri):function(){return Ri.apply(Ri,arguments)},Fr={},Os=Fr,Ms=Ve,sl=Oe,Sa=function(i){return sl(i)?i:void 0},Vr=function(i,e){return arguments.length<2?Sa(Os[i])||Sa(Ms[i]):Os[i]&&Os[i][e]||Ms[i]&&Ms[i][e]},rl=at,Ur=rl({}.isPrototypeOf),al=typeof navigator!="undefined"&&String(navigator.userAgent)||"",Wn=Ve,Bs=al,ba=Wn.process,ya=Wn.Deno,Ta=ba&&ba.versions||ya&&ya.version,Ea=Ta&&Ta.v8,Ne,ts;Ea&&(Ne=Ea.split("."),ts=Ne[0]>0&&Ne[0]<4?1:+(Ne[0]+Ne[1]));!ts&&Bs&&(Ne=Bs.match(/Edge\/(\d+)/),(!Ne||Ne[1]>=74)&&(Ne=Bs.match(/Chrome\/(\d+)/),Ne&&(ts=+Ne[1])));var nl=ts,$a=nl,ol=rt,dl=Ve,ll=dl.String,zn=!!Object.getOwnPropertySymbols&&!ol(function(){var i=Symbol();return!ll(i)||!(Object(i)instanceof Symbol)||!Symbol.sham&&$a&&$a<41}),ul=zn,Qn=ul&&!Symbol.sham&&typeof Symbol.iterator=="symbol",cl=Vr,hl=Oe,fl=Ur,pl=Qn,ml=Object,Kn=pl?function(i){return typeof i=="symbol"}:function(i){var e=cl("Symbol");return hl(e)&&fl(e.prototype,ml(i))},vl=String,Hr=function(i){try{return vl(i)}catch(e){return"Object"}},gl=Oe,Sl=Hr,bl=TypeError,Gr=function(i){if(gl(i))return i;throw bl(Sl(i)+" is not a function")},yl=Gr,Tl=cs,hs=function(i,e){var t=i[e];return Tl(t)?void 0:yl(t)},Ns=nt,Fs=Oe,Vs=Lt,El=TypeError,$l=function(i,e){var t,s;if(e==="string"&&Fs(t=i.toString)&&!Vs(s=Ns(t,i))||Fs(t=i.valueOf)&&!Vs(s=Ns(t,i))||e!=="string"&&Fs(t=i.toString)&&!Vs(s=Ns(t,i)))return s;throw El("Can't convert object to primitive value")},Jn={exports:{}},Aa=Ve,Al=Object.defineProperty,wl=function(i,e){try{Al(Aa,i,{value:e,configurable:!0,writable:!0})}catch(t){Aa[i]=e}return e},kl=Ve,Pl=wl,wa="__core-js_shared__",Dl=kl[wa]||Pl(wa,{}),Xn=Dl,ka=Xn;(Jn.exports=function(i,e){return ka[i]||(ka[i]=e!==void 0?e:{})})("versions",[]).push({version:"3.31.0",mode:"pure",copyright:"\xA9 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.31.0/LICENSE",source:"https://github.com/zloirock/core-js"});var Zn=Jn.exports,Ll=Nr,xl=Object,fs=function(i){return xl(Ll(i))},_l=at,Rl=fs,Il=_l({}.hasOwnProperty),ot=Object.hasOwn||function(e,t){return Il(Rl(e),t)},Cl=at,Ol=0,Ml=Math.random(),Bl=Cl(1 .toString),eo=function(i){return"Symbol("+(i===void 0?"":i)+")_"+Bl(++Ol+Ml,36)},Nl=Ve,Fl=Zn,Pa=ot,Vl=eo,Ul=zn,Hl=Qn,Kt=Nl.Symbol,Us=Fl("wks"),Gl=Hl?Kt.for||Kt:Kt&&Kt.withoutSetter||Vl,Ue=function(i){return Pa(Us,i)||(Us[i]=Ul&&Pa(Kt,i)?Kt[i]:Gl("Symbol."+i)),Us[i]},Yl=nt,Da=Lt,La=Kn,ql=hs,jl=$l,Wl=Ue,zl=TypeError,Ql=Wl("toPrimitive"),Kl=function(i,e){if(!Da(i)||La(i))return i;var t=ql(i,Ql),s;if(t){if(e===void 0&&(e="default"),s=Yl(t,i,e),!Da(s)||La(s))return s;throw zl("Can't convert object to primitive value")}return e===void 0&&(e="number"),jl(i,e)},Jl=Kl,Xl=Kn,Yr=function(i){var e=Jl(i,"string");return Xl(e)?e:e+""},Zl=xt,eu=qn,tu=jn,Ii=_t,xa=Yr,iu=TypeError,Hs=Object.defineProperty,su=Object.getOwnPropertyDescriptor,Gs="enumerable",Ys="configurable",qs="writable";si.f=Zl?tu?function(e,t,s){if(Ii(e),t=xa(t),Ii(s),typeof e=="function"&&t==="prototype"&&"value"in s&&qs in s&&!s[qs]){var r=su(e,t);r&&r[qs]&&(e[t]=s.value,s={configurable:Ys in s?s[Ys]:r[Ys],enumerable:Gs in s?s[Gs]:r[Gs],writable:!1})}return Hs(e,t,s)}:Hs:function(e,t,s){if(Ii(e),t=xa(t),Ii(s),eu)try{return Hs(e,t,s)}catch(r){}if("get"in s||"set"in s)throw iu("Accessors not supported");return"value"in s&&(e[t]=s.value),e};var ps=function(i,e){return{enumerable:!(i&1),configurable:!(i&2),writable:!(i&4),value:e}},ru=xt,au=si,nu=ps,Ti=ru?function(i,e,t){return au.f(i,e,nu(1,t))}:function(i,e,t){return i[e]=t,i},ou=Zn,du=eo,_a=ou("keys"),qr=function(i){return _a[i]||(_a[i]=du(i))},jr={},lu=Gd,to=Ve,uu=Lt,cu=Ti,js=ot,Ws=Xn,hu=qr,fu=jr,Ra="Object already initialized",$r=to.TypeError,pu=to.WeakMap,is,gi,ss,mu=function(i){return ss(i)?gi(i):is(i,{})},vu=function(i){return function(e){var t;if(!uu(e)||(t=gi(e)).type!==i)throw $r("Incompatible receiver, "+i+" required");return t}};if(lu||Ws.state){var Ye=Ws.state||(Ws.state=new pu);Ye.get=Ye.get,Ye.has=Ye.has,Ye.set=Ye.set,is=function(i,e){if(Ye.has(i))throw $r(Ra);return e.facade=i,Ye.set(i,e),e},gi=function(i){return Ye.get(i)||{}},ss=function(i){return Ye.has(i)}}else{var Gt=hu("state");fu[Gt]=!0,is=function(i,e){if(js(i,Gt))throw $r(Ra);return e.facade=i,cu(i,Gt,e),e},gi=function(i){return js(i,Gt)?i[Gt]:{}},ss=function(i){return js(i,Gt)}}var gu={set:is,get:gi,has:ss,enforce:mu,getterFor:vu},Su=ls,io=Function.prototype,Ia=io.apply,Ca=io.call,bu=typeof Reflect=="object"&&Reflect.apply||(Su?Ca.bind(Ia):function(){return Ca.apply(Ia,arguments)}),yu=us,Tu=at,so=function(i){if(yu(i)==="Function")return Tu(i)},ro={},ao={},no={}.propertyIsEnumerable,oo=Object.getOwnPropertyDescriptor,Eu=oo&&!no.call({1:2},1);ao.f=Eu?function(e){var t=oo(this,e);return!!t&&t.enumerable}:no;var $u=xt,Au=nt,wu=ao,ku=ps,Pu=yi,Du=Yr,Lu=ot,xu=qn,Oa=Object.getOwnPropertyDescriptor;ro.f=$u?Oa:function(e,t){if(e=Pu(e),t=Du(t),xu)try{return Oa(e,t)}catch(s){}if(Lu(e,t))return ku(!Au(wu.f,e,t),e[t])};var _u=rt,Ru=Oe,Iu=/#|\.prototype\./,Ei=function(i,e){var t=Ou[Cu(i)];return t==Bu?!0:t==Mu?!1:Ru(e)?_u(e):!!e},Cu=Ei.normalize=function(i){return String(i).replace(Iu,".").toLowerCase()},Ou=Ei.data={},Mu=Ei.NATIVE="N",Bu=Ei.POLYFILL="P",Nu=Ei,Ma=so,Fu=Gr,Vu=ls,Uu=Ma(Ma.bind),lo=function(i,e){return Fu(i),e===void 0?i:Vu?Uu(i,e):function(){return i.apply(e,arguments)}},Ci=Ve,Hu=bu,Gu=so,Yu=Oe,qu=ro.f,ju=Nu,Yt=Fr,Wu=lo,qt=Ti,Ba=ot,zu=function(i){var e=function(t,s,r){if(this instanceof e){switch(arguments.length){case 0:return new i;case 1:return new i(t);case 2:return new i(t,s)}return new i(t,s,r)}return Hu(i,this,arguments)};return e.prototype=i.prototype,e},ms=function(i,e){var t=i.target,s=i.global,r=i.stat,a=i.proto,n=s?Ci:r?Ci[t]:(Ci[t]||{}).prototype,o=s?Yt:Yt[t]||qt(Yt,t,{})[t],u=o.prototype,d,l,c,h,f,g,m,v,S;for(h in e)d=ju(s?h:t+(r?".":"#")+h,i.forced),l=!d&&n&&Ba(n,h),g=o[h],l&&(i.dontCallGetSet?(S=qu(n,h),m=S&&S.value):m=n[h]),f=l&&m?m:e[h],!(l&&typeof g==typeof f)&&(i.bind&&l?v=Wu(f,Ci):i.wrap&&l?v=zu(f):a&&Yu(f)?v=Gu(f):v=f,(i.sham||f&&f.sham||g&&g.sham)&&qt(v,"sham",!0),qt(o,h,v),a&&(c=t+"Prototype",Ba(Yt,c)||qt(Yt,c,{}),qt(Yt[c],h,f),i.real&&u&&(d||!u[h])&&qt(u,h,f)))},Ar=xt,Qu=ot,uo=Function.prototype,Ku=Ar&&Object.getOwnPropertyDescriptor,Wr=Qu(uo,"name"),Ju=Wr&&function(){}.name==="something",Xu=Wr&&(!Ar||Ar&&Ku(uo,"name").configurable),Zu={EXISTS:Wr,PROPER:Ju,CONFIGURABLE:Xu},co={},ec=Math.ceil,tc=Math.floor,ic=Math.trunc||function(e){var t=+e;return(t>0?tc:ec)(t)},sc=ic,zr=function(i){var e=+i;return e!==e||e===0?0:sc(e)},rc=zr,ac=Math.max,nc=Math.min,oc=function(i,e){var t=rc(i);return t<0?ac(t+e,0):nc(t,e)},dc=zr,lc=Math.min,uc=function(i){return i>0?lc(dc(i),9007199254740991):0},cc=uc,Qr=function(i){return cc(i.length)},hc=yi,fc=oc,pc=Qr,Na=function(i){return function(e,t,s){var r=hc(e),a=pc(r),n=fc(s,a),o;if(i&&t!=t){for(;a>n;)if(o=r[n++],o!=o)return!0}else for(;a>n;n++)if((i||n in r)&&r[n]===t)return i||n||0;return!i&&-1}},mc={includes:Na(!0),indexOf:Na(!1)},vc=at,zs=ot,gc=yi,Sc=mc.indexOf,bc=jr,Fa=vc([].push),yc=function(i,e){var t=gc(i),s=0,r=[],a;for(a in t)!zs(bc,a)&&zs(t,a)&&Fa(r,a);for(;e.length>s;)zs(t,a=e[s++])&&(~Sc(r,a)||Fa(r,a));return r},ho=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Tc=yc,Ec=ho,$c=Object.keys||function(e){return Tc(e,Ec)},Ac=xt,wc=jn,kc=si,Pc=_t,Dc=yi,Lc=$c;co.f=Ac&&!wc?Object.defineProperties:function(e,t){Pc(e);for(var s=Dc(t),r=Lc(t),a=r.length,n=0,o;a>n;)kc.f(e,o=r[n++],s[o]);return e};var xc=Vr,_c=xc("document","documentElement"),Rc=_t,Ic=co,Va=ho,Cc=jr,Oc=_c,Mc=Yn,Bc=qr,Ua=">",Ha="<",wr="prototype",kr="script",fo=Bc("IE_PROTO"),Qs=function(){},po=function(i){return Ha+kr+Ua+i+Ha+"/"+kr+Ua},Ga=function(i){i.write(po("")),i.close();var e=i.parentWindow.Object;return i=null,e},Nc=function(){var i=Mc("iframe"),e="java"+kr+":",t;return i.style.display="none",Oc.appendChild(i),i.src=String(e),t=i.contentWindow.document,t.open(),t.write(po("document.F=Object")),t.close(),t.F},Oi,Qi=function(){try{Oi=new ActiveXObject("htmlfile")}catch(e){}Qi=typeof document!="undefined"?document.domain&&Oi?Ga(Oi):Nc():Ga(Oi);for(var i=Va.length;i--;)delete Qi[wr][Va[i]];return Qi()};Cc[fo]=!0;var mo=Object.create||function(e,t){var s;return e!==null?(Qs[wr]=Rc(e),s=new Qs,Qs[wr]=null,s[fo]=e):s=Qi(),t===void 0?s:Ic.f(s,t)},Fc=rt,Vc=!Fc(function(){function i(){}return i.prototype.constructor=null,Object.getPrototypeOf(new i)!==i.prototype}),Uc=ot,Hc=Oe,Gc=fs,Yc=qr,qc=Vc,Ya=Yc("IE_PROTO"),Pr=Object,jc=Pr.prototype,vo=qc?Pr.getPrototypeOf:function(i){var e=Gc(i);if(Uc(e,Ya))return e[Ya];var t=e.constructor;return Hc(t)&&e instanceof t?t.prototype:e instanceof Pr?jc:null},Wc=Ti,go=function(i,e,t,s){return s&&s.enumerable?i[e]=t:Wc(i,e,t),i},zc=rt,Qc=Oe,Kc=Lt,Jc=mo,qa=vo,Xc=go,Zc=Ue,Dr=Zc("iterator"),So=!1,it,Ks,Js;[].keys&&(Js=[].keys(),"next"in Js?(Ks=qa(qa(Js)),Ks!==Object.prototype&&(it=Ks)):So=!0);var eh=!Kc(it)||zc(function(){var i={};return it[Dr].call(i)!==i});eh?it={}:it=Jc(it);Qc(it[Dr])||Xc(it,Dr,function(){return this});var bo={IteratorPrototype:it,BUGGY_SAFARI_ITERATORS:So},th=Ue,ih=th("toStringTag"),yo={};yo[ih]="z";var Kr=String(yo)==="[object z]",sh=Kr,rh=Oe,Ki=us,ah=Ue,nh=ah("toStringTag"),oh=Object,dh=Ki(function(){return arguments}())=="Arguments",lh=function(i,e){try{return i[e]}catch(t){}},vs=sh?Ki:function(i){var e,t,s;return i===void 0?"Undefined":i===null?"Null":typeof(t=lh(e=oh(i),nh))=="string"?t:dh?Ki(e):(s=Ki(e))=="Object"&&rh(e.callee)?"Arguments":s},uh=Kr,ch=vs,hh=uh?{}.toString:function(){return"[object "+ch(this)+"]"},fh=Kr,ph=si.f,mh=Ti,vh=ot,gh=hh,Sh=Ue,ja=Sh("toStringTag"),To=function(i,e,t,s){if(i){var r=t?i:i.prototype;vh(r,ja)||ph(r,ja,{configurable:!0,value:e}),s&&!fh&&mh(r,"toString",gh)}},bh=bo.IteratorPrototype,yh=mo,Th=ps,Eh=To,$h=ii,Ah=function(){return this},wh=function(i,e,t,s){var r=e+" Iterator";return i.prototype=yh(bh,{next:Th(+!s,t)}),Eh(i,r,!1,!0),$h[r]=Ah,i},kh=ms,Ph=nt,Eo=Zu,Dh=wh,Lh=vo,xh=To,Wa=go,_h=Ue,za=ii,$o=bo,Rh=Eo.PROPER;Eo.CONFIGURABLE;$o.IteratorPrototype;var Mi=$o.BUGGY_SAFARI_ITERATORS,Xs=_h("iterator"),Qa="keys",Bi="values",Ka="entries",Ih=function(){return this},Ch=function(i,e,t,s,r,a,n){Dh(t,e,s);var o=function(S){if(S===r&&h)return h;if(!Mi&&S in l)return l[S];switch(S){case Qa:return function(){return new t(this,S)};case Bi:return function(){return new t(this,S)};case Ka:return function(){return new t(this,S)}}return function(){return new t(this)}},u=e+" Iterator",d=!1,l=i.prototype,c=l[Xs]||l["@@iterator"]||r&&l[r],h=!Mi&&c||o(r),f=e=="Array"&&l.entries||c,g,m,v;if(f&&(g=Lh(f.call(new i)),g!==Object.prototype&&g.next&&(xh(g,u,!0,!0),za[u]=Ih)),Rh&&r==Bi&&c&&c.name!==Bi&&(d=!0,h=function(){return Ph(c,this)}),r)if(m={values:o(Bi),keys:a?h:o(Qa),entries:o(Ka)},n)for(v in m)(Mi||d||!(v in l))&&Wa(l,v,m[v]);else kh({target:e,proto:!0,forced:Mi||d},m);return n&&l[Xs]!==h&&Wa(l,Xs,h,{name:r}),za[e]=h,m},Oh=function(i,e){return{value:i,done:e}},Mh=yi,Ja=ii,Ao=gu;si.f;var Bh=Ch,Ni=Oh,wo="Array Iterator",Nh=Ao.set,Fh=Ao.getterFor(wo);Bh(Array,"Array",function(i,e){Nh(this,{type:wo,target:Mh(i),index:0,kind:e})},function(){var i=Fh(this),e=i.target,t=i.kind,s=i.index++;return!e||s>=e.length?(i.target=void 0,Ni(void 0,!0)):t=="keys"?Ni(s,!1):t=="values"?Ni(e[s],!1):Ni([s,e[s]],!1)},"values");Ja.Arguments=Ja.Array;var Vh=Ue,Uh=ii,Hh=Vh("iterator"),Gh=Array.prototype,Yh=function(i){return i!==void 0&&(Uh.Array===i||Gh[Hh]===i)},qh=vs,Xa=hs,jh=cs,Wh=ii,zh=Ue,Qh=zh("iterator"),ko=function(i){if(!jh(i))return Xa(i,Qh)||Xa(i,"@@iterator")||Wh[qh(i)]},Kh=nt,Jh=Gr,Xh=_t,Zh=Hr,ef=ko,tf=TypeError,sf=function(i,e){var t=arguments.length<2?ef(i):e;if(Jh(t))return Xh(Kh(t,i));throw tf(Zh(i)+" is not iterable")},rf=nt,Za=_t,af=hs,nf=function(i,e,t){var s,r;Za(i);try{if(s=af(i,"return"),!s){if(e==="throw")throw t;return t}s=rf(s,i)}catch(a){r=!0,s=a}if(e==="throw")throw t;if(r)throw s;return Za(s),t},of=lo,df=nt,lf=_t,uf=Hr,cf=Yh,hf=Qr,en=Ur,ff=sf,pf=ko,tn=nf,mf=TypeError,Ji=function(i,e){this.stopped=i,this.result=e},sn=Ji.prototype,vf=function(i,e,t){var s=t&&t.that,r=!!(t&&t.AS_ENTRIES),a=!!(t&&t.IS_RECORD),n=!!(t&&t.IS_ITERATOR),o=!!(t&&t.INTERRUPTED),u=of(e,s),d,l,c,h,f,g,m,v=function(E){return d&&tn(d,"normal",E),new Ji(!0,E)},S=function(E){return r?(lf(E),o?u(E[0],E[1],v):u(E[0],E[1])):o?u(E,v):u(E)};if(a)d=i.iterator;else if(n)d=i;else{if(l=pf(i),!l)throw mf(uf(i)+" is not iterable");if(cf(l)){for(c=0,h=hf(i);h>c;c++)if(f=S(i[c]),f&&en(sn,f))return f;return new Ji(!1)}d=ff(i,l)}for(g=a?i.next:d.next;!(m=df(g,d)).done;){try{f=S(m.value)}catch(E){tn(d,"throw",E)}if(typeof f=="object"&&f&&en(sn,f))return f}return new Ji(!1)},gf=Yr,Sf=si,bf=ps,yf=function(i,e,t){var s=gf(e);s in i?Sf.f(i,s,bf(0,t)):i[s]=t},Tf=ms,Ef=vf,$f=yf;Tf({target:"Object",stat:!0},{fromEntries:function(e){var t={};return Ef(e,function(s,r){$f(t,s,r)},{AS_ENTRIES:!0}),t}});var Af=Fr,wf=Af.Object.fromEntries,kf={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},Pf=kf,Df=Ve,Lf=vs,xf=Ti,rn=ii,_f=Ue,an=_f("toStringTag");for(var Zs in Pf){var nn=Df[Zs],er=nn&&nn.prototype;er&&Lf(er)!==an&&xf(er,an,Zs),rn[Zs]=rn.Array}var Rf=wf,If=Rf,Cf=If,Of=Cf,rs=Br(Of),me;(function(i){i[i.OFFSET_P=0]="OFFSET_P",i[i.PLAYBACK_SHIFT=1]="PLAYBACK_SHIFT",i[i.DASH_CMAF_OFFSET_P=2]="DASH_CMAF_OFFSET_P"})(me||(me={}));var Fe=(i,e=0,t=me.OFFSET_P)=>{switch(t){case me.OFFSET_P:return i.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case me.PLAYBACK_SHIFT:{if(e===0)return i;const s=new URL(i);return s.searchParams.append("playback_shift",e.toFixed(0)),s.toString()}case me.DASH_CMAF_OFFSET_P:{const s=new URL(i);return!s.searchParams.get("offset_p")&&e===0?i:(s.searchParams.set("offset_p",e.toFixed(0)),s.toString())}default:U(t)}return i};const on=(i,e)=>{var t;switch(e){case me.OFFSET_P:return NaN;case me.PLAYBACK_SHIFT:{const s=new URL(i);return Number(s.searchParams.get("playback_shift"))}case me.DASH_CMAF_OFFSET_P:{const s=new URL(i);return Number((t=s.searchParams.get("offset_p"))!==null&&t!==void 0?t:0)}default:U(e)}};var O=(i,e,t=!1)=>{const s=i.getTransition();(t||!s||s.to===e)&&i.setState(e)};class ue{constructor(e){this.transitionStarted$=new R,this.transitionEnded$=new R,this.transitionUpdated$=new R,this.forceChanged$=new R,this.stateChangeStarted$=N(this.transitionStarted$,this.transitionUpdated$),this.stateChangeEnded$=N(this.transitionEnded$,this.forceChanged$),this.state=e,this.prevState=void 0}setState(e){const t=this.transition,s=this.state;this.transition=void 0,this.prevState=s,this.state=e,t?t.to===e?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:s,to:e,canceledTransition:t})}startTransitionTo(e){const t=this.transition,s=this.state;s===e||D(t)&&t.to===e||(this.prevState=s,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:s,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}}const Mf=i=>{switch(i){case b.MPEG:case b.DASH_SEP:case b.DASH_ONDEMAND:case b.DASH_WEBM:case b.DASH_WEBM_AV1:case b.HLS:case b.HLS_ONDEMAND:return!1;case b.DASH_LIVE:case b.DASH_LIVE_CMAF:case b.HLS_LIVE:case b.HLS_LIVE_CMAF:case b.DASH_LIVE_WEBM:case b.WEB_RTC_LIVE:return!0;default:return U(i)}};var V;(function(i){i.STOPPED="stopped",i.READY="ready",i.PLAYING="playing",i.PAUSED="paused"})(V||(V={}));const Bf=5,Nf=5,Ff=500,dn=7e3;class Vf{constructor(e){this.subscription=new ie,this.loadMediaTimeoutSubscription=new ie,this.videoState=new ue(V.STOPPED),this.syncPlayback=()=>{const s=this.videoState.getState(),r=this.videoState.getTransition(),a=this.params.desiredState.playbackState.getState(),n=this.params.desiredState.playbackState.getTransition(),o=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${s}; videoTransition: ${JSON.stringify(r)}; desiredPlaybackState: ${a}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(o)};`}),a===p.STOPPED){s!==V.STOPPED&&(this.videoState.startTransitionTo(V.STOPPED),this.stop());return}if(!r){if((n==null?void 0:n.to)!==p.PAUSED&&o.state===Y.Requested&&s!==V.STOPPED){this.seek(o.position/1e3);return}switch(a){case p.READY:{switch(s){case V.PLAYING:case V.PAUSED:case V.READY:break;case V.STOPPED:this.videoState.startTransitionTo(V.READY),this.prepare();break;default:U(s)}break}case p.PLAYING:{switch(s){case V.PLAYING:break;case V.PAUSED:this.videoState.startTransitionTo(V.PLAYING),this.params.connection.remotePlayerController.playOrPause();break;case V.READY:this.videoState.startTransitionTo(V.PLAYING),this.params.connection.remotePlayerController.playOrPause();break;case V.STOPPED:this.videoState.startTransitionTo(V.READY),this.prepare();break;default:U(s)}break}case p.PAUSED:{switch(s){case V.PLAYING:this.videoState.startTransitionTo(V.PAUSED),this.params.connection.remotePlayerController.playOrPause();break;case V.PAUSED:break;case V.READY:this.videoState.startTransitionTo(V.PAUSED),this.videoState.setState(V.PAUSED);break;case V.STOPPED:this.videoState.startTransitionTo(V.READY),this.prepare();break;default:U(s)}break}default:U(a)}}},this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Mf(e.format)),this.params.output.isAudioAvailable$.next(!0),this.handleRemoteVolumeChange({volume:this.params.connection.remotePlayer.volumeLevel,muted:this.params.connection.remotePlayer.isMuted});const t=this.params.connection.session.getMediaSession();t&&this.restoreSession(t),this.subscribe()}destroy(){this.log({message:"[destroy]"}),this.subscription.unsubscribe()}subscribe(){this.subscription.add(this.loadMediaTimeoutSubscription);const e=new ie;this.subscription.add(e),this.subscription.add(N(this.videoState.stateChangeStarted$.pipe($(r=>`stateChangeStarted$ ${JSON.stringify(r)}`)),this.videoState.stateChangeEnded$.pipe($(r=>`stateChangeEnded$ ${JSON.stringify(r)}`))).subscribe(r=>this.log({message:`[videoState] ${r}`})));const t=(r,a)=>this.subscription.add(r.subscribe(a));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{const r=new R;e.add(r.pipe(Ke(Ff)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let a=NaN;e.add(C(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(n=>{this.logRemoteEvent(n);const o=n.value;this.params.output.position$.next(o),(this.params.desiredState.seekState.getState().state===Y.Applying||Math.abs(o-a)>Bf)&&r.next(o),a=o})),e.add(C(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(n=>{this.logRemoteEvent(n),this.params.output.duration$.next(n.value)}))}t(C(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(C(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemotePause():this.handleRemotePlay()}),t(C(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),r=>{this.logRemoteEvent(r);const{remotePlayer:a}=this.params.connection,n=r.value,o=this.params.output.isBuffering$.getValue(),u=n===chrome.cast.media.PlayerState.BUFFERING;switch(o!==u&&this.params.output.isBuffering$.next(u),n){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&a.duration-a.currentTime<Nf&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),O(this.params.desiredState.playbackState,p.STOPPED);break;case chrome.cast.media.PlayerState.PAUSED:{this.handleRemotePause();break}case chrome.cast.media.PlayerState.PLAYING:this.handleRemotePlay();break;case chrome.cast.media.PlayerState.BUFFERING:break;default:U(n)}}),t(C(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({volume:r.value})}),t(C(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({muted:r.value})});const s=N(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,Ce(["init"])).pipe(Ke(0));t(s,this.syncPlayback)}restoreSession(e){this.log({message:"restoreSession"});const{remotePlayer:t}=this.params.connection;if(e.playerState!==chrome.cast.media.PlayerState.IDLE){t.isPaused?(this.videoState.setState(V.PAUSED),O(this.params.desiredState.playbackState,p.PAUSED)):(this.videoState.setState(V.PLAYING),O(this.params.desiredState.playbackState,p.PLAYING));const s=this.params.output.isLive$.getValue();this.params.output.duration$.next(s?0:t.duration),this.params.output.position$.next(s?0:t.currentTime),this.params.desiredState.seekState.setState({state:Y.None})}}prepare(){const e=this.params.format;this.log({message:`[prepare] format: ${e}`});const t=this.createMediaInfo(e),s=this.createLoadRequest(t);this.loadMedia(s)}handleRemotePause(){const e=this.videoState.getState(),t=this.videoState.getTransition();((t==null?void 0:t.to)===V.PAUSED||e===V.PLAYING)&&(this.videoState.setState(V.PAUSED),O(this.params.desiredState.playbackState,p.PAUSED))}handleRemotePlay(){const e=this.videoState.getState(),t=this.videoState.getTransition();((t==null?void 0:t.to)===V.PLAYING||e===V.PAUSED)&&(this.videoState.setState(V.PLAYING),O(this.params.desiredState.playbackState,p.PLAYING))}handleRemoteReady(){var e;const t=this.videoState.getTransition();(t==null?void 0:t.to)===V.READY&&this.videoState.setState(V.READY),((e=this.params.desiredState.playbackState.getTransition())===null||e===void 0?void 0:e.to)===p.READY&&O(this.params.desiredState.playbackState,p.READY)}handleRemoteStop(){this.videoState.getState()!==V.STOPPED&&this.videoState.setState(V.STOPPED)}handleRemoteVolumeChange(e){var t,s;const r=this.params.output.volume$.getValue(),a={volume:(t=e.volume)!==null&&t!==void 0?t:r.volume,muted:(s=e.muted)!==null&&s!==void 0?s:r.muted};(a.volume!==r.volume||a.muted!==a.muted)&&this.params.output.volume$.next(a)}seek(e){this.params.output.willSeekEvent$.next();const{remotePlayer:t,remotePlayerController:s}=this.params.connection;t.currentTime=e,s.seek()}stop(){const{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){var t;const s=this.params.source;let r,a,n;switch(e){case b.MPEG:{const l=s[e];P(l);const c=hd(Object.keys(l));P(c);const h=l[c];P(h),r=h,a="video/mp4",n=chrome.cast.media.StreamType.BUFFERED;break}case b.HLS:case b.HLS_ONDEMAND:{const l=s[e];P(l),r=l.url,a="application/x-mpegurl",n=chrome.cast.media.StreamType.BUFFERED;break}case b.DASH_SEP:case b.DASH_ONDEMAND:case b.DASH_WEBM:case b.DASH_WEBM_AV1:{const l=s[e];P(l),r=l.url,a="application/dash+xml",n=chrome.cast.media.StreamType.BUFFERED;break}case b.DASH_LIVE_CMAF:{const l=s[e];P(l),r=l.url,a="application/dash+xml",n=chrome.cast.media.StreamType.LIVE;break}case b.HLS_LIVE:case b.HLS_LIVE_CMAF:{const l=s[e];P(l),r=Fe(l.url),a="application/x-mpegurl",n=chrome.cast.media.StreamType.LIVE;break}case b.DASH_LIVE:case b.WEB_RTC_LIVE:{const l="Unsupported format for Chromecast",c=new Error(l);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:_.VIDEO_PIPELINE,message:l,thrown:c}),c}case b.DASH_LIVE_WEBM:throw new Error("DASH_LIVE_WEBM is no longer supported");default:return U(e)}const o=new chrome.cast.media.MediaInfo((t=this.params.meta.videoId)!==null&&t!==void 0?t:r,a);o.contentUrl=r,o.streamType=n,o.metadata=new chrome.cast.media.GenericMediaMetadata;const{title:u,subtitle:d}=this.params.meta;return D(u)&&(o.metadata.title=u),D(d)&&(o.metadata.subtitle=d),o}createLoadRequest(e){const t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;const s=this.params.desiredState.seekState.getState();return s.state===Y.Applying||s.state===Y.Requested?t.currentTime=this.params.output.isLive$.getValue()?0:s.position/1e3:t.currentTime=0,t}loadMedia(e){const t=this.params.connection.session.loadMedia(e),s=new Promise((r,a)=>{this.loadMediaTimeoutSubscription.add(fd(dn).subscribe(()=>a(`timeout(${dn})`)))});Promise.race([t,s]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state===Y.Applying&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},r=>{const a=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${r}`;this.log({message:a}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:_.VIDEO_PIPELINE,message:a,thrown:r})}).finally(()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}}const Jr=i=>{i.removeAttribute("src"),i.load()},Uf=i=>{try{i.pause(),i.playbackRate=0,Jr(i),i.remove()}catch(e){console.error(e)}};class Hf{constructor(){this.attribute="data-pool-reused"}get(e){return e.hasAttribute(this.attribute)}set(e,t){e.toggleAttribute(this.attribute,t)}delete(e){e.removeAttribute(this.attribute)}}const Lr=window.WeakMap?new WeakMap:new Hf,Rt=i=>{let e=i.querySelector("video");const t=!!e;return e?Jr(e):(e=document.createElement("video"),i.appendChild(e)),Lr.set(e,t),e.setAttribute("crossorigin","anonymous"),e.setAttribute("playsinline","playsinline"),e.controls=!1,e.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),e},It=i=>{const e=Lr.get(i);Lr.delete(i),e?Jr(i):Uf(i)},et=(i,e,t,{equal:s=(n,o)=>n===o,changed$:r,onError:a}={})=>{const n=i.getState(),o=e(),u=Q(r),d=new ie;return r&&d.add(r.subscribe(l=>{const c=i.getState();s(l,c)&&i.setState(l)},a)),s(o,n)||(t(n),u&&i.setState(n)),d.add(i.stateChangeStarted$.subscribe(l=>{t(l.to),u&&i.setState(l.to)},a)),d},$i=(i,e,t)=>et(e,()=>i.loop,s=>{D(s)&&(i.loop=s)},{onError:t}),Ct=(i,e,t,s)=>et(e,()=>({muted:i.muted,volume:i.volume}),r=>{D(r)&&(i.muted=r.muted,i.volume=r.volume)},{equal:(r,a)=>r===a||(r==null?void 0:r.muted)===(a==null?void 0:a.muted)&&(r==null?void 0:r.volume)===(a==null?void 0:a.volume),changed$:t,onError:s}),ri=(i,e,t,s)=>et(e,()=>i.playbackRate,r=>{D(r)&&(i.playbackRate=r)},{changed$:t,onError:s}),Gf=i=>["__",i.language,i.label].join("|"),Yf=(i,e)=>{if(i.id===e)return!0;const[t,s,r]=e.split("|");return i.language===s&&i.label===r};class mt{constructor(){this.available$=new R,this.current$=new y(void 0),this.error$=new R,this.subscription=new ie,this.externalTracks=new Map,this.internalTracks=new Map}connect(e,t,s){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();const r=a=>{this.error$.next({id:"TextTracksManager",category:_.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:a})};this.subscription.add(this.available$.subscribe(s.availableTextTracks$)),this.subscription.add(this.current$.subscribe(s.currentTextTrack$)),this.subscription.add(this.error$.subscribe(s.error$)),this.subscription.add(et(t.internalTextTracks,()=>Object.values(this.internalTracks),a=>{D(a)&&this.setInternal(a)},{equal:(a,n)=>D(a)&&D(n)&&a.length===n.length&&a.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe($(a=>a.filter(({type:n})=>n==="internal"))),onError:r})),this.subscription.add(et(t.externalTextTracks,()=>Object.values(this.externalTracks),a=>{D(a)&&this.setExternal(a)},{equal:(a,n)=>D(a)&&D(n)&&a.length===n.length&&a.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe($(a=>a.filter(({type:n})=>n==="external"))),onError:r})),this.subscription.add(et(t.currentTextTrack,()=>{if(this.video)return;const a=this.htmlTextTracksAsArray().find(({mode:n})=>n==="showing");return a&&this.htmlTextTrackToITextTrack(a).id},a=>this.select(a),{changed$:this.current$,onError:r})),this.subscription.add(et(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(const a of this.htmlTextTracksAsArray())this.applyCueSettings(a.cues),this.applyCueSettings(a.activeCues)}))}subscribe(){P(this.video);const{textTracks:e}=this.video;this.subscription.add(C(e,"addtrack").subscribe(()=>{const s=this.current$.getValue();s&&this.select(s)})),this.subscription.add(N(C(e,"addtrack"),C(e,"removetrack"),Ce(["init"])).pipe($(()=>this.htmlTextTracksAsArray().map(s=>this.htmlTextTrackToITextTrack(s))),he((s,r)=>s.length===r.length&&s.every(({id:a},n)=>a===r[n].id))).subscribe(this.available$)),this.subscription.add(N(C(e,"change"),Ce(["init"])).pipe($(()=>this.htmlTextTracksAsArray().find(({mode:s})=>s==="showing")),$(s=>s&&this.htmlTextTrackToITextTrack(s).id),he()).subscribe(this.current$));const t=s=>{var r,a;return this.applyCueSettings((a=(r=s.target)===null||r===void 0?void 0:r.activeCues)!==null&&a!==void 0?a:null)};this.subscription.add(C(e,"addtrack").subscribe(s=>{var r,a;(r=s.track)===null||r===void 0||r.addEventListener("cuechange",t);const n=o=>{var u,d,l,c,h;const f=(d=(u=o.target)===null||u===void 0?void 0:u.cues)!==null&&d!==void 0?d:null;f&&f.length&&(this.applyCueSettings((c=(l=o.target)===null||l===void 0?void 0:l.cues)!==null&&c!==void 0?c:null),(h=o.target)===null||h===void 0||h.removeEventListener("cuechange",n))};(a=s.track)===null||a===void 0||a.addEventListener("cuechange",n)})),this.subscription.add(C(e,"removetrack").subscribe(s=>{var r;(r=s.track)===null||r===void 0||r.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;const t=this.cueSettings.getState();for(const s of Array.from(e)){const r=s;D(t.align)&&(r.align=t.align),D(t.position)&&(r.position=t.position),D(t.size)&&(r.size=t.size),D(t.line)&&(r.line=t.line)}}htmlTextTracksAsArray(e=!1){P(this.video);const t=[...this.video.textTracks];return e?t:t.filter(mt.isHealthyTrack)}htmlTextTrackToITextTrack(e){var t,s;const{language:r,label:a}=e,n=e.id?e.id:Gf(e),o=this.externalTracks.has(n),u=n.includes("auto");return o?{id:n,type:"external",isAuto:u,language:r,label:a,url:(t=this.externalTracks.get(n))===null||t===void 0?void 0:t.url}:{id:n,type:"internal",isAuto:u,language:r,label:a,url:(s=this.internalTracks.get(n))===null||s===void 0?void 0:s.url}}static isHealthyTrack(e){return!(e.kind==="metadata"||e.groupId||e.id===""&&e.label===""&&e.language==="")}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(s=>s.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){const t=[...this.externalTracks];e.filter(({id:s,language:r,isAuto:a})=>!this.internalTracks.has(s)&&!t.some(([,n])=>n.language===r&&n.isAuto===a)).forEach(s=>this.attach(s)),Array.from(this.internalTracks).filter(([s])=>!e.find(r=>r.id===s)).forEach(([,s])=>this.detach(s))}select(e){P(this.video);for(const t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(const t of this.htmlTextTracksAsArray(!0))(Q(e)||!Yf(t,e))&&(t.mode="disabled")}destroy(){if(this.subscription.unsubscribe(),this.video)for(const e of Array.from(this.video.getElementsByTagName("track"))){const t=e.getAttribute("id");t&&this.externalTracks.has(t)&&this.video.removeChild(e)}this.externalTracks.clear()}attach(e){P(this.video);const t=document.createElement("track");t.setAttribute("src",e.url),t.setAttribute("id",e.id),e.label&&t.setAttribute("label",e.label),e.language&&t.setAttribute("srclang",e.language),e.type==="external"?this.externalTracks.set(e.id,e):e.type==="internal"&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){P(this.video);const t=Array.prototype.find.call(this.video.getElementsByTagName("track"),s=>s.getAttribute("id")===e.id);t&&this.video.removeChild(t),e.type==="external"?this.externalTracks.delete(e.id):e.type==="internal"&&this.internalTracks.delete(e.id)}}class Xr{constructor(){this.pausedTime=0,this.streamOffset=0,this.pauseTimestamp=0}getTotalPausedTime(){return this.pausedTime+this.getCurrentPausedTime()}getCurrentPausedTime(){return this.pauseTimestamp>0?Date.now()-this.pauseTimestamp:0}getStreamOffset(){return this.streamOffset}getTotalOffset(){return this.getTotalPausedTime()+this.streamOffset}pause(){this.pauseTimestamp===0&&(this.pauseTimestamp=Date.now())}resume(){this.pauseTimestamp>0&&(this.pausedTime+=this.getCurrentPausedTime(),this.pauseTimestamp=0)}resetTo(e,t=!1){this.streamOffset=e,this.pauseTimestamp=0,this.pausedTime=0,t&&this.pause()}}const Po=i=>{var e;let t=i;for(;!(t instanceof Document)&&!(t instanceof ShadowRoot)&&t!==null;)t=t==null?void 0:t.parentNode;return(e=t)!==null&&e!==void 0?e:void 0},ln=i=>{const e=Po(i);return!!(e&&e.fullscreenElement&&e.fullscreenElement===i)},qf=i=>{const e=Po(i);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===i)},jf=3;var Wf=(i,e,t=jf)=>{let s=0,r=0;for(let a=0;a<i.length;a++){const n=i.start(a),o=i.end(a);if(n<=e&&e<=o){if(s=n,r=o,!t)return{from:s,to:r};for(let u=a-1;u>=0;u--)i.end(u)+t>=s&&(s=i.start(u));for(let u=a+1;u<i.length;u++)i.start(u)-t<=r&&(r=i.end(u))}}return{from:s,to:r}};const Ot=i=>{const e=A=>C(i,A).pipe(Zi(void 0)),s=N(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(A=>C(i,A))).pipe($(A=>A.type==="ended"?i.readyState<2:i.readyState<3),he()),r=N(C(i,"progress"),C(i,"timeupdate")).pipe($(()=>Wf(i.buffered,i.currentTime))),n=Or().browser===Bn.Safari?Re({play:e("play").pipe(Ae()),playing:e("playing")}).pipe(Zi(void 0)):e("playing"),o=C(i,"volumechange").pipe($(()=>({muted:i.muted,volume:i.volume}))),u=C(i,"ratechange").pipe($(()=>i.playbackRate)),d=C(i,"error").pipe(ce(()=>!!(i.error||i.played.length)),$(()=>{var A;const w=i.error;return{id:w?`MediaError#${w.code}`:"HtmlVideoError",category:_.VIDEO_PIPELINE,message:w?w.message:"Error event from HTML video element",thrown:(A=i.error)!==null&&A!==void 0?A:void 0}})),l=C(i,"timeupdate").pipe($(()=>i.currentTime)),c=new R,h=.3;let f;l.subscribe(A=>{i.loop&&D(f)&&D(A)&&f>=i.duration-h&&A<=h&&c.next(f),f=A});const g=C(i,"enterpictureinpicture"),m=C(i,"leavepictureinpicture"),v=new y(qf(i));g.subscribe(()=>v.next(!0)),m.subscribe(()=>v.next(!1));const S=new y(ln(i));return C(i,"fullscreenchange").pipe($(()=>ln(i))).subscribe(S),{playing$:n,pause$:e("pause").pipe(ce(()=>!i.error)),canplay$:e("canplay"),ended$:e("ended"),looped$:c,error$:d,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:l,durationChange$:C(i,"durationchange").pipe($(()=>i.duration)),isBuffering$:s,currentBuffer$:r,volumeState$:o,playbackRateState$:u,inPiP$:v,inFullscreen$:S}};var gs=i=>{switch(i){case"mobile":return Pe.Q_144P;case"lowest":return Pe.Q_240P;case"low":return Pe.Q_360P;case"sd":case"medium":return Pe.Q_480P;case"hd":case"high":return Pe.Q_720P;case"fullhd":case"full":return Pe.Q_1080P;case"quadhd":case"quad":return Pe.Q_1440P;case"ultrahd":case"ultra":return Pe.Q_2160P}},zf=ms,Qf=fs,Kf=Qr,Jf=zr;zf({target:"Array",proto:!0},{at:function(e){var t=Qf(this),s=Kf(t),r=Jf(e),a=r>=0?r:s+r;return a<0||a>=s?void 0:t[a]}});var Xf=Vr,Do=Xf,Zf=Do,ep=Zf("Array","at"),tp=ep,ip=tp,sp=ip,rp=sp,Ze=Br(rp);let Zr=!1,tt={};const ap=i=>{Zr=i},np=()=>{tt={}},op=i=>{i(tt)},Fi=(i,e)=>{var t;Zr&&(tt.meta=(t=tt.meta)!==null&&t!==void 0?t:{},tt.meta[i]=e)};class We{constructor(e){this.name=e}next(e){var t,s;if(!Zr)return;tt.series=(t=tt.series)!==null&&t!==void 0?t:{};const r=(s=tt.series[this.name])!==null&&s!==void 0?s:[];r.push([Date.now(),e]),tt.series[this.name]=r}}var At;(function(i){i.FitsContainer="FitsContainer",i.FitsThroughput="FitsThroughput",i.Buffer="Buffer",i.DroppedFramesLimit="DroppedFramesLimit",i.FitsQualityLimits="FitsQualityLimits"})(At||(At={}));const dp=new We("best_bitrate"),lp=(i,e,t)=>(e-t)*Math.pow(2,-10*i)+t;class up{constructor(){this.history={}}recordSelection(e){this.history[e.id]=ne()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}}const cp='Assertion "ABR Tracks is empty array" failed',Ss=(i,{container:e,throughput:t,tuning:s,limits:r,reserve:a=0,forwardBufferHealth:n,playbackRate:o,current:u,history:d,droppedVideoMaxQualityLimit:l,abrLogger:c})=>{var h,f,g,m,v;pd(i,cp);const S=s.usePixelRatio&&(h=window.devicePixelRatio)!==null&&h!==void 0?h:1,E=s.limitByContainer&&e&&e.width>0&&e.height>0&&{width:e.width*S*s.containerSizeFactor,height:e.height*S*s.containerSizeFactor},A=E&&kt(E),w=s.considerPlaybackRate&&D(o)?o:1,k=i.filter(B=>!Pt(B.quality)).sort((B,x)=>Xt(B.quality,x.quality)?-1:1),q=(f=Ze(k,-1))===null||f===void 0?void 0:f.quality,j=(g=Ze(k,0))===null||g===void 0?void 0:g.quality,K=Q(r)||D(r.min)&&D(r.max)&&Wi(r.max,r.min)||D(r.min)&&j&&Xt(r.min,j)||D(r.max)&&q&&Wi(r.max,q),G=w*lp(n!=null?n:.5,s.bitrateFactorAtEmptyBuffer,s.bitrateFactorAtFullBuffer),J={},M=k.filter(B=>(A?Wi(B.quality,A):!0)?(D(t)&&isFinite(t)&&D(B.bitrate)?t-a>=B.bitrate*G:!0)?s.lazyQualitySwitch&&D(s.minBufferToSwitchUp)&&u&&!Pt(u.quality)&&(n!=null?n:0)<s.minBufferToSwitchUp&&Xt(B.quality,u.quality)?(J[B.quality]=At.Buffer,!1):!!l&&Sr(B.quality,l)?(J[B.quality]=At.DroppedFramesLimit,!1):K||(Q(r.max)||es(B.quality,r.max))&&(Q(r.min)||Sr(B.quality,r.min))?!0:(J[B.quality]=At.FitsQualityLimits,!1):(J[B.quality]=At.FitsThroughput,!1):(J[B.quality]=At.FitsContainer,!1))[0];M&&M.bitrate&&dp.next(M.bitrate);const I=(m=M!=null?M:k[Math.ceil((k.length-1)/2)])!==null&&m!==void 0?m:i[0];I.quality!==((v=d==null?void 0:d.last)===null||v===void 0?void 0:v.quality)&&c({message:`
|
|
6
|
+
import{ValueSubject as y,Subject as R,Subscription as ie,isNonNullable as D,ErrorCategory as _,isNullable as Q,fromEvent as C,assertNever as U,merge as N,tap as vi,map as $,observableFrom as Ce,filterChanged as he,assertNonNullable as P,debounce as Ke,getHighestQuality as hd,timeout as fd,getCurrentBrowser as Or,CurrentClientBrowser as Bn,combine as Re,once as Ae,mapTo as Zi,filter as ce,VideoQuality as Pe,now as ne,assertNotEmptyArray as pd,videoSizeToQuality as kt,isInvariantQuality as Pt,isHigher as Xt,isLower as Wi,isHigherOrEqual as Sr,isLowerOrEqual as es,interval as fi,videoQualityToHeight as md,abortable as we,getExponentialDelay as zi,throttle as vd,Observable as Mr,observeElementSize as gd,isIOS as Sd,CurrentClientDevice as bd,safeStorage as Rs,fillWithDefault as yd,Logger as Td}from"@vkontakte/videoplayer-shared/es2018.esm.js";import{Observable as tg,Subject as ig,Subscription as sg,ValueSubject as rg,VideoQuality as ag}from"@vkontakte/videoplayer-shared/es2018.esm.js";const Ed="2.0.103-dev.c555938f.0";var p;(function(i){i.STOPPED="stopped",i.READY="ready",i.PLAYING="playing",i.PAUSED="paused"})(p||(p={}));var b;(function(i){i.MPEG="MPEG",i.DASH="DASH_SEP",i.DASH_SEP="DASH_SEP",i.DASH_SEP_VK="DASH_SEP",i.DASH_WEBM="DASH_WEBM",i.DASH_WEBM_AV1="DASH_WEBM_AV1",i.DASH_WEBM_VK="DASH_WEBM",i.DASH_ONDEMAND="DASH_ONDEMAND",i.DASH_ONDEMAND_VK="DASH_ONDEMAND",i.DASH_LIVE="DASH_LIVE",i.DASH_LIVE_CMAF="DASH_LIVE_CMAF",i.DASH_LIVE_WEBM="DASH_LIVE_WEBM",i.HLS="HLS",i.HLS_ONDEMAND="HLS_ONDEMAND",i.HLS_JS="HLS",i.HLS_LIVE="HLS_LIVE",i.HLS_LIVE_CMAF="HLS_LIVE_CMAF",i.WEB_RTC_LIVE="WEB_RTC_LIVE"})(b||(b={}));var ye;(function(i){i.SCREEN="SCREEN",i.CHROMECAST="CHROMECAST"})(ye||(ye={}));var ge;(function(i){i.NOT_AVAILABLE="NOT_AVAILABLE",i.AVAILABLE="AVAILABLE",i.CONNECTING="CONNECTING",i.CONNECTED="CONNECTED"})(ge||(ge={}));var br;(function(i){i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic"})(br||(br={}));var Y;(function(i){i.None="none",i.Requested="requested",i.Applying="applying"})(Y||(Y={}));var ht;(function(i){i.NONE="none",i.INLINE="inline",i.FULLSCREEN="fullscreen",i.SECOND_SCREEN="second_screen",i.PIP="pip"})(ht||(ht={}));var $d=i=>new Promise((e,t)=>{const s=document.createElement("script");s.setAttribute("src",i),s.onload=()=>e,s.onerror=()=>t,document.body.appendChild(s)});class Ad{constructor(e){var t;this.connection$=new y(void 0),this.castState$=new y(ge.NOT_AVAILABLE),this.errorEvent$=new R,this.realCastState$=new y(ge.NOT_AVAILABLE),this.subscription=new ie,this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastInitializer");const s="chrome"in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${s}`}),e.isDisabled||!s)return;const r=D((t=window.chrome)===null||t===void 0?void 0:t.cast),a=!!window.__onGCastApiAvailable;r?this.initializeCastApi():(window.__onGCastApiAvailable=n=>{delete window.__onGCastApiAvailable,n&&this.initializeCastApi()},a||$d("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:_.NETWORK,message:"Script loading failed!"})))}connect(){var e;(e=cast.framework.CastContext.getInstance())===null||e===void 0||e.requestSession()}disconnect(){var e,t;(t=(e=cast.framework.CastContext.getInstance())===null||e===void 0?void 0:e.getCurrentSession())===null||t===void 0||t.endSession(!0)}stopMedia(){return new Promise((e,t)=>{var s,r,a;(a=(r=(s=cast.framework.CastContext.getInstance())===null||s===void 0?void 0:s.getCurrentSession())===null||r===void 0?void 0:r.getMediaSession())===null||a===void 0||a.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){D(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){const t=this.connection$.getValue();Q(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){const t=this.connection$.getValue();Q(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.subscription.unsubscribe()}initListeners(){const e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),s=cast.framework.CastContext.getInstance();this.subscription.add(C(s,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(r=>{var a,n;switch(r.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=(n=(a=s.getCurrentSession())===null||a===void 0?void 0:a.getMediaSession())===null||n===void 0?void 0:n.media.contentId;break;case cast.framework.SessionState.NO_SESSION:case cast.framework.SessionState.SESSION_ENDING:case cast.framework.SessionState.SESSION_ENDED:case cast.framework.SessionState.SESSION_START_FAILED:this.contentId=void 0;break;default:return U(r.sessionState)}})).add(N(C(s,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(vi(r=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(r)}`})}),$(r=>r.castState)),Ce([s.getCastState()])).pipe(he(),$(wd),vi(r=>{this.log({message:`realCastState$: ${r}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{var a;const n=r===ge.CONNECTED,o=D(this.connection$.getValue());if(n&&!o){const u=s.getCurrentSession();P(u);const d=u.getCastDevice(),l=(a=u.getMediaSession())===null||a===void 0?void 0:a.media.contentId;(Q(l)||l===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:u,castDevice:d}))}else!n&&o&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(r===ge.CONNECTED?D(this.connection$.getValue())?ge.CONNECTED:ge.AVAILABLE:r)}))}initializeCastApi(){var e;let t,s,r;try{t=cast.framework.CastContext.getInstance(),s=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,r=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch(a){return}try{t.setOptions({receiverApplicationId:(e=this.params.receiverApplicationId)!==null&&e!==void 0?e:s,autoJoinPolicy:r}),this.initListeners()}catch(a){this.errorEvent$.next({id:"ChromecastInitializer",category:_.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:a})}}}const wd=i=>{switch(i){case cast.framework.CastState.NO_DEVICES_AVAILABLE:return ge.NOT_AVAILABLE;case cast.framework.CastState.NOT_CONNECTED:return ge.AVAILABLE;case cast.framework.CastState.CONNECTING:return ge.CONNECTING;case cast.framework.CastState.CONNECTED:return ge.CONNECTED;default:return U(i)}};var Is=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Br(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var rt=function(i){try{return!!i()}catch(e){return!0}},kd=rt,ls=!kd(function(){var i=function(){}.bind();return typeof i!="function"||i.hasOwnProperty("prototype")}),Nn=ls,Fn=Function.prototype,yr=Fn.call,Pd=Nn&&Fn.bind.bind(yr,yr),at=Nn?Pd:function(i){return function(){return yr.apply(i,arguments)}},Vn=at,Dd=Vn({}.toString),Ld=Vn("".slice),us=function(i){return Ld(Dd(i),8,-1)},xd=at,_d=rt,Rd=us,Cs=Object,Id=xd("".split),Cd=_d(function(){return!Cs("z").propertyIsEnumerable(0)})?function(i){return Rd(i)=="String"?Id(i,""):Cs(i)}:Cs,cs=function(i){return i==null},Od=cs,Md=TypeError,Nr=function(i){if(Od(i))throw Md("Can't call method on "+i);return i},Bd=Cd,Nd=Nr,yi=function(i){return Bd(Nd(i))},ii={},_i=function(i){return i&&i.Math==Math&&i},Ve=_i(typeof globalThis=="object"&&globalThis)||_i(typeof window=="object"&&window)||_i(typeof self=="object"&&self)||_i(typeof Is=="object"&&Is)||function(){return this}()||Is||Function("return this")(),Tr=typeof document=="object"&&document.all,Fd=typeof Tr=="undefined"&&Tr!==void 0,Un={all:Tr,IS_HTMLDDA:Fd},Hn=Un,Vd=Hn.all,Oe=Hn.IS_HTMLDDA?function(i){return typeof i=="function"||i===Vd}:function(i){return typeof i=="function"},Ud=Ve,Hd=Oe,ma=Ud.WeakMap,Gd=Hd(ma)&&/native code/.test(String(ma)),va=Oe,Gn=Un,Yd=Gn.all,Lt=Gn.IS_HTMLDDA?function(i){return typeof i=="object"?i!==null:va(i)||i===Yd}:function(i){return typeof i=="object"?i!==null:va(i)},qd=rt,xt=!qd(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7}),si={},jd=Ve,ga=Lt,Er=jd.document,Wd=ga(Er)&&ga(Er.createElement),Yn=function(i){return Wd?Er.createElement(i):{}},zd=xt,Qd=rt,Kd=Yn,qn=!zd&&!Qd(function(){return Object.defineProperty(Kd("div"),"a",{get:function(){return 7}}).a!=7}),Jd=xt,Xd=rt,jn=Jd&&Xd(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!=42}),Zd=Lt,el=String,tl=TypeError,_t=function(i){if(Zd(i))return i;throw tl(el(i)+" is not an object")},il=ls,Ri=Function.prototype.call,nt=il?Ri.bind(Ri):function(){return Ri.apply(Ri,arguments)},Fr={},Os=Fr,Ms=Ve,sl=Oe,Sa=function(i){return sl(i)?i:void 0},Vr=function(i,e){return arguments.length<2?Sa(Os[i])||Sa(Ms[i]):Os[i]&&Os[i][e]||Ms[i]&&Ms[i][e]},rl=at,Ur=rl({}.isPrototypeOf),al=typeof navigator!="undefined"&&String(navigator.userAgent)||"",Wn=Ve,Bs=al,ba=Wn.process,ya=Wn.Deno,Ta=ba&&ba.versions||ya&&ya.version,Ea=Ta&&Ta.v8,Ne,ts;Ea&&(Ne=Ea.split("."),ts=Ne[0]>0&&Ne[0]<4?1:+(Ne[0]+Ne[1]));!ts&&Bs&&(Ne=Bs.match(/Edge\/(\d+)/),(!Ne||Ne[1]>=74)&&(Ne=Bs.match(/Chrome\/(\d+)/),Ne&&(ts=+Ne[1])));var nl=ts,$a=nl,ol=rt,dl=Ve,ll=dl.String,zn=!!Object.getOwnPropertySymbols&&!ol(function(){var i=Symbol();return!ll(i)||!(Object(i)instanceof Symbol)||!Symbol.sham&&$a&&$a<41}),ul=zn,Qn=ul&&!Symbol.sham&&typeof Symbol.iterator=="symbol",cl=Vr,hl=Oe,fl=Ur,pl=Qn,ml=Object,Kn=pl?function(i){return typeof i=="symbol"}:function(i){var e=cl("Symbol");return hl(e)&&fl(e.prototype,ml(i))},vl=String,Hr=function(i){try{return vl(i)}catch(e){return"Object"}},gl=Oe,Sl=Hr,bl=TypeError,Gr=function(i){if(gl(i))return i;throw bl(Sl(i)+" is not a function")},yl=Gr,Tl=cs,hs=function(i,e){var t=i[e];return Tl(t)?void 0:yl(t)},Ns=nt,Fs=Oe,Vs=Lt,El=TypeError,$l=function(i,e){var t,s;if(e==="string"&&Fs(t=i.toString)&&!Vs(s=Ns(t,i))||Fs(t=i.valueOf)&&!Vs(s=Ns(t,i))||e!=="string"&&Fs(t=i.toString)&&!Vs(s=Ns(t,i)))return s;throw El("Can't convert object to primitive value")},Jn={exports:{}},Aa=Ve,Al=Object.defineProperty,wl=function(i,e){try{Al(Aa,i,{value:e,configurable:!0,writable:!0})}catch(t){Aa[i]=e}return e},kl=Ve,Pl=wl,wa="__core-js_shared__",Dl=kl[wa]||Pl(wa,{}),Xn=Dl,ka=Xn;(Jn.exports=function(i,e){return ka[i]||(ka[i]=e!==void 0?e:{})})("versions",[]).push({version:"3.31.0",mode:"pure",copyright:"\xA9 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.31.0/LICENSE",source:"https://github.com/zloirock/core-js"});var Zn=Jn.exports,Ll=Nr,xl=Object,fs=function(i){return xl(Ll(i))},_l=at,Rl=fs,Il=_l({}.hasOwnProperty),ot=Object.hasOwn||function(e,t){return Il(Rl(e),t)},Cl=at,Ol=0,Ml=Math.random(),Bl=Cl(1 .toString),eo=function(i){return"Symbol("+(i===void 0?"":i)+")_"+Bl(++Ol+Ml,36)},Nl=Ve,Fl=Zn,Pa=ot,Vl=eo,Ul=zn,Hl=Qn,Kt=Nl.Symbol,Us=Fl("wks"),Gl=Hl?Kt.for||Kt:Kt&&Kt.withoutSetter||Vl,Ue=function(i){return Pa(Us,i)||(Us[i]=Ul&&Pa(Kt,i)?Kt[i]:Gl("Symbol."+i)),Us[i]},Yl=nt,Da=Lt,La=Kn,ql=hs,jl=$l,Wl=Ue,zl=TypeError,Ql=Wl("toPrimitive"),Kl=function(i,e){if(!Da(i)||La(i))return i;var t=ql(i,Ql),s;if(t){if(e===void 0&&(e="default"),s=Yl(t,i,e),!Da(s)||La(s))return s;throw zl("Can't convert object to primitive value")}return e===void 0&&(e="number"),jl(i,e)},Jl=Kl,Xl=Kn,Yr=function(i){var e=Jl(i,"string");return Xl(e)?e:e+""},Zl=xt,eu=qn,tu=jn,Ii=_t,xa=Yr,iu=TypeError,Hs=Object.defineProperty,su=Object.getOwnPropertyDescriptor,Gs="enumerable",Ys="configurable",qs="writable";si.f=Zl?tu?function(e,t,s){if(Ii(e),t=xa(t),Ii(s),typeof e=="function"&&t==="prototype"&&"value"in s&&qs in s&&!s[qs]){var r=su(e,t);r&&r[qs]&&(e[t]=s.value,s={configurable:Ys in s?s[Ys]:r[Ys],enumerable:Gs in s?s[Gs]:r[Gs],writable:!1})}return Hs(e,t,s)}:Hs:function(e,t,s){if(Ii(e),t=xa(t),Ii(s),eu)try{return Hs(e,t,s)}catch(r){}if("get"in s||"set"in s)throw iu("Accessors not supported");return"value"in s&&(e[t]=s.value),e};var ps=function(i,e){return{enumerable:!(i&1),configurable:!(i&2),writable:!(i&4),value:e}},ru=xt,au=si,nu=ps,Ti=ru?function(i,e,t){return au.f(i,e,nu(1,t))}:function(i,e,t){return i[e]=t,i},ou=Zn,du=eo,_a=ou("keys"),qr=function(i){return _a[i]||(_a[i]=du(i))},jr={},lu=Gd,to=Ve,uu=Lt,cu=Ti,js=ot,Ws=Xn,hu=qr,fu=jr,Ra="Object already initialized",$r=to.TypeError,pu=to.WeakMap,is,gi,ss,mu=function(i){return ss(i)?gi(i):is(i,{})},vu=function(i){return function(e){var t;if(!uu(e)||(t=gi(e)).type!==i)throw $r("Incompatible receiver, "+i+" required");return t}};if(lu||Ws.state){var Ye=Ws.state||(Ws.state=new pu);Ye.get=Ye.get,Ye.has=Ye.has,Ye.set=Ye.set,is=function(i,e){if(Ye.has(i))throw $r(Ra);return e.facade=i,Ye.set(i,e),e},gi=function(i){return Ye.get(i)||{}},ss=function(i){return Ye.has(i)}}else{var Gt=hu("state");fu[Gt]=!0,is=function(i,e){if(js(i,Gt))throw $r(Ra);return e.facade=i,cu(i,Gt,e),e},gi=function(i){return js(i,Gt)?i[Gt]:{}},ss=function(i){return js(i,Gt)}}var gu={set:is,get:gi,has:ss,enforce:mu,getterFor:vu},Su=ls,io=Function.prototype,Ia=io.apply,Ca=io.call,bu=typeof Reflect=="object"&&Reflect.apply||(Su?Ca.bind(Ia):function(){return Ca.apply(Ia,arguments)}),yu=us,Tu=at,so=function(i){if(yu(i)==="Function")return Tu(i)},ro={},ao={},no={}.propertyIsEnumerable,oo=Object.getOwnPropertyDescriptor,Eu=oo&&!no.call({1:2},1);ao.f=Eu?function(e){var t=oo(this,e);return!!t&&t.enumerable}:no;var $u=xt,Au=nt,wu=ao,ku=ps,Pu=yi,Du=Yr,Lu=ot,xu=qn,Oa=Object.getOwnPropertyDescriptor;ro.f=$u?Oa:function(e,t){if(e=Pu(e),t=Du(t),xu)try{return Oa(e,t)}catch(s){}if(Lu(e,t))return ku(!Au(wu.f,e,t),e[t])};var _u=rt,Ru=Oe,Iu=/#|\.prototype\./,Ei=function(i,e){var t=Ou[Cu(i)];return t==Bu?!0:t==Mu?!1:Ru(e)?_u(e):!!e},Cu=Ei.normalize=function(i){return String(i).replace(Iu,".").toLowerCase()},Ou=Ei.data={},Mu=Ei.NATIVE="N",Bu=Ei.POLYFILL="P",Nu=Ei,Ma=so,Fu=Gr,Vu=ls,Uu=Ma(Ma.bind),lo=function(i,e){return Fu(i),e===void 0?i:Vu?Uu(i,e):function(){return i.apply(e,arguments)}},Ci=Ve,Hu=bu,Gu=so,Yu=Oe,qu=ro.f,ju=Nu,Yt=Fr,Wu=lo,qt=Ti,Ba=ot,zu=function(i){var e=function(t,s,r){if(this instanceof e){switch(arguments.length){case 0:return new i;case 1:return new i(t);case 2:return new i(t,s)}return new i(t,s,r)}return Hu(i,this,arguments)};return e.prototype=i.prototype,e},ms=function(i,e){var t=i.target,s=i.global,r=i.stat,a=i.proto,n=s?Ci:r?Ci[t]:(Ci[t]||{}).prototype,o=s?Yt:Yt[t]||qt(Yt,t,{})[t],u=o.prototype,d,l,c,h,f,g,m,v,S;for(h in e)d=ju(s?h:t+(r?".":"#")+h,i.forced),l=!d&&n&&Ba(n,h),g=o[h],l&&(i.dontCallGetSet?(S=qu(n,h),m=S&&S.value):m=n[h]),f=l&&m?m:e[h],!(l&&typeof g==typeof f)&&(i.bind&&l?v=Wu(f,Ci):i.wrap&&l?v=zu(f):a&&Yu(f)?v=Gu(f):v=f,(i.sham||f&&f.sham||g&&g.sham)&&qt(v,"sham",!0),qt(o,h,v),a&&(c=t+"Prototype",Ba(Yt,c)||qt(Yt,c,{}),qt(Yt[c],h,f),i.real&&u&&(d||!u[h])&&qt(u,h,f)))},Ar=xt,Qu=ot,uo=Function.prototype,Ku=Ar&&Object.getOwnPropertyDescriptor,Wr=Qu(uo,"name"),Ju=Wr&&function(){}.name==="something",Xu=Wr&&(!Ar||Ar&&Ku(uo,"name").configurable),Zu={EXISTS:Wr,PROPER:Ju,CONFIGURABLE:Xu},co={},ec=Math.ceil,tc=Math.floor,ic=Math.trunc||function(e){var t=+e;return(t>0?tc:ec)(t)},sc=ic,zr=function(i){var e=+i;return e!==e||e===0?0:sc(e)},rc=zr,ac=Math.max,nc=Math.min,oc=function(i,e){var t=rc(i);return t<0?ac(t+e,0):nc(t,e)},dc=zr,lc=Math.min,uc=function(i){return i>0?lc(dc(i),9007199254740991):0},cc=uc,Qr=function(i){return cc(i.length)},hc=yi,fc=oc,pc=Qr,Na=function(i){return function(e,t,s){var r=hc(e),a=pc(r),n=fc(s,a),o;if(i&&t!=t){for(;a>n;)if(o=r[n++],o!=o)return!0}else for(;a>n;n++)if((i||n in r)&&r[n]===t)return i||n||0;return!i&&-1}},mc={includes:Na(!0),indexOf:Na(!1)},vc=at,zs=ot,gc=yi,Sc=mc.indexOf,bc=jr,Fa=vc([].push),yc=function(i,e){var t=gc(i),s=0,r=[],a;for(a in t)!zs(bc,a)&&zs(t,a)&&Fa(r,a);for(;e.length>s;)zs(t,a=e[s++])&&(~Sc(r,a)||Fa(r,a));return r},ho=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Tc=yc,Ec=ho,$c=Object.keys||function(e){return Tc(e,Ec)},Ac=xt,wc=jn,kc=si,Pc=_t,Dc=yi,Lc=$c;co.f=Ac&&!wc?Object.defineProperties:function(e,t){Pc(e);for(var s=Dc(t),r=Lc(t),a=r.length,n=0,o;a>n;)kc.f(e,o=r[n++],s[o]);return e};var xc=Vr,_c=xc("document","documentElement"),Rc=_t,Ic=co,Va=ho,Cc=jr,Oc=_c,Mc=Yn,Bc=qr,Ua=">",Ha="<",wr="prototype",kr="script",fo=Bc("IE_PROTO"),Qs=function(){},po=function(i){return Ha+kr+Ua+i+Ha+"/"+kr+Ua},Ga=function(i){i.write(po("")),i.close();var e=i.parentWindow.Object;return i=null,e},Nc=function(){var i=Mc("iframe"),e="java"+kr+":",t;return i.style.display="none",Oc.appendChild(i),i.src=String(e),t=i.contentWindow.document,t.open(),t.write(po("document.F=Object")),t.close(),t.F},Oi,Qi=function(){try{Oi=new ActiveXObject("htmlfile")}catch(e){}Qi=typeof document!="undefined"?document.domain&&Oi?Ga(Oi):Nc():Ga(Oi);for(var i=Va.length;i--;)delete Qi[wr][Va[i]];return Qi()};Cc[fo]=!0;var mo=Object.create||function(e,t){var s;return e!==null?(Qs[wr]=Rc(e),s=new Qs,Qs[wr]=null,s[fo]=e):s=Qi(),t===void 0?s:Ic.f(s,t)},Fc=rt,Vc=!Fc(function(){function i(){}return i.prototype.constructor=null,Object.getPrototypeOf(new i)!==i.prototype}),Uc=ot,Hc=Oe,Gc=fs,Yc=qr,qc=Vc,Ya=Yc("IE_PROTO"),Pr=Object,jc=Pr.prototype,vo=qc?Pr.getPrototypeOf:function(i){var e=Gc(i);if(Uc(e,Ya))return e[Ya];var t=e.constructor;return Hc(t)&&e instanceof t?t.prototype:e instanceof Pr?jc:null},Wc=Ti,go=function(i,e,t,s){return s&&s.enumerable?i[e]=t:Wc(i,e,t),i},zc=rt,Qc=Oe,Kc=Lt,Jc=mo,qa=vo,Xc=go,Zc=Ue,Dr=Zc("iterator"),So=!1,it,Ks,Js;[].keys&&(Js=[].keys(),"next"in Js?(Ks=qa(qa(Js)),Ks!==Object.prototype&&(it=Ks)):So=!0);var eh=!Kc(it)||zc(function(){var i={};return it[Dr].call(i)!==i});eh?it={}:it=Jc(it);Qc(it[Dr])||Xc(it,Dr,function(){return this});var bo={IteratorPrototype:it,BUGGY_SAFARI_ITERATORS:So},th=Ue,ih=th("toStringTag"),yo={};yo[ih]="z";var Kr=String(yo)==="[object z]",sh=Kr,rh=Oe,Ki=us,ah=Ue,nh=ah("toStringTag"),oh=Object,dh=Ki(function(){return arguments}())=="Arguments",lh=function(i,e){try{return i[e]}catch(t){}},vs=sh?Ki:function(i){var e,t,s;return i===void 0?"Undefined":i===null?"Null":typeof(t=lh(e=oh(i),nh))=="string"?t:dh?Ki(e):(s=Ki(e))=="Object"&&rh(e.callee)?"Arguments":s},uh=Kr,ch=vs,hh=uh?{}.toString:function(){return"[object "+ch(this)+"]"},fh=Kr,ph=si.f,mh=Ti,vh=ot,gh=hh,Sh=Ue,ja=Sh("toStringTag"),To=function(i,e,t,s){if(i){var r=t?i:i.prototype;vh(r,ja)||ph(r,ja,{configurable:!0,value:e}),s&&!fh&&mh(r,"toString",gh)}},bh=bo.IteratorPrototype,yh=mo,Th=ps,Eh=To,$h=ii,Ah=function(){return this},wh=function(i,e,t,s){var r=e+" Iterator";return i.prototype=yh(bh,{next:Th(+!s,t)}),Eh(i,r,!1,!0),$h[r]=Ah,i},kh=ms,Ph=nt,Eo=Zu,Dh=wh,Lh=vo,xh=To,Wa=go,_h=Ue,za=ii,$o=bo,Rh=Eo.PROPER;Eo.CONFIGURABLE;$o.IteratorPrototype;var Mi=$o.BUGGY_SAFARI_ITERATORS,Xs=_h("iterator"),Qa="keys",Bi="values",Ka="entries",Ih=function(){return this},Ch=function(i,e,t,s,r,a,n){Dh(t,e,s);var o=function(S){if(S===r&&h)return h;if(!Mi&&S in l)return l[S];switch(S){case Qa:return function(){return new t(this,S)};case Bi:return function(){return new t(this,S)};case Ka:return function(){return new t(this,S)}}return function(){return new t(this)}},u=e+" Iterator",d=!1,l=i.prototype,c=l[Xs]||l["@@iterator"]||r&&l[r],h=!Mi&&c||o(r),f=e=="Array"&&l.entries||c,g,m,v;if(f&&(g=Lh(f.call(new i)),g!==Object.prototype&&g.next&&(xh(g,u,!0,!0),za[u]=Ih)),Rh&&r==Bi&&c&&c.name!==Bi&&(d=!0,h=function(){return Ph(c,this)}),r)if(m={values:o(Bi),keys:a?h:o(Qa),entries:o(Ka)},n)for(v in m)(Mi||d||!(v in l))&&Wa(l,v,m[v]);else kh({target:e,proto:!0,forced:Mi||d},m);return n&&l[Xs]!==h&&Wa(l,Xs,h,{name:r}),za[e]=h,m},Oh=function(i,e){return{value:i,done:e}},Mh=yi,Ja=ii,Ao=gu;si.f;var Bh=Ch,Ni=Oh,wo="Array Iterator",Nh=Ao.set,Fh=Ao.getterFor(wo);Bh(Array,"Array",function(i,e){Nh(this,{type:wo,target:Mh(i),index:0,kind:e})},function(){var i=Fh(this),e=i.target,t=i.kind,s=i.index++;return!e||s>=e.length?(i.target=void 0,Ni(void 0,!0)):t=="keys"?Ni(s,!1):t=="values"?Ni(e[s],!1):Ni([s,e[s]],!1)},"values");Ja.Arguments=Ja.Array;var Vh=Ue,Uh=ii,Hh=Vh("iterator"),Gh=Array.prototype,Yh=function(i){return i!==void 0&&(Uh.Array===i||Gh[Hh]===i)},qh=vs,Xa=hs,jh=cs,Wh=ii,zh=Ue,Qh=zh("iterator"),ko=function(i){if(!jh(i))return Xa(i,Qh)||Xa(i,"@@iterator")||Wh[qh(i)]},Kh=nt,Jh=Gr,Xh=_t,Zh=Hr,ef=ko,tf=TypeError,sf=function(i,e){var t=arguments.length<2?ef(i):e;if(Jh(t))return Xh(Kh(t,i));throw tf(Zh(i)+" is not iterable")},rf=nt,Za=_t,af=hs,nf=function(i,e,t){var s,r;Za(i);try{if(s=af(i,"return"),!s){if(e==="throw")throw t;return t}s=rf(s,i)}catch(a){r=!0,s=a}if(e==="throw")throw t;if(r)throw s;return Za(s),t},of=lo,df=nt,lf=_t,uf=Hr,cf=Yh,hf=Qr,en=Ur,ff=sf,pf=ko,tn=nf,mf=TypeError,Ji=function(i,e){this.stopped=i,this.result=e},sn=Ji.prototype,vf=function(i,e,t){var s=t&&t.that,r=!!(t&&t.AS_ENTRIES),a=!!(t&&t.IS_RECORD),n=!!(t&&t.IS_ITERATOR),o=!!(t&&t.INTERRUPTED),u=of(e,s),d,l,c,h,f,g,m,v=function(E){return d&&tn(d,"normal",E),new Ji(!0,E)},S=function(E){return r?(lf(E),o?u(E[0],E[1],v):u(E[0],E[1])):o?u(E,v):u(E)};if(a)d=i.iterator;else if(n)d=i;else{if(l=pf(i),!l)throw mf(uf(i)+" is not iterable");if(cf(l)){for(c=0,h=hf(i);h>c;c++)if(f=S(i[c]),f&&en(sn,f))return f;return new Ji(!1)}d=ff(i,l)}for(g=a?i.next:d.next;!(m=df(g,d)).done;){try{f=S(m.value)}catch(E){tn(d,"throw",E)}if(typeof f=="object"&&f&&en(sn,f))return f}return new Ji(!1)},gf=Yr,Sf=si,bf=ps,yf=function(i,e,t){var s=gf(e);s in i?Sf.f(i,s,bf(0,t)):i[s]=t},Tf=ms,Ef=vf,$f=yf;Tf({target:"Object",stat:!0},{fromEntries:function(e){var t={};return Ef(e,function(s,r){$f(t,s,r)},{AS_ENTRIES:!0}),t}});var Af=Fr,wf=Af.Object.fromEntries,kf={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},Pf=kf,Df=Ve,Lf=vs,xf=Ti,rn=ii,_f=Ue,an=_f("toStringTag");for(var Zs in Pf){var nn=Df[Zs],er=nn&&nn.prototype;er&&Lf(er)!==an&&xf(er,an,Zs),rn[Zs]=rn.Array}var Rf=wf,If=Rf,Cf=If,Of=Cf,rs=Br(Of),me;(function(i){i[i.OFFSET_P=0]="OFFSET_P",i[i.PLAYBACK_SHIFT=1]="PLAYBACK_SHIFT",i[i.DASH_CMAF_OFFSET_P=2]="DASH_CMAF_OFFSET_P"})(me||(me={}));var Fe=(i,e=0,t=me.OFFSET_P)=>{switch(t){case me.OFFSET_P:return i.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case me.PLAYBACK_SHIFT:{if(e===0)return i;const s=new URL(i);return s.searchParams.append("playback_shift",e.toFixed(0)),s.toString()}case me.DASH_CMAF_OFFSET_P:{const s=new URL(i);return!s.searchParams.get("offset_p")&&e===0?i:(s.searchParams.set("offset_p",e.toFixed(0)),s.toString())}default:U(t)}return i};const on=(i,e)=>{var t;switch(e){case me.OFFSET_P:return NaN;case me.PLAYBACK_SHIFT:{const s=new URL(i);return Number(s.searchParams.get("playback_shift"))}case me.DASH_CMAF_OFFSET_P:{const s=new URL(i);return Number((t=s.searchParams.get("offset_p"))!==null&&t!==void 0?t:0)}default:U(e)}};var O=(i,e,t=!1)=>{const s=i.getTransition();(t||!s||s.to===e)&&i.setState(e)};class ue{constructor(e){this.transitionStarted$=new R,this.transitionEnded$=new R,this.transitionUpdated$=new R,this.forceChanged$=new R,this.stateChangeStarted$=N(this.transitionStarted$,this.transitionUpdated$),this.stateChangeEnded$=N(this.transitionEnded$,this.forceChanged$),this.state=e,this.prevState=void 0}setState(e){const t=this.transition,s=this.state;this.transition=void 0,this.prevState=s,this.state=e,t?t.to===e?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:s,to:e,canceledTransition:t})}startTransitionTo(e){const t=this.transition,s=this.state;s===e||D(t)&&t.to===e||(this.prevState=s,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:s,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}}const Mf=i=>{switch(i){case b.MPEG:case b.DASH_SEP:case b.DASH_ONDEMAND:case b.DASH_WEBM:case b.DASH_WEBM_AV1:case b.HLS:case b.HLS_ONDEMAND:return!1;case b.DASH_LIVE:case b.DASH_LIVE_CMAF:case b.HLS_LIVE:case b.HLS_LIVE_CMAF:case b.DASH_LIVE_WEBM:case b.WEB_RTC_LIVE:return!0;default:return U(i)}};var V;(function(i){i.STOPPED="stopped",i.READY="ready",i.PLAYING="playing",i.PAUSED="paused"})(V||(V={}));const Bf=5,Nf=5,Ff=500,dn=7e3;class Vf{constructor(e){this.subscription=new ie,this.loadMediaTimeoutSubscription=new ie,this.videoState=new ue(V.STOPPED),this.syncPlayback=()=>{const s=this.videoState.getState(),r=this.videoState.getTransition(),a=this.params.desiredState.playbackState.getState(),n=this.params.desiredState.playbackState.getTransition(),o=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${s}; videoTransition: ${JSON.stringify(r)}; desiredPlaybackState: ${a}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(o)};`}),a===p.STOPPED){s!==V.STOPPED&&(this.videoState.startTransitionTo(V.STOPPED),this.stop());return}if(!r){if((n==null?void 0:n.to)!==p.PAUSED&&o.state===Y.Requested&&s!==V.STOPPED){this.seek(o.position/1e3);return}switch(a){case p.READY:{switch(s){case V.PLAYING:case V.PAUSED:case V.READY:break;case V.STOPPED:this.videoState.startTransitionTo(V.READY),this.prepare();break;default:U(s)}break}case p.PLAYING:{switch(s){case V.PLAYING:break;case V.PAUSED:this.videoState.startTransitionTo(V.PLAYING),this.params.connection.remotePlayerController.playOrPause();break;case V.READY:this.videoState.startTransitionTo(V.PLAYING),this.params.connection.remotePlayerController.playOrPause();break;case V.STOPPED:this.videoState.startTransitionTo(V.READY),this.prepare();break;default:U(s)}break}case p.PAUSED:{switch(s){case V.PLAYING:this.videoState.startTransitionTo(V.PAUSED),this.params.connection.remotePlayerController.playOrPause();break;case V.PAUSED:break;case V.READY:this.videoState.startTransitionTo(V.PAUSED),this.videoState.setState(V.PAUSED);break;case V.STOPPED:this.videoState.startTransitionTo(V.READY),this.prepare();break;default:U(s)}break}default:U(a)}}},this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Mf(e.format)),this.params.output.isAudioAvailable$.next(!0),this.handleRemoteVolumeChange({volume:this.params.connection.remotePlayer.volumeLevel,muted:this.params.connection.remotePlayer.isMuted});const t=this.params.connection.session.getMediaSession();t&&this.restoreSession(t),this.subscribe()}destroy(){this.log({message:"[destroy]"}),this.subscription.unsubscribe()}subscribe(){this.subscription.add(this.loadMediaTimeoutSubscription);const e=new ie;this.subscription.add(e),this.subscription.add(N(this.videoState.stateChangeStarted$.pipe($(r=>`stateChangeStarted$ ${JSON.stringify(r)}`)),this.videoState.stateChangeEnded$.pipe($(r=>`stateChangeEnded$ ${JSON.stringify(r)}`))).subscribe(r=>this.log({message:`[videoState] ${r}`})));const t=(r,a)=>this.subscription.add(r.subscribe(a));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{const r=new R;e.add(r.pipe(Ke(Ff)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let a=NaN;e.add(C(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(n=>{this.logRemoteEvent(n);const o=n.value;this.params.output.position$.next(o),(this.params.desiredState.seekState.getState().state===Y.Applying||Math.abs(o-a)>Bf)&&r.next(o),a=o})),e.add(C(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(n=>{this.logRemoteEvent(n),this.params.output.duration$.next(n.value)}))}t(C(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(C(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemotePause():this.handleRemotePlay()}),t(C(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),r=>{this.logRemoteEvent(r);const{remotePlayer:a}=this.params.connection,n=r.value,o=this.params.output.isBuffering$.getValue(),u=n===chrome.cast.media.PlayerState.BUFFERING;switch(o!==u&&this.params.output.isBuffering$.next(u),n){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&a.duration-a.currentTime<Nf&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),O(this.params.desiredState.playbackState,p.STOPPED);break;case chrome.cast.media.PlayerState.PAUSED:{this.handleRemotePause();break}case chrome.cast.media.PlayerState.PLAYING:this.handleRemotePlay();break;case chrome.cast.media.PlayerState.BUFFERING:break;default:U(n)}}),t(C(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({volume:r.value})}),t(C(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({muted:r.value})});const s=N(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,Ce(["init"])).pipe(Ke(0));t(s,this.syncPlayback)}restoreSession(e){this.log({message:"restoreSession"});const{remotePlayer:t}=this.params.connection;if(e.playerState!==chrome.cast.media.PlayerState.IDLE){t.isPaused?(this.videoState.setState(V.PAUSED),O(this.params.desiredState.playbackState,p.PAUSED)):(this.videoState.setState(V.PLAYING),O(this.params.desiredState.playbackState,p.PLAYING));const s=this.params.output.isLive$.getValue();this.params.output.duration$.next(s?0:t.duration),this.params.output.position$.next(s?0:t.currentTime),this.params.desiredState.seekState.setState({state:Y.None})}}prepare(){const e=this.params.format;this.log({message:`[prepare] format: ${e}`});const t=this.createMediaInfo(e),s=this.createLoadRequest(t);this.loadMedia(s)}handleRemotePause(){const e=this.videoState.getState(),t=this.videoState.getTransition();((t==null?void 0:t.to)===V.PAUSED||e===V.PLAYING)&&(this.videoState.setState(V.PAUSED),O(this.params.desiredState.playbackState,p.PAUSED))}handleRemotePlay(){const e=this.videoState.getState(),t=this.videoState.getTransition();((t==null?void 0:t.to)===V.PLAYING||e===V.PAUSED)&&(this.videoState.setState(V.PLAYING),O(this.params.desiredState.playbackState,p.PLAYING))}handleRemoteReady(){var e;const t=this.videoState.getTransition();(t==null?void 0:t.to)===V.READY&&this.videoState.setState(V.READY),((e=this.params.desiredState.playbackState.getTransition())===null||e===void 0?void 0:e.to)===p.READY&&O(this.params.desiredState.playbackState,p.READY)}handleRemoteStop(){this.videoState.getState()!==V.STOPPED&&this.videoState.setState(V.STOPPED)}handleRemoteVolumeChange(e){var t,s;const r=this.params.output.volume$.getValue(),a={volume:(t=e.volume)!==null&&t!==void 0?t:r.volume,muted:(s=e.muted)!==null&&s!==void 0?s:r.muted};(a.volume!==r.volume||a.muted!==a.muted)&&this.params.output.volume$.next(a)}seek(e){this.params.output.willSeekEvent$.next();const{remotePlayer:t,remotePlayerController:s}=this.params.connection;t.currentTime=e,s.seek()}stop(){const{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){var t;const s=this.params.source;let r,a,n;switch(e){case b.MPEG:{const l=s[e];P(l);const c=hd(Object.keys(l));P(c);const h=l[c];P(h),r=h,a="video/mp4",n=chrome.cast.media.StreamType.BUFFERED;break}case b.HLS:case b.HLS_ONDEMAND:{const l=s[e];P(l),r=l.url,a="application/x-mpegurl",n=chrome.cast.media.StreamType.BUFFERED;break}case b.DASH_SEP:case b.DASH_ONDEMAND:case b.DASH_WEBM:case b.DASH_WEBM_AV1:{const l=s[e];P(l),r=l.url,a="application/dash+xml",n=chrome.cast.media.StreamType.BUFFERED;break}case b.DASH_LIVE_CMAF:{const l=s[e];P(l),r=l.url,a="application/dash+xml",n=chrome.cast.media.StreamType.LIVE;break}case b.HLS_LIVE:case b.HLS_LIVE_CMAF:{const l=s[e];P(l),r=Fe(l.url),a="application/x-mpegurl",n=chrome.cast.media.StreamType.LIVE;break}case b.DASH_LIVE:case b.WEB_RTC_LIVE:{const l="Unsupported format for Chromecast",c=new Error(l);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:_.VIDEO_PIPELINE,message:l,thrown:c}),c}case b.DASH_LIVE_WEBM:throw new Error("DASH_LIVE_WEBM is no longer supported");default:return U(e)}const o=new chrome.cast.media.MediaInfo((t=this.params.meta.videoId)!==null&&t!==void 0?t:r,a);o.contentUrl=r,o.streamType=n,o.metadata=new chrome.cast.media.GenericMediaMetadata;const{title:u,subtitle:d}=this.params.meta;return D(u)&&(o.metadata.title=u),D(d)&&(o.metadata.subtitle=d),o}createLoadRequest(e){const t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;const s=this.params.desiredState.seekState.getState();return s.state===Y.Applying||s.state===Y.Requested?t.currentTime=this.params.output.isLive$.getValue()?0:s.position/1e3:t.currentTime=0,t}loadMedia(e){const t=this.params.connection.session.loadMedia(e),s=new Promise((r,a)=>{this.loadMediaTimeoutSubscription.add(fd(dn).subscribe(()=>a(`timeout(${dn})`)))});Promise.race([t,s]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state===Y.Applying&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},r=>{const a=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${r}`;this.log({message:a}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:_.VIDEO_PIPELINE,message:a,thrown:r})}).finally(()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}}const Jr=i=>{i.removeAttribute("src"),i.load()},Uf=i=>{try{i.pause(),i.playbackRate=0,Jr(i),i.remove()}catch(e){console.error(e)}};class Hf{constructor(){this.attribute="data-pool-reused"}get(e){return e.hasAttribute(this.attribute)}set(e,t){e.toggleAttribute(this.attribute,t)}delete(e){e.removeAttribute(this.attribute)}}const Lr=window.WeakMap?new WeakMap:new Hf,Rt=i=>{let e=i.querySelector("video");const t=!!e;return e?Jr(e):(e=document.createElement("video"),i.appendChild(e)),Lr.set(e,t),e.setAttribute("crossorigin","anonymous"),e.setAttribute("playsinline","playsinline"),e.controls=!1,e.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),e},It=i=>{const e=Lr.get(i);Lr.delete(i),e?Jr(i):Uf(i)},et=(i,e,t,{equal:s=(n,o)=>n===o,changed$:r,onError:a}={})=>{const n=i.getState(),o=e(),u=Q(r),d=new ie;return r&&d.add(r.subscribe(l=>{const c=i.getState();s(l,c)&&i.setState(l)},a)),s(o,n)||(t(n),u&&i.setState(n)),d.add(i.stateChangeStarted$.subscribe(l=>{t(l.to),u&&i.setState(l.to)},a)),d},$i=(i,e,t)=>et(e,()=>i.loop,s=>{D(s)&&(i.loop=s)},{onError:t}),Ct=(i,e,t,s)=>et(e,()=>({muted:i.muted,volume:i.volume}),r=>{D(r)&&(i.muted=r.muted,i.volume=r.volume)},{equal:(r,a)=>r===a||(r==null?void 0:r.muted)===(a==null?void 0:a.muted)&&(r==null?void 0:r.volume)===(a==null?void 0:a.volume),changed$:t,onError:s}),ri=(i,e,t,s)=>et(e,()=>i.playbackRate,r=>{D(r)&&(i.playbackRate=r)},{changed$:t,onError:s}),Gf=i=>["__",i.language,i.label].join("|"),Yf=(i,e)=>{if(i.id===e)return!0;const[t,s,r]=e.split("|");return i.language===s&&i.label===r};class mt{constructor(){this.available$=new R,this.current$=new y(void 0),this.error$=new R,this.subscription=new ie,this.externalTracks=new Map,this.internalTracks=new Map}connect(e,t,s){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();const r=a=>{this.error$.next({id:"TextTracksManager",category:_.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:a})};this.subscription.add(this.available$.subscribe(s.availableTextTracks$)),this.subscription.add(this.current$.subscribe(s.currentTextTrack$)),this.subscription.add(this.error$.subscribe(s.error$)),this.subscription.add(et(t.internalTextTracks,()=>Object.values(this.internalTracks),a=>{D(a)&&this.setInternal(a)},{equal:(a,n)=>D(a)&&D(n)&&a.length===n.length&&a.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe($(a=>a.filter(({type:n})=>n==="internal"))),onError:r})),this.subscription.add(et(t.externalTextTracks,()=>Object.values(this.externalTracks),a=>{D(a)&&this.setExternal(a)},{equal:(a,n)=>D(a)&&D(n)&&a.length===n.length&&a.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe($(a=>a.filter(({type:n})=>n==="external"))),onError:r})),this.subscription.add(et(t.currentTextTrack,()=>{if(this.video)return;const a=this.htmlTextTracksAsArray().find(({mode:n})=>n==="showing");return a&&this.htmlTextTrackToITextTrack(a).id},a=>this.select(a),{changed$:this.current$,onError:r})),this.subscription.add(et(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(const a of this.htmlTextTracksAsArray())this.applyCueSettings(a.cues),this.applyCueSettings(a.activeCues)}))}subscribe(){P(this.video);const{textTracks:e}=this.video;this.subscription.add(C(e,"addtrack").subscribe(()=>{const s=this.current$.getValue();s&&this.select(s)})),this.subscription.add(N(C(e,"addtrack"),C(e,"removetrack"),Ce(["init"])).pipe($(()=>this.htmlTextTracksAsArray().map(s=>this.htmlTextTrackToITextTrack(s))),he((s,r)=>s.length===r.length&&s.every(({id:a},n)=>a===r[n].id))).subscribe(this.available$)),this.subscription.add(N(C(e,"change"),Ce(["init"])).pipe($(()=>this.htmlTextTracksAsArray().find(({mode:s})=>s==="showing")),$(s=>s&&this.htmlTextTrackToITextTrack(s).id),he()).subscribe(this.current$));const t=s=>{var r,a;return this.applyCueSettings((a=(r=s.target)===null||r===void 0?void 0:r.activeCues)!==null&&a!==void 0?a:null)};this.subscription.add(C(e,"addtrack").subscribe(s=>{var r,a;(r=s.track)===null||r===void 0||r.addEventListener("cuechange",t);const n=o=>{var u,d,l,c,h;const f=(d=(u=o.target)===null||u===void 0?void 0:u.cues)!==null&&d!==void 0?d:null;f&&f.length&&(this.applyCueSettings((c=(l=o.target)===null||l===void 0?void 0:l.cues)!==null&&c!==void 0?c:null),(h=o.target)===null||h===void 0||h.removeEventListener("cuechange",n))};(a=s.track)===null||a===void 0||a.addEventListener("cuechange",n)})),this.subscription.add(C(e,"removetrack").subscribe(s=>{var r;(r=s.track)===null||r===void 0||r.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;const t=this.cueSettings.getState();for(const s of Array.from(e)){const r=s;D(t.align)&&(r.align=t.align),D(t.position)&&(r.position=t.position),D(t.size)&&(r.size=t.size),D(t.line)&&(r.line=t.line)}}htmlTextTracksAsArray(e=!1){P(this.video);const t=[...this.video.textTracks];return e?t:t.filter(mt.isHealthyTrack)}htmlTextTrackToITextTrack(e){var t,s;const{language:r,label:a}=e,n=e.id?e.id:Gf(e),o=this.externalTracks.has(n),u=n.includes("auto");return o?{id:n,type:"external",isAuto:u,language:r,label:a,url:(t=this.externalTracks.get(n))===null||t===void 0?void 0:t.url}:{id:n,type:"internal",isAuto:u,language:r,label:a,url:(s=this.internalTracks.get(n))===null||s===void 0?void 0:s.url}}static isHealthyTrack(e){return!(e.kind==="metadata"||e.groupId||e.id===""&&e.label===""&&e.language==="")}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(s=>s.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){const t=[...this.externalTracks];e.filter(({id:s,language:r,isAuto:a})=>!this.internalTracks.has(s)&&!t.some(([,n])=>n.language===r&&n.isAuto===a)).forEach(s=>this.attach(s)),Array.from(this.internalTracks).filter(([s])=>!e.find(r=>r.id===s)).forEach(([,s])=>this.detach(s))}select(e){P(this.video);for(const t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(const t of this.htmlTextTracksAsArray(!0))(Q(e)||!Yf(t,e))&&(t.mode="disabled")}destroy(){if(this.subscription.unsubscribe(),this.video)for(const e of Array.from(this.video.getElementsByTagName("track"))){const t=e.getAttribute("id");t&&this.externalTracks.has(t)&&this.video.removeChild(e)}this.externalTracks.clear()}attach(e){P(this.video);const t=document.createElement("track");t.setAttribute("src",e.url),t.setAttribute("id",e.id),e.label&&t.setAttribute("label",e.label),e.language&&t.setAttribute("srclang",e.language),e.type==="external"?this.externalTracks.set(e.id,e):e.type==="internal"&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){P(this.video);const t=Array.prototype.find.call(this.video.getElementsByTagName("track"),s=>s.getAttribute("id")===e.id);t&&this.video.removeChild(t),e.type==="external"?this.externalTracks.delete(e.id):e.type==="internal"&&this.internalTracks.delete(e.id)}}class Xr{constructor(){this.pausedTime=0,this.streamOffset=0,this.pauseTimestamp=0}getTotalPausedTime(){return this.pausedTime+this.getCurrentPausedTime()}getCurrentPausedTime(){return this.pauseTimestamp>0?Date.now()-this.pauseTimestamp:0}getStreamOffset(){return this.streamOffset}getTotalOffset(){return this.getTotalPausedTime()+this.streamOffset}pause(){this.pauseTimestamp===0&&(this.pauseTimestamp=Date.now())}resume(){this.pauseTimestamp>0&&(this.pausedTime+=this.getCurrentPausedTime(),this.pauseTimestamp=0)}resetTo(e,t=!1){this.streamOffset=e,this.pauseTimestamp=0,this.pausedTime=0,t&&this.pause()}}const Po=i=>{var e;let t=i;for(;!(t instanceof Document)&&!(t instanceof ShadowRoot)&&t!==null;)t=t==null?void 0:t.parentNode;return(e=t)!==null&&e!==void 0?e:void 0},ln=i=>{const e=Po(i);return!!(e&&e.fullscreenElement&&e.fullscreenElement===i)},qf=i=>{const e=Po(i);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===i)},jf=3;var Wf=(i,e,t=jf)=>{let s=0,r=0;for(let a=0;a<i.length;a++){const n=i.start(a),o=i.end(a);if(n<=e&&e<=o){if(s=n,r=o,!t)return{from:s,to:r};for(let u=a-1;u>=0;u--)i.end(u)+t>=s&&(s=i.start(u));for(let u=a+1;u<i.length;u++)i.start(u)-t<=r&&(r=i.end(u))}}return{from:s,to:r}};const Ot=i=>{const e=A=>C(i,A).pipe(Zi(void 0)),s=N(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(A=>C(i,A))).pipe($(A=>A.type==="ended"?i.readyState<2:i.readyState<3),he()),r=N(C(i,"progress"),C(i,"timeupdate")).pipe($(()=>Wf(i.buffered,i.currentTime))),n=Or().browser===Bn.Safari?Re({play:e("play").pipe(Ae()),playing:e("playing")}).pipe(Zi(void 0)):e("playing"),o=C(i,"volumechange").pipe($(()=>({muted:i.muted,volume:i.volume}))),u=C(i,"ratechange").pipe($(()=>i.playbackRate)),d=C(i,"error").pipe(ce(()=>!!(i.error||i.played.length)),$(()=>{var A;const w=i.error;return{id:w?`MediaError#${w.code}`:"HtmlVideoError",category:_.VIDEO_PIPELINE,message:w?w.message:"Error event from HTML video element",thrown:(A=i.error)!==null&&A!==void 0?A:void 0}})),l=C(i,"timeupdate").pipe($(()=>i.currentTime)),c=new R,h=.3;let f;l.subscribe(A=>{i.loop&&D(f)&&D(A)&&f>=i.duration-h&&A<=h&&c.next(f),f=A});const g=C(i,"enterpictureinpicture"),m=C(i,"leavepictureinpicture"),v=new y(qf(i));g.subscribe(()=>v.next(!0)),m.subscribe(()=>v.next(!1));const S=new y(ln(i));return C(i,"fullscreenchange").pipe($(()=>ln(i))).subscribe(S),{playing$:n,pause$:e("pause").pipe(ce(()=>!i.error)),canplay$:e("canplay"),ended$:e("ended"),looped$:c,error$:d,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:l,durationChange$:C(i,"durationchange").pipe($(()=>i.duration)),isBuffering$:s,currentBuffer$:r,volumeState$:o,playbackRateState$:u,inPiP$:v,inFullscreen$:S}};var gs=i=>{switch(i){case"mobile":return Pe.Q_144P;case"lowest":return Pe.Q_240P;case"low":return Pe.Q_360P;case"sd":case"medium":return Pe.Q_480P;case"hd":case"high":return Pe.Q_720P;case"fullhd":case"full":return Pe.Q_1080P;case"quadhd":case"quad":return Pe.Q_1440P;case"ultrahd":case"ultra":return Pe.Q_2160P}},zf=ms,Qf=fs,Kf=Qr,Jf=zr;zf({target:"Array",proto:!0},{at:function(e){var t=Qf(this),s=Kf(t),r=Jf(e),a=r>=0?r:s+r;return a<0||a>=s?void 0:t[a]}});var Xf=Vr,Do=Xf,Zf=Do,ep=Zf("Array","at"),tp=ep,ip=tp,sp=ip,rp=sp,Ze=Br(rp);let Zr=!1,tt={};const ap=i=>{Zr=i},np=()=>{tt={}},op=i=>{i(tt)},Fi=(i,e)=>{var t;Zr&&(tt.meta=(t=tt.meta)!==null&&t!==void 0?t:{},tt.meta[i]=e)};class We{constructor(e){this.name=e}next(e){var t,s;if(!Zr)return;tt.series=(t=tt.series)!==null&&t!==void 0?t:{};const r=(s=tt.series[this.name])!==null&&s!==void 0?s:[];r.push([Date.now(),e]),tt.series[this.name]=r}}var At;(function(i){i.FitsContainer="FitsContainer",i.FitsThroughput="FitsThroughput",i.Buffer="Buffer",i.DroppedFramesLimit="DroppedFramesLimit",i.FitsQualityLimits="FitsQualityLimits"})(At||(At={}));const dp=new We("best_bitrate"),lp=(i,e,t)=>(e-t)*Math.pow(2,-10*i)+t;class up{constructor(){this.history={}}recordSelection(e){this.history[e.id]=ne()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}}const cp='Assertion "ABR Tracks is empty array" failed',Ss=(i,{container:e,throughput:t,tuning:s,limits:r,reserve:a=0,forwardBufferHealth:n,playbackRate:o,current:u,history:d,droppedVideoMaxQualityLimit:l,abrLogger:c})=>{var h,f,g,m,v;pd(i,cp);const S=s.usePixelRatio&&(h=window.devicePixelRatio)!==null&&h!==void 0?h:1,E=s.limitByContainer&&e&&e.width>0&&e.height>0&&{width:e.width*S*s.containerSizeFactor,height:e.height*S*s.containerSizeFactor},A=E&&kt(E),w=s.considerPlaybackRate&&D(o)?o:1,k=i.filter(B=>!Pt(B.quality)).sort((B,x)=>Xt(B.quality,x.quality)?-1:1),q=(f=Ze(k,-1))===null||f===void 0?void 0:f.quality,j=(g=Ze(k,0))===null||g===void 0?void 0:g.quality,K=Q(r)||D(r.min)&&D(r.max)&&Wi(r.max,r.min)||D(r.min)&&j&&Xt(r.min,j)||D(r.max)&&q&&Wi(r.max,q),G=w*lp(n!=null?n:.5,s.bitrateFactorAtEmptyBuffer,s.bitrateFactorAtFullBuffer),J={},M=k.filter(B=>(A?Wi(B.quality,A):!0)?(D(t)&&isFinite(t)&&D(B.bitrate)?t-a>=B.bitrate*G:!0)?s.lazyQualitySwitch&&D(s.minBufferToSwitchUp)&&u&&!Pt(u.quality)&&(n!=null?n:0)<s.minBufferToSwitchUp&&Xt(B.quality,u.quality)?(J[B.quality]=At.Buffer,!1):!!l&&Sr(B.quality,l)?(J[B.quality]=At.DroppedFramesLimit,!1):K||(Q(r.max)||es(B.quality,r.max))&&(Q(r.min)||Sr(B.quality,r.min))?!0:(J[B.quality]=At.FitsQualityLimits,!1):(J[B.quality]=At.FitsThroughput,!1):(J[B.quality]=At.FitsContainer,!1))[0];M&&M.bitrate&&dp.next(M.bitrate);const I=(m=M!=null?M:k[Math.ceil((k.length-1)/2)])!==null&&m!==void 0?m:i[0];I.quality!==((v=d==null?void 0:d.last)===null||v===void 0?void 0:v.quality)&&c({message:`
|
|
7
7
|
[available tracks]
|
|
8
8
|
${i.map(B=>`{ id: ${B.id}, quality: ${B.quality}, bitrate: ${B.bitrate} }`).join(`
|
|
9
9
|
`)}
|
package/esnext.cjs.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vkontakte/videoplayer-core v2.0.
|
|
3
|
-
* Tue,
|
|
4
|
-
* https://st.mycdn.me/static/vkontakte-videoplayer/2-0-
|
|
2
|
+
* @vkontakte/videoplayer-core v2.0.103-dev.c555938f.0
|
|
3
|
+
* Tue, 28 May 2024 09:13:35 GMT
|
|
4
|
+
* https://st.mycdn.me/static/vkontakte-videoplayer/2-0-103/doc/
|
|
5
5
|
*/
|
|
6
|
-
"use strict";var zi=Object.create;var Kt=Object.defineProperty;var Wi=Object.getOwnPropertyDescriptor;var Qi=Object.getOwnPropertyNames;var Ji=Object.getPrototypeOf,Xi=Object.prototype.hasOwnProperty;var Ki=(a,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Qi(e))!Xi.call(a,r)&&r!==t&&Kt(a,r,{get:()=>e[r],enumerable:!(i=Wi(e,r))||i.enumerable});return a};var Zi=(a,e,t)=>(t=a!=null?zi(Ji(a)):{},Ki(e||!a||!a.__esModule?Kt(t,"default",{value:a,enumerable:!0}):t,a));var s=require("@vkontakte/videoplayer-shared/esnext.cjs.js");const Ai="2.0.102-beta.3";exports.PlaybackState=void 0;(function(a){a.STOPPED="stopped",a.READY="ready",a.PLAYING="playing",a.PAUSED="paused"})(exports.PlaybackState||(exports.PlaybackState={}));exports.VideoFormat=void 0;(function(a){a.MPEG="MPEG",a.DASH="DASH_SEP",a.DASH_SEP="DASH_SEP",a.DASH_SEP_VK="DASH_SEP",a.DASH_WEBM="DASH_WEBM",a.DASH_WEBM_AV1="DASH_WEBM_AV1",a.DASH_WEBM_VK="DASH_WEBM",a.DASH_ONDEMAND="DASH_ONDEMAND",a.DASH_ONDEMAND_VK="DASH_ONDEMAND",a.DASH_LIVE="DASH_LIVE",a.DASH_LIVE_CMAF="DASH_LIVE_CMAF",a.DASH_LIVE_WEBM="DASH_LIVE_WEBM",a.HLS="HLS",a.HLS_ONDEMAND="HLS_ONDEMAND",a.HLS_JS="HLS",a.HLS_LIVE="HLS_LIVE",a.HLS_LIVE_CMAF="HLS_LIVE_CMAF",a.WEB_RTC_LIVE="WEB_RTC_LIVE"})(exports.VideoFormat||(exports.VideoFormat={}));var ee;(function(a){a.SCREEN="SCREEN",a.CHROMECAST="CHROMECAST"})(ee||(ee={}));exports.ChromecastState=void 0;(function(a){a.NOT_AVAILABLE="NOT_AVAILABLE",a.AVAILABLE="AVAILABLE",a.CONNECTING="CONNECTING",a.CONNECTED="CONNECTED"})(exports.ChromecastState||(exports.ChromecastState={}));exports.HttpConnectionType=void 0;(function(a){a.HTTP1="http1",a.HTTP2="http2",a.QUIC="quic"})(exports.HttpConnectionType||(exports.HttpConnectionType={}));var I;(function(a){a.None="none",a.Requested="requested",a.Applying="applying"})(I||(I={}));exports.Surface=void 0;(function(a){a.NONE="none",a.INLINE="inline",a.FULLSCREEN="fullscreen",a.SECOND_SCREEN="second_screen",a.PIP="pip"})(exports.Surface||(exports.Surface={}));var es=a=>new Promise((e,t)=>{const i=document.createElement("script");i.setAttribute("src",a),i.onload=()=>e,i.onerror=()=>t,document.body.appendChild(i)});class ts{connection$=new s.ValueSubject(void 0);castState$=new s.ValueSubject(exports.ChromecastState.NOT_AVAILABLE);errorEvent$=new s.Subject;contentId;realCastState$=new s.ValueSubject(exports.ChromecastState.NOT_AVAILABLE);subscription=new s.Subscription;log;params;constructor(e){this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastInitializer");const t="chrome"in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${t}`}),e.isDisabled||!t)return;const i=s.isNonNullable(window.chrome?.cast),r=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=n=>{delete window.__onGCastApiAvailable,n&&this.initializeCastApi()},r||es("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:s.ErrorCategory.NETWORK,message:"Script loading failed!"})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){cast.framework.CastContext.getInstance()?.getCurrentSession()?.endSession(!0)}stopMedia(){return new Promise((e,t)=>{cast.framework.CastContext.getInstance()?.getCurrentSession()?.getMediaSession()?.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){s.isNonNullable(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){const t=this.connection$.getValue();s.isNullable(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){const t=this.connection$.getValue();s.isNullable(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.subscription.unsubscribe()}initListeners(){const e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),i=cast.framework.CastContext.getInstance();this.subscription.add(s.fromEvent(i,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(r=>{switch(r.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=i.getCurrentSession()?.getMediaSession()?.media.contentId;break;case cast.framework.SessionState.NO_SESSION:case cast.framework.SessionState.SESSION_ENDING:case cast.framework.SessionState.SESSION_ENDED:case cast.framework.SessionState.SESSION_START_FAILED:this.contentId=void 0;break;default:return s.assertNever(r.sessionState)}})).add(s.merge(s.fromEvent(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(s.tap(r=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(r)}`})}),s.map(r=>r.castState)),s.observableFrom([i.getCastState()])).pipe(s.filterChanged(),s.map(is),s.tap(r=>{this.log({message:`realCastState$: ${r}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{const n=r===exports.ChromecastState.CONNECTED,o=s.isNonNullable(this.connection$.getValue());if(n&&!o){const c=i.getCurrentSession();s.assertNonNullable(c);const u=c.getCastDevice(),l=c.getMediaSession()?.media.contentId;(s.isNullable(l)||l===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:c,castDevice:u}))}else!n&&o&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(r===exports.ChromecastState.CONNECTED?s.isNonNullable(this.connection$.getValue())?exports.ChromecastState.CONNECTED:exports.ChromecastState.AVAILABLE:r)}))}initializeCastApi(){let e,t,i;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,i=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:i}),this.initListeners()}catch(r){this.errorEvent$.next({id:"ChromecastInitializer",category:s.ErrorCategory.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:r})}}}const is=a=>{switch(a){case cast.framework.CastState.NO_DEVICES_AVAILABLE:return exports.ChromecastState.NOT_AVAILABLE;case cast.framework.CastState.NOT_CONNECTED:return exports.ChromecastState.AVAILABLE;case cast.framework.CastState.CONNECTING:return exports.ChromecastState.CONNECTING;case cast.framework.CastState.CONNECTED:return exports.ChromecastState.CONNECTED;default:return s.assertNever(a)}};var X;(function(a){a[a.OFFSET_P=0]="OFFSET_P",a[a.PLAYBACK_SHIFT=1]="PLAYBACK_SHIFT",a[a.DASH_CMAF_OFFSET_P=2]="DASH_CMAF_OFFSET_P"})(X||(X={}));var me=(a,e=0,t=X.OFFSET_P)=>{switch(t){case X.OFFSET_P:return a.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case X.PLAYBACK_SHIFT:{if(e===0)return a;const i=new URL(a);return i.searchParams.append("playback_shift",e.toFixed(0)),i.toString()}case X.DASH_CMAF_OFFSET_P:{const i=new URL(a);return!i.searchParams.get("offset_p")&&e===0?a:(i.searchParams.set("offset_p",e.toFixed(0)),i.toString())}default:s.assertNever(t)}return a};const Zt=(a,e)=>{switch(e){case X.OFFSET_P:return NaN;case X.PLAYBACK_SHIFT:{const t=new URL(a);return Number(t.searchParams.get("playback_shift"))}case X.DASH_CMAF_OFFSET_P:{const t=new URL(a);return Number(t.searchParams.get("offset_p")??0)}default:s.assertNever(e)}};var A=(a,e,t=!1)=>{const i=a.getTransition();(t||!i||i.to===e)&&a.setState(e)};class z{state;prevState;transition;transitionStarted$=new s.Subject;transitionEnded$=new s.Subject;transitionUpdated$=new s.Subject;forceChanged$=new s.Subject;stateChangeStarted$=s.merge(this.transitionStarted$,this.transitionUpdated$);stateChangeEnded$=s.merge(this.transitionEnded$,this.forceChanged$);constructor(e){this.state=e,this.prevState=void 0}setState(e){const t=this.transition,i=this.state;this.transition=void 0,this.prevState=i,this.state=e,t?t.to===e?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:i,to:e,canceledTransition:t})}startTransitionTo(e){const t=this.transition,i=this.state;i===e||s.isNonNullable(t)&&t.to===e||(this.prevState=i,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:i,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}}const ss=a=>{switch(a){case exports.VideoFormat.MPEG:case exports.VideoFormat.DASH_SEP:case exports.VideoFormat.DASH_ONDEMAND:case exports.VideoFormat.DASH_WEBM:case exports.VideoFormat.DASH_WEBM_AV1:case exports.VideoFormat.HLS:case exports.VideoFormat.HLS_ONDEMAND:return!1;case exports.VideoFormat.DASH_LIVE:case exports.VideoFormat.DASH_LIVE_CMAF:case exports.VideoFormat.HLS_LIVE:case exports.VideoFormat.HLS_LIVE_CMAF:case exports.VideoFormat.DASH_LIVE_WEBM:case exports.VideoFormat.WEB_RTC_LIVE:return!0;default:return s.assertNever(a)}};var L;(function(a){a.STOPPED="stopped",a.READY="ready",a.PLAYING="playing",a.PAUSED="paused"})(L||(L={}));const as=5,rs=5,ns=500,ei=7e3;class os{subscription=new s.Subscription;loadMediaTimeoutSubscription=new s.Subscription;videoState=new z(L.STOPPED);params;log;constructor(e){this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(ss(e.format)),this.params.output.isAudioAvailable$.next(!0),this.handleRemoteVolumeChange({volume:this.params.connection.remotePlayer.volumeLevel,muted:this.params.connection.remotePlayer.isMuted});const t=this.params.connection.session.getMediaSession();t&&this.restoreSession(t),this.subscribe()}destroy(){this.log({message:"[destroy]"}),this.subscription.unsubscribe()}subscribe(){this.subscription.add(this.loadMediaTimeoutSubscription);const e=new s.Subscription;this.subscription.add(e),this.subscription.add(s.merge(this.videoState.stateChangeStarted$.pipe(s.map(r=>`stateChangeStarted$ ${JSON.stringify(r)}`)),this.videoState.stateChangeEnded$.pipe(s.map(r=>`stateChangeEnded$ ${JSON.stringify(r)}`))).subscribe(r=>this.log({message:`[videoState] ${r}`})));const t=(r,n)=>this.subscription.add(r.subscribe(n));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{const r=new s.Subject;e.add(r.pipe(s.debounce(ns)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let n=NaN;e.add(s.fromEvent(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(o=>{this.logRemoteEvent(o);const c=o.value;this.params.output.position$.next(c),(this.params.desiredState.seekState.getState().state===I.Applying||Math.abs(c-n)>as)&&r.next(c),n=c})),e.add(s.fromEvent(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(o=>{this.logRemoteEvent(o),this.params.output.duration$.next(o.value)}))}t(s.fromEvent(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(s.fromEvent(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemotePause():this.handleRemotePlay()}),t(s.fromEvent(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),r=>{this.logRemoteEvent(r);const{remotePlayer:n}=this.params.connection,o=r.value,c=this.params.output.isBuffering$.getValue(),u=o===chrome.cast.media.PlayerState.BUFFERING;switch(c!==u&&this.params.output.isBuffering$.next(u),o){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&n.duration-n.currentTime<rs&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),A(this.params.desiredState.playbackState,exports.PlaybackState.STOPPED);break;case chrome.cast.media.PlayerState.PAUSED:{this.handleRemotePause();break}case chrome.cast.media.PlayerState.PLAYING:this.handleRemotePlay();break;case chrome.cast.media.PlayerState.BUFFERING:break;default:s.assertNever(o)}}),t(s.fromEvent(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({volume:r.value})}),t(s.fromEvent(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({muted:r.value})});const i=s.merge(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,s.observableFrom(["init"])).pipe(s.debounce(0));t(i,this.syncPlayback)}restoreSession(e){this.log({message:"restoreSession"});const{remotePlayer:t}=this.params.connection;if(e.playerState!==chrome.cast.media.PlayerState.IDLE){t.isPaused?(this.videoState.setState(L.PAUSED),A(this.params.desiredState.playbackState,exports.PlaybackState.PAUSED)):(this.videoState.setState(L.PLAYING),A(this.params.desiredState.playbackState,exports.PlaybackState.PLAYING));const i=this.params.output.isLive$.getValue();this.params.output.duration$.next(i?0:t.duration),this.params.output.position$.next(i?0:t.currentTime),this.params.desiredState.seekState.setState({state:I.None})}}prepare(){const e=this.params.format;this.log({message:`[prepare] format: ${e}`});const t=this.createMediaInfo(e),i=this.createLoadRequest(t);this.loadMedia(i)}handleRemotePause(){const e=this.videoState.getState();(this.videoState.getTransition()?.to===L.PAUSED||e===L.PLAYING)&&(this.videoState.setState(L.PAUSED),A(this.params.desiredState.playbackState,exports.PlaybackState.PAUSED))}handleRemotePlay(){const e=this.videoState.getState();(this.videoState.getTransition()?.to===L.PLAYING||e===L.PAUSED)&&(this.videoState.setState(L.PLAYING),A(this.params.desiredState.playbackState,exports.PlaybackState.PLAYING))}handleRemoteReady(){this.videoState.getTransition()?.to===L.READY&&this.videoState.setState(L.READY),this.params.desiredState.playbackState.getTransition()?.to===exports.PlaybackState.READY&&A(this.params.desiredState.playbackState,exports.PlaybackState.READY)}handleRemoteStop(){this.videoState.getState()!==L.STOPPED&&this.videoState.setState(L.STOPPED)}handleRemoteVolumeChange(e){const t=this.params.output.volume$.getValue(),i={volume:e.volume??t.volume,muted:e.muted??t.muted};(i.volume!==t.volume||i.muted!==i.muted)&&this.params.output.volume$.next(i)}seek(e){this.params.output.willSeekEvent$.next();const{remotePlayer:t,remotePlayerController:i}=this.params.connection;t.currentTime=e,i.seek()}stop(){const{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){const t=this.params.source;let i,r,n;switch(e){case exports.VideoFormat.MPEG:{const l=t[e];s.assertNonNullable(l);const d=s.getHighestQuality(Object.keys(l));s.assertNonNullable(d);const h=l[d];s.assertNonNullable(h),i=h,r="video/mp4",n=chrome.cast.media.StreamType.BUFFERED;break}case exports.VideoFormat.HLS:case exports.VideoFormat.HLS_ONDEMAND:{const l=t[e];s.assertNonNullable(l),i=l.url,r="application/x-mpegurl",n=chrome.cast.media.StreamType.BUFFERED;break}case exports.VideoFormat.DASH_SEP:case exports.VideoFormat.DASH_ONDEMAND:case exports.VideoFormat.DASH_WEBM:case exports.VideoFormat.DASH_WEBM_AV1:{const l=t[e];s.assertNonNullable(l),i=l.url,r="application/dash+xml",n=chrome.cast.media.StreamType.BUFFERED;break}case exports.VideoFormat.DASH_LIVE_CMAF:{const l=t[e];s.assertNonNullable(l),i=l.url,r="application/dash+xml",n=chrome.cast.media.StreamType.LIVE;break}case exports.VideoFormat.HLS_LIVE:case exports.VideoFormat.HLS_LIVE_CMAF:{const l=t[e];s.assertNonNullable(l),i=me(l.url),r="application/x-mpegurl",n=chrome.cast.media.StreamType.LIVE;break}case exports.VideoFormat.DASH_LIVE:case exports.VideoFormat.WEB_RTC_LIVE:{const l="Unsupported format for Chromecast",d=new Error(l);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:s.ErrorCategory.VIDEO_PIPELINE,message:l,thrown:d}),d}case exports.VideoFormat.DASH_LIVE_WEBM:throw new Error("DASH_LIVE_WEBM is no longer supported");default:return s.assertNever(e)}const o=new chrome.cast.media.MediaInfo(this.params.meta.videoId??i,r);o.contentUrl=i,o.streamType=n,o.metadata=new chrome.cast.media.GenericMediaMetadata;const{title:c,subtitle:u}=this.params.meta;return s.isNonNullable(c)&&(o.metadata.title=c),s.isNonNullable(u)&&(o.metadata.subtitle=u),o}createLoadRequest(e){const t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;const i=this.params.desiredState.seekState.getState();return i.state===I.Applying||i.state===I.Requested?t.currentTime=this.params.output.isLive$.getValue()?0:i.position/1e3:t.currentTime=0,t}loadMedia(e){const t=this.params.connection.session.loadMedia(e),i=new Promise((r,n)=>{this.loadMediaTimeoutSubscription.add(s.timeout(ei).subscribe(()=>n(`timeout(${ei})`)))});Promise.race([t,i]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state===I.Applying&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},r=>{const n=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${r}`;this.log({message:n}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:s.ErrorCategory.VIDEO_PIPELINE,message:n,thrown:r})}).finally(()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}syncPlayback=()=>{const e=this.videoState.getState(),t=this.videoState.getTransition(),i=this.params.desiredState.playbackState.getState(),r=this.params.desiredState.playbackState.getTransition(),n=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${i}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(n)};`}),i===exports.PlaybackState.STOPPED){e!==L.STOPPED&&(this.videoState.startTransitionTo(L.STOPPED),this.stop());return}if(!t){if(r?.to!==exports.PlaybackState.PAUSED&&n.state===I.Requested&&e!==L.STOPPED){this.seek(n.position/1e3);return}switch(i){case exports.PlaybackState.READY:{switch(e){case L.PLAYING:case L.PAUSED:case L.READY:break;case L.STOPPED:this.videoState.startTransitionTo(L.READY),this.prepare();break;default:s.assertNever(e)}break}case exports.PlaybackState.PLAYING:{switch(e){case L.PLAYING:break;case L.PAUSED:this.videoState.startTransitionTo(L.PLAYING),this.params.connection.remotePlayerController.playOrPause();break;case L.READY:this.videoState.startTransitionTo(L.PLAYING),this.params.connection.remotePlayerController.playOrPause();break;case L.STOPPED:this.videoState.startTransitionTo(L.READY),this.prepare();break;default:s.assertNever(e)}break}case exports.PlaybackState.PAUSED:{switch(e){case L.PLAYING:this.videoState.startTransitionTo(L.PAUSED),this.params.connection.remotePlayerController.playOrPause();break;case L.PAUSED:break;case L.READY:this.videoState.startTransitionTo(L.PAUSED),this.videoState.setState(L.PAUSED);break;case L.STOPPED:this.videoState.startTransitionTo(L.READY),this.prepare();break;default:s.assertNever(e)}break}default:s.assertNever(i)}}}}const Gt=a=>{a.removeAttribute("src"),a.load()},cs=a=>{try{a.pause(),a.playbackRate=0,Gt(a),a.remove()}catch(e){console.error(e)}};class ls{attribute="data-pool-reused";get(e){return e.hasAttribute(this.attribute)}set(e,t){e.toggleAttribute(this.attribute,t)}delete(e){e.removeAttribute(this.attribute)}}const Ft=window.WeakMap?new WeakMap:new ls,Ue=a=>{let e=a.querySelector("video");const t=!!e;return e?Gt(e):(e=document.createElement("video"),a.appendChild(e)),Ft.set(e,t),e.setAttribute("crossorigin","anonymous"),e.setAttribute("playsinline","playsinline"),e.controls=!1,e.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),e},He=a=>{const e=Ft.get(a);Ft.delete(a),e?Gt(a):cs(a)},we=(a,e,t,{equal:i=(o,c)=>o===c,changed$:r,onError:n}={})=>{const o=a.getState(),c=e(),u=s.isNullable(r),l=new s.Subscription;return r&&l.add(r.subscribe(d=>{const h=a.getState();i(d,h)&&a.setState(d)},n)),i(c,o)||(t(o),u&&a.setState(o)),l.add(a.stateChangeStarted$.subscribe(d=>{t(d.to),u&&a.setState(d.to)},n)),l},ft=(a,e,t)=>we(e,()=>a.loop,i=>{s.isNonNullable(i)&&(a.loop=i)},{onError:t}),je=(a,e,t,i)=>we(e,()=>({muted:a.muted,volume:a.volume}),r=>{s.isNonNullable(r)&&(a.muted=r.muted,a.volume=r.volume)},{equal:(r,n)=>r===n||r?.muted===n?.muted&&r?.volume===n?.volume,changed$:t,onError:i}),tt=(a,e,t,i)=>we(e,()=>a.playbackRate,r=>{s.isNonNullable(r)&&(a.playbackRate=r)},{changed$:t,onError:i}),us=a=>["__",a.language,a.label].join("|"),ds=(a,e)=>{if(a.id===e)return!0;const[t,i,r]=e.split("|");return a.language===i&&a.label===r};class Ne{available$=new s.Subject;current$=new s.ValueSubject(void 0);error$=new s.Subject;video;cueSettings;subscription=new s.Subscription;externalTracks=new Map;internalTracks=new Map;connect(e,t,i){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();const r=n=>{this.error$.next({id:"TextTracksManager",category:s.ErrorCategory.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:n})};this.subscription.add(this.available$.subscribe(i.availableTextTracks$)),this.subscription.add(this.current$.subscribe(i.currentTextTrack$)),this.subscription.add(this.error$.subscribe(i.error$)),this.subscription.add(we(t.internalTextTracks,()=>Object.values(this.internalTracks),n=>{s.isNonNullable(n)&&this.setInternal(n)},{equal:(n,o)=>s.isNonNullable(n)&&s.isNonNullable(o)&&n.length===o.length&&n.every(({id:c},u)=>c===o[u].id),changed$:this.available$.pipe(s.map(n=>n.filter(({type:o})=>o==="internal"))),onError:r})),this.subscription.add(we(t.externalTextTracks,()=>Object.values(this.externalTracks),n=>{s.isNonNullable(n)&&this.setExternal(n)},{equal:(n,o)=>s.isNonNullable(n)&&s.isNonNullable(o)&&n.length===o.length&&n.every(({id:c},u)=>c===o[u].id),changed$:this.available$.pipe(s.map(n=>n.filter(({type:o})=>o==="external"))),onError:r})),this.subscription.add(we(t.currentTextTrack,()=>{if(this.video)return;const n=this.htmlTextTracksAsArray().find(({mode:o})=>o==="showing");return n&&this.htmlTextTrackToITextTrack(n).id},n=>this.select(n),{changed$:this.current$,onError:r})),this.subscription.add(we(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(const n of this.htmlTextTracksAsArray())this.applyCueSettings(n.cues),this.applyCueSettings(n.activeCues)}))}subscribe(){s.assertNonNullable(this.video);const{textTracks:e}=this.video;this.subscription.add(s.fromEvent(e,"addtrack").subscribe(()=>{const i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(s.merge(s.fromEvent(e,"addtrack"),s.fromEvent(e,"removetrack"),s.observableFrom(["init"])).pipe(s.map(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),s.filterChanged((i,r)=>i.length===r.length&&i.every(({id:n},o)=>n===r[o].id))).subscribe(this.available$)),this.subscription.add(s.merge(s.fromEvent(e,"change"),s.observableFrom(["init"])).pipe(s.map(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),s.map(i=>i&&this.htmlTextTrackToITextTrack(i).id),s.filterChanged()).subscribe(this.current$));const t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(s.fromEvent(e,"addtrack").subscribe(i=>{i.track?.addEventListener("cuechange",t);const r=n=>{const o=n.target?.cues??null;o&&o.length&&(this.applyCueSettings(n.target?.cues??null),n.target?.removeEventListener("cuechange",r))};i.track?.addEventListener("cuechange",r)})),this.subscription.add(s.fromEvent(e,"removetrack").subscribe(i=>{i.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;const t=this.cueSettings.getState();for(const i of Array.from(e)){const r=i;s.isNonNullable(t.align)&&(r.align=t.align),s.isNonNullable(t.position)&&(r.position=t.position),s.isNonNullable(t.size)&&(r.size=t.size),s.isNonNullable(t.line)&&(r.line=t.line)}}htmlTextTracksAsArray(e=!1){s.assertNonNullable(this.video);const t=[...this.video.textTracks];return e?t:t.filter(Ne.isHealthyTrack)}htmlTextTrackToITextTrack(e){const{language:t,label:i}=e,r=e.id?e.id:us(e),n=this.externalTracks.has(r),o=r.includes("auto");return n?{id:r,type:"external",isAuto:o,language:t,label:i,url:this.externalTracks.get(r)?.url}:{id:r,type:"internal",isAuto:o,language:t,label:i,url:this.internalTracks.get(r)?.url}}static isHealthyTrack(e){return!(e.kind==="metadata"||e.groupId||e.id===""&&e.label===""&&e.language==="")}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(i=>i.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){const t=[...this.externalTracks];e.filter(({id:i,language:r,isAuto:n})=>!this.internalTracks.has(i)&&!t.some(([,o])=>o.language===r&&o.isAuto===n)).forEach(i=>this.attach(i)),Array.from(this.internalTracks).filter(([i])=>!e.find(r=>r.id===i)).forEach(([,i])=>this.detach(i))}select(e){s.assertNonNullable(this.video);for(const t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(const t of this.htmlTextTracksAsArray(!0))(s.isNullable(e)||!ds(t,e))&&(t.mode="disabled")}destroy(){if(this.subscription.unsubscribe(),this.video)for(const e of Array.from(this.video.getElementsByTagName("track"))){const t=e.getAttribute("id");t&&this.externalTracks.has(t)&&this.video.removeChild(e)}this.externalTracks.clear()}attach(e){s.assertNonNullable(this.video);const t=document.createElement("track");t.setAttribute("src",e.url),t.setAttribute("id",e.id),e.label&&t.setAttribute("label",e.label),e.language&&t.setAttribute("srclang",e.language),e.type==="external"?this.externalTracks.set(e.id,e):e.type==="internal"&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){s.assertNonNullable(this.video);const t=Array.prototype.find.call(this.video.getElementsByTagName("track"),i=>i.getAttribute("id")===e.id);t&&this.video.removeChild(t),e.type==="external"?this.externalTracks.delete(e.id):e.type==="internal"&&this.internalTracks.delete(e.id)}}class qt{pausedTime=0;streamOffset=0;pauseTimestamp=0;getTotalPausedTime(){return this.pausedTime+this.getCurrentPausedTime()}getCurrentPausedTime(){return this.pauseTimestamp>0?Date.now()-this.pauseTimestamp:0}getStreamOffset(){return this.streamOffset}getTotalOffset(){return this.getTotalPausedTime()+this.streamOffset}pause(){this.pauseTimestamp===0&&(this.pauseTimestamp=Date.now())}resume(){this.pauseTimestamp>0&&(this.pausedTime+=this.getCurrentPausedTime(),this.pauseTimestamp=0)}resetTo(e,t=!1){this.streamOffset=e,this.pauseTimestamp=0,this.pausedTime=0,t&&this.pause()}}const wi=a=>{let e=a;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},ti=a=>{const e=wi(a);return!!(e&&e.fullscreenElement&&e.fullscreenElement===a)},hs=a=>{const e=wi(a);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===a)},fs=3;var ps=(a,e,t=fs)=>{let i=0,r=0;for(let n=0;n<a.length;n++){const o=a.start(n),c=a.end(n);if(o<=e&&e<=c){if(i=o,r=c,!t)return{from:i,to:r};for(let u=n-1;u>=0;u--)a.end(u)+t>=i&&(i=a.start(u));for(let u=n+1;u<a.length;u++)a.start(u)-t<=r&&(r=a.end(u))}}return{from:i,to:r}};const Ye=a=>{const e=P=>s.fromEvent(a,P).pipe(s.mapTo(void 0)),t=["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"],i=s.merge(...t.map(P=>s.fromEvent(a,P))).pipe(s.map(P=>P.type==="ended"?a.readyState<2:a.readyState<3),s.filterChanged()),r=s.merge(s.fromEvent(a,"progress"),s.fromEvent(a,"timeupdate")).pipe(s.map(()=>ps(a.buffered,a.currentTime))),o=s.getCurrentBrowser().browser===s.CurrentClientBrowser.Safari?s.combine({play:e("play").pipe(s.once()),playing:e("playing")}).pipe(s.mapTo(void 0)):e("playing"),c=s.fromEvent(a,"volumechange").pipe(s.map(()=>({muted:a.muted,volume:a.volume}))),u=s.fromEvent(a,"ratechange").pipe(s.map(()=>a.playbackRate)),l=s.fromEvent(a,"error").pipe(s.filter(()=>!!(a.error||a.played.length)),s.map(()=>{const P=a.error;return{id:P?`MediaError#${P.code}`:"HtmlVideoError",category:s.ErrorCategory.VIDEO_PIPELINE,message:P?P.message:"Error event from HTML video element",thrown:a.error??void 0}})),d=s.fromEvent(a,"timeupdate").pipe(s.map(()=>a.currentTime)),h=new s.Subject,f=.3;let p;d.subscribe(P=>{a.loop&&s.isNonNullable(p)&&s.isNonNullable(P)&&p>=a.duration-f&&P<=f&&h.next(p),p=P});const m=s.fromEvent(a,"enterpictureinpicture"),T=s.fromEvent(a,"leavepictureinpicture"),b=new s.ValueSubject(hs(a));m.subscribe(()=>b.next(!0)),T.subscribe(()=>b.next(!1));const y=new s.ValueSubject(ti(a));return s.fromEvent(a,"fullscreenchange").pipe(s.map(()=>ti(a))).subscribe(y),{playing$:o,pause$:e("pause").pipe(s.filter(()=>!a.error)),canplay$:e("canplay"),ended$:e("ended"),looped$:h,error$:l,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:d,durationChange$:s.fromEvent(a,"durationchange").pipe(s.map(()=>a.duration)),isBuffering$:i,currentBuffer$:r,volumeState$:c,playbackRateState$:u,inPiP$:b,inFullscreen$:y}};var Pt=a=>{switch(a){case"mobile":return s.VideoQuality.Q_144P;case"lowest":return s.VideoQuality.Q_240P;case"low":return s.VideoQuality.Q_360P;case"sd":case"medium":return s.VideoQuality.Q_480P;case"hd":case"high":return s.VideoQuality.Q_720P;case"fullhd":case"full":return s.VideoQuality.Q_1080P;case"quadhd":case"quad":return s.VideoQuality.Q_1440P;case"ultrahd":case"ultra":return s.VideoQuality.Q_2160P}};let zt=!1,$e={};const ms=a=>{zt=a},Ss=()=>{$e={}},bs=a=>{a($e)},yt=(a,e)=>{zt&&($e.meta=$e.meta??{},$e.meta[a]=e)};class ve{name;constructor(e){this.name=e}next(e){if(!zt)return;$e.series=$e.series??{};const t=$e.series[this.name]??[];t.push([Date.now(),e]),$e.series[this.name]=t}}var _e;(function(a){a.FitsContainer="FitsContainer",a.FitsThroughput="FitsThroughput",a.Buffer="Buffer",a.DroppedFramesLimit="DroppedFramesLimit",a.FitsQualityLimits="FitsQualityLimits"})(_e||(_e={}));const gs=new ve("best_bitrate"),ys=(a,e,t)=>(e-t)*Math.pow(2,-10*a)+t;class vs{last;history={};recordSelection(e){this.history[e.id]=s.now()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}}const Ts='Assertion "ABR Tracks is empty array" failed',Ct=(a,{container:e,throughput:t,tuning:i,limits:r,reserve:n=0,forwardBufferHealth:o,playbackRate:c,current:u,history:l,droppedVideoMaxQualityLimit:d,abrLogger:h})=>{s.assertNotEmptyArray(a,Ts);const f=i.usePixelRatio?window.devicePixelRatio??1:1,p=i.limitByContainer&&e&&e.width>0&&e.height>0&&{width:e.width*f*i.containerSizeFactor,height:e.height*f*i.containerSizeFactor},m=p&&s.videoSizeToQuality(p),T=i.considerPlaybackRate&&s.isNonNullable(c)?c:1,b=a.filter(k=>!s.isInvariantQuality(k.quality)).sort((k,w)=>s.isHigher(k.quality,w.quality)?-1:1),y=b.at(-1)?.quality,C=b.at(0)?.quality,P=s.isNullable(r)||s.isNonNullable(r.min)&&s.isNonNullable(r.max)&&s.isLower(r.max,r.min)||s.isNonNullable(r.min)&&C&&s.isHigher(r.min,C)||s.isNonNullable(r.max)&&y&&s.isLower(r.max,y),g=T*ys(o??.5,i.bitrateFactorAtEmptyBuffer,i.bitrateFactorAtFullBuffer),E={},B=b.filter(k=>(m?s.isLower(k.quality,m):!0)?(s.isNonNullable(t)&&isFinite(t)&&s.isNonNullable(k.bitrate)?t-n>=k.bitrate*g:!0)?i.lazyQualitySwitch&&s.isNonNullable(i.minBufferToSwitchUp)&&u&&!s.isInvariantQuality(u.quality)&&(o??0)<i.minBufferToSwitchUp&&s.isHigher(k.quality,u.quality)?(E[k.quality]=_e.Buffer,!1):!!d&&s.isHigherOrEqual(k.quality,d)?(E[k.quality]=_e.DroppedFramesLimit,!1):P||(s.isNullable(r.max)||s.isLowerOrEqual(k.quality,r.max))&&(s.isNullable(r.min)||s.isHigherOrEqual(k.quality,r.min))?!0:(E[k.quality]=_e.FitsQualityLimits,!1):(E[k.quality]=_e.FitsThroughput,!1):(E[k.quality]=_e.FitsContainer,!1))[0];B&&B.bitrate&&gs.next(B.bitrate);const R=B??b[Math.ceil((b.length-1)/2)]??a[0];R.quality!==l?.last?.quality&&h({message:`
|
|
6
|
+
"use strict";var zi=Object.create;var Kt=Object.defineProperty;var Wi=Object.getOwnPropertyDescriptor;var Qi=Object.getOwnPropertyNames;var Ji=Object.getPrototypeOf,Xi=Object.prototype.hasOwnProperty;var Ki=(a,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Qi(e))!Xi.call(a,r)&&r!==t&&Kt(a,r,{get:()=>e[r],enumerable:!(i=Wi(e,r))||i.enumerable});return a};var Zi=(a,e,t)=>(t=a!=null?zi(Ji(a)):{},Ki(e||!a||!a.__esModule?Kt(t,"default",{value:a,enumerable:!0}):t,a));var s=require("@vkontakte/videoplayer-shared/esnext.cjs.js");const Ai="2.0.103-dev.c555938f.0";exports.PlaybackState=void 0;(function(a){a.STOPPED="stopped",a.READY="ready",a.PLAYING="playing",a.PAUSED="paused"})(exports.PlaybackState||(exports.PlaybackState={}));exports.VideoFormat=void 0;(function(a){a.MPEG="MPEG",a.DASH="DASH_SEP",a.DASH_SEP="DASH_SEP",a.DASH_SEP_VK="DASH_SEP",a.DASH_WEBM="DASH_WEBM",a.DASH_WEBM_AV1="DASH_WEBM_AV1",a.DASH_WEBM_VK="DASH_WEBM",a.DASH_ONDEMAND="DASH_ONDEMAND",a.DASH_ONDEMAND_VK="DASH_ONDEMAND",a.DASH_LIVE="DASH_LIVE",a.DASH_LIVE_CMAF="DASH_LIVE_CMAF",a.DASH_LIVE_WEBM="DASH_LIVE_WEBM",a.HLS="HLS",a.HLS_ONDEMAND="HLS_ONDEMAND",a.HLS_JS="HLS",a.HLS_LIVE="HLS_LIVE",a.HLS_LIVE_CMAF="HLS_LIVE_CMAF",a.WEB_RTC_LIVE="WEB_RTC_LIVE"})(exports.VideoFormat||(exports.VideoFormat={}));var ee;(function(a){a.SCREEN="SCREEN",a.CHROMECAST="CHROMECAST"})(ee||(ee={}));exports.ChromecastState=void 0;(function(a){a.NOT_AVAILABLE="NOT_AVAILABLE",a.AVAILABLE="AVAILABLE",a.CONNECTING="CONNECTING",a.CONNECTED="CONNECTED"})(exports.ChromecastState||(exports.ChromecastState={}));exports.HttpConnectionType=void 0;(function(a){a.HTTP1="http1",a.HTTP2="http2",a.QUIC="quic"})(exports.HttpConnectionType||(exports.HttpConnectionType={}));var I;(function(a){a.None="none",a.Requested="requested",a.Applying="applying"})(I||(I={}));exports.Surface=void 0;(function(a){a.NONE="none",a.INLINE="inline",a.FULLSCREEN="fullscreen",a.SECOND_SCREEN="second_screen",a.PIP="pip"})(exports.Surface||(exports.Surface={}));var es=a=>new Promise((e,t)=>{const i=document.createElement("script");i.setAttribute("src",a),i.onload=()=>e,i.onerror=()=>t,document.body.appendChild(i)});class ts{connection$=new s.ValueSubject(void 0);castState$=new s.ValueSubject(exports.ChromecastState.NOT_AVAILABLE);errorEvent$=new s.Subject;contentId;realCastState$=new s.ValueSubject(exports.ChromecastState.NOT_AVAILABLE);subscription=new s.Subscription;log;params;constructor(e){this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastInitializer");const t="chrome"in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${t}`}),e.isDisabled||!t)return;const i=s.isNonNullable(window.chrome?.cast),r=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=n=>{delete window.__onGCastApiAvailable,n&&this.initializeCastApi()},r||es("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:s.ErrorCategory.NETWORK,message:"Script loading failed!"})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){cast.framework.CastContext.getInstance()?.getCurrentSession()?.endSession(!0)}stopMedia(){return new Promise((e,t)=>{cast.framework.CastContext.getInstance()?.getCurrentSession()?.getMediaSession()?.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){s.isNonNullable(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){const t=this.connection$.getValue();s.isNullable(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){const t=this.connection$.getValue();s.isNullable(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.subscription.unsubscribe()}initListeners(){const e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),i=cast.framework.CastContext.getInstance();this.subscription.add(s.fromEvent(i,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(r=>{switch(r.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=i.getCurrentSession()?.getMediaSession()?.media.contentId;break;case cast.framework.SessionState.NO_SESSION:case cast.framework.SessionState.SESSION_ENDING:case cast.framework.SessionState.SESSION_ENDED:case cast.framework.SessionState.SESSION_START_FAILED:this.contentId=void 0;break;default:return s.assertNever(r.sessionState)}})).add(s.merge(s.fromEvent(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(s.tap(r=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(r)}`})}),s.map(r=>r.castState)),s.observableFrom([i.getCastState()])).pipe(s.filterChanged(),s.map(is),s.tap(r=>{this.log({message:`realCastState$: ${r}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{const n=r===exports.ChromecastState.CONNECTED,o=s.isNonNullable(this.connection$.getValue());if(n&&!o){const c=i.getCurrentSession();s.assertNonNullable(c);const u=c.getCastDevice(),l=c.getMediaSession()?.media.contentId;(s.isNullable(l)||l===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:c,castDevice:u}))}else!n&&o&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(r===exports.ChromecastState.CONNECTED?s.isNonNullable(this.connection$.getValue())?exports.ChromecastState.CONNECTED:exports.ChromecastState.AVAILABLE:r)}))}initializeCastApi(){let e,t,i;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,i=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:i}),this.initListeners()}catch(r){this.errorEvent$.next({id:"ChromecastInitializer",category:s.ErrorCategory.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:r})}}}const is=a=>{switch(a){case cast.framework.CastState.NO_DEVICES_AVAILABLE:return exports.ChromecastState.NOT_AVAILABLE;case cast.framework.CastState.NOT_CONNECTED:return exports.ChromecastState.AVAILABLE;case cast.framework.CastState.CONNECTING:return exports.ChromecastState.CONNECTING;case cast.framework.CastState.CONNECTED:return exports.ChromecastState.CONNECTED;default:return s.assertNever(a)}};var X;(function(a){a[a.OFFSET_P=0]="OFFSET_P",a[a.PLAYBACK_SHIFT=1]="PLAYBACK_SHIFT",a[a.DASH_CMAF_OFFSET_P=2]="DASH_CMAF_OFFSET_P"})(X||(X={}));var me=(a,e=0,t=X.OFFSET_P)=>{switch(t){case X.OFFSET_P:return a.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case X.PLAYBACK_SHIFT:{if(e===0)return a;const i=new URL(a);return i.searchParams.append("playback_shift",e.toFixed(0)),i.toString()}case X.DASH_CMAF_OFFSET_P:{const i=new URL(a);return!i.searchParams.get("offset_p")&&e===0?a:(i.searchParams.set("offset_p",e.toFixed(0)),i.toString())}default:s.assertNever(t)}return a};const Zt=(a,e)=>{switch(e){case X.OFFSET_P:return NaN;case X.PLAYBACK_SHIFT:{const t=new URL(a);return Number(t.searchParams.get("playback_shift"))}case X.DASH_CMAF_OFFSET_P:{const t=new URL(a);return Number(t.searchParams.get("offset_p")??0)}default:s.assertNever(e)}};var A=(a,e,t=!1)=>{const i=a.getTransition();(t||!i||i.to===e)&&a.setState(e)};class z{state;prevState;transition;transitionStarted$=new s.Subject;transitionEnded$=new s.Subject;transitionUpdated$=new s.Subject;forceChanged$=new s.Subject;stateChangeStarted$=s.merge(this.transitionStarted$,this.transitionUpdated$);stateChangeEnded$=s.merge(this.transitionEnded$,this.forceChanged$);constructor(e){this.state=e,this.prevState=void 0}setState(e){const t=this.transition,i=this.state;this.transition=void 0,this.prevState=i,this.state=e,t?t.to===e?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:i,to:e,canceledTransition:t})}startTransitionTo(e){const t=this.transition,i=this.state;i===e||s.isNonNullable(t)&&t.to===e||(this.prevState=i,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:i,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}}const ss=a=>{switch(a){case exports.VideoFormat.MPEG:case exports.VideoFormat.DASH_SEP:case exports.VideoFormat.DASH_ONDEMAND:case exports.VideoFormat.DASH_WEBM:case exports.VideoFormat.DASH_WEBM_AV1:case exports.VideoFormat.HLS:case exports.VideoFormat.HLS_ONDEMAND:return!1;case exports.VideoFormat.DASH_LIVE:case exports.VideoFormat.DASH_LIVE_CMAF:case exports.VideoFormat.HLS_LIVE:case exports.VideoFormat.HLS_LIVE_CMAF:case exports.VideoFormat.DASH_LIVE_WEBM:case exports.VideoFormat.WEB_RTC_LIVE:return!0;default:return s.assertNever(a)}};var L;(function(a){a.STOPPED="stopped",a.READY="ready",a.PLAYING="playing",a.PAUSED="paused"})(L||(L={}));const as=5,rs=5,ns=500,ei=7e3;class os{subscription=new s.Subscription;loadMediaTimeoutSubscription=new s.Subscription;videoState=new z(L.STOPPED);params;log;constructor(e){this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(ss(e.format)),this.params.output.isAudioAvailable$.next(!0),this.handleRemoteVolumeChange({volume:this.params.connection.remotePlayer.volumeLevel,muted:this.params.connection.remotePlayer.isMuted});const t=this.params.connection.session.getMediaSession();t&&this.restoreSession(t),this.subscribe()}destroy(){this.log({message:"[destroy]"}),this.subscription.unsubscribe()}subscribe(){this.subscription.add(this.loadMediaTimeoutSubscription);const e=new s.Subscription;this.subscription.add(e),this.subscription.add(s.merge(this.videoState.stateChangeStarted$.pipe(s.map(r=>`stateChangeStarted$ ${JSON.stringify(r)}`)),this.videoState.stateChangeEnded$.pipe(s.map(r=>`stateChangeEnded$ ${JSON.stringify(r)}`))).subscribe(r=>this.log({message:`[videoState] ${r}`})));const t=(r,n)=>this.subscription.add(r.subscribe(n));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{const r=new s.Subject;e.add(r.pipe(s.debounce(ns)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let n=NaN;e.add(s.fromEvent(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(o=>{this.logRemoteEvent(o);const c=o.value;this.params.output.position$.next(c),(this.params.desiredState.seekState.getState().state===I.Applying||Math.abs(c-n)>as)&&r.next(c),n=c})),e.add(s.fromEvent(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(o=>{this.logRemoteEvent(o),this.params.output.duration$.next(o.value)}))}t(s.fromEvent(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(s.fromEvent(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemotePause():this.handleRemotePlay()}),t(s.fromEvent(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),r=>{this.logRemoteEvent(r);const{remotePlayer:n}=this.params.connection,o=r.value,c=this.params.output.isBuffering$.getValue(),u=o===chrome.cast.media.PlayerState.BUFFERING;switch(c!==u&&this.params.output.isBuffering$.next(u),o){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&n.duration-n.currentTime<rs&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),A(this.params.desiredState.playbackState,exports.PlaybackState.STOPPED);break;case chrome.cast.media.PlayerState.PAUSED:{this.handleRemotePause();break}case chrome.cast.media.PlayerState.PLAYING:this.handleRemotePlay();break;case chrome.cast.media.PlayerState.BUFFERING:break;default:s.assertNever(o)}}),t(s.fromEvent(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({volume:r.value})}),t(s.fromEvent(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({muted:r.value})});const i=s.merge(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,s.observableFrom(["init"])).pipe(s.debounce(0));t(i,this.syncPlayback)}restoreSession(e){this.log({message:"restoreSession"});const{remotePlayer:t}=this.params.connection;if(e.playerState!==chrome.cast.media.PlayerState.IDLE){t.isPaused?(this.videoState.setState(L.PAUSED),A(this.params.desiredState.playbackState,exports.PlaybackState.PAUSED)):(this.videoState.setState(L.PLAYING),A(this.params.desiredState.playbackState,exports.PlaybackState.PLAYING));const i=this.params.output.isLive$.getValue();this.params.output.duration$.next(i?0:t.duration),this.params.output.position$.next(i?0:t.currentTime),this.params.desiredState.seekState.setState({state:I.None})}}prepare(){const e=this.params.format;this.log({message:`[prepare] format: ${e}`});const t=this.createMediaInfo(e),i=this.createLoadRequest(t);this.loadMedia(i)}handleRemotePause(){const e=this.videoState.getState();(this.videoState.getTransition()?.to===L.PAUSED||e===L.PLAYING)&&(this.videoState.setState(L.PAUSED),A(this.params.desiredState.playbackState,exports.PlaybackState.PAUSED))}handleRemotePlay(){const e=this.videoState.getState();(this.videoState.getTransition()?.to===L.PLAYING||e===L.PAUSED)&&(this.videoState.setState(L.PLAYING),A(this.params.desiredState.playbackState,exports.PlaybackState.PLAYING))}handleRemoteReady(){this.videoState.getTransition()?.to===L.READY&&this.videoState.setState(L.READY),this.params.desiredState.playbackState.getTransition()?.to===exports.PlaybackState.READY&&A(this.params.desiredState.playbackState,exports.PlaybackState.READY)}handleRemoteStop(){this.videoState.getState()!==L.STOPPED&&this.videoState.setState(L.STOPPED)}handleRemoteVolumeChange(e){const t=this.params.output.volume$.getValue(),i={volume:e.volume??t.volume,muted:e.muted??t.muted};(i.volume!==t.volume||i.muted!==i.muted)&&this.params.output.volume$.next(i)}seek(e){this.params.output.willSeekEvent$.next();const{remotePlayer:t,remotePlayerController:i}=this.params.connection;t.currentTime=e,i.seek()}stop(){const{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){const t=this.params.source;let i,r,n;switch(e){case exports.VideoFormat.MPEG:{const l=t[e];s.assertNonNullable(l);const d=s.getHighestQuality(Object.keys(l));s.assertNonNullable(d);const h=l[d];s.assertNonNullable(h),i=h,r="video/mp4",n=chrome.cast.media.StreamType.BUFFERED;break}case exports.VideoFormat.HLS:case exports.VideoFormat.HLS_ONDEMAND:{const l=t[e];s.assertNonNullable(l),i=l.url,r="application/x-mpegurl",n=chrome.cast.media.StreamType.BUFFERED;break}case exports.VideoFormat.DASH_SEP:case exports.VideoFormat.DASH_ONDEMAND:case exports.VideoFormat.DASH_WEBM:case exports.VideoFormat.DASH_WEBM_AV1:{const l=t[e];s.assertNonNullable(l),i=l.url,r="application/dash+xml",n=chrome.cast.media.StreamType.BUFFERED;break}case exports.VideoFormat.DASH_LIVE_CMAF:{const l=t[e];s.assertNonNullable(l),i=l.url,r="application/dash+xml",n=chrome.cast.media.StreamType.LIVE;break}case exports.VideoFormat.HLS_LIVE:case exports.VideoFormat.HLS_LIVE_CMAF:{const l=t[e];s.assertNonNullable(l),i=me(l.url),r="application/x-mpegurl",n=chrome.cast.media.StreamType.LIVE;break}case exports.VideoFormat.DASH_LIVE:case exports.VideoFormat.WEB_RTC_LIVE:{const l="Unsupported format for Chromecast",d=new Error(l);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:s.ErrorCategory.VIDEO_PIPELINE,message:l,thrown:d}),d}case exports.VideoFormat.DASH_LIVE_WEBM:throw new Error("DASH_LIVE_WEBM is no longer supported");default:return s.assertNever(e)}const o=new chrome.cast.media.MediaInfo(this.params.meta.videoId??i,r);o.contentUrl=i,o.streamType=n,o.metadata=new chrome.cast.media.GenericMediaMetadata;const{title:c,subtitle:u}=this.params.meta;return s.isNonNullable(c)&&(o.metadata.title=c),s.isNonNullable(u)&&(o.metadata.subtitle=u),o}createLoadRequest(e){const t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;const i=this.params.desiredState.seekState.getState();return i.state===I.Applying||i.state===I.Requested?t.currentTime=this.params.output.isLive$.getValue()?0:i.position/1e3:t.currentTime=0,t}loadMedia(e){const t=this.params.connection.session.loadMedia(e),i=new Promise((r,n)=>{this.loadMediaTimeoutSubscription.add(s.timeout(ei).subscribe(()=>n(`timeout(${ei})`)))});Promise.race([t,i]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state===I.Applying&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},r=>{const n=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${r}`;this.log({message:n}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:s.ErrorCategory.VIDEO_PIPELINE,message:n,thrown:r})}).finally(()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}syncPlayback=()=>{const e=this.videoState.getState(),t=this.videoState.getTransition(),i=this.params.desiredState.playbackState.getState(),r=this.params.desiredState.playbackState.getTransition(),n=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${i}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(n)};`}),i===exports.PlaybackState.STOPPED){e!==L.STOPPED&&(this.videoState.startTransitionTo(L.STOPPED),this.stop());return}if(!t){if(r?.to!==exports.PlaybackState.PAUSED&&n.state===I.Requested&&e!==L.STOPPED){this.seek(n.position/1e3);return}switch(i){case exports.PlaybackState.READY:{switch(e){case L.PLAYING:case L.PAUSED:case L.READY:break;case L.STOPPED:this.videoState.startTransitionTo(L.READY),this.prepare();break;default:s.assertNever(e)}break}case exports.PlaybackState.PLAYING:{switch(e){case L.PLAYING:break;case L.PAUSED:this.videoState.startTransitionTo(L.PLAYING),this.params.connection.remotePlayerController.playOrPause();break;case L.READY:this.videoState.startTransitionTo(L.PLAYING),this.params.connection.remotePlayerController.playOrPause();break;case L.STOPPED:this.videoState.startTransitionTo(L.READY),this.prepare();break;default:s.assertNever(e)}break}case exports.PlaybackState.PAUSED:{switch(e){case L.PLAYING:this.videoState.startTransitionTo(L.PAUSED),this.params.connection.remotePlayerController.playOrPause();break;case L.PAUSED:break;case L.READY:this.videoState.startTransitionTo(L.PAUSED),this.videoState.setState(L.PAUSED);break;case L.STOPPED:this.videoState.startTransitionTo(L.READY),this.prepare();break;default:s.assertNever(e)}break}default:s.assertNever(i)}}}}const Gt=a=>{a.removeAttribute("src"),a.load()},cs=a=>{try{a.pause(),a.playbackRate=0,Gt(a),a.remove()}catch(e){console.error(e)}};class ls{attribute="data-pool-reused";get(e){return e.hasAttribute(this.attribute)}set(e,t){e.toggleAttribute(this.attribute,t)}delete(e){e.removeAttribute(this.attribute)}}const Ft=window.WeakMap?new WeakMap:new ls,Ue=a=>{let e=a.querySelector("video");const t=!!e;return e?Gt(e):(e=document.createElement("video"),a.appendChild(e)),Ft.set(e,t),e.setAttribute("crossorigin","anonymous"),e.setAttribute("playsinline","playsinline"),e.controls=!1,e.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),e},He=a=>{const e=Ft.get(a);Ft.delete(a),e?Gt(a):cs(a)},we=(a,e,t,{equal:i=(o,c)=>o===c,changed$:r,onError:n}={})=>{const o=a.getState(),c=e(),u=s.isNullable(r),l=new s.Subscription;return r&&l.add(r.subscribe(d=>{const h=a.getState();i(d,h)&&a.setState(d)},n)),i(c,o)||(t(o),u&&a.setState(o)),l.add(a.stateChangeStarted$.subscribe(d=>{t(d.to),u&&a.setState(d.to)},n)),l},ft=(a,e,t)=>we(e,()=>a.loop,i=>{s.isNonNullable(i)&&(a.loop=i)},{onError:t}),je=(a,e,t,i)=>we(e,()=>({muted:a.muted,volume:a.volume}),r=>{s.isNonNullable(r)&&(a.muted=r.muted,a.volume=r.volume)},{equal:(r,n)=>r===n||r?.muted===n?.muted&&r?.volume===n?.volume,changed$:t,onError:i}),tt=(a,e,t,i)=>we(e,()=>a.playbackRate,r=>{s.isNonNullable(r)&&(a.playbackRate=r)},{changed$:t,onError:i}),us=a=>["__",a.language,a.label].join("|"),ds=(a,e)=>{if(a.id===e)return!0;const[t,i,r]=e.split("|");return a.language===i&&a.label===r};class Ne{available$=new s.Subject;current$=new s.ValueSubject(void 0);error$=new s.Subject;video;cueSettings;subscription=new s.Subscription;externalTracks=new Map;internalTracks=new Map;connect(e,t,i){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();const r=n=>{this.error$.next({id:"TextTracksManager",category:s.ErrorCategory.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:n})};this.subscription.add(this.available$.subscribe(i.availableTextTracks$)),this.subscription.add(this.current$.subscribe(i.currentTextTrack$)),this.subscription.add(this.error$.subscribe(i.error$)),this.subscription.add(we(t.internalTextTracks,()=>Object.values(this.internalTracks),n=>{s.isNonNullable(n)&&this.setInternal(n)},{equal:(n,o)=>s.isNonNullable(n)&&s.isNonNullable(o)&&n.length===o.length&&n.every(({id:c},u)=>c===o[u].id),changed$:this.available$.pipe(s.map(n=>n.filter(({type:o})=>o==="internal"))),onError:r})),this.subscription.add(we(t.externalTextTracks,()=>Object.values(this.externalTracks),n=>{s.isNonNullable(n)&&this.setExternal(n)},{equal:(n,o)=>s.isNonNullable(n)&&s.isNonNullable(o)&&n.length===o.length&&n.every(({id:c},u)=>c===o[u].id),changed$:this.available$.pipe(s.map(n=>n.filter(({type:o})=>o==="external"))),onError:r})),this.subscription.add(we(t.currentTextTrack,()=>{if(this.video)return;const n=this.htmlTextTracksAsArray().find(({mode:o})=>o==="showing");return n&&this.htmlTextTrackToITextTrack(n).id},n=>this.select(n),{changed$:this.current$,onError:r})),this.subscription.add(we(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(const n of this.htmlTextTracksAsArray())this.applyCueSettings(n.cues),this.applyCueSettings(n.activeCues)}))}subscribe(){s.assertNonNullable(this.video);const{textTracks:e}=this.video;this.subscription.add(s.fromEvent(e,"addtrack").subscribe(()=>{const i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(s.merge(s.fromEvent(e,"addtrack"),s.fromEvent(e,"removetrack"),s.observableFrom(["init"])).pipe(s.map(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),s.filterChanged((i,r)=>i.length===r.length&&i.every(({id:n},o)=>n===r[o].id))).subscribe(this.available$)),this.subscription.add(s.merge(s.fromEvent(e,"change"),s.observableFrom(["init"])).pipe(s.map(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),s.map(i=>i&&this.htmlTextTrackToITextTrack(i).id),s.filterChanged()).subscribe(this.current$));const t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(s.fromEvent(e,"addtrack").subscribe(i=>{i.track?.addEventListener("cuechange",t);const r=n=>{const o=n.target?.cues??null;o&&o.length&&(this.applyCueSettings(n.target?.cues??null),n.target?.removeEventListener("cuechange",r))};i.track?.addEventListener("cuechange",r)})),this.subscription.add(s.fromEvent(e,"removetrack").subscribe(i=>{i.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;const t=this.cueSettings.getState();for(const i of Array.from(e)){const r=i;s.isNonNullable(t.align)&&(r.align=t.align),s.isNonNullable(t.position)&&(r.position=t.position),s.isNonNullable(t.size)&&(r.size=t.size),s.isNonNullable(t.line)&&(r.line=t.line)}}htmlTextTracksAsArray(e=!1){s.assertNonNullable(this.video);const t=[...this.video.textTracks];return e?t:t.filter(Ne.isHealthyTrack)}htmlTextTrackToITextTrack(e){const{language:t,label:i}=e,r=e.id?e.id:us(e),n=this.externalTracks.has(r),o=r.includes("auto");return n?{id:r,type:"external",isAuto:o,language:t,label:i,url:this.externalTracks.get(r)?.url}:{id:r,type:"internal",isAuto:o,language:t,label:i,url:this.internalTracks.get(r)?.url}}static isHealthyTrack(e){return!(e.kind==="metadata"||e.groupId||e.id===""&&e.label===""&&e.language==="")}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(i=>i.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){const t=[...this.externalTracks];e.filter(({id:i,language:r,isAuto:n})=>!this.internalTracks.has(i)&&!t.some(([,o])=>o.language===r&&o.isAuto===n)).forEach(i=>this.attach(i)),Array.from(this.internalTracks).filter(([i])=>!e.find(r=>r.id===i)).forEach(([,i])=>this.detach(i))}select(e){s.assertNonNullable(this.video);for(const t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(const t of this.htmlTextTracksAsArray(!0))(s.isNullable(e)||!ds(t,e))&&(t.mode="disabled")}destroy(){if(this.subscription.unsubscribe(),this.video)for(const e of Array.from(this.video.getElementsByTagName("track"))){const t=e.getAttribute("id");t&&this.externalTracks.has(t)&&this.video.removeChild(e)}this.externalTracks.clear()}attach(e){s.assertNonNullable(this.video);const t=document.createElement("track");t.setAttribute("src",e.url),t.setAttribute("id",e.id),e.label&&t.setAttribute("label",e.label),e.language&&t.setAttribute("srclang",e.language),e.type==="external"?this.externalTracks.set(e.id,e):e.type==="internal"&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){s.assertNonNullable(this.video);const t=Array.prototype.find.call(this.video.getElementsByTagName("track"),i=>i.getAttribute("id")===e.id);t&&this.video.removeChild(t),e.type==="external"?this.externalTracks.delete(e.id):e.type==="internal"&&this.internalTracks.delete(e.id)}}class qt{pausedTime=0;streamOffset=0;pauseTimestamp=0;getTotalPausedTime(){return this.pausedTime+this.getCurrentPausedTime()}getCurrentPausedTime(){return this.pauseTimestamp>0?Date.now()-this.pauseTimestamp:0}getStreamOffset(){return this.streamOffset}getTotalOffset(){return this.getTotalPausedTime()+this.streamOffset}pause(){this.pauseTimestamp===0&&(this.pauseTimestamp=Date.now())}resume(){this.pauseTimestamp>0&&(this.pausedTime+=this.getCurrentPausedTime(),this.pauseTimestamp=0)}resetTo(e,t=!1){this.streamOffset=e,this.pauseTimestamp=0,this.pausedTime=0,t&&this.pause()}}const wi=a=>{let e=a;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},ti=a=>{const e=wi(a);return!!(e&&e.fullscreenElement&&e.fullscreenElement===a)},hs=a=>{const e=wi(a);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===a)},fs=3;var ps=(a,e,t=fs)=>{let i=0,r=0;for(let n=0;n<a.length;n++){const o=a.start(n),c=a.end(n);if(o<=e&&e<=c){if(i=o,r=c,!t)return{from:i,to:r};for(let u=n-1;u>=0;u--)a.end(u)+t>=i&&(i=a.start(u));for(let u=n+1;u<a.length;u++)a.start(u)-t<=r&&(r=a.end(u))}}return{from:i,to:r}};const Ye=a=>{const e=P=>s.fromEvent(a,P).pipe(s.mapTo(void 0)),t=["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"],i=s.merge(...t.map(P=>s.fromEvent(a,P))).pipe(s.map(P=>P.type==="ended"?a.readyState<2:a.readyState<3),s.filterChanged()),r=s.merge(s.fromEvent(a,"progress"),s.fromEvent(a,"timeupdate")).pipe(s.map(()=>ps(a.buffered,a.currentTime))),o=s.getCurrentBrowser().browser===s.CurrentClientBrowser.Safari?s.combine({play:e("play").pipe(s.once()),playing:e("playing")}).pipe(s.mapTo(void 0)):e("playing"),c=s.fromEvent(a,"volumechange").pipe(s.map(()=>({muted:a.muted,volume:a.volume}))),u=s.fromEvent(a,"ratechange").pipe(s.map(()=>a.playbackRate)),l=s.fromEvent(a,"error").pipe(s.filter(()=>!!(a.error||a.played.length)),s.map(()=>{const P=a.error;return{id:P?`MediaError#${P.code}`:"HtmlVideoError",category:s.ErrorCategory.VIDEO_PIPELINE,message:P?P.message:"Error event from HTML video element",thrown:a.error??void 0}})),d=s.fromEvent(a,"timeupdate").pipe(s.map(()=>a.currentTime)),h=new s.Subject,f=.3;let p;d.subscribe(P=>{a.loop&&s.isNonNullable(p)&&s.isNonNullable(P)&&p>=a.duration-f&&P<=f&&h.next(p),p=P});const m=s.fromEvent(a,"enterpictureinpicture"),T=s.fromEvent(a,"leavepictureinpicture"),b=new s.ValueSubject(hs(a));m.subscribe(()=>b.next(!0)),T.subscribe(()=>b.next(!1));const y=new s.ValueSubject(ti(a));return s.fromEvent(a,"fullscreenchange").pipe(s.map(()=>ti(a))).subscribe(y),{playing$:o,pause$:e("pause").pipe(s.filter(()=>!a.error)),canplay$:e("canplay"),ended$:e("ended"),looped$:h,error$:l,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:d,durationChange$:s.fromEvent(a,"durationchange").pipe(s.map(()=>a.duration)),isBuffering$:i,currentBuffer$:r,volumeState$:c,playbackRateState$:u,inPiP$:b,inFullscreen$:y}};var Pt=a=>{switch(a){case"mobile":return s.VideoQuality.Q_144P;case"lowest":return s.VideoQuality.Q_240P;case"low":return s.VideoQuality.Q_360P;case"sd":case"medium":return s.VideoQuality.Q_480P;case"hd":case"high":return s.VideoQuality.Q_720P;case"fullhd":case"full":return s.VideoQuality.Q_1080P;case"quadhd":case"quad":return s.VideoQuality.Q_1440P;case"ultrahd":case"ultra":return s.VideoQuality.Q_2160P}};let zt=!1,$e={};const ms=a=>{zt=a},Ss=()=>{$e={}},bs=a=>{a($e)},yt=(a,e)=>{zt&&($e.meta=$e.meta??{},$e.meta[a]=e)};class ve{name;constructor(e){this.name=e}next(e){if(!zt)return;$e.series=$e.series??{};const t=$e.series[this.name]??[];t.push([Date.now(),e]),$e.series[this.name]=t}}var _e;(function(a){a.FitsContainer="FitsContainer",a.FitsThroughput="FitsThroughput",a.Buffer="Buffer",a.DroppedFramesLimit="DroppedFramesLimit",a.FitsQualityLimits="FitsQualityLimits"})(_e||(_e={}));const gs=new ve("best_bitrate"),ys=(a,e,t)=>(e-t)*Math.pow(2,-10*a)+t;class vs{last;history={};recordSelection(e){this.history[e.id]=s.now()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}}const Ts='Assertion "ABR Tracks is empty array" failed',Ct=(a,{container:e,throughput:t,tuning:i,limits:r,reserve:n=0,forwardBufferHealth:o,playbackRate:c,current:u,history:l,droppedVideoMaxQualityLimit:d,abrLogger:h})=>{s.assertNotEmptyArray(a,Ts);const f=i.usePixelRatio?window.devicePixelRatio??1:1,p=i.limitByContainer&&e&&e.width>0&&e.height>0&&{width:e.width*f*i.containerSizeFactor,height:e.height*f*i.containerSizeFactor},m=p&&s.videoSizeToQuality(p),T=i.considerPlaybackRate&&s.isNonNullable(c)?c:1,b=a.filter(k=>!s.isInvariantQuality(k.quality)).sort((k,w)=>s.isHigher(k.quality,w.quality)?-1:1),y=b.at(-1)?.quality,C=b.at(0)?.quality,P=s.isNullable(r)||s.isNonNullable(r.min)&&s.isNonNullable(r.max)&&s.isLower(r.max,r.min)||s.isNonNullable(r.min)&&C&&s.isHigher(r.min,C)||s.isNonNullable(r.max)&&y&&s.isLower(r.max,y),g=T*ys(o??.5,i.bitrateFactorAtEmptyBuffer,i.bitrateFactorAtFullBuffer),E={},B=b.filter(k=>(m?s.isLower(k.quality,m):!0)?(s.isNonNullable(t)&&isFinite(t)&&s.isNonNullable(k.bitrate)?t-n>=k.bitrate*g:!0)?i.lazyQualitySwitch&&s.isNonNullable(i.minBufferToSwitchUp)&&u&&!s.isInvariantQuality(u.quality)&&(o??0)<i.minBufferToSwitchUp&&s.isHigher(k.quality,u.quality)?(E[k.quality]=_e.Buffer,!1):!!d&&s.isHigherOrEqual(k.quality,d)?(E[k.quality]=_e.DroppedFramesLimit,!1):P||(s.isNullable(r.max)||s.isLowerOrEqual(k.quality,r.max))&&(s.isNullable(r.min)||s.isHigherOrEqual(k.quality,r.min))?!0:(E[k.quality]=_e.FitsQualityLimits,!1):(E[k.quality]=_e.FitsThroughput,!1):(E[k.quality]=_e.FitsContainer,!1))[0];B&&B.bitrate&&gs.next(B.bitrate);const R=B??b[Math.ceil((b.length-1)/2)]??a[0];R.quality!==l?.last?.quality&&h({message:`
|
|
7
7
|
[available tracks]
|
|
8
8
|
${a.map(k=>`{ id: ${k.id}, quality: ${k.quality}, bitrate: ${k.bitrate} }`).join(`
|
|
9
9
|
`)}
|