@100mslive/hms-video-store 0.11.2-alpha.3 → 0.11.2-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var ga=Object.defineProperty,Ta=Object.defineProperties;var fa=Object.getOwnPropertyDescriptors;var Ot=Object.getOwnPropertySymbols,va=Object.getPrototypeOf,Fr=Object.prototype.hasOwnProperty,Gr=Object.prototype.propertyIsEnumerable,Ma=Reflect.get;var Br=(a,e,t)=>e in a?ga(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,m=(a,e)=>{for(var t in e||(e={}))Fr.call(e,t)&&Br(a,t,e[t]);if(Ot)for(var t of Ot(e))Gr.call(e,t)&&Br(a,t,e[t]);return a},k=(a,e)=>Ta(a,fa(e));var Qi=(a,e)=>{var t={};for(var i in a)Fr.call(a,i)&&e.indexOf(i)<0&&(t[i]=a[i]);if(a!=null&&Ot)for(var i of Ot(a))e.indexOf(i)<0&&Gr.call(a,i)&&(t[i]=a[i]);return t};var ya=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports);var W=(a,e,t)=>Ma(va(a),t,e);var c=(a,e,t)=>new Promise((i,r)=>{var s=l=>{try{n(t.next(l))}catch(u){r(u)}},o=l=>{try{n(t.throw(l))}catch(u){r(u)}},n=l=>l.done?i(l.value):Promise.resolve(l.value).then(s,o);n((t=t.apply(a,e)).next())});var nr=ya((jc,Va)=>{Va.exports={version:"0.11.2-alpha.3",license:"MIT",repository:{type:"git",url:"https://github.com/100mslive/web-sdks.git",directory:"packages/hms-video-store"},main:"dist/index.cjs.js",module:"dist/index.js",typings:"dist/index.d.ts",files:["dist","src"],engines:{node:">=12"},exports:{".":{require:"./dist/index.cjs.js",import:"./dist/index.js",default:"./dist/index.js"}},sideEffects:!1,scripts:{prestart:"rm -rf dist && yarn types:build",start:'concurrently "yarn dev" "yarn types"',dev:"node ../../scripts/dev","build:only":"node ../../scripts/build",build:"yarn build:only && yarn types:build",types:"tsc -w","types:build":"tsc -p tsconfig.json",format:"prettier --write src/**/*.ts",test:"jest --maxWorkers=1","test:watch":"jest --watch","test:coverage":"jest --coverage",lint:"eslint -c ../../.eslintrc .","lint:fix":"yarn lint --fix",prepare:"yarn build",size:"size-limit",analyze:"size-limit --why",docs:"rm -rf ./docs && typedoc && rm -f ./docs/README.md && mkdir ./docs/home &&mv ./docs/modules.md ./docs/home/content.md && node ../../scripts/docs-store && npx prettier --write './docs/**/*'"},name:"@100mslive/hms-video-store",author:"100ms",dependencies:{eventemitter2:"^6.4.9",immer:"^9.0.6",reselect:"4.0.0","sdp-transform":"^2.14.1","ua-parser-js":"^1.0.1",uuid:"^8.3.2","webrtc-adapter":"^8.0.0",zustand:"3.5.7"},devDependencies:{"@types/dom-screen-wake-lock":"^1.0.1","@types/sdp-transform":"^2.4.4","@types/ua-parser-js":"^0.7.36","@types/uuid":"^8.3.0","jest-canvas-mock":"^2.3.1","jsdom-worker":"^0.3.0",tslib:"^2.2.0"},description:"@100mslive Core SDK which abstracts the complexities of webRTC while providing a reactive store for data management with a unidirectional data flow",keywords:["video","webrtc","conferencing","100ms"],gitHead:"a8ba9a5b8f03574b1b398575dced298fd1a9fab5"}});var zi=(n=>(n.Disconnected="Disconnected",n.Preview="Preview",n.Connecting="Connecting",n.Connected="Connected",n.Reconnecting="Reconnecting",n.Disconnecting="Disconnecting",n.Failed="Failed",n))(zi||{});var xt=()=>({room:{id:"",isConnected:!1,name:"",peers:[],localPeer:"",roomState:"Disconnected",recording:{browser:{running:!1},server:{running:!1},hls:{running:!1}},rtmp:{running:!1},hls:{running:!1,variants:[]},sessionId:""},peers:{},tracks:{},playlist:{audio:{list:{},selection:{id:"",hasPrevious:!1,hasNext:!1},progress:0,volume:0,currentTime:0,playbackRate:1},video:{list:{},selection:{id:"",hasPrevious:!1,hasNext:!1},progress:0,volume:0,currentTime:0,playbackRate:1}},messages:{byID:{},allIDs:[]},speakers:{},connectionQualities:{},settings:{audioInputDeviceId:"",audioOutputDeviceId:"",videoInputDeviceId:""},devices:{audioInput:[],audioOutput:[],videoInput:[]},roles:{},roleChangeRequests:[],errors:[],sessionStore:{},templateAppData:{},polls:{},whiteboards:{},hideLocalPeer:!1}),Ut=()=>({peerStats:{},remoteTrackStats:{},localTrackStats:{},localPeer:{id:""}});var ka=(e=>(e.CHAT="chat",e))(ka||{});var $r=(t=>(t.INFO="info",t.ERROR="error",t))($r||{}),Yi=(C=>(C.PEER_JOINED="PEER_JOINED",C.PEER_LEFT="PEER_LEFT",C.PEER_LIST="PEER_LIST",C.NEW_MESSAGE="NEW_MESSAGE",C.ERROR="ERROR",C.RECONNECTING="RECONNECTING",C.RECONNECTED="RECONNECTED",C.TRACK_ADDED="TRACK_ADDED",C.TRACK_REMOVED="TRACK_REMOVED",C.TRACK_MUTED="TRACK_MUTED",C.TRACK_UNMUTED="TRACK_UNMUTED",C.TRACK_DEGRADED="TRACK_DEGRADED",C.TRACK_RESTORED="TRACK_RESTORED",C.TRACK_DESCRIPTION_CHANGED="TRACK_DESCRIPTION_CHANGED",C.ROLE_UPDATED="ROLE_UPDATED",C.CHANGE_TRACK_STATE_REQUEST="CHANGE_TRACK_STATE_REQUEST",C.CHANGE_MULTI_TRACK_STATE_REQUEST="CHANGE_MULTI_TRACK_STATE_REQUEST",C.ROOM_ENDED="ROOM_ENDED",C.REMOVED_FROM_ROOM="REMOVED_FROM_ROOM",C.DEVICE_CHANGE_UPDATE="DEVICE_CHANGE_UPDATE",C.PLAYLIST_TRACK_ENDED="PLAYLIST_TRACK_ENDED",C.NAME_UPDATED="NAME_UPDATED",C.METADATA_UPDATED="METADATA_UPDATED",C.POLL_CREATED="POLL_CREATED",C.POLL_STARTED="POLL_STARTED",C.POLL_STOPPED="POLL_STOPPED",C.POLL_VOTES_UPDATED="POLL_VOTES_UPDATED",C.HAND_RAISE_CHANGED="HAND_RAISE_CHANGED",C))(Yi||{});var Wr=(t=>(t.audio="audio",t.video="video",t))(Wr||{});import{createSelector as P}from"reselect";function He(a,e){let t,i;if(e)for(let r of e.auxiliaryTracks){let s=a[r];Pa(s)&&(i=Ze(s)?s:i,t=et(s)?s:t)}return{video:t,audio:i}}function Ze(a){return a&&a.type==="audio"}function et(a){return a&&a.type==="video"}function Pa(a){return a&&a.source==="screen"}function Vt(a){return a&&a.source==="audioplaylist"}function tt(a){return a&&a.source==="videoplaylist"}function Kr(a){return a?!!(a!=null&&a.degraded):!1}function Oe(a,e){return e&&a.tracks[e]?a.tracks[e].enabled:!1}function qr(a,e){return e&&a.tracks[e]?a.tracks[e].displayEnabled:!1}function it(a){var r;let e=!1,t=!1,i=!1;return(r=a==null?void 0:a.publishParams)!=null&&r.allowed&&(e=a.publishParams.allowed.includes("video"),t=a.publishParams.allowed.includes("audio"),i=a.publishParams.allowed.includes("screen")),{video:e,audio:t,screen:i}}var U=a=>a.room,Ea=a=>a.errors,yn=P(Ea,a=>a.length===0?null:a.at(-1)),kn=P(U,a=>a.id),G=a=>a.peers,Bt=a=>a.messages.byID,jr=a=>a.messages.allIDs,w=a=>a.tracks,Jr=a=>a.settings,Xi=a=>a.appData,Pn=a=>a.devices,Aa=a=>a.speakers,En=a=>a.connectionQualities,ye=P([U],a=>a&&a.isConnected),An=P([ye,U],(a,e)=>a?e.peerCount!==void 0?e.peerCount||1:e.peers.length:Math.max(e.peerCount!==void 0?e.peerCount:e.peers.length-1,0)),ba=a=>a.hideLocalPeer,ae=P([U,G,ba],(a,e,t)=>t?a.peers.filter(i=>a.localPeer!==i).map(i=>e[i]):a.peers.map(i=>e[i])),Ra=P(w,a=>Object.values(a)),Q=P(U,G,(a,e)=>e[a.localPeer]),ue=P(U,a=>a.localPeer),bn=P(Q,a=>a==null?void 0:a.name),Rn=P(Q,a=>a==null?void 0:a.roleName),Z=P(Q,a=>a==null?void 0:a.audioTrack),K=P(Q,a=>a==null?void 0:a.videoTrack),Ha=P(Q,a=>a==null?void 0:a.auxiliaryTracks),Qr=P([Z,K,Ha],(a,e,t)=>{let i=t?[...t]:[];return a&&i.unshift(a),e&&i.unshift(e),i}),Hn=P(ae,a=>a.filter(e=>!e.isLocal)),In=P(G,Aa,(a,e)=>{let t=Object.entries(e).sort((i,r)=>{var n,l;let s=((n=i[1])==null?void 0:n.audioLevel)||0;return(((l=r[1])==null?void 0:l.audioLevel)||0)>s?1:-1});if(t.length>0&&t[0][1].audioLevel&&t[0][1].audioLevel>0){let i=t[0][1].peerID;if(i in a)return a[i]}return null}),Cn=a=>{let e=Q(a);return Oe(a,e==null?void 0:e.audioTrack)},Zi=a=>{let e=Q(a);return Oe(a,e==null?void 0:e.videoTrack)},zr=a=>{let e=Q(a);return qr(a,e==null?void 0:e.videoTrack)},er=P(Q,w,(a,e)=>{let{video:t,audio:i}=He(e,a);return!!(t||i)}),Ia=P(G,w,(a,e)=>{let t;for(let i in a){let r=a[i],{video:s,audio:o}=He(e,r);if(s)return r;o&&!t&&(t=r)}return t}),Ln=P(Ia,a=>!!a),wn=P(G,w,(a,e)=>{for(let t in a){let i=a[t],{audio:r,video:s}=He(e,i);if(!s&&r)return i}}),Dn=P(G,w,(a,e)=>{let t=[],i=[];for(let r in a){let s=a[r],{video:o,audio:n}=He(e,s);o?t.push(s):n&&i.push(s)}return t.concat(i)}),_n=P(G,w,(a,e)=>{for(let t in e){let i=e[t];if(tt(i)&&et(i)&&i.peerId)return a[i.peerId]}}),Nn=P(G,w,(a,e)=>{for(let t in e){let i=e[t];if(Vt(i)&&i.peerId)return a[i.peerId]}}),On=P(Ra,a=>a.filter(Kr)),xn=P(jr,a=>a.length),Un=P(Bt,a=>Object.values(a).filter(e=>!e.read).length),rt=P(jr,Bt,(a,e)=>{let t=[];return a.forEach(i=>{t.push(e[i])}),t}),Ca=P(rt,a=>a.filter(e=>{var t;return!e.recipientPeer&&!(e.recipientRoles&&((t=e.recipientRoles)==null?void 0:t.length)>0)})),Vn=P(Ca,a=>a.filter(e=>!e.read).length),z=P([U],a=>a&&a.roomState),Yr=P(z,a=>a==="Preview"),Bn=P(U,a=>a.roomState!=="Disconnected"),oe=a=>a.roles,Fn=P([oe],a=>Object.keys(a)),Ft=P([Q,oe],(a,e)=>a!=null&&a.roleName?e[a.roleName]:null),La=a=>{var e;return(e=a.preview)==null?void 0:e.asRole},Xr=P([La,oe],(a,e)=>a?e[a]:null),Gn=P([Ft],a=>{var e;return(e=a==null?void 0:a.subscribeParams)!=null&&e.subscribeToRoles?a.subscribeParams.subscribeToRoles.length>0:!1}),Zr=P(Ft,a=>a==null?void 0:a.permissions),$n=P(U,a=>a.recording),Wn=P(U,a=>a.rtmp),Kn=P(U,a=>a.hls),qn=P(U,a=>a.sessionId),jn=P(U,a=>a.startedAt),Jn=P(U,a=>!!a.isLargeRoom),Qn=P(U,a=>!!a.isEffectsEnabled),zn=P(U,a=>a.effectsKey),Yn=a=>a.templateAppData,Xn=a=>a.sessionMetadata,es=a=>a.polls,Zn=a=>Object.values(a.polls),ec=P(ae,a=>a.filter(e=>e.isHandRaised)),wa=a=>a.whiteboards,tc=P(wa,a=>Object.values(a)[0]);import{createSelector as ts}from"reselect";var is=(a="audio")=>e=>e.playlist[a].list,tr=(a="audio")=>e=>e.playlist[a].selection,rs=(a="audio")=>e=>e.playlist[a].progress,ss=(a="audio")=>e=>e.playlist[a].currentTime,as=(a="audio")=>e=>e.playlist[a].playbackRate,os=(a="audio")=>e=>e.playlist[a].volume,ns=(a="audio")=>ts(is(a),e=>Object.values(e)),cs=(a="audio")=>ts(is(a),tr(a),(e,t)=>{if(t.id)return e[t.id]}),ds={selection:tr("audio"),progress:rs("audio"),currentTime:ss("audio"),playbackRate:as("audio"),volume:os("audio"),list:ns("audio"),selectedItem:cs("audio")},ls={selection:tr("video"),progress:rs("video"),currentTime:ss("video"),playbackRate:as("video"),volume:os("video"),list:ns("video"),selectedItem:cs("video")};import{createSelector as I}from"reselect";function A(a){return e=>t=>a(t,e)}var us=(l=>(l[l.VERBOSE=0]="VERBOSE",l[l.DEBUG=1]="DEBUG",l[l.INFO=2]="INFO",l[l.WARN=3]="WARN",l[l.TIME=4]="TIME",l[l.TIMEEND=5]="TIMEEND",l[l.ERROR=6]="ERROR",l[l.NONE=7]="NONE",l))(us||{}),Da=typeof window!="undefined"&&typeof window.expect!="undefined",d=class{static v(e,...t){this.log(0,e,...t)}static d(e,...t){this.log(1,e,...t)}static i(e,...t){this.log(2,e,...t)}static w(e,...t){this.log(3,e,...t)}static e(e,...t){this.log(6,e,...t)}static time(e){this.log(4,"[HMSPerformanceTiming]",e)}static timeEnd(e){this.log(5,"[HMSPerformanceTiming]",e,e)}static cleanup(){performance.clearMarks(),performance.clearMeasures()}static log(e,t,...i){if(!(this.level.valueOf()>e.valueOf()))switch(e){case 0:{console.log(t,...i);break}case 1:{console.debug(t,...i);break}case 2:{console.info(t,...i);break}case 3:{console.warn(t,...i);break}case 6:{console.error(t,...i);break}case 4:{performance.mark(i[0]);break}case 5:{let r=i[0];try{let s=performance.measure(r,r);this.log(1,t,r,s==null?void 0:s.duration),performance.clearMarks(r),performance.clearMeasures(r)}catch(s){this.log(1,t,r,s)}break}}}};d.level=Da?7:0;var xe=class{constructor(e){this.tracks=new Array;this.nativeStream=e,this.id=e.id}updateId(e){this.id=e}};import{UAParser as _a}from"ua-parser-js";var pe=new _a,N=typeof window!="undefined",ps,Ie=typeof window=="undefined"&&!((ps=pe.getBrowser().name)!=null&&ps.toLowerCase().includes("electron"));var Na=()=>!Ie,dc=Na(),Gt=()=>pe.getDevice().type==="mobile",Ss=()=>typeof document!="undefined"&&document.hidden,ir=()=>{var a;return((a=pe.getOS().name)==null?void 0:a.toLowerCase())==="ios"},hs,ms,gs=((ms=(hs=pe.getBrowser())==null?void 0:hs.name)==null?void 0:ms.toLowerCase())==="firefox";var $t=a=>a?`{
1
+ var ga=Object.defineProperty,Ta=Object.defineProperties;var fa=Object.getOwnPropertyDescriptors;var Ot=Object.getOwnPropertySymbols,va=Object.getPrototypeOf,Fr=Object.prototype.hasOwnProperty,Gr=Object.prototype.propertyIsEnumerable,Ma=Reflect.get;var Br=(a,e,t)=>e in a?ga(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,m=(a,e)=>{for(var t in e||(e={}))Fr.call(e,t)&&Br(a,t,e[t]);if(Ot)for(var t of Ot(e))Gr.call(e,t)&&Br(a,t,e[t]);return a},k=(a,e)=>Ta(a,fa(e));var Qi=(a,e)=>{var t={};for(var i in a)Fr.call(a,i)&&e.indexOf(i)<0&&(t[i]=a[i]);if(a!=null&&Ot)for(var i of Ot(a))e.indexOf(i)<0&&Gr.call(a,i)&&(t[i]=a[i]);return t};var ya=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports);var W=(a,e,t)=>Ma(va(a),t,e);var c=(a,e,t)=>new Promise((i,r)=>{var s=l=>{try{n(t.next(l))}catch(u){r(u)}},o=l=>{try{n(t.throw(l))}catch(u){r(u)}},n=l=>l.done?i(l.value):Promise.resolve(l.value).then(s,o);n((t=t.apply(a,e)).next())});var nr=ya((jc,Va)=>{Va.exports={version:"0.11.2-alpha.5",license:"MIT",repository:{type:"git",url:"https://github.com/100mslive/web-sdks.git",directory:"packages/hms-video-store"},main:"dist/index.cjs.js",module:"dist/index.js",typings:"dist/index.d.ts",files:["dist","src"],engines:{node:">=12"},exports:{".":{require:"./dist/index.cjs.js",import:"./dist/index.js",default:"./dist/index.js"}},sideEffects:!1,scripts:{prestart:"rm -rf dist && yarn types:build",start:'concurrently "yarn dev" "yarn types"',dev:"node ../../scripts/dev","build:only":"node ../../scripts/build",build:"yarn build:only && yarn types:build",types:"tsc -w","types:build":"tsc -p tsconfig.json",format:"prettier --write src/**/*.ts",test:"jest --maxWorkers=1","test:watch":"jest --watch","test:coverage":"jest --coverage",lint:"eslint -c ../../.eslintrc .","lint:fix":"yarn lint --fix",prepare:"yarn build",size:"size-limit",analyze:"size-limit --why",docs:"rm -rf ./docs && typedoc && rm -f ./docs/README.md && mkdir ./docs/home &&mv ./docs/modules.md ./docs/home/content.md && node ../../scripts/docs-store && npx prettier --write './docs/**/*'"},name:"@100mslive/hms-video-store",author:"100ms",dependencies:{eventemitter2:"^6.4.9",immer:"^9.0.6",reselect:"4.0.0","sdp-transform":"^2.14.1","ua-parser-js":"^1.0.1",uuid:"^8.3.2","webrtc-adapter":"^8.0.0",zustand:"3.5.7"},devDependencies:{"@types/dom-screen-wake-lock":"^1.0.1","@types/sdp-transform":"^2.4.4","@types/ua-parser-js":"^0.7.36","@types/uuid":"^8.3.0","jest-canvas-mock":"^2.3.1","jsdom-worker":"^0.3.0",tslib:"^2.2.0"},description:"@100mslive Core SDK which abstracts the complexities of webRTC while providing a reactive store for data management with a unidirectional data flow",keywords:["video","webrtc","conferencing","100ms"],gitHead:"f92ee12444119121ba670c4127c808a992a8b2c1"}});var zi=(n=>(n.Disconnected="Disconnected",n.Preview="Preview",n.Connecting="Connecting",n.Connected="Connected",n.Reconnecting="Reconnecting",n.Disconnecting="Disconnecting",n.Failed="Failed",n))(zi||{});var xt=()=>({room:{id:"",isConnected:!1,name:"",peers:[],localPeer:"",roomState:"Disconnected",recording:{browser:{running:!1},server:{running:!1},hls:{running:!1}},rtmp:{running:!1},hls:{running:!1,variants:[]},sessionId:""},peers:{},tracks:{},playlist:{audio:{list:{},selection:{id:"",hasPrevious:!1,hasNext:!1},progress:0,volume:0,currentTime:0,playbackRate:1},video:{list:{},selection:{id:"",hasPrevious:!1,hasNext:!1},progress:0,volume:0,currentTime:0,playbackRate:1}},messages:{byID:{},allIDs:[]},speakers:{},connectionQualities:{},settings:{audioInputDeviceId:"",audioOutputDeviceId:"",videoInputDeviceId:""},devices:{audioInput:[],audioOutput:[],videoInput:[]},roles:{},roleChangeRequests:[],errors:[],sessionStore:{},templateAppData:{},polls:{},whiteboards:{},hideLocalPeer:!1}),Ut=()=>({peerStats:{},remoteTrackStats:{},localTrackStats:{},localPeer:{id:""}});var ka=(e=>(e.CHAT="chat",e))(ka||{});var $r=(t=>(t.INFO="info",t.ERROR="error",t))($r||{}),Yi=(C=>(C.PEER_JOINED="PEER_JOINED",C.PEER_LEFT="PEER_LEFT",C.PEER_LIST="PEER_LIST",C.NEW_MESSAGE="NEW_MESSAGE",C.ERROR="ERROR",C.RECONNECTING="RECONNECTING",C.RECONNECTED="RECONNECTED",C.TRACK_ADDED="TRACK_ADDED",C.TRACK_REMOVED="TRACK_REMOVED",C.TRACK_MUTED="TRACK_MUTED",C.TRACK_UNMUTED="TRACK_UNMUTED",C.TRACK_DEGRADED="TRACK_DEGRADED",C.TRACK_RESTORED="TRACK_RESTORED",C.TRACK_DESCRIPTION_CHANGED="TRACK_DESCRIPTION_CHANGED",C.ROLE_UPDATED="ROLE_UPDATED",C.CHANGE_TRACK_STATE_REQUEST="CHANGE_TRACK_STATE_REQUEST",C.CHANGE_MULTI_TRACK_STATE_REQUEST="CHANGE_MULTI_TRACK_STATE_REQUEST",C.ROOM_ENDED="ROOM_ENDED",C.REMOVED_FROM_ROOM="REMOVED_FROM_ROOM",C.DEVICE_CHANGE_UPDATE="DEVICE_CHANGE_UPDATE",C.PLAYLIST_TRACK_ENDED="PLAYLIST_TRACK_ENDED",C.NAME_UPDATED="NAME_UPDATED",C.METADATA_UPDATED="METADATA_UPDATED",C.POLL_CREATED="POLL_CREATED",C.POLL_STARTED="POLL_STARTED",C.POLL_STOPPED="POLL_STOPPED",C.POLL_VOTES_UPDATED="POLL_VOTES_UPDATED",C.HAND_RAISE_CHANGED="HAND_RAISE_CHANGED",C))(Yi||{});var Wr=(t=>(t.audio="audio",t.video="video",t))(Wr||{});import{createSelector as P}from"reselect";function He(a,e){let t,i;if(e)for(let r of e.auxiliaryTracks){let s=a[r];Pa(s)&&(i=Ze(s)?s:i,t=et(s)?s:t)}return{video:t,audio:i}}function Ze(a){return a&&a.type==="audio"}function et(a){return a&&a.type==="video"}function Pa(a){return a&&a.source==="screen"}function Vt(a){return a&&a.source==="audioplaylist"}function tt(a){return a&&a.source==="videoplaylist"}function Kr(a){return a?!!(a!=null&&a.degraded):!1}function Oe(a,e){return e&&a.tracks[e]?a.tracks[e].enabled:!1}function qr(a,e){return e&&a.tracks[e]?a.tracks[e].displayEnabled:!1}function it(a){var r;let e=!1,t=!1,i=!1;return(r=a==null?void 0:a.publishParams)!=null&&r.allowed&&(e=a.publishParams.allowed.includes("video"),t=a.publishParams.allowed.includes("audio"),i=a.publishParams.allowed.includes("screen")),{video:e,audio:t,screen:i}}var U=a=>a.room,Ea=a=>a.errors,yn=P(Ea,a=>a.length===0?null:a.at(-1)),kn=P(U,a=>a.id),G=a=>a.peers,Bt=a=>a.messages.byID,jr=a=>a.messages.allIDs,w=a=>a.tracks,Jr=a=>a.settings,Xi=a=>a.appData,Pn=a=>a.devices,Aa=a=>a.speakers,En=a=>a.connectionQualities,ye=P([U],a=>a&&a.isConnected),An=P([ye,U],(a,e)=>a?e.peerCount!==void 0?e.peerCount||1:e.peers.length:Math.max(e.peerCount!==void 0?e.peerCount:e.peers.length-1,0)),ba=a=>a.hideLocalPeer,ae=P([U,G,ba],(a,e,t)=>t?a.peers.filter(i=>a.localPeer!==i).map(i=>e[i]):a.peers.map(i=>e[i])),Ra=P(w,a=>Object.values(a)),Q=P(U,G,(a,e)=>e[a.localPeer]),ue=P(U,a=>a.localPeer),bn=P(Q,a=>a==null?void 0:a.name),Rn=P(Q,a=>a==null?void 0:a.roleName),Z=P(Q,a=>a==null?void 0:a.audioTrack),K=P(Q,a=>a==null?void 0:a.videoTrack),Ha=P(Q,a=>a==null?void 0:a.auxiliaryTracks),Qr=P([Z,K,Ha],(a,e,t)=>{let i=t?[...t]:[];return a&&i.unshift(a),e&&i.unshift(e),i}),Hn=P(ae,a=>a.filter(e=>!e.isLocal)),In=P(G,Aa,(a,e)=>{let t=Object.entries(e).sort((i,r)=>{var n,l;let s=((n=i[1])==null?void 0:n.audioLevel)||0;return(((l=r[1])==null?void 0:l.audioLevel)||0)>s?1:-1});if(t.length>0&&t[0][1].audioLevel&&t[0][1].audioLevel>0){let i=t[0][1].peerID;if(i in a)return a[i]}return null}),Cn=a=>{let e=Q(a);return Oe(a,e==null?void 0:e.audioTrack)},Zi=a=>{let e=Q(a);return Oe(a,e==null?void 0:e.videoTrack)},zr=a=>{let e=Q(a);return qr(a,e==null?void 0:e.videoTrack)},er=P(Q,w,(a,e)=>{let{video:t,audio:i}=He(e,a);return!!(t||i)}),Ia=P(G,w,(a,e)=>{let t;for(let i in a){let r=a[i],{video:s,audio:o}=He(e,r);if(s)return r;o&&!t&&(t=r)}return t}),Ln=P(Ia,a=>!!a),wn=P(G,w,(a,e)=>{for(let t in a){let i=a[t],{audio:r,video:s}=He(e,i);if(!s&&r)return i}}),Dn=P(G,w,(a,e)=>{let t=[],i=[];for(let r in a){let s=a[r],{video:o,audio:n}=He(e,s);o?t.push(s):n&&i.push(s)}return t.concat(i)}),_n=P(G,w,(a,e)=>{for(let t in e){let i=e[t];if(tt(i)&&et(i)&&i.peerId)return a[i.peerId]}}),Nn=P(G,w,(a,e)=>{for(let t in e){let i=e[t];if(Vt(i)&&i.peerId)return a[i.peerId]}}),On=P(Ra,a=>a.filter(Kr)),xn=P(jr,a=>a.length),Un=P(Bt,a=>Object.values(a).filter(e=>!e.read).length),rt=P(jr,Bt,(a,e)=>{let t=[];return a.forEach(i=>{t.push(e[i])}),t}),Ca=P(rt,a=>a.filter(e=>{var t;return!e.recipientPeer&&!(e.recipientRoles&&((t=e.recipientRoles)==null?void 0:t.length)>0)})),Vn=P(Ca,a=>a.filter(e=>!e.read).length),z=P([U],a=>a&&a.roomState),Yr=P(z,a=>a==="Preview"),Bn=P(U,a=>a.roomState!=="Disconnected"),oe=a=>a.roles,Fn=P([oe],a=>Object.keys(a)),Ft=P([Q,oe],(a,e)=>a!=null&&a.roleName?e[a.roleName]:null),La=a=>{var e;return(e=a.preview)==null?void 0:e.asRole},Xr=P([La,oe],(a,e)=>a?e[a]:null),Gn=P([Ft],a=>{var e;return(e=a==null?void 0:a.subscribeParams)!=null&&e.subscribeToRoles?a.subscribeParams.subscribeToRoles.length>0:!1}),Zr=P(Ft,a=>a==null?void 0:a.permissions),$n=P(U,a=>a.recording),Wn=P(U,a=>a.rtmp),Kn=P(U,a=>a.hls),qn=P(U,a=>a.sessionId),jn=P(U,a=>a.startedAt),Jn=P(U,a=>!!a.isLargeRoom),Qn=P(U,a=>!!a.isEffectsEnabled),zn=P(U,a=>a.effectsKey),Yn=a=>a.templateAppData,Xn=a=>a.sessionMetadata,es=a=>a.polls,Zn=a=>Object.values(a.polls),ec=P(ae,a=>a.filter(e=>e.isHandRaised)),wa=a=>a.whiteboards,tc=P(wa,a=>Object.values(a)[0]);import{createSelector as ts}from"reselect";var is=(a="audio")=>e=>e.playlist[a].list,tr=(a="audio")=>e=>e.playlist[a].selection,rs=(a="audio")=>e=>e.playlist[a].progress,ss=(a="audio")=>e=>e.playlist[a].currentTime,as=(a="audio")=>e=>e.playlist[a].playbackRate,os=(a="audio")=>e=>e.playlist[a].volume,ns=(a="audio")=>ts(is(a),e=>Object.values(e)),cs=(a="audio")=>ts(is(a),tr(a),(e,t)=>{if(t.id)return e[t.id]}),ds={selection:tr("audio"),progress:rs("audio"),currentTime:ss("audio"),playbackRate:as("audio"),volume:os("audio"),list:ns("audio"),selectedItem:cs("audio")},ls={selection:tr("video"),progress:rs("video"),currentTime:ss("video"),playbackRate:as("video"),volume:os("video"),list:ns("video"),selectedItem:cs("video")};import{createSelector as I}from"reselect";function A(a){return e=>t=>a(t,e)}var us=(l=>(l[l.VERBOSE=0]="VERBOSE",l[l.DEBUG=1]="DEBUG",l[l.INFO=2]="INFO",l[l.WARN=3]="WARN",l[l.TIME=4]="TIME",l[l.TIMEEND=5]="TIMEEND",l[l.ERROR=6]="ERROR",l[l.NONE=7]="NONE",l))(us||{}),Da=typeof window!="undefined"&&typeof window.expect!="undefined",d=class{static v(e,...t){this.log(0,e,...t)}static d(e,...t){this.log(1,e,...t)}static i(e,...t){this.log(2,e,...t)}static w(e,...t){this.log(3,e,...t)}static e(e,...t){this.log(6,e,...t)}static time(e){this.log(4,"[HMSPerformanceTiming]",e)}static timeEnd(e){this.log(5,"[HMSPerformanceTiming]",e,e)}static cleanup(){performance.clearMarks(),performance.clearMeasures()}static log(e,t,...i){if(!(this.level.valueOf()>e.valueOf()))switch(e){case 0:{console.log(t,...i);break}case 1:{console.debug(t,...i);break}case 2:{console.info(t,...i);break}case 3:{console.warn(t,...i);break}case 6:{console.error(t,...i);break}case 4:{performance.mark(i[0]);break}case 5:{let r=i[0];try{let s=performance.measure(r,r);this.log(1,t,r,s==null?void 0:s.duration),performance.clearMarks(r),performance.clearMeasures(r)}catch(s){this.log(1,t,r,s)}break}}}};d.level=Da?7:0;var xe=class{constructor(e){this.tracks=new Array;this.nativeStream=e,this.id=e.id}updateId(e){this.id=e}};import{UAParser as _a}from"ua-parser-js";var pe=new _a,N=typeof window!="undefined",ps,Ie=typeof window=="undefined"&&!((ps=pe.getBrowser().name)!=null&&ps.toLowerCase().includes("electron"));var Na=()=>!Ie,dc=Na(),Gt=()=>pe.getDevice().type==="mobile",Ss=()=>typeof document!="undefined"&&document.hidden,ir=()=>{var a;return((a=pe.getOS().name)==null?void 0:a.toLowerCase())==="ios"},hs,ms,gs=((ms=(hs=pe.getBrowser())==null?void 0:hs.name)==null?void 0:ms.toLowerCase())==="firefox";var $t=a=>a?`{
2
2
  trackId: ${a.id};
3
3
  kind: ${a.kind};
4
4
  enabled: ${a.enabled};
@@ -35,7 +35,7 @@ var ga=Object.defineProperty,Ta=Object.defineProperties;var fa=Object.getOwnProp
35
35
  break;
36
36
  }
37
37
  };
38
- })()`;function Y(a){if(a<0)throw Error("`ms` should be a positive integer");return new Promise(e=>{setTimeout(e,a)})}function de(a){if(a<0)throw Error("`ms` should be a positive integer");if(typeof Worker=="undefined")return Y(a);let e=new Worker(URL.createObjectURL(new Blob([qa],{type:"application/javascript"})));return e.postMessage(["start",a]),new Promise(t=>{e.onmessage=i=>{i.data==="tick"&&(t(),e.terminate())}})}function Kt(a,e=300){let t;return function(...i){clearTimeout(t),t=void 0;let r=this;t=setTimeout(()=>{a.apply(r,i)},e)}}var ja=35,Ja=5,qt=class{constructor(e,t,i){this.track=e;this.audioLevelEvent=t;this.silenceEvent=i;this.TAG="[TrackAudioLevelMonitor]";this.audioLevel=0;this.isMonitored=!1;this.interval=100;this.historyInterval=700;this.history=new Ae(this.historyInterval/this.interval);this.detectSilence=()=>c(this,null,function*(){let i=0;for(;this.isMonitored;){if(this.track.enabled)if(this.isSilentThisInstant()){if(i++,i>50){this.silenceEvent.publish({track:this.track});break}}else break;yield Y(20)}});try{let r=new MediaStream([this.track.nativeTrack]);this.analyserNode=this.createAnalyserNodeForStream(r)}catch(r){d.w(this.TAG,"Unable to initialize AudioContext",r)}}start(){this.stop(),this.isMonitored=!0,d.d(this.TAG,"Starting track Monitor",`${this.track}`),this.loop().then(()=>d.d(this.TAG,"Stopping track Monitor",`${this.track}`))}stop(){if(!this.analyserNode){d.d(this.TAG,"AudioContext not initialized");return}this.sendAudioLevel(0),this.isMonitored=!1}loop(){return c(this,null,function*(){for(;this.isMonitored;)this.sendAudioLevel(this.getMaxAudioLevelOverPeriod()),yield Y(this.interval)})}sendAudioLevel(e=0){if(e=e>ja?e:0,Math.abs(this.audioLevel-e)>Ja){this.audioLevel=e;let i={track:this.track,audioLevel:this.audioLevel};this.audioLevelEvent.publish(i)}}getMaxAudioLevelOverPeriod(){if(!this.analyserNode){d.d(this.TAG,"AudioContext not initialized");return}let e=this.calculateAudioLevel();return e!==void 0&&this.history.enqueue(e),this.history.aggregate(t=>Math.max(...t))}calculateAudioLevel(){if(!this.analyserNode){d.d(this.TAG,"AudioContext not initialized");return}let e=new Uint8Array(this.analyserNode.fftSize);this.analyserNode.getByteTimeDomainData(e);let t=.009,i=t;for(let o of e)i=Math.max(i,(o-128)/128);let r=(Math.log(t)-Math.log(i))/Math.log(t);return Math.ceil(Math.min(Math.max(r*100,0),100))}isSilentThisInstant(){if(!this.analyserNode){d.d(this.TAG,"AudioContext not initialized");return}let e=new Uint8Array(this.analyserNode.fftSize);return this.analyserNode.getByteTimeDomainData(e),!e.some(t=>t!==128&&t!==0)}createAnalyserNodeForStream(e){let t=Ee.getAudioContext(),i=t.createAnalyser();return t.createMediaStreamSource(e).connect(i),i}};var As=(n=>(n.NONE="none",n.INITIALISED="initialised",n.STARTED="started",n.PAUSED="paused",n.RESUMED="resumed",n.STOPPED="stopped",n.FAILED="failed",n))(As||{});var Ce={f:"high",h:"medium",q:"low"};var bs=(i=>(i.videoInput="videoInput",i.audioInput="audioInput",i.audioOutput="audioOutput",i))(bs||{});var re=class{constructor(){this._volume=1;this._codec="opus";this._maxBitrate=32;this._deviceId="default";this._advanced=[{googEchoCancellation:{exact:!0}},{googExperimentalEchoCancellation:{exact:!0}},{autoGainControl:{exact:!0}},{noiseSuppression:{exact:!0}},{googHighpassFilter:{exact:!0}},{googAudioMirroring:{exact:!0}}]}volume(e){if(!(0<=e&&e<=1))throw Error("volume can only be in range [0.0, 1.0]");return this._volume=e,this}codec(e){return this._codec=e,this}maxBitrate(e){if(e&&e<=0)throw Error("maxBitrate should be >= 1");return this._maxBitrate=e,this}deviceId(e){return this._deviceId=e,this}advanced(e){return this._advanced=e,this}build(){return new Le(this._volume,this._codec,this._maxBitrate,this._deviceId,this._advanced)}},Le=class{constructor(e,t,i,r,s){this.volume=e,this.codec=t,this.maxBitrate=i,this.deviceId=r,this.advanced=s}toConstraints(){return{deviceId:this.deviceId,advanced:this.advanced}}toAnalyticsProperties(){return{audio_bitrate:this.maxBitrate,audio_codec:this.codec}}};var ee=class{constructor(){this._width=320;this._height=180;this._codec="vp8";this._maxFramerate=30;this._maxBitrate=150;this._advanced=[]}setWidth(e){return this._width=e,this}setHeight(e){return this._height=e,this}codec(e){return this._codec=e,this}maxFramerate(e){if(e&&e<=0)throw Error("maxFramerate should be >= 1");return this._maxFramerate=e,this}maxBitrate(e,t=!0){if(typeof e=="number"&&e<=0)throw Error("maxBitrate should be >= 1");return this._maxBitrate=e,!this._maxBitrate&&t&&(this._maxBitrate=15e4),this}deviceId(e){return this._deviceId=e,this}advanced(e){return this._advanced=e,this}facingMode(e){return this._facingMode=e,this}build(){return new we(this._width,this._height,this._codec,this._maxFramerate,this._deviceId,this._advanced,this._maxBitrate,this._facingMode)}},we=class{constructor(e,t,i,r,s,o,n,l){this.width=e,this.height=t,this.codec=i,this.maxFramerate=r,this.maxBitrate=n,this.deviceId=s,this.advanced=o,this.facingMode=l}toConstraints(e){let t="ideal";e&&(t="max");let i=this.improviseConstraintsAspect();return{width:{[t]:i.width},height:{[t]:i.height},frameRate:this.maxFramerate,deviceId:this.deviceId,facingMode:this.facingMode}}toAnalyticsProperties(){return{width:this.width,height:this.height,video_bitrate:this.maxBitrate,framerate:this.maxFramerate,video_codec:this.codec,facingMode:this.facingMode}}improviseConstraintsAspect(){return Gt()&&this.height&&this.width&&this.height>this.width?{width:this.height,height:this.width}:{width:this.width,height:this.height}}};var ot=class{constructor(){this._video=new ee().build();this._audio=new re().build();this._screen=new ee().build();this._simulcast=!1}video(e){return this._video=e,this}audio(e){return this._audio=e,this}screen(e){return this._screen=e,this}simulcast(e){return this._simulcast=e,this}build(){if(this._audio===null&&this._video===null)throw h.TracksErrors.NothingToReturn("TRACK");if(this._video===null&&this._simulcast)throw h.TracksErrors.InvalidVideoSettings("TRACK","Cannot enable simulcast when no video settings are provided");return new Be(this._video,this._audio,this._simulcast,this._screen||void 0)}},Be=class{constructor(e,t,i,r=null){this.video=e,this.audio=t,this.simulcast=i,this.screen=r}toAnalyticsProperties(){let e={audio_enabled:this.audio!==null,video_enabled:this.video!==null};return this.audio&&(e=m(m({},this.audio.toAnalyticsProperties()),e)),this.video&&(e=m(m({},this.video.toAnalyticsProperties()),e)),e}};function Hs(a,e){return function(i){return i in a&&a[i]!==e[i]}}var se=class a extends Pe{constructor(t,i,r,s,o=new re().build()){super(t,i,r);this.eventBus=s;this.TAG="[HMSLocalAudioTrack]";this.isPublished=!1;this.handleVisibilityChange=()=>c(this,null,function*(){document.visibilityState==="visible"&&(yield this.replaceTrackWith(this.settings))});this.replaceSenderTrack=()=>c(this,null,function*(){if(!this.transceiver||this.transceiver.direction!=="sendonly"){d.d(this.TAG,`transceiver for ${this.trackId} not available or not connected yet`);return}yield this.transceiver.sender.replaceTrack(this.processedTrack||this.nativeTrack)});this.handleSettingsChange=t=>c(this,null,function*(){let i=this.stream,r=Hs(t,this.settings);r("maxBitrate")&&t.maxBitrate&&(yield i.setMaxBitrateAndFramerate(this)),r("advanced")&&(yield this.replaceTrackWith(t))});this.handleDeviceChange=(t,i=!1)=>c(this,null,function*(){Hs(t,this.settings)("deviceId")&&(this.manuallySelectedDeviceId=i?this.manuallySelectedDeviceId:t.deviceId,yield this.replaceTrackWith(t),i||q.updateSelection("audioInput",{deviceId:t.deviceId,groupId:this.nativeTrack.getSettings().groupId}))});t.tracks.push(this),this.settings=o,o.deviceId!==i.getSettings().deviceId&&!ce(i)&&(this.settings=this.buildNewSettings({deviceId:i.getSettings().deviceId})),this.pluginsManager=new at(this,s),this.setFirstTrackId(i.id),ir()&&N&&document.addEventListener("visibilitychange",this.handleVisibilityChange)}getManuallySelectedDeviceId(){return this.manuallySelectedDeviceId}resetManuallySelectedDeviceId(){this.manuallySelectedDeviceId=void 0}replaceTrackWith(t){return c(this,null,function*(){let i=this.nativeTrack;i==null||i.stop();let r=!!this.audioLevelMonitor;try{let s=yield Ps(t);s.enabled=this.enabled,d.d(this.TAG,"replaceTrack, Previous track stopped",i,"newTrack",s),yield this.stream.replaceStreamTrack(i,s),this.nativeTrack=s,yield this.replaceSenderTrack(),r&&this.initAudioLevelMonitor()}catch(s){throw this.isPublished&&this.eventBus.analytics.publish(M.publish({error:s})),s}try{yield this.pluginsManager.reprocessPlugins()}catch(s){this.eventBus.audioPluginFailed.publish(s)}})}setEnabled(t){return c(this,null,function*(){t!==this.enabled&&(t&&ce(this.nativeTrack)&&(yield this.replaceTrackWith(this.settings)),yield W(a.prototype,this,"setEnabled").call(this,t),t&&(this.settings=this.buildNewSettings({deviceId:this.nativeTrack.getSettings().deviceId})),this.eventBus.localAudioEnabled.publish({enabled:t,track:this}))})}isPublishedTrackId(t){return this.publishedTrackId===t}setSettings(t,i=!1){return c(this,null,function*(){let r=this.buildNewSettings(t);if(ce(this.nativeTrack)){this.settings=r;return}yield this.handleDeviceChange(r,i),yield this.handleSettingsChange(r),this.settings=r})}getPlugins(){return this.pluginsManager.getPlugins()}addPlugin(t){return c(this,null,function*(){return this.pluginsManager.addPlugin(t)})}removePlugin(t){return c(this,null,function*(){return this.pluginsManager.removePlugin(t)})}validatePlugin(t){return this.pluginsManager.validatePlugin(t)}setProcessedTrack(t){return c(this,null,function*(){t?t!==this.processedTrack&&(this.processedTrack=t):this.processedTrack=void 0,yield this.replaceSenderTrack()})}initAudioLevelMonitor(){this.audioLevelMonitor&&this.destroyAudioLevelMonitor(),d.d(this.TAG,"Monitor Audio Level for",this,this.getMediaTrackSettings().deviceId),this.audioLevelMonitor=new qt(this,this.eventBus.trackAudioLevelUpdate,this.eventBus.localAudioSilence),this.audioLevelMonitor.start(),this.audioLevelMonitor.detectSilence()}destroyAudioLevelMonitor(){var t;(t=this.audioLevelMonitor)==null||t.stop(),this.audioLevelMonitor=void 0}cleanup(){return c(this,null,function*(){var t;W(a.prototype,this,"cleanup").call(this),yield this.pluginsManager.cleanup(),yield this.pluginsManager.closeContext(),this.transceiver=void 0,(t=this.processedTrack)==null||t.stop(),this.isPublished=!1,this.destroyAudioLevelMonitor(),ir()&&N&&document.removeEventListener("visibilitychange",this.handleVisibilityChange)})}getTrackIDBeingSent(){return this.processedTrack?this.processedTrack.id:this.nativeTrack.id}getTrackBeingSent(){return this.processedTrack||this.nativeTrack}buildNewSettings(t){let{volume:i,codec:r,maxBitrate:s,deviceId:o,advanced:n}=m(m({},this.settings),t);return new Le(i,r,s,o,n)}};var te=class a extends Pe{setEnabled(e){return c(this,null,function*(){e!==this.enabled&&(yield W(a.prototype,this,"setEnabled").call(this,e),yield this.subscribeToAudio(e))})}};var Fe=class extends ke{constructor(t,i,r){super(t,i,r);this.type="video";this.sinkCount=0;if(i.kind!=="video")throw new Error("Expected 'track' kind = 'video'")}setVideoHandler(t){this.videoHandler=t}hasSinks(){return this.sinkCount>0}getSinks(){return this.videoHandler.getVideoElements()||[]}attach(t){this.videoHandler.addVideoElement(t)}detach(t){this.videoHandler.removeVideoElement(t)}addSink(t){this.addSinkInternal(t,this.nativeTrack)}removeSink(t){t.srcObject!==null&&(t.srcObject=null,this.reduceSinkCount())}cleanup(){super.cleanup(),this.videoHandler.cleanup()}addSinkInternal(t,i){let r=t.srcObject;if(r!==null&&r instanceof MediaStream){let s=r.getVideoTracks()[0];if((s==null?void 0:s.id)===i.id){if(!s.muted&&s.readyState==="live")return;this.reduceSinkCount()}else this.reduceSinkCount()}t.srcObject=new MediaStream([i]),this.sinkCount++}reduceSinkCount(){this.sinkCount>0&&this.sinkCount--}};import{v4 as za}from"uuid";var nt={none:-1,low:0,medium:1,high:2},Qa=.5,Is=(a,e)=>{let t="high",i=e.width>e.height?"width":"height",r=[...a].sort((o,n)=>nt[o.layer]-nt[n.layer]),s=e[i]*((window==null?void 0:window.devicePixelRatio)||1);for(let o=0;o<r.length;o++){let{resolution:n,layer:l}=r[o],u=n[i];if(s<=u){t=l;break}else{let p=r[o+1],S=p?p.resolution[i]:Number.POSITIVE_INFINITY;if((s-u)/(S-u)<Qa){t=l;break}}}return t};var pr=class{constructor(){this.TAG="[HMSIntersectionObserverWrapper]";this.listeners=new WeakMap;this.observe=(e,t)=>{var i;this.createObserver(),this.unobserve(e),(i=this.intersectionObserver)==null||i.observe(e),this.listeners.set(e,t)};this.unobserve=e=>{var t;(t=this.intersectionObserver)==null||t.unobserve(e),this.listeners.delete(e)};this.createObserver=()=>{this.isSupported()&&!this.intersectionObserver&&(this.intersectionObserver=new IntersectionObserver(this.handleIntersection))};this.handleIntersection=e=>{var t;for(let i of e)(t=this.listeners.get(i.target))==null||t(i)};this.createObserver()}isSupported(){let e=N&&typeof window.IntersectionObserver!="undefined";return e||d.w(this.TAG,"IntersectionObserver is not supported, fallback will be used instead"),e}},Cs=new pr;var hr=class{constructor(){this.TAG="[HMSResizeObserverWrapper]";this.listeners=new WeakMap;this.observe=(e,t,i={box:"border-box"})=>{var r;this.createObserver(),this.unobserve(e),(r=this.resizeObserver)==null||r.observe(e,i),this.listeners.set(e,t)};this.unobserve=e=>{var t;(t=this.resizeObserver)==null||t.unobserve(e),this.listeners.delete(e)};this.createObserver=()=>{this.isSupported()&&!this.resizeObserver&&(this.resizeObserver=new ResizeObserver(Kt(this.handleResize,300)))};this.handleResize=e=>{var t;for(let i of e)(t=this.listeners.get(i.target))==null||t(i)};this.createObserver()}isSupported(){let e=N&&typeof window.ResizeObserver!="undefined";return e||d.w(this.TAG,"Resize Observer is not supported"),e}},Ls=new hr;var Ge=class{constructor(e){this.track=e;this.TAG="[VideoElementManager]";this.videoElements=new Set;this.entries=new WeakMap;this.handleIntersection=e=>c(this,null,function*(){let t=getComputedStyle(e.target).visibility==="visible";this.track.enabled&&(e.isIntersecting&&t||!document.contains(e.target))?(d.d(this.TAG,"add sink intersection",`${this.track}`,this.id),this.entries.set(e.target,e.boundingClientRect),yield this.selectMaxLayer(),yield this.track.addSink(e.target)):(d.d(this.TAG,"remove sink intersection",`${this.track}`,this.id),yield this.track.removeSink(e.target))});this.handleResize=e=>c(this,null,function*(){!this.track.enabled||!(this.track instanceof _)||(this.entries.set(e.target,e.contentRect),yield this.selectMaxLayer())});this.cleanup=()=>{this.videoElements.forEach(e=>{var t,i;e.srcObject=null,(t=this.resizeObserver)==null||t.unobserve(e),(i=this.intersectionObserver)==null||i.unobserve(e)}),this.videoElements.clear(),this.resizeObserver=void 0,this.intersectionObserver=void 0};this.init(),this.id=za()}updateSinks(e=!1){for(let t of this.videoElements)this.track.enabled?this.track.addSink(t,e):this.track.removeSink(t,e)}addVideoElement(e){return c(this,null,function*(){var t;this.videoElements.has(e)||(this.init(),d.d(this.TAG,`Adding video element for ${this.track}`,this.id),this.videoElements.add(e),this.videoElements.size>=10&&d.w(this.TAG,`${this.track}`,`the track is added to ${this.videoElements.size} video elements, while this may be intentional, it's likely that there is a bug leading to unnecessary creation of video elements in the UI`),(t=this.intersectionObserver)!=null&&t.isSupported()?this.intersectionObserver.observe(e,this.handleIntersection):N&&(this.isElementInViewport(e)?this.track.addSink(e):this.track.removeSink(e)),this.resizeObserver?this.resizeObserver.observe(e,this.handleResize):this.track instanceof _&&(yield this.track.setPreferredLayer(this.track.getPreferredLayer())))})}removeVideoElement(e){var t,i;this.track.removeSink(e),this.videoElements.delete(e),this.entries.delete(e),(t=this.resizeObserver)==null||t.unobserve(e),(i=this.intersectionObserver)==null||i.unobserve(e),d.d(this.TAG,`Removing video element for ${this.track}`)}getVideoElements(){return Array.from(this.videoElements)}init(){N&&(this.resizeObserver=Ls,this.intersectionObserver=Cs)}isElementInViewport(e){let t=e.offsetTop,i=e.offsetLeft,r=e.offsetWidth,s=e.offsetHeight,{hidden:o}=e,{opacity:n,display:l}=getComputedStyle(e);for(;e.offsetParent;)e=e.offsetParent,t+=e.offsetTop,i+=e.offsetLeft;return t<window.pageYOffset+window.innerHeight&&i<window.pageXOffset+window.innerWidth&&t+s>window.pageYOffset&&i+r>window.pageXOffset&&!o&&(n!==""?parseFloat(n)>0:!0)&&l!=="none"}selectMaxLayer(){return c(this,null,function*(){if(!(this.track instanceof _)||this.videoElements.size===0)return;let e;for(let t of this.videoElements){let i=this.entries.get(t);if(!i)continue;let{width:r,height:s}=i;if(r===0||s===0)continue;let o=Is(this.track.getSimulcastDefinitions(),{width:r,height:s});e?e=nt[o]>nt[e]?o:e:e=o}e&&(d.d(this.TAG,`selecting max layer ${e} for the track`,`${this.track}`),yield this.track.setPreferredLayer(e))})}};var mr=(t=>(t.TRANSFORM="TRANSFORM",t.ANALYZE="ANALYZE",t))(mr||{}),Sr=(t=>(t["2D"]="2d",t.WEBGL="webgl",t.WEBGL2="webgl2",t))(Sr||{});var ct=class{constructor(){this.total=0;this.count=0}add(e){this.count++,this.total+=e}getAvg(){return Math.floor(this.total/this.count)}reset(){this.total=0,this.count=0}};var jt=class{constructor(e){this.eventBus=e;this.TAG="[VideoPluginsAnalytics]";this.initTime={},this.preProcessingAvgs=new ct,this.addedTimestamps={},this.processingAvgs={},this.pluginAdded={},this.pluginInputFrameRate={},this.pluginFrameRate={}}added(e,t,i){this.pluginAdded[e]=!0,this.addedTimestamps[e]=Date.now(),this.initTime[e]=0,this.processingAvgs[e]=new ct,this.pluginInputFrameRate[e]=t,this.pluginFrameRate[e]=i||t}removed(e){var t;if(this.pluginAdded[e]){let i={pluginName:e,duration:Math.floor((Date.now()-this.addedTimestamps[e])/1e3),loadTime:this.initTime[e],avgPreProcessingTime:this.preProcessingAvgs.getAvg(),avgProcessingTime:(t=this.processingAvgs[e])==null?void 0:t.getAvg(),inputFrameRate:this.pluginInputFrameRate[e],pluginFrameRate:this.pluginFrameRate[e]};this.eventBus.analytics.publish(me.stats(i)),this.clean(e)}}failure(e,t){this.pluginAdded[e]&&(this.eventBus.analytics.publish(me.failure(e,t)),this.clean(e))}initWithTime(e,t){return c(this,null,function*(){if(this.initTime[e]){d.i(this.TAG,`Plugin Already loaded ${e}, time it took: ${this.initTime[e]}`);return}let i;try{i=yield this.timeInMs(t),d.i(this.TAG,`Time taken for Plugin ${e} initialization : ${i}`)}catch(r){let s=h.MediaPluginErrors.InitFailed("VIDEO_PLUGINS",`failed during initialization of plugin${r.message||r}`);throw d.e(this.TAG,s),this.failure(e,s),s}i&&(this.initTime[e]=i)})}preProcessWithTime(e){return c(this,null,function*(){let t=yield this.timeInMs(e);this.preProcessingAvgs.add(t)})}processWithTime(e,t){return c(this,null,function*(){var r;let i;try{i=yield this.timeInMs(t)}catch(s){let o=h.MediaPluginErrors.ProcessingFailed("VIDEO_PLUGINS",`Failed during processing of plugin${s.message||s}`);throw d.e(this.TAG,o),this.failure(e,o),o}i&&((r=this.processingAvgs[e])==null||r.add(i))})}timeInMs(e){return c(this,null,function*(){let t=Date.now();return yield e(),Math.floor(Date.now()-t)})}clean(e){delete this.addedTimestamps[e],delete this.initTime[e],delete this.processingAvgs[e],delete this.pluginAdded[e],delete this.pluginInputFrameRate[e],delete this.pluginFrameRate[e]}};var ws=24,Ya=320,Xa=240,dt=class{constructor(e,t){this.TAG="[VideoPluginsManager]";this.pluginsLoopRunning=!1;this.pluginsLoopState="paused";this.pluginAddInProgress=!1;this.hmsTrack=e,this.pluginsMap=new Map,this.pluginNumFramesToSkip={},this.pluginNumFramesSkipped={},this.analytics=new jt(t),this.canvases=new Array}getPlugins(){return Array.from(this.pluginsMap.keys())}addPlugin(e,t){return c(this,null,function*(){var i;if(this.pluginAddInProgress){let r=(i=e.getName)==null?void 0:i.call(e);if(!r||r===""){d.w("no name provided by the plugin");return}let s=h.MediaPluginErrors.AddAlreadyInProgress("VIDEO_PLUGINS","Add Plugin is already in Progress");throw this.analytics.failure(r,s),d.w("can't add another plugin when previous add is in progress"),s}this.pluginAddInProgress=!0;try{yield this.addPluginInternal(e,t)}finally{this.pluginAddInProgress=!1}})}addPluginInternal(e,t){return c(this,null,function*(){var o,n;let i=(o=e.getName)==null?void 0:o.call(e);if(!i||i===""){d.w("no name provided by the plugin");return}if(this.pluginsMap.has(i)){d.w(this.TAG,`plugin - ${e.getName()} already added.`);return}let r=this.hmsTrack.getMediaTrackSettings().frameRate||ws,s=0;t&&t>0?(d.i(this.TAG,`adding plugin ${e.getName()} with framerate ${t}`),t<r&&(s=Math.ceil(r/t)-1),this.analytics.added(i,r,t)):(d.i(this.TAG,`adding plugin ${e.getName()}`),this.analytics.added(i,r)),d.i(this.TAG,"numFrames to skip processing",s),this.pluginNumFramesToSkip[i]=s,this.pluginNumFramesSkipped[i]=s,this.validateAndThrow(i,e);try{if(yield this.analytics.initWithTime(i,()=>c(this,null,function*(){return yield e.init()})),this.pluginsMap.set(i,e),this.pluginsMap.size+1>this.canvases.length)for(let l=this.canvases.length;l<=this.pluginsMap.size;l++)this.canvases[l]=document.createElement("canvas");yield this.startPluginsLoop((n=e.getContextType)==null?void 0:n.call(e))}catch(l){throw d.e(this.TAG,"failed to add plugin",l),yield this.removePlugin(e),l}})}validatePlugin(e){return e.checkSupport()}validateAndThrow(e,t){let i=this.validatePlugin(t);if(i.isSupported)d.i(this.TAG,`plugin is supported,- ${t.getName()}`);else{let r;switch(i.errType){case"PLATFORM_NOT_SUPPORTED":throw r=h.MediaPluginErrors.PlatformNotSupported("VIDEO_PLUGINS","platform not supported, see docs"),this.analytics.failure(e,r),r;case"DEVICE_NOT_SUPPORTED":throw r=h.MediaPluginErrors.DeviceNotSupported("VIDEO_PLUGINS","video device not supported, see docs"),this.analytics.failure(e,r),r}}}removePlugin(e){return c(this,null,function*(){let t=e.getName();if(!this.pluginsMap.get(t)){d.w(this.TAG,`plugin - ${t} not found to remove.`);return}d.i(this.TAG,`removing plugin ${t}`),this.removePluginEntry(t),this.pluginsMap.size===0&&(d.i(this.TAG,"No plugins left, stopping plugins loop"),yield this.stopPluginsLoop()),e.stop(),this.analytics.removed(t)})}removePluginEntry(e){this.pluginsMap.delete(e),this.pluginNumFramesToSkip[e]&&delete this.pluginNumFramesToSkip[e],this.pluginNumFramesSkipped[e]&&delete this.pluginNumFramesSkipped[e]}waitForRestart(){return c(this,null,function*(){if(!(!this.pluginsLoopRunning||this.pluginsLoopState==="running"))for(;this.pluginsLoopState==="paused";)yield de(100)})}cleanup(){return c(this,null,function*(){var e;for(let t of this.pluginsMap.values())yield this.removePlugin(t);(e=this.outputTrack)==null||e.stop()})}initElementsAndStream(e){this.inputCanvas||(this.inputCanvas=document.createElement("canvas")),this.outputCanvas=document.createElement("canvas"),this.inputVideo||(this.inputVideo=document.createElement("video")),this.inputCanvas.getContext("2d"),this.outputCanvas.getContext(e||"2d");let t=this.outputCanvas.captureStream();this.outputTrack=t.getVideoTracks()[0]}startPluginsLoop(e){return c(this,null,function*(){if(!this.pluginsLoopRunning){this.initElementsAndStream(e),this.pluginsLoopRunning=!0;try{yield this.hmsTrack.setProcessedTrack(this.outputTrack)}catch(t){throw this.pluginsLoopRunning=!1,d.e(this.TAG,"error in setting processed track",t),t}this.pluginsLoop().then(()=>{d.d(this.TAG,"processLoop stopped")})}})}stopPluginsLoop(){return c(this,null,function*(){var e;this.pluginsLoopRunning=!1,yield this.hmsTrack.setProcessedTrack(void 0),this.resetCanvases(),(e=this.outputTrack)==null||e.stop(),this.inputVideo&&(this.inputVideo.srcObject=null,this.inputVideo=void 0)})}pluginsLoop(){return c(this,null,function*(){for(;this.pluginsLoopRunning;){let e=this.hmsTrack.getMediaTrackSettings().frameRate||ws,t=Math.floor(1e3/e);if(!this.hmsTrack.enabled||this.hmsTrack.nativeTrack.readyState==="ended"){this.pluginsLoopState==="running"&&this.resetCanvases(),this.pluginsLoopState="paused",yield de(t);continue}let i=0;try{yield this.analytics.preProcessWithTime(()=>c(this,null,function*(){return yield this.doPreProcessing()}));let r=Date.now();yield this.processFramesThroughPlugins(),i=Math.floor(Date.now()-r),i>t&&(i=t)}catch(r){d.e(this.TAG,"error in plugins loop",r)}this.pluginsLoopState="running",yield de(t-i)}})}doPreProcessing(){return c(this,null,function*(){yield this.addTrackToVideo(),yield this.updateInputCanvas()})}processFramesThroughPlugins(){return c(this,null,function*(){this.canvases[0]=this.inputCanvas;let e=0;for(let t of this.pluginsMap.values()){let i=t.getName();if(t){try{let r=this.checkIfSkipRequired(i);if(t.getPluginType()==="TRANSFORM"){let s=(o,n)=>c(this,null,function*(){try{yield t.processVideoFrame(o,n,r)}catch(l){d.e(this.TAG,`error in processing plugin ${i}`,l)}});if(r)e===this.pluginsMap.size-1?yield s(this.canvases[e],this.outputCanvas):yield s(this.canvases[e],this.canvases[e+1]);else{let o=this.canvases[e],n=this.canvases[e+1];e===this.pluginsMap.size-1?yield this.analytics.processWithTime(i,()=>c(this,null,function*(){return s(o,this.outputCanvas)})):yield this.analytics.processWithTime(i,()=>c(this,null,function*(){return s(o,n)}))}}else t.getPluginType()==="ANALYZE"&&!r&&(yield this.analytics.processWithTime(i,()=>c(this,null,function*(){return yield t.processVideoFrame(this.inputCanvas)})))}catch(r){d.e(this.TAG,`error in processing plugin ${i}`,r),yield this.removePlugin(t)}e++}}})}addTrackToVideo(){return c(this,null,function*(){var t;if(!this.inputVideo)return;let e=this.inputVideo.srcObject;e!==null&&e instanceof MediaStream&&((t=e.getVideoTracks()[0])==null?void 0:t.id)===this.hmsTrack.nativeTrack.id||(this.inputVideo.pause(),this.inputVideo.srcObject=new MediaStream([this.hmsTrack.nativeTrack]),this.inputVideo.muted=!0,this.inputVideo.playsInline=!0,yield this.inputVideo.play())})}updateInputCanvas(){return c(this,null,function*(){if(!this.inputCanvas||!this.inputVideo)return;let{width:e=Ya,height:t=Xa}=this.hmsTrack.getMediaTrackSettings();this.inputCanvas.height!==t&&(this.inputCanvas.height=t),this.inputCanvas.width!==e&&(this.inputCanvas.width=e),this.inputCanvas.getContext("2d").drawImage(this.inputVideo,0,0,e,t)})}resetCanvases(){if(!this.outputCanvas||!this.inputCanvas)return;let e=this.inputCanvas.getContext("2d");e&&(e.fillStyle="rgb(0, 0, 0)",e.fillRect(0,0,this.outputCanvas.width,this.outputCanvas.height)),this.canvases=[]}checkIfSkipRequired(e){let t=!1;return this.pluginNumFramesSkipped[e]<this.pluginNumFramesToSkip[e]?(this.pluginNumFramesSkipped[e]++,t=!0):(t=!1,this.pluginNumFramesSkipped[e]=0),t}};var Jt=class{constructor(){this.plugins=new Set}addPlugins(e){e.forEach(t=>this.plugins.add(t))}removePlugins(e){e.forEach(t=>{t.stop(),this.plugins.delete(t)})}applyPlugins(e){let t=e;for(let i of this.plugins)try{t=i.apply(t)}catch(r){d.e("Could not apply plugin",r,i)}return t}getPlugins(){return Array.from(this.plugins).map(e=>e.getName())}};import{v4 as eo}from"uuid";var Za=["init_response_time","ws_connect_time","on_policy_change_time","local_audio_track_time","local_video_track_time","peer_list_time","room_state_time","join_response_time"],Qt=class{constructor(){this.eventPerformanceMeasures={}}start(e){performance.mark(e)}end(e){var t;try{this.eventPerformanceMeasures[e]=performance.measure(e,e),d.d("[HMSPerformanceTiming]",e,(t=this.eventPerformanceMeasures[e])==null?void 0:t.duration)}catch(i){d.w("[AnalyticsTimer]",`Error in measuring performance for event ${e}`,{error:i})}}getTimeTaken(e){var t;return(t=this.eventPerformanceMeasures[e])==null?void 0:t.duration}getTimes(...e){return[...Za,...e].reduce((t,i)=>k(m({},t),{[i]:this.getTimeTaken(i)}),{})}cleanup(){this.eventPerformanceMeasures={}}};var gr={isAudioMuted:!1,isVideoMuted:!1,audioInputDeviceId:"default",audioOutputDeviceId:"default",videoDeviceId:"default"},le,zt,Se=class a{constructor(e,t,i,r,s){this.store=e;this.observer=t;this.deviceManager=i;this.eventBus=r;this.analyticsTimer=s;this.TAG="[LocalTrackManager]";this.setScreenCaptureHandleConfig()}getTracksToPublish(){return c(this,arguments,function*(e=gr){let t=this.getAVTrackSettings(e);if(!t)return[];let i=!!t.audio,r=!!t.video,s=[],{videoTrack:o,audioTrack:n}=yield this.updateCurrentLocalTrackSettings(t),l=(o==null?void 0:o.stream)||(n==null?void 0:n.stream),u=!!(o&&this.store.getTrackById(o.trackId)),p=!!(n&&this.store.getTrackById(n.trackId));if(u&&p)return[];let S={audio:i&&!n&&(e.isAudioMuted?"empty":!0),video:r&&!o&&(e.isVideoMuted?"empty":!0)};S.audio&&this.analyticsTimer.start("local_audio_track_time"),S.video&&this.analyticsTimer.start("local_video_track_time");try{d.d(this.TAG,"Init Local Tracks",{fetchTrackOptions:S}),s=yield this.getLocalTracks(S,t,l)}catch(g){s=yield this.retryGetLocalTracks(g,t,S,l)}return S.audio&&this.analyticsTimer.end("local_audio_track_time"),S.video&&this.analyticsTimer.end("local_video_track_time"),o&&r&&!u&&s.push(o),n&&i&&!p&&s.push(n),s})}getLocalTracks(){return c(this,arguments,function*(e={audio:!0,video:!0},t,i){try{let r=yield this.getNativeLocalTracks(e,t);return this.createHMSLocalTracks(r,t,i)}catch(r){throw this.eventBus.analytics.publish(M.publish({devices:this.deviceManager.getDevices(),error:r,settings:t})),r}})}getNativeLocalTracks(){return c(this,arguments,function*(e={audio:!1,video:!1},t){let i=new Be(e.video===!0?t.video:null,e.audio===!0?t.audio:null,t.simulcast),r=[];return(i.audio||i.video)&&r.push(...yield this.getAVTracks(i)),r.push(...this.getEmptyTracks(e)),r})}getLocalScreen(e){return c(this,null,function*(){var S;let t=yield this.getOrDefaultScreenshareConfig(e),i=this.getScreenshareSettings(t.videoOnly),r={video:k(m({},i==null?void 0:i.video.toConstraints(!0)),{displaySurface:t.displaySurface}),preferCurrentTab:t.preferCurrentTab,selfBrowserSurface:t.selfBrowserSurface,surfaceSwitching:t.surfaceSwitching,systemAudio:t.systemAudio};if(i!=null&&i.audio){let g=(S=i==null?void 0:i.audio)==null?void 0:S.toConstraints();delete g.advanced,r.audio=k(m({},g),{autoGainControl:!1,noiseSuppression:!1,googAutoGainControl:!1,echoCancellation:!1})}let s;try{d.d("retrieving screenshare with ",{config:t},{constraints:r}),s=yield navigator.mediaDevices.getDisplayMedia(r)}catch(g){d.w(this.TAG,"error in getting screenshare - ",g);let f=Ve(g,"screen");throw this.eventBus.analytics.publish(M.publish({error:f,devices:this.deviceManager.getDevices(),settings:new Be(i==null?void 0:i.video,i==null?void 0:i.audio,!1)})),f}let o=[],n=new De(s),l=s.getVideoTracks()[0],u=new x(n,l,"screen",this.eventBus,i==null?void 0:i.video);u.setSimulcastDefinitons(this.store.getSimulcastDefinitionsForPeer(this.store.getLocalPeer(),"screen"));try{let g=this.validateCurrentTabCapture(u,t.forceCurrentTab);u.isCurrentTab=g,yield u.cropTo(t.cropTarget)}catch(g){throw s.getTracks().forEach(f=>f.stop()),g}o.push(u);let p=s.getAudioTracks()[0];if(p){let g=new se(n,p,"screen",this.eventBus,i==null?void 0:i.audio);o.push(g)}return d.v(this.TAG,"getLocalScreen",o),o})}setScreenCaptureHandleConfig(e){var t;!((t=navigator.mediaDevices)!=null&&t.setCaptureHandleConfig)||this.isInIframe()||(e=e||{},Object.assign(e,{handle:eo(),exposeOrigin:!1,permittedOrigins:[window.location.origin]}),d.d("setting capture handle - ",e.handle),navigator.mediaDevices.setCaptureHandleConfig(e),this.captureHandleIdentifier=e.handle)}validateCurrentTabCapture(e,t){let i=e.getCaptureHandle(),r=!!(this.captureHandleIdentifier&&(i==null?void 0:i.handle)===this.captureHandleIdentifier);if(t&&!r)throw d.e(this.TAG,"current tab was not shared with forceCurrentTab as true"),h.TracksErrors.CurrentTabNotShared();return r}requestPermissions(){return c(this,null,function*(){try{(yield navigator.mediaDevices.getUserMedia({audio:!0,video:!0})).getTracks().forEach(t=>t.stop())}catch(e){d.e(this.TAG,e)}})}static getEmptyVideoTrack(e){var n,l,u;let t=((n=e==null?void 0:e.getSettings())==null?void 0:n.width)||320,i=((l=e==null?void 0:e.getSettings())==null?void 0:l.height)||240,r=1;le||(le=document.createElement("canvas"),le.width=t,le.height=i,(u=le.getContext("2d"))==null||u.fillRect(0,0,t,i)),zt||(zt=setInterval(()=>{let p=le==null?void 0:le.getContext("2d");p&&p.fillRect(0,0,1,1)},1e3/r));let o=le.captureStream(r).getVideoTracks()[0];return o.enabled=!1,o}static getEmptyAudioTrack(){let e=Ee.getAudioContext(),t=e.createOscillator(),i=e.createMediaStreamDestination();t.connect(i),t.start();let r=i.stream.getAudioTracks()[0];return r.enabled=!1,r}static cleanup(){clearInterval(zt),zt=void 0,le=void 0}getAVTracks(e){return c(this,null,function*(){try{let t=yield navigator.mediaDevices.getUserMedia({audio:e.audio?e.audio.toConstraints():!1,video:e.video?e.video.toConstraints():!1});return t.getVideoTracks().concat(t.getAudioTracks())}catch(t){yield this.deviceManager.init();let i=!!(!this.deviceManager.hasWebcamPermission&&e.video),r=!!(!this.deviceManager.hasMicrophonePermission&&e.audio),s=this.getErrorType(i,r);throw Ve(t,s)}})}getAVTrackSettings(e){let t=this.getAudioSettings(e),i=this.getVideoSettings(e);return!t&&!i?null:new ot().video(i).audio(t).build()}isInIframe(){try{return window.self!==window.top}catch(e){return!0}}retryGetLocalTracks(e,t,i,r){return c(this,null,function*(){if(e instanceof T&&e.action==="TRACK"){this.observer.onFailure(e);let s=e.code===v.TracksErrors.OVER_CONSTRAINED,o=e.message.includes("audio"),n=e.message.includes("video");if(s){let l=new ot().video(new we).audio(new Le).build();d.w(this.TAG,"Fetch AV Tracks failed with overconstrained error",{fetchTrackOptions:i},{error:e});try{return yield this.getLocalTracks(i,l,r)}catch(u){let p=u instanceof T?u.nativeError:u,S=u;if((p==null?void 0:p.name)==="OverconstrainedError"){let g=h.TracksErrors.GenericTrack("TRACK","Overconstrained error after dropping all constraints");g.addNativeError(p),S=g}return yield this.retryGetLocalTracks(S,t,i,r)}}i.audio=o?"empty":i.audio,i.video=n?"empty":i.video,d.w(this.TAG,"Fetch AV Tracks failed",{fetchTrackOptions:i},e);try{return yield this.getLocalTracks(i,t,r)}catch(l){return d.w(this.TAG,"Fetch empty tacks failed",l),i.audio=i.audio&&"empty",i.video=i.video&&"empty",this.observer.onFailure(l),yield this.getLocalTracks(i,t,r)}}else return d.w(this.TAG,"Fetch AV Tracks failed - unknown exception",e),this.observer.onFailure(e),[]})}getErrorType(e,t){return e&&t?"audio, video":e?"video":t?"audio":"unknown(video or audio)"}getEmptyTracks(e){let t=[];return e.audio==="empty"&&t.push(a.getEmptyAudioTrack()),e.video==="empty"&&t.push(a.getEmptyVideoTrack()),t}updateCurrentLocalTrackSettings(e){return c(this,null,function*(){let t=this.store.getLocalPeerTracks(),i=t.find(n=>n.type==="video"&&n.source==="regular"),r=t.find(n=>n.type==="audio"&&n.source==="regular"),s=t.find(n=>n.type==="video"&&n.source==="screen");e!=null&&e.video&&(yield i==null?void 0:i.setSettings(e.video)),e!=null&&e.audio&&(yield r==null?void 0:r.setSettings(e.audio));let o=this.getScreenshareSettings(!0);return o!=null&&o.video&&(yield s==null?void 0:s.setSettings(o==null?void 0:o.video)),{videoTrack:i,audioTrack:r}})}getAudioSettings(e){var o;let t=this.store.getPublishParams();if(!t||!((o=t.allowed)!=null&&o.includes("audio")))return null;let i=this.store.getLocalPeer(),r=i==null?void 0:i.audioTrack,s=(r==null?void 0:r.settings.deviceId)||e.audioInputDeviceId;return new re().codec(t.audio.codec).maxBitrate(t.audio.bitRate).deviceId(s||gr.audioInputDeviceId).build()}getVideoSettings(e){var n;let t=this.store.getPublishParams();if(!t||!((n=t.allowed)!=null&&n.includes("video")))return null;let i=this.store.getLocalPeer(),r=i==null?void 0:i.videoTrack,s=(r==null?void 0:r.settings.deviceId)||e.videoDeviceId,o=t.video;return new ee().codec(o.codec).maxBitrate(o.bitRate).maxFramerate(o.frameRate).setWidth(o.width).setHeight(o.height).deviceId(s||gr.videoDeviceId).build()}getScreenshareSettings(e=!1){var r;let t=this.store.getPublishParams();if(!t||!((r=t.allowed)!=null&&r.includes("screen")))return null;let i=t.screen;return{video:new ee().maxBitrate(i.bitRate,!1).codec(i.codec).maxFramerate(i.frameRate).setWidth(i.width).setHeight(i.height).build(),audio:e?void 0:new re().build()}}getOrDefaultScreenshareConfig(e){return c(this,null,function*(){var i;let t=Object.assign({videoOnly:!1,audioOnly:!1,forceCurrentTab:!1,preferCurrentTab:!1,selfBrowserSurface:"exclude",surfaceSwitching:"include",systemAudio:"exclude",displaySurface:"monitor"},e||{});return t.forceCurrentTab&&(t.videoOnly=!0,t.preferCurrentTab=!0,t.selfBrowserSurface="include",t.surfaceSwitching="exclude"),t.preferCurrentTab&&(t.selfBrowserSurface="include",t.displaySurface=void 0),t.cropElement&&((i=window.CropTarget)!=null&&i.fromElement)&&(t.cropTarget=yield window.CropTarget.fromElement(t.cropElement)),t})}createHMSLocalTracks(e,t,i){let r=e.find(n=>n.kind==="video"),s=e.find(n=>n.kind==="audio");i?e.forEach(n=>i==null?void 0:i.nativeStream.addTrack(n)):i=new De(new MediaStream(e));let o=[];if(s&&(t!=null&&t.audio)){let n=new se(i,s,"regular",this.eventBus,t.audio);o.push(n)}if(r&&(t!=null&&t.video)){let n=new x(i,r,"regular",this.eventBus,t.video);n.setSimulcastDefinitons(this.store.getSimulcastDefinitionsForPeer(this.store.getLocalPeer(),"regular")),o.push(n)}return o}};function Ds(a,e){return function(i){return i in a&&a[i]!==e[i]}}var x=class a extends Fe{constructor(t,i,r,s,o=new ee().build()){super(t,i,r);this.eventBus=s;this._layerDefinitions=[];this.TAG="[HMSLocalVideoTrack]";this.isCurrentTab=!1;this.isPublished=!1;this.replaceSenderTrack=t=>c(this,null,function*(){if(!this.transceiver||this.transceiver.direction!=="sendonly"){d.d(this.TAG,`transceiver for ${this.trackId} not available or not connected yet`);return}yield this.transceiver.sender.replaceTrack(t)});this.buildNewSettings=t=>{let{width:i,height:r,codec:s,maxFramerate:o,maxBitrate:n,deviceId:l,advanced:u,facingMode:p}=m(m({},this.settings),t);return new we(i,r,s,o,l,u,n,p)};this.handleSettingsChange=t=>c(this,null,function*(){let i=this.stream,r=Ds(t,this.settings);if(r("maxBitrate")&&t.maxBitrate&&(yield i.setMaxBitrateAndFramerate(this)),r("width")||r("height")||r("advanced"))if(this.source==="video"){let s=yield this.replaceTrackWith(t);yield this.replaceSender(s,this.enabled),this.nativeTrack=s,this.videoHandler.updateSinks()}else yield this.nativeTrack.applyConstraints(t.toConstraints())});this.handleDeviceChange=(t,i=!1)=>c(this,null,function*(){if(Ds(t,this.settings)("deviceId")&&this.source==="regular"){if(this.enabled){delete t.facingMode;let s=yield this.replaceTrackWith(t);yield this.replaceSender(s,this.enabled),this.nativeTrack=s,this.videoHandler.updateSinks()}i||q.updateSelection("videoInput",{deviceId:t.deviceId,groupId:this.nativeTrack.getSettings().groupId})}});this.removeOrReplaceProcessedTrack=t=>c(this,null,function*(){t?t!==this.processedTrack&&(this.processedTrack=t):this.processedTrack=void 0,yield this.replaceSenderTrack(this.processedTrack||this.nativeTrack)});t.tracks.push(this),this.setVideoHandler(new Ge(this)),this.settings=o,o.deviceId!==i.getSettings().deviceId&&i.enabled&&(this.settings=this.buildNewSettings({deviceId:i.getSettings().deviceId})),this.pluginsManager=new dt(this,s),this.mediaStreamPluginsManager=new Jt,this.setFirstTrackId(this.trackId)}setSimulcastDefinitons(t){this._layerDefinitions=t}getSimulcastDefinitions(){return this._layerDefinitions}setEnabled(t){return c(this,null,function*(){var i;if(t!==this.enabled){if(this.source==="regular"){let r;t?r=yield this.replaceTrackWith(this.settings):r=yield this.replaceTrackWithBlank(),yield this.replaceSender(r,t),(i=this.nativeTrack)==null||i.stop(),this.nativeTrack=r,yield W(a.prototype,this,"setEnabled").call(this,t),t&&(yield this.pluginsManager.waitForRestart(),yield this.processPlugins(),this.settings=this.buildNewSettings({deviceId:r.getSettings().deviceId})),this.videoHandler.updateSinks()}this.eventBus.localVideoEnabled.publish({enabled:t,track:this})}})}processPlugins(){return c(this,null,function*(){try{if(this.pluginsManager.getPlugins().length>0)return;if(this.mediaStreamPluginsManager.getPlugins().length>0){let r=this.mediaStreamPluginsManager.applyPlugins(new MediaStream([this.nativeTrack])).getVideoTracks()[0];yield this.setProcessedTrack(r)}else yield this.setProcessedTrack()}catch(t){console.error("error in processing plugin(s)",t)}})}addStreamPlugins(t){return c(this,null,function*(){if(this.pluginsManager.getPlugins().length>0)throw Error("Plugins of type HMSMediaStreamPlugin and HMSVideoPlugin cannot be used together");this.mediaStreamPluginsManager.addPlugins(t),yield this.processPlugins()})}removeStreamPlugins(t){return c(this,null,function*(){this.mediaStreamPluginsManager.removePlugins(t),yield this.processPlugins()})}isPublishedTrackId(t){return this.publishedTrackId===t}addSink(t){this.addSinkInternal(t,this.processedTrack||this.nativeTrack)}setSettings(t,i=!1){return c(this,null,function*(){let r=this.buildNewSettings(t);if(yield this.handleDeviceChange(r,i),!this.enabled||ce(this.nativeTrack)){this.settings=r;return}else yield this.pluginsManager.waitForRestart(),yield this.processPlugins();yield this.handleSettingsChange(r),this.settings=r})}getPlugins(){return this.mediaStreamPluginsManager.getPlugins().length>0?this.mediaStreamPluginsManager.getPlugins():this.pluginsManager.getPlugins()}addPlugin(t,i){return c(this,null,function*(){if(this.mediaStreamPluginsManager.getPlugins().length>0)throw Error("Plugins of type HMSVideoPlugin and HMSMediaStreamPlugin cannot be used together");return this.pluginsManager.addPlugin(t,i)})}removePlugin(t){return c(this,null,function*(){return this.pluginsManager.removePlugin(t)})}validatePlugin(t){return this.pluginsManager.validatePlugin(t)}cleanup(){return c(this,null,function*(){var t;W(a.prototype,this,"cleanup").call(this),this.transceiver=void 0,yield this.pluginsManager.cleanup(),(t=this.processedTrack)==null||t.stop(),this.isPublished=!1})}cropTo(t){return c(this,null,function*(){if(t&&this.source==="screen")try{this.nativeTrack.cropTo&&(yield this.nativeTrack.cropTo(t))}catch(i){throw d.e(this.TAG,"failed to crop screenshare capture - ",i),h.TracksErrors.GenericTrack("TRACK","failed to crop screenshare capture")}})}getCaptureHandle(){if(this.nativeTrack.getCaptureHandle)return this.nativeTrack.getCaptureHandle()}setProcessedTrack(t){return c(this,null,function*(){if(!this.nativeTrack.enabled){this.processedTrack=t;return}yield this.removeOrReplaceProcessedTrack(t),this.videoHandler.updateSinks()})}getTrackIDBeingSent(){return this.getTrackBeingSent().id}getTrackBeingSent(){return this.enabled?this.processedTrack||this.nativeTrack:this.nativeTrack}switchCamera(){return c(this,null,function*(){var s;let t=this.getMediaTrackSettings().facingMode;if(!t||this.source!=="regular"){d.d(this.TAG,"facingMode not supported");return}let i=t==="environment"?"user":"environment";(s=this.nativeTrack)==null||s.stop();let r=yield this.replaceTrackWith(this.buildNewSettings({facingMode:i,deviceId:void 0}));yield this.replaceSender(r,this.enabled),this.nativeTrack=r,this.videoHandler.updateSinks(),this.settings=this.buildNewSettings({deviceId:this.nativeTrack.getSettings().deviceId,facingMode:i}),q.updateSelection("videoInput",{deviceId:this.settings.deviceId,groupId:this.nativeTrack.getSettings().groupId})})}replaceTrackWith(t){return c(this,null,function*(){let i=this.nativeTrack;i==null||i.stop();try{let r=yield Es(t);return d.d(this.TAG,"replaceTrack, Previous track stopped",i,"newTrack",r),this.settings.deviceId==="default"&&(this.settings=this.buildNewSettings({deviceId:this.nativeTrack.getSettings().deviceId})),r}catch(r){throw this.isPublished&&this.eventBus.analytics.publish(M.publish({error:r})),r}})}replaceTrackWithBlank(){return c(this,null,function*(){let t=this.nativeTrack,i=Se.getEmptyVideoTrack(t);return t==null||t.stop(),d.d(this.TAG,"replaceTrackWithBlank, Previous track stopped",t,"newTrack",i),i})}replaceSender(t,i){return c(this,null,function*(){i?yield this.replaceSenderTrack(this.processedTrack||t):yield this.replaceSenderTrack(t),this.stream.replaceStreamTrack(this.nativeTrack,t)})}};var $e="renegotiation-callback-id",Yt="ion-sfu";var We="SUBSCRIBE_ICE_CONNECTION_CALLBACK_ID";var _s="https://event.100ms.live/v2/client/report",Ns="https://event-nonprod.100ms.live/v2/client/report";var V={DEVICE_CHANGE:"device-change",LOCAL_AUDIO_ENABLED:"local-audio-enabled",LOCAL_VIDEO_ENABLED:"local-video-enabled",STATS_UPDATE:"stats-update",RTC_STATS_UPDATE:"rtc-stats-update",TRACK_DEGRADED:"track-degraded",TRACK_RESTORED:"track-restored",TRACK_AUDIO_LEVEL_UPDATE:"track-audio-level-update",LOCAL_AUDIO_SILENCE:"local-audio-silence",ANALYTICS:"analytics",AUDIO_PLUGIN_FAILED:"audio-plugin-failed",POLICY_CHANGE:"policy-change",LOCAL_ROLE_UPDATE:"local-role-update",AUDIO_TRACK_UPDATE:"audio-track-update",AUDIO_TRACK_ADDED:"audio-track-added",AUDIO_TRACK_REMOVED:"audio-track-removed",AUTOPLAY_ERROR:"autoplay-error",LEAVE:"leave"},Os="2.5",xs="20231201",ge="_handraise",fr=1e3,vr=64;var _=class a extends Fe{constructor(t,i,r){super(t,i,r);this._degraded=!1;this._degradedAt=null;this._layerDefinitions=[];this.history=new Mr;this.preferredLayer="high";this.setVideoHandler(new Ge(this))}setTrackId(t){this.bizTrackId=t}get trackId(){return this.bizTrackId||super.trackId}get degraded(){return this._degraded}get degradedAt(){return this._degradedAt}setEnabled(t){return c(this,null,function*(){t!==this.enabled&&(W(a.prototype,this,"setEnabled").call(this,t),this.videoHandler.updateSinks(!0))})}setPreferredLayer(t){return c(this,null,function*(){if(t==="none"){d.w("layer none will be ignored");return}if(this.preferredLayer=t,!!this.shouldSendVideoLayer(t,"preferLayer")){if(!this.hasSinks()){d.d(`[Remote Track] ${this.logIdentifier}
38
+ })()`;function Y(a){if(a<0)throw Error("`ms` should be a positive integer");return new Promise(e=>{setTimeout(e,a)})}function de(a){if(a<0)throw Error("`ms` should be a positive integer");if(typeof Worker=="undefined")return Y(a);let e=new Worker(URL.createObjectURL(new Blob([qa],{type:"application/javascript"})));return e.postMessage(["start",a]),new Promise(t=>{e.onmessage=i=>{i.data==="tick"&&(t(),e.terminate())}})}function Kt(a,e=300){let t;return function(...i){clearTimeout(t),t=void 0;let r=this;t=setTimeout(()=>{a.apply(r,i)},e)}}var ja=35,Ja=5,qt=class{constructor(e,t,i){this.track=e;this.audioLevelEvent=t;this.silenceEvent=i;this.TAG="[TrackAudioLevelMonitor]";this.audioLevel=0;this.isMonitored=!1;this.interval=100;this.historyInterval=700;this.history=new Ae(this.historyInterval/this.interval);this.detectSilence=()=>c(this,null,function*(){let i=0;for(;this.isMonitored;){if(this.track.enabled)if(this.isSilentThisInstant()){if(i++,i>50){this.silenceEvent.publish({track:this.track});break}}else break;yield Y(20)}});try{let r=new MediaStream([this.track.nativeTrack]);this.analyserNode=this.createAnalyserNodeForStream(r)}catch(r){d.w(this.TAG,"Unable to initialize AudioContext",r)}}start(){this.stop(),this.isMonitored=!0,d.d(this.TAG,"Starting track Monitor",`${this.track}`),this.loop().then(()=>d.d(this.TAG,"Stopping track Monitor",`${this.track}`))}stop(){if(!this.analyserNode){d.d(this.TAG,"AudioContext not initialized");return}this.sendAudioLevel(0),this.isMonitored=!1}loop(){return c(this,null,function*(){for(;this.isMonitored;)this.sendAudioLevel(this.getMaxAudioLevelOverPeriod()),yield Y(this.interval)})}sendAudioLevel(e=0){if(e=e>ja?e:0,Math.abs(this.audioLevel-e)>Ja){this.audioLevel=e;let i={track:this.track,audioLevel:this.audioLevel};this.audioLevelEvent.publish(i)}}getMaxAudioLevelOverPeriod(){if(!this.analyserNode){d.d(this.TAG,"AudioContext not initialized");return}let e=this.calculateAudioLevel();return e!==void 0&&this.history.enqueue(e),this.history.aggregate(t=>Math.max(...t))}calculateAudioLevel(){if(!this.analyserNode){d.d(this.TAG,"AudioContext not initialized");return}let e=new Uint8Array(this.analyserNode.fftSize);this.analyserNode.getByteTimeDomainData(e);let t=.009,i=t;for(let o of e)i=Math.max(i,(o-128)/128);let r=(Math.log(t)-Math.log(i))/Math.log(t);return Math.ceil(Math.min(Math.max(r*100,0),100))}isSilentThisInstant(){if(!this.analyserNode){d.d(this.TAG,"AudioContext not initialized");return}let e=new Uint8Array(this.analyserNode.fftSize);return this.analyserNode.getByteTimeDomainData(e),!e.some(t=>t!==128&&t!==0)}createAnalyserNodeForStream(e){let t=Ee.getAudioContext(),i=t.createAnalyser();return t.createMediaStreamSource(e).connect(i),i}};var As=(n=>(n.NONE="none",n.INITIALISED="initialised",n.STARTED="started",n.PAUSED="paused",n.RESUMED="resumed",n.STOPPED="stopped",n.FAILED="failed",n))(As||{});var Ce={f:"high",h:"medium",q:"low"};var bs=(i=>(i.videoInput="videoInput",i.audioInput="audioInput",i.audioOutput="audioOutput",i))(bs||{});var re=class{constructor(){this._volume=1;this._codec="opus";this._maxBitrate=32;this._deviceId="default";this._advanced=[{googEchoCancellation:{exact:!0}},{googExperimentalEchoCancellation:{exact:!0}},{autoGainControl:{exact:!0}},{noiseSuppression:{exact:!0}},{googHighpassFilter:{exact:!0}},{googAudioMirroring:{exact:!0}}]}volume(e){if(!(0<=e&&e<=1))throw Error("volume can only be in range [0.0, 1.0]");return this._volume=e,this}codec(e){return this._codec=e,this}maxBitrate(e){if(e&&e<=0)throw Error("maxBitrate should be >= 1");return this._maxBitrate=e,this}deviceId(e){return this._deviceId=e,this}advanced(e){return this._advanced=e,this}build(){return new Le(this._volume,this._codec,this._maxBitrate,this._deviceId,this._advanced)}},Le=class{constructor(e,t,i,r,s){this.volume=e,this.codec=t,this.maxBitrate=i,this.deviceId=r,this.advanced=s}toConstraints(){return{deviceId:this.deviceId,advanced:this.advanced}}toAnalyticsProperties(){return{audio_bitrate:this.maxBitrate,audio_codec:this.codec}}};var ee=class{constructor(){this._width=320;this._height=180;this._codec="vp8";this._maxFramerate=30;this._maxBitrate=150;this._advanced=[]}setWidth(e){return this._width=e,this}setHeight(e){return this._height=e,this}codec(e){return this._codec=e,this}maxFramerate(e){if(e&&e<=0)throw Error("maxFramerate should be >= 1");return this._maxFramerate=e,this}maxBitrate(e,t=!0){if(typeof e=="number"&&e<=0)throw Error("maxBitrate should be >= 1");return this._maxBitrate=e,!this._maxBitrate&&t&&(this._maxBitrate=15e4),this}deviceId(e){return this._deviceId=e,this}advanced(e){return this._advanced=e,this}facingMode(e){return this._facingMode=e,this}build(){return new we(this._width,this._height,this._codec,this._maxFramerate,this._deviceId,this._advanced,this._maxBitrate,this._facingMode)}},we=class{constructor(e,t,i,r,s,o,n,l){this.width=e,this.height=t,this.codec=i,this.maxFramerate=r,this.maxBitrate=n,this.deviceId=s,this.advanced=o,this.facingMode=l}toConstraints(e){let t="ideal";e&&(t="max");let i=this.improviseConstraintsAspect();return{width:{[t]:i.width},height:{[t]:i.height},frameRate:this.maxFramerate,deviceId:this.deviceId,facingMode:this.facingMode}}toAnalyticsProperties(){return{width:this.width,height:this.height,video_bitrate:this.maxBitrate,framerate:this.maxFramerate,video_codec:this.codec,facingMode:this.facingMode}}improviseConstraintsAspect(){return Gt()&&this.height&&this.width&&this.height>this.width?{width:this.height,height:this.width}:{width:this.width,height:this.height}}};var ot=class{constructor(){this._video=new ee().build();this._audio=new re().build();this._screen=new ee().build();this._simulcast=!1}video(e){return this._video=e,this}audio(e){return this._audio=e,this}screen(e){return this._screen=e,this}simulcast(e){return this._simulcast=e,this}build(){if(this._audio===null&&this._video===null)throw h.TracksErrors.NothingToReturn("TRACK");if(this._video===null&&this._simulcast)throw h.TracksErrors.InvalidVideoSettings("TRACK","Cannot enable simulcast when no video settings are provided");return new Be(this._video,this._audio,this._simulcast,this._screen||void 0)}},Be=class{constructor(e,t,i,r=null){this.video=e,this.audio=t,this.simulcast=i,this.screen=r}toAnalyticsProperties(){let e={audio_enabled:this.audio!==null,video_enabled:this.video!==null};return this.audio&&(e=m(m({},this.audio.toAnalyticsProperties()),e)),this.video&&(e=m(m({},this.video.toAnalyticsProperties()),e)),e}};function Hs(a,e){return function(i){return i in a&&a[i]!==e[i]}}var se=class a extends Pe{constructor(t,i,r,s,o=new re().build()){super(t,i,r);this.eventBus=s;this.TAG="[HMSLocalAudioTrack]";this.isPublished=!1;this.handleVisibilityChange=()=>c(this,null,function*(){document.visibilityState==="visible"&&(yield this.replaceTrackWith(this.settings))});this.replaceSenderTrack=()=>c(this,null,function*(){if(!this.transceiver||this.transceiver.direction!=="sendonly"){d.d(this.TAG,`transceiver for ${this.trackId} not available or not connected yet`);return}yield this.transceiver.sender.replaceTrack(this.processedTrack||this.nativeTrack)});this.handleSettingsChange=t=>c(this,null,function*(){let i=this.stream,r=Hs(t,this.settings);r("maxBitrate")&&t.maxBitrate&&(yield i.setMaxBitrateAndFramerate(this)),r("advanced")&&(yield this.replaceTrackWith(t))});this.handleDeviceChange=(t,i=!1)=>c(this,null,function*(){Hs(t,this.settings)("deviceId")&&(this.manuallySelectedDeviceId=i?this.manuallySelectedDeviceId:t.deviceId,yield this.replaceTrackWith(t),i||q.updateSelection("audioInput",{deviceId:t.deviceId,groupId:this.nativeTrack.getSettings().groupId}))});t.tracks.push(this),this.settings=o,o.deviceId!==i.getSettings().deviceId&&!ce(i)&&(this.settings=this.buildNewSettings({deviceId:i.getSettings().deviceId})),this.pluginsManager=new at(this,s),this.setFirstTrackId(i.id),ir()&&N&&document.addEventListener("visibilitychange",this.handleVisibilityChange)}getManuallySelectedDeviceId(){return this.manuallySelectedDeviceId}resetManuallySelectedDeviceId(){this.manuallySelectedDeviceId=void 0}replaceTrackWith(t){return c(this,null,function*(){let i=this.nativeTrack;i==null||i.stop();let r=!!this.audioLevelMonitor;try{let s=yield Ps(t);s.enabled=this.enabled,d.d(this.TAG,"replaceTrack, Previous track stopped",i,"newTrack",s),yield this.stream.replaceStreamTrack(i,s),this.nativeTrack=s,yield this.replaceSenderTrack(),r&&this.initAudioLevelMonitor()}catch(s){throw this.isPublished&&this.eventBus.analytics.publish(M.publish({error:s})),s}try{yield this.pluginsManager.reprocessPlugins()}catch(s){this.eventBus.audioPluginFailed.publish(s)}})}setEnabled(t){return c(this,null,function*(){t!==this.enabled&&(t&&ce(this.nativeTrack)&&(yield this.replaceTrackWith(this.settings)),yield W(a.prototype,this,"setEnabled").call(this,t),t&&(this.settings=this.buildNewSettings({deviceId:this.nativeTrack.getSettings().deviceId})),this.eventBus.localAudioEnabled.publish({enabled:t,track:this}))})}isPublishedTrackId(t){return this.publishedTrackId===t}setSettings(t,i=!1){return c(this,null,function*(){let r=this.buildNewSettings(t);if(ce(this.nativeTrack)){this.settings=r;return}yield this.handleDeviceChange(r,i),yield this.handleSettingsChange(r),this.settings=r})}getPlugins(){return this.pluginsManager.getPlugins()}addPlugin(t){return c(this,null,function*(){return this.pluginsManager.addPlugin(t)})}removePlugin(t){return c(this,null,function*(){return this.pluginsManager.removePlugin(t)})}validatePlugin(t){return this.pluginsManager.validatePlugin(t)}setProcessedTrack(t){return c(this,null,function*(){t?t!==this.processedTrack&&(this.processedTrack=t):this.processedTrack=void 0,yield this.replaceSenderTrack()})}initAudioLevelMonitor(){this.audioLevelMonitor&&this.destroyAudioLevelMonitor(),d.d(this.TAG,"Monitor Audio Level for",this,this.getMediaTrackSettings().deviceId),this.audioLevelMonitor=new qt(this,this.eventBus.trackAudioLevelUpdate,this.eventBus.localAudioSilence),this.audioLevelMonitor.start(),this.audioLevelMonitor.detectSilence()}destroyAudioLevelMonitor(){var t;(t=this.audioLevelMonitor)==null||t.stop(),this.audioLevelMonitor=void 0}cleanup(){return c(this,null,function*(){var t;W(a.prototype,this,"cleanup").call(this),yield this.pluginsManager.cleanup(),yield this.pluginsManager.closeContext(),this.transceiver=void 0,(t=this.processedTrack)==null||t.stop(),this.isPublished=!1,this.destroyAudioLevelMonitor(),ir()&&N&&document.removeEventListener("visibilitychange",this.handleVisibilityChange)})}getTrackIDBeingSent(){return this.processedTrack?this.processedTrack.id:this.nativeTrack.id}getTrackBeingSent(){return this.processedTrack||this.nativeTrack}buildNewSettings(t){let{volume:i,codec:r,maxBitrate:s,deviceId:o,advanced:n}=m(m({},this.settings),t);return new Le(i,r,s,o,n)}};var te=class a extends Pe{setEnabled(e){return c(this,null,function*(){e!==this.enabled&&(yield W(a.prototype,this,"setEnabled").call(this,e),yield this.subscribeToAudio(e))})}};var Fe=class extends ke{constructor(t,i,r){super(t,i,r);this.type="video";this.sinkCount=0;if(i.kind!=="video")throw new Error("Expected 'track' kind = 'video'")}setVideoHandler(t){this.videoHandler=t}hasSinks(){return this.sinkCount>0}getSinks(){return this.videoHandler.getVideoElements()||[]}attach(t){this.videoHandler.addVideoElement(t)}detach(t){this.videoHandler.removeVideoElement(t)}addSink(t){this.addSinkInternal(t,this.nativeTrack)}removeSink(t){t.srcObject!==null&&(t.srcObject=null,this.reduceSinkCount())}cleanup(){super.cleanup(),this.videoHandler.cleanup()}addSinkInternal(t,i){let r=t.srcObject;if(r!==null&&r instanceof MediaStream){let s=r.getVideoTracks()[0];if((s==null?void 0:s.id)===i.id){if(!s.muted&&s.readyState==="live")return;this.reduceSinkCount()}else this.reduceSinkCount()}t.srcObject=new MediaStream([i]),this.sinkCount++}reduceSinkCount(){this.sinkCount>0&&this.sinkCount--}};import{v4 as za}from"uuid";var nt={none:-1,low:0,medium:1,high:2},Qa=.5,Is=(a,e)=>{let t="high",i=e.width>e.height?"width":"height",r=[...a].sort((o,n)=>nt[o.layer]-nt[n.layer]),s=e[i]*((window==null?void 0:window.devicePixelRatio)||1);for(let o=0;o<r.length;o++){let{resolution:n,layer:l}=r[o],u=n[i];if(s<=u){t=l;break}else{let p=r[o+1],S=p?p.resolution[i]:Number.POSITIVE_INFINITY;if((s-u)/(S-u)<Qa){t=l;break}}}return t};var pr=class{constructor(){this.TAG="[HMSIntersectionObserverWrapper]";this.listeners=new WeakMap;this.observe=(e,t)=>{var i;this.createObserver(),this.unobserve(e),(i=this.intersectionObserver)==null||i.observe(e),this.listeners.set(e,t)};this.unobserve=e=>{var t;(t=this.intersectionObserver)==null||t.unobserve(e),this.listeners.delete(e)};this.createObserver=()=>{this.isSupported()&&!this.intersectionObserver&&(this.intersectionObserver=new IntersectionObserver(this.handleIntersection))};this.handleIntersection=e=>{var t;for(let i of e)(t=this.listeners.get(i.target))==null||t(i)};this.createObserver()}isSupported(){let e=N&&typeof window.IntersectionObserver!="undefined";return e||d.w(this.TAG,"IntersectionObserver is not supported, fallback will be used instead"),e}},Cs=new pr;var hr=class{constructor(){this.TAG="[HMSResizeObserverWrapper]";this.listeners=new WeakMap;this.observe=(e,t,i={box:"border-box"})=>{var r;this.createObserver(),this.unobserve(e),(r=this.resizeObserver)==null||r.observe(e,i),this.listeners.set(e,t)};this.unobserve=e=>{var t;(t=this.resizeObserver)==null||t.unobserve(e),this.listeners.delete(e)};this.createObserver=()=>{this.isSupported()&&!this.resizeObserver&&(this.resizeObserver=new ResizeObserver(Kt(this.handleResize,300)))};this.handleResize=e=>{var t;for(let i of e)(t=this.listeners.get(i.target))==null||t(i)};this.createObserver()}isSupported(){let e=N&&typeof window.ResizeObserver!="undefined";return e||d.w(this.TAG,"Resize Observer is not supported"),e}},Ls=new hr;var Ge=class{constructor(e){this.track=e;this.TAG="[VideoElementManager]";this.videoElements=new Set;this.entries=new WeakMap;this.handleIntersection=e=>c(this,null,function*(){let t=getComputedStyle(e.target).visibility==="visible";this.track.enabled&&(e.isIntersecting&&t||!document.contains(e.target))?(d.d(this.TAG,"add sink intersection",`${this.track}`,this.id),this.entries.set(e.target,e.boundingClientRect),yield this.selectMaxLayer(),yield this.track.addSink(e.target)):(d.d(this.TAG,"remove sink intersection",`${this.track}`,this.id),yield this.track.removeSink(e.target))});this.handleResize=e=>c(this,null,function*(){!this.track.enabled||!(this.track instanceof _)||(this.entries.set(e.target,e.contentRect),yield this.selectMaxLayer())});this.cleanup=()=>{this.videoElements.forEach(e=>{var t,i;e.srcObject=null,(t=this.resizeObserver)==null||t.unobserve(e),(i=this.intersectionObserver)==null||i.unobserve(e)}),this.videoElements.clear(),this.resizeObserver=void 0,this.intersectionObserver=void 0};this.init(),this.id=za()}updateSinks(e=!1){for(let t of this.videoElements)this.track.enabled?this.track.addSink(t,e):this.track.removeSink(t,e)}addVideoElement(e){return c(this,null,function*(){var t;this.videoElements.has(e)||(this.init(),d.d(this.TAG,`Adding video element for ${this.track}`,this.id),this.videoElements.add(e),this.videoElements.size>=10&&d.w(this.TAG,`${this.track}`,`the track is added to ${this.videoElements.size} video elements, while this may be intentional, it's likely that there is a bug leading to unnecessary creation of video elements in the UI`),(t=this.intersectionObserver)!=null&&t.isSupported()?this.intersectionObserver.observe(e,this.handleIntersection):N&&(this.isElementInViewport(e)?this.track.addSink(e):this.track.removeSink(e)),this.resizeObserver?this.resizeObserver.observe(e,this.handleResize):this.track instanceof _&&(yield this.track.setPreferredLayer(this.track.getPreferredLayer())))})}removeVideoElement(e){var t,i;this.track.removeSink(e),this.videoElements.delete(e),this.entries.delete(e),(t=this.resizeObserver)==null||t.unobserve(e),(i=this.intersectionObserver)==null||i.unobserve(e),d.d(this.TAG,`Removing video element for ${this.track}`)}getVideoElements(){return Array.from(this.videoElements)}init(){N&&(this.resizeObserver=Ls,this.intersectionObserver=Cs)}isElementInViewport(e){let t=e.offsetTop,i=e.offsetLeft,r=e.offsetWidth,s=e.offsetHeight,{hidden:o}=e,{opacity:n,display:l}=getComputedStyle(e);for(;e.offsetParent;)e=e.offsetParent,t+=e.offsetTop,i+=e.offsetLeft;return t<window.pageYOffset+window.innerHeight&&i<window.pageXOffset+window.innerWidth&&t+s>window.pageYOffset&&i+r>window.pageXOffset&&!o&&(n!==""?parseFloat(n)>0:!0)&&l!=="none"}selectMaxLayer(){return c(this,null,function*(){if(!(this.track instanceof _)||this.videoElements.size===0)return;let e;for(let t of this.videoElements){let i=this.entries.get(t);if(!i)continue;let{width:r,height:s}=i;if(r===0||s===0)continue;let o=Is(this.track.getSimulcastDefinitions(),{width:r,height:s});e?e=nt[o]>nt[e]?o:e:e=o}e&&(d.d(this.TAG,`selecting max layer ${e} for the track`,`${this.track}`),yield this.track.setPreferredLayer(e))})}};var mr=(t=>(t.TRANSFORM="TRANSFORM",t.ANALYZE="ANALYZE",t))(mr||{}),Sr=(t=>(t["2D"]="2d",t.WEBGL="webgl",t.WEBGL2="webgl2",t))(Sr||{});var ct=class{constructor(){this.total=0;this.count=0}add(e){this.count++,this.total+=e}getAvg(){return Math.floor(this.total/this.count)}reset(){this.total=0,this.count=0}};var jt=class{constructor(e){this.eventBus=e;this.TAG="[VideoPluginsAnalytics]";this.initTime={},this.preProcessingAvgs=new ct,this.addedTimestamps={},this.processingAvgs={},this.pluginAdded={},this.pluginInputFrameRate={},this.pluginFrameRate={}}added(e,t,i){this.pluginAdded[e]=!0,this.addedTimestamps[e]=Date.now(),this.initTime[e]=0,this.processingAvgs[e]=new ct,this.pluginInputFrameRate[e]=t,this.pluginFrameRate[e]=i||t}removed(e){var t;if(this.pluginAdded[e]){let i={pluginName:e,duration:Math.floor((Date.now()-this.addedTimestamps[e])/1e3),loadTime:this.initTime[e],avgPreProcessingTime:this.preProcessingAvgs.getAvg(),avgProcessingTime:(t=this.processingAvgs[e])==null?void 0:t.getAvg(),inputFrameRate:this.pluginInputFrameRate[e],pluginFrameRate:this.pluginFrameRate[e]};this.eventBus.analytics.publish(me.stats(i)),this.clean(e)}}failure(e,t){this.pluginAdded[e]&&(this.eventBus.analytics.publish(me.failure(e,t)),this.clean(e))}initWithTime(e,t){return c(this,null,function*(){if(this.initTime[e]){d.i(this.TAG,`Plugin Already loaded ${e}, time it took: ${this.initTime[e]}`);return}let i;try{i=yield this.timeInMs(t),d.i(this.TAG,`Time taken for Plugin ${e} initialization : ${i}`)}catch(r){let s=h.MediaPluginErrors.InitFailed("VIDEO_PLUGINS",`failed during initialization of plugin${r.message||r}`);throw d.e(this.TAG,s),this.failure(e,s),s}i&&(this.initTime[e]=i)})}preProcessWithTime(e){return c(this,null,function*(){let t=yield this.timeInMs(e);this.preProcessingAvgs.add(t)})}processWithTime(e,t){return c(this,null,function*(){var r;let i;try{i=yield this.timeInMs(t)}catch(s){let o=h.MediaPluginErrors.ProcessingFailed("VIDEO_PLUGINS",`Failed during processing of plugin${s.message||s}`);throw d.e(this.TAG,o),this.failure(e,o),o}i&&((r=this.processingAvgs[e])==null||r.add(i))})}timeInMs(e){return c(this,null,function*(){let t=Date.now();return yield e(),Math.floor(Date.now()-t)})}clean(e){delete this.addedTimestamps[e],delete this.initTime[e],delete this.processingAvgs[e],delete this.pluginAdded[e],delete this.pluginInputFrameRate[e],delete this.pluginFrameRate[e]}};var ws=24,Ya=320,Xa=240,dt=class{constructor(e,t){this.TAG="[VideoPluginsManager]";this.pluginsLoopRunning=!1;this.pluginsLoopState="paused";this.pluginAddInProgress=!1;this.hmsTrack=e,this.pluginsMap=new Map,this.pluginNumFramesToSkip={},this.pluginNumFramesSkipped={},this.analytics=new jt(t),this.canvases=new Array}getPlugins(){return Array.from(this.pluginsMap.keys())}addPlugin(e,t){return c(this,null,function*(){var i;if(this.pluginAddInProgress){let r=(i=e.getName)==null?void 0:i.call(e);if(!r||r===""){d.w("no name provided by the plugin");return}let s=h.MediaPluginErrors.AddAlreadyInProgress("VIDEO_PLUGINS","Add Plugin is already in Progress");throw this.analytics.failure(r,s),d.w("can't add another plugin when previous add is in progress"),s}this.pluginAddInProgress=!0;try{yield this.addPluginInternal(e,t)}finally{this.pluginAddInProgress=!1}})}addPluginInternal(e,t){return c(this,null,function*(){var o,n;let i=(o=e.getName)==null?void 0:o.call(e);if(!i||i===""){d.w("no name provided by the plugin");return}if(this.pluginsMap.has(i)){d.w(this.TAG,`plugin - ${e.getName()} already added.`);return}let r=this.hmsTrack.getMediaTrackSettings().frameRate||ws,s=0;t&&t>0?(d.i(this.TAG,`adding plugin ${e.getName()} with framerate ${t}`),t<r&&(s=Math.ceil(r/t)-1),this.analytics.added(i,r,t)):(d.i(this.TAG,`adding plugin ${e.getName()}`),this.analytics.added(i,r)),d.i(this.TAG,"numFrames to skip processing",s),this.pluginNumFramesToSkip[i]=s,this.pluginNumFramesSkipped[i]=s,this.validateAndThrow(i,e);try{if(yield this.analytics.initWithTime(i,()=>c(this,null,function*(){return yield e.init()})),this.pluginsMap.set(i,e),this.pluginsMap.size+1>this.canvases.length)for(let l=this.canvases.length;l<=this.pluginsMap.size;l++)this.canvases[l]=document.createElement("canvas");yield this.startPluginsLoop((n=e.getContextType)==null?void 0:n.call(e))}catch(l){throw d.e(this.TAG,"failed to add plugin",l),yield this.removePlugin(e),l}})}validatePlugin(e){return e.checkSupport()}validateAndThrow(e,t){let i=this.validatePlugin(t);if(i.isSupported)d.i(this.TAG,`plugin is supported,- ${t.getName()}`);else{let r;switch(i.errType){case"PLATFORM_NOT_SUPPORTED":throw r=h.MediaPluginErrors.PlatformNotSupported("VIDEO_PLUGINS","platform not supported, see docs"),this.analytics.failure(e,r),r;case"DEVICE_NOT_SUPPORTED":throw r=h.MediaPluginErrors.DeviceNotSupported("VIDEO_PLUGINS","video device not supported, see docs"),this.analytics.failure(e,r),r}}}removePlugin(e){return c(this,null,function*(){let t=e.getName();if(!this.pluginsMap.get(t)){d.w(this.TAG,`plugin - ${t} not found to remove.`);return}d.i(this.TAG,`removing plugin ${t}`),this.removePluginEntry(t),this.pluginsMap.size===0&&(d.i(this.TAG,"No plugins left, stopping plugins loop"),yield this.stopPluginsLoop()),e.stop(),this.analytics.removed(t)})}removePluginEntry(e){this.pluginsMap.delete(e),this.pluginNumFramesToSkip[e]&&delete this.pluginNumFramesToSkip[e],this.pluginNumFramesSkipped[e]&&delete this.pluginNumFramesSkipped[e]}waitForRestart(){return c(this,null,function*(){if(!(!this.pluginsLoopRunning||this.pluginsLoopState==="running"))for(;this.pluginsLoopState==="paused";)yield de(100)})}cleanup(){return c(this,null,function*(){var e;for(let t of this.pluginsMap.values())yield this.removePlugin(t);(e=this.outputTrack)==null||e.stop()})}initElementsAndStream(e){this.inputCanvas||(this.inputCanvas=document.createElement("canvas")),this.outputCanvas=document.createElement("canvas"),this.inputVideo||(this.inputVideo=document.createElement("video")),this.inputCanvas.getContext("2d"),this.outputCanvas.getContext(e||"2d");let t=this.outputCanvas.captureStream();this.outputTrack=t.getVideoTracks()[0]}startPluginsLoop(e){return c(this,null,function*(){if(!this.pluginsLoopRunning){this.initElementsAndStream(e),this.pluginsLoopRunning=!0;try{yield this.hmsTrack.setProcessedTrack(this.outputTrack)}catch(t){throw this.pluginsLoopRunning=!1,d.e(this.TAG,"error in setting processed track",t),t}this.pluginsLoop().then(()=>{d.d(this.TAG,"processLoop stopped")})}})}stopPluginsLoop(){return c(this,null,function*(){var e;this.pluginsLoopRunning=!1,yield this.hmsTrack.setProcessedTrack(void 0),this.resetCanvases(),(e=this.outputTrack)==null||e.stop(),this.inputVideo&&(this.inputVideo.srcObject=null,this.inputVideo=void 0)})}pluginsLoop(){return c(this,null,function*(){for(;this.pluginsLoopRunning;){let e=this.hmsTrack.getMediaTrackSettings().frameRate||ws,t=Math.floor(1e3/e);if(!this.hmsTrack.enabled||this.hmsTrack.nativeTrack.readyState==="ended"){this.pluginsLoopState==="running"&&this.resetCanvases(),this.pluginsLoopState="paused",yield de(t);continue}let i=0;try{yield this.analytics.preProcessWithTime(()=>c(this,null,function*(){return yield this.doPreProcessing()}));let r=Date.now();yield this.processFramesThroughPlugins(),i=Math.floor(Date.now()-r),i>t&&(i=t)}catch(r){d.e(this.TAG,"error in plugins loop",r)}this.pluginsLoopState="running",yield de(t-i)}})}doPreProcessing(){return c(this,null,function*(){yield this.addTrackToVideo(),yield this.updateInputCanvas()})}processFramesThroughPlugins(){return c(this,null,function*(){this.canvases[0]=this.inputCanvas;let e=0;for(let t of this.pluginsMap.values()){let i=t.getName();if(t){try{let r=this.checkIfSkipRequired(i);if(t.getPluginType()==="TRANSFORM"){let s=(o,n)=>c(this,null,function*(){try{yield t.processVideoFrame(o,n,r)}catch(l){d.e(this.TAG,`error in processing plugin ${i}`,l)}});if(r)e===this.pluginsMap.size-1?yield s(this.canvases[e],this.outputCanvas):yield s(this.canvases[e],this.canvases[e+1]);else{let o=this.canvases[e],n=this.canvases[e+1];e===this.pluginsMap.size-1?yield this.analytics.processWithTime(i,()=>c(this,null,function*(){return s(o,this.outputCanvas)})):yield this.analytics.processWithTime(i,()=>c(this,null,function*(){return s(o,n)}))}}else t.getPluginType()==="ANALYZE"&&!r&&(yield this.analytics.processWithTime(i,()=>c(this,null,function*(){return yield t.processVideoFrame(this.inputCanvas)})))}catch(r){d.e(this.TAG,`error in processing plugin ${i}`,r),yield this.removePlugin(t)}e++}}})}addTrackToVideo(){return c(this,null,function*(){var t;if(!this.inputVideo)return;let e=this.inputVideo.srcObject;e!==null&&e instanceof MediaStream&&((t=e.getVideoTracks()[0])==null?void 0:t.id)===this.hmsTrack.nativeTrack.id||(this.inputVideo.pause(),this.inputVideo.srcObject=new MediaStream([this.hmsTrack.nativeTrack]),this.inputVideo.muted=!0,this.inputVideo.playsInline=!0,yield this.inputVideo.play())})}updateInputCanvas(){return c(this,null,function*(){if(!this.inputCanvas||!this.inputVideo)return;let{width:e=Ya,height:t=Xa}=this.hmsTrack.getMediaTrackSettings();this.inputCanvas.height!==t&&(this.inputCanvas.height=t),this.inputCanvas.width!==e&&(this.inputCanvas.width=e),this.inputCanvas.getContext("2d").drawImage(this.inputVideo,0,0,e,t)})}resetCanvases(){if(!this.outputCanvas||!this.inputCanvas)return;let e=this.inputCanvas.getContext("2d");e&&(e.fillStyle="rgb(0, 0, 0)",e.fillRect(0,0,this.outputCanvas.width,this.outputCanvas.height)),this.canvases=[]}checkIfSkipRequired(e){let t=!1;return this.pluginNumFramesSkipped[e]<this.pluginNumFramesToSkip[e]?(this.pluginNumFramesSkipped[e]++,t=!0):(t=!1,this.pluginNumFramesSkipped[e]=0),t}};var Jt=class{constructor(){this.plugins=new Set}addPlugins(e){e.forEach(t=>this.plugins.add(t))}removePlugins(e){e.forEach(t=>{t.stop(),this.plugins.delete(t)})}applyPlugins(e){let t=e;for(let i of this.plugins)try{t=i.apply(t)}catch(r){d.e("Could not apply plugin",r,i)}return t}getPlugins(){return Array.from(this.plugins).map(e=>e.getName())}};import{v4 as eo}from"uuid";var Za=["init_response_time","ws_connect_time","on_policy_change_time","local_audio_track_time","local_video_track_time","peer_list_time","room_state_time","join_response_time"],Qt=class{constructor(){this.eventPerformanceMeasures={}}start(e){performance.mark(e)}end(e){var t;try{this.eventPerformanceMeasures[e]=performance.measure(e,e),d.d("[HMSPerformanceTiming]",e,(t=this.eventPerformanceMeasures[e])==null?void 0:t.duration)}catch(i){d.w("[AnalyticsTimer]",`Error in measuring performance for event ${e}`,{error:i})}}getTimeTaken(e){var t;return(t=this.eventPerformanceMeasures[e])==null?void 0:t.duration}getTimes(...e){return[...Za,...e].reduce((t,i)=>k(m({},t),{[i]:this.getTimeTaken(i)}),{})}cleanup(){this.eventPerformanceMeasures={}}};var gr={isAudioMuted:!1,isVideoMuted:!1,audioInputDeviceId:"default",audioOutputDeviceId:"default",videoDeviceId:"default"},le,zt,Se=class a{constructor(e,t,i,r,s){this.store=e;this.observer=t;this.deviceManager=i;this.eventBus=r;this.analyticsTimer=s;this.TAG="[LocalTrackManager]";this.setScreenCaptureHandleConfig()}getTracksToPublish(){return c(this,arguments,function*(e=gr){let t=this.getAVTrackSettings(e);if(!t)return[];let i=!!t.audio,r=!!t.video,s=[],{videoTrack:o,audioTrack:n}=yield this.updateCurrentLocalTrackSettings(t),l=(o==null?void 0:o.stream)||(n==null?void 0:n.stream),u=!!(o&&this.store.getTrackById(o.trackId)),p=!!(n&&this.store.getTrackById(n.trackId));if(u&&p)return[];let S={audio:i&&!n&&(e.isAudioMuted?"empty":!0),video:r&&!o&&(e.isVideoMuted?"empty":!0)};S.audio&&this.analyticsTimer.start("local_audio_track_time"),S.video&&this.analyticsTimer.start("local_video_track_time");try{d.d(this.TAG,"Init Local Tracks",{fetchTrackOptions:S}),s=yield this.getLocalTracks(S,t,l)}catch(g){s=yield this.retryGetLocalTracks(g,t,S,l)}return S.audio&&this.analyticsTimer.end("local_audio_track_time"),S.video&&this.analyticsTimer.end("local_video_track_time"),o&&r&&!u&&s.push(o),n&&i&&!p&&s.push(n),s})}getLocalTracks(){return c(this,arguments,function*(e={audio:!0,video:!0},t,i){try{let r=yield this.getNativeLocalTracks(e,t);return this.createHMSLocalTracks(r,t,i)}catch(r){throw this.eventBus.analytics.publish(M.publish({devices:this.deviceManager.getDevices(),error:r,settings:t})),r}})}getNativeLocalTracks(){return c(this,arguments,function*(e={audio:!1,video:!1},t){let i=new Be(e.video===!0?t.video:null,e.audio===!0?t.audio:null,t.simulcast),r=[];return(i.audio||i.video)&&r.push(...yield this.getAVTracks(i)),r.push(...this.getEmptyTracks(e)),r})}getLocalScreen(e){return c(this,null,function*(){var S;let t=yield this.getOrDefaultScreenshareConfig(e),i=this.getScreenshareSettings(t.videoOnly),r={video:k(m({},i==null?void 0:i.video.toConstraints(!0)),{displaySurface:t.displaySurface}),preferCurrentTab:t.preferCurrentTab,selfBrowserSurface:t.selfBrowserSurface,surfaceSwitching:t.surfaceSwitching,systemAudio:t.systemAudio};if(i!=null&&i.audio){let g=(S=i==null?void 0:i.audio)==null?void 0:S.toConstraints();delete g.advanced,r.audio=k(m({},g),{autoGainControl:!1,noiseSuppression:!1,googAutoGainControl:!1,echoCancellation:!1})}let s;try{d.d("retrieving screenshare with ",{config:t},{constraints:r}),s=yield navigator.mediaDevices.getDisplayMedia(r)}catch(g){d.w(this.TAG,"error in getting screenshare - ",g);let f=Ve(g,"screen");throw this.eventBus.analytics.publish(M.publish({error:f,devices:this.deviceManager.getDevices(),settings:new Be(i==null?void 0:i.video,i==null?void 0:i.audio,!1)})),f}let o=[],n=new De(s),l=s.getVideoTracks()[0],u=new x(n,l,"screen",this.eventBus,i==null?void 0:i.video);u.setSimulcastDefinitons(this.store.getSimulcastDefinitionsForPeer(this.store.getLocalPeer(),"screen"));try{let g=this.validateCurrentTabCapture(u,t.forceCurrentTab);u.isCurrentTab=g,yield u.cropTo(t.cropTarget)}catch(g){throw s.getTracks().forEach(f=>f.stop()),g}o.push(u);let p=s.getAudioTracks()[0];if(p){let g=new se(n,p,"screen",this.eventBus,i==null?void 0:i.audio);o.push(g)}return d.v(this.TAG,"getLocalScreen",o),o})}setScreenCaptureHandleConfig(e){var t;!((t=navigator.mediaDevices)!=null&&t.setCaptureHandleConfig)||this.isInIframe()||(e=e||{},Object.assign(e,{handle:eo(),exposeOrigin:!1,permittedOrigins:[window.location.origin]}),d.d("setting capture handle - ",e.handle),navigator.mediaDevices.setCaptureHandleConfig(e),this.captureHandleIdentifier=e.handle)}validateCurrentTabCapture(e,t){let i=e.getCaptureHandle(),r=!!(this.captureHandleIdentifier&&(i==null?void 0:i.handle)===this.captureHandleIdentifier);if(t&&!r)throw d.e(this.TAG,"current tab was not shared with forceCurrentTab as true"),h.TracksErrors.CurrentTabNotShared();return r}requestPermissions(){return c(this,null,function*(){try{(yield navigator.mediaDevices.getUserMedia({audio:!0,video:!0})).getTracks().forEach(t=>t.stop())}catch(e){d.e(this.TAG,e)}})}static getEmptyVideoTrack(e){var n,l,u;let t=((n=e==null?void 0:e.getSettings())==null?void 0:n.width)||320,i=((l=e==null?void 0:e.getSettings())==null?void 0:l.height)||240,r=1;le||(le=document.createElement("canvas"),le.width=t,le.height=i,(u=le.getContext("2d"))==null||u.fillRect(0,0,t,i)),zt||(zt=setInterval(()=>{let p=le==null?void 0:le.getContext("2d");p&&p.fillRect(0,0,1,1)},1e3/r));let o=le.captureStream(r).getVideoTracks()[0];return o.enabled=!1,o}static getEmptyAudioTrack(){let e=Ee.getAudioContext(),t=e.createOscillator(),i=e.createMediaStreamDestination();t.connect(i),t.start();let r=i.stream.getAudioTracks()[0];return r.enabled=!1,r}static cleanup(){clearInterval(zt),zt=void 0,le=void 0}getAVTracks(e){return c(this,null,function*(){try{let t=yield navigator.mediaDevices.getUserMedia({audio:e.audio?e.audio.toConstraints():!1,video:e.video?e.video.toConstraints():!1});return t.getVideoTracks().concat(t.getAudioTracks())}catch(t){yield this.deviceManager.init();let i=!!(!this.deviceManager.hasWebcamPermission&&e.video),r=!!(!this.deviceManager.hasMicrophonePermission&&e.audio),s=this.getErrorType(i,r);throw Ve(t,s)}})}getAVTrackSettings(e){let t=this.getAudioSettings(e),i=this.getVideoSettings(e);return!t&&!i?null:new ot().video(i).audio(t).build()}isInIframe(){try{return window.self!==window.top}catch(e){return!0}}retryGetLocalTracks(e,t,i,r){return c(this,null,function*(){if(e instanceof T&&e.action==="TRACK"){this.observer.onFailure(e);let s=e.code===v.TracksErrors.OVER_CONSTRAINED,o=e.message.includes("audio"),n=e.message.includes("video");if(s){let l=new ot().video(new we).audio(new Le).build();d.w(this.TAG,"Fetch AV Tracks failed with overconstrained error",{fetchTrackOptions:i},{error:e});try{return yield this.getLocalTracks(i,l,r)}catch(u){let p=u instanceof T?u.nativeError:u,S=u;if((p==null?void 0:p.name)==="OverconstrainedError"){let g=h.TracksErrors.GenericTrack("TRACK","Overconstrained error after dropping all constraints");g.addNativeError(p),S=g}return yield this.retryGetLocalTracks(S,t,i,r)}}i.audio=o?"empty":i.audio,i.video=n?"empty":i.video,d.w(this.TAG,"Fetch AV Tracks failed",{fetchTrackOptions:i},e);try{return yield this.getLocalTracks(i,t,r)}catch(l){return d.w(this.TAG,"Fetch empty tacks failed",l),i.audio=i.audio&&"empty",i.video=i.video&&"empty",this.observer.onFailure(l),yield this.getLocalTracks(i,t,r)}}else return d.w(this.TAG,"Fetch AV Tracks failed - unknown exception",e),this.observer.onFailure(e),[]})}getErrorType(e,t){return e&&t?"audio, video":e?"video":t?"audio":"unknown(video or audio)"}getEmptyTracks(e){let t=[];return e.audio==="empty"&&t.push(a.getEmptyAudioTrack()),e.video==="empty"&&t.push(a.getEmptyVideoTrack()),t}updateCurrentLocalTrackSettings(e){return c(this,null,function*(){let t=this.store.getLocalPeerTracks(),i=t.find(n=>n.type==="video"&&n.source==="regular"),r=t.find(n=>n.type==="audio"&&n.source==="regular"),s=t.find(n=>n.type==="video"&&n.source==="screen");e!=null&&e.video&&(yield i==null?void 0:i.setSettings(e.video)),e!=null&&e.audio&&(yield r==null?void 0:r.setSettings(e.audio));let o=this.getScreenshareSettings(!0);return o!=null&&o.video&&(yield s==null?void 0:s.setSettings(o==null?void 0:o.video)),{videoTrack:i,audioTrack:r}})}getAudioSettings(e){var o;let t=this.store.getPublishParams();if(!t||!((o=t.allowed)!=null&&o.includes("audio")))return null;let i=this.store.getLocalPeer(),r=i==null?void 0:i.audioTrack,s=(r==null?void 0:r.settings.deviceId)||e.audioInputDeviceId;return new re().codec(t.audio.codec).maxBitrate(t.audio.bitRate).deviceId(s||gr.audioInputDeviceId).build()}getVideoSettings(e){var n;let t=this.store.getPublishParams();if(!t||!((n=t.allowed)!=null&&n.includes("video")))return null;let i=this.store.getLocalPeer(),r=i==null?void 0:i.videoTrack,s=(r==null?void 0:r.settings.deviceId)||e.videoDeviceId,o=t.video;return new ee().codec(o.codec).maxBitrate(o.bitRate).maxFramerate(o.frameRate).setWidth(o.width).setHeight(o.height).deviceId(s||gr.videoDeviceId).build()}getScreenshareSettings(e=!1){var r;let t=this.store.getPublishParams();if(!t||!((r=t.allowed)!=null&&r.includes("screen")))return null;let i=t.screen;return{video:new ee().maxBitrate(i.bitRate,!1).codec(i.codec).maxFramerate(i.frameRate).setWidth(i.width).setHeight(i.height).build(),audio:e?void 0:new re().build()}}getOrDefaultScreenshareConfig(e){return c(this,null,function*(){var i;let t=Object.assign({videoOnly:!1,audioOnly:!1,forceCurrentTab:!1,preferCurrentTab:!1,selfBrowserSurface:"exclude",surfaceSwitching:"include",systemAudio:"exclude",displaySurface:"monitor"},e||{});return t.forceCurrentTab&&(t.videoOnly=!0,t.preferCurrentTab=!0,t.selfBrowserSurface="include",t.surfaceSwitching="exclude"),t.preferCurrentTab&&(t.selfBrowserSurface="include",t.displaySurface=void 0),t.cropElement&&((i=window.CropTarget)!=null&&i.fromElement)&&(t.cropTarget=yield window.CropTarget.fromElement(t.cropElement)),t})}createHMSLocalTracks(e,t,i){let r=e.find(n=>n.kind==="video"),s=e.find(n=>n.kind==="audio");i?e.forEach(n=>i==null?void 0:i.nativeStream.addTrack(n)):i=new De(new MediaStream(e));let o=[];if(s&&(t!=null&&t.audio)){let n=new se(i,s,"regular",this.eventBus,t.audio);o.push(n)}if(r&&(t!=null&&t.video)){let n=new x(i,r,"regular",this.eventBus,t.video);n.setSimulcastDefinitons(this.store.getSimulcastDefinitionsForPeer(this.store.getLocalPeer(),"regular")),o.push(n)}return o}};function Ds(a,e){return function(i){return i in a&&a[i]!==e[i]}}var x=class a extends Fe{constructor(t,i,r,s,o=new ee().build()){super(t,i,r);this.eventBus=s;this._layerDefinitions=[];this.TAG="[HMSLocalVideoTrack]";this.isCurrentTab=!1;this.isPublished=!1;this.replaceSenderTrack=t=>c(this,null,function*(){if(!this.transceiver||this.transceiver.direction!=="sendonly"){d.d(this.TAG,`transceiver for ${this.trackId} not available or not connected yet`);return}yield this.transceiver.sender.replaceTrack(t)});this.buildNewSettings=t=>{let{width:i,height:r,codec:s,maxFramerate:o,maxBitrate:n,deviceId:l,advanced:u,facingMode:p}=m(m({},this.settings),t);return new we(i,r,s,o,l,u,n,p)};this.handleSettingsChange=t=>c(this,null,function*(){let i=this.stream,r=Ds(t,this.settings);if(r("maxBitrate")&&t.maxBitrate&&(yield i.setMaxBitrateAndFramerate(this)),r("width")||r("height")||r("advanced"))if(this.source==="video"){let s=yield this.replaceTrackWith(t);yield this.replaceSender(s,this.enabled),this.nativeTrack=s,yield this.processPlugins(),this.videoHandler.updateSinks()}else yield this.nativeTrack.applyConstraints(t.toConstraints())});this.handleDeviceChange=(t,i=!1)=>c(this,null,function*(){if(Ds(t,this.settings)("deviceId")&&this.source==="regular"){if(this.enabled){delete t.facingMode;let s=yield this.replaceTrackWith(t);yield this.replaceSender(s,this.enabled),this.nativeTrack=s,yield this.processPlugins(),this.videoHandler.updateSinks()}i||q.updateSelection("videoInput",{deviceId:t.deviceId,groupId:this.nativeTrack.getSettings().groupId})}});this.removeOrReplaceProcessedTrack=t=>c(this,null,function*(){t?t!==this.processedTrack&&(this.processedTrack=t):this.processedTrack=void 0,yield this.replaceSenderTrack(this.processedTrack||this.nativeTrack)});t.tracks.push(this),this.setVideoHandler(new Ge(this)),this.settings=o,o.deviceId!==i.getSettings().deviceId&&i.enabled&&(this.settings=this.buildNewSettings({deviceId:i.getSettings().deviceId})),this.pluginsManager=new dt(this,s),this.mediaStreamPluginsManager=new Jt,this.setFirstTrackId(this.trackId)}setSimulcastDefinitons(t){this._layerDefinitions=t}getSimulcastDefinitions(){return this._layerDefinitions}setEnabled(t){return c(this,null,function*(){var i;if(t!==this.enabled){if(this.source==="regular"){let r;t?r=yield this.replaceTrackWith(this.settings):r=yield this.replaceTrackWithBlank(),yield this.replaceSender(r,t),(i=this.nativeTrack)==null||i.stop(),this.nativeTrack=r,yield W(a.prototype,this,"setEnabled").call(this,t),t&&(yield this.pluginsManager.waitForRestart(),yield this.processPlugins(),this.settings=this.buildNewSettings({deviceId:r.getSettings().deviceId})),this.videoHandler.updateSinks()}this.eventBus.localVideoEnabled.publish({enabled:t,track:this})}})}processPlugins(){return c(this,null,function*(){try{if(this.pluginsManager.getPlugins().length>0)return;if(this.mediaStreamPluginsManager.getPlugins().length>0){let r=this.mediaStreamPluginsManager.applyPlugins(new MediaStream([this.nativeTrack])).getVideoTracks()[0];yield this.setProcessedTrack(r)}else yield this.setProcessedTrack()}catch(t){console.error("error in processing plugin(s)",t)}})}addStreamPlugins(t){return c(this,null,function*(){if(this.pluginsManager.getPlugins().length>0)throw Error("Plugins of type HMSMediaStreamPlugin and HMSVideoPlugin cannot be used together");this.mediaStreamPluginsManager.addPlugins(t),yield this.processPlugins()})}removeStreamPlugins(t){return c(this,null,function*(){this.mediaStreamPluginsManager.removePlugins(t),yield this.processPlugins()})}isPublishedTrackId(t){return this.publishedTrackId===t}addSink(t){this.addSinkInternal(t,this.processedTrack||this.nativeTrack)}setSettings(t,i=!1){return c(this,null,function*(){let r=this.buildNewSettings(t);if(yield this.handleDeviceChange(r,i),!this.enabled||ce(this.nativeTrack)){this.settings=r;return}else yield this.pluginsManager.waitForRestart();yield this.handleSettingsChange(r),this.settings=r})}getPlugins(){return this.mediaStreamPluginsManager.getPlugins().length>0?this.mediaStreamPluginsManager.getPlugins():this.pluginsManager.getPlugins()}addPlugin(t,i){return c(this,null,function*(){if(this.mediaStreamPluginsManager.getPlugins().length>0)throw Error("Plugins of type HMSVideoPlugin and HMSMediaStreamPlugin cannot be used together");return this.pluginsManager.addPlugin(t,i)})}removePlugin(t){return c(this,null,function*(){return this.pluginsManager.removePlugin(t)})}validatePlugin(t){return this.pluginsManager.validatePlugin(t)}cleanup(){return c(this,null,function*(){var t;W(a.prototype,this,"cleanup").call(this),this.transceiver=void 0,yield this.pluginsManager.cleanup(),(t=this.processedTrack)==null||t.stop(),this.isPublished=!1})}cropTo(t){return c(this,null,function*(){if(t&&this.source==="screen")try{this.nativeTrack.cropTo&&(yield this.nativeTrack.cropTo(t))}catch(i){throw d.e(this.TAG,"failed to crop screenshare capture - ",i),h.TracksErrors.GenericTrack("TRACK","failed to crop screenshare capture")}})}getCaptureHandle(){if(this.nativeTrack.getCaptureHandle)return this.nativeTrack.getCaptureHandle()}setProcessedTrack(t){return c(this,null,function*(){if(!this.nativeTrack.enabled){this.processedTrack=t;return}yield this.removeOrReplaceProcessedTrack(t),this.videoHandler.updateSinks()})}getTrackIDBeingSent(){return this.getTrackBeingSent().id}getTrackBeingSent(){return this.enabled?this.processedTrack||this.nativeTrack:this.nativeTrack}switchCamera(){return c(this,null,function*(){var s;let t=this.getMediaTrackSettings().facingMode;if(!t||this.source!=="regular"){d.d(this.TAG,"facingMode not supported");return}let i=t==="environment"?"user":"environment";(s=this.nativeTrack)==null||s.stop();let r=yield this.replaceTrackWith(this.buildNewSettings({facingMode:i,deviceId:void 0}));yield this.replaceSender(r,this.enabled),this.nativeTrack=r,yield this.processPlugins(),this.videoHandler.updateSinks(),this.settings=this.buildNewSettings({deviceId:this.nativeTrack.getSettings().deviceId,facingMode:i}),q.updateSelection("videoInput",{deviceId:this.settings.deviceId,groupId:this.nativeTrack.getSettings().groupId})})}replaceTrackWith(t){return c(this,null,function*(){let i=this.nativeTrack;i==null||i.stop();try{let r=yield Es(t);return d.d(this.TAG,"replaceTrack, Previous track stopped",i,"newTrack",r),this.settings.deviceId==="default"&&(this.settings=this.buildNewSettings({deviceId:this.nativeTrack.getSettings().deviceId})),r}catch(r){throw this.isPublished&&this.eventBus.analytics.publish(M.publish({error:r})),r}})}replaceTrackWithBlank(){return c(this,null,function*(){let t=this.nativeTrack,i=Se.getEmptyVideoTrack(t);return t==null||t.stop(),d.d(this.TAG,"replaceTrackWithBlank, Previous track stopped",t,"newTrack",i),i})}replaceSender(t,i){return c(this,null,function*(){i?yield this.replaceSenderTrack(this.processedTrack||t):yield this.replaceSenderTrack(t),this.stream.replaceStreamTrack(this.nativeTrack,t)})}};var $e="renegotiation-callback-id",Yt="ion-sfu";var We="SUBSCRIBE_ICE_CONNECTION_CALLBACK_ID";var _s="https://event.100ms.live/v2/client/report",Ns="https://event-nonprod.100ms.live/v2/client/report";var V={DEVICE_CHANGE:"device-change",LOCAL_AUDIO_ENABLED:"local-audio-enabled",LOCAL_VIDEO_ENABLED:"local-video-enabled",STATS_UPDATE:"stats-update",RTC_STATS_UPDATE:"rtc-stats-update",TRACK_DEGRADED:"track-degraded",TRACK_RESTORED:"track-restored",TRACK_AUDIO_LEVEL_UPDATE:"track-audio-level-update",LOCAL_AUDIO_SILENCE:"local-audio-silence",ANALYTICS:"analytics",AUDIO_PLUGIN_FAILED:"audio-plugin-failed",POLICY_CHANGE:"policy-change",LOCAL_ROLE_UPDATE:"local-role-update",AUDIO_TRACK_UPDATE:"audio-track-update",AUDIO_TRACK_ADDED:"audio-track-added",AUDIO_TRACK_REMOVED:"audio-track-removed",AUTOPLAY_ERROR:"autoplay-error",LEAVE:"leave"},Os="2.5",xs="20231201",ge="_handraise",fr=1e3,vr=64;var _=class a extends Fe{constructor(t,i,r){super(t,i,r);this._degraded=!1;this._degradedAt=null;this._layerDefinitions=[];this.history=new Mr;this.preferredLayer="high";this.setVideoHandler(new Ge(this))}setTrackId(t){this.bizTrackId=t}get trackId(){return this.bizTrackId||super.trackId}get degraded(){return this._degraded}get degradedAt(){return this._degradedAt}setEnabled(t){return c(this,null,function*(){t!==this.enabled&&(W(a.prototype,this,"setEnabled").call(this,t),this.videoHandler.updateSinks(!0))})}setPreferredLayer(t){return c(this,null,function*(){if(t==="none"){d.w("layer none will be ignored");return}if(this.preferredLayer=t,!!this.shouldSendVideoLayer(t,"preferLayer")){if(!this.hasSinks()){d.d(`[Remote Track] ${this.logIdentifier}
39
39
  streamId=${this.stream.id}
40
40
  trackId=${this.trackId}
41
41
  saving ${t}, source=${this.source}