@100mslive/hms-video-store 0.11.2-alpha.3 → 0.11.2-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Ja=Object.create;var tt=Object.defineProperty,Qa=Object.defineProperties,za=Object.getOwnPropertyDescriptor,Ya=Object.getOwnPropertyDescriptors,Xa=Object.getOwnPropertyNames,Wt=Object.getOwnPropertySymbols,hs=Object.getPrototypeOf,or=Object.prototype.hasOwnProperty,ms=Object.prototype.propertyIsEnumerable,Za=Reflect.get;var ps=(s,e,t)=>e in s?tt(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,m=(s,e)=>{for(var t in e||(e={}))or.call(e,t)&&ps(s,t,e[t]);if(Wt)for(var t of Wt(e))ms.call(e,t)&&ps(s,t,e[t]);return s},k=(s,e)=>Qa(s,Ya(e));var nr=(s,e)=>{var t={};for(var i in s)or.call(s,i)&&e.indexOf(i)<0&&(t[i]=s[i]);if(s!=null&&Wt)for(var i of Wt(s))e.indexOf(i)<0&&ms.call(s,i)&&(t[i]=s[i]);return t};var eo=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),to=(s,e)=>{for(var t in e)tt(s,t,{get:e[t],enumerable:!0})},Ss=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Xa(e))!or.call(s,r)&&r!==t&&tt(s,r,{get:()=>e[r],enumerable:!(i=za(e,r))||i.enumerable});return s};var it=(s,e,t)=>(t=s!=null?Ja(hs(s)):{},Ss(e||!s||!s.__esModule?tt(t,"default",{value:s,enumerable:!0}):t,s)),io=s=>Ss(tt({},"__esModule",{value:!0}),s);var q=(s,e,t)=>Za(hs(s),t,e);var c=(s,e,t)=>new Promise((i,r)=>{var a=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(a,o);n((t=t.apply(s,e)).next())});var Hr=eo((Gd,jo)=>{jo.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 Kc={};to(Kc,{DeviceType:()=>Dr,HMSAudioPluginType:()=>Zt,HMSLogLevel:()=>kr,HMSMessageType:()=>gs,HMSNotificationSeverity:()=>cr,HMSNotificationTypes:()=>qt,HMSPlaylistType:()=>dr,HMSPluginUnsupportedTypes:()=>ei,HMSReactiveStore:()=>Oe,HMSRecordingState:()=>wr,HMSRoomState:()=>Kt,HMSStats:()=>Ze,HMSVideoPluginCanvasContextType:()=>ai,HMSVideoPluginType:()=>si,createDefaultStatsStore:()=>st,createDefaultStoreState:()=>rt,parsedUserAgent:()=>ce,selectAppData:()=>gn,selectAppDataByPath:()=>fn,selectAudioPlaylist:()=>Mr,selectAudioPlaylistTrackByPeerID:()=>wn,selectAudioTrackByID:()=>Mn,selectAudioTrackByPeerID:()=>ma,selectAudioTrackVolume:()=>Yr,selectAudioVolumeByPeerID:()=>Un,selectAuxiliaryAudioByPeerID:()=>In,selectAuxiliaryTracksByPeerID:()=>En,selectAvailableRoleNames:()=>Ho,selectBroadcastMessages:()=>fa,selectBroadcastMessagesUnreadCount:()=>$n,selectCameraStreamByPeerID:()=>Pn,selectConnectionQualities:()=>no,selectConnectionQualityByPeerID:()=>Hn,selectDegradedTracks:()=>Po,selectDevices:()=>oo,selectDidIJoinWithin:()=>pc,selectDominantSpeaker:()=>go,selectEffectsKey:()=>xo,selectErrors:()=>vs,selectFullAppData:()=>Jt,selectHLSState:()=>wo,selectHMSBroadcastMessages:()=>ks,selectHMSMessages:()=>Ue,selectHMSMessagesCount:()=>Eo,selectHMSStats:()=>ja,selectHandRaisedPeers:()=>Fo,selectHasPeerHandRaised:()=>Yn,selectIsAllowedToPreviewMedia:()=>sc,selectIsAllowedToPublish:()=>rc,selectIsAllowedToSubscribe:()=>Io,selectIsAudioLocallyMuted:()=>zr,selectIsConnectedToRoom:()=>me,selectIsEffectsEnabled:()=>Oo,selectIsInPreview:()=>mr,selectIsLargeRoom:()=>No,selectIsLocalAudioEnabled:()=>To,selectIsLocalAudioPluginPresent:()=>dc,selectIsLocalScreenShared:()=>zt,selectIsLocalVideoDisplayEnabled:()=>hr,selectIsLocalVideoEnabled:()=>Qt,selectIsLocalVideoPluginPresent:()=>cc,selectIsLocallyMutedByPeerID:()=>On,selectIsPeerAudioEnabled:()=>_n,selectIsPeerVideoEnabled:()=>Nn,selectIsRoleAllowedToPublish:()=>ac,selectIsScreenShareLocallyMutedByPeerID:()=>xn,selectIsSomeoneScreenSharing:()=>fo,selectLocalAudioTrackID:()=>Y,selectLocalMediaSettings:()=>ur,selectLocalPeer:()=>j,selectLocalPeerID:()=>ne,selectLocalPeerName:()=>po,selectLocalPeerRole:()=>lt,selectLocalPeerRoleName:()=>ho,selectLocalTrackIDs:()=>pr,selectLocalVideoTrackID:()=>$,selectMessageByMessageID:()=>Zn,selectMessageIDsInOrder:()=>lr,selectMessagesByPeerID:()=>Wn,selectMessagesByRole:()=>Kn,selectMessagesMap:()=>dt,selectMessagesUnreadCountByPeerID:()=>jn,selectMessagesUnreadCountByRole:()=>qn,selectPeerAudioByID:()=>Rn,selectPeerByCondition:()=>lc,selectPeerByID:()=>W,selectPeerCount:()=>co,selectPeerMetadata:()=>zn,selectPeerName:()=>Xn,selectPeerNameByID:()=>vn,selectPeerScreenSharing:()=>ys,selectPeerSharingAudio:()=>vo,selectPeerSharingAudioPlaylist:()=>ko,selectPeerSharingVideoPlaylist:()=>yo,selectPeers:()=>ie,selectPeersByCondition:()=>uc,selectPeersByRole:()=>Jn,selectPeersByRoles:()=>Qn,selectPeersMap:()=>F,selectPeersScreenSharing:()=>Mo,selectPeersWithAudioStatus:()=>ec,selectPermissions:()=>gr,selectPollByID:()=>Xr,selectPolls:()=>Bo,selectPollsMap:()=>Tr,selectPreviewRole:()=>Sr,selectPreviewRoleName:()=>Ps,selectRTMPState:()=>Lo,selectRecentError:()=>so,selectRecordingState:()=>Co,selectRemotePeers:()=>So,selectRoleByRoleName:()=>va,selectRoleChangeRequest:()=>ic,selectRolesMap:()=>re,selectRoom:()=>x,selectRoomID:()=>ao,selectRoomStartTime:()=>_o,selectRoomStarted:()=>Ro,selectRoomState:()=>J,selectScreenAudioTrackByID:()=>yn,selectScreenShareAudioByPeerID:()=>Qr,selectScreenShareByPeerID:()=>Dn,selectScreenSharesByPeerId:()=>Jr,selectScreenVideoTrackByID:()=>kn,selectScreenshareAudioVolumeByPeerID:()=>Vn,selectSessionId:()=>Do,selectSessionMetadata:()=>Vo,selectSessionStore:()=>Tn,selectSimulcastLayerByTrack:()=>Bn,selectSpeakers:()=>Ms,selectTemplateAppData:()=>Uo,selectTrackAudioByID:()=>An,selectTrackByID:()=>kt,selectTracksMap:()=>w,selectUnreadHMSBroadcastMessagesCount:()=>bo,selectUnreadHMSMessagesCount:()=>Ao,selectVideoPlaylist:()=>yr,selectVideoPlaylistAudioTrackByPeerID:()=>Ln,selectVideoPlaylistVideoTrackByPeerID:()=>Cn,selectVideoTrackByID:()=>jr,selectVideoTrackByPeerID:()=>ha,selectWhiteboard:()=>Go,selectWhiteboards:()=>Es,simulcastMapping:()=>be});module.exports=io(Kc);var Kt=(n=>(n.Disconnected="Disconnected",n.Preview="Preview",n.Connecting="Connecting",n.Connected="Connected",n.Reconnecting="Reconnecting",n.Disconnecting="Disconnecting",n.Failed="Failed",n))(Kt||{});var rt=()=>({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}),st=()=>({peerStats:{},remoteTrackStats:{},localTrackStats:{},localPeer:{id:""}});var gs=(e=>(e.CHAT="chat",e))(gs||{});var cr=(t=>(t.INFO="info",t.ERROR="error",t))(cr||{}),qt=(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))(qt||{});var dr=(t=>(t.audio="audio",t.video="video",t))(dr||{});var P=require("reselect");function Ie(s,e){let t,i;if(e)for(let r of e.auxiliaryTracks){let a=s[r];ro(a)&&(i=at(a)?a:i,t=ot(a)?a:t)}return{video:t,audio:i}}function at(s){return s&&s.type==="audio"}function ot(s){return s&&s.type==="video"}function ro(s){return s&&s.source==="screen"}function jt(s){return s&&s.source==="audioplaylist"}function nt(s){return s&&s.source==="videoplaylist"}function Ts(s){return s?!!(s!=null&&s.degraded):!1}function xe(s,e){return e&&s.tracks[e]?s.tracks[e].enabled:!1}function fs(s,e){return e&&s.tracks[e]?s.tracks[e].displayEnabled:!1}function ct(s){var r;let e=!1,t=!1,i=!1;return(r=s==null?void 0:s.publishParams)!=null&&r.allowed&&(e=s.publishParams.allowed.includes("video"),t=s.publishParams.allowed.includes("audio"),i=s.publishParams.allowed.includes("screen")),{video:e,audio:t,screen:i}}var x=s=>s.room,vs=s=>s.errors,so=(0,P.createSelector)(vs,s=>s.length===0?null:s.at(-1)),ao=(0,P.createSelector)(x,s=>s.id),F=s=>s.peers,dt=s=>s.messages.byID,lr=s=>s.messages.allIDs,w=s=>s.tracks,ur=s=>s.settings,Jt=s=>s.appData,oo=s=>s.devices,Ms=s=>s.speakers,no=s=>s.connectionQualities,me=(0,P.createSelector)([x],s=>s&&s.isConnected),co=(0,P.createSelector)([me,x],(s,e)=>s?e.peerCount!==void 0?e.peerCount||1:e.peers.length:Math.max(e.peerCount!==void 0?e.peerCount:e.peers.length-1,0)),lo=s=>s.hideLocalPeer,ie=(0,P.createSelector)([x,F,lo],(s,e,t)=>t?s.peers.filter(i=>s.localPeer!==i).map(i=>e[i]):s.peers.map(i=>e[i])),uo=(0,P.createSelector)(w,s=>Object.values(s)),j=(0,P.createSelector)(x,F,(s,e)=>e[s.localPeer]),ne=(0,P.createSelector)(x,s=>s.localPeer),po=(0,P.createSelector)(j,s=>s==null?void 0:s.name),ho=(0,P.createSelector)(j,s=>s==null?void 0:s.roleName),Y=(0,P.createSelector)(j,s=>s==null?void 0:s.audioTrack),$=(0,P.createSelector)(j,s=>s==null?void 0:s.videoTrack),mo=(0,P.createSelector)(j,s=>s==null?void 0:s.auxiliaryTracks),pr=(0,P.createSelector)([Y,$,mo],(s,e,t)=>{let i=t?[...t]:[];return s&&i.unshift(s),e&&i.unshift(e),i}),So=(0,P.createSelector)(ie,s=>s.filter(e=>!e.isLocal)),go=(0,P.createSelector)(F,Ms,(s,e)=>{let t=Object.entries(e).sort((i,r)=>{var n,l;let a=((n=i[1])==null?void 0:n.audioLevel)||0;return(((l=r[1])==null?void 0:l.audioLevel)||0)>a?1:-1});if(t.length>0&&t[0][1].audioLevel&&t[0][1].audioLevel>0){let i=t[0][1].peerID;if(i in s)return s[i]}return null}),To=s=>{let e=j(s);return xe(s,e==null?void 0:e.audioTrack)},Qt=s=>{let e=j(s);return xe(s,e==null?void 0:e.videoTrack)},hr=s=>{let e=j(s);return fs(s,e==null?void 0:e.videoTrack)},zt=(0,P.createSelector)(j,w,(s,e)=>{let{video:t,audio:i}=Ie(e,s);return!!(t||i)}),ys=(0,P.createSelector)(F,w,(s,e)=>{let t;for(let i in s){let r=s[i],{video:a,audio:o}=Ie(e,r);if(a)return r;o&&!t&&(t=r)}return t}),fo=(0,P.createSelector)(ys,s=>!!s),vo=(0,P.createSelector)(F,w,(s,e)=>{for(let t in s){let i=s[t],{audio:r,video:a}=Ie(e,i);if(!a&&r)return i}}),Mo=(0,P.createSelector)(F,w,(s,e)=>{let t=[],i=[];for(let r in s){let a=s[r],{video:o,audio:n}=Ie(e,a);o?t.push(a):n&&i.push(a)}return t.concat(i)}),yo=(0,P.createSelector)(F,w,(s,e)=>{for(let t in e){let i=e[t];if(nt(i)&&ot(i)&&i.peerId)return s[i.peerId]}}),ko=(0,P.createSelector)(F,w,(s,e)=>{for(let t in e){let i=e[t];if(jt(i)&&i.peerId)return s[i.peerId]}}),Po=(0,P.createSelector)(uo,s=>s.filter(Ts)),Eo=(0,P.createSelector)(lr,s=>s.length),Ao=(0,P.createSelector)(dt,s=>Object.values(s).filter(e=>!e.read).length),Ue=(0,P.createSelector)(lr,dt,(s,e)=>{let t=[];return s.forEach(i=>{t.push(e[i])}),t}),ks=(0,P.createSelector)(Ue,s=>s.filter(e=>{var t;return!e.recipientPeer&&!(e.recipientRoles&&((t=e.recipientRoles)==null?void 0:t.length)>0)})),bo=(0,P.createSelector)(ks,s=>s.filter(e=>!e.read).length),J=(0,P.createSelector)([x],s=>s&&s.roomState),mr=(0,P.createSelector)(J,s=>s==="Preview"),Ro=(0,P.createSelector)(x,s=>s.roomState!=="Disconnected"),re=s=>s.roles,Ho=(0,P.createSelector)([re],s=>Object.keys(s)),lt=(0,P.createSelector)([j,re],(s,e)=>s!=null&&s.roleName?e[s.roleName]:null),Ps=s=>{var e;return(e=s.preview)==null?void 0:e.asRole},Sr=(0,P.createSelector)([Ps,re],(s,e)=>s?e[s]:null),Io=(0,P.createSelector)([lt],s=>{var e;return(e=s==null?void 0:s.subscribeParams)!=null&&e.subscribeToRoles?s.subscribeParams.subscribeToRoles.length>0:!1}),gr=(0,P.createSelector)(lt,s=>s==null?void 0:s.permissions),Co=(0,P.createSelector)(x,s=>s.recording),Lo=(0,P.createSelector)(x,s=>s.rtmp),wo=(0,P.createSelector)(x,s=>s.hls),Do=(0,P.createSelector)(x,s=>s.sessionId),_o=(0,P.createSelector)(x,s=>s.startedAt),No=(0,P.createSelector)(x,s=>!!s.isLargeRoom),Oo=(0,P.createSelector)(x,s=>!!s.isEffectsEnabled),xo=(0,P.createSelector)(x,s=>s.effectsKey),Uo=s=>s.templateAppData,Vo=s=>s.sessionMetadata,Tr=s=>s.polls,Bo=s=>Object.values(s.polls),Fo=(0,P.createSelector)(ie,s=>s.filter(e=>e.isHandRaised)),Es=s=>s.whiteboards,Go=(0,P.createSelector)(Es,s=>Object.values(s)[0]);var fr=require("reselect");var As=(s="audio")=>e=>e.playlist[s].list,vr=(s="audio")=>e=>e.playlist[s].selection,bs=(s="audio")=>e=>e.playlist[s].progress,Rs=(s="audio")=>e=>e.playlist[s].currentTime,Hs=(s="audio")=>e=>e.playlist[s].playbackRate,Is=(s="audio")=>e=>e.playlist[s].volume,Cs=(s="audio")=>(0,fr.createSelector)(As(s),e=>Object.values(e)),Ls=(s="audio")=>(0,fr.createSelector)(As(s),vr(s),(e,t)=>{if(t.id)return e[t.id]}),Mr={selection:vr("audio"),progress:bs("audio"),currentTime:Rs("audio"),playbackRate:Hs("audio"),volume:Is("audio"),list:Cs("audio"),selectedItem:Ls("audio")},yr={selection:vr("video"),progress:bs("video"),currentTime:Rs("video"),playbackRate:Hs("video"),volume:Is("video"),list:Cs("video"),selectedItem:Ls("video")};var H=require("reselect");function A(s){return e=>t=>s(t,e)}var kr=(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))(kr||{}),$o=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 a=performance.measure(r,r);this.log(1,t,r,a==null?void 0:a.duration),performance.clearMarks(r),performance.clearMeasures(r)}catch(a){this.log(1,t,r,a)}break}}}};d.level=$o?7:0;var Ve=class{constructor(e){this.tracks=new Array;this.nativeStream=e,this.id=e.id}updateId(e){this.id=e}};var Ns=require("ua-parser-js"),ce=new Ns.UAParser,N=typeof window!="undefined",ws,Ce=typeof window=="undefined"&&!((ws=ce.getBrowser().name)!=null&&ws.toLowerCase().includes("electron"));var Wo=()=>!Ce,ad=Wo(),Yt=()=>ce.getDevice().type==="mobile",Os=()=>typeof document!="undefined"&&document.hidden,Pr=()=>{var s;return((s=ce.getOS().name)==null?void 0:s.toLowerCase())==="ios"},Ds,_s,xs=((_s=(Ds=ce.getBrowser())==null?void 0:Ds.name)==null?void 0:_s.toLowerCase())==="firefox";var Xt=s=>s?`{
|
|
1
|
+
"use strict";var Ja=Object.create;var tt=Object.defineProperty,Qa=Object.defineProperties,za=Object.getOwnPropertyDescriptor,Ya=Object.getOwnPropertyDescriptors,Xa=Object.getOwnPropertyNames,Wt=Object.getOwnPropertySymbols,hs=Object.getPrototypeOf,or=Object.prototype.hasOwnProperty,ms=Object.prototype.propertyIsEnumerable,Za=Reflect.get;var ps=(s,e,t)=>e in s?tt(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,m=(s,e)=>{for(var t in e||(e={}))or.call(e,t)&&ps(s,t,e[t]);if(Wt)for(var t of Wt(e))ms.call(e,t)&&ps(s,t,e[t]);return s},k=(s,e)=>Qa(s,Ya(e));var nr=(s,e)=>{var t={};for(var i in s)or.call(s,i)&&e.indexOf(i)<0&&(t[i]=s[i]);if(s!=null&&Wt)for(var i of Wt(s))e.indexOf(i)<0&&ms.call(s,i)&&(t[i]=s[i]);return t};var eo=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),to=(s,e)=>{for(var t in e)tt(s,t,{get:e[t],enumerable:!0})},Ss=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Xa(e))!or.call(s,r)&&r!==t&&tt(s,r,{get:()=>e[r],enumerable:!(i=za(e,r))||i.enumerable});return s};var it=(s,e,t)=>(t=s!=null?Ja(hs(s)):{},Ss(e||!s||!s.__esModule?tt(t,"default",{value:s,enumerable:!0}):t,s)),io=s=>Ss(tt({},"__esModule",{value:!0}),s);var q=(s,e,t)=>Za(hs(s),t,e);var c=(s,e,t)=>new Promise((i,r)=>{var a=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(a,o);n((t=t.apply(s,e)).next())});var Hr=eo((Gd,jo)=>{jo.exports={version:"0.11.2-alpha.4",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:"75d0bdf72d3ed51decf146ccdba347bf8dd8d25d"}});var Kc={};to(Kc,{DeviceType:()=>Dr,HMSAudioPluginType:()=>Zt,HMSLogLevel:()=>kr,HMSMessageType:()=>gs,HMSNotificationSeverity:()=>cr,HMSNotificationTypes:()=>qt,HMSPlaylistType:()=>dr,HMSPluginUnsupportedTypes:()=>ei,HMSReactiveStore:()=>Oe,HMSRecordingState:()=>wr,HMSRoomState:()=>Kt,HMSStats:()=>Ze,HMSVideoPluginCanvasContextType:()=>ai,HMSVideoPluginType:()=>si,createDefaultStatsStore:()=>st,createDefaultStoreState:()=>rt,parsedUserAgent:()=>ce,selectAppData:()=>gn,selectAppDataByPath:()=>fn,selectAudioPlaylist:()=>Mr,selectAudioPlaylistTrackByPeerID:()=>wn,selectAudioTrackByID:()=>Mn,selectAudioTrackByPeerID:()=>ma,selectAudioTrackVolume:()=>Yr,selectAudioVolumeByPeerID:()=>Un,selectAuxiliaryAudioByPeerID:()=>In,selectAuxiliaryTracksByPeerID:()=>En,selectAvailableRoleNames:()=>Ho,selectBroadcastMessages:()=>fa,selectBroadcastMessagesUnreadCount:()=>$n,selectCameraStreamByPeerID:()=>Pn,selectConnectionQualities:()=>no,selectConnectionQualityByPeerID:()=>Hn,selectDegradedTracks:()=>Po,selectDevices:()=>oo,selectDidIJoinWithin:()=>pc,selectDominantSpeaker:()=>go,selectEffectsKey:()=>xo,selectErrors:()=>vs,selectFullAppData:()=>Jt,selectHLSState:()=>wo,selectHMSBroadcastMessages:()=>ks,selectHMSMessages:()=>Ue,selectHMSMessagesCount:()=>Eo,selectHMSStats:()=>ja,selectHandRaisedPeers:()=>Fo,selectHasPeerHandRaised:()=>Yn,selectIsAllowedToPreviewMedia:()=>sc,selectIsAllowedToPublish:()=>rc,selectIsAllowedToSubscribe:()=>Io,selectIsAudioLocallyMuted:()=>zr,selectIsConnectedToRoom:()=>me,selectIsEffectsEnabled:()=>Oo,selectIsInPreview:()=>mr,selectIsLargeRoom:()=>No,selectIsLocalAudioEnabled:()=>To,selectIsLocalAudioPluginPresent:()=>dc,selectIsLocalScreenShared:()=>zt,selectIsLocalVideoDisplayEnabled:()=>hr,selectIsLocalVideoEnabled:()=>Qt,selectIsLocalVideoPluginPresent:()=>cc,selectIsLocallyMutedByPeerID:()=>On,selectIsPeerAudioEnabled:()=>_n,selectIsPeerVideoEnabled:()=>Nn,selectIsRoleAllowedToPublish:()=>ac,selectIsScreenShareLocallyMutedByPeerID:()=>xn,selectIsSomeoneScreenSharing:()=>fo,selectLocalAudioTrackID:()=>Y,selectLocalMediaSettings:()=>ur,selectLocalPeer:()=>j,selectLocalPeerID:()=>ne,selectLocalPeerName:()=>po,selectLocalPeerRole:()=>lt,selectLocalPeerRoleName:()=>ho,selectLocalTrackIDs:()=>pr,selectLocalVideoTrackID:()=>$,selectMessageByMessageID:()=>Zn,selectMessageIDsInOrder:()=>lr,selectMessagesByPeerID:()=>Wn,selectMessagesByRole:()=>Kn,selectMessagesMap:()=>dt,selectMessagesUnreadCountByPeerID:()=>jn,selectMessagesUnreadCountByRole:()=>qn,selectPeerAudioByID:()=>Rn,selectPeerByCondition:()=>lc,selectPeerByID:()=>W,selectPeerCount:()=>co,selectPeerMetadata:()=>zn,selectPeerName:()=>Xn,selectPeerNameByID:()=>vn,selectPeerScreenSharing:()=>ys,selectPeerSharingAudio:()=>vo,selectPeerSharingAudioPlaylist:()=>ko,selectPeerSharingVideoPlaylist:()=>yo,selectPeers:()=>ie,selectPeersByCondition:()=>uc,selectPeersByRole:()=>Jn,selectPeersByRoles:()=>Qn,selectPeersMap:()=>F,selectPeersScreenSharing:()=>Mo,selectPeersWithAudioStatus:()=>ec,selectPermissions:()=>gr,selectPollByID:()=>Xr,selectPolls:()=>Bo,selectPollsMap:()=>Tr,selectPreviewRole:()=>Sr,selectPreviewRoleName:()=>Ps,selectRTMPState:()=>Lo,selectRecentError:()=>so,selectRecordingState:()=>Co,selectRemotePeers:()=>So,selectRoleByRoleName:()=>va,selectRoleChangeRequest:()=>ic,selectRolesMap:()=>re,selectRoom:()=>x,selectRoomID:()=>ao,selectRoomStartTime:()=>_o,selectRoomStarted:()=>Ro,selectRoomState:()=>J,selectScreenAudioTrackByID:()=>yn,selectScreenShareAudioByPeerID:()=>Qr,selectScreenShareByPeerID:()=>Dn,selectScreenSharesByPeerId:()=>Jr,selectScreenVideoTrackByID:()=>kn,selectScreenshareAudioVolumeByPeerID:()=>Vn,selectSessionId:()=>Do,selectSessionMetadata:()=>Vo,selectSessionStore:()=>Tn,selectSimulcastLayerByTrack:()=>Bn,selectSpeakers:()=>Ms,selectTemplateAppData:()=>Uo,selectTrackAudioByID:()=>An,selectTrackByID:()=>kt,selectTracksMap:()=>w,selectUnreadHMSBroadcastMessagesCount:()=>bo,selectUnreadHMSMessagesCount:()=>Ao,selectVideoPlaylist:()=>yr,selectVideoPlaylistAudioTrackByPeerID:()=>Ln,selectVideoPlaylistVideoTrackByPeerID:()=>Cn,selectVideoTrackByID:()=>jr,selectVideoTrackByPeerID:()=>ha,selectWhiteboard:()=>Go,selectWhiteboards:()=>Es,simulcastMapping:()=>be});module.exports=io(Kc);var Kt=(n=>(n.Disconnected="Disconnected",n.Preview="Preview",n.Connecting="Connecting",n.Connected="Connected",n.Reconnecting="Reconnecting",n.Disconnecting="Disconnecting",n.Failed="Failed",n))(Kt||{});var rt=()=>({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}),st=()=>({peerStats:{},remoteTrackStats:{},localTrackStats:{},localPeer:{id:""}});var gs=(e=>(e.CHAT="chat",e))(gs||{});var cr=(t=>(t.INFO="info",t.ERROR="error",t))(cr||{}),qt=(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))(qt||{});var dr=(t=>(t.audio="audio",t.video="video",t))(dr||{});var P=require("reselect");function Ie(s,e){let t,i;if(e)for(let r of e.auxiliaryTracks){let a=s[r];ro(a)&&(i=at(a)?a:i,t=ot(a)?a:t)}return{video:t,audio:i}}function at(s){return s&&s.type==="audio"}function ot(s){return s&&s.type==="video"}function ro(s){return s&&s.source==="screen"}function jt(s){return s&&s.source==="audioplaylist"}function nt(s){return s&&s.source==="videoplaylist"}function Ts(s){return s?!!(s!=null&&s.degraded):!1}function xe(s,e){return e&&s.tracks[e]?s.tracks[e].enabled:!1}function fs(s,e){return e&&s.tracks[e]?s.tracks[e].displayEnabled:!1}function ct(s){var r;let e=!1,t=!1,i=!1;return(r=s==null?void 0:s.publishParams)!=null&&r.allowed&&(e=s.publishParams.allowed.includes("video"),t=s.publishParams.allowed.includes("audio"),i=s.publishParams.allowed.includes("screen")),{video:e,audio:t,screen:i}}var x=s=>s.room,vs=s=>s.errors,so=(0,P.createSelector)(vs,s=>s.length===0?null:s.at(-1)),ao=(0,P.createSelector)(x,s=>s.id),F=s=>s.peers,dt=s=>s.messages.byID,lr=s=>s.messages.allIDs,w=s=>s.tracks,ur=s=>s.settings,Jt=s=>s.appData,oo=s=>s.devices,Ms=s=>s.speakers,no=s=>s.connectionQualities,me=(0,P.createSelector)([x],s=>s&&s.isConnected),co=(0,P.createSelector)([me,x],(s,e)=>s?e.peerCount!==void 0?e.peerCount||1:e.peers.length:Math.max(e.peerCount!==void 0?e.peerCount:e.peers.length-1,0)),lo=s=>s.hideLocalPeer,ie=(0,P.createSelector)([x,F,lo],(s,e,t)=>t?s.peers.filter(i=>s.localPeer!==i).map(i=>e[i]):s.peers.map(i=>e[i])),uo=(0,P.createSelector)(w,s=>Object.values(s)),j=(0,P.createSelector)(x,F,(s,e)=>e[s.localPeer]),ne=(0,P.createSelector)(x,s=>s.localPeer),po=(0,P.createSelector)(j,s=>s==null?void 0:s.name),ho=(0,P.createSelector)(j,s=>s==null?void 0:s.roleName),Y=(0,P.createSelector)(j,s=>s==null?void 0:s.audioTrack),$=(0,P.createSelector)(j,s=>s==null?void 0:s.videoTrack),mo=(0,P.createSelector)(j,s=>s==null?void 0:s.auxiliaryTracks),pr=(0,P.createSelector)([Y,$,mo],(s,e,t)=>{let i=t?[...t]:[];return s&&i.unshift(s),e&&i.unshift(e),i}),So=(0,P.createSelector)(ie,s=>s.filter(e=>!e.isLocal)),go=(0,P.createSelector)(F,Ms,(s,e)=>{let t=Object.entries(e).sort((i,r)=>{var n,l;let a=((n=i[1])==null?void 0:n.audioLevel)||0;return(((l=r[1])==null?void 0:l.audioLevel)||0)>a?1:-1});if(t.length>0&&t[0][1].audioLevel&&t[0][1].audioLevel>0){let i=t[0][1].peerID;if(i in s)return s[i]}return null}),To=s=>{let e=j(s);return xe(s,e==null?void 0:e.audioTrack)},Qt=s=>{let e=j(s);return xe(s,e==null?void 0:e.videoTrack)},hr=s=>{let e=j(s);return fs(s,e==null?void 0:e.videoTrack)},zt=(0,P.createSelector)(j,w,(s,e)=>{let{video:t,audio:i}=Ie(e,s);return!!(t||i)}),ys=(0,P.createSelector)(F,w,(s,e)=>{let t;for(let i in s){let r=s[i],{video:a,audio:o}=Ie(e,r);if(a)return r;o&&!t&&(t=r)}return t}),fo=(0,P.createSelector)(ys,s=>!!s),vo=(0,P.createSelector)(F,w,(s,e)=>{for(let t in s){let i=s[t],{audio:r,video:a}=Ie(e,i);if(!a&&r)return i}}),Mo=(0,P.createSelector)(F,w,(s,e)=>{let t=[],i=[];for(let r in s){let a=s[r],{video:o,audio:n}=Ie(e,a);o?t.push(a):n&&i.push(a)}return t.concat(i)}),yo=(0,P.createSelector)(F,w,(s,e)=>{for(let t in e){let i=e[t];if(nt(i)&&ot(i)&&i.peerId)return s[i.peerId]}}),ko=(0,P.createSelector)(F,w,(s,e)=>{for(let t in e){let i=e[t];if(jt(i)&&i.peerId)return s[i.peerId]}}),Po=(0,P.createSelector)(uo,s=>s.filter(Ts)),Eo=(0,P.createSelector)(lr,s=>s.length),Ao=(0,P.createSelector)(dt,s=>Object.values(s).filter(e=>!e.read).length),Ue=(0,P.createSelector)(lr,dt,(s,e)=>{let t=[];return s.forEach(i=>{t.push(e[i])}),t}),ks=(0,P.createSelector)(Ue,s=>s.filter(e=>{var t;return!e.recipientPeer&&!(e.recipientRoles&&((t=e.recipientRoles)==null?void 0:t.length)>0)})),bo=(0,P.createSelector)(ks,s=>s.filter(e=>!e.read).length),J=(0,P.createSelector)([x],s=>s&&s.roomState),mr=(0,P.createSelector)(J,s=>s==="Preview"),Ro=(0,P.createSelector)(x,s=>s.roomState!=="Disconnected"),re=s=>s.roles,Ho=(0,P.createSelector)([re],s=>Object.keys(s)),lt=(0,P.createSelector)([j,re],(s,e)=>s!=null&&s.roleName?e[s.roleName]:null),Ps=s=>{var e;return(e=s.preview)==null?void 0:e.asRole},Sr=(0,P.createSelector)([Ps,re],(s,e)=>s?e[s]:null),Io=(0,P.createSelector)([lt],s=>{var e;return(e=s==null?void 0:s.subscribeParams)!=null&&e.subscribeToRoles?s.subscribeParams.subscribeToRoles.length>0:!1}),gr=(0,P.createSelector)(lt,s=>s==null?void 0:s.permissions),Co=(0,P.createSelector)(x,s=>s.recording),Lo=(0,P.createSelector)(x,s=>s.rtmp),wo=(0,P.createSelector)(x,s=>s.hls),Do=(0,P.createSelector)(x,s=>s.sessionId),_o=(0,P.createSelector)(x,s=>s.startedAt),No=(0,P.createSelector)(x,s=>!!s.isLargeRoom),Oo=(0,P.createSelector)(x,s=>!!s.isEffectsEnabled),xo=(0,P.createSelector)(x,s=>s.effectsKey),Uo=s=>s.templateAppData,Vo=s=>s.sessionMetadata,Tr=s=>s.polls,Bo=s=>Object.values(s.polls),Fo=(0,P.createSelector)(ie,s=>s.filter(e=>e.isHandRaised)),Es=s=>s.whiteboards,Go=(0,P.createSelector)(Es,s=>Object.values(s)[0]);var fr=require("reselect");var As=(s="audio")=>e=>e.playlist[s].list,vr=(s="audio")=>e=>e.playlist[s].selection,bs=(s="audio")=>e=>e.playlist[s].progress,Rs=(s="audio")=>e=>e.playlist[s].currentTime,Hs=(s="audio")=>e=>e.playlist[s].playbackRate,Is=(s="audio")=>e=>e.playlist[s].volume,Cs=(s="audio")=>(0,fr.createSelector)(As(s),e=>Object.values(e)),Ls=(s="audio")=>(0,fr.createSelector)(As(s),vr(s),(e,t)=>{if(t.id)return e[t.id]}),Mr={selection:vr("audio"),progress:bs("audio"),currentTime:Rs("audio"),playbackRate:Hs("audio"),volume:Is("audio"),list:Cs("audio"),selectedItem:Ls("audio")},yr={selection:vr("video"),progress:bs("video"),currentTime:Rs("video"),playbackRate:Hs("video"),volume:Is("video"),list:Cs("video"),selectedItem:Ls("video")};var H=require("reselect");function A(s){return e=>t=>s(t,e)}var kr=(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))(kr||{}),$o=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 a=performance.measure(r,r);this.log(1,t,r,a==null?void 0:a.duration),performance.clearMarks(r),performance.clearMeasures(r)}catch(a){this.log(1,t,r,a)}break}}}};d.level=$o?7:0;var Ve=class{constructor(e){this.tracks=new Array;this.nativeStream=e,this.id=e.id}updateId(e){this.id=e}};var Ns=require("ua-parser-js"),ce=new Ns.UAParser,N=typeof window!="undefined",ws,Ce=typeof window=="undefined"&&!((ws=ce.getBrowser().name)!=null&&ws.toLowerCase().includes("electron"));var Wo=()=>!Ce,ad=Wo(),Yt=()=>ce.getDevice().type==="mobile",Os=()=>typeof document!="undefined"&&document.hidden,Pr=()=>{var s;return((s=ce.getOS().name)==null?void 0:s.toLowerCase())==="ios"},Ds,_s,xs=((_s=(Ds=ce.getBrowser())==null?void 0:Ds.name)==null?void 0:_s.toLowerCase())==="firefox";var Xt=s=>s?`{
|
|
2
2
|
trackId: ${s.id};
|
|
3
3
|
kind: ${s.kind};
|
|
4
4
|
enabled: ${s.enabled};
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
break;
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
|
-
})()`;function X(s){if(s<0)throw Error("`ms` should be a positive integer");return new Promise(e=>{setTimeout(e,s)})}function ue(s){if(s<0)throw Error("`ms` should be a positive integer");if(typeof Worker=="undefined")return X(s);let e=new Worker(URL.createObjectURL(new Blob([Zo],{type:"application/javascript"})));return e.postMessage(["start",s]),new Promise(t=>{e.onmessage=i=>{i.data==="tick"&&(t(),e.terminate())}})}function ii(s,e=300){let t;return function(...i){clearTimeout(t),t=void 0;let r=this;t=setTimeout(()=>{s.apply(r,i)},e)}}var en=35,tn=5,ri=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 X(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 X(this.interval)})}sendAudioLevel(e=0){if(e=e>en?e:0,Math.abs(this.audioLevel-e)>tn){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 wr=(n=>(n.NONE="none",n.INITIALISED="initialised",n.STARTED="started",n.PAUSED="paused",n.RESUMED="resumed",n.STOPPED="stopped",n.FAILED="failed",n))(wr||{});var be={f:"high",h:"medium",q:"low"};var Dr=(i=>(i.videoInput="videoInput",i.audioInput="audioInput",i.audioOutput="audioOutput",i))(Dr||{});var ae=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,a){this.volume=e,this.codec=t,this.maxBitrate=i,this.deviceId=r,this.advanced=a}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,a,o,n,l){this.width=e,this.height=t,this.codec=i,this.maxFramerate=r,this.maxBitrate=n,this.deviceId=a,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 Yt()&&this.height&&this.width&&this.height>this.width?{width:this.height,height:this.width}:{width:this.width,height:this.height}}};var ht=class{constructor(){this._video=new ee().build();this._audio=new ae().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 Ge(this._video,this._audio,this._simulcast,this._screen||void 0)}},Ge=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 Js(s,e){return function(i){return i in s&&s[i]!==e[i]}}var oe=class s extends Pe{constructor(t,i,r,a,o=new ae().build()){super(t,i,r);this.eventBus=a;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=Js(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*(){Js(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&&!le(i)&&(this.settings=this.buildNewSettings({deviceId:i.getSettings().deviceId})),this.pluginsManager=new pt(this,a),this.setFirstTrackId(i.id),Pr()&&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 a=yield Ks(t);a.enabled=this.enabled,d.d(this.TAG,"replaceTrack, Previous track stopped",i,"newTrack",a),yield this.stream.replaceStreamTrack(i,a),this.nativeTrack=a,yield this.replaceSenderTrack(),r&&this.initAudioLevelMonitor()}catch(a){throw this.isPublished&&this.eventBus.analytics.publish(M.publish({error:a})),a}try{yield this.pluginsManager.reprocessPlugins()}catch(a){this.eventBus.audioPluginFailed.publish(a)}})}setEnabled(t){return c(this,null,function*(){t!==this.enabled&&(t&&le(this.nativeTrack)&&(yield this.replaceTrackWith(this.settings)),yield q(s.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(le(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 ri(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;q(s.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(),Pr()&&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:a,deviceId:o,advanced:n}=m(m({},this.settings),t);return new Le(i,r,a,o,n)}};var te=class s extends Pe{setEnabled(e){return c(this,null,function*(){e!==this.enabled&&(yield q(s.prototype,this,"setEnabled").call(this,e),yield this.subscribeToAudio(e))})}};var $e=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 a=r.getVideoTracks()[0];if((a==null?void 0:a.id)===i.id){if(!a.muted&&a.readyState==="live")return;this.reduceSinkCount()}else this.reduceSinkCount()}t.srcObject=new MediaStream([i]),this.sinkCount++}reduceSinkCount(){this.sinkCount>0&&this.sinkCount--}};var Xs=require("uuid");var mt={none:-1,low:0,medium:1,high:2},rn=.5,Qs=(s,e)=>{let t="high",i=e.width>e.height?"width":"height",r=[...s].sort((o,n)=>mt[o.layer]-mt[n.layer]),a=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(a<=u){t=l;break}else{let p=r[o+1],S=p?p.resolution[i]:Number.POSITIVE_INFINITY;if((a-u)/(S-u)<rn){t=l;break}}}return t};var _r=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}},zs=new _r;var Nr=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(ii(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}},Ys=new Nr;var We=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=(0,Xs.v4)()}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=Ys,this.intersectionObserver=zs)}isElementInViewport(e){let t=e.offsetTop,i=e.offsetLeft,r=e.offsetWidth,a=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+a>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:a}=i;if(r===0||a===0)continue;let o=Qs(this.track.getSimulcastDefinitions(),{width:r,height:a});e?e=mt[o]>mt[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 si=(t=>(t.TRANSFORM="TRANSFORM",t.ANALYZE="ANALYZE",t))(si||{}),ai=(t=>(t["2D"]="2d",t.WEBGL="webgl",t.WEBGL2="webgl2",t))(ai||{});var St=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 oi=class{constructor(e){this.eventBus=e;this.TAG="[VideoPluginsAnalytics]";this.initTime={},this.preProcessingAvgs=new St,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 St,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(ge.stats(i)),this.clean(e)}}failure(e,t){this.pluginAdded[e]&&(this.eventBus.analytics.publish(ge.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 a=h.MediaPluginErrors.InitFailed("VIDEO_PLUGINS",`failed during initialization of plugin${r.message||r}`);throw d.e(this.TAG,a),this.failure(e,a),a}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(a){let o=h.MediaPluginErrors.ProcessingFailed("VIDEO_PLUGINS",`Failed during processing of plugin${a.message||a}`);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 Zs=24,sn=320,an=240,gt=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 oi(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 a=h.MediaPluginErrors.AddAlreadyInProgress("VIDEO_PLUGINS","Add Plugin is already in Progress");throw this.analytics.failure(r,a),d.w("can't add another plugin when previous add is in progress"),a}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||Zs,a=0;t&&t>0?(d.i(this.TAG,`adding plugin ${e.getName()} with framerate ${t}`),t<r&&(a=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",a),this.pluginNumFramesToSkip[i]=a,this.pluginNumFramesSkipped[i]=a,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 ue(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||Zs,t=Math.floor(1e3/e);if(!this.hmsTrack.enabled||this.hmsTrack.nativeTrack.readyState==="ended"){this.pluginsLoopState==="running"&&this.resetCanvases(),this.pluginsLoopState="paused",yield ue(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 ue(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 a=(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 a(this.canvases[e],this.outputCanvas):yield a(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 a(o,this.outputCanvas)})):yield this.analytics.processWithTime(i,()=>c(this,null,function*(){return a(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=sn,height:t=an}=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 ni=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())}};var ea=require("uuid");var on=["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"],ci=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[...on,...e].reduce((t,i)=>k(m({},t),{[i]:this.getTimeTaken(i)}),{})}cleanup(){this.eventPerformanceMeasures={}}};var Or={isAudioMuted:!1,isVideoMuted:!1,audioInputDeviceId:"default",audioOutputDeviceId:"default",videoDeviceId:"default"},pe,di,Te=class s{constructor(e,t,i,r,a){this.store=e;this.observer=t;this.deviceManager=i;this.eventBus=r;this.analyticsTimer=a;this.TAG="[LocalTrackManager]";this.setScreenCaptureHandleConfig()}getTracksToPublish(){return c(this,arguments,function*(e=Or){let t=this.getAVTrackSettings(e);if(!t)return[];let i=!!t.audio,r=!!t.video,a=[],{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}),a=yield this.getLocalTracks(S,t,l)}catch(g){a=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&&a.push(o),n&&i&&!p&&a.push(n),a})}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 Ge(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 a;try{d.d("retrieving screenshare with ",{config:t},{constraints:r}),a=yield navigator.mediaDevices.getDisplayMedia(r)}catch(g){d.w(this.TAG,"error in getting screenshare - ",g);let f=Fe(g,"screen");throw this.eventBus.analytics.publish(M.publish({error:f,devices:this.deviceManager.getDevices(),settings:new Ge(i==null?void 0:i.video,i==null?void 0:i.audio,!1)})),f}let o=[],n=new De(a),l=a.getVideoTracks()[0],u=new U(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 a.getTracks().forEach(f=>f.stop()),g}o.push(u);let p=a.getAudioTracks()[0];if(p){let g=new oe(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:(0,ea.v4)(),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;pe||(pe=document.createElement("canvas"),pe.width=t,pe.height=i,(u=pe.getContext("2d"))==null||u.fillRect(0,0,t,i)),di||(di=setInterval(()=>{let p=pe==null?void 0:pe.getContext("2d");p&&p.fillRect(0,0,1,1)},1e3/r));let o=pe.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(di),di=void 0,pe=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),a=this.getErrorType(i,r);throw Fe(t,a)}})}getAVTrackSettings(e){let t=this.getAudioSettings(e),i=this.getVideoSettings(e);return!t&&!i?null:new ht().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 a=e.code===v.TracksErrors.OVER_CONSTRAINED,o=e.message.includes("audio"),n=e.message.includes("video");if(a){let l=new ht().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(s.getEmptyAudioTrack()),e.video==="empty"&&t.push(s.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"),a=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 a==null?void 0:a.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,a=(r==null?void 0:r.settings.deviceId)||e.audioInputDeviceId;return new ae().codec(t.audio.codec).maxBitrate(t.audio.bitRate).deviceId(a||Or.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,a=(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(a||Or.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 ae().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"),a=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(a&&(t!=null&&t.audio)){let n=new oe(i,a,"regular",this.eventBus,t.audio);o.push(n)}if(r&&(t!=null&&t.video)){let n=new U(i,r,"regular",this.eventBus,t.video);n.setSimulcastDefinitons(this.store.getSimulcastDefinitionsForPeer(this.store.getLocalPeer(),"regular")),o.push(n)}return o}};function ta(s,e){return function(i){return i in s&&s[i]!==e[i]}}var U=class s extends $e{constructor(t,i,r,a,o=new ee().build()){super(t,i,r);this.eventBus=a;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:a,maxFramerate:o,maxBitrate:n,deviceId:l,advanced:u,facingMode:p}=m(m({},this.settings),t);return new we(i,r,a,o,l,u,n,p)};this.handleSettingsChange=t=>c(this,null,function*(){let i=this.stream,r=ta(t,this.settings);if(r("maxBitrate")&&t.maxBitrate&&(yield i.setMaxBitrateAndFramerate(this)),r("width")||r("height")||r("advanced"))if(this.source==="video"){let a=yield this.replaceTrackWith(t);yield this.replaceSender(a,this.enabled),this.nativeTrack=a,this.videoHandler.updateSinks()}else yield this.nativeTrack.applyConstraints(t.toConstraints())});this.handleDeviceChange=(t,i=!1)=>c(this,null,function*(){if(ta(t,this.settings)("deviceId")&&this.source==="regular"){if(this.enabled){delete t.facingMode;let a=yield this.replaceTrackWith(t);yield this.replaceSender(a,this.enabled),this.nativeTrack=a,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 We(this)),this.settings=o,o.deviceId!==i.getSettings().deviceId&&i.enabled&&(this.settings=this.buildNewSettings({deviceId:i.getSettings().deviceId})),this.pluginsManager=new gt(this,a),this.mediaStreamPluginsManager=new ni,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 q(s.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||le(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;q(s.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 a;let t=this.getMediaTrackSettings().facingMode;if(!t||this.source!=="regular"){d.d(this.TAG,"facingMode not supported");return}let i=t==="environment"?"user":"environment";(a=this.nativeTrack)==null||a.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 qs(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=Te.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 Ke="renegotiation-callback-id",li="ion-sfu";var qe="SUBSCRIBE_ICE_CONNECTION_CALLBACK_ID";var ia="https://event.100ms.live/v2/client/report",ra="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"},sa="2.5",aa="20231201",fe="_handraise",Ur=1e3,Vr=64;var _=class s extends $e{constructor(t,i,r){super(t,i,r);this._degraded=!1;this._degradedAt=null;this._layerDefinitions=[];this.history=new Br;this.preferredLayer="high";this.setVideoHandler(new We(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&&(q(s.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 X(s){if(s<0)throw Error("`ms` should be a positive integer");return new Promise(e=>{setTimeout(e,s)})}function ue(s){if(s<0)throw Error("`ms` should be a positive integer");if(typeof Worker=="undefined")return X(s);let e=new Worker(URL.createObjectURL(new Blob([Zo],{type:"application/javascript"})));return e.postMessage(["start",s]),new Promise(t=>{e.onmessage=i=>{i.data==="tick"&&(t(),e.terminate())}})}function ii(s,e=300){let t;return function(...i){clearTimeout(t),t=void 0;let r=this;t=setTimeout(()=>{s.apply(r,i)},e)}}var en=35,tn=5,ri=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 X(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 X(this.interval)})}sendAudioLevel(e=0){if(e=e>en?e:0,Math.abs(this.audioLevel-e)>tn){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 wr=(n=>(n.NONE="none",n.INITIALISED="initialised",n.STARTED="started",n.PAUSED="paused",n.RESUMED="resumed",n.STOPPED="stopped",n.FAILED="failed",n))(wr||{});var be={f:"high",h:"medium",q:"low"};var Dr=(i=>(i.videoInput="videoInput",i.audioInput="audioInput",i.audioOutput="audioOutput",i))(Dr||{});var ae=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,a){this.volume=e,this.codec=t,this.maxBitrate=i,this.deviceId=r,this.advanced=a}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,a,o,n,l){this.width=e,this.height=t,this.codec=i,this.maxFramerate=r,this.maxBitrate=n,this.deviceId=a,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 Yt()&&this.height&&this.width&&this.height>this.width?{width:this.height,height:this.width}:{width:this.width,height:this.height}}};var ht=class{constructor(){this._video=new ee().build();this._audio=new ae().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 Ge(this._video,this._audio,this._simulcast,this._screen||void 0)}},Ge=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 Js(s,e){return function(i){return i in s&&s[i]!==e[i]}}var oe=class s extends Pe{constructor(t,i,r,a,o=new ae().build()){super(t,i,r);this.eventBus=a;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=Js(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*(){Js(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&&!le(i)&&(this.settings=this.buildNewSettings({deviceId:i.getSettings().deviceId})),this.pluginsManager=new pt(this,a),this.setFirstTrackId(i.id),Pr()&&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 a=yield Ks(t);a.enabled=this.enabled,d.d(this.TAG,"replaceTrack, Previous track stopped",i,"newTrack",a),yield this.stream.replaceStreamTrack(i,a),this.nativeTrack=a,yield this.replaceSenderTrack(),r&&this.initAudioLevelMonitor()}catch(a){throw this.isPublished&&this.eventBus.analytics.publish(M.publish({error:a})),a}try{yield this.pluginsManager.reprocessPlugins()}catch(a){this.eventBus.audioPluginFailed.publish(a)}})}setEnabled(t){return c(this,null,function*(){t!==this.enabled&&(t&&le(this.nativeTrack)&&(yield this.replaceTrackWith(this.settings)),yield q(s.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(le(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 ri(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;q(s.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(),Pr()&&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:a,deviceId:o,advanced:n}=m(m({},this.settings),t);return new Le(i,r,a,o,n)}};var te=class s extends Pe{setEnabled(e){return c(this,null,function*(){e!==this.enabled&&(yield q(s.prototype,this,"setEnabled").call(this,e),yield this.subscribeToAudio(e))})}};var $e=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 a=r.getVideoTracks()[0];if((a==null?void 0:a.id)===i.id){if(!a.muted&&a.readyState==="live")return;this.reduceSinkCount()}else this.reduceSinkCount()}t.srcObject=new MediaStream([i]),this.sinkCount++}reduceSinkCount(){this.sinkCount>0&&this.sinkCount--}};var Xs=require("uuid");var mt={none:-1,low:0,medium:1,high:2},rn=.5,Qs=(s,e)=>{let t="high",i=e.width>e.height?"width":"height",r=[...s].sort((o,n)=>mt[o.layer]-mt[n.layer]),a=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(a<=u){t=l;break}else{let p=r[o+1],S=p?p.resolution[i]:Number.POSITIVE_INFINITY;if((a-u)/(S-u)<rn){t=l;break}}}return t};var _r=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}},zs=new _r;var Nr=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(ii(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}},Ys=new Nr;var We=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=(0,Xs.v4)()}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=Ys,this.intersectionObserver=zs)}isElementInViewport(e){let t=e.offsetTop,i=e.offsetLeft,r=e.offsetWidth,a=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+a>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:a}=i;if(r===0||a===0)continue;let o=Qs(this.track.getSimulcastDefinitions(),{width:r,height:a});e?e=mt[o]>mt[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 si=(t=>(t.TRANSFORM="TRANSFORM",t.ANALYZE="ANALYZE",t))(si||{}),ai=(t=>(t["2D"]="2d",t.WEBGL="webgl",t.WEBGL2="webgl2",t))(ai||{});var St=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 oi=class{constructor(e){this.eventBus=e;this.TAG="[VideoPluginsAnalytics]";this.initTime={},this.preProcessingAvgs=new St,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 St,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(ge.stats(i)),this.clean(e)}}failure(e,t){this.pluginAdded[e]&&(this.eventBus.analytics.publish(ge.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 a=h.MediaPluginErrors.InitFailed("VIDEO_PLUGINS",`failed during initialization of plugin${r.message||r}`);throw d.e(this.TAG,a),this.failure(e,a),a}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(a){let o=h.MediaPluginErrors.ProcessingFailed("VIDEO_PLUGINS",`Failed during processing of plugin${a.message||a}`);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 Zs=24,sn=320,an=240,gt=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 oi(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 a=h.MediaPluginErrors.AddAlreadyInProgress("VIDEO_PLUGINS","Add Plugin is already in Progress");throw this.analytics.failure(r,a),d.w("can't add another plugin when previous add is in progress"),a}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||Zs,a=0;t&&t>0?(d.i(this.TAG,`adding plugin ${e.getName()} with framerate ${t}`),t<r&&(a=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",a),this.pluginNumFramesToSkip[i]=a,this.pluginNumFramesSkipped[i]=a,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 ue(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||Zs,t=Math.floor(1e3/e);if(!this.hmsTrack.enabled||this.hmsTrack.nativeTrack.readyState==="ended"){this.pluginsLoopState==="running"&&this.resetCanvases(),this.pluginsLoopState="paused",yield ue(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 ue(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 a=(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 a(this.canvases[e],this.outputCanvas):yield a(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 a(o,this.outputCanvas)})):yield this.analytics.processWithTime(i,()=>c(this,null,function*(){return a(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=sn,height:t=an}=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 ni=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())}};var ea=require("uuid");var on=["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"],ci=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[...on,...e].reduce((t,i)=>k(m({},t),{[i]:this.getTimeTaken(i)}),{})}cleanup(){this.eventPerformanceMeasures={}}};var Or={isAudioMuted:!1,isVideoMuted:!1,audioInputDeviceId:"default",audioOutputDeviceId:"default",videoDeviceId:"default"},pe,di,Te=class s{constructor(e,t,i,r,a){this.store=e;this.observer=t;this.deviceManager=i;this.eventBus=r;this.analyticsTimer=a;this.TAG="[LocalTrackManager]";this.setScreenCaptureHandleConfig()}getTracksToPublish(){return c(this,arguments,function*(e=Or){let t=this.getAVTrackSettings(e);if(!t)return[];let i=!!t.audio,r=!!t.video,a=[],{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}),a=yield this.getLocalTracks(S,t,l)}catch(g){a=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&&a.push(o),n&&i&&!p&&a.push(n),a})}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 Ge(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 a;try{d.d("retrieving screenshare with ",{config:t},{constraints:r}),a=yield navigator.mediaDevices.getDisplayMedia(r)}catch(g){d.w(this.TAG,"error in getting screenshare - ",g);let f=Fe(g,"screen");throw this.eventBus.analytics.publish(M.publish({error:f,devices:this.deviceManager.getDevices(),settings:new Ge(i==null?void 0:i.video,i==null?void 0:i.audio,!1)})),f}let o=[],n=new De(a),l=a.getVideoTracks()[0],u=new U(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 a.getTracks().forEach(f=>f.stop()),g}o.push(u);let p=a.getAudioTracks()[0];if(p){let g=new oe(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:(0,ea.v4)(),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;pe||(pe=document.createElement("canvas"),pe.width=t,pe.height=i,(u=pe.getContext("2d"))==null||u.fillRect(0,0,t,i)),di||(di=setInterval(()=>{let p=pe==null?void 0:pe.getContext("2d");p&&p.fillRect(0,0,1,1)},1e3/r));let o=pe.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(di),di=void 0,pe=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),a=this.getErrorType(i,r);throw Fe(t,a)}})}getAVTrackSettings(e){let t=this.getAudioSettings(e),i=this.getVideoSettings(e);return!t&&!i?null:new ht().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 a=e.code===v.TracksErrors.OVER_CONSTRAINED,o=e.message.includes("audio"),n=e.message.includes("video");if(a){let l=new ht().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(s.getEmptyAudioTrack()),e.video==="empty"&&t.push(s.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"),a=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 a==null?void 0:a.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,a=(r==null?void 0:r.settings.deviceId)||e.audioInputDeviceId;return new ae().codec(t.audio.codec).maxBitrate(t.audio.bitRate).deviceId(a||Or.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,a=(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(a||Or.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 ae().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"),a=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(a&&(t!=null&&t.audio)){let n=new oe(i,a,"regular",this.eventBus,t.audio);o.push(n)}if(r&&(t!=null&&t.video)){let n=new U(i,r,"regular",this.eventBus,t.video);n.setSimulcastDefinitons(this.store.getSimulcastDefinitionsForPeer(this.store.getLocalPeer(),"regular")),o.push(n)}return o}};function ta(s,e){return function(i){return i in s&&s[i]!==e[i]}}var U=class s extends $e{constructor(t,i,r,a,o=new ee().build()){super(t,i,r);this.eventBus=a;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:a,maxFramerate:o,maxBitrate:n,deviceId:l,advanced:u,facingMode:p}=m(m({},this.settings),t);return new we(i,r,a,o,l,u,n,p)};this.handleSettingsChange=t=>c(this,null,function*(){let i=this.stream,r=ta(t,this.settings);if(r("maxBitrate")&&t.maxBitrate&&(yield i.setMaxBitrateAndFramerate(this)),r("width")||r("height")||r("advanced"))if(this.source==="video"){let a=yield this.replaceTrackWith(t);yield this.replaceSender(a,this.enabled),this.nativeTrack=a,yield this.processPlugins(),this.videoHandler.updateSinks()}else yield this.nativeTrack.applyConstraints(t.toConstraints())});this.handleDeviceChange=(t,i=!1)=>c(this,null,function*(){if(ta(t,this.settings)("deviceId")&&this.source==="regular"){if(this.enabled){delete t.facingMode;let a=yield this.replaceTrackWith(t);yield this.replaceSender(a,this.enabled),this.nativeTrack=a,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 We(this)),this.settings=o,o.deviceId!==i.getSettings().deviceId&&i.enabled&&(this.settings=this.buildNewSettings({deviceId:i.getSettings().deviceId})),this.pluginsManager=new gt(this,a),this.mediaStreamPluginsManager=new ni,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 q(s.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||le(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;q(s.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 a;let t=this.getMediaTrackSettings().facingMode;if(!t||this.source!=="regular"){d.d(this.TAG,"facingMode not supported");return}let i=t==="environment"?"user":"environment";(a=this.nativeTrack)==null||a.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 qs(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=Te.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 Ke="renegotiation-callback-id",li="ion-sfu";var qe="SUBSCRIBE_ICE_CONNECTION_CALLBACK_ID";var ia="https://event.100ms.live/v2/client/report",ra="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"},sa="2.5",aa="20231201",fe="_handraise",Ur=1e3,Vr=64;var _=class s extends $e{constructor(t,i,r){super(t,i,r);this._degraded=!1;this._degradedAt=null;this._layerDefinitions=[];this.history=new Br;this.preferredLayer="high";this.setVideoHandler(new We(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&&(q(s.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}
|