@100mslive/hms-video-store 0.15.1-alpha.0 → 0.15.1-alpha.1

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 no=Object.create;var bt=Object.defineProperty,oo=Object.defineProperties,co=Object.getOwnPropertyDescriptor,lo=Object.getOwnPropertyDescriptors,uo=Object.getOwnPropertyNames,Si=Object.getOwnPropertySymbols,ta=Object.getPrototypeOf,Gr=Object.prototype.hasOwnProperty,ia=Object.prototype.propertyIsEnumerable,po=Reflect.get;var ea=(a,e,t)=>e in a?bt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,m=(a,e)=>{for(var t in e||(e={}))Gr.call(e,t)&&ea(a,t,e[t]);if(Si)for(var t of Si(e))ia.call(e,t)&&ea(a,t,e[t]);return a},M=(a,e)=>oo(a,lo(e));var $r=(a,e)=>{var t={};for(var i in a)Gr.call(a,i)&&e.indexOf(i)<0&&(t[i]=a[i]);if(a!=null&&Si)for(var i of Si(a))e.indexOf(i)<0&&ia.call(a,i)&&(t[i]=a[i]);return t};var ho=(a,e)=>()=>{try{return e||a((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},mo=(a,e)=>{for(var t in e)bt(a,t,{get:e[t],enumerable:!0})},ra=(a,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of uo(e))!Gr.call(a,r)&&r!==t&&bt(a,r,{get:()=>e[r],enumerable:!(i=co(e,r))||i.enumerable});return a};var We=(a,e,t)=>(t=a!=null?no(ta(a)):{},ra(e||!a||!a.__esModule?bt(t,"default",{value:a,enumerable:!0}):t,a)),So=a=>ra(bt({},"__esModule",{value:!0}),a);var me=(a,e,t)=>po(ta(a),t,e);var c=(a,e,t)=>new Promise((i,r)=>{var s=l=>{try{o(t.next(l))}catch(u){r(u)}},n=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(s,n);o((t=t.apply(a,e)).next())});var Zr=ho((lu,ko)=>{ko.exports={version:"0.15.1-alpha.0",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"],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","lodash.isequal":"^4.5.0",reselect:"4.0.0","sdp-transform":"^2.14.1","ua-parser-js":"^2.0.6",uuid:"^11.1.1","webrtc-adapter":"^8.0.0",zustand:"3.5.7"},devDependencies:{"@types/dom-screen-wake-lock":"^1.0.1","@types/lodash.isequal":"^4.5.8","@types/sdp-transform":"^2.4.4","@types/ua-parser-js":"^0.7.39","@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:"918718ac41a38746ae87c4b8a27e89ab8bae0d25"}});var El={};mo(El,{ConnectivityState:()=>Nn,DeviceType:()=>ls,Diagnostics:()=>gt,DomainCategory:()=>Jr,EventBus:()=>Tt,HLSPlaylistType:()=>ns,HLSStreamType:()=>os,HMSAudioDeviceCategory:()=>Hi,HMSAudioMode:()=>Ri,HMSAudioPluginType:()=>ki,HMSLogLevel:()=>qr,HMSMessageType:()=>sa,HMSNotificationSeverity:()=>Wr,HMSNotificationTypes:()=>Ti,HMSPeerType:()=>Ai,HMSPlaylistType:()=>Kr,HMSPluginUnsupportedTypes:()=>Ei,HMSReactiveStore:()=>et,HMSRecordingState:()=>as,HMSRoomState:()=>gi,HMSStats:()=>kt,HMSTrackExceptionTrackType:()=>zr,HMSTranscriptionMode:()=>ds,HMSTranscriptionState:()=>cs,HMSVideoPluginCanvasContextType:()=>Oi,HMSVideoPluginType:()=>Ni,createDefaultStatsStore:()=>At,createDefaultStoreState:()=>It,getAudioDeviceCategory:()=>Ci,parsedUserAgent:()=>J,selectAppData:()=>Fc,selectAppDataByPath:()=>$c,selectAudioPlaylist:()=>Ls,selectAudioPlaylistTrackByPeerID:()=>sd,selectAudioTrackByID:()=>qc,selectAudioTrackByPeerID:()=>vn,selectAudioTrackVolume:()=>Bs,selectAudioVolumeByPeerID:()=>ld,selectAuxiliaryAudioByPeerID:()=>td,selectAuxiliaryTracksByPeerID:()=>zc,selectAvailableRoleNames:()=>gc,selectBroadcastMessages:()=>En,selectBroadcastMessagesUnreadCount:()=>Sd,selectCameraStreamByPeerID:()=>Jc,selectConnectionQualities:()=>jo,selectConnectionQualityByPeerID:()=>ed,selectDegradedTracks:()=>lc,selectDevices:()=>qo,selectDidIJoinWithin:()=>Bd,selectDominantSpeaker:()=>tc,selectEffectsKey:()=>Rc,selectErrors:()=>sn,selectFullAppData:()=>Ki,selectHLSState:()=>Mc,selectHMSBroadcastMessages:()=>on,selectHMSMessages:()=>mt,selectHMSMessagesCount:()=>uc,selectHMSStats:()=>ao,selectHandRaisedPeers:()=>wc,selectHasPeerHandRaised:()=>Ed,selectIsAllowedToPreviewMedia:()=>Ld,selectIsAllowedToPublish:()=>Cd,selectIsAllowedToSubscribe:()=>Tc,selectIsAudioLocallyMuted:()=>Us,selectIsConnectedToRoom:()=>Ce,selectIsEffectsEnabled:()=>Ic,selectIsInPreview:()=>bs,selectIsLargeRoom:()=>bc,selectIsLocalAudioEnabled:()=>ic,selectIsLocalAudioInterrupted:()=>rc,selectIsLocalAudioPluginPresent:()=>Od,selectIsLocalScreenShared:()=>ji,selectIsLocalVideoDisplayEnabled:()=>Ps,selectIsLocalVideoEnabled:()=>qi,selectIsLocalVideoInterrupted:()=>sc,selectIsLocalVideoPluginPresent:()=>Nd,selectIsLocallyMutedByPeerID:()=>cd,selectIsPeerAudioEnabled:()=>nd,selectIsPeerVideoEnabled:()=>od,selectIsRoleAllowedToPublish:()=>wd,selectIsScreenShareLocallyMutedByPeerID:()=>dd,selectIsSomeoneScreenSharing:()=>ac,selectIsTranscriptionAllowedByMode:()=>Id,selectIsTranscriptionEnabled:()=>Sc,selectIsVBEnabled:()=>Ac,selectLocalAudioTrackID:()=>ue,selectLocalMediaSettings:()=>ks,selectLocalPeer:()=>X,selectLocalPeerID:()=>Ie,selectLocalPeerName:()=>Yo,selectLocalPeerRole:()=>ze,selectLocalPeerRoleName:()=>Xo,selectLocalTrackIDs:()=>Es,selectLocalVideoTrackID:()=>ie,selectMessageByMessageID:()=>bd,selectMessageIDsInOrder:()=>ys,selectMessagesByPeerID:()=>gd,selectMessagesByRole:()=>Td,selectMessagesMap:()=>$t,selectMessagesUnreadCountByPeerID:()=>vd,selectMessagesUnreadCountByRole:()=>fd,selectPeerAudioByID:()=>Zc,selectPeerByCondition:()=>xd,selectPeerByID:()=>se,selectPeerCount:()=>Qo,selectPeerMetadata:()=>kd,selectPeerName:()=>Pd,selectPeerNameByID:()=>Wc,selectPeerScreenSharing:()=>nn,selectPeerSharingAudio:()=>nc,selectPeerSharingAudioPlaylist:()=>dc,selectPeerSharingVideoPlaylist:()=>cc,selectPeerTypeByID:()=>Kc,selectPeers:()=>Me,selectPeersByCondition:()=>Ud,selectPeersByRole:()=>Md,selectPeersByRoles:()=>yd,selectPeersMap:()=>Y,selectPeersScreenSharing:()=>oc,selectPeersWithAudioStatus:()=>Ad,selectPermissions:()=>As,selectPollByID:()=>Vs,selectPolls:()=>Lc,selectPollsMap:()=>Rs,selectPreviewRole:()=>Is,selectPreviewRoleName:()=>cn,selectRTMPState:()=>vc,selectRecentError:()=>Wo,selectRecordingState:()=>fc,selectRemotePeers:()=>ec,selectRoleByRoleName:()=>Pn,selectRoleChangeRequest:()=>Hd,selectRolesMap:()=>ye,selectRoom:()=>V,selectRoomID:()=>Ko,selectRoomStartTime:()=>Pc,selectRoomStarted:()=>mc,selectRoomState:()=>oe,selectScreenAudioTrackByID:()=>jc,selectScreenShareAudioByPeerID:()=>xs,selectScreenShareByPeerID:()=>ad,selectScreenSharesByPeerId:()=>Os,selectScreenVideoTrackByID:()=>Qc,selectScreenshareAudioVolumeByPeerID:()=>ud,selectSessionId:()=>Ec,selectSessionMetadata:()=>Cc,selectSessionStore:()=>Gc,selectSimulcastLayerByTrack:()=>pd,selectSpeakers:()=>an,selectTemplateAppData:()=>Hc,selectTrackAudioByID:()=>Yc,selectTrackByID:()=>qt,selectTracksMap:()=>_,selectTranscriptionsState:()=>yc,selectTranslationState:()=>kc,selectUnreadHMSBroadcastMessagesCount:()=>hc,selectUnreadHMSMessagesCount:()=>pc,selectVideoPlaylist:()=>ws,selectVideoPlaylistAudioTrackByPeerID:()=>rd,selectVideoPlaylistVideoTrackByPeerID:()=>id,selectVideoTrackByID:()=>Ns,selectVideoTrackByPeerID:()=>fn,selectWhiteboard:()=>Dc,selectWhiteboards:()=>dn,simulcastMapping:()=>Ue});module.exports=So(El);var gi=(o=>(o.Disconnected="Disconnected",o.Preview="Preview",o.Connecting="Connecting",o.Connected="Connected",o.Reconnecting="Reconnecting",o.Disconnecting="Disconnecting",o.Failed="Failed",o))(gi||{});var It=()=>({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}),At=()=>({peerStats:{},remoteTrackStats:{},localTrackStats:{},localPeer:{id:""}});var sa=(e=>(e.CHAT="chat",e))(sa||{});var Wr=(t=>(t.INFO="info",t.ERROR="error",t))(Wr||{}),Ti=(D=>(D.PEER_JOINED="PEER_JOINED",D.PEER_LEFT="PEER_LEFT",D.PEER_LIST="PEER_LIST",D.NEW_MESSAGE="NEW_MESSAGE",D.ERROR="ERROR",D.RECONNECTING="RECONNECTING",D.RECONNECTED="RECONNECTED",D.TRACK_ADDED="TRACK_ADDED",D.TRACK_REMOVED="TRACK_REMOVED",D.TRACK_MUTED="TRACK_MUTED",D.TRACK_UNMUTED="TRACK_UNMUTED",D.TRACK_DEGRADED="TRACK_DEGRADED",D.TRACK_RESTORED="TRACK_RESTORED",D.TRACK_DESCRIPTION_CHANGED="TRACK_DESCRIPTION_CHANGED",D.ROLE_UPDATED="ROLE_UPDATED",D.CHANGE_TRACK_STATE_REQUEST="CHANGE_TRACK_STATE_REQUEST",D.CHANGE_MULTI_TRACK_STATE_REQUEST="CHANGE_MULTI_TRACK_STATE_REQUEST",D.ROOM_ENDED="ROOM_ENDED",D.REMOVED_FROM_ROOM="REMOVED_FROM_ROOM",D.DEVICE_CHANGE_UPDATE="DEVICE_CHANGE_UPDATE",D.PLAYLIST_TRACK_ENDED="PLAYLIST_TRACK_ENDED",D.NAME_UPDATED="NAME_UPDATED",D.METADATA_UPDATED="METADATA_UPDATED",D.POLL_CREATED="POLL_CREATED",D.POLL_STARTED="POLL_STARTED",D.POLL_STOPPED="POLL_STOPPED",D.POLL_VOTES_UPDATED="POLL_VOTES_UPDATED",D.POLLS_LIST="POLLS_LIST",D.HAND_RAISE_CHANGED="HAND_RAISE_CHANGED",D.TRANSCRIPTION_STATE_UPDATED="TRANSCRIPTION_STATE_UPDATED",D.TRACK_INTERRUPTION_START="TRACK_INTERRUPTION_START",D.TRACK_INTERRUPTION_END="TRACK_INTERRUPTION_END",D))(Ti||{});var Kr=(t=>(t.audio="audio",t.video="video",t))(Kr||{});var I=require("reselect");function Ke(a,e){let t,i;if(e)for(let r of e.auxiliaryTracks){let s=a[r];go(s)&&(i=Rt(s)?s:i,t=Ht(s)?s:t)}return{video:t,audio:i}}function Rt(a){return a&&a.type==="audio"}function Ht(a){return a&&a.type==="video"}function go(a){return a&&a.source==="screen"}function fi(a){return a&&a.source==="audioplaylist"}function Ct(a){return a&&a.source==="videoplaylist"}function aa(a){return a?!!(a!=null&&a.degraded):!1}function tt(a,e){return e&&a.tracks[e]?a.tracks[e].enabled:!1}function na(a,e){return e&&a.tracks[e]?a.tracks[e].displayEnabled:!1}function Lt(a){var r;let e=!1,t=!1,i=!1;return(r=a==null?void 0:a.publishParams)!=null&&r.allowed&&(e=a.publishParams.allowed.includes("video"),t=a.publishParams.allowed.includes("audio"),i=a.publishParams.allowed.includes("screen")),{video:e,audio:t,screen:i}}var qr=(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))(qr||{}),To=typeof window!="undefined"&&typeof window.expect!="undefined",d=class{static v(e,...t){this.log(0,e,...t)}static d(e,...t){this.log(1,e,...t)}static i(e,...t){this.log(2,e,...t)}static w(e,...t){this.log(3,e,...t)}static e(e,...t){this.log(6,e,...t)}static time(e){this.log(4,"[HMSPerformanceTiming]",e)}static timeEnd(e){this.log(5,"[HMSPerformanceTiming]",e,e)}static cleanup(){performance.clearMarks(),performance.clearMeasures()}static log(e,t,...i){if(!(this.level.valueOf()>e.valueOf()))switch(e){case 0:{console.log(t,...i);break}case 1:{console.debug(t,...i);break}case 2:{console.info(t,...i);break}case 3:{console.warn(t,...i);break}case 6:{console.error(t,...i);break}case 4:{performance.mark(i[0]);break}case 5:{let r=i[0];try{let s=performance.measure(r,r);this.log(1,t,r,s==null?void 0:s.duration),performance.clearMarks(r),performance.clearMeasures(r)}catch(s){this.log(1,t,r,s)}break}}}};d.level=To?7:0;var it=class{constructor(e){this.tracks=new Array;this.nativeStream=e,this.id=e.id}updateId(e){this.id=e}};var ma=require("ua-parser-js");var jr=new ma.UAParser,wt=null,Qr=null,F=typeof window!="undefined";if(F)try{let a=jr.getResult(),e=a.withClientHints();e&&typeof e.then=="function"?(Qr=e,Qr.then(t=>{wt=t}).catch(()=>{wt=a})):(d.d("UAParser","Client Hints not supported, using standard UA parsing"),wt=e)}catch(a){wt=jr.getResult()}var _e=()=>wt||jr.getResult(),J={getBrowser:()=>_e().browser,getOS:()=>_e().os,getDevice:()=>_e().device,getCPU:()=>_e().cpu,getEngine:()=>_e().engine,getUA:()=>_e().ua,getResult:_e,withClientHints:()=>Qr||Promise.resolve(_e())},oa,qe=typeof window=="undefined"&&!((oa=J.getBrowser().name)!=null&&oa.toLowerCase().includes("electron"));var fo=()=>!qe,_l=fo(),Sa=()=>J.getDevice().type==="mobile",vo=()=>{var a;return typeof navigator!="undefined"&&navigator.maxTouchPoints>1&&!!((a=J.getOS().name)!=null&&a.toLowerCase().includes("mac"))},vi=()=>{let a=J.getDevice().type;return a==="mobile"||a==="tablet"||vo()},ga=()=>typeof document!="undefined"&&document.hidden,Ta=()=>{var a;return((a=J.getOS().name)==null?void 0:a.toLowerCase())==="ios"},ca,da,fa=(da=(ca=J.getBrowser())==null?void 0:ca.name)==null?void 0:da.toLowerCase().includes("safari"),la,ua,va=((ua=(la=J.getBrowser())==null?void 0:la.name)==null?void 0:ua.toLowerCase())==="firefox",pa,ha,Ma=((ha=(pa=J.getEngine())==null?void 0:pa.name)==null?void 0:ha.toLowerCase())==="blink";var Aa=require("uuid");var Jr=(i=>(i.CUSTOM="CUSTOM",i.LOCAL="LOCAL",i.HMS="HMS",i))(Jr||{});function Mo(){if(F&&window){let a=window.location.hostname;return a==="localhost"||a==="127.0.0.1"?"LOCAL":a.includes("app.100ms.live")?"HMS":"CUSTOM"}return"CUSTOM"}var rt=Mo();var ka=require("uuid");var E={WebSocketConnectionErrors:{FAILED_TO_CONNECT:1e3,WEBSOCKET_CONNECTION_LOST:1003,ABNORMAL_CLOSE:1006},APIErrors:{SERVER_ERRORS:2e3,INIT_CONFIG_NOT_AVAILABLE:2002,ENDPOINT_UNREACHABLE:2003,INVALID_TOKEN_FORMAT:2004},TracksErrors:{GENERIC_TRACK:3e3,CANT_ACCESS_CAPTURE_DEVICE:3001,DEVICE_NOT_AVAILABLE:3002,DEVICE_IN_USE:3003,DEVICE_LOST_MIDWAY:3004,NOTHING_TO_RETURN:3005,INVALID_VIDEO_SETTINGS:3006,CODEC_CHANGE_NOT_PERMITTED:3007,AUTOPLAY_ERROR:3008,OVER_CONSTRAINED:3009,NO_AUDIO_DETECTED:3010,SYSTEM_DENIED_PERMISSION:3011,CURRENT_TAB_NOT_SHARED:3012,AUDIO_PLAYBACK_ERROR:3013,SELECTED_DEVICE_MISSING:3014,NO_DATA:3015},WebrtcErrors:{CREATE_OFFER_FAILED:4001,CREATE_ANSWER_FAILED:4002,SET_LOCAL_DESCRIPTION_FAILED:4003,SET_REMOTE_DESCRIPTION_FAILED:4004,ICE_FAILURE:4005,ICE_DISCONNECTED:4006,STATS_FAILED:4007},WebsocketMethodErrors:{SERVER_ERRORS:5e3,ALREADY_JOINED:5001,CANNOT_JOIN_PREVIEW_IN_PROGRESS:5002},GenericErrors:{NOT_CONNECTED:6e3,SIGNALLING:6001,UNKNOWN:6002,NOT_READY:6003,JSON_PARSING_FAILED:6004,TRACK_METADATA_MISSING:6005,RTC_TRACK_MISSING:6006,PEER_METADATA_MISSING:6007,INVALID_ROLE:6008,PREVIEW_IN_PROGRESS:6009,MISSING_MEDIADEVICES:6010,MISSING_RTCPEERCONNECTION:6011,LOCAL_STORAGE_ACCESS_DENIED:6012,VALIDATION_FAILED:6013},PlaylistErrors:{NO_ENTRY_TO_PLAY:8001,NO_ENTRY_IS_PLAYING:8002}};var k=class a extends Error{constructor(t,i,r,s,n,o=!1){super(s);this.code=t;this.name=i;this.message=s;this.description=n;this.isTerminal=o;Object.setPrototypeOf(this,a.prototype),this.action=r.toString()}toAnalyticsProperties(){return{error_name:this.name,error_code:this.code,error_message:this.message,error_description:this.description,action:this.action,is_terminal:this.isTerminal}}addNativeError(t){this.nativeError=t}toString(){var t;return`{
1
+ "use strict";var no=Object.create;var bt=Object.defineProperty,oo=Object.defineProperties,co=Object.getOwnPropertyDescriptor,lo=Object.getOwnPropertyDescriptors,uo=Object.getOwnPropertyNames,Si=Object.getOwnPropertySymbols,ta=Object.getPrototypeOf,Gr=Object.prototype.hasOwnProperty,ia=Object.prototype.propertyIsEnumerable,po=Reflect.get;var ea=(a,e,t)=>e in a?bt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,m=(a,e)=>{for(var t in e||(e={}))Gr.call(e,t)&&ea(a,t,e[t]);if(Si)for(var t of Si(e))ia.call(e,t)&&ea(a,t,e[t]);return a},M=(a,e)=>oo(a,lo(e));var $r=(a,e)=>{var t={};for(var i in a)Gr.call(a,i)&&e.indexOf(i)<0&&(t[i]=a[i]);if(a!=null&&Si)for(var i of Si(a))e.indexOf(i)<0&&ia.call(a,i)&&(t[i]=a[i]);return t};var ho=(a,e)=>()=>{try{return e||a((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},mo=(a,e)=>{for(var t in e)bt(a,t,{get:e[t],enumerable:!0})},ra=(a,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of uo(e))!Gr.call(a,r)&&r!==t&&bt(a,r,{get:()=>e[r],enumerable:!(i=co(e,r))||i.enumerable});return a};var We=(a,e,t)=>(t=a!=null?no(ta(a)):{},ra(e||!a||!a.__esModule?bt(t,"default",{value:a,enumerable:!0}):t,a)),So=a=>ra(bt({},"__esModule",{value:!0}),a);var me=(a,e,t)=>po(ta(a),t,e);var c=(a,e,t)=>new Promise((i,r)=>{var s=l=>{try{o(t.next(l))}catch(u){r(u)}},n=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(s,n);o((t=t.apply(a,e)).next())});var Zr=ho((lu,ko)=>{ko.exports={version:"0.15.1-alpha.1",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"],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","lodash.isequal":"^4.5.0",reselect:"4.0.0","sdp-transform":"^2.14.1","ua-parser-js":"^2.0.6",uuid:"^11.1.1","webrtc-adapter":"^8.0.0",zustand:"3.5.7"},devDependencies:{"@types/dom-screen-wake-lock":"^1.0.1","@types/lodash.isequal":"^4.5.8","@types/sdp-transform":"^2.4.4","@types/ua-parser-js":"^0.7.39","@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:"509b614ffcabf58d634965c71237ba9c35163480"}});var El={};mo(El,{ConnectivityState:()=>Nn,DeviceType:()=>ls,Diagnostics:()=>gt,DomainCategory:()=>Jr,EventBus:()=>Tt,HLSPlaylistType:()=>ns,HLSStreamType:()=>os,HMSAudioDeviceCategory:()=>Hi,HMSAudioMode:()=>Ri,HMSAudioPluginType:()=>ki,HMSLogLevel:()=>qr,HMSMessageType:()=>sa,HMSNotificationSeverity:()=>Wr,HMSNotificationTypes:()=>Ti,HMSPeerType:()=>Ai,HMSPlaylistType:()=>Kr,HMSPluginUnsupportedTypes:()=>Ei,HMSReactiveStore:()=>et,HMSRecordingState:()=>as,HMSRoomState:()=>gi,HMSStats:()=>kt,HMSTrackExceptionTrackType:()=>zr,HMSTranscriptionMode:()=>ds,HMSTranscriptionState:()=>cs,HMSVideoPluginCanvasContextType:()=>Oi,HMSVideoPluginType:()=>Ni,createDefaultStatsStore:()=>At,createDefaultStoreState:()=>It,getAudioDeviceCategory:()=>Ci,parsedUserAgent:()=>J,selectAppData:()=>Fc,selectAppDataByPath:()=>$c,selectAudioPlaylist:()=>Ls,selectAudioPlaylistTrackByPeerID:()=>sd,selectAudioTrackByID:()=>qc,selectAudioTrackByPeerID:()=>vn,selectAudioTrackVolume:()=>Bs,selectAudioVolumeByPeerID:()=>ld,selectAuxiliaryAudioByPeerID:()=>td,selectAuxiliaryTracksByPeerID:()=>zc,selectAvailableRoleNames:()=>gc,selectBroadcastMessages:()=>En,selectBroadcastMessagesUnreadCount:()=>Sd,selectCameraStreamByPeerID:()=>Jc,selectConnectionQualities:()=>jo,selectConnectionQualityByPeerID:()=>ed,selectDegradedTracks:()=>lc,selectDevices:()=>qo,selectDidIJoinWithin:()=>Bd,selectDominantSpeaker:()=>tc,selectEffectsKey:()=>Rc,selectErrors:()=>sn,selectFullAppData:()=>Ki,selectHLSState:()=>Mc,selectHMSBroadcastMessages:()=>on,selectHMSMessages:()=>mt,selectHMSMessagesCount:()=>uc,selectHMSStats:()=>ao,selectHandRaisedPeers:()=>wc,selectHasPeerHandRaised:()=>Ed,selectIsAllowedToPreviewMedia:()=>Ld,selectIsAllowedToPublish:()=>Cd,selectIsAllowedToSubscribe:()=>Tc,selectIsAudioLocallyMuted:()=>Us,selectIsConnectedToRoom:()=>Ce,selectIsEffectsEnabled:()=>Ic,selectIsInPreview:()=>bs,selectIsLargeRoom:()=>bc,selectIsLocalAudioEnabled:()=>ic,selectIsLocalAudioInterrupted:()=>rc,selectIsLocalAudioPluginPresent:()=>Od,selectIsLocalScreenShared:()=>ji,selectIsLocalVideoDisplayEnabled:()=>Ps,selectIsLocalVideoEnabled:()=>qi,selectIsLocalVideoInterrupted:()=>sc,selectIsLocalVideoPluginPresent:()=>Nd,selectIsLocallyMutedByPeerID:()=>cd,selectIsPeerAudioEnabled:()=>nd,selectIsPeerVideoEnabled:()=>od,selectIsRoleAllowedToPublish:()=>wd,selectIsScreenShareLocallyMutedByPeerID:()=>dd,selectIsSomeoneScreenSharing:()=>ac,selectIsTranscriptionAllowedByMode:()=>Id,selectIsTranscriptionEnabled:()=>Sc,selectIsVBEnabled:()=>Ac,selectLocalAudioTrackID:()=>ue,selectLocalMediaSettings:()=>ks,selectLocalPeer:()=>X,selectLocalPeerID:()=>Ie,selectLocalPeerName:()=>Yo,selectLocalPeerRole:()=>ze,selectLocalPeerRoleName:()=>Xo,selectLocalTrackIDs:()=>Es,selectLocalVideoTrackID:()=>ie,selectMessageByMessageID:()=>bd,selectMessageIDsInOrder:()=>ys,selectMessagesByPeerID:()=>gd,selectMessagesByRole:()=>Td,selectMessagesMap:()=>$t,selectMessagesUnreadCountByPeerID:()=>vd,selectMessagesUnreadCountByRole:()=>fd,selectPeerAudioByID:()=>Zc,selectPeerByCondition:()=>xd,selectPeerByID:()=>se,selectPeerCount:()=>Qo,selectPeerMetadata:()=>kd,selectPeerName:()=>Pd,selectPeerNameByID:()=>Wc,selectPeerScreenSharing:()=>nn,selectPeerSharingAudio:()=>nc,selectPeerSharingAudioPlaylist:()=>dc,selectPeerSharingVideoPlaylist:()=>cc,selectPeerTypeByID:()=>Kc,selectPeers:()=>Me,selectPeersByCondition:()=>Ud,selectPeersByRole:()=>Md,selectPeersByRoles:()=>yd,selectPeersMap:()=>Y,selectPeersScreenSharing:()=>oc,selectPeersWithAudioStatus:()=>Ad,selectPermissions:()=>As,selectPollByID:()=>Vs,selectPolls:()=>Lc,selectPollsMap:()=>Rs,selectPreviewRole:()=>Is,selectPreviewRoleName:()=>cn,selectRTMPState:()=>vc,selectRecentError:()=>Wo,selectRecordingState:()=>fc,selectRemotePeers:()=>ec,selectRoleByRoleName:()=>Pn,selectRoleChangeRequest:()=>Hd,selectRolesMap:()=>ye,selectRoom:()=>V,selectRoomID:()=>Ko,selectRoomStartTime:()=>Pc,selectRoomStarted:()=>mc,selectRoomState:()=>oe,selectScreenAudioTrackByID:()=>jc,selectScreenShareAudioByPeerID:()=>xs,selectScreenShareByPeerID:()=>ad,selectScreenSharesByPeerId:()=>Os,selectScreenVideoTrackByID:()=>Qc,selectScreenshareAudioVolumeByPeerID:()=>ud,selectSessionId:()=>Ec,selectSessionMetadata:()=>Cc,selectSessionStore:()=>Gc,selectSimulcastLayerByTrack:()=>pd,selectSpeakers:()=>an,selectTemplateAppData:()=>Hc,selectTrackAudioByID:()=>Yc,selectTrackByID:()=>qt,selectTracksMap:()=>_,selectTranscriptionsState:()=>yc,selectTranslationState:()=>kc,selectUnreadHMSBroadcastMessagesCount:()=>hc,selectUnreadHMSMessagesCount:()=>pc,selectVideoPlaylist:()=>ws,selectVideoPlaylistAudioTrackByPeerID:()=>rd,selectVideoPlaylistVideoTrackByPeerID:()=>id,selectVideoTrackByID:()=>Ns,selectVideoTrackByPeerID:()=>fn,selectWhiteboard:()=>Dc,selectWhiteboards:()=>dn,simulcastMapping:()=>Ue});module.exports=So(El);var gi=(o=>(o.Disconnected="Disconnected",o.Preview="Preview",o.Connecting="Connecting",o.Connected="Connected",o.Reconnecting="Reconnecting",o.Disconnecting="Disconnecting",o.Failed="Failed",o))(gi||{});var It=()=>({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}),At=()=>({peerStats:{},remoteTrackStats:{},localTrackStats:{},localPeer:{id:""}});var sa=(e=>(e.CHAT="chat",e))(sa||{});var Wr=(t=>(t.INFO="info",t.ERROR="error",t))(Wr||{}),Ti=(D=>(D.PEER_JOINED="PEER_JOINED",D.PEER_LEFT="PEER_LEFT",D.PEER_LIST="PEER_LIST",D.NEW_MESSAGE="NEW_MESSAGE",D.ERROR="ERROR",D.RECONNECTING="RECONNECTING",D.RECONNECTED="RECONNECTED",D.TRACK_ADDED="TRACK_ADDED",D.TRACK_REMOVED="TRACK_REMOVED",D.TRACK_MUTED="TRACK_MUTED",D.TRACK_UNMUTED="TRACK_UNMUTED",D.TRACK_DEGRADED="TRACK_DEGRADED",D.TRACK_RESTORED="TRACK_RESTORED",D.TRACK_DESCRIPTION_CHANGED="TRACK_DESCRIPTION_CHANGED",D.ROLE_UPDATED="ROLE_UPDATED",D.CHANGE_TRACK_STATE_REQUEST="CHANGE_TRACK_STATE_REQUEST",D.CHANGE_MULTI_TRACK_STATE_REQUEST="CHANGE_MULTI_TRACK_STATE_REQUEST",D.ROOM_ENDED="ROOM_ENDED",D.REMOVED_FROM_ROOM="REMOVED_FROM_ROOM",D.DEVICE_CHANGE_UPDATE="DEVICE_CHANGE_UPDATE",D.PLAYLIST_TRACK_ENDED="PLAYLIST_TRACK_ENDED",D.NAME_UPDATED="NAME_UPDATED",D.METADATA_UPDATED="METADATA_UPDATED",D.POLL_CREATED="POLL_CREATED",D.POLL_STARTED="POLL_STARTED",D.POLL_STOPPED="POLL_STOPPED",D.POLL_VOTES_UPDATED="POLL_VOTES_UPDATED",D.POLLS_LIST="POLLS_LIST",D.HAND_RAISE_CHANGED="HAND_RAISE_CHANGED",D.TRANSCRIPTION_STATE_UPDATED="TRANSCRIPTION_STATE_UPDATED",D.TRACK_INTERRUPTION_START="TRACK_INTERRUPTION_START",D.TRACK_INTERRUPTION_END="TRACK_INTERRUPTION_END",D))(Ti||{});var Kr=(t=>(t.audio="audio",t.video="video",t))(Kr||{});var I=require("reselect");function Ke(a,e){let t,i;if(e)for(let r of e.auxiliaryTracks){let s=a[r];go(s)&&(i=Rt(s)?s:i,t=Ht(s)?s:t)}return{video:t,audio:i}}function Rt(a){return a&&a.type==="audio"}function Ht(a){return a&&a.type==="video"}function go(a){return a&&a.source==="screen"}function fi(a){return a&&a.source==="audioplaylist"}function Ct(a){return a&&a.source==="videoplaylist"}function aa(a){return a?!!(a!=null&&a.degraded):!1}function tt(a,e){return e&&a.tracks[e]?a.tracks[e].enabled:!1}function na(a,e){return e&&a.tracks[e]?a.tracks[e].displayEnabled:!1}function Lt(a){var r;let e=!1,t=!1,i=!1;return(r=a==null?void 0:a.publishParams)!=null&&r.allowed&&(e=a.publishParams.allowed.includes("video"),t=a.publishParams.allowed.includes("audio"),i=a.publishParams.allowed.includes("screen")),{video:e,audio:t,screen:i}}var qr=(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))(qr||{}),To=typeof window!="undefined"&&typeof window.expect!="undefined",d=class{static v(e,...t){this.log(0,e,...t)}static d(e,...t){this.log(1,e,...t)}static i(e,...t){this.log(2,e,...t)}static w(e,...t){this.log(3,e,...t)}static e(e,...t){this.log(6,e,...t)}static time(e){this.log(4,"[HMSPerformanceTiming]",e)}static timeEnd(e){this.log(5,"[HMSPerformanceTiming]",e,e)}static cleanup(){performance.clearMarks(),performance.clearMeasures()}static log(e,t,...i){if(!(this.level.valueOf()>e.valueOf()))switch(e){case 0:{console.log(t,...i);break}case 1:{console.debug(t,...i);break}case 2:{console.info(t,...i);break}case 3:{console.warn(t,...i);break}case 6:{console.error(t,...i);break}case 4:{performance.mark(i[0]);break}case 5:{let r=i[0];try{let s=performance.measure(r,r);this.log(1,t,r,s==null?void 0:s.duration),performance.clearMarks(r),performance.clearMeasures(r)}catch(s){this.log(1,t,r,s)}break}}}};d.level=To?7:0;var it=class{constructor(e){this.tracks=new Array;this.nativeStream=e,this.id=e.id}updateId(e){this.id=e}};var ma=require("ua-parser-js");var jr=new ma.UAParser,wt=null,Qr=null,F=typeof window!="undefined";if(F)try{let a=jr.getResult(),e=a.withClientHints();e&&typeof e.then=="function"?(Qr=e,Qr.then(t=>{wt=t}).catch(()=>{wt=a})):(d.d("UAParser","Client Hints not supported, using standard UA parsing"),wt=e)}catch(a){wt=jr.getResult()}var _e=()=>wt||jr.getResult(),J={getBrowser:()=>_e().browser,getOS:()=>_e().os,getDevice:()=>_e().device,getCPU:()=>_e().cpu,getEngine:()=>_e().engine,getUA:()=>_e().ua,getResult:_e,withClientHints:()=>Qr||Promise.resolve(_e())},oa,qe=typeof window=="undefined"&&!((oa=J.getBrowser().name)!=null&&oa.toLowerCase().includes("electron"));var fo=()=>!qe,_l=fo(),Sa=()=>J.getDevice().type==="mobile",vo=()=>{var a;return typeof navigator!="undefined"&&navigator.maxTouchPoints>1&&!!((a=J.getOS().name)!=null&&a.toLowerCase().includes("mac"))},vi=()=>{let a=J.getDevice().type;return a==="mobile"||a==="tablet"||vo()},ga=()=>typeof document!="undefined"&&document.hidden,Ta=()=>{var a;return((a=J.getOS().name)==null?void 0:a.toLowerCase())==="ios"},ca,da,fa=(da=(ca=J.getBrowser())==null?void 0:ca.name)==null?void 0:da.toLowerCase().includes("safari"),la,ua,va=((ua=(la=J.getBrowser())==null?void 0:la.name)==null?void 0:ua.toLowerCase())==="firefox",pa,ha,Ma=((ha=(pa=J.getEngine())==null?void 0:pa.name)==null?void 0:ha.toLowerCase())==="blink";var Aa=require("uuid");var Jr=(i=>(i.CUSTOM="CUSTOM",i.LOCAL="LOCAL",i.HMS="HMS",i))(Jr||{});function Mo(){if(F&&window){let a=window.location.hostname;return a==="localhost"||a==="127.0.0.1"?"LOCAL":a.includes("app.100ms.live")?"HMS":"CUSTOM"}return"CUSTOM"}var rt=Mo();var ka=require("uuid");var E={WebSocketConnectionErrors:{FAILED_TO_CONNECT:1e3,WEBSOCKET_CONNECTION_LOST:1003,ABNORMAL_CLOSE:1006},APIErrors:{SERVER_ERRORS:2e3,INIT_CONFIG_NOT_AVAILABLE:2002,ENDPOINT_UNREACHABLE:2003,INVALID_TOKEN_FORMAT:2004},TracksErrors:{GENERIC_TRACK:3e3,CANT_ACCESS_CAPTURE_DEVICE:3001,DEVICE_NOT_AVAILABLE:3002,DEVICE_IN_USE:3003,DEVICE_LOST_MIDWAY:3004,NOTHING_TO_RETURN:3005,INVALID_VIDEO_SETTINGS:3006,CODEC_CHANGE_NOT_PERMITTED:3007,AUTOPLAY_ERROR:3008,OVER_CONSTRAINED:3009,NO_AUDIO_DETECTED:3010,SYSTEM_DENIED_PERMISSION:3011,CURRENT_TAB_NOT_SHARED:3012,AUDIO_PLAYBACK_ERROR:3013,SELECTED_DEVICE_MISSING:3014,NO_DATA:3015},WebrtcErrors:{CREATE_OFFER_FAILED:4001,CREATE_ANSWER_FAILED:4002,SET_LOCAL_DESCRIPTION_FAILED:4003,SET_REMOTE_DESCRIPTION_FAILED:4004,ICE_FAILURE:4005,ICE_DISCONNECTED:4006,STATS_FAILED:4007},WebsocketMethodErrors:{SERVER_ERRORS:5e3,ALREADY_JOINED:5001,CANNOT_JOIN_PREVIEW_IN_PROGRESS:5002},GenericErrors:{NOT_CONNECTED:6e3,SIGNALLING:6001,UNKNOWN:6002,NOT_READY:6003,JSON_PARSING_FAILED:6004,TRACK_METADATA_MISSING:6005,RTC_TRACK_MISSING:6006,PEER_METADATA_MISSING:6007,INVALID_ROLE:6008,PREVIEW_IN_PROGRESS:6009,MISSING_MEDIADEVICES:6010,MISSING_RTCPEERCONNECTION:6011,LOCAL_STORAGE_ACCESS_DENIED:6012,VALIDATION_FAILED:6013},PlaylistErrors:{NO_ENTRY_TO_PLAY:8001,NO_ENTRY_IS_PLAYING:8002}};var k=class a extends Error{constructor(t,i,r,s,n,o=!1){super(s);this.code=t;this.name=i;this.message=s;this.description=n;this.isTerminal=o;Object.setPrototypeOf(this,a.prototype),this.action=r.toString()}toAnalyticsProperties(){return{error_name:this.name,error_code:this.code,error_message:this.message,error_description:this.description,action:this.action,is_terminal:this.isTerminal}}addNativeError(t){this.nativeError=t}toString(){var t;return`{
2
2
  code: ${this.code};
3
3
  name: ${this.name};
4
4
  action: ${this.action};
@@ -35,7 +35,7 @@
35
35
  browser: ${s==null?void 0:s.name};
36
36
  browserVersion: ${s==null?void 0:s.version};
37
37
  requestedDevice: ${t.label};
38
- }`,`${this}`)}subscribeToAudio(t){return c(this,null,function*(){this.stream instanceof Re&&(yield this.stream.setAudio(t,this.trackId,this.logIdentifier))})}};var Ba=We(require("lodash.isequal"));var ts=class{constructor(){this.storage=new Ee("hms-device-selection");this.remember=!1;this.TAG="[HMSDeviceStorage]"}setDevices(e){var r;if(this.devices=e,!this.remember)return;let t=this.storage.get();if(!t)return;let i=["audioInput","videoInput","audioOutput"];for(let s of i){let n=t[s];n&&((r=e[s])!=null&&r.some(l=>this.isSame(n,l))||(d.w(this.TAG,`Removing ${s} device from storage as it's no longer available: ${n.deviceId}`),this.removeSelection(s)))}}rememberDevices(e){this.remember=e}updateSelection(e,{deviceId:t,groupId:i}){if(!this.devices||!this.remember)return;let r=this.devices[e].find(n=>this.isSame({deviceId:t,groupId:i},n));if(!r){d.w(this.TAG,`Could not find device with deviceId: ${t}, groupId: ${i}`);return}let s=this.storage.get()||{};s[e]=r,this.storage.set(s)}removeSelection(e){let t=this.storage.get()||{};t[e]&&(delete t[e],this.storage.set(t))}getSelection(){if(this.remember)return this.storage.get()}cleanup(){this.remember=!1,this.devices=void 0}isSame(e,t){return e.deviceId===t.deviceId&&(e.groupId===t.groupId||!e.groupId)}},ae=new ts;var ki=(t=>(t.TRANSFORM="TRANSFORM",t.ANALYZE="ANALYZE",t))(ki||{}),Ei=(t=>(t.PLATFORM_NOT_SUPPORTED="PLATFORM_NOT_SUPPORTED",t.DEVICE_NOT_SUPPORTED="DEVICE_NOT_SUPPORTED",t))(Ei||{});var ge=class{static failure(e,t){let i="mediaPlugin.failed",r=2,s=m({plugin_name:e},t.toAnalyticsProperties());return new C({name:i,level:r,properties:s})}static audioPluginFailure(e,t,i){let r="mediaPlugin.failed",s=2,n=m({plugin_name:e,sampleRate:t},i.toAnalyticsProperties());return new C({name:r,level:s,properties:n})}static audioPluginStats({pluginName:e,duration:t,loadTime:i,sampleRate:r}){let s="mediaPlugin.stats",n=1,o={plugin_name:e,duration:t,load_time:i,sampleRate:r};return new C({name:s,level:n,properties:o})}static added(e,t){let i="mediaPlugin.added",r=1,s={plugin_name:e,added_at:t};return new C({name:i,level:r,properties:s})}static stats({pluginName:e,duration:t,loadTime:i,avgPreProcessingTime:r,avgProcessingTime:s,inputFrameRate:n,pluginFrameRate:o}){let l="mediaPlugin.stats",u=1,p={plugin_name:e,duration:t,load_time:i,avg_preprocessing_time:r,avg_processing_time:s,input_frame_rate:n,plugin_frame_rate:o};return new C({name:l,level:u,properties:p})}};var Pi=class{constructor(e){this.eventBus=e;this.TAG="[AudioPluginsAnalytics]";this.initTime={},this.addedTimestamps={},this.pluginAdded={},this.pluginSampleRate={}}added(e,t){this.pluginAdded[e]=!0,this.addedTimestamps[e]=Date.now(),this.initTime[e]=0,this.pluginSampleRate[e]=t,this.eventBus.analytics.publish(ge.added(e,this.addedTimestamps[e]))}removed(e){if(this.pluginAdded[e]){let t={pluginName:e,duration:Math.floor((Date.now()-this.addedTimestamps[e])/1e3),loadTime:this.initTime[e],sampleRate:this.pluginSampleRate[e]};this.eventBus.analytics.publish(ge.audioPluginStats(t)),this.clean(e)}}cleanup(){for(let e of Object.keys(this.pluginAdded))this.removed(e)}failure(e,t){this.pluginAdded[e]&&(this.eventBus.analytics.publish(ge.audioPluginFailure(e,this.pluginSampleRate[e],t)),this.clean(e))}initWithTime(e,t){return c(this,null,function*(){if(this.initTime[e]){d.i(this.TAG,`Plugin Already loaded ${e}, time it took: ${this.initTime[e]}`);return}let i;try{i=yield this.timeInMs(t),d.i(this.TAG,`Time taken for Plugin ${e} initialization : ${i}`)}catch(r){let s=S.MediaPluginErrors.InitFailed("AUDIO_PLUGINS",`failed during initialization of plugin${r.message||r}`);throw d.e(this.TAG,s),this.failure(e,s),s}i&&(this.initTime[e]=i)})}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.pluginAdded[e],delete this.pluginSampleRate[e]}};var st="renegotiation-callback-id",bi="ion-sfu";var at="SUBSCRIBE_ICE_CONNECTION_CALLBACK_ID";var Ra="https://event.100ms.live/v2/client/report",Ha="https://event-nonprod.100ms.live/v2/client/report";var Ot=Math.pow(2,31)-1,G={DEVICE_CHANGE:"device-change",LOCAL_AUDIO_ENABLED:"local-audio-enabled",LOCAL_VIDEO_ENABLED:"local-video-enabled",LOCAL_VIDEO_UNMUTED_NATIVELY:"local-video-unmuted-natively",LOCAL_AUDIO_UNMUTED_NATIVELY:"local-audio-unmuted-natively",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",TRACK_INTERRUPTION:"track-interruption",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",ERROR:"error"},Ca="2.5",La="20250115",He="_handraise",is=1e3,rs=64,wa="https://whiteboard.100ms.live",Da="https://whiteboard-qa.100ms.live";var xt=class{constructor(e,t,i){this.eventBus=t;this.TAG="[AudioPluginsManager]";this.pluginAddInProgress=!1;this.queue=Promise.resolve();this.disposed=!1;this.hmsTrack=e,this.pluginsMap=new Map,this.analytics=new Pi(t),this.audioContext=ne.getAudioContext(),this.room=i}getPlugins(){return Array.from(this.pluginsMap.keys())}addPlugin(e){return c(this,null,function*(){var i;let t=(i=e.getName)==null?void 0:i.call(e);if(!t){d.w("no name provided by the plugin");return}if(this.pluginAddInProgress){let r=S.MediaPluginErrors.AddAlreadyInProgress("AUDIO_PLUGINS","Add Plugin is already in Progress");throw d.w("can't add another plugin when previous add is in progress"),r}yield this.serialize(()=>c(this,null,function*(){var r,s;this.pluginAddInProgress=!0;try{if(this.throwIfDisposedForAdd(e),this.pluginsMap.has(t)){d.w(this.TAG,`plugin - ${t} already added.`);return}(r=e.setEventBus)==null||r.call(e,this.eventBus),yield this.rebuildGraph(e),t==="HMSKrispPlugin"&&((s=this.room)!=null&&s.isNoiseCancellationEnabled)&&this.eventBus.analytics.publish(y.krispStart())}finally{this.pluginAddInProgress=!1}}))})}validatePlugin(e){return e.checkSupport(this.audioContext)}removePlugin(e){return c(this,null,function*(){var i;let t=(i=e.getName)==null?void 0:i.call(e);yield this.serialize(()=>c(this,null,function*(){if(!this.pluginsMap.has(t)){d.w(this.TAG,`plugin - ${t} not found to remove.`);return}t==="HMSKrispPlugin"&&this.eventBus.analytics.publish(y.krispStop()),this.stopPlugin(t,e,"on remove"),this.unregister(t),yield this.rebuildGraph()}))})}cleanup(){return c(this,null,function*(){this.disposed=!0;for(let[e,t]of Array.from(this.pluginsMap))this.stopPlugin(e,t,"at teardown"),this.unregister(e);this.analytics.cleanup(),this.disconnectNodes(),yield this.updateProcessedTrack(void 0).catch(()=>{})})}closeContext(){return c(this,null,function*(){this.audioContext=void 0})}reprocessPlugins(){return c(this,null,function*(){yield this.serialize(()=>this.rebuildGraph())})}releaseGraph(){return c(this,null,function*(){yield this.serialize(()=>c(this,null,function*(){this.disposed||(yield this.stopGraph())}))})}serialize(e){let t=this.queue.then(e);return this.queue=t.catch(i=>{d.w(this.TAG,"queued plugin task failed",i)}),t}rebuildGraph(e){return c(this,null,function*(){if(this.hasNothingToBuild(e))return;if(yield this.stopGraph(),this.disposed){this.throwIfDisposedForAdd(e);return}let t=Array.from(this.pluginsMap.values());e&&t.push(e);let i=new Map;if(t.length>0&&(this.initAudioNodes(),i=yield this.startPlugins(t),this.disposed)){this.reportFailures(i,e),this.throwIfDisposedForAdd(e);return}yield this.publishGraph(i),this.reportFailures(i,e),this.throwIfDisposedForAdd(e)})}reportFailures(e,t){var s;let i=(s=t==null?void 0:t.getName)==null?void 0:s.call(t),r;for(let[n,o]of e)n===i?r=o:this.disposed||this.eventBus.audioPluginFailed.publish(o);if(r)throw r}hasNothingToBuild(e){return!e&&this.pluginsMap.size===0&&!this.outputTrack}stopGraph(){return c(this,null,function*(){try{this.outputTrack&&(yield this.updateProcessedTrack(void 0))}finally{for(let[e,t]of this.pluginsMap)this.stopPlugin(e,t,"before rebuild"),this.analytics.removed(e);this.disconnectNodes()}})}publishGraph(e){return c(this,null,function*(){if(!this.disposed){if(this.pluginsMap.size>0){if(this.connectToDestination()){yield this.updateProcessedTrack(this.outputTrack),this.disposed&&(yield this.updateProcessedTrack(void 0).catch(()=>{}));return}let t=S.MediaPluginErrors.ProcessingFailed("AUDIO_PLUGINS","plugin output could not be connected to the published track");for(let[i,r]of Array.from(this.pluginsMap))this.stopPlugin(i,r,"on failed publish"),this.analytics.failure(i,t),this.unregister(i),e.set(i,t)}d.i(this.TAG,"no plugin output to publish, going back to the native track"),this.disconnectNodes(),yield this.updateProcessedTrack(void 0)}})}startPlugins(e){return c(this,null,function*(){var i;let t=new Map;for(let r of e){let s=(i=r.getName)==null?void 0:i.call(r);try{yield this.startPlugin(r)}catch(n){let o=this.toPluginError(n);d.e(this.TAG,`failed to start plugin ${s}, dropping it`,o),this.analytics.failure(s,o),this.unregister(s),t.set(s,o);continue}if(this.disposed)return d.w(this.TAG,`torn down while starting ${s}, dropping the graph`),this.stopPlugin(s,r,"after teardown during start"),this.unregister(s),this.disconnectNodes(),t;this.pluginsMap.set(s,r)}return t})}startPlugin(e){return c(this,null,function*(){var i,r;let t=(i=e.getName)==null?void 0:i.call(e);this.analytics.added(t,this.audioContext.sampleRate),this.checkRoomPolicy(t),this.validateAndThrow(t,e);try{if(yield this.analytics.initWithTime(t,()=>this.callPlugin(t,"init",()=>c(this,null,function*(){return e.init()}))),this.disposed)return;let s=yield this.callPlugin(t,"processAudioTrack",()=>e.processAudioTrack(this.audioContext,this.prevAudioNode||this.sourceNode));if(!s)throw Error(`plugin ${t} returned no audio node`);(r=this.prevAudioNode)==null||r.connect(s),this.prevAudioNode=s}catch(s){throw e.stop(),s}})}callPlugin(e,t,i){return c(this,null,function*(){let r,s=new Promise((n,o)=>{r=setTimeout(()=>o(Error(`plugin ${e} ${t} timed out after ${3e4}ms`)),3e4)});try{return yield Promise.race([i(),s])}finally{clearTimeout(r)}})}stopPlugin(e,t,i){try{t.stop()}catch(r){d.e(this.TAG,`error in stopping plugin ${e} ${i}`,r)}}throwIfDisposedForAdd(e){if(!(!this.disposed||!e))throw S.MediaPluginErrors.ProcessingFailed("AUDIO_PLUGINS","cannot add plugin after cleanup")}toPluginError(e){return e instanceof k?e:(d.e(this.TAG,"plugin failed with an untyped error",e),S.MediaPluginErrors.ProcessingFailed("AUDIO_PLUGINS",(e==null?void 0:e.message)||String(e)))}checkRoomPolicy(e){var t;if(e==="HMSKrispPlugin"&&!((t=this.room)!=null&&t.isNoiseCancellationEnabled))throw S.MediaPluginErrors.NotAllowedForRoom("AUDIO_PLUGINS","Krisp Noise Cancellation is not enabled for this room")}validateAndThrow(e,t){let i=this.validatePlugin(t);if(i.isSupported){d.i(this.TAG,`plugin is supported,- ${t.getName()}`);return}let r;if(i.errType==="PLATFORM_NOT_SUPPORTED"?r=S.MediaPluginErrors.PlatformNotSupported("AUDIO_PLUGINS","platform not supported, see docs"):i.errType==="DEVICE_NOT_SUPPORTED"&&(r=S.MediaPluginErrors.DeviceNotSupported("AUDIO_PLUGINS","audio device not supported, see docs")),r)throw this.analytics.failure(e,r),r}initAudioNodes(){if(this.audioContext){let e=new MediaStream([this.hmsTrack.nativeTrack]);this.sourceNode=this.audioContext.createMediaStreamSource(e),this.destinationNode||(this.destinationNode=this.audioContext.createMediaStreamDestination(),this.outputTrack=this.destinationNode.stream.getAudioTracks()[0])}}connectToDestination(){if(!this.prevAudioNode||!this.destinationNode||this.prevAudioNode.context!==this.destinationNode.context)return d.e(this.TAG,"no usable output node for the plugin graph",{hasChain:!!this.prevAudioNode,hasDestination:!!this.destinationNode}),!1;try{return this.prevAudioNode.connect(this.destinationNode),!0}catch(e){return d.e(this.TAG,"error in connecting to destination node",e),!1}}updateProcessedTrack(e){return c(this,null,function*(){try{yield this.hmsTrack.setProcessedTrack(e)}catch(t){throw d.e(this.TAG,"error in setting processed track",t),t}})}unregister(e){this.pluginsMap.delete(e)&&d.i(this.TAG,`removed plugin ${e}`),this.analytics.removed(e)}disconnectNodes(){var e,t,i;(e=this.sourceNode)==null||e.disconnect(),(t=this.prevAudioNode)==null||t.disconnect(),(i=this.outputTrack)==null||i.stop(),this.sourceNode=void 0,this.destinationNode=void 0,this.prevAudioNode=void 0,this.outputTrack=void 0}};var Na=require("uuid");var Po=["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"],Ii=class{constructor(){this.eventPerformanceMeasures={}}start(e){try{typeof performance!="undefined"&&performance.mark&&performance.mark(e)}catch(t){d.w("[AnalyticsTimer]",`Error marking performance for event ${e}`,{error:t})}}end(e){var t;try{typeof performance!="undefined"&&performance.measure&&(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[...Po,...e].reduce((t,i)=>M(m({},t),{[i]:this.getTimeTaken(i)}),{})}cleanup(){this.eventPerformanceMeasures={}}};var ss=We(require("webrtc-adapter"));function bo(a,e){let t=a.toLowerCase(),i=S.TracksErrors.GenericTrack("TRACK",a);return t.includes("device not found")?i=S.TracksErrors.DeviceNotAvailable("TRACK",e,a):t.includes("permission denied")&&(i=S.TracksErrors.CantAccessCaptureDevice("TRACK",e,a)),i}function Io(a,e=""){if(ss.default.browserDetails.browser==="chrome"&&a.name==="NotAllowedError"&&a.message.includes("denied by system"))return S.TracksErrors.SystemDeniedPermission("TRACK",e,a.message);if(ss.default.browserDetails.browser==="firefox"&&a.name==="NotFoundError"){let i=S.TracksErrors.SystemDeniedPermission("TRACK",e,a.message);return i.description=`Capture device is either blocked at Operating System level or not available - ${e}`,i}switch(a.name){case"OverconstrainedError":return S.TracksErrors.OverConstrained("TRACK",e,a.constraint);case"NotAllowedError":return S.TracksErrors.CantAccessCaptureDevice("TRACK",e,a.message);case"NotFoundError":return S.TracksErrors.DeviceNotAvailable("TRACK",e,a.message);case"NotReadableError":return S.TracksErrors.DeviceInUse("TRACK",e,a.message);case"TypeError":return S.TracksErrors.NothingToReturn("TRACK",a.message);default:return bo(a.message,e)}}function xe(a,e){let t=Io(a,e);return t.addNativeError(a),t}var Ai=(t=>(t.SIP="sip",t.REGULAR="regular",t))(Ai||{});var as=(o=>(o.NONE="none",o.INITIALISED="initialised",o.STARTED="started",o.PAUSED="paused",o.RESUMED="resumed",o.STOPPED="stopped",o.FAILED="failed",o))(as||{});var ns=(t=>(t.DVR="dvr",t.NO_DVR="no-dvr",t))(ns||{}),os=(i=>(i.REGULAR="regular",i.SCREEN="screen",i.COMPOSITE="composite",i))(os||{}),cs=(r=>(r.INITIALISED="initialised",r.STARTED="started",r.STOPPED="stopped",r.FAILED="failed",r))(cs||{}),ds=(e=>(e.CAPTION="caption",e))(ds||{});var Ue={f:"high",h:"medium",q:"low"};var Ri=(t=>(t.VOICE="voice",t.MUSIC="music",t))(Ri||{});var ls=(i=>(i.videoInput="videoInput",i.audioInput="audioInput",i.audioOutput="audioOutput",i))(ls||{});var ee=class{constructor(){this._volume=1;this._codec="opus";this._maxBitrate=32;this._deviceId="default";this._audioMode="voice";this._advanced=[{autoGainControl:{exact:!0}},{noiseSuppression:{exact:!0}},{highpassFilter:{exact:!0}},{audioMirroring:{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=this._audioMode==="music"?320:e,this}deviceId(e){return this._deviceId=e,this}audioMode(e="voice"){return this._audioMode=e,this._audioMode==="music"?this._maxBitrate=320:this._maxBitrate=32,this}advanced(e){return this._advanced=e,this}build(){return new je(this._volume,this._codec,this._maxBitrate,this._deviceId,this._advanced,this._audioMode)}},je=class{constructor(e,t,i,r,s,n){this.volume=e,this.codec=t,this.maxBitrate=i,this.deviceId=r,this.advanced=s,this.audioMode=n,this.audioMode==="music"?this.maxBitrate=320:this.maxBitrate=32}toConstraints(){return{deviceId:this.deviceId==="default"?this.deviceId:{exact:this.deviceId},advanced:this.audioMode==="music"?[]:this.advanced}}toAnalyticsProperties(){return{audio_bitrate:this.maxBitrate,audio_codec:this.codec}}};var z=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 Qe(this._width,this._height,this._codec,this._maxFramerate,this._deviceId,this._advanced,this._maxBitrate,this._facingMode)}},Qe=class{constructor(e,t,i,r,s,n,o,l){this.width=e,this.height=t,this.codec=i,this.maxFramerate=r,this.maxBitrate=o,this.deviceId=s,this.advanced=n,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==="default"?this.deviceId:{exact: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 Sa()&&this.height&&this.width&&this.height>this.width?{width:this.height,height:this.width}:{width:this.width,height:this.height}}};var Be=class{constructor(){this._video=new z().build();this._audio=new ee().build();this._screen=new z().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 S.TracksErrors.NothingToReturn("TRACK");if(this._video===null&&this._simulcast)throw S.TracksErrors.InvalidVideoSettings("TRACK","Cannot enable simulcast when no video settings are provided");return new nt(this._video,this._audio,this._simulcast,this._screen||void 0)}},nt=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}};var Ao=32e3;var ne={audioContext:null,getAudioContext(){return this.audioContext||(this.audioContext=va?new AudioContext:new AudioContext({sampleRate:Ao})),this.audioContext},resumeContext(){return c(this,null,function*(){try{return yield this.getAudioContext().resume()}catch(a){d.e("AudioContext",a)}})}},Hi=(r=>(r.SPEAKERPHONE="SPEAKERPHONE",r.WIRED="WIRED",r.BLUETOOTH="BLUETOOTH",r.EARPIECE="EARPIECE",r))(Hi||{}),Ci=a=>{if(!a)return d.w("[DeviceManager]:","No device label provided"),"SPEAKERPHONE";let e=a.toLowerCase();return e.includes("speakerphone")?"SPEAKERPHONE":e.includes("wired")?"WIRED":/airpods|buds|wireless|bluetooth/gi.test(e)?"BLUETOOTH":e.includes("earpiece")?"EARPIECE":"SPEAKERPHONE"};var us={isAudioMuted:!1,isVideoMuted:!1,audioInputDeviceId:"default",audioOutputDeviceId:"default",videoDeviceId:"default",audioMode:"voice"},Pe,Li,Te=class a{constructor(e,t,i,r,s){this.store=e;this.observer=t;this.deviceManager=i;this.eventBus=r;this.analyticsTimer=s;this.TAG="[LocalTrackManager]";this.setScreenCaptureHandleConfig()}getTracksToPublish(){return c(this,arguments,function*(e=us){let t=this.getAVTrackSettings(e);if(!t)return[];let i=!!t.audio,r=!!t.video,s=[],{videoTrack:n,audioTrack:o}=yield this.updateCurrentLocalTrackSettings(t),l=(n==null?void 0:n.stream)||(o==null?void 0:o.stream),u=!!(n&&this.store.getTrackById(n.trackId)),p=!!(o&&this.store.getTrackById(o.trackId));if(u&&p)return[];let h={audio:i&&!o&&(e.isAudioMuted?"empty":!0),video:r&&!n&&(e.isVideoMuted?"empty":!0)};h.audio&&this.analyticsTimer.start("local_audio_track_time"),h.video&&this.analyticsTimer.start("local_video_track_time");try{d.d(this.TAG,"Init Local Tracks",{fetchTrackOptions:h}),s=yield this.getLocalTracks(h,t,l)}catch(T){s=yield this.retryGetLocalTracks(T,t,h,l)}return h.audio&&this.analyticsTimer.end("local_audio_track_time"),h.video&&this.analyticsTimer.end("local_video_track_time"),n&&r&&!u&&s.push(n),o&&i&&!p&&s.push(o),s})}getLocalTracks(){return c(this,arguments,function*(e={audio:!0,video:!0},t,i){try{let r=yield this.getNativeLocalTracks(e,t);return this.createHMSLocalTracks(r,t,i)}catch(r){throw this.eventBus.analytics.publish(y.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 nt(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})}optimizeScreenShareConstraint(e,t){return c(this,null,function*(){var s,n,o;if(typeof t.video=="boolean"||!((s=t.video)!=null&&s.width)||!((n=t.video)!=null&&n.height))return;let i=this.store.getPublishParams();if(!i||!((o=i.allowed)!=null&&o.includes("screen")))return;let r=document.createElement("video");r.srcObject=e,r.addEventListener("loadedmetadata",()=>c(this,null,function*(){try{let{videoWidth:l,videoHeight:u}=r,p=i.screen,h=p.width*p.height,T=l/u,g=p.width/p.height;if(T>g){let f=t.video,P=T/g,v=Math.sqrt(P);l*u>h?(f.width=l/v,f.height=u/v):(f.height=u*v,f.width=l*v),yield e.getVideoTracks()[0].applyConstraints(f)}}finally{r.srcObject=null}}))})}getLocalScreen(e,t=!1){return c(this,null,function*(){var T;let i=yield this.getOrDefaultScreenshareConfig(e),r=this.getScreenshareSettings(i.videoOnly),s={video:M(m({},r==null?void 0:r.video.toConstraints(!0)),{displaySurface:i.displaySurface}),preferCurrentTab:i.preferCurrentTab,selfBrowserSurface:i.selfBrowserSurface,surfaceSwitching:i.surfaceSwitching,systemAudio:i.systemAudio};if(r!=null&&r.audio){let g=(T=r==null?void 0:r.audio)==null?void 0:T.toConstraints();delete g.advanced,s.audio=M(m({},g),{autoGainControl:!1,noiseSuppression:!1,googAutoGainControl:!1,echoCancellation:!1})}else e!=null&&e.forceCurrentTab&&e.preferCurrentTab&&e.cropElement&&(s.audio={echoCancellation:!0,noiseSuppression:!0});let n;try{d.d("retrieving screenshare with ",{config:i},{constraints:s}),n=yield navigator.mediaDevices.getDisplayMedia(s),t&&(yield this.optimizeScreenShareConstraint(n,s))}catch(g){d.w(this.TAG,"error in getting screenshare - ",g);let f=xe(g,"screen");throw this.eventBus.analytics.publish(y.publish({error:f,devices:this.deviceManager.getDevices(),settings:new nt(r==null?void 0:r.video,r==null?void 0:r.audio,!1)})),f}let o=[],l=new fe(n),u=n.getVideoTracks()[0],p=new K(l,u,"screen",this.eventBus,r==null?void 0:r.video,this.store.getRoom());p.setSimulcastDefinitons(this.store.getSimulcastDefinitionsForPeer(this.store.getLocalPeer(),"screen"));try{let g=this.validateCurrentTabCapture(p,i.forceCurrentTab);p.isCurrentTab=g,yield p.cropTo(i.cropTarget)}catch(g){throw n.getTracks().forEach(f=>f.stop()),g}o.push(p);let h=n.getAudioTracks()[0];if(h){let g=new Se(l,h,"screen",this.eventBus,r==null?void 0:r.audio,this.store.getRoom());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,Na.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"),S.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 o,l,u;let t=((o=e==null?void 0:e.getSettings())==null?void 0:o.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)),Li||(Li=setInterval(()=>{let p=Pe==null?void 0:Pe.getContext("2d");p&&p.fillRect(0,0,1,1)},1e3/r));let n=Pe.captureStream(r).getVideoTracks()[0];return n.enabled=!1,n}static getEmptyAudioTrack(){let e=ne.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(Li),Li=void 0,Pe=void 0}getAVTracks(e){return c(this,null,function*(){var i,r,s,n;let t={audio:e.audio?e.audio.toConstraints():!1,video:e.video?e.video.toConstraints():!1};try{let o=yield navigator.mediaDevices.getUserMedia(t),l=o.getVideoTracks(),u=o.getAudioTracks();return this.eventBus.analytics.publish(y.mediaConstraints({requestedConstraints:t,appliedConstraints:{video:(i=l[0])==null?void 0:i.getConstraints(),audio:(r=u[0])==null?void 0:r.getConstraints()},trackSettings:{video:(s=l[0])==null?void 0:s.getSettings(),audio:(n=u[0])==null?void 0:n.getSettings()}})),l.concat(u)}catch(o){yield this.deviceManager.init();let l=!!(!this.deviceManager.hasWebcamPermission&&e.video),u=!!(!this.deviceManager.hasMicrophonePermission&&e.audio),p=this.getErrorType(l,u);throw xe(o,p)}})}getAVTrackSettings(e){let t=this.getAudioSettings(e),i=this.getVideoSettings(e);return!t&&!i?null:new Be().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 k&&e.action==="TRACK"){this.observer.onFailure(e);let s=e.code===E.TracksErrors.OVER_CONSTRAINED,n=e.message.includes("audio"),o=e.message.includes("video");if(s){let l=new Be().video(new Qe).audio(new je).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 k?u.nativeError:u,h=u;if((p==null?void 0:p.name)==="OverconstrainedError"){let T=S.TracksErrors.GenericTrack("TRACK","Overconstrained error after dropping all constraints");T.addNativeError(p),h=T}return yield this.retryGetLocalTracks(h,t,i,r)}}i.audio=n?"empty":i.audio,i.video=o?"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":"audio, video"}getEmptyTracks(e){let t=[];return e.audio==="empty"&&t.push(a.getEmptyAudioTrack()),e.video==="empty"&&t.push(a.getEmptyVideoTrack()),t}updateCurrentLocalTrackSettings(e){return c(this,null,function*(){let t=this.store.getLocalPeerTracks(),i=t.find(o=>o.type==="video"&&o.source==="regular"),r=t.find(o=>o.type==="audio"&&o.source==="regular"),s=t.find(o=>o.type==="video"&&o.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 n=this.getScreenshareSettings(!0);return n!=null&&n.video&&(yield s==null?void 0:s.setSettings(n==null?void 0:n.video)),{videoTrack:i,audioTrack:r}})}getAudioSettings(e){var n;let t=this.store.getPublishParams();if(!t||!((n=t.allowed)!=null&&n.includes("audio")))return null;let i=this.store.getLocalPeer(),r=i==null?void 0:i.audioTrack,s=(r==null?void 0:r.settings.deviceId)||e.audioInputDeviceId;return new ee().codec(t.audio.codec).maxBitrate(t.audio.bitRate).deviceId(s||us.audioInputDeviceId).build()}getVideoSettings(e){var o;let t=this.store.getPublishParams();if(!t||!((o=t.allowed)!=null&&o.includes("video")))return null;let i=this.store.getLocalPeer(),r=i==null?void 0:i.videoTrack,s=(r==null?void 0:r.settings.deviceId)||e.videoDeviceId,n=t.video;return new z().codec(n.codec).maxBitrate(n.bitRate).maxFramerate(n.frameRate).setWidth(n.width).setHeight(n.height).deviceId(s||us.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 z().maxBitrate(i.bitRate,!1).codec(i.codec).maxFramerate(i.frameRate).setWidth(i.width).setHeight(i.height).build(),audio:e?void 0:new ee().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(o=>o.kind==="video"),s=e.find(o=>o.kind==="audio");i?e.forEach(o=>i==null?void 0:i.nativeStream.addTrack(o)):i=new fe(new MediaStream(e));let n=[];if(s&&(t!=null&&t.audio)){let o=new Se(i,s,"regular",this.eventBus,t.audio,this.store.getRoom());n.push(o)}if(r&&(t!=null&&t.video)){let o=new K(i,r,"regular",this.eventBus,t.video,this.store.getRoom());o.setSimulcastDefinitons(this.store.getSimulcastDefinitionsForPeer(this.store.getLocalPeer(),"regular")),n.push(o)}return n}};function hs(a){return c(this,null,function*(){try{let e=a?a.toConstraints():!1;return(yield navigator.mediaDevices.getUserMedia({audio:e})).getAudioTracks()[0]}catch(e){throw xe(e,"audio")}})}function ms(a){return c(this,null,function*(){try{let e=a?a.toConstraints():!1;return(yield navigator.mediaDevices.getUserMedia({video:e})).getVideoTracks()[0]}catch(e){throw xe(e,"video")}})}function ve(a){return"canvas"in a||a.label==="MediaStreamAudioDestinationNode"||a.label===""}var wi=(a,e)=>{if(!navigator.permissions){d.d("Permissions API not supported");return}navigator.permissions.query({name:a}).then(t=>{e(t.state),t.onchange=()=>{d.d(`${a} permission changed`,t.state),e(t.state)}}).catch(t=>{d.e(`${a} not supported`,t.message)})};var Ve=class{constructor(e=1/0){this.capacity=e;this.storage=[]}size(){return this.storage.length}toList(){return this.storage.slice(0)}enqueue(e){this.size()===this.capacity&&this.dequeue(),this.storage.push(e)}dequeue(){return this.storage.shift()}aggregate(e){return e(this.storage)}};var Oa=`(function workerSetup() {
38
+ }`,`${this}`)}subscribeToAudio(t){return c(this,null,function*(){this.stream instanceof Re&&(yield this.stream.setAudio(t,this.trackId,this.logIdentifier))})}};var Ba=We(require("lodash.isequal"));var ts=class{constructor(){this.storage=new Ee("hms-device-selection");this.remember=!1;this.TAG="[HMSDeviceStorage]"}setDevices(e){var r;if(this.devices=e,!this.remember)return;let t=this.storage.get();if(!t)return;let i=["audioInput","videoInput","audioOutput"];for(let s of i){let n=t[s];n&&((r=e[s])!=null&&r.some(l=>this.isSame(n,l))||(d.w(this.TAG,`Removing ${s} device from storage as it's no longer available: ${n.deviceId}`),this.removeSelection(s)))}}rememberDevices(e){this.remember=e}updateSelection(e,{deviceId:t,groupId:i}){if(!this.devices||!this.remember)return;let r=this.devices[e].find(n=>this.isSame({deviceId:t,groupId:i},n));if(!r){d.w(this.TAG,`Could not find device with deviceId: ${t}, groupId: ${i}`);return}let s=this.storage.get()||{};s[e]=r,this.storage.set(s)}removeSelection(e){let t=this.storage.get()||{};t[e]&&(delete t[e],this.storage.set(t))}getSelection(){if(this.remember)return this.storage.get()}cleanup(){this.remember=!1,this.devices=void 0}isSame(e,t){return e.deviceId===t.deviceId&&(e.groupId===t.groupId||!e.groupId)}},ae=new ts;var ki=(t=>(t.TRANSFORM="TRANSFORM",t.ANALYZE="ANALYZE",t))(ki||{}),Ei=(t=>(t.PLATFORM_NOT_SUPPORTED="PLATFORM_NOT_SUPPORTED",t.DEVICE_NOT_SUPPORTED="DEVICE_NOT_SUPPORTED",t))(Ei||{});var ge=class{static failure(e,t){let i="mediaPlugin.failed",r=2,s=m({plugin_name:e},t.toAnalyticsProperties());return new C({name:i,level:r,properties:s})}static audioPluginFailure(e,t,i){let r="mediaPlugin.failed",s=2,n=m({plugin_name:e,sampleRate:t},i.toAnalyticsProperties());return new C({name:r,level:s,properties:n})}static audioPluginStats({pluginName:e,duration:t,loadTime:i,sampleRate:r}){let s="mediaPlugin.stats",n=1,o={plugin_name:e,duration:t,load_time:i,sampleRate:r};return new C({name:s,level:n,properties:o})}static added(e,t){let i="mediaPlugin.added",r=1,s={plugin_name:e,added_at:t};return new C({name:i,level:r,properties:s})}static stats({pluginName:e,duration:t,loadTime:i,avgPreProcessingTime:r,avgProcessingTime:s,inputFrameRate:n,pluginFrameRate:o}){let l="mediaPlugin.stats",u=1,p={plugin_name:e,duration:t,load_time:i,avg_preprocessing_time:r,avg_processing_time:s,input_frame_rate:n,plugin_frame_rate:o};return new C({name:l,level:u,properties:p})}};var Pi=class{constructor(e){this.eventBus=e;this.TAG="[AudioPluginsAnalytics]";this.initTime={},this.addedTimestamps={},this.pluginAdded={},this.pluginSampleRate={}}added(e,t){this.pluginAdded[e]=!0,this.addedTimestamps[e]=Date.now(),this.initTime[e]=0,this.pluginSampleRate[e]=t,this.eventBus.analytics.publish(ge.added(e,this.addedTimestamps[e]))}removed(e){if(this.pluginAdded[e]){let t={pluginName:e,duration:Math.floor((Date.now()-this.addedTimestamps[e])/1e3),loadTime:this.initTime[e],sampleRate:this.pluginSampleRate[e]};this.eventBus.analytics.publish(ge.audioPluginStats(t)),this.clean(e)}}cleanup(){for(let e of Object.keys(this.pluginAdded))this.removed(e)}failure(e,t){this.pluginAdded[e]&&(this.eventBus.analytics.publish(ge.audioPluginFailure(e,this.pluginSampleRate[e],t)),this.clean(e))}initWithTime(e,t){return c(this,null,function*(){if(this.initTime[e]){d.i(this.TAG,`Plugin Already loaded ${e}, time it took: ${this.initTime[e]}`);return}let i;try{i=yield this.timeInMs(t),d.i(this.TAG,`Time taken for Plugin ${e} initialization : ${i}`)}catch(r){let s=S.MediaPluginErrors.InitFailed("AUDIO_PLUGINS",`failed during initialization of plugin${r.message||r}`);throw d.e(this.TAG,s),this.failure(e,s),s}i&&(this.initTime[e]=i)})}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.pluginAdded[e],delete this.pluginSampleRate[e]}};var st="renegotiation-callback-id",bi="ion-sfu";var at="SUBSCRIBE_ICE_CONNECTION_CALLBACK_ID";var Ra="https://event.100ms.live/v2/client/report",Ha="https://event-nonprod.100ms.live/v2/client/report";var Ot=Math.pow(2,31)-1,G={DEVICE_CHANGE:"device-change",LOCAL_AUDIO_ENABLED:"local-audio-enabled",LOCAL_VIDEO_ENABLED:"local-video-enabled",LOCAL_VIDEO_UNMUTED_NATIVELY:"local-video-unmuted-natively",LOCAL_AUDIO_UNMUTED_NATIVELY:"local-audio-unmuted-natively",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",TRACK_INTERRUPTION:"track-interruption",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",ERROR:"error"},Ca="2.5",La="20250115",He="_handraise",is=1e3,rs=64,wa="https://whiteboard.100ms.live",Da="https://whiteboard-qa.100ms.live";var xt=class{constructor(e,t,i){this.eventBus=t;this.TAG="[AudioPluginsManager]";this.pluginAddInProgress=!1;this.queue=Promise.resolve();this.disposed=!1;this.hmsTrack=e,this.pluginsMap=new Map,this.analytics=new Pi(t),this.audioContext=ne.getAudioContext(),this.room=i}getPlugins(){return Array.from(this.pluginsMap.keys())}addPlugin(e){return c(this,null,function*(){var i;let t=(i=e.getName)==null?void 0:i.call(e);if(!t){d.w("no name provided by the plugin");return}if(this.pluginAddInProgress){let r=S.MediaPluginErrors.AddAlreadyInProgress("AUDIO_PLUGINS","Add Plugin is already in Progress");throw d.w("can't add another plugin when previous add is in progress"),r}yield this.serialize(()=>c(this,null,function*(){var r,s;this.pluginAddInProgress=!0;try{if(this.throwIfDisposedForAdd(e),this.pluginsMap.has(t)){d.w(this.TAG,`plugin - ${t} already added.`);return}(r=e.setEventBus)==null||r.call(e,this.eventBus),yield this.rebuildGraph(e),t==="HMSKrispPlugin"&&((s=this.room)!=null&&s.isNoiseCancellationEnabled)&&this.eventBus.analytics.publish(y.krispStart())}finally{this.pluginAddInProgress=!1}}))})}validatePlugin(e){return e.checkSupport(this.audioContext)}removePlugin(e){return c(this,null,function*(){var i;let t=(i=e.getName)==null?void 0:i.call(e);yield this.serialize(()=>c(this,null,function*(){if(!this.pluginsMap.has(t)){d.w(this.TAG,`plugin - ${t} not found to remove.`);return}t==="HMSKrispPlugin"&&this.eventBus.analytics.publish(y.krispStop()),this.stopPlugin(t,e,"on remove"),this.unregister(t),yield this.rebuildGraph()}))})}cleanup(){return c(this,null,function*(){this.disposed=!0;for(let[e,t]of Array.from(this.pluginsMap))this.stopPlugin(e,t,"at teardown"),this.unregister(e);this.analytics.cleanup(),this.disconnectNodes(),yield this.updateProcessedTrack(void 0).catch(()=>{})})}closeContext(){return c(this,null,function*(){this.audioContext=void 0})}reprocessPlugins(){return c(this,null,function*(){yield this.serialize(()=>this.rebuildGraph())})}releaseGraph(){return c(this,null,function*(){yield this.serialize(()=>c(this,null,function*(){this.disposed||(yield this.stopGraph())}))})}serialize(e){let t=this.queue.then(e);return this.queue=t.catch(i=>{d.w(this.TAG,"queued plugin task failed",i)}),t}rebuildGraph(e){return c(this,null,function*(){if(this.hasNothingToBuild(e)){d.d(this.TAG,"no plugins and nothing published, skipping the rebuild");return}if(yield this.stopGraph(),this.disposed){this.throwIfDisposedForAdd(e);return}let t=Array.from(this.pluginsMap.values());e&&t.push(e);let i=new Map;if(t.length>0&&(this.initAudioNodes(),i=yield this.startPlugins(t),this.disposed)){this.reportFailures(i,e),this.throwIfDisposedForAdd(e);return}yield this.publishGraph(i),this.logGraph(i,e),this.reportFailures(i,e),this.throwIfDisposedForAdd(e)})}logGraph(e,t){var i;d.i(this.TAG,"rebuilt the plugin graph",{requested:(i=t==null?void 0:t.getName)==null?void 0:i.call(t),running:this.getPlugins(),dropped:Array.from(e.keys()),publishing:this.outputTrack?"plugin output":"native track"})}reportFailures(e,t){var s;let i=(s=t==null?void 0:t.getName)==null?void 0:s.call(t),r;for(let[n,o]of e)n===i?r=o:this.disposed||this.eventBus.audioPluginFailed.publish(o);if(r)throw r}hasNothingToBuild(e){return!e&&this.pluginsMap.size===0&&!this.outputTrack}stopGraph(){return c(this,null,function*(){try{this.outputTrack&&(yield this.updateProcessedTrack(void 0))}finally{for(let[e,t]of this.pluginsMap)this.stopPlugin(e,t,"before rebuild"),this.analytics.removed(e);this.disconnectNodes()}})}publishGraph(e){return c(this,null,function*(){if(!this.disposed){if(this.pluginsMap.size>0){if(this.connectToDestination()){yield this.updateProcessedTrack(this.outputTrack),this.disposed&&(yield this.updateProcessedTrack(void 0).catch(()=>{}));return}let t=S.MediaPluginErrors.ProcessingFailed("AUDIO_PLUGINS","plugin output could not be connected to the published track");for(let[i,r]of Array.from(this.pluginsMap))this.stopPlugin(i,r,"on failed publish"),this.analytics.failure(i,t),this.unregister(i),e.set(i,t)}d.i(this.TAG,"no plugin output to publish, going back to the native track"),this.disconnectNodes(),yield this.updateProcessedTrack(void 0)}})}startPlugins(e){return c(this,null,function*(){var i;let t=new Map;for(let r of e){if(this.disposed)return d.w(this.TAG,"torn down between plugin starts, dropping the graph"),this.disconnectNodes(),t;let s=(i=r.getName)==null?void 0:i.call(r);try{yield this.startPlugin(r)}catch(n){let o=this.toPluginError(n);d.e(this.TAG,`failed to start plugin ${s}, dropping it`,o),this.analytics.failure(s,o),this.unregister(s),t.set(s,o);continue}if(this.disposed)return d.w(this.TAG,`torn down while starting ${s}, dropping the graph`),this.stopPlugin(s,r,"after teardown during start"),this.unregister(s),this.disconnectNodes(),t;this.pluginsMap.set(s,r)}return t})}startPlugin(e){return c(this,null,function*(){var i,r;let t=(i=e.getName)==null?void 0:i.call(e);this.analytics.added(t,this.audioContext.sampleRate),this.checkRoomPolicy(t),this.validateAndThrow(t,e);try{if(yield this.analytics.initWithTime(t,()=>this.callPlugin(t,"init",()=>c(this,null,function*(){return e.init()}))),this.disposed)return;let s=yield this.callPlugin(t,"processAudioTrack",()=>e.processAudioTrack(this.audioContext,this.prevAudioNode||this.sourceNode));if(!s)throw Error(`plugin ${t} returned no audio node`);(r=this.prevAudioNode)==null||r.connect(s),this.prevAudioNode=s}catch(s){throw this.stopPlugin(t,e,"after a failed start"),s}})}callPlugin(e,t,i){return c(this,null,function*(){let r,s=new Promise((n,o)=>{r=setTimeout(()=>o(Error(`plugin ${e} ${t} timed out after ${3e4}ms`)),3e4)});try{return yield Promise.race([i(),s])}finally{clearTimeout(r)}})}stopPlugin(e,t,i){try{t.stop()}catch(r){d.e(this.TAG,`error in stopping plugin ${e} ${i}`,r)}}throwIfDisposedForAdd(e){if(!(!this.disposed||!e))throw S.MediaPluginErrors.ProcessingFailed("AUDIO_PLUGINS","cannot add plugin after cleanup")}toPluginError(e){return e instanceof k?e:(d.e(this.TAG,"plugin failed with an untyped error",e),S.MediaPluginErrors.ProcessingFailed("AUDIO_PLUGINS",(e==null?void 0:e.message)||String(e)))}checkRoomPolicy(e){var t;if(e==="HMSKrispPlugin"&&!((t=this.room)!=null&&t.isNoiseCancellationEnabled))throw S.MediaPluginErrors.NotAllowedForRoom("AUDIO_PLUGINS","Krisp Noise Cancellation is not enabled for this room")}validateAndThrow(e,t){let i=this.validatePlugin(t);if(i.isSupported){d.i(this.TAG,`plugin is supported,- ${t.getName()}`);return}let r;if(i.errType==="PLATFORM_NOT_SUPPORTED"?r=S.MediaPluginErrors.PlatformNotSupported("AUDIO_PLUGINS","platform not supported, see docs"):i.errType==="DEVICE_NOT_SUPPORTED"&&(r=S.MediaPluginErrors.DeviceNotSupported("AUDIO_PLUGINS","audio device not supported, see docs")),r)throw this.analytics.failure(e,r),r}initAudioNodes(){if(this.audioContext){let e=new MediaStream([this.hmsTrack.nativeTrack]);this.sourceNode=this.audioContext.createMediaStreamSource(e),this.destinationNode||(this.destinationNode=this.audioContext.createMediaStreamDestination(),this.outputTrack=this.destinationNode.stream.getAudioTracks()[0])}}connectToDestination(){if(!this.prevAudioNode||!this.destinationNode||this.prevAudioNode.context!==this.destinationNode.context)return d.e(this.TAG,"no usable output node for the plugin graph",{hasChain:!!this.prevAudioNode,hasDestination:!!this.destinationNode}),!1;try{return this.prevAudioNode.connect(this.destinationNode),!0}catch(e){return d.e(this.TAG,"error in connecting to destination node",e),!1}}updateProcessedTrack(e){return c(this,null,function*(){try{yield this.hmsTrack.setProcessedTrack(e)}catch(t){throw d.e(this.TAG,"error in setting processed track",t),this.toPluginError(t)}})}unregister(e){this.pluginsMap.delete(e)&&d.i(this.TAG,`removed plugin ${e}`),this.analytics.removed(e)}disconnectNodes(){var e,t,i;(e=this.sourceNode)==null||e.disconnect(),(t=this.prevAudioNode)==null||t.disconnect(),(i=this.outputTrack)==null||i.stop(),this.sourceNode=void 0,this.destinationNode=void 0,this.prevAudioNode=void 0,this.outputTrack=void 0}};var Na=require("uuid");var Po=["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"],Ii=class{constructor(){this.eventPerformanceMeasures={}}start(e){try{typeof performance!="undefined"&&performance.mark&&performance.mark(e)}catch(t){d.w("[AnalyticsTimer]",`Error marking performance for event ${e}`,{error:t})}}end(e){var t;try{typeof performance!="undefined"&&performance.measure&&(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[...Po,...e].reduce((t,i)=>M(m({},t),{[i]:this.getTimeTaken(i)}),{})}cleanup(){this.eventPerformanceMeasures={}}};var ss=We(require("webrtc-adapter"));function bo(a,e){let t=a.toLowerCase(),i=S.TracksErrors.GenericTrack("TRACK",a);return t.includes("device not found")?i=S.TracksErrors.DeviceNotAvailable("TRACK",e,a):t.includes("permission denied")&&(i=S.TracksErrors.CantAccessCaptureDevice("TRACK",e,a)),i}function Io(a,e=""){if(ss.default.browserDetails.browser==="chrome"&&a.name==="NotAllowedError"&&a.message.includes("denied by system"))return S.TracksErrors.SystemDeniedPermission("TRACK",e,a.message);if(ss.default.browserDetails.browser==="firefox"&&a.name==="NotFoundError"){let i=S.TracksErrors.SystemDeniedPermission("TRACK",e,a.message);return i.description=`Capture device is either blocked at Operating System level or not available - ${e}`,i}switch(a.name){case"OverconstrainedError":return S.TracksErrors.OverConstrained("TRACK",e,a.constraint);case"NotAllowedError":return S.TracksErrors.CantAccessCaptureDevice("TRACK",e,a.message);case"NotFoundError":return S.TracksErrors.DeviceNotAvailable("TRACK",e,a.message);case"NotReadableError":return S.TracksErrors.DeviceInUse("TRACK",e,a.message);case"TypeError":return S.TracksErrors.NothingToReturn("TRACK",a.message);default:return bo(a.message,e)}}function xe(a,e){let t=Io(a,e);return t.addNativeError(a),t}var Ai=(t=>(t.SIP="sip",t.REGULAR="regular",t))(Ai||{});var as=(o=>(o.NONE="none",o.INITIALISED="initialised",o.STARTED="started",o.PAUSED="paused",o.RESUMED="resumed",o.STOPPED="stopped",o.FAILED="failed",o))(as||{});var ns=(t=>(t.DVR="dvr",t.NO_DVR="no-dvr",t))(ns||{}),os=(i=>(i.REGULAR="regular",i.SCREEN="screen",i.COMPOSITE="composite",i))(os||{}),cs=(r=>(r.INITIALISED="initialised",r.STARTED="started",r.STOPPED="stopped",r.FAILED="failed",r))(cs||{}),ds=(e=>(e.CAPTION="caption",e))(ds||{});var Ue={f:"high",h:"medium",q:"low"};var Ri=(t=>(t.VOICE="voice",t.MUSIC="music",t))(Ri||{});var ls=(i=>(i.videoInput="videoInput",i.audioInput="audioInput",i.audioOutput="audioOutput",i))(ls||{});var ee=class{constructor(){this._volume=1;this._codec="opus";this._maxBitrate=32;this._deviceId="default";this._audioMode="voice";this._advanced=[{autoGainControl:{exact:!0}},{noiseSuppression:{exact:!0}},{highpassFilter:{exact:!0}},{audioMirroring:{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=this._audioMode==="music"?320:e,this}deviceId(e){return this._deviceId=e,this}audioMode(e="voice"){return this._audioMode=e,this._audioMode==="music"?this._maxBitrate=320:this._maxBitrate=32,this}advanced(e){return this._advanced=e,this}build(){return new je(this._volume,this._codec,this._maxBitrate,this._deviceId,this._advanced,this._audioMode)}},je=class{constructor(e,t,i,r,s,n){this.volume=e,this.codec=t,this.maxBitrate=i,this.deviceId=r,this.advanced=s,this.audioMode=n,this.audioMode==="music"?this.maxBitrate=320:this.maxBitrate=32}toConstraints(){return{deviceId:this.deviceId==="default"?this.deviceId:{exact:this.deviceId},advanced:this.audioMode==="music"?[]:this.advanced}}toAnalyticsProperties(){return{audio_bitrate:this.maxBitrate,audio_codec:this.codec}}};var z=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 Qe(this._width,this._height,this._codec,this._maxFramerate,this._deviceId,this._advanced,this._maxBitrate,this._facingMode)}},Qe=class{constructor(e,t,i,r,s,n,o,l){this.width=e,this.height=t,this.codec=i,this.maxFramerate=r,this.maxBitrate=o,this.deviceId=s,this.advanced=n,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==="default"?this.deviceId:{exact: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 Sa()&&this.height&&this.width&&this.height>this.width?{width:this.height,height:this.width}:{width:this.width,height:this.height}}};var Be=class{constructor(){this._video=new z().build();this._audio=new ee().build();this._screen=new z().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 S.TracksErrors.NothingToReturn("TRACK");if(this._video===null&&this._simulcast)throw S.TracksErrors.InvalidVideoSettings("TRACK","Cannot enable simulcast when no video settings are provided");return new nt(this._video,this._audio,this._simulcast,this._screen||void 0)}},nt=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}};var Ao=32e3;var ne={audioContext:null,getAudioContext(){return this.audioContext||(this.audioContext=va?new AudioContext:new AudioContext({sampleRate:Ao})),this.audioContext},resumeContext(){return c(this,null,function*(){try{return yield this.getAudioContext().resume()}catch(a){d.e("AudioContext",a)}})}},Hi=(r=>(r.SPEAKERPHONE="SPEAKERPHONE",r.WIRED="WIRED",r.BLUETOOTH="BLUETOOTH",r.EARPIECE="EARPIECE",r))(Hi||{}),Ci=a=>{if(!a)return d.w("[DeviceManager]:","No device label provided"),"SPEAKERPHONE";let e=a.toLowerCase();return e.includes("speakerphone")?"SPEAKERPHONE":e.includes("wired")?"WIRED":/airpods|buds|wireless|bluetooth/gi.test(e)?"BLUETOOTH":e.includes("earpiece")?"EARPIECE":"SPEAKERPHONE"};var us={isAudioMuted:!1,isVideoMuted:!1,audioInputDeviceId:"default",audioOutputDeviceId:"default",videoDeviceId:"default",audioMode:"voice"},Pe,Li,Te=class a{constructor(e,t,i,r,s){this.store=e;this.observer=t;this.deviceManager=i;this.eventBus=r;this.analyticsTimer=s;this.TAG="[LocalTrackManager]";this.setScreenCaptureHandleConfig()}getTracksToPublish(){return c(this,arguments,function*(e=us){let t=this.getAVTrackSettings(e);if(!t)return[];let i=!!t.audio,r=!!t.video,s=[],{videoTrack:n,audioTrack:o}=yield this.updateCurrentLocalTrackSettings(t),l=(n==null?void 0:n.stream)||(o==null?void 0:o.stream),u=!!(n&&this.store.getTrackById(n.trackId)),p=!!(o&&this.store.getTrackById(o.trackId));if(u&&p)return[];let h={audio:i&&!o&&(e.isAudioMuted?"empty":!0),video:r&&!n&&(e.isVideoMuted?"empty":!0)};h.audio&&this.analyticsTimer.start("local_audio_track_time"),h.video&&this.analyticsTimer.start("local_video_track_time");try{d.d(this.TAG,"Init Local Tracks",{fetchTrackOptions:h}),s=yield this.getLocalTracks(h,t,l)}catch(T){s=yield this.retryGetLocalTracks(T,t,h,l)}return h.audio&&this.analyticsTimer.end("local_audio_track_time"),h.video&&this.analyticsTimer.end("local_video_track_time"),n&&r&&!u&&s.push(n),o&&i&&!p&&s.push(o),s})}getLocalTracks(){return c(this,arguments,function*(e={audio:!0,video:!0},t,i){try{let r=yield this.getNativeLocalTracks(e,t);return this.createHMSLocalTracks(r,t,i)}catch(r){throw this.eventBus.analytics.publish(y.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 nt(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})}optimizeScreenShareConstraint(e,t){return c(this,null,function*(){var s,n,o;if(typeof t.video=="boolean"||!((s=t.video)!=null&&s.width)||!((n=t.video)!=null&&n.height))return;let i=this.store.getPublishParams();if(!i||!((o=i.allowed)!=null&&o.includes("screen")))return;let r=document.createElement("video");r.srcObject=e,r.addEventListener("loadedmetadata",()=>c(this,null,function*(){try{let{videoWidth:l,videoHeight:u}=r,p=i.screen,h=p.width*p.height,T=l/u,g=p.width/p.height;if(T>g){let f=t.video,P=T/g,v=Math.sqrt(P);l*u>h?(f.width=l/v,f.height=u/v):(f.height=u*v,f.width=l*v),yield e.getVideoTracks()[0].applyConstraints(f)}}finally{r.srcObject=null}}))})}getLocalScreen(e,t=!1){return c(this,null,function*(){var T;let i=yield this.getOrDefaultScreenshareConfig(e),r=this.getScreenshareSettings(i.videoOnly),s={video:M(m({},r==null?void 0:r.video.toConstraints(!0)),{displaySurface:i.displaySurface}),preferCurrentTab:i.preferCurrentTab,selfBrowserSurface:i.selfBrowserSurface,surfaceSwitching:i.surfaceSwitching,systemAudio:i.systemAudio};if(r!=null&&r.audio){let g=(T=r==null?void 0:r.audio)==null?void 0:T.toConstraints();delete g.advanced,s.audio=M(m({},g),{autoGainControl:!1,noiseSuppression:!1,googAutoGainControl:!1,echoCancellation:!1})}else e!=null&&e.forceCurrentTab&&e.preferCurrentTab&&e.cropElement&&(s.audio={echoCancellation:!0,noiseSuppression:!0});let n;try{d.d("retrieving screenshare with ",{config:i},{constraints:s}),n=yield navigator.mediaDevices.getDisplayMedia(s),t&&(yield this.optimizeScreenShareConstraint(n,s))}catch(g){d.w(this.TAG,"error in getting screenshare - ",g);let f=xe(g,"screen");throw this.eventBus.analytics.publish(y.publish({error:f,devices:this.deviceManager.getDevices(),settings:new nt(r==null?void 0:r.video,r==null?void 0:r.audio,!1)})),f}let o=[],l=new fe(n),u=n.getVideoTracks()[0],p=new K(l,u,"screen",this.eventBus,r==null?void 0:r.video,this.store.getRoom());p.setSimulcastDefinitons(this.store.getSimulcastDefinitionsForPeer(this.store.getLocalPeer(),"screen"));try{let g=this.validateCurrentTabCapture(p,i.forceCurrentTab);p.isCurrentTab=g,yield p.cropTo(i.cropTarget)}catch(g){throw n.getTracks().forEach(f=>f.stop()),g}o.push(p);let h=n.getAudioTracks()[0];if(h){let g=new Se(l,h,"screen",this.eventBus,r==null?void 0:r.audio,this.store.getRoom());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,Na.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"),S.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 o,l,u;let t=((o=e==null?void 0:e.getSettings())==null?void 0:o.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)),Li||(Li=setInterval(()=>{let p=Pe==null?void 0:Pe.getContext("2d");p&&p.fillRect(0,0,1,1)},1e3/r));let n=Pe.captureStream(r).getVideoTracks()[0];return n.enabled=!1,n}static getEmptyAudioTrack(){let e=ne.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(Li),Li=void 0,Pe=void 0}getAVTracks(e){return c(this,null,function*(){var i,r,s,n;let t={audio:e.audio?e.audio.toConstraints():!1,video:e.video?e.video.toConstraints():!1};try{let o=yield navigator.mediaDevices.getUserMedia(t),l=o.getVideoTracks(),u=o.getAudioTracks();return this.eventBus.analytics.publish(y.mediaConstraints({requestedConstraints:t,appliedConstraints:{video:(i=l[0])==null?void 0:i.getConstraints(),audio:(r=u[0])==null?void 0:r.getConstraints()},trackSettings:{video:(s=l[0])==null?void 0:s.getSettings(),audio:(n=u[0])==null?void 0:n.getSettings()}})),l.concat(u)}catch(o){yield this.deviceManager.init();let l=!!(!this.deviceManager.hasWebcamPermission&&e.video),u=!!(!this.deviceManager.hasMicrophonePermission&&e.audio),p=this.getErrorType(l,u);throw xe(o,p)}})}getAVTrackSettings(e){let t=this.getAudioSettings(e),i=this.getVideoSettings(e);return!t&&!i?null:new Be().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 k&&e.action==="TRACK"){this.observer.onFailure(e);let s=e.code===E.TracksErrors.OVER_CONSTRAINED,n=e.message.includes("audio"),o=e.message.includes("video");if(s){let l=new Be().video(new Qe).audio(new je).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 k?u.nativeError:u,h=u;if((p==null?void 0:p.name)==="OverconstrainedError"){let T=S.TracksErrors.GenericTrack("TRACK","Overconstrained error after dropping all constraints");T.addNativeError(p),h=T}return yield this.retryGetLocalTracks(h,t,i,r)}}i.audio=n?"empty":i.audio,i.video=o?"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":"audio, video"}getEmptyTracks(e){let t=[];return e.audio==="empty"&&t.push(a.getEmptyAudioTrack()),e.video==="empty"&&t.push(a.getEmptyVideoTrack()),t}updateCurrentLocalTrackSettings(e){return c(this,null,function*(){let t=this.store.getLocalPeerTracks(),i=t.find(o=>o.type==="video"&&o.source==="regular"),r=t.find(o=>o.type==="audio"&&o.source==="regular"),s=t.find(o=>o.type==="video"&&o.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 n=this.getScreenshareSettings(!0);return n!=null&&n.video&&(yield s==null?void 0:s.setSettings(n==null?void 0:n.video)),{videoTrack:i,audioTrack:r}})}getAudioSettings(e){var n;let t=this.store.getPublishParams();if(!t||!((n=t.allowed)!=null&&n.includes("audio")))return null;let i=this.store.getLocalPeer(),r=i==null?void 0:i.audioTrack,s=(r==null?void 0:r.settings.deviceId)||e.audioInputDeviceId;return new ee().codec(t.audio.codec).maxBitrate(t.audio.bitRate).deviceId(s||us.audioInputDeviceId).build()}getVideoSettings(e){var o;let t=this.store.getPublishParams();if(!t||!((o=t.allowed)!=null&&o.includes("video")))return null;let i=this.store.getLocalPeer(),r=i==null?void 0:i.videoTrack,s=(r==null?void 0:r.settings.deviceId)||e.videoDeviceId,n=t.video;return new z().codec(n.codec).maxBitrate(n.bitRate).maxFramerate(n.frameRate).setWidth(n.width).setHeight(n.height).deviceId(s||us.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 z().maxBitrate(i.bitRate,!1).codec(i.codec).maxFramerate(i.frameRate).setWidth(i.width).setHeight(i.height).build(),audio:e?void 0:new ee().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(o=>o.kind==="video"),s=e.find(o=>o.kind==="audio");i?e.forEach(o=>i==null?void 0:i.nativeStream.addTrack(o)):i=new fe(new MediaStream(e));let n=[];if(s&&(t!=null&&t.audio)){let o=new Se(i,s,"regular",this.eventBus,t.audio,this.store.getRoom());n.push(o)}if(r&&(t!=null&&t.video)){let o=new K(i,r,"regular",this.eventBus,t.video,this.store.getRoom());o.setSimulcastDefinitons(this.store.getSimulcastDefinitionsForPeer(this.store.getLocalPeer(),"regular")),n.push(o)}return n}};function hs(a){return c(this,null,function*(){try{let e=a?a.toConstraints():!1;return(yield navigator.mediaDevices.getUserMedia({audio:e})).getAudioTracks()[0]}catch(e){throw xe(e,"audio")}})}function ms(a){return c(this,null,function*(){try{let e=a?a.toConstraints():!1;return(yield navigator.mediaDevices.getUserMedia({video:e})).getVideoTracks()[0]}catch(e){throw xe(e,"video")}})}function ve(a){return"canvas"in a||a.label==="MediaStreamAudioDestinationNode"||a.label===""}var wi=(a,e)=>{if(!navigator.permissions){d.d("Permissions API not supported");return}navigator.permissions.query({name:a}).then(t=>{e(t.state),t.onchange=()=>{d.d(`${a} permission changed`,t.state),e(t.state)}}).catch(t=>{d.e(`${a} not supported`,t.message)})};var Ve=class{constructor(e=1/0){this.capacity=e;this.storage=[]}size(){return this.storage.length}toList(){return this.storage.slice(0)}enqueue(e){this.size()===this.capacity&&this.dequeue(),this.storage.push(e)}dequeue(){return this.storage.shift()}aggregate(e){return e(this.storage)}};var Oa=`(function workerSetup() {
39
39
  function ticker() {
40
40
  self.postMessage('tick');
41
41
  }
@@ -49,7 +49,7 @@
49
49
  break;
50
50
  }
51
51
  };
52
- })()`;function te(a){if(a<0)throw Error("`ms` should be a positive integer");return new Promise(e=>{setTimeout(e,a)})}function Fe(a){if(a<0)throw Error("`ms` should be a positive integer");if(typeof Worker=="undefined")return te(a);let e=new Worker(URL.createObjectURL(new Blob([Oa],{type:"application/javascript"})));return e.postMessage(["start",a]),new Promise(t=>{e.onmessage=i=>{i.data==="tick"&&(t(),e.terminate())}})}function xa(){if(typeof Worker=="undefined")return{sleep:e=>te(e)};let a=new Worker(URL.createObjectURL(new Blob([Oa],{type:"application/javascript"})));return{sleep:e=>(a.postMessage(["start",e]),new Promise(t=>{a.onmessage=i=>{i.data==="tick"&&t()}}))}}function Di(a,e=300){let t;return function(...i){clearTimeout(t),t=void 0;let r=this;t=setTimeout(()=>{a.apply(r,i)},e)}}var Ro=35,Ho=5,_i=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 Ve(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 te(20)}});try{let r=new MediaStream([this.track.nativeTrack]);this.analyserNode=this.createAnalyserNodeForStream(r);let s=this.analyserNode.frequencyBinCount;this.dataArray=new Uint8Array(s)}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 te(this.interval)})}sendAudioLevel(e=0){if(e=e>Ro?e:0,Math.abs(this.audioLevel-e)>Ho){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||!this.dataArray){d.d(this.TAG,"AudioContext not initialized");return}this.analyserNode.getByteTimeDomainData(this.dataArray);let e=.009,t=e;for(let s of this.dataArray)t=Math.max(t,(s-128)/128);let i=(Math.log(e)-Math.log(t))/Math.log(e);return Math.ceil(Math.min(Math.max(i*100,0),100))}isSilentThisInstant(){if(!this.analyserNode||!this.dataArray){d.d(this.TAG,"AudioContext not initialized");return}return this.analyserNode.getByteTimeDomainData(this.dataArray),this.dataArray.every(e=>e===128||e===0)}createAnalyserNodeForStream(e){let t=ne.getAudioContext(),i=t.createMediaStreamSource(e),r=t.createAnalyser();return r.fftSize=2048,i.connect(r),r}};function Ua(a,e){return function(i){return!(0,Ba.default)(a[i],e[i])}}var Se=class a extends Oe{constructor(t,i,r,s,n=new ee().build(),o){super(t,i,r);this.eventBus=s;this.room=o;this.TAG="[HMSLocalAudioTrack]";this.tracksCreated=new Set;this.interrupted=!1;this.interruptionNotified=!1;this.isPublished=!1;this.handleVisibilityChange=()=>c(this,null,function*(){if(document.visibilityState==="hidden"){this.handleBackgrounded();return}yield this.handleForegrounded()});this.handleForegrounded=()=>c(this,null,function*(){if(d.d(this.TAG,`visibility: visible, interrupted: ${this.interrupted}`,`${this}`),!(!this.interrupted&&!this.shouldReacquireTrack())){if(this.sendInterruptionAnalytics({started:!1,reason:"visibility-change"}),this.permissionState&&this.permissionState!=="granted"){this.handlePermissionNotGranted();return}try{yield this.endInterruption("visibility-change")}catch(t){this.eventBus.error.publish(t)}this.notifyIfStillInterrupted("visibility-change")}});this.endInterruption=t=>c(this,null,function*(){if(vi()&&document.visibilityState==="hidden"){d.d(this.TAG,"interruption ended while hidden, deferring recovery",t,`${this}`);return}if(this.recovery){d.d(this.TAG,"interruption recovery already in progress",t,`${this}`),yield this.recovery.catch(()=>{});return}this.recovery=this.restoreCapture(t);try{yield this.recovery}finally{this.recovery=void 0}});this.restoreCapture=t=>c(this,null,function*(){yield ne.resumeContext(),yield this.reacquireStaleTrack(t),yield this.setEnabled(this.enabled,!0),this.eventBus.localAudioUnmutedNatively.publish()});this.trackPermissions=()=>{this.source==="regular"&&wi("microphone",t=>{this.permissionState=t,this.eventBus.analytics.publish(y.permissionChange(this.type,t)),t==="denied"&&this.eventBus.localAudioEnabled.publish({enabled:!1,track:this})})};this.handleTrackMute=()=>{d.d(this.TAG,"muted natively",`${this}`),this.interrupted=!0,this.sendInterruptionAnalytics({started:!0,reason:"track-muted-natively"}),this.notifyInterruption({started:!0,reason:"track-muted-natively"}),this.eventBus.localAudioEnabled.publish({enabled:!1,track:this})};this.handleTrackUnmute=()=>c(this,null,function*(){d.d(this.TAG,"unmuted natively",`${this}`),this.sendInterruptionAnalytics({started:!1,reason:"track-unmuted-natively"});try{yield this.endInterruption("track-unmuted-natively")}catch(t){this.eventBus.error.publish(t)}});this.reacquireStaleTrack=t=>c(this,null,function*(){if(!(!this.interrupted&&!this.shouldReacquireTrack())){if(d.d(this.TAG,"reacquiring track",t,`${this}`),yield this.replaceTrackWith(this.settings),this.shouldReacquireTrack()){d.d(this.TAG,"reacquired track is still not capturing",t,`${this}`);return}this.interrupted=!1,this.notifyInterruption({started:!1,reason:t})}});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.shouldReacquireTrack=()=>ve(this.nativeTrack)||this.isTrackNotPublishing();this.handleSettingsChange=t=>c(this,null,function*(){let i=this.stream,r=Ua(t,this.settings);(r("maxBitrate")||r("audioMode"))&&t.maxBitrate&&(yield i.setMaxBitrateAndFramerate(this,t)),(r("advanced")||r("audioMode"))&&(yield this.replaceTrackWith(t))});this.handleDeviceChange=(t,i=!1)=>c(this,null,function*(){if(Ua(t,this.settings)("deviceId")){this.manuallySelectedDeviceId=i?this.manuallySelectedDeviceId:t.deviceId,d.d(this.TAG,"device change","manual selection:",this.manuallySelectedDeviceId,"new device:",t.deviceId),yield this.replaceTrackWith(t);let s=this.nativeTrack.getSettings().groupId;!i&&t.deviceId&&(ae.updateSelection("audioInput",{deviceId:t.deviceId,groupId:s}),this.eventBus.deviceChange.publish({isUserSelection:!0,type:"audioInput",selection:{deviceId:t.deviceId,groupId:s,label:this.nativeTrack.label}}))}});t.tracks.push(this),this.addTrackEventListeners(i),this.trackPermissions(),this.settings=n,n.deviceId!==i.getSettings().deviceId&&!ve(i)&&(this.settings=this.buildNewSettings({deviceId:i.getSettings().deviceId})),this.pluginsManager=new xt(this,s,o),this.setFirstTrackId(i.id),r==="regular"&&document.addEventListener("visibilitychange",this.handleVisibilityChange)}clone(t){let i=this.nativeTrack.clone();t.nativeStream.addTrack(i);let r=new a(t,i,this.source,this.eventBus,this.settings,this.room);return r.peerId=this.peerId,this.pluginsManager.pluginsMap.size>0&&this.pluginsManager.pluginsMap.forEach(s=>{r.addPlugin(s).catch(n=>d.e(this.TAG,"Plugin add failed while migrating",s,n))}),r}getManuallySelectedDeviceId(){return this.manuallySelectedDeviceId}resetManuallySelectedDeviceId(){this.manuallySelectedDeviceId=void 0}handlePermissionNotGranted(){d.d(this.TAG,"On visibile not replacing track as permission is not granted"),this.interrupted&&this.notifyInterruption({started:!0,reason:"permission-not-granted"})}notifyIfStillInterrupted(t){(this.interrupted||this.enabled&&this.shouldReacquireTrack())&&(this.interrupted=!0,this.notifyInterruption({started:!0,reason:t}))}handleBackgrounded(){if(!this.shouldReacquireTrack()){d.d(this.TAG,"visibility: hidden",`${this}`);return}this.sendInterruptionAnalytics({started:!0,reason:"visibility-change"}),this.enabled&&(this.interrupted=!0,this.notifyInterruption({started:!0,reason:"visibility-change"}))}updateTrack(t){return c(this,null,function*(){t.enabled=this.enabled,yield this.stream.replaceStreamTrack(this.nativeTrack,t),this.nativeTrack=t;let r=ve(t);if(r)try{yield this.pluginsManager.releaseGraph(),yield this.setProcessedTrack(void 0)}catch(n){d.w(this.TAG,"could not release the plugin graph for the silent placeholder",n)}else yield this.replaceSenderTrack();if(this.audioLevelMonitor&&this.initAudioLevelMonitor(),!r)try{yield this.pluginsManager.reprocessPlugins()}catch(n){this.eventBus.audioPluginFailed.publish(n)}})}replaceTrackWith(t){return c(this,null,function*(){let i=this.nativeTrack;i==null||i.stop(),this.removeTrackEventListeners(i),this.tracksCreated.forEach(r=>r.stop()),this.tracksCreated.clear();try{let r=yield hs(t);this.addTrackEventListeners(r),this.tracksCreated.add(r),this.eventBus.analytics.publish(y.mediaConstraints({requestedConstraints:{audio:t.toConstraints()},appliedConstraints:{audio:r.getConstraints()},trackSettings:{audio:r.getSettings()}})),d.d(this.TAG,"replaceTrack, Previous track stopped",i,"newTrack",r),yield this.updateTrack(r)}catch(r){let s=r;if(s.code===E.TracksErrors.CANT_ACCESS_CAPTURE_DEVICE||s.code===E.TracksErrors.SYSTEM_DENIED_PERMISSION){let o=yield Te.getEmptyAudioTrack();throw this.addTrackEventListeners(o),this.tracksCreated.add(o),yield this.updateTrack(o),s}let n=yield hs(this.settings);throw this.addTrackEventListeners(n),this.tracksCreated.add(n),this.eventBus.analytics.publish(y.mediaConstraints({requestedConstraints:{audio:this.settings.toConstraints()},appliedConstraints:{audio:n.getConstraints()},trackSettings:{audio:n.getSettings()}})),yield this.updateTrack(n),this.isPublished&&this.eventBus.analytics.publish(y.publish({error:r})),r}})}setEnabled(t,i=!1){return c(this,null,function*(){t===this.enabled&&!i||(t&&(yield this.reacquireStaleTrack("set-enabled")),yield me(a.prototype,this,"setEnabled").call(this,t),t&&(this.settings=this.buildNewSettings({deviceId:this.nativeTrack.getSettings().deviceId})),this.eventBus.localAudioEnabled.publish({enabled:t,track:this}))})}isPublishedTrackId(t){return this.publishedTrackId===t}setSettings(t,i=!1){return c(this,null,function*(){let r=this.buildNewSettings(t);if(ve(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 _i(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;try{me(a.prototype,this,"cleanup").call(this),yield this.pluginsManager.cleanup(),yield this.pluginsManager.closeContext()}finally{this.transceiver=void 0,(t=this.processedTrack)==null||t.stop(),this.tracksCreated.forEach(i=>i.stop()),this.tracksCreated.clear(),this.isPublished=!1,this.destroyAudioLevelMonitor(),document.removeEventListener("visibilitychange",this.handleVisibilityChange)}})}getTrackIDBeingSent(){return this.processedTrack?this.processedTrack.id:this.nativeTrack.id}getTrackBeingSent(){return this.processedTrack||this.nativeTrack}addTrackEventListeners(t){this.source!=="screen"&&(t.addEventListener("mute",this.handleTrackMute),t.addEventListener("unmute",this.handleTrackUnmute))}removeTrackEventListeners(t){t.removeEventListener("mute",this.handleTrackMute),t.removeEventListener("unmute",this.handleTrackUnmute)}sendInterruptionAnalytics({started:t,reason:i}){this.eventBus.analytics.publish(this.sendInterruptionEvent({started:t,reason:i}))}notifyInterruption({started:t,reason:i}){t!==this.interruptionNotified&&(t&&document.visibilityState==="hidden"||(this.interruptionNotified=t,this.eventBus.trackInterruption.publish({started:t,reason:i,type:this.type,trackId:this.trackId})))}buildNewSettings(t){let{volume:i,codec:r,maxBitrate:s,deviceId:n,advanced:o,audioMode:l}=m(m({},this.settings),t);return new je(i,r,s,n,o,l)}};var le=class a extends Oe{setEnabled(e){return c(this,null,function*(){e!==this.enabled&&(yield me(a.prototype,this,"setEnabled").call(this,e),yield this.subscribeToAudio(e&&!this.isSilenced()))})}};var ot=class extends Ne{constructor(t,i,r){super(t,i,r);this.type="video";this.sinkCount=0;this.handleTrackUnmute=()=>{this.getSinks().forEach(t=>this.reTriggerPlay({videoElement:t}))};this.reTriggerPlay=({videoElement:t})=>{setTimeout(()=>{t.play().catch(i=>{d.w("[HMSVideoTrack]","failed to play",i.message)})},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 n=r.getVideoTracks()[0];if((n==null?void 0:n.id)===i.id){if(!n.muted&&n.readyState==="live")return;this.reduceSinkCount()}else this.reduceSinkCount()}this.addPropertiesToElement(t);let s=new MediaStream([i]);t.srcObject=s,this.reTriggerPlay({videoElement:t}),this.sinkCount++}reduceSinkCount(){this.sinkCount>0&&this.sinkCount--}addPropertiesToElement(t){fa||(t.autoplay=!0),t.playsInline=!0,t.muted=!0,t.controls=!1}};var qa=We(require("lodash.isequal"));var $a=require("uuid");var Ut={none:-1,low:0,medium:1,high:2},Co=.5,Va=(a,e)=>{let t="high",i=e.width>e.height?"width":"height",r=[...a].sort((n,o)=>Ut[n.layer]-Ut[o.layer]),s=e[i]*((window==null?void 0:window.devicePixelRatio)||1);for(let n=0;n<r.length;n++){let{resolution:o,layer:l}=r[n],u=o[i];if(s<=u){t=l;break}else{let p=r[n+1],h=p?p.resolution[i]:Number.POSITIVE_INFINITY;if((s-u)/(h-u)<Co){t=l;break}}}return t};var Ss=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=F&&typeof window.IntersectionObserver!="undefined";return e||d.w(this.TAG,"IntersectionObserver is not supported, fallback will be used instead"),e}},Fa=new Ss;var gs=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(Di(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=F&&typeof window.ResizeObserver!="undefined";return e||d.w(this.TAG,"Resize Observer is not supported"),e}},Ga=new gs;var ct=class{constructor(e){this.track=e;this.TAG="[VideoElementManager]";this.videoElements=new Set;this.entries=new WeakMap;this.intersectionSeq=new WeakMap;this.seq=0;this.handleIntersection=e=>c(this,null,function*(){if(!this.intersectionObserver)return;let t=e.target,i=++this.seq;this.intersectionSeq.set(t,i);let r=getComputedStyle(e.target).visibility==="visible";this.track.enabled&&(e.isIntersecting&&r||!document.contains(e.target))?yield this.addSinkForEntry(t,e.boundingClientRect,i):(d.d(this.TAG,"remove sink intersection",`${this.track}`,this.id),this.logIfRejected(this.track.removeSink(t),"removeSink"))});this.handleResize=e=>c(this,null,function*(){this.resizeObserver&&(!this.track.enabled||!(this.track instanceof x)||(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,$a.v4)()}logIfRejected(e,t){Promise.resolve(e).catch(i=>d.e(this.TAG,`${t} failed`,`${this.track}`,i))}updateSinks(e=!1){for(let t of this.videoElements)this.track.enabled?this.logIfRejected(this.track.addSink(t,e),"addSink"):this.logIfRejected(this.track.removeSink(t,e),"removeSink")}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):F&&(this.isElementInViewport(e)?this.logIfRejected(this.track.addSink(e),"addSink"):this.logIfRejected(this.track.removeSink(e),"removeSink")),this.resizeObserver?this.resizeObserver.observe(e,this.handleResize):this.track instanceof x&&this.logIfRejected(this.track.setPreferredLayer(this.track.getPreferredLayer()),"setPreferredLayer"))})}removeVideoElement(e){var t,i;this.videoElements.delete(e),this.entries.delete(e),this.intersectionSeq.delete(e),(t=this.resizeObserver)==null||t.unobserve(e),(i=this.intersectionObserver)==null||i.unobserve(e),this.logIfRejected(Promise.resolve(this.track.removeSink(e)).finally(()=>this.selectMaxLayer()),"removeSink"),d.d(this.TAG,`Removing video element for ${this.track}`)}getVideoElements(){return Array.from(this.videoElements)}init(){F&&(this.resizeObserver=Ga,this.intersectionObserver=Fa)}addSinkForEntry(e,t,i){return c(this,null,function*(){if(d.d(this.TAG,"add sink intersection",`${this.track}`,this.id),this.entries.set(e,t),yield this.selectMaxLayer(),!this.shouldStillAddSink(e,i)){d.d(this.TAG,"add sink superseded",`${this.track}`,this.id);return}this.logIfRejected(this.track.addSink(e),"addSink")})}shouldStillAddSink(e,t){return this.videoElements.has(e)&&this.intersectionSeq.get(e)===t}isElementInViewport(e){let t=e.offsetTop,i=e.offsetLeft,r=e.offsetWidth,s=e.offsetHeight,{hidden:n}=e,{opacity:o,display:l}=getComputedStyle(e);for(;e.offsetParent;)e=e.offsetParent,t+=e.offsetTop,i+=e.offsetLeft;return t<window.pageYOffset+window.innerHeight&&i<window.pageXOffset+window.innerWidth&&t+s>window.pageYOffset&&i+r>window.pageXOffset&&!n&&(o!==""?parseFloat(o)>0:!0)&&l!=="none"}selectMaxLayer(){return c(this,null,function*(){if(!(this.track instanceof x)||this.videoElements.size===0)return;let e;for(let t of this.videoElements){let i=this.entries.get(t);if(!i)continue;let{width:r,height:s}=i;if(r===0||s===0)continue;let n=Va(this.track.getSimulcastDefinitions(),{width:r,height:s});e?e=Ut[n]>Ut[e]?n:e:e=n}if(e){d.d(this.TAG,`selecting max layer ${e} for the track`,`${this.track}`);try{yield this.track.setPreferredLayer(e)}catch(t){d.e(this.TAG,`failed to select layer ${e}`,`${this.track}`,t)}}})}};var Ni=(t=>(t.TRANSFORM="TRANSFORM",t.ANALYZE="ANALYZE",t))(Ni||{}),Oi=(t=>(t["2D"]="2d",t.WEBGL="webgl",t.WEBGL2="webgl2",t))(Oi||{});var Bt=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 dt=class{constructor(e){this.eventBus=e;this.TAG="[VideoPluginsAnalytics]";this.initTime={},this.preProcessingAvgs=new Bt,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 Bt,t&&(this.pluginInputFrameRate[e]=t,this.pluginFrameRate[e]=i||t),this.eventBus.analytics.publish(ge.added(e,this.addedTimestamps[e]))}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 s=S.MediaPluginErrors.InitFailed("VIDEO_PLUGINS",`failed during initialization of plugin${r.message||r}`);throw d.e(this.TAG,s),this.failure(e,s),s}i&&(this.initTime[e]=i)})}preProcessWithTime(e){return c(this,null,function*(){let t=yield this.timeInMs(e);this.preProcessingAvgs.add(t)})}processWithTime(e,t){return c(this,null,function*(){var r;let i;try{i=yield this.timeInMs(t)}catch(s){let n=S.MediaPluginErrors.ProcessingFailed("VIDEO_PLUGINS",`Failed during processing of plugin${s.message||s}`);throw d.e(this.TAG,n),this.failure(e,n),n}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 Wa=24,Lo=320,wo=240,Vt=class{constructor(e,t){this.TAG="[VideoPluginsManager]";this.pluginsLoopRunning=!1;this.pluginsLoopState="paused";this.pluginAddInProgress=!1;this.reusableWorker=xa();this.hmsTrack=e,this.pluginsMap=new Map,this.pluginNumFramesToSkip={},this.pluginNumFramesSkipped={},this.analytics=new dt(t),this.canvases=new Array}getPlugins(){return Array.from(this.pluginsMap.keys())}addPlugin(e,t){return c(this,null,function*(){var i;if(this.pluginAddInProgress){let r=(i=e.getName)==null?void 0:i.call(e);if(!r||r===""){d.w("no name provided by the plugin");return}let s=S.MediaPluginErrors.AddAlreadyInProgress("VIDEO_PLUGINS","Add Plugin is already in Progress");throw this.analytics.failure(r,s),d.w("can't add another plugin when previous add is in progress"),s}this.pluginAddInProgress=!0;try{yield this.addPluginInternal(e,t)}finally{this.pluginAddInProgress=!1}})}addPluginInternal(e,t){return c(this,null,function*(){var n,o;let i=(n=e.getName)==null?void 0:n.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||Wa,s=0;t&&t>0?(d.i(this.TAG,`adding plugin ${e.getName()} with framerate ${t}`),t<r&&(s=Math.ceil(r/t)-1),this.analytics.added(i,r,t)):(d.i(this.TAG,`adding plugin ${e.getName()}`),this.analytics.added(i,r)),d.i(this.TAG,"numFrames to skip processing",s),this.pluginNumFramesToSkip[i]=s,this.pluginNumFramesSkipped[i]=s,this.validateAndThrow(i,e);try{if(yield this.analytics.initWithTime(i,()=>c(this,null,function*(){return yield e.init()})),this.pluginsMap.set(i,e),this.pluginsMap.size+1>this.canvases.length)for(let l=this.canvases.length;l<=this.pluginsMap.size;l++)this.canvases[l]=document.createElement("canvas");yield this.startPluginsLoop((o=e.getContextType)==null?void 0:o.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=S.MediaPluginErrors.PlatformNotSupported("VIDEO_PLUGINS","platform not supported, see docs"),this.analytics.failure(e,r),r;case"DEVICE_NOT_SUPPORTED":throw r=S.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 Fe(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||Wa,t=Math.floor(1e3/e);if(!this.hmsTrack.enabled||this.hmsTrack.nativeTrack.readyState==="ended"){this.pluginsLoopState==="running"&&this.resetCanvases(),this.pluginsLoopState="paused",yield this.reusableWorker.sleep(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 this.reusableWorker.sleep(t-i)}})}doPreProcessing(){return c(this,null,function*(){yield this.addTrackToVideo(),yield this.updateInputCanvas()})}processFramesThroughPlugins(){return c(this,null,function*(){this.canvases[0]=this.inputCanvas;let e=0;for(let t of this.pluginsMap.values()){let i=t.getName();if(t){try{let r=this.checkIfSkipRequired(i);if(t.getPluginType()==="TRANSFORM"){let s=(n,o)=>c(this,null,function*(){try{yield t.processVideoFrame(n,o,r)}catch(l){d.e(this.TAG,`error in processing plugin ${i}`,l)}});if(r)e===this.pluginsMap.size-1?yield s(this.canvases[e],this.outputCanvas):yield s(this.canvases[e],this.canvases[e+1]);else{let n=this.canvases[e],o=this.canvases[e+1];e===this.pluginsMap.size-1?yield this.analytics.processWithTime(i,()=>c(this,null,function*(){return s(n,this.outputCanvas)})):yield this.analytics.processWithTime(i,()=>c(this,null,function*(){return s(n,o)}))}}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=Lo,height:t=wo}=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 xi=class{constructor(e,t){this.TAG="[MediaStreamPluginsManager]";this.plugins=new Set,this.analytics=new dt(e),this.room=t}addPlugins(e){e.forEach(t=>{var i;switch(t.getName()){case"HMSEffectsPlugin":if(!((i=this.room)!=null&&i.isEffectsEnabled)){let r="Effects Virtual Background is not enabled for this room";if(this.plugins.size===0)throw Error(r);d.w(this.TAG,r);return}break;default:}this.plugins.add(t)})}removePlugins(e){e.forEach(t=>{t.stop(),this.analytics.removed(t.getName()),this.plugins.delete(t)})}applyPlugins(e){let t=e;for(let i of this.plugins){let r=i.getName();try{t=i.apply(t),this.analytics.added(r)}catch(s){this.analytics.failure(r,s),d.e("Could not apply plugin",s,r)}}return t}getPlugins(){return Array.from(this.plugins).map(e=>e.getName())}cleanup(){return c(this,null,function*(){this.removePlugins(Array.from(this.plugins))})}};function Ka(a,e){return function(i){return!(0,qa.default)(a[i],e[i])}}var K=class a extends ot{constructor(t,i,r,s,n=new z().build(),o){super(t,i,r);this.eventBus=s;this.room=o;this._layerDefinitions=[];this.TAG="[HMSLocalVideoTrack]";this.enabledStateBeforeBackground=!1;this.interrupted=!1;this.interruptionNotified=!1;this.recoversOnForeground=!1;this.isCurrentTab=!1;this.isPublished=!1;this.replaceSenderTrack=t=>c(this,null,function*(){if(!this.transceiver||this.transceiver.direction!=="sendonly"){d.d(this.TAG,`transceiver for ${this.trackId} not available or not connected yet`);return}yield this.transceiver.sender.replaceTrack(t)});this.buildNewSettings=t=>{let{width:i,height:r,codec:s,maxFramerate:n,maxBitrate:o,deviceId:l,advanced:u,facingMode:p}=m(m({},this.settings),t);return new Qe(i,r,s,n,l,u,o,p)};this.handleSettingsChange=t=>c(this,null,function*(){let i=this.stream,r=Ka(t,this.settings);if(r("maxBitrate")&&t.maxBitrate&&(yield i.setMaxBitrateAndFramerate(this)),r("width")||r("height")||r("advanced"))if(this.source==="video"){let s=yield this.replaceTrackWith(t);yield this.replaceSender(s,this.enabled),this.nativeTrack=s,yield this.processPlugins(),this.videoHandler.updateSinks()}else yield this.nativeTrack.applyConstraints(t.toConstraints())});this.handleDeviceChange=(t,i=!1)=>c(this,null,function*(){if(Ka(t,this.settings)("deviceId")&&this.source==="regular"){if(this.enabled){delete t.facingMode;let n=yield this.replaceTrackWith(t);yield this.replaceSender(n,this.enabled),this.nativeTrack=n,yield this.processPlugins(),this.videoHandler.updateSinks()}let s=this.nativeTrack.getSettings().groupId;!i&&t.deviceId&&(ae.updateSelection("videoInput",{deviceId:t.deviceId,groupId:s}),this.eventBus.deviceChange.publish({isUserSelection:!0,type:"video",selection:{deviceId:t.deviceId,groupId:s,label:this.nativeTrack.label}}))}});this.trackPermissions=()=>{this.source==="regular"&&wi("camera",t=>{this.eventBus.analytics.publish(y.permissionChange(this.type,t)),t==="denied"&&this.eventBus.localVideoEnabled.publish({enabled:!1,track:this})})};this.endInterruption=(t,i)=>c(this,null,function*(){if(this.recoversOnForeground&&document.visibilityState==="hidden"){d.d(this.TAG,"interruption ended while hidden, deferring recovery",t,`${this}`);return}if(this.recovery){d.d(this.TAG,"interruption recovery already in progress",t,`${this}`),yield this.recovery.catch(()=>{});return}this.recovery=this.restoreCapture(t,i);try{yield this.recovery}finally{this.recovery=void 0}});this.restoreCapture=(t,i)=>c(this,null,function*(){let r=this.interrupted;i&&(!this.enabled||this.isTrackNotPublishing())?(d.d(this.TAG,"reacquiring camera after interruption",t,`${this}`),yield this.setEnabled(!0,!0,t)):(d.d(this.TAG,"interruption ended, track reports publishing, replaying sinks",t,`${this}`),this.eventBus.localVideoEnabled.publish({enabled:this.enabled,track:this})),this.interrupted=!1,this.handleTrackUnmute(),r&&this.notifyInterruption({started:!1,reason:t}),this.eventBus.localVideoUnmutedNatively.publish()});this.handleTrackMute=()=>{d.d(this.TAG,"muted natively",document.visibilityState,`${this}`),this.sendInterruptionAnalytics({started:!0,reason:"track-muted-natively"}),this.enabled&&(this.interrupted=!0,this.notifyInterruption({started:!0,reason:"track-muted-natively"})),this.eventBus.localVideoEnabled.publish({enabled:!1,track:this})};this.handleTrackUnmuteNatively=()=>c(this,null,function*(){d.d(this.TAG,"unmuted natively",`${this}`),this.sendInterruptionAnalytics({started:!1,reason:"track-unmuted-natively"});try{yield this.endInterruption("track-unmuted-natively",this.enabled)}catch(t){this.eventBus.error.publish(t)}});this.removeOrReplaceProcessedTrack=t=>c(this,null,function*(){let i=this.processedTrack;t?t!==this.processedTrack&&(this.processedTrack=t):this.processedTrack=void 0,yield this.replaceSenderTrack(this.processedTrack||this.nativeTrack),i&&i!==this.processedTrack&&i.stop()});this.handleVisibilityChange=()=>c(this,null,function*(){if(document.visibilityState==="hidden"){yield this.handleBackgrounded();return}yield this.handleForegrounded()});this.handleForegrounded=()=>c(this,null,function*(){if(this.sendInterruptionAnalytics({started:!1,reason:"visibility-change"}),this.permissionState&&this.permissionState!=="granted"){d.d(this.TAG,"On visibile not replacing track as permission is not granted");return}if(d.d(this.TAG,"visibility visible, restoring track state",this.enabledStateBeforeBackground),!(!this.enabledStateBeforeBackground&&!this.interrupted)){try{yield this.endInterruption("visibility-change",this.enabledStateBeforeBackground)}catch(t){this.eventBus.error.publish(t)}this.notifyIfStillInterrupted("visibility-change")}});this.handleBackgrounded=()=>c(this,null,function*(){if(this.enabledStateBeforeBackground=this.enabled,this.enabled){this.interrupted=!0;try{yield this.setEnabled(!1)}catch(t){this.eventBus.error.publish(t)}}this.sendInterruptionAnalytics({started:!0,reason:"visibility-change"}),this.notifyInterruption({started:!0,reason:"visibility-change"})});this.addTrackEventListeners(i),this.trackPermissions(),t.tracks.push(this),this.setVideoHandler(new ct(this)),this.settings=n,n.deviceId!==i.getSettings().deviceId&&i.enabled&&(this.settings=this.buildNewSettings({deviceId:i.getSettings().deviceId})),this.pluginsManager=new Vt(this,s),this.mediaStreamPluginsManager=new xi(s,o),this.setFirstTrackId(this.trackId),this.eventBus.localAudioUnmutedNatively.subscribe(this.handleTrackUnmute),this.recoversOnForeground=F&&r==="regular"&&vi(),this.recoversOnForeground&&document.addEventListener("visibilitychange",this.handleVisibilityChange)}clone(t){let i=this.nativeTrack.clone();t.nativeStream.addTrack(i);let r=new a(t,i,this.source,this.eventBus,this.settings,this.room);return r.peerId=this.peerId,this.pluginsManager.pluginsMap.size>0&&this.pluginsManager.pluginsMap.forEach(s=>{r.addPlugin(s).catch(n=>d.e(this.TAG,"Plugin add failed while migrating",s,n))}),this.mediaStreamPluginsManager.plugins.size>0&&r.addStreamPlugins(Array.from(this.mediaStreamPluginsManager.plugins)),r}setSimulcastDefinitons(t){this._layerDefinitions=t}getSimulcastDefinitions(){return this._layerDefinitions}setEnabled(t,i=!1,r="set-enabled"){return c(this,null,function*(){var s;if(!(t===this.enabled&&!i)){if(this.source==="regular"){let n;t?n=yield this.replaceTrackWith(this.settings):n=yield this.replaceTrackWithBlank(),yield this.replaceSender(n,t),(s=this.nativeTrack)==null||s.stop(),this.nativeTrack=n,yield me(a.prototype,this,"setEnabled").call(this,t),t&&(yield this.pluginsManager.waitForRestart(),yield this.processPlugins(),this.settings=this.buildNewSettings({deviceId:n.getSettings().deviceId}),this.isTrackNotPublishing()||(this.interrupted=!1,this.notifyInterruption({started:!1,reason:r}))),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();this.videoHandler.updateSinks()}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||ve(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()}getPluginsMetrics(){let t={};for(let i of this.mediaStreamPluginsManager.plugins)i.getMetrics&&(t[i.getName()]=i.getMetrics());return t}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;this.eventBus.localAudioUnmutedNatively.unsubscribe(this.handleTrackUnmute),this.removeTrackEventListeners(this.nativeTrack),yield this.mediaStreamPluginsManager.cleanup(),yield this.pluginsManager.cleanup(),me(a.prototype,this,"cleanup").call(this),this.transceiver=void 0,(t=this.processedTrack)==null||t.stop(),this.isPublished=!1,this.recoversOnForeground&&document.removeEventListener("visibilitychange",this.handleVisibilityChange)})}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),S.TracksErrors.GenericTrack("TRACK","failed to crop screenshare capture")}})}getCaptureHandle(){if(this.nativeTrack.getCaptureHandle)return this.nativeTrack.getCaptureHandle()}setProcessedTrack(t){return c(this,null,function*(){if(!this.nativeTrack.enabled){this.processedTrack=t;return}yield this.removeOrReplaceProcessedTrack(t),this.videoHandler.updateSinks()})}getTrackIDBeingSent(){return this.getTrackBeingSent().id}getTrackBeingSent(){return this.enabled?this.processedTrack||this.nativeTrack:this.nativeTrack}switchCamera(){return c(this,null,function*(){var s;let t=this.getMediaTrackSettings().facingMode;if(!t||this.source!=="regular"){d.d(this.TAG,"facingMode not supported");return}let i=t==="environment"?"user":"environment";(s=this.nativeTrack)==null||s.stop();let r=yield this.replaceTrackWith(this.buildNewSettings({facingMode:i,deviceId:void 0}));yield this.replaceSender(r,this.enabled),this.nativeTrack=r,yield this.processPlugins(),this.videoHandler.updateSinks(),this.settings=this.buildNewSettings({deviceId:this.nativeTrack.getSettings().deviceId,facingMode:i}),ae.updateSelection("videoInput",{deviceId:this.settings.deviceId,groupId:this.nativeTrack.getSettings().groupId})})}replaceTrackWith(t){return c(this,null,function*(){let i=this.nativeTrack;this.removeTrackEventListeners(i),i==null||i.stop();try{let r=yield ms(t);return this.addTrackEventListeners(r),this.eventBus.analytics.publish(y.mediaConstraints({requestedConstraints:{video:t.toConstraints()},appliedConstraints:{video:r.getConstraints()},trackSettings:{video:r.getSettings()}})),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){let s=r;if(s.code===E.TracksErrors.CANT_ACCESS_CAPTURE_DEVICE||s.code===E.TracksErrors.SYSTEM_DENIED_PERMISSION){let o=yield this.replaceTrackWithBlank();throw this.addTrackEventListeners(o),yield this.replaceSender(o,this.enabled),this.nativeTrack=o,this.videoHandler.updateSinks(),s}let n=yield ms(this.settings);throw this.addTrackEventListeners(n),this.eventBus.analytics.publish(y.mediaConstraints({requestedConstraints:{video:this.settings.toConstraints()},appliedConstraints:{video:n.getConstraints()},trackSettings:{video:n.getSettings()}})),yield this.replaceSender(n,this.enabled),this.nativeTrack=n,yield this.processPlugins(),this.videoHandler.updateSinks(),this.isPublished&&this.eventBus.analytics.publish(y.publish({error:s})),s}})}replaceTrackWithBlank(){return c(this,null,function*(){let t=this.nativeTrack,i=Te.getEmptyVideoTrack(t);return this.removeTrackEventListeners(t),this.addTrackEventListeners(i),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)})}addTrackEventListeners(t){this.source!=="screen"&&(t.addEventListener("mute",this.handleTrackMute),t.addEventListener("unmute",this.handleTrackUnmuteNatively))}removeTrackEventListeners(t){t.removeEventListener("mute",this.handleTrackMute),t.removeEventListener("unmute",this.handleTrackUnmuteNatively)}sendInterruptionAnalytics({started:t,reason:i}){this.eventBus.analytics.publish(this.sendInterruptionEvent({started:t,reason:i}))}notifyInterruption({started:t,reason:i}){t!==this.interruptionNotified&&(t&&document.visibilityState==="hidden"||(this.interruptionNotified=t,this.eventBus.trackInterruption.publish({started:t,reason:i,type:this.type,trackId:this.trackId})))}notifyIfStillInterrupted(t){(this.interrupted||this.enabledStateBeforeBackground&&this.isTrackNotPublishing())&&(this.interrupted=!0,this.notifyInterruption({started:!0,reason:t}))}};var x=class a extends ot{constructor(t,i,r,s){super(t,i,r);this._degraded=!1;this._degradedAt=null;this._layerDefinitions=[];this.history=new Ts;this.preferredLayer="high";this.disableNoneLayerRequest=!1;this.disableNoneLayerRequest=!!s,this.setVideoHandler(new ct(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&&(yield me(a.prototype,this,"setEnabled").call(this,t),this.videoHandler.updateSinks(!0))})}setPreferredLayer(t){return c(this,null,function*(){if(t==="none"){d.w("layer none will be ignored");return}if(this.preferredLayer=t,!!this.shouldSendVideoLayer(t,"preferLayer")){if(!this.hasSinks()){d.d(`[Remote Track] ${this.logIdentifier}
52
+ })()`;function te(a){if(a<0)throw Error("`ms` should be a positive integer");return new Promise(e=>{setTimeout(e,a)})}function Fe(a){if(a<0)throw Error("`ms` should be a positive integer");if(typeof Worker=="undefined")return te(a);let e=new Worker(URL.createObjectURL(new Blob([Oa],{type:"application/javascript"})));return e.postMessage(["start",a]),new Promise(t=>{e.onmessage=i=>{i.data==="tick"&&(t(),e.terminate())}})}function xa(){if(typeof Worker=="undefined")return{sleep:e=>te(e)};let a=new Worker(URL.createObjectURL(new Blob([Oa],{type:"application/javascript"})));return{sleep:e=>(a.postMessage(["start",e]),new Promise(t=>{a.onmessage=i=>{i.data==="tick"&&t()}}))}}function Di(a,e=300){let t;return function(...i){clearTimeout(t),t=void 0;let r=this;t=setTimeout(()=>{a.apply(r,i)},e)}}var Ro=35,Ho=5,_i=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 Ve(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 te(20)}});try{let r=new MediaStream([this.track.nativeTrack]);this.analyserNode=this.createAnalyserNodeForStream(r);let s=this.analyserNode.frequencyBinCount;this.dataArray=new Uint8Array(s)}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 te(this.interval)})}sendAudioLevel(e=0){if(e=e>Ro?e:0,Math.abs(this.audioLevel-e)>Ho){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||!this.dataArray){d.d(this.TAG,"AudioContext not initialized");return}this.analyserNode.getByteTimeDomainData(this.dataArray);let e=.009,t=e;for(let s of this.dataArray)t=Math.max(t,(s-128)/128);let i=(Math.log(e)-Math.log(t))/Math.log(e);return Math.ceil(Math.min(Math.max(i*100,0),100))}isSilentThisInstant(){if(!this.analyserNode||!this.dataArray){d.d(this.TAG,"AudioContext not initialized");return}return this.analyserNode.getByteTimeDomainData(this.dataArray),this.dataArray.every(e=>e===128||e===0)}createAnalyserNodeForStream(e){let t=ne.getAudioContext(),i=t.createMediaStreamSource(e),r=t.createAnalyser();return r.fftSize=2048,i.connect(r),r}};function Ua(a,e){return function(i){return!(0,Ba.default)(a[i],e[i])}}var Se=class a extends Oe{constructor(t,i,r,s,n=new ee().build(),o){super(t,i,r);this.eventBus=s;this.room=o;this.TAG="[HMSLocalAudioTrack]";this.tracksCreated=new Set;this.interrupted=!1;this.interruptionNotified=!1;this.isPublished=!1;this.handleVisibilityChange=()=>c(this,null,function*(){if(document.visibilityState==="hidden"){this.handleBackgrounded();return}yield this.handleForegrounded()});this.handleForegrounded=()=>c(this,null,function*(){if(d.d(this.TAG,`visibility: visible, interrupted: ${this.interrupted}`,`${this}`),!(!this.interrupted&&!this.shouldReacquireTrack())){if(this.sendInterruptionAnalytics({started:!1,reason:"visibility-change"}),this.permissionState&&this.permissionState!=="granted"){this.handlePermissionNotGranted();return}try{yield this.endInterruption("visibility-change")}catch(t){this.eventBus.error.publish(t)}this.notifyIfStillInterrupted("visibility-change")}});this.endInterruption=t=>c(this,null,function*(){if(vi()&&document.visibilityState==="hidden"){d.d(this.TAG,"interruption ended while hidden, deferring recovery",t,`${this}`);return}if(this.recovery){d.d(this.TAG,"interruption recovery already in progress",t,`${this}`),yield this.recovery.catch(()=>{});return}this.recovery=this.restoreCapture(t);try{yield this.recovery}finally{this.recovery=void 0}});this.restoreCapture=t=>c(this,null,function*(){yield ne.resumeContext(),yield this.reacquireStaleTrack(t),yield this.setEnabled(this.enabled,!0),this.eventBus.localAudioUnmutedNatively.publish()});this.trackPermissions=()=>{this.source==="regular"&&wi("microphone",t=>{this.permissionState=t,this.eventBus.analytics.publish(y.permissionChange(this.type,t)),t==="denied"&&this.eventBus.localAudioEnabled.publish({enabled:!1,track:this})})};this.handleTrackMute=()=>{d.d(this.TAG,"muted natively",`${this}`),this.interrupted=!0,this.sendInterruptionAnalytics({started:!0,reason:"track-muted-natively"}),this.notifyInterruption({started:!0,reason:"track-muted-natively"}),this.eventBus.localAudioEnabled.publish({enabled:!1,track:this})};this.handleTrackUnmute=()=>c(this,null,function*(){d.d(this.TAG,"unmuted natively",`${this}`),this.sendInterruptionAnalytics({started:!1,reason:"track-unmuted-natively"});try{yield this.endInterruption("track-unmuted-natively")}catch(t){this.eventBus.error.publish(t)}});this.reacquireStaleTrack=t=>c(this,null,function*(){if(!(!this.interrupted&&!this.shouldReacquireTrack())){if(d.d(this.TAG,"reacquiring track",t,`${this}`),yield this.replaceTrackWith(this.settings),this.shouldReacquireTrack()){d.d(this.TAG,"reacquired track is still not capturing",t,`${this}`);return}this.interrupted=!1,this.notifyInterruption({started:!1,reason:t})}});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.shouldReacquireTrack=()=>ve(this.nativeTrack)||this.isTrackNotPublishing();this.handleSettingsChange=t=>c(this,null,function*(){let i=this.stream,r=Ua(t,this.settings);(r("maxBitrate")||r("audioMode"))&&t.maxBitrate&&(yield i.setMaxBitrateAndFramerate(this,t)),(r("advanced")||r("audioMode"))&&(yield this.replaceTrackWith(t))});this.handleDeviceChange=(t,i=!1)=>c(this,null,function*(){if(Ua(t,this.settings)("deviceId")){this.manuallySelectedDeviceId=i?this.manuallySelectedDeviceId:t.deviceId,d.d(this.TAG,"device change","manual selection:",this.manuallySelectedDeviceId,"new device:",t.deviceId),yield this.replaceTrackWith(t);let s=this.nativeTrack.getSettings().groupId;!i&&t.deviceId&&(ae.updateSelection("audioInput",{deviceId:t.deviceId,groupId:s}),this.eventBus.deviceChange.publish({isUserSelection:!0,type:"audioInput",selection:{deviceId:t.deviceId,groupId:s,label:this.nativeTrack.label}}))}});t.tracks.push(this),this.addTrackEventListeners(i),this.trackPermissions(),this.settings=n,n.deviceId!==i.getSettings().deviceId&&!ve(i)&&(this.settings=this.buildNewSettings({deviceId:i.getSettings().deviceId})),this.pluginsManager=new xt(this,s,o),this.setFirstTrackId(i.id),r==="regular"&&document.addEventListener("visibilitychange",this.handleVisibilityChange)}clone(t){let i=this.nativeTrack.clone();t.nativeStream.addTrack(i);let r=new a(t,i,this.source,this.eventBus,this.settings,this.room);return r.peerId=this.peerId,this.pluginsManager.pluginsMap.size>0&&this.pluginsManager.pluginsMap.forEach(s=>{r.addPlugin(s).catch(n=>d.e(this.TAG,"Plugin add failed while migrating",s,n))}),r}getManuallySelectedDeviceId(){return this.manuallySelectedDeviceId}resetManuallySelectedDeviceId(){this.manuallySelectedDeviceId=void 0}handlePermissionNotGranted(){d.d(this.TAG,"On visibile not replacing track as permission is not granted"),this.interrupted&&this.notifyInterruption({started:!0,reason:"permission-not-granted"})}notifyIfStillInterrupted(t){(this.interrupted||this.enabled&&this.shouldReacquireTrack())&&(this.interrupted=!0,this.notifyInterruption({started:!0,reason:t}))}handleBackgrounded(){if(!this.shouldReacquireTrack()){d.d(this.TAG,"visibility: hidden",`${this}`);return}this.sendInterruptionAnalytics({started:!0,reason:"visibility-change"}),this.enabled&&(this.interrupted=!0,this.notifyInterruption({started:!0,reason:"visibility-change"}))}updateTrack(t){return c(this,null,function*(){t.enabled=this.enabled,yield this.stream.replaceStreamTrack(this.nativeTrack,t),this.nativeTrack=t;let r=ve(t);if(r?(d.i(this.TAG,"capture replaced with the silent placeholder, releasing the graph",{trackId:t.id,label:t.label,plugins:this.pluginsManager.getPlugins()}),yield this.pluginsManager.releaseGraph().catch(n=>d.w(this.TAG,"could not release the plugin graph",n)),yield this.setProcessedTrack(void 0).catch(n=>d.w(this.TAG,"could not publish the silent placeholder",n))):yield this.replaceSenderTrack(),this.audioLevelMonitor&&this.initAudioLevelMonitor(),!r)try{yield this.pluginsManager.reprocessPlugins()}catch(n){this.eventBus.audioPluginFailed.publish(n)}})}replaceTrackWith(t){return c(this,null,function*(){let i=this.nativeTrack;i==null||i.stop(),this.removeTrackEventListeners(i),this.tracksCreated.forEach(r=>r.stop()),this.tracksCreated.clear();try{let r=yield hs(t);this.addTrackEventListeners(r),this.tracksCreated.add(r),this.eventBus.analytics.publish(y.mediaConstraints({requestedConstraints:{audio:t.toConstraints()},appliedConstraints:{audio:r.getConstraints()},trackSettings:{audio:r.getSettings()}})),d.d(this.TAG,"replaceTrack, Previous track stopped",i,"newTrack",r),yield this.updateTrack(r)}catch(r){let s=r;if(s.code===E.TracksErrors.CANT_ACCESS_CAPTURE_DEVICE||s.code===E.TracksErrors.SYSTEM_DENIED_PERMISSION){let o=yield Te.getEmptyAudioTrack();throw this.addTrackEventListeners(o),this.tracksCreated.add(o),yield this.updateTrack(o),s}let n=yield hs(this.settings);throw this.addTrackEventListeners(n),this.tracksCreated.add(n),this.eventBus.analytics.publish(y.mediaConstraints({requestedConstraints:{audio:this.settings.toConstraints()},appliedConstraints:{audio:n.getConstraints()},trackSettings:{audio:n.getSettings()}})),yield this.updateTrack(n),this.isPublished&&this.eventBus.analytics.publish(y.publish({error:r})),r}})}setEnabled(t,i=!1){return c(this,null,function*(){t===this.enabled&&!i||(t&&(yield this.reacquireStaleTrack("set-enabled")),yield me(a.prototype,this,"setEnabled").call(this,t),t&&(this.settings=this.buildNewSettings({deviceId:this.nativeTrack.getSettings().deviceId})),this.eventBus.localAudioEnabled.publish({enabled:t,track:this}))})}isPublishedTrackId(t){return this.publishedTrackId===t}setSettings(t,i=!1){return c(this,null,function*(){let r=this.buildNewSettings(t);if(ve(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 _i(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;try{me(a.prototype,this,"cleanup").call(this),yield this.pluginsManager.cleanup(),yield this.pluginsManager.closeContext()}finally{this.transceiver=void 0,(t=this.processedTrack)==null||t.stop(),this.tracksCreated.forEach(i=>i.stop()),this.tracksCreated.clear(),this.isPublished=!1,this.destroyAudioLevelMonitor(),document.removeEventListener("visibilitychange",this.handleVisibilityChange)}})}getTrackIDBeingSent(){return this.processedTrack?this.processedTrack.id:this.nativeTrack.id}getTrackBeingSent(){return this.processedTrack||this.nativeTrack}addTrackEventListeners(t){this.source!=="screen"&&(t.addEventListener("mute",this.handleTrackMute),t.addEventListener("unmute",this.handleTrackUnmute))}removeTrackEventListeners(t){t.removeEventListener("mute",this.handleTrackMute),t.removeEventListener("unmute",this.handleTrackUnmute)}sendInterruptionAnalytics({started:t,reason:i}){this.eventBus.analytics.publish(this.sendInterruptionEvent({started:t,reason:i}))}notifyInterruption({started:t,reason:i}){t!==this.interruptionNotified&&(t&&document.visibilityState==="hidden"||(this.interruptionNotified=t,this.eventBus.trackInterruption.publish({started:t,reason:i,type:this.type,trackId:this.trackId})))}buildNewSettings(t){let{volume:i,codec:r,maxBitrate:s,deviceId:n,advanced:o,audioMode:l}=m(m({},this.settings),t);return new je(i,r,s,n,o,l)}};var le=class a extends Oe{setEnabled(e){return c(this,null,function*(){e!==this.enabled&&(yield me(a.prototype,this,"setEnabled").call(this,e),yield this.subscribeToAudio(e&&!this.isSilenced()))})}};var ot=class extends Ne{constructor(t,i,r){super(t,i,r);this.type="video";this.sinkCount=0;this.handleTrackUnmute=()=>{this.getSinks().forEach(t=>this.reTriggerPlay({videoElement:t}))};this.reTriggerPlay=({videoElement:t})=>{setTimeout(()=>{t.play().catch(i=>{d.w("[HMSVideoTrack]","failed to play",i.message)})},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 n=r.getVideoTracks()[0];if((n==null?void 0:n.id)===i.id){if(!n.muted&&n.readyState==="live")return;this.reduceSinkCount()}else this.reduceSinkCount()}this.addPropertiesToElement(t);let s=new MediaStream([i]);t.srcObject=s,this.reTriggerPlay({videoElement:t}),this.sinkCount++}reduceSinkCount(){this.sinkCount>0&&this.sinkCount--}addPropertiesToElement(t){fa||(t.autoplay=!0),t.playsInline=!0,t.muted=!0,t.controls=!1}};var qa=We(require("lodash.isequal"));var $a=require("uuid");var Ut={none:-1,low:0,medium:1,high:2},Co=.5,Va=(a,e)=>{let t="high",i=e.width>e.height?"width":"height",r=[...a].sort((n,o)=>Ut[n.layer]-Ut[o.layer]),s=e[i]*((window==null?void 0:window.devicePixelRatio)||1);for(let n=0;n<r.length;n++){let{resolution:o,layer:l}=r[n],u=o[i];if(s<=u){t=l;break}else{let p=r[n+1],h=p?p.resolution[i]:Number.POSITIVE_INFINITY;if((s-u)/(h-u)<Co){t=l;break}}}return t};var Ss=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=F&&typeof window.IntersectionObserver!="undefined";return e||d.w(this.TAG,"IntersectionObserver is not supported, fallback will be used instead"),e}},Fa=new Ss;var gs=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(Di(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=F&&typeof window.ResizeObserver!="undefined";return e||d.w(this.TAG,"Resize Observer is not supported"),e}},Ga=new gs;var ct=class{constructor(e){this.track=e;this.TAG="[VideoElementManager]";this.videoElements=new Set;this.entries=new WeakMap;this.intersectionSeq=new WeakMap;this.seq=0;this.handleIntersection=e=>c(this,null,function*(){if(!this.intersectionObserver)return;let t=e.target,i=++this.seq;this.intersectionSeq.set(t,i);let r=getComputedStyle(e.target).visibility==="visible";this.track.enabled&&(e.isIntersecting&&r||!document.contains(e.target))?yield this.addSinkForEntry(t,e.boundingClientRect,i):(d.d(this.TAG,"remove sink intersection",`${this.track}`,this.id),this.logIfRejected(this.track.removeSink(t),"removeSink"))});this.handleResize=e=>c(this,null,function*(){this.resizeObserver&&(!this.track.enabled||!(this.track instanceof x)||(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,$a.v4)()}logIfRejected(e,t){Promise.resolve(e).catch(i=>d.e(this.TAG,`${t} failed`,`${this.track}`,i))}updateSinks(e=!1){for(let t of this.videoElements)this.track.enabled?this.logIfRejected(this.track.addSink(t,e),"addSink"):this.logIfRejected(this.track.removeSink(t,e),"removeSink")}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):F&&(this.isElementInViewport(e)?this.logIfRejected(this.track.addSink(e),"addSink"):this.logIfRejected(this.track.removeSink(e),"removeSink")),this.resizeObserver?this.resizeObserver.observe(e,this.handleResize):this.track instanceof x&&this.logIfRejected(this.track.setPreferredLayer(this.track.getPreferredLayer()),"setPreferredLayer"))})}removeVideoElement(e){var t,i;this.videoElements.delete(e),this.entries.delete(e),this.intersectionSeq.delete(e),(t=this.resizeObserver)==null||t.unobserve(e),(i=this.intersectionObserver)==null||i.unobserve(e),this.logIfRejected(Promise.resolve(this.track.removeSink(e)).finally(()=>this.selectMaxLayer()),"removeSink"),d.d(this.TAG,`Removing video element for ${this.track}`)}getVideoElements(){return Array.from(this.videoElements)}init(){F&&(this.resizeObserver=Ga,this.intersectionObserver=Fa)}addSinkForEntry(e,t,i){return c(this,null,function*(){if(d.d(this.TAG,"add sink intersection",`${this.track}`,this.id),this.entries.set(e,t),yield this.selectMaxLayer(),!this.shouldStillAddSink(e,i)){d.d(this.TAG,"add sink superseded",`${this.track}`,this.id);return}this.logIfRejected(this.track.addSink(e),"addSink")})}shouldStillAddSink(e,t){return this.videoElements.has(e)&&this.intersectionSeq.get(e)===t}isElementInViewport(e){let t=e.offsetTop,i=e.offsetLeft,r=e.offsetWidth,s=e.offsetHeight,{hidden:n}=e,{opacity:o,display:l}=getComputedStyle(e);for(;e.offsetParent;)e=e.offsetParent,t+=e.offsetTop,i+=e.offsetLeft;return t<window.pageYOffset+window.innerHeight&&i<window.pageXOffset+window.innerWidth&&t+s>window.pageYOffset&&i+r>window.pageXOffset&&!n&&(o!==""?parseFloat(o)>0:!0)&&l!=="none"}selectMaxLayer(){return c(this,null,function*(){if(!(this.track instanceof x)||this.videoElements.size===0)return;let e;for(let t of this.videoElements){let i=this.entries.get(t);if(!i)continue;let{width:r,height:s}=i;if(r===0||s===0)continue;let n=Va(this.track.getSimulcastDefinitions(),{width:r,height:s});e?e=Ut[n]>Ut[e]?n:e:e=n}if(e){d.d(this.TAG,`selecting max layer ${e} for the track`,`${this.track}`);try{yield this.track.setPreferredLayer(e)}catch(t){d.e(this.TAG,`failed to select layer ${e}`,`${this.track}`,t)}}})}};var Ni=(t=>(t.TRANSFORM="TRANSFORM",t.ANALYZE="ANALYZE",t))(Ni||{}),Oi=(t=>(t["2D"]="2d",t.WEBGL="webgl",t.WEBGL2="webgl2",t))(Oi||{});var Bt=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 dt=class{constructor(e){this.eventBus=e;this.TAG="[VideoPluginsAnalytics]";this.initTime={},this.preProcessingAvgs=new Bt,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 Bt,t&&(this.pluginInputFrameRate[e]=t,this.pluginFrameRate[e]=i||t),this.eventBus.analytics.publish(ge.added(e,this.addedTimestamps[e]))}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 s=S.MediaPluginErrors.InitFailed("VIDEO_PLUGINS",`failed during initialization of plugin${r.message||r}`);throw d.e(this.TAG,s),this.failure(e,s),s}i&&(this.initTime[e]=i)})}preProcessWithTime(e){return c(this,null,function*(){let t=yield this.timeInMs(e);this.preProcessingAvgs.add(t)})}processWithTime(e,t){return c(this,null,function*(){var r;let i;try{i=yield this.timeInMs(t)}catch(s){let n=S.MediaPluginErrors.ProcessingFailed("VIDEO_PLUGINS",`Failed during processing of plugin${s.message||s}`);throw d.e(this.TAG,n),this.failure(e,n),n}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 Wa=24,Lo=320,wo=240,Vt=class{constructor(e,t){this.TAG="[VideoPluginsManager]";this.pluginsLoopRunning=!1;this.pluginsLoopState="paused";this.pluginAddInProgress=!1;this.reusableWorker=xa();this.hmsTrack=e,this.pluginsMap=new Map,this.pluginNumFramesToSkip={},this.pluginNumFramesSkipped={},this.analytics=new dt(t),this.canvases=new Array}getPlugins(){return Array.from(this.pluginsMap.keys())}addPlugin(e,t){return c(this,null,function*(){var i;if(this.pluginAddInProgress){let r=(i=e.getName)==null?void 0:i.call(e);if(!r||r===""){d.w("no name provided by the plugin");return}let s=S.MediaPluginErrors.AddAlreadyInProgress("VIDEO_PLUGINS","Add Plugin is already in Progress");throw this.analytics.failure(r,s),d.w("can't add another plugin when previous add is in progress"),s}this.pluginAddInProgress=!0;try{yield this.addPluginInternal(e,t)}finally{this.pluginAddInProgress=!1}})}addPluginInternal(e,t){return c(this,null,function*(){var n,o;let i=(n=e.getName)==null?void 0:n.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||Wa,s=0;t&&t>0?(d.i(this.TAG,`adding plugin ${e.getName()} with framerate ${t}`),t<r&&(s=Math.ceil(r/t)-1),this.analytics.added(i,r,t)):(d.i(this.TAG,`adding plugin ${e.getName()}`),this.analytics.added(i,r)),d.i(this.TAG,"numFrames to skip processing",s),this.pluginNumFramesToSkip[i]=s,this.pluginNumFramesSkipped[i]=s,this.validateAndThrow(i,e);try{if(yield this.analytics.initWithTime(i,()=>c(this,null,function*(){return yield e.init()})),this.pluginsMap.set(i,e),this.pluginsMap.size+1>this.canvases.length)for(let l=this.canvases.length;l<=this.pluginsMap.size;l++)this.canvases[l]=document.createElement("canvas");yield this.startPluginsLoop((o=e.getContextType)==null?void 0:o.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=S.MediaPluginErrors.PlatformNotSupported("VIDEO_PLUGINS","platform not supported, see docs"),this.analytics.failure(e,r),r;case"DEVICE_NOT_SUPPORTED":throw r=S.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 Fe(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||Wa,t=Math.floor(1e3/e);if(!this.hmsTrack.enabled||this.hmsTrack.nativeTrack.readyState==="ended"){this.pluginsLoopState==="running"&&this.resetCanvases(),this.pluginsLoopState="paused",yield this.reusableWorker.sleep(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 this.reusableWorker.sleep(t-i)}})}doPreProcessing(){return c(this,null,function*(){yield this.addTrackToVideo(),yield this.updateInputCanvas()})}processFramesThroughPlugins(){return c(this,null,function*(){this.canvases[0]=this.inputCanvas;let e=0;for(let t of this.pluginsMap.values()){let i=t.getName();if(t){try{let r=this.checkIfSkipRequired(i);if(t.getPluginType()==="TRANSFORM"){let s=(n,o)=>c(this,null,function*(){try{yield t.processVideoFrame(n,o,r)}catch(l){d.e(this.TAG,`error in processing plugin ${i}`,l)}});if(r)e===this.pluginsMap.size-1?yield s(this.canvases[e],this.outputCanvas):yield s(this.canvases[e],this.canvases[e+1]);else{let n=this.canvases[e],o=this.canvases[e+1];e===this.pluginsMap.size-1?yield this.analytics.processWithTime(i,()=>c(this,null,function*(){return s(n,this.outputCanvas)})):yield this.analytics.processWithTime(i,()=>c(this,null,function*(){return s(n,o)}))}}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=Lo,height:t=wo}=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 xi=class{constructor(e,t){this.TAG="[MediaStreamPluginsManager]";this.plugins=new Set,this.analytics=new dt(e),this.room=t}addPlugins(e){e.forEach(t=>{var i;switch(t.getName()){case"HMSEffectsPlugin":if(!((i=this.room)!=null&&i.isEffectsEnabled)){let r="Effects Virtual Background is not enabled for this room";if(this.plugins.size===0)throw Error(r);d.w(this.TAG,r);return}break;default:}this.plugins.add(t)})}removePlugins(e){e.forEach(t=>{t.stop(),this.analytics.removed(t.getName()),this.plugins.delete(t)})}applyPlugins(e){let t=e;for(let i of this.plugins){let r=i.getName();try{t=i.apply(t),this.analytics.added(r)}catch(s){this.analytics.failure(r,s),d.e("Could not apply plugin",s,r)}}return t}getPlugins(){return Array.from(this.plugins).map(e=>e.getName())}cleanup(){return c(this,null,function*(){this.removePlugins(Array.from(this.plugins))})}};function Ka(a,e){return function(i){return!(0,qa.default)(a[i],e[i])}}var K=class a extends ot{constructor(t,i,r,s,n=new z().build(),o){super(t,i,r);this.eventBus=s;this.room=o;this._layerDefinitions=[];this.TAG="[HMSLocalVideoTrack]";this.enabledStateBeforeBackground=!1;this.interrupted=!1;this.interruptionNotified=!1;this.recoversOnForeground=!1;this.isCurrentTab=!1;this.isPublished=!1;this.replaceSenderTrack=t=>c(this,null,function*(){if(!this.transceiver||this.transceiver.direction!=="sendonly"){d.d(this.TAG,`transceiver for ${this.trackId} not available or not connected yet`);return}yield this.transceiver.sender.replaceTrack(t)});this.buildNewSettings=t=>{let{width:i,height:r,codec:s,maxFramerate:n,maxBitrate:o,deviceId:l,advanced:u,facingMode:p}=m(m({},this.settings),t);return new Qe(i,r,s,n,l,u,o,p)};this.handleSettingsChange=t=>c(this,null,function*(){let i=this.stream,r=Ka(t,this.settings);if(r("maxBitrate")&&t.maxBitrate&&(yield i.setMaxBitrateAndFramerate(this)),r("width")||r("height")||r("advanced"))if(this.source==="video"){let s=yield this.replaceTrackWith(t);yield this.replaceSender(s,this.enabled),this.nativeTrack=s,yield this.processPlugins(),this.videoHandler.updateSinks()}else yield this.nativeTrack.applyConstraints(t.toConstraints())});this.handleDeviceChange=(t,i=!1)=>c(this,null,function*(){if(Ka(t,this.settings)("deviceId")&&this.source==="regular"){if(this.enabled){delete t.facingMode;let n=yield this.replaceTrackWith(t);yield this.replaceSender(n,this.enabled),this.nativeTrack=n,yield this.processPlugins(),this.videoHandler.updateSinks()}let s=this.nativeTrack.getSettings().groupId;!i&&t.deviceId&&(ae.updateSelection("videoInput",{deviceId:t.deviceId,groupId:s}),this.eventBus.deviceChange.publish({isUserSelection:!0,type:"video",selection:{deviceId:t.deviceId,groupId:s,label:this.nativeTrack.label}}))}});this.trackPermissions=()=>{this.source==="regular"&&wi("camera",t=>{this.eventBus.analytics.publish(y.permissionChange(this.type,t)),t==="denied"&&this.eventBus.localVideoEnabled.publish({enabled:!1,track:this})})};this.endInterruption=(t,i)=>c(this,null,function*(){if(this.recoversOnForeground&&document.visibilityState==="hidden"){d.d(this.TAG,"interruption ended while hidden, deferring recovery",t,`${this}`);return}if(this.recovery){d.d(this.TAG,"interruption recovery already in progress",t,`${this}`),yield this.recovery.catch(()=>{});return}this.recovery=this.restoreCapture(t,i);try{yield this.recovery}finally{this.recovery=void 0}});this.restoreCapture=(t,i)=>c(this,null,function*(){let r=this.interrupted;i&&(!this.enabled||this.isTrackNotPublishing())?(d.d(this.TAG,"reacquiring camera after interruption",t,`${this}`),yield this.setEnabled(!0,!0,t)):(d.d(this.TAG,"interruption ended, track reports publishing, replaying sinks",t,`${this}`),this.eventBus.localVideoEnabled.publish({enabled:this.enabled,track:this})),this.interrupted=!1,this.handleTrackUnmute(),r&&this.notifyInterruption({started:!1,reason:t}),this.eventBus.localVideoUnmutedNatively.publish()});this.handleTrackMute=()=>{d.d(this.TAG,"muted natively",document.visibilityState,`${this}`),this.sendInterruptionAnalytics({started:!0,reason:"track-muted-natively"}),this.enabled&&(this.interrupted=!0,this.notifyInterruption({started:!0,reason:"track-muted-natively"})),this.eventBus.localVideoEnabled.publish({enabled:!1,track:this})};this.handleTrackUnmuteNatively=()=>c(this,null,function*(){d.d(this.TAG,"unmuted natively",`${this}`),this.sendInterruptionAnalytics({started:!1,reason:"track-unmuted-natively"});try{yield this.endInterruption("track-unmuted-natively",this.enabled)}catch(t){this.eventBus.error.publish(t)}});this.removeOrReplaceProcessedTrack=t=>c(this,null,function*(){let i=this.processedTrack;t?t!==this.processedTrack&&(this.processedTrack=t):this.processedTrack=void 0,yield this.replaceSenderTrack(this.processedTrack||this.nativeTrack),i&&i!==this.processedTrack&&i.stop()});this.handleVisibilityChange=()=>c(this,null,function*(){if(document.visibilityState==="hidden"){yield this.handleBackgrounded();return}yield this.handleForegrounded()});this.handleForegrounded=()=>c(this,null,function*(){if(this.sendInterruptionAnalytics({started:!1,reason:"visibility-change"}),this.permissionState&&this.permissionState!=="granted"){d.d(this.TAG,"On visibile not replacing track as permission is not granted");return}if(d.d(this.TAG,"visibility visible, restoring track state",this.enabledStateBeforeBackground),!(!this.enabledStateBeforeBackground&&!this.interrupted)){try{yield this.endInterruption("visibility-change",this.enabledStateBeforeBackground)}catch(t){this.eventBus.error.publish(t)}this.notifyIfStillInterrupted("visibility-change")}});this.handleBackgrounded=()=>c(this,null,function*(){if(this.enabledStateBeforeBackground=this.enabled,this.enabled){this.interrupted=!0;try{yield this.setEnabled(!1)}catch(t){this.eventBus.error.publish(t)}}this.sendInterruptionAnalytics({started:!0,reason:"visibility-change"}),this.notifyInterruption({started:!0,reason:"visibility-change"})});this.addTrackEventListeners(i),this.trackPermissions(),t.tracks.push(this),this.setVideoHandler(new ct(this)),this.settings=n,n.deviceId!==i.getSettings().deviceId&&i.enabled&&(this.settings=this.buildNewSettings({deviceId:i.getSettings().deviceId})),this.pluginsManager=new Vt(this,s),this.mediaStreamPluginsManager=new xi(s,o),this.setFirstTrackId(this.trackId),this.eventBus.localAudioUnmutedNatively.subscribe(this.handleTrackUnmute),this.recoversOnForeground=F&&r==="regular"&&vi(),this.recoversOnForeground&&document.addEventListener("visibilitychange",this.handleVisibilityChange)}clone(t){let i=this.nativeTrack.clone();t.nativeStream.addTrack(i);let r=new a(t,i,this.source,this.eventBus,this.settings,this.room);return r.peerId=this.peerId,this.pluginsManager.pluginsMap.size>0&&this.pluginsManager.pluginsMap.forEach(s=>{r.addPlugin(s).catch(n=>d.e(this.TAG,"Plugin add failed while migrating",s,n))}),this.mediaStreamPluginsManager.plugins.size>0&&r.addStreamPlugins(Array.from(this.mediaStreamPluginsManager.plugins)),r}setSimulcastDefinitons(t){this._layerDefinitions=t}getSimulcastDefinitions(){return this._layerDefinitions}setEnabled(t,i=!1,r="set-enabled"){return c(this,null,function*(){var s;if(!(t===this.enabled&&!i)){if(this.source==="regular"){let n;t?n=yield this.replaceTrackWith(this.settings):n=yield this.replaceTrackWithBlank(),yield this.replaceSender(n,t),(s=this.nativeTrack)==null||s.stop(),this.nativeTrack=n,yield me(a.prototype,this,"setEnabled").call(this,t),t&&(yield this.pluginsManager.waitForRestart(),yield this.processPlugins(),this.settings=this.buildNewSettings({deviceId:n.getSettings().deviceId}),this.isTrackNotPublishing()||(this.interrupted=!1,this.notifyInterruption({started:!1,reason:r}))),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();this.videoHandler.updateSinks()}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||ve(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()}getPluginsMetrics(){let t={};for(let i of this.mediaStreamPluginsManager.plugins)i.getMetrics&&(t[i.getName()]=i.getMetrics());return t}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;this.eventBus.localAudioUnmutedNatively.unsubscribe(this.handleTrackUnmute),this.removeTrackEventListeners(this.nativeTrack),yield this.mediaStreamPluginsManager.cleanup(),yield this.pluginsManager.cleanup(),me(a.prototype,this,"cleanup").call(this),this.transceiver=void 0,(t=this.processedTrack)==null||t.stop(),this.isPublished=!1,this.recoversOnForeground&&document.removeEventListener("visibilitychange",this.handleVisibilityChange)})}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),S.TracksErrors.GenericTrack("TRACK","failed to crop screenshare capture")}})}getCaptureHandle(){if(this.nativeTrack.getCaptureHandle)return this.nativeTrack.getCaptureHandle()}setProcessedTrack(t){return c(this,null,function*(){if(!this.nativeTrack.enabled){this.processedTrack=t;return}yield this.removeOrReplaceProcessedTrack(t),this.videoHandler.updateSinks()})}getTrackIDBeingSent(){return this.getTrackBeingSent().id}getTrackBeingSent(){return this.enabled?this.processedTrack||this.nativeTrack:this.nativeTrack}switchCamera(){return c(this,null,function*(){var s;let t=this.getMediaTrackSettings().facingMode;if(!t||this.source!=="regular"){d.d(this.TAG,"facingMode not supported");return}let i=t==="environment"?"user":"environment";(s=this.nativeTrack)==null||s.stop();let r=yield this.replaceTrackWith(this.buildNewSettings({facingMode:i,deviceId:void 0}));yield this.replaceSender(r,this.enabled),this.nativeTrack=r,yield this.processPlugins(),this.videoHandler.updateSinks(),this.settings=this.buildNewSettings({deviceId:this.nativeTrack.getSettings().deviceId,facingMode:i}),ae.updateSelection("videoInput",{deviceId:this.settings.deviceId,groupId:this.nativeTrack.getSettings().groupId})})}replaceTrackWith(t){return c(this,null,function*(){let i=this.nativeTrack;this.removeTrackEventListeners(i),i==null||i.stop();try{let r=yield ms(t);return this.addTrackEventListeners(r),this.eventBus.analytics.publish(y.mediaConstraints({requestedConstraints:{video:t.toConstraints()},appliedConstraints:{video:r.getConstraints()},trackSettings:{video:r.getSettings()}})),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){let s=r;if(s.code===E.TracksErrors.CANT_ACCESS_CAPTURE_DEVICE||s.code===E.TracksErrors.SYSTEM_DENIED_PERMISSION){let o=yield this.replaceTrackWithBlank();throw this.addTrackEventListeners(o),yield this.replaceSender(o,this.enabled),this.nativeTrack=o,this.videoHandler.updateSinks(),s}let n=yield ms(this.settings);throw this.addTrackEventListeners(n),this.eventBus.analytics.publish(y.mediaConstraints({requestedConstraints:{video:this.settings.toConstraints()},appliedConstraints:{video:n.getConstraints()},trackSettings:{video:n.getSettings()}})),yield this.replaceSender(n,this.enabled),this.nativeTrack=n,yield this.processPlugins(),this.videoHandler.updateSinks(),this.isPublished&&this.eventBus.analytics.publish(y.publish({error:s})),s}})}replaceTrackWithBlank(){return c(this,null,function*(){let t=this.nativeTrack,i=Te.getEmptyVideoTrack(t);return this.removeTrackEventListeners(t),this.addTrackEventListeners(i),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)})}addTrackEventListeners(t){this.source!=="screen"&&(t.addEventListener("mute",this.handleTrackMute),t.addEventListener("unmute",this.handleTrackUnmuteNatively))}removeTrackEventListeners(t){t.removeEventListener("mute",this.handleTrackMute),t.removeEventListener("unmute",this.handleTrackUnmuteNatively)}sendInterruptionAnalytics({started:t,reason:i}){this.eventBus.analytics.publish(this.sendInterruptionEvent({started:t,reason:i}))}notifyInterruption({started:t,reason:i}){t!==this.interruptionNotified&&(t&&document.visibilityState==="hidden"||(this.interruptionNotified=t,this.eventBus.trackInterruption.publish({started:t,reason:i,type:this.type,trackId:this.trackId})))}notifyIfStillInterrupted(t){(this.interrupted||this.enabledStateBeforeBackground&&this.isTrackNotPublishing())&&(this.interrupted=!0,this.notifyInterruption({started:!0,reason:t}))}};var x=class a extends ot{constructor(t,i,r,s){super(t,i,r);this._degraded=!1;this._degradedAt=null;this._layerDefinitions=[];this.history=new Ts;this.preferredLayer="high";this.disableNoneLayerRequest=!1;this.disableNoneLayerRequest=!!s,this.setVideoHandler(new ct(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&&(yield me(a.prototype,this,"setEnabled").call(this,t),this.videoHandler.updateSinks(!0))})}setPreferredLayer(t){return c(this,null,function*(){if(t==="none"){d.w("layer none will be ignored");return}if(this.preferredLayer=t,!!this.shouldSendVideoLayer(t,"preferLayer")){if(!this.hasSinks()){d.d(`[Remote Track] ${this.logIdentifier}
53
53
  streamId=${this.stream.id}
54
54
  trackId=${this.trackId}
55
55
  saving ${t}, source=${this.source}