@100mslive/hms-video-store 0.8.2 → 0.8.3

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.
@@ -7,5 +7,5 @@ export * from './schema';
7
7
  export * from './selectors';
8
8
  export { HMSLogLevel, HMSAudioPluginType, HMSVideoPluginType, HMSVideoPluginCanvasContextType, parsedUserAgent, HMSSimulcastLayer, simulcastMapping, DeviceType, } from './hmsSDKStore/sdkTypes';
9
9
  export * from './webrtc-stats';
10
- export type { HMSConfig, HMSConfigInitialSettings, HMSAudioTrackSettings, HMSVideoTrackSettings, RTMPRecordingConfig, HMSPeerStats, HMSTrackStats, HMSLocalTrackStats, HMSRemoteTrackStats, HLSConfig, HLSMeetingURLVariant, HMSScreenShareConfig, ScreenCaptureHandle, HMSPreferredSimulcastLayer, } from './hmsSDKStore/sdkTypes';
10
+ export type { HMSConfig, HMSPreviewConfig, HMSConfigInitialSettings, HMSAudioTrackSettings, HMSVideoTrackSettings, RTMPRecordingConfig, HMSPeerStats, HMSTrackStats, HMSLocalTrackStats, HMSRemoteTrackStats, HLSConfig, HLSMeetingURLVariant, HMSScreenShareConfig, ScreenCaptureHandle, HMSPreferredSimulcastLayer, } from './hmsSDKStore/sdkTypes';
11
11
  export * from '../controller/beam/BeamController';
package/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- var _t=Object.create;var Y=Object.defineProperty,Ut=Object.defineProperties,Kt=Object.getOwnPropertyDescriptor,Vt=Object.getOwnPropertyDescriptors,Bt=Object.getOwnPropertyNames,Xe=Object.getOwnPropertySymbols,qt=Object.getPrototypeOf,Ze=Object.prototype.hasOwnProperty,jt=Object.prototype.propertyIsEnumerable;var et=(s,e,t)=>e in s?Y(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,_=(s,e)=>{for(var t in e||(e={}))Ze.call(e,t)&&et(s,t,e[t]);if(Xe)for(var t of Xe(e))jt.call(e,t)&&et(s,t,e[t]);return s},W=(s,e)=>Ut(s,Vt(e)),tt=s=>Y(s,"__esModule",{value:!0});var Ft=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),$t=(s,e)=>{tt(s);for(var t in e)Y(s,t,{get:e[t],enumerable:!0})},Gt=(s,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Bt(e))!Ze.call(s,i)&&i!=="default"&&Y(s,i,{get:()=>e[i],enumerable:!(t=Kt(e,i))||t.enumerable});return s},R=s=>Gt(tt(Y(s!=null?_t(qt(s)):{},"default",s&&s.__esModule&&"default"in s?{get:()=>s.default,enumerable:!0}:{value:s,enumerable:!0})),s);var S=(s,e,t)=>new Promise((i,o)=>{var r=p=>{try{n(t.next(p))}catch(I){o(I)}},a=p=>{try{n(t.throw(p))}catch(I){o(I)}},n=p=>p.done?i(p.value):Promise.resolve(p.value).then(r,a);n((t=t.apply(s,e)).next())});var xt=Ft((En,Qi)=>{Qi.exports={version:"0.8.2",license:"MIT",main:"dist/index.cjs.js",module:"dist/index.js",typings:"dist/index.d.ts",files:["dist","src"],engines:{node:">=12"},exports:{".":{require:"./dist/index.cjs.js",import:"./dist/index.js",default:"./dist/index.js"}},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",sideEffects:!1,dependencies:{"@100mslive/hms-video":"0.7.2",eventemitter2:"^6.4.7",immer:"^9.0.6",reselect:"4.0.0",zustand:"3.5.7"},devDependencies:{"ts-node":"^10.4.0",tslib:"^2.2.0"},description:"This is an addon to the core sdk provided by 100ms. It abstracts away the intricacies of data management and provides a flux based reactive data store where data flows in only one direction.",repository:{type:"git",url:"git+https://github.com/100mslive/hms-video-store.git"},keywords:["video","webrtc","conferencing","100ms"],bugs:{url:"https://github.com/100mslive/hms-video-store/issues"},homepage:"https://github.com/100mslive/hms-video-store#readme",gitHead:"60cfa51f3d560ae544d8b3a504ea02b71f8219cf"}});$t(exports,{BeamControllerStore:()=>ye,DeviceType:()=>c.DeviceType,HMSAudioPluginType:()=>c.HMSAudioPluginType,HMSLogLevel:()=>c.HMSLogLevel,HMSMessageType:()=>Pe,HMSNotificationSeverity:()=>P,HMSNotificationTypes:()=>H,HMSPlaylistType:()=>m,HMSReactiveStore:()=>O,HMSRoomState:()=>T,HMSSimulcastLayer:()=>c.HMSSimulcastLayer,HMSStats:()=>ne,HMSVideoPluginCanvasContextType:()=>c.HMSVideoPluginCanvasContextType,HMSVideoPluginType:()=>c.HMSVideoPluginType,createDefaultStatsStore:()=>X,createDefaultStoreState:()=>z,parsedUserAgent:()=>c.parsedUserAgent,selectAppData:()=>bs,selectAppDataByPath:()=>Cs,selectAudioPlaylist:()=>xe,selectAudioPlaylistTrackByPeerID:()=>Fs,selectAudioTrackByID:()=>Ns,selectAudioTrackByPeerID:()=>Tt,selectAudioTrackVolume:()=>Be,selectAudioVolumeByPeerID:()=>Ys,selectAuxiliaryAudioByPeerID:()=>Bs,selectAuxiliaryTracksByPeerID:()=>ws,selectAvailableRoleNames:()=>Ts,selectBroadcastMessages:()=>ht,selectBroadcastMessagesUnreadCount:()=>ti,selectCameraStreamByPeerID:()=>Os,selectConnectionQualities:()=>zt,selectConnectionQualityByPeerID:()=>Vs,selectDegradedTracks:()=>us,selectDevices:()=>Yt,selectDidIJoinWithin:()=>yi,selectDominantSpeaker:()=>rs,selectErrors:()=>ot,selectFullAppData:()=>ue,selectHLSState:()=>hs,selectHMSMessages:()=>se,selectHMSMessagesCount:()=>be,selectHMSStats:()=>Nt,selectIsAllowedToPublish:()=>Mi,selectIsAllowedToSubscribe:()=>Hs,selectIsAudioLocallyMuted:()=>Ve,selectIsConnectedToRoom:()=>Me,selectIsInPreview:()=>ps,selectIsLocalAudioEnabled:()=>as,selectIsLocalAudioPluginPresent:()=>fi,selectIsLocalScreenShared:()=>me,selectIsLocalVideoDisplayEnabled:()=>Ee,selectIsLocalVideoEnabled:()=>pe,selectIsLocalVideoPluginPresent:()=>Hi,selectIsLocallyMutedByPeerID:()=>Qs,selectIsPeerAudioEnabled:()=>Gs,selectIsPeerVideoEnabled:()=>Ws,selectIsScreenShareLocallyMutedByPeerID:()=>Js,selectIsSomeoneScreenSharing:()=>ns,selectLocalAudioTrackID:()=>A,selectLocalMediaSettings:()=>Ie,selectLocalPeer:()=>E,selectLocalPeerID:()=>F,selectLocalPeerName:()=>ts,selectLocalPeerRole:()=>ie,selectLocalPeerRoleName:()=>ss,selectLocalTrackIDs:()=>ve,selectLocalVideoTrackID:()=>N,selectMessageIDsInOrder:()=>De,selectMessagesByPeerID:()=>si,selectMessagesByRole:()=>ii,selectMessagesMap:()=>Re,selectMessagesUnreadCountByPeerID:()=>ri,selectMessagesUnreadCountByRole:()=>oi,selectPeerAudioByID:()=>Ks,selectPeerByCondition:()=>gi,selectPeerByID:()=>L,selectPeerCount:()=>Xt,selectPeerMetadata:()=>ci,selectPeerName:()=>Si,selectPeerNameByID:()=>As,selectPeerScreenSharing:()=>at,selectPeerSharingAudio:()=>cs,selectPeerSharingAudioPlaylist:()=>ds,selectPeerSharingVideoPlaylist:()=>ls,selectPeers:()=>j,selectPeersByCondition:()=>hi,selectPeersByRole:()=>ai,selectPeersByRoles:()=>ni,selectPeersMap:()=>v,selectPeersScreenSharing:()=>Ss,selectPeersWithAudioStatus:()=>li,selectPermissions:()=>Ce,selectPreviewPeer:()=>es,selectRTMPState:()=>gs,selectRecentError:()=>Qt,selectRecordingState:()=>fs,selectRemotePeers:()=>os,selectRoleByRoleName:()=>pi,selectRoleChangeRequest:()=>ui,selectRolesMap:()=>U,selectRoom:()=>D,selectRoomID:()=>Jt,selectRoomStartTime:()=>ks,selectRoomStarted:()=>ms,selectRoomState:()=>b,selectScreenAudioTrackByID:()=>xs,selectScreenShareAudioByPeerID:()=>Ke,selectScreenShareByPeerID:()=>$s,selectScreenSharesByPeerId:()=>Ue,selectScreenVideoTrackByID:()=>Ls,selectScreenshareAudioVolumeByPeerID:()=>zs,selectSessionId:()=>ys,selectSessionMetadata:()=>Ps,selectSimulcastLayerByTrack:()=>Xs,selectSpeakers:()=>rt,selectTrackAudioByID:()=>_s,selectTrackByID:()=>ae,selectTracksMap:()=>g,selectUnreadHMSMessagesCount:()=>Ms,selectVideoPlaylist:()=>Le,selectVideoPlaylistAudioTrackByPeerID:()=>js,selectVideoPlaylistVideoTrackByPeerID:()=>qs,selectVideoTrackByID:()=>_e,selectVideoTrackByPeerID:()=>mt,simulcastMapping:()=>c.simulcastMapping});var Lt=R(require("immer")),Ot=R(require("zustand/shallow")),wt=R(require("zustand/vanilla")),ke=R(require("@100mslive/hms-video"));var yt=R(require("eventemitter2"));var T;(function(n){n.Disconnected="Disconnected",n.Preview="Preview",n.Connecting="Connecting",n.Connected="Connected",n.Reconnecting="Reconnecting",n.Disconnecting="Disconnecting",n.Failed="Failed"})(T||(T={}));var z=()=>({room:{id:"",isConnected:!1,name:"",peers:[],localPeer:"",roomState:T.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:[],preview:{},errors:[]}),X=()=>({peerStats:{},remoteTrackStats:{},localTrackStats:{},localPeer:{id:""}});var Pe;(function(e){e.CHAT="chat"})(Pe||(Pe={}));var P;(function(t){t.INFO="info",t.ERROR="error"})(P||(P={}));var H;(function(l){l.PEER_JOINED="PEER_JOINED",l.PEER_LEFT="PEER_LEFT",l.PEER_LIST="PEER_LIST",l.NEW_MESSAGE="NEW_MESSAGE",l.ERROR="ERROR",l.RECONNECTING="RECONNECTING",l.RECONNECTED="RECONNECTED",l.TRACK_ADDED="TRACK_ADDED",l.TRACK_REMOVED="TRACK_REMOVED",l.TRACK_MUTED="TRACK_MUTED",l.TRACK_UNMUTED="TRACK_UNMUTED",l.TRACK_DEGRADED="TRACK_DEGRADED",l.TRACK_RESTORED="TRACK_RESTORED",l.TRACK_DESCRIPTION_CHANGED="TRACK_DESCRIPTION_CHANGED",l.ROLE_UPDATED="ROLE_UPDATED",l.CHANGE_TRACK_STATE_REQUEST="CHANGE_TRACK_STATE_REQUEST",l.CHANGE_MULTI_TRACK_STATE_REQUEST="CHANGE_MULTI_TRACK_STATE_REQUEST",l.ROOM_ENDED="ROOM_ENDED",l.REMOVED_FROM_ROOM="REMOVED_FROM_ROOM",l.DEVICE_CHANGE_UPDATE="DEVICE_CHANGE_UPDATE",l.PLAYLIST_TRACK_ENDED="PLAYLIST_TRACK_ENDED",l.NAME_UPDATED="NAME_UPDATED",l.METADATA_UPDATED="METADATA_UPDATED"})(H||(H={}));var m;(function(t){t.audio="audio",t.video="video"})(m||(m={}));var c=R(require("@100mslive/hms-video"));var Se={[c.HMSPeerUpdate.PEER_JOINED]:H.PEER_JOINED,[c.HMSPeerUpdate.PEER_LEFT]:H.PEER_LEFT,[c.HMSPeerUpdate.ROLE_UPDATED]:H.ROLE_UPDATED,[c.HMSPeerUpdate.NAME_UPDATED]:H.NAME_UPDATED,[c.HMSPeerUpdate.METADATA_UPDATED]:H.METADATA_UPDATED},le={[c.HMSTrackUpdate.TRACK_ADDED]:H.TRACK_ADDED,[c.HMSTrackUpdate.TRACK_REMOVED]:H.TRACK_REMOVED,[c.HMSTrackUpdate.TRACK_MUTED]:H.TRACK_MUTED,[c.HMSTrackUpdate.TRACK_UNMUTED]:H.TRACK_UNMUTED,[c.HMSTrackUpdate.TRACK_DEGRADED]:H.TRACK_DEGRADED,[c.HMSTrackUpdate.TRACK_RESTORED]:H.TRACK_RESTORED,[c.HMSTrackUpdate.TRACK_DESCRIPTION_CHANGED]:H.TRACK_DESCRIPTION_CHANGED};var d=R(require("reselect"));function G(s,e){let t,i;if(e)for(let o of e.auxiliaryTracks){let r=s[o];Wt(r)&&(i=Z(r)?r:i,t=ee(r)?r:t)}return{video:t,audio:i}}function Z(s){return s&&s.type==="audio"}function ee(s){return s&&s.type==="video"}function Wt(s){return s&&s.source==="screen"}function de(s){return s&&s.source==="audioplaylist"}function te(s){return s&&s.source==="videoplaylist"}function st(s){return s?Boolean(s==null?void 0:s.degraded):!1}function Q(s,e){return e&&s.tracks[e]?s.tracks[e].enabled:!1}function it(s,e){return e&&s.tracks[e]?s.tracks[e].displayEnabled:!1}var D=s=>s.room,ot=s=>s.errors,Qt=(0,d.createSelector)(ot,s=>s.length===0?null:s.at(-1)),Jt=(0,d.createSelector)(D,s=>s.id),v=s=>s.peers,Re=s=>s.messages.byID,De=s=>s.messages.allIDs,g=s=>s.tracks,Ie=s=>s.settings,ue=s=>s.appData,Yt=s=>s.devices,rt=s=>s.speakers,zt=s=>s.connectionQualities,Me=(0,d.createSelector)([D],s=>s&&s.isConnected),Xt=(0,d.createSelector)([Me,D],(s,e)=>s?e.peerCount!==void 0?e.peerCount||1:e.peers.length:Math.max(e.peerCount!==void 0?e.peerCount:e.peers.length-1,0)),j=(0,d.createSelector)([D,v],(s,e)=>s.peers.map(t=>e[t])),Zt=(0,d.createSelector)(g,s=>Object.values(s)),E=(0,d.createSelector)(D,v,(s,e)=>e[s.localPeer]),es=s=>s.preview.peer,F=(0,d.createSelector)(D,s=>s.localPeer),ts=(0,d.createSelector)(E,s=>s==null?void 0:s.name),ss=(0,d.createSelector)(E,s=>s==null?void 0:s.roleName),A=(0,d.createSelector)(E,s=>s==null?void 0:s.audioTrack),N=(0,d.createSelector)(E,s=>s==null?void 0:s.videoTrack),is=(0,d.createSelector)(E,s=>s==null?void 0:s.auxiliaryTracks),ve=(0,d.createSelector)([A,N,is],(s,e,t)=>{let i=[...t];return s&&i.unshift(s),e&&i.unshift(e),i}),os=(0,d.createSelector)(j,s=>s.filter(e=>!e.isLocal)),rs=(0,d.createSelector)(v,rt,(s,e)=>{let t=Object.entries(e).sort((i,o)=>{var n,p;let r=((n=i[1])==null?void 0:n.audioLevel)||0;return(((p=o[1])==null?void 0:p.audioLevel)||0)>r?1:-1});if(t.length>0&&t[0][1].audioLevel&&t[0][1].audioLevel>0){let i=t[0][1].peerID;if(i in s)return s[i]}return null}),as=s=>{let e=E(s);return Q(s,e==null?void 0:e.audioTrack)},pe=s=>{let e=E(s);return Q(s,e==null?void 0:e.videoTrack)},Ee=s=>{let e=E(s);return it(s,e==null?void 0:e.videoTrack)},me=(0,d.createSelector)(E,g,(s,e)=>{let{video:t,audio:i}=G(e,s);return!!(t||i)}),at=(0,d.createSelector)(v,g,(s,e)=>{let t;for(let i in s){let o=s[i],{video:r,audio:a}=G(e,o);if(r)return o;a&&!t&&(t=o)}return t}),ns=(0,d.createSelector)(at,s=>!!s),cs=(0,d.createSelector)(v,g,(s,e)=>{for(let t in s){let i=s[t],{audio:o,video:r}=G(e,i);if(!r&&!!o)return i}}),Ss=(0,d.createSelector)(v,g,(s,e)=>{let t=[],i=[];for(let o in s){let r=s[o],{video:a,audio:n}=G(e,r);a?t.push(r):n&&i.push(r)}return t.concat(i)}),ls=(0,d.createSelector)(v,g,(s,e)=>{for(let t in e){let i=e[t];if(te(i)&&ee(i)&&i.peerId)return s[i.peerId]}}),ds=(0,d.createSelector)(v,g,(s,e)=>{for(let t in e){let i=e[t];if(de(i)&&i.peerId)return s[i.peerId]}}),us=(0,d.createSelector)(Zt,s=>s.filter(st)),be=(0,d.createSelector)(De,s=>s.length),Ms=(0,d.createSelector)(Re,s=>Object.values(s).filter(e=>!e.read).length),se=(0,d.createSelector)(De,Re,(s,e)=>{let t=[];return s.forEach(i=>{t.push(e[i])}),t}),b=(0,d.createSelector)([D],s=>s&&s.roomState),ps=(0,d.createSelector)(b,s=>s===T.Preview),ms=(0,d.createSelector)(D,s=>s.roomState!==T.Disconnected),U=s=>s.roles,Ts=(0,d.createSelector)([U],s=>Object.keys(s)),ie=(0,d.createSelector)([E,U],(s,e)=>(s==null?void 0:s.roleName)?e[s.roleName]:null),Hs=(0,d.createSelector)([ie],s=>{var e;return((e=s==null?void 0:s.subscribeParams)==null?void 0:e.subscribeToRoles)?s.subscribeParams.subscribeToRoles.length>0:!1}),Ce=(0,d.createSelector)(ie,s=>s==null?void 0:s.permissions),fs=(0,d.createSelector)(D,s=>s.recording),gs=(0,d.createSelector)(D,s=>s.rtmp),hs=(0,d.createSelector)(D,s=>s.hls),ys=(0,d.createSelector)(D,s=>s.sessionId),ks=(0,d.createSelector)(D,s=>s.startedAt),Ps=s=>s.sessionMetadata;var Ae=R(require("reselect"));var nt=(s=m.audio)=>e=>e.playlist[s].list,Ne=(s=m.audio)=>e=>e.playlist[s].selection,ct=(s=m.audio)=>e=>e.playlist[s].progress,St=(s=m.audio)=>e=>e.playlist[s].currentTime,lt=(s=m.audio)=>e=>e.playlist[s].playbackRate,dt=(s=m.audio)=>e=>e.playlist[s].volume,ut=(s=m.audio)=>(0,Ae.createSelector)(nt(s),e=>Object.values(e)),Mt=(s=m.audio)=>(0,Ae.createSelector)(nt(s),Ne(s),(e,t)=>{if(!!t.id)return e[t.id]}),xe={selection:Ne(m.audio),progress:ct(m.audio),currentTime:St(m.audio),playbackRate:lt(m.audio),volume:dt(m.audio),list:ut(m.audio),selectedItem:Mt(m.audio)},Le={selection:Ne(m.video),progress:ct(m.video),currentTime:St(m.video),playbackRate:lt(m.video),volume:dt(m.video),list:ut(m.video),selectedItem:Mt(m.video)};var f=R(require("reselect"));function u(s){return e=>t=>s(t,e)}var oe="HMS-Store:",M=class{static v(e,...t){this.log(c.HMSLogLevel.VERBOSE,e,...t)}static d(...e){this.log(c.HMSLogLevel.DEBUG,...e)}static i(...e){this.log(c.HMSLogLevel.INFO,...e)}static w(...e){this.log(c.HMSLogLevel.WARN,...e)}static e(...e){this.log(c.HMSLogLevel.ERROR,...e)}static time(e){this.log(c.HMSLogLevel.TIME,"[HMSPerformanceTiming]",e)}static timeEnd(e){this.log(c.HMSLogLevel.TIMEEND,"[HMSPerformanceTiming]",e,e)}static cleanUp(){performance.clearMarks(),performance.clearMeasures()}static log(e,...t){if(!(this.level.valueOf()>e.valueOf()))switch(e){case c.HMSLogLevel.VERBOSE:{console.log(oe,...t);break}case c.HMSLogLevel.DEBUG:{console.debug(oe,...t);break}case c.HMSLogLevel.INFO:{console.info(oe,...t);break}case c.HMSLogLevel.WARN:{console.warn(oe,...t);break}case c.HMSLogLevel.ERROR:{console.error(oe,...t);break}case c.HMSLogLevel.TIME:{performance.mark(t[1]);break}case c.HMSLogLevel.TIMEEND:{let i=t[0],o=t[1];try{let r=performance.measure(o,o);this.log(c.HMSLogLevel.DEBUG,i,o,r==null?void 0:r.duration),performance.clearMarks(o),performance.clearMeasures(o)}catch(r){this.log(c.HMSLogLevel.DEBUG,i,o,r)}break}}}};M.level=c.HMSLogLevel.VERBOSE;var Oe=(s,e)=>e,re=(s,e)=>e,pt=(s,e)=>e,Rs=(s,e)=>e,C=(0,f.createSelector)([v,Oe],(s,e)=>e?s[e]:null),we=(0,f.createSelector)([g,re],(s,e)=>e?s[e]:null),Ds=(0,f.createSelector)([g,re],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="video"?t:null}),Is=(0,f.createSelector)([g,re],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="audio"?t:null}),vs=(0,f.createSelector)([g,re],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="audio"&&(t==null?void 0:t.source)==="screen"?t:null}),Es=(0,f.createSelector)([g,re],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="video"&&(t==null?void 0:t.source)==="screen"?t:null}),L=u(C),bs=u((0,f.createSelector)([ue,Rs],(s,e)=>{if(!!s)return e?s[e]:s})),Cs=(...s)=>(0,f.createSelector)([ue],e=>{if(!!e){if(s&&s.length>0){let t=e;for(let i of s){if(!i)return t;t=t==null?void 0:t[i]}return t}return e}}),As=u((0,f.createSelector)(C,s=>s==null?void 0:s.name)),ae=u(we),_e=u(Ds),Ns=u(Is),xs=u(vs),Ls=u(Es),mt=u((s,e)=>{let t=C(s,e);if(t&&t.videoTrack&&t.videoTrack!=="")return s.tracks[t.videoTrack]}),Tt=u((s,e)=>{let t=C(s,e);if(t&&t.audioTrack&&t.audioTrack!=="")return s.tracks[t.audioTrack]}),Os=mt,ws=u((s,e)=>{let t=C(s,e);return(t==null?void 0:t.auxiliaryTracks.map(i=>s.tracks[i]))||[]}),Ht=(s,e)=>e?s.speakers[e]:null,_s=u((0,f.createSelector)(Ht,s=>(s==null?void 0:s.audioLevel)||0)),Us=(s,e)=>{let t=Tt(e)(s);return Ht(s,t==null?void 0:t.id)},Ks=u((0,f.createSelector)(Us,s=>(s==null?void 0:s.audioLevel)||0)),Vs=u((s,e)=>{if(e)return s.connectionQualities[e]}),Bs=u((s,e)=>{let t=C(s,e);if(t){let i=t==null?void 0:t.auxiliaryTracks.find(o=>Z(s.tracks[o]));return i?s.tracks[i]:void 0}}),qs=u((0,f.createSelector)(g,C,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return te(o)&&ee(o)});return t?s[t]:void 0})),js=u((0,f.createSelector)(g,C,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return te(o)&&Z(o)});return t?s[t]:void 0})),Fs=u((0,f.createSelector)(g,C,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return de(o)&&Z(o)});return t?s[t]:void 0})),Ue=u((0,f.createSelector)(g,C,(s,e)=>G(s,e))),$s=s=>(0,f.createSelector)(Ue(s),e=>e.video),Ke=s=>(0,f.createSelector)(Ue(s),e=>e.audio),Gs=u((s,e)=>{let t=C(s,e);return Q(s,t==null?void 0:t.audioTrack)}),Ws=u((s,e)=>{let t=C(s,e);return Q(s,t==null?void 0:t.videoTrack)}),Ve=u((s,e)=>{if(e&&s.tracks[e])return s.tracks[e].volume===0}),Qs=u((s,e)=>{let t=C(s,e);return Ve(t==null?void 0:t.audioTrack)(s)}),Js=u((s,e)=>{let t=Ke(e)(s);return Ve(t==null?void 0:t.id)(s)}),Be=u((s,e)=>{let t=we(s,e);if(t){if(t.type!=="audio"){M.w("Please pass audio track here");return}return t.volume}}),Ys=u((s,e)=>{let t=C(s,e);return Be(t==null?void 0:t.audioTrack)(s)}),zs=u((s,e)=>{let t=Ke(e)(s);return Be(t==null?void 0:t.id)(s)}),Xs=u((s,e)=>{let t=we(s,e);if(t){if(t.type!=="video"){M.w("Please pass video track here");return}return t.layer}}),ft=(0,f.createSelector)([se,F,Oe],(s,e,t)=>{if(!!t)return s.filter(i=>{var o;return!i.recipientPeer&&!((o=i.recipientRoles)==null?void 0:o.length)||i.sender&&![e,t].includes(i.sender)?!1:[e,t].includes(i.recipientPeer)})}),gt=(0,f.createSelector)([se,pt],(s,e)=>{if(!!e)return s.filter(t=>{var i,o;return((i=t.recipientRoles)==null?void 0:i.length)?(o=t.recipientRoles)==null?void 0:o.includes(e):!1})}),ht=(0,f.createSelector)(se,s=>s.filter(e=>{var t;return!e.recipientPeer&&!((t=e.recipientRoles)==null?void 0:t.length)})),Zs=(0,f.createSelector)([gt,pt],s=>s?s.filter(e=>!e.read).length:0),ei=(0,f.createSelector)([ft,Oe],s=>s?s.filter(e=>!e.read).length:0),ti=(0,f.createSelector)(ht,s=>s.filter(e=>!e.read).length),si=u(ft),ii=u(gt),oi=u(Zs),ri=u(ei),ai=s=>(0,f.createSelector)([j],e=>e.filter(t=>t.roleName===s)),ni=s=>(0,f.createSelector)([j],e=>e.filter(t=>t.roleName?s.includes(t.roleName):!1)),ci=s=>(0,f.createSelector)(L(s),e=>{try{return(e==null?void 0:e.metadata)&&e.metadata!==""?JSON.parse(e.metadata):{}}catch(t){return console.error("cannot parse peer metadata",t),{}}}),Si=s=>(0,f.createSelector)(L(s),e=>e==null?void 0:e.name);var Te=R(require("reselect"));var li=(0,Te.createSelector)([v,g],(s,e)=>Object.values(s).map(i=>{var o;return{peer:i,isAudioEnabled:i.audioTrack?(o=e[i.audioTrack])==null?void 0:o.enabled:!1}})),di=s=>s.roleChangeRequests[0]||null,ui=(0,Te.createSelector)([di,v,U],(s,e,t)=>s?{requestedBy:s.requestedBy?e[s.requestedBy]:void 0,role:t[s.roleName],token:s.token}:null),Mi=(0,Te.createSelector)([ie],s=>{var o;let e=!1,t=!1,i=!1;return((o=s==null?void 0:s.publishParams)==null?void 0:o.allowed)&&(e=s.publishParams.allowed.includes("video"),t=s.publishParams.allowed.includes("audio"),i=s.publishParams.allowed.includes("screen")),{video:e,audio:t,screen:i}});var V=R(require("reselect"));var pi=s=>(0,V.createSelector)([U],e=>e[s]),mi=(0,V.createSelector)([N,g],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Ti=(0,V.createSelector)([A,g],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Hi=s=>(0,V.createSelector)([mi],e=>e.includes(s)),fi=s=>(0,V.createSelector)([Ti],e=>e.includes(s)),gi=s=>(0,V.createSelector)(j,e=>e.find(s)),hi=s=>(0,V.createSelector)(j,e=>e.filter(s)),yi=s=>(0,V.createSelector)(D,e=>e.joinedAt&&Date.now()-e.joinedAt.getTime()<=s);var qe="hmsNotification",je=class{constructor(e){this.id=0;this.onNotification=(e,t)=>{let i=o=>{if(t){let r;if(Array.isArray(t)?r=t.includes(o.type):r=t===o.type,!r)return}e(o)};return this.eventEmitter.addListener(qe,i),()=>{this.eventEmitter.removeListener(qe,i)}};this.store=e,this.eventEmitter=new yt.EventEmitter2({maxListeners:Object.keys(H).length})}sendPlaylistTrackEnded(e){let t=this.createNotification(H.PLAYLIST_TRACK_ENDED,e,P.INFO);this.emitEvent(t)}sendDeviceChange(e){var i;let t=this.createNotification(H.DEVICE_CHANGE_UPDATE,e,e.error?P.ERROR:P.INFO,`Selected ${e.type} device - ${(i=e.selection)==null?void 0:i.label}`);this.emitEvent(t)}sendLeaveRoom(e){var o;let t=(o=e.requestedBy)==null?void 0:o.name,i=this.createNotification(e.roomEnded||!t?H.ROOM_ENDED:H.REMOVED_FROM_ROOM,e,P.INFO,`${e.roomEnded?"Room ended":"Removed from room"} ${t?`by ${t}`:""}`);this.emitEvent(i)}sendPeerList(e){let t=this.createNotification(H.PEER_LIST,e,P.INFO);this.emitEvent(t)}sendPeerUpdate(e,t){let i=this.store.getState(L(t==null?void 0:t.id))||t,o=Se[e];if(o){let r=this.createNotification(o,i,P.INFO);this.emitEvent(r)}}sendTrackUpdate(e,t){let i=this.store.getState(ae(t)),o=le[e];if(o){let r=this.createNotification(o,i,P.INFO);this.emitEvent(r)}}sendMessageReceived(e){let t=this.createNotification(H.NEW_MESSAGE,e,P.INFO);this.emitEvent(t)}sendError(e){let t=this.createNotification(H.ERROR,e,P.ERROR);this.emitEvent(t)}sendReconnecting(e){let t=this.createNotification(H.RECONNECTING,e,P.ERROR);this.emitEvent(t)}sendReconnected(){let e=this.createNotification(H.RECONNECTED,null,P.INFO);this.emitEvent(e)}sendChangeTrackStateRequest(e){let t=this.createNotification(H.CHANGE_TRACK_STATE_REQUEST,e,P.INFO);this.emitEvent(t)}sendChangeMultiTrackStateRequest(e){let t=this.createNotification(H.CHANGE_MULTI_TRACK_STATE_REQUEST,e,P.INFO);this.emitEvent(t)}emitEvent(e){this.eventEmitter.emit(qe,e)}createNotification(e,t,i,o=""){return this.id++,{id:this.id,type:e,message:o,data:t,severity:i}}};var B=R(require("@100mslive/hms-video"));var He=R(require("@100mslive/hms-video"));function kt(s){return s instanceof He.HMSRemoteAudioTrack||s instanceof He.HMSRemoteVideoTrack}var Pt=(s,e)=>{let t=fe(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];$e(o,r)?(K(o.auxiliaryTracks,r.auxiliaryTracks)&&(r.auxiliaryTracks=o.auxiliaryTracks),Object.assign(o,r)):Ge(o,r)?delete s[i]:We(o,r)&&(s[i]=r)}},Rt=(s,e)=>{let t=fe(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];$e(o,r)?(ki(o,r),Object.assign(o,r)):Ge(o,r)?delete s[i]:We(o,r)&&(s[i]=r)}},Dt=(s,e)=>{s.room.roomState===T.Preview?s.preview.peer?Object.assign(s.preview.peer,e[s.room.localPeer]):s.preview.peer=e[s.room.localPeer]:delete s.preview.peer},Fe=(s,e)=>{let t=fe(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];$e(o,r)?Object.assign(o,r):Ge(o,r)?delete s[i]:We(o,r)&&(s[i]=r)}},It=(s,e,t)=>{let i=t.reduce((r,a)=>(r[a.firstTrackId]=Object.values(e[a.getTrackIDBeingSent()]||{}).sort((n,p)=>!n.rid||!p.rid?0:n.rid<p.rid?-1:1),r),{}),o=fe(Object.keys(s),Object.keys(i));for(let r of o){if(!i[r]){delete s[r];continue}s[r]=i[r]}},ki=(s,e)=>{s.plugins&&K(s.plugins,e.plugins)&&(e.plugins=s.plugins),s.type==="video"&&s.layerDefinitions&&K(s.layerDefinitions,e.layerDefinitions)&&(e.layerDefinitions=s.layerDefinitions)},$e=(s,e)=>s&&e,Ge=(s,e)=>s&&!e,We=(s,e)=>!s&&e,K=(s,e)=>{if(s===e||s.length===0&&(e==null?void 0:e.length)===0)return!0;if(!s||!e||s.length!==e.length)return!1;for(let t=0;t<s.length;t++)if(s[t]!==e[t])return!1;return!0},fe=(s,e)=>{let t=new Set;for(let i of s)t.add(i);for(let i of e)t.add(i);return Array.from(t)};var x=R(require("@100mslive/hms-video"));var h=class{static convertPeer(e){var t,i,o;return{id:e.peerId,name:e.name,roleName:(t=e.role)==null?void 0:t.name,isLocal:e.isLocal,videoTrack:(i=e.videoTrack)==null?void 0:i.trackId,audioTrack:(o=e.audioTrack)==null?void 0:o.trackId,auxiliaryTracks:e.auxiliaryTracks.map(r=>r.trackId),customerUserId:e.customerUserId,metadata:e.metadata,joinedAt:e.joinedAt}}static convertTrack(e,t){let i={id:e.trackId,source:e.source,type:e.type,enabled:e.enabled,displayEnabled:e.enabled,peerId:e.peerId||t};return this.enrichTrack(i,e),i}static enrichTrack(e,t){let i=t.getMediaTrackSettings();t instanceof x.HMSRemoteAudioTrack&&(e.volume=t.getVolume()||0),h.updateDeviceID(e,t),e.type==="video"&&(e.source==="screen"?(e.displaySurface=i.displaySurface,h.enrichScreenTrack(e,t)):e.source==="regular"&&(e.facingMode=i.facingMode),e.height=i.height,e.width=i.width,h.enrichVideoTrack(e,t)),h.enrichPluginsDetails(e,t)}static updateDeviceID(e,t){var i;t instanceof x.HMSLocalVideoTrack||t instanceof x.HMSLocalAudioTrack?e.deviceID=t.settings.deviceId:e.deviceID=(i=t.getMediaTrackSettings())==null?void 0:i.deviceId}static enrichVideoTrack(e,t){t instanceof x.HMSRemoteVideoTrack&&(e.layer=t.getLayer(),e.preferredLayer=t.getPreferredLayer(),e.degraded=t.degraded),(t instanceof x.HMSRemoteVideoTrack||t instanceof x.HMSLocalVideoTrack)&&(K(t.getSimulcastDefinitions(),e.layerDefinitions)||(e.layerDefinitions=t.getSimulcastDefinitions()))}static enrichScreenTrack(e,t){var i,o;if(t instanceof x.HMSLocalVideoTrack){let r=(i=t.getCaptureHandle)==null?void 0:i.call(t);(r==null?void 0:r.handle)!==((o=e.captureHandle)==null?void 0:o.handle)&&(e.captureHandle=r),t.isCurrentTab&&(e.displaySurface="selfBrowser")}}static enrichPluginsDetails(e,t){(t instanceof x.HMSLocalVideoTrack||t instanceof x.HMSLocalAudioTrack)&&(K(t.getPlugins(),e.plugins)||(e.plugins=t.getPlugins()))}static convertRoom(e){var r,a;let{recording:t,rtmp:i,hls:o}=h.convertRecordingStreamingState(e==null?void 0:e.recording,e==null?void 0:e.rtmp,e==null?void 0:e.hls);return{id:e.id,name:e.name,localPeer:(a=(r=e.localPeer)==null?void 0:r.peerId)!=null?a:"",recording:t,rtmp:i,hls:o,sessionId:e.sessionId,startedAt:e.startedAt,joinedAt:e.joinedAt,peerCount:e.peerCount}}static convertMessage(e){var t,i,o,r,a,n,p;return{sender:(t=e.sender)==null?void 0:t.peerId,senderName:(i=e.sender)==null?void 0:i.name,senderRole:(r=(o=e.sender)==null?void 0:o.role)==null?void 0:r.name,senderUserId:(a=e.sender)==null?void 0:a.customerUserId,recipientPeer:(n=e.recipientPeer)==null?void 0:n.peerId,recipientRoles:(p=e.recipientRoles)==null?void 0:p.map(I=>I.name),time:e.time,type:e.type,message:e.message}}static convertRoles(e){let t={};return e&&e.forEach(i=>{t[i.name]=i}),t}static convertRoleChangeRequest(e){var t;return{requestedBy:(t=e.requestedBy)==null?void 0:t.peerId,roleName:e.role.name,token:e.token}}static convertException(e){return{code:e.code,action:e.action,name:e.name,message:e.message,description:e.description,isTerminal:e.isTerminal,nativeError:e.nativeError,timestamp:new Date}}static convertDeviceChangeUpdate(e){let t={devices:e.devices,selection:e.selection,type:e.type};return e.error&&(t.error=this.convertException(e.error)),t}static convertPlaylist(e){let t=this.getConvertedPlaylistType(e,m.audio),i=this.getConvertedPlaylistType(e,m.video);return{audio:t,video:i}}static convertPlaylistItem(e,t){let i=t.type,o=e.getCurrentSelection(i),r=e.isPlaying(i),a=t.url===(o==null?void 0:o.url);return W(_({},t),{type:t.type,selected:a,playing:a&&r})}static getConvertedPlaylistType(e,t){let i={},o=e.getCurrentSelection(t),r=e.getCurrentProgress(t),a=e.getVolume(t),n=e.getList(t),p=e.getCurrentIndex(t);return e.getList(t).forEach(I=>{i[I.id]=h.convertPlaylistItem(e,I)}),{list:i,selection:{id:o==null?void 0:o.id,hasPrevious:p>0,hasNext:p<n.length-1},progress:r,volume:a,currentTime:e.getCurrentTime(t),playbackRate:e.getPlaybackRate(t)}}static convertRecordingStreamingState(e,t,i){var o;return{recording:{browser:_({running:!1},e==null?void 0:e.browser),server:_({running:!1},e==null?void 0:e.server),hls:_({running:!1},e==null?void 0:e.hls)},rtmp:_({running:!1},t),hls:{variants:((o=i==null?void 0:i.variants)==null?void 0:o.map(r=>r))||[],running:!!(i==null?void 0:i.running),error:i==null?void 0:i.error}}}};var ge=class{constructor(e,t,i,o){this.playlistManager=e;this.syncPlaylistState=i;this.store=o;this.type=t}play(e){return S(this,null,function*(){if(!e){M.w("Please pass id to play");return}yield this.playlistManager.setEnabled(!0,{id:e,type:this.type})})}pause(){return S(this,null,function*(){let e=this.type===m.audio?xe:Le,t=this.store.getState(e.selection);if(!t.id){M.w("No item is currently playing to pause");return}yield this.playlistManager.setEnabled(!1,{id:t.id,type:this.type})})}playNext(){return S(this,null,function*(){yield this.playlistManager.playNext(this.type)})}playPrevious(){return S(this,null,function*(){yield this.playlistManager.playPrevious(this.type)})}seek(e){this.playlistManager.seek(e,this.type),this.syncPlaylistState(`seekOn${this.type}Playlist`)}seekTo(e){this.playlistManager.seekTo(e,this.type),this.syncPlaylistState(`seekToOn${this.type}Playlist`)}setVolume(e){this.playlistManager.setVolume(e,this.type),this.syncPlaylistState(`setVolumeOn${this.type}Playlist`)}setList(e){this.playlistManager.setList(e),this.syncPlaylistState(`setListOn${this.type}Playlist`)}stop(){return S(this,null,function*(){yield this.playlistManager.stop(this.type),this.syncPlaylistState(`stop${this.type}Playlist`)})}setIsAutoplayOn(e){this.playlistManager.setIsAutoplayOn(this.type,e)}setPlaybackRate(e){this.playlistManager.setPlaybackRate(this.type,e),this.syncPlaylistState(`set${this.type}PlaybackRate`)}removeItem(e){return S(this,null,function*(){let t=yield this.playlistManager.removeItem(e,this.type);return t&&this.syncPlaylistState(`remove${this.type}PlaylistItem`),t})}clearList(){return S(this,null,function*(){yield this.playlistManager.clearList(this.type),this.syncPlaylistState(`clear${this.type}Playlist`)})}};var Qe=class{constructor(e,t,i){this.hmsSDKTracks={};this.hmsSDKPeers={};this.isRoomJoinCalled=!1;this.ignoredMessageTypes=[];this.setProgress=({type:e,progress:t})=>{this.setState(i=>{i.playlist[e].progress=t,i.playlist[e].currentTime=this.sdk.getPlaylistManager().getCurrentTime(e)},"playlistProgress")};this.syncPlaylistState=e=>{this.setState(t=>{Object.assign(t.playlist,h.convertPlaylist(this.sdk.getPlaylistManager()))},e)};this.sendPeerUpdateNotification=(e,t)=>{let i=this.store.getState(L(t.peerId)),o=Se[e]||"peerUpdate";this.syncRoomState(o),i||(i=this.store.getState(L(t.peerId))),this.hmsNotifications.sendPeerUpdate(e,i)};this.setState=(e,t)=>this.store.namedSetState(e,t);this.store=e,this.sdk=t,this.hmsNotifications=i}refreshDevices(){return S(this,null,function*(){yield this.sdk.refreshDevices()})}unblockAudio(){return S(this,null,function*(){yield this.sdk.getAudioOutput().unblockAutoplay()})}setVolume(e,t){return S(this,null,function*(){t?yield this.setTrackVolume(e,t):(yield this.sdk.getAudioOutput().setVolume(e),this.syncRoomState("setOutputVolume"))})}setAudioOutputDevice(e){return S(this,null,function*(){(yield this.sdk.getAudioOutput().setDevice(e))&&this.setState(i=>{i.settings.audioOutputDeviceId=e},"setAudioOutputDevice")})}setPreferredLayer(e,t){return S(this,null,function*(){var o;let i=this.hmsSDKTracks[e];if(i)if(i instanceof B.HMSRemoteVideoTrack){if(t===B.HMSSimulcastLayer.NONE){M.w(`layer ${B.HMSSimulcastLayer.NONE} will be ignored`);return}if(((o=this.store.getState(_e(e)))==null?void 0:o.preferredLayer)===t){M.w(`preferred layer is already ${t}`);return}this.setState(a=>{let n=a.tracks[e];n&&(n.preferredLayer=t)},"setPreferredLayer"),yield i.setPreferredLayer(t)}else M.w(`track ${e} is not a remote video track`);else this.logPossibleInconsistency(`track ${e} not present, unable to set preffer layer`)})}preview(e){return S(this,null,function*(){if(this.isRoomJoinCalled){this.logPossibleInconsistency("attempting to call preview after join was called");return}let t=this.store.getState(b);if(t===T.Preview||t===T.Connecting){this.logPossibleInconsistency("attempting to call preview while room is in preview/connecting");return}try{this.setState(i=>{i.room.roomState=T.Connecting},"connecting"),yield this.sdkPreviewWithListeners(e)}catch(i){throw M.e("Cannot show preview. Failed to connect to room - ",i),i}})}join(e){return S(this,null,function*(){if(this.isRoomJoinCalled){this.logPossibleInconsistency("room join is called again");return}try{this.isRoomJoinCalled=!0,this.setState(t=>{t.room.roomState=T.Connecting},"join"),yield this.sdkJoinWithListeners(e)}catch(t){throw this.isRoomJoinCalled=!1,M.e("Failed to connect to room - ",t),t}})}leave(){return S(this,null,function*(){let e=this.store.getState(Me),t=!0;e||(t=!1,this.logPossibleInconsistency("room leave is called when no room is connected"));let i=this.store.getState(b);return this.setState(o=>{o.room.roomState=T.Disconnecting},"leaving"),this.sdk.leave(t).then(()=>{this.resetState("leave"),M.i("left room")}).catch(o=>{M.e("error in leaving room - ",o),this.setState(r=>{r.room.roomState=i},"revertLeave")})})}setScreenShareEnabled(e,t){return S(this,null,function*(){typeof t=="boolean"&&(t={audioOnly:t});try{e?yield this.startScreenShare(t):yield this.stopScreenShare()}catch(i){throw this.hmsNotifications.sendError(h.convertException(i)),i}})}addTrack(e,t="regular"){return S(this,null,function*(){yield this.sdk.addTrack(e,t),this.syncRoomState("addTrack")})}removeTrack(e){return S(this,null,function*(){yield this.sdk.removeTrack(e),this.syncRoomState("removeTrack")})}setLocalAudioEnabled(e){return S(this,null,function*(){let t=this.store.getState(A);t&&(yield this.setEnabledTrack(t,e))})}setLocalVideoEnabled(e){return S(this,null,function*(){let t=this.store.getState(N);t&&(yield this.setEnabledTrack(t,e))})}setEnabledTrack(e,t){return S(this,null,function*(){var r;if(((r=this.store.getState().tracks[e])==null?void 0:r.enabled)===t){this.logPossibleInconsistency(`local track[${e}] enabled state - ${t}`);return}this.setState(a=>{a.tracks[e]?a.tracks[e].displayEnabled=t:this.logPossibleInconsistency("track id not found for setEnabled")},"displayEnabled");try{yield this.setEnabledSDKTrack(e,t),this.syncRoomState("setEnabled")}catch(a){throw this.setState(n=>{n.tracks[e].displayEnabled=!t},"rollbackDisplayEnabled"),this.hmsNotifications.sendError(h.convertException(a)),a}let o=t?c.HMSTrackUpdate.TRACK_UNMUTED:c.HMSTrackUpdate.TRACK_MUTED;this.hmsNotifications.sendTrackUpdate(o,e)})}setAudioSettings(e){return S(this,null,function*(){let t=this.store.getState(A);t&&(yield this.setSDKLocalAudioTrackSettings(t,e),this.syncRoomState("setAudioSettings"))})}setVideoSettings(e){return S(this,null,function*(){let t=this.store.getState(N);t&&(yield this.setSDKLocalVideoTrackSettings(t,e),this.syncRoomState("setVideoSettings"))})}sendMessage(e){this.sendBroadcastMessage(e)}sendBroadcastMessage(e,t){return S(this,null,function*(){let i=yield this.sdk.sendBroadcastMessage(e,t);this.updateMessageInStore(i,{message:e,type:t})})}sendGroupMessage(e,t,i){return S(this,null,function*(){let o=this.store.getState(U),r=t.map(n=>o[n]),a=yield this.sdk.sendGroupMessage(e,r,i);this.updateMessageInStore(a,{message:e,recipientRoles:t,type:i})})}sendDirectMessage(e,t,i){return S(this,null,function*(){let o=this.hmsSDKPeers[t],r=yield this.sdk.sendDirectMessage(e,o,i);this.updateMessageInStore(r,{message:e,recipientPeer:o.peerId,type:i})})}updateMessageInStore(e,t){if(!e)throw M.w("sendMessage","Failed to send message",t),Error(`sendMessage Failed - ${JSON.stringify(t)}`);let i=h.convertMessage(e);return i.read=!0,i.senderName="You",i.ignored=this.ignoredMessageTypes.includes(i.type),this.putMessageInStore(i),i}setMessageRead(e,t){this.setState(i=>{t?i.messages.byID[t]?i.messages.byID[t].read=e:this.logPossibleInconsistency("no message with id is found"):i.messages.allIDs.forEach(o=>{i.messages.byID[o].read=e})},"setMessageRead")}attachVideo(e,t){return S(this,null,function*(){if(this.localAndVideoUnmuting(e))return new Promise(i=>{let o=this.store.subscribe(r=>S(this,null,function*(){r&&(yield this.attachVideoInternal(e,t),o(),i())}),pe)});yield this.attachVideoInternal(e,t)})}detachVideo(e,t){return S(this,null,function*(){let i=this.hmsSDKTracks[e];(i==null?void 0:i.type)==="video"?i.removeSink(t):(t&&(t.srcObject=null),this.logPossibleInconsistency("no video track found to remove sink"))})}addPluginToVideoTrack(e,t){return S(this,null,function*(){return this.addRemoveVideoPlugin(e,"add",t)})}addPluginToAudioTrack(e){return S(this,null,function*(){return this.addRemoveAudioPlugin(e,"add")})}validateVideoPluginSupport(e){let t={};if(t.isSupported=!1,!e)return M.w("no plugin passed in for checking support"),t.errMsg="no plugin passed in for checking support",t;let i=this.store.getState(N);if(!i)return M.w("video Track not added to local peer yet"),t.errMsg="call this function only after local peer has video track",t;let o=this.hmsSDKTracks[i];return o?t=o.validatePlugin(e):(M.w(`track ${i} not present, unable to validate plugin`),t.errMsg=`track ${i} not present, unable to validate plugin`),t}validateAudioPluginSupport(e){let t={};if(t.isSupported=!1,!e)return M.w('no plugin passed in for checking support"'),t.errMsg='no plugin passed in for checking support"',t;let i=this.store.getState(A);if(!i)return M.w("audio track not added to local peer yet"),t.errMsg="call this function only after local peer has audio track",t;let o=this.hmsSDKTracks[i];return o?t=o.validatePlugin(e):(M.w(`track ${i} not present, unable to validate plugin`),t.errMsg=`track ${i} not present, unable to validate plugin`),t}removePluginFromVideoTrack(e){return S(this,null,function*(){return this.addRemoveVideoPlugin(e,"remove")})}removePluginFromAudioTrack(e){return S(this,null,function*(){return this.addRemoveAudioPlugin(e,"remove")})}changeRole(e,t,i=!1){return S(this,null,function*(){let o=this.hmsSDKPeers[e];if(!o){this.logPossibleInconsistency(`Unknown peer ID given ${e} for changerole`);return}yield this.sdk.changeRoleOfPeer(o,t,i)})}changeRoleOfPeer(e,t,i=!1){return S(this,null,function*(){let o=this.hmsSDKPeers[e];if(!o){this.logPossibleInconsistency(`Unknown peer ID given ${e} for changerole`);return}yield this.sdk.changeRoleOfPeer(o,t,i)})}changeRoleOfPeersWithRoles(e,t){return S(this,null,function*(){let i=this.sdk.getRoles().filter(o=>e.includes(o.name));yield this.sdk.changeRoleOfPeersWithRoles(i,t)})}acceptChangeRole(e){return S(this,null,function*(){let t=e.requestedBy?this.hmsSDKPeers[e.requestedBy.id]:void 0;t||M.w(`peer for which role change is requested no longer available - ${e.requestedBy}`);let i={requestedBy:t,role:e.role,token:e.token};yield this.sdk.acceptChangeRole(i),this.removeRoleChangeRequest(e)})}initAppData(e){this.setState(t=>{t.appData=e},"initAppData")}setAppData(e,t,i){let o=(t==null?void 0:t.constructor.name)==="Object";this.setState(r=>{if(r.appData)i&&o?Object.assign(r.appData[e],t):r.appData[e]=t;else{let a={[e]:t};r.appData=a}},`setAppData-${e}`)}rejectChangeRole(e){this.removeRoleChangeRequest(e)}endRoom(e,t){return S(this,null,function*(){let i=this.store.getState(Ce);if(!(i==null?void 0:i.endRoom)){M.w("You are not allowed to perform this action - endRoom");return}let o=this.store.getState(b);this.setState(r=>{r.room.roomState=T.Disconnecting},"endingRoom");try{yield this.sdk.endRoom(e,t),this.resetState("endRoom")}catch(r){M.e("error in ending room - ",r),this.setState(a=>{a.room.roomState=o},"revertEndRoom")}})}removePeer(e,t){return S(this,null,function*(){let i=this.hmsSDKPeers[e];if(i&&!i.isLocal)yield this.sdk.removePeer(i,t);else{this.logPossibleInconsistency(`No remote peer found for peerID - ${e}`);return}})}startRTMPOrRecording(e){return S(this,null,function*(){yield this.sdk.startRTMPOrRecording(e)})}stopRTMPAndRecording(){return S(this,null,function*(){yield this.sdk.stopRTMPAndRecording()})}startHLSStreaming(e){return S(this,null,function*(){yield this.sdk.startHLSStreaming(e)})}stopHLSStreaming(e){return S(this,null,function*(){yield this.sdk.stopHLSStreaming(e)})}sendHLSTimedMetadata(e){return S(this,null,function*(){yield this.sdk.sendHLSTimedMetadata(e)})}changeName(e){return S(this,null,function*(){yield this.sdk.changeName(e)})}changeMetadata(e){return S(this,null,function*(){typeof e!="string"&&(e=JSON.stringify(e)),yield this.sdk.changeMetadata(e)})}setSessionMetadata(e){return S(this,null,function*(){yield this.sdk.setSessionMetadata(e),this.setState(t=>{t.sessionMetadata=e},"setSessionMetadata")})}populateSessionMetadata(){return S(this,null,function*(){let e=yield this.sdk.getSessionMetadata();this.setState(t=>{t.sessionMetadata=e},"populateSessionMetadata")})}setRemoteTrackEnabled(e,t){return S(this,null,function*(){if(typeof e=="string"){let i=this.hmsSDKTracks[e];i&&kt(i)?yield this.sdk.changeTrackState(i,t):this.logPossibleInconsistency(`No remote track with ID ${e} found for change track state`)}else Array.isArray(e)&&e.forEach(i=>this.setRemoteTrackEnabled(i,t))})}setRemoteTracksEnabled(e){return S(this,null,function*(){let t={enabled:e.enabled,type:e.type,source:e.source};if(e.roles){let i=this.store.getState(U);t.roles=e.roles.map(o=>i[o])}yield this.sdk.changeMultiTrackState(t)})}setLogLevel(e){M.level=e,this.sdk.setLogLevel(e)}setFrameworkInfo(e){this.sdk.setFrameworkInfo(e)}ignoreMessageTypes(e,t=!1){if(t)this.ignoredMessageTypes=e;else for(let i of e)this.ignoredMessageTypes.includes(i)||this.ignoredMessageTypes.push(i)}resetState(e="resetState"){this.isRoomJoinCalled=!1,this.hmsSDKTracks={},M.cleanUp(),this.setState(t=>{Object.assign(t,z())},e)}sdkJoinWithListeners(e){return S(this,null,function*(){yield this.sdk.join(e,{onJoin:this.onJoin.bind(this),onRoomUpdate:this.onRoomUpdate.bind(this),onPeerUpdate:this.onPeerUpdate.bind(this),onTrackUpdate:this.onTrackUpdate.bind(this),onMessageReceived:this.onMessageReceived.bind(this),onError:this.onError.bind(this),onReconnected:this.onReconnected.bind(this),onReconnecting:this.onReconnecting.bind(this),onRoleChangeRequest:this.onRoleChangeRequest.bind(this),onRoleUpdate:this.onRoleUpdate.bind(this),onDeviceChange:this.onDeviceChange.bind(this),onChangeTrackStateRequest:this.onChangeTrackStateRequest.bind(this),onChangeMultiTrackStateRequest:this.onChangeMultiTrackStateRequest.bind(this),onRemovedFromRoom:this.onRemovedFromRoom.bind(this),onNetworkQuality:this.onNetworkQuality.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)}),this.sdk.addConnectionQualityListener({onConnectionQualityUpdate:this.onConnectionQualityUpdate.bind(this)})})}onRemovedFromRoom(e){var o;let t=this.store.getState(L((o=e.requestedBy)==null?void 0:o.peerId));this.hmsNotifications.sendLeaveRoom(W(_({},e),{requestedBy:t||void 0}));let i=e.roomEnded||!t?"roomEnded":"removedFromRoom";M.i(`resetting state after peer removed ${i}`,e),this.resetState(i)}onDeviceChange(e){let t=e.devices;if(!t)return;let i=this.store.getState(E);if(this.setState(o=>{K(o.devices.audioInput,t.audioInput)||(o.devices.audioInput=t.audioInput),K(o.devices.videoInput,t.videoInput)||(o.devices.videoInput=t.videoInput),K(o.devices.audioOutput,t.audioOutput)||(o.devices.audioOutput=t.audioOutput),this.hmsSDKPeers[i==null?void 0:i.id]&&Object.assign(o.settings,this.getMediaSettings(this.hmsSDKPeers[i==null?void 0:i.id]))},"deviceChange"),e.selection){let o=h.convertDeviceChangeUpdate(e);this.hmsNotifications.sendDeviceChange(o)}}sdkPreviewWithListeners(e){return S(this,null,function*(){yield this.sdk.preview(e,{onPreview:this.onPreview.bind(this),onError:this.onError.bind(this),onReconnected:this.onReconnected.bind(this),onReconnecting:this.onReconnecting.bind(this),onDeviceChange:this.onDeviceChange.bind(this),onRoomUpdate:this.onRoomUpdate.bind(this),onPeerUpdate:this.onPeerUpdate.bind(this),onNetworkQuality:this.onNetworkQuality.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)})})}onNetworkQuality(e){this.setState(t=>{var o;let i=t.room.localPeer||((o=this.sdk.getLocalPeer())==null?void 0:o.peerId);i&&(t.connectionQualities[i]={peerID:i,downlinkQuality:e})},"ConnectionQuality")}startScreenShare(e){return S(this,null,function*(){this.store.getState(me)?this.logPossibleInconsistency("start screenshare is called while it's on"):(yield this.sdk.startScreenShare(()=>this.syncRoomState("screenshareStopped"),e),this.syncRoomState("startScreenShare"))})}stopScreenShare(){return S(this,null,function*(){this.store.getState(me)?(yield this.sdk.stopScreenShare(),this.syncRoomState("stopScreenShare")):this.logPossibleInconsistency("stop screenshare is called while it's not on")})}attachVideoInternal(e,t){return S(this,null,function*(){let i=this.hmsSDKTracks[e];i&&i.type==="video"?yield i.addSink(t):this.logPossibleInconsistency("no video track found to add sink")})}syncRoomState(e){e=`${e}_fullSync`,M.time(`store-sync-${e}`);let t={},i=[],o={},r={},a={},n=this.sdk.getPeers();for(let y of n){let w=h.convertPeer(y);t[w.id]=w,i.push(w.id),this.hmsSDKPeers[w.id]=y;let J=[y.audioTrack,y.videoTrack,...y.auxiliaryTracks];for(let ce of J){if(!ce)continue;let ze=h.convertTrack(ce);o[ze.id]=ze,r[ce.trackId]=ce}w.isLocal&&Object.assign(a,this.getMediaSettings(y))}let p=this.sdk.getRecordingState(),I=this.sdk.getRTMPState(),$=this.sdk.getHLSState();this.setState(y=>{y.room.peers=i;let w=y.peers,J=y.tracks;Pt(w,t),Rt(J,o),Object.assign(y.settings,a),this.hmsSDKTracks=r,Object.assign(y.roles,h.convertRoles(this.sdk.getRoles())),Object.assign(y.playlist,h.convertPlaylist(this.sdk.getPlaylistManager())),Object.assign(y.room,h.convertRecordingStreamingState(p,I,$)),Dt(y,w)},e),M.timeEnd(`store-sync-${e}`)}onPreview(e){this.setState(t=>{Object.assign(t.room,h.convertRoom(e)),t.room.roomState=T.Preview},"previewStart"),this.syncRoomState("previewSync")}onJoin(e){let t=this.sdk.getPlaylistManager();this.audioPlaylist=new ge(t,m.audio,this.syncPlaylistState.bind(this),this.store),this.videoPlaylist=new ge(t,m.video,this.syncRoomState.bind(this),this.store),this.syncRoomState("joinSync"),this.setState(i=>{Object.assign(i.room,h.convertRoom(e)),i.room.isConnected=!0,i.room.roomState=T.Connected},"joined"),t.onProgress(this.setProgress),t.onNewTrackStart(i=>{this.syncPlaylistState(`${i.type}PlaylistUpdate`)}),t.onPlaylistEnded(i=>{this.syncPlaylistState(`${i}PlaylistEnded`)}),t.onCurrentTrackEnded(i=>{this.hmsNotifications.sendPlaylistTrackEnded(h.convertPlaylistItem(t,i)),this.syncPlaylistState(`${i.type}PlaylistItemEnded`)})}onRoomUpdate(e,t){this.setState(i=>{Object.assign(i.room,h.convertRoom(t))},e)}onPeerUpdate(e,t){if(![c.HMSPeerUpdate.BECAME_DOMINANT_SPEAKER,c.HMSPeerUpdate.RESIGNED_DOMINANT_SPEAKER].includes(e)){if(Array.isArray(t)){this.syncRoomState("peersJoined");let i=[];for(let o of t){let r=this.store.getState(L(o.peerId));r&&i.push(r)}this.hmsNotifications.sendPeerList(i);return}this.sendPeerUpdateNotification(e,t)}}onTrackUpdate(e,t,i){if(e===c.HMSTrackUpdate.TRACK_REMOVED)this.hmsNotifications.sendTrackUpdate(e,t.trackId),this.handleTrackRemove(t,i);else{let o=le[e]||"trackUpdate";this.syncRoomState(o),this.hmsNotifications.sendTrackUpdate(e,t.trackId)}}onMessageReceived(e){let t=h.convertMessage(e);t.read=!1,t.ignored=this.ignoredMessageTypes.includes(t.type),this.putMessageInStore(t),this.hmsNotifications.sendMessageReceived(t)}putMessageInStore(e){e.ignored||this.setState(t=>{e.id=String(this.store.getState(be)+1),t.messages.byID[e.id]=e,t.messages.allIDs.push(e.id)},"newMessage")}onAudioLevelUpdate(e){this.setState(t=>{let i={};e.forEach(r=>{if(!r.track||!r.peer)return;let a=r.track.trackId;i[a]=r.audioLevel,t.speakers[a]||(t.speakers[a]={audioLevel:r.audioLevel,peerID:r.peer.peerId,trackID:a})});let o=Object.entries(t.speakers);for(let[r,a]of o)a.audioLevel=i[r]||0,a.audioLevel===0&&delete t.speakers[r]},"audioLevel")}onConnectionQualityUpdate(e){this.setState(t=>{let i=new Set;e.forEach(r=>{let a=r.peerID;!a||(i.add(a),t.connectionQualities[a]?Object.assign(t.connectionQualities[a],r):t.connectionQualities[a]=r)});let o=Object.keys(t.connectionQualities);for(let r of o)i.has(r)||delete t.connectionQualities[r]},"connectionQuality")}onChangeTrackStateRequest(e){var r;let t=this.store.getState(L((r=e.requestedBy)==null?void 0:r.peerId)),i=this.getStoreLocalTrackIDfromSDKTrack(e.track),o=this.store.getState(ae(i));if(!o)return this.logPossibleInconsistency(`Not found track for which track state change was requested, ${e.track}`);e.enabled||this.syncRoomState("changeTrackStateRequest"),this.hmsNotifications.sendChangeTrackStateRequest({requestedBy:t||void 0,track:o,enabled:e.enabled})}onChangeMultiTrackStateRequest(e){var r;let t=this.store.getState(L((r=e.requestedBy)==null?void 0:r.peerId));e.enabled||this.syncRoomState("changeMultiTrackStateRequest");let i=[],o=this.store.getState(g);for(let a of e.tracks){let n=this.getStoreLocalTrackIDfromSDKTrack(a);n&&o[n]&&i.push(o[n])}this.hmsNotifications.sendChangeMultiTrackStateRequest({requestedBy:t||void 0,tracks:i,enabled:e.enabled,type:e.type,source:e.source})}onReconnected(){this.syncRoomState("reconnectedSync"),this.hmsNotifications.sendReconnected(),this.setState(e=>{e.room.roomState=e.room.isConnected?T.Connected:T.Preview},"reconnected")}onReconnecting(e){let t=h.convertException(e);M.e("Reconnection: received error from sdk",t),this.hmsNotifications.sendReconnecting(t),this.setState(i=>{i.room.roomState=T.Reconnecting,i.errors.push(t)},"reconnecting")}onError(e){let t=h.convertException(e);t.isTerminal?(this.leave().then(()=>M.e("error from SDK, left room.")),this.setState(i=>{i.room.roomState=T.Failed,i.errors.push(t)},"errorTerminal")):this.store.getState().errors.length<50&&this.setState(o=>{o.errors.push(t)},"error"),this.syncRoomState("errorSync"),this.hmsNotifications.sendError(t),M.e("received error from sdk",t instanceof B.HMSException?`${t}`:t)}handleTrackRemove(e,t){this.setState(i=>{let o=i.peers[t.peerId],r=i.tracks,a=e.trackId;if(this.isSameStoreSDKTrack(a,o==null?void 0:o.audioTrack))o==null||delete o.audioTrack;else if(this.isSameStoreSDKTrack(a,o==null?void 0:o.videoTrack))o==null||delete o.videoTrack;else{let n=o==null?void 0:o.auxiliaryTracks.indexOf(a);n>-1&&this.isSameStoreSDKTrack(a,o==null?void 0:o.auxiliaryTracks[n])&&(o==null||o.auxiliaryTracks.splice(n,1))}delete r[a],delete this.hmsSDKTracks[a]},"trackRemoved")}setEnabledSDKTrack(e,t){return S(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setEnabled(t):this.logPossibleInconsistency(`track ${e} not present, unable to enabled/disable`)})}setSDKLocalVideoTrackSettings(e,t){return S(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setSettings(t):this.logPossibleInconsistency(`local track ${e} not present, unable to set settings`)})}setSDKLocalAudioTrackSettings(e,t){return S(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setSettings(t):this.logPossibleInconsistency(`local track ${e} not present, unable to set settings`)})}getMediaSettings(e){var r;let t=this.store.getState(Ie),i=e.audioTrack,o=e.videoTrack;return{audioInputDeviceId:(i==null?void 0:i.settings.deviceId)||t.audioInputDeviceId,videoInputDeviceId:(o==null?void 0:o.settings.deviceId)||t.videoInputDeviceId,audioOutputDeviceId:(r=this.sdk.getAudioOutput().getDevice())==null?void 0:r.deviceId}}setTrackVolume(e,t){return S(this,null,function*(){let i=this.hmsSDKTracks[t];i?i instanceof B.HMSAudioTrack?(yield i.setVolume(e),this.setState(o=>{let r=o.tracks[t];r&&r.type==="audio"&&(r.volume=e)},"trackVolume")):M.w(`track ${t} is not an audio track`):this.logPossibleInconsistency(`track ${t} not present, unable to set volume`)})}localAndVideoUnmuting(e){if(this.store.getState(E).videoTrack!==e)return!1;let i=this.store.getState(Ee),o=this.store.getState(pe);return i&&!o}logPossibleInconsistency(e){M.w("possible inconsistency detected - ",e)}addRemoveVideoPlugin(e,t,i){return S(this,null,function*(){if(!e){M.w("Invalid plugin received in store");return}let o=this.store.getState(N);if(o){let r=this.hmsSDKTracks[o];r?(t==="add"?yield r.addPlugin(e,i):t==="remove"&&(yield r.removePlugin(e)),this.syncRoomState(`${t}VideoPlugin`)):this.logPossibleInconsistency(`track ${o} not present, unable to remove plugin`)}})}addRemoveAudioPlugin(e,t){return S(this,null,function*(){if(!e){M.w("Invalid plugin received in store");return}let i=this.store.getState(A);if(i){let o=this.hmsSDKTracks[i];o?(t==="add"?yield o.addPlugin(e):t==="remove"&&(yield o.removePlugin(e)),this.syncRoomState(`${t}AudioPlugin`)):this.logPossibleInconsistency(`track ${i} not present, unable to remove plugin`)}})}isSameStoreSDKTrack(e,t){var i;return t?((i=this.hmsSDKTracks[t])==null?void 0:i.trackId)===e:!1}onRoleChangeRequest(e){this.setState(t=>{t.roleChangeRequests.length===0&&t.roleChangeRequests.push(h.convertRoleChangeRequest(e))},"roleChangeRequest")}removeRoleChangeRequest(e){this.setState(t=>{let i=t.roleChangeRequests.findIndex(o=>o.token===e.token);i!==-1&&t.roleChangeRequests.splice(i,1)},"removeRoleChangeRequest")}onRoleUpdate(){this.syncRoomState("roleUpdate")}getStoreLocalTrackIDfromSDKTrack(e){return this.store.getState(ve).find(i=>this.hmsSDKTracks[i].trackId===e.trackId)}};var vt=R(require("@100mslive/hms-video")),he=s=>vt.isBrowser?`${s} ${document.title}`:s;var ye=class{constructor(e,t,i){this.store=e,this.actions=t,this.notifications=i}getStore(){return this.store}getActions(){return this.actions}getNotifications(){return{onNotification:this.notifications.onNotification}}};var Et=(s,e,t)=>{let i;t.getState(b)===T.Connected&&(i=bt(s,e,t)),t.subscribe(o=>{[T.Connected,T.Reconnecting].includes(o)?i||(i=bt(s,e,t)):[T.Disconnected,T.Failed].includes(o)&&i&&(Di(e,o),i(),i=void 0)},b)},bt=(s,e,t)=>{var r,a;let i=Pi(t,e);(r=s.getWebrtcInternals())==null||r.start();let o=(a=s.getWebrtcInternals())==null?void 0:a.onStatsChange(n=>Ri(e,n,t,s));return()=>{i(),o&&o()}},Pi=(s,e)=>{let t,i,o;return s.getState(F)?e.namedSetState(r=>{r.localPeer.id=s.getState(F)},"localpeer-id"):t=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.id=r},"localpeer-id")},F),s.getState(N)?e.namedSetState(r=>{r.localPeer.videoTrack=s.getState(N)},"localpeer-videotrack-id"):i=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.videoTrack=r},"localpeer-videotrack-id")},N),s.getState(A)?e.namedSetState(r=>{r.localPeer.audioTrack=s.getState(A)},"localpeer-audiotrack-id"):o=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.audioTrack=r},"localpeer-audiotrack-id")},A),()=>{t==null||t(),i==null||i(),o==null||o()}},Ri=(s,e,t,i)=>{let o=t.getState(g);s.namedSetState(r=>{let a=t.getState(F),n={},p=Object.keys(o).filter($=>o[$].peerId!==a);for(let $ of p){let y=e.getRemoteTrackStats($);y&&(n[$]=y)}Fe(r.remoteTrackStats,n);let I={[a]:e.getLocalPeerStats()};Fe(r.peerStats,I),It(r.localTrackStats,e.getLocalTrackStats(),i.store.getLocalPeerTracks())},"webrtc-stats")},Di=(s,e="resetState")=>{s.namedSetState(t=>{Object.assign(t,X())},e)};var ne=class{constructor(e,t){this.hmsStore=e;this.sdk=t;this.store=O.createNewHMSStore(he("HMSStatsStore"),X),this.getState=this.store.getState,this.subscribe=this.store.subscribe,this.getPublishPeerConnection=()=>new Promise(i=>{var o,r;this.hmsStore.getState(b)==="Connected"?i((r=(o=this.sdk)==null?void 0:o.getWebrtcInternals())==null?void 0:r.getPublishPeerConnection()):this.hmsStore.subscribe(a=>{var n,p;a==="Connected"&&i((p=(n=this.sdk)==null?void 0:n.getWebrtcInternals())==null?void 0:p.getPublishPeerConnection())},b)}),this.getSubscribePeerConnection=()=>new Promise(i=>{var o,r;this.hmsStore.getState(b)==="Connected"?i((r=(o=this.sdk)==null?void 0:o.getWebrtcInternals())==null?void 0:r.getSubscribePeerConnection()):this.hmsStore.subscribe(a=>{var n,p;a==="Connected"&&i((p=(n=this.sdk)==null?void 0:n.getWebrtcInternals())==null?void 0:p.getSubscribePeerConnection())},b)}),!!this.sdk&&Et(this.sdk,this.store,this.hmsStore)}};var k=R(require("reselect"));var Ii=s=>s.localPeer.id,vi=s=>s.localPeer.audioTrack,Ei=s=>s.localPeer.videoTrack,bi=(s,e)=>e,Ct=(s,e)=>e,Ci=s=>s.remoteTrackStats,At=s=>s.peerStats,Je=s=>s.localTrackStats,q=(0,k.createSelector)([At,Ii],(s,e)=>s[e]),Ai=(0,k.createSelector)(q,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.packetsLost}),Ni=(0,k.createSelector)(q,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.jitter}),xi=(0,k.createSelector)(q,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bitrate}),Li=(0,k.createSelector)(q,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bitrate}),Oi=(0,k.createSelector)(q,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.availableOutgoingBitrate}),wi=(0,k.createSelector)(q,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.availableIncomingBitrate}),_i=(0,k.createSelector)(q,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bytesSent}),Ui=(0,k.createSelector)(q,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bytesReceived}),Ki=(0,k.createSelector)([At,bi],(s,e)=>e?s[e]:void 0),Vi=(0,k.createSelector)([Ci,Ct],(s,e)=>e?s[e]:void 0),Ye=(0,k.createSelector)([Je,Ct],(s,e)=>e?s[e]:void 0),Bi=u(Ki),qi=u(Vi),ji=(0,k.createSelector)([Je,vi],(s,e)=>{var t;return e?(t=s[e])==null?void 0:t[0]:void 0}),Fi=u((0,k.createSelector)(Ye,s=>s==null?void 0:s[0])),$i=(0,k.createSelector)([Je,Ei],(s,e)=>{var t;return e?(t=s[e])==null?void 0:t[0]:void 0}),Gi=u((0,k.createSelector)(Ye,s=>s)),Wi=s=>u((0,k.createSelector)(Ye,e=>{let t=Object.keys(c.simulcastMapping).find(i=>c.simulcastMapping[i]===s);return s&&(e==null?void 0:e.find(i=>i.rid===t))||(e==null?void 0:e[0])})),Nt={localPeerStats:q,packetsLost:Ai,jitter:Ni,publishBitrate:xi,subscribeBitrate:Li,availablePublishBitrate:Oi,availableSubscribeBitrate:wi,totalBytesSent:_i,totalBytesReceived:Ui,peerStatsByID:Bi,trackStatsByID:qi,localAudioTrackStatsByID:Fi,localVideoTrackStatsByID:Gi,localVideoTrackStatsByLayer:Wi,localAudioTrackStats:ji,localVideoTrackStats:$i};var O=class{constructor(e,t,i){this.getStats=()=>(this.stats||(this.stats=new ne(this.store,this.sdk)),this.stats);e?this.store=e:this.store=O.createNewHMSStore(he("HMSStore"),z),i?this.notifications=i:this.notifications=new je(this.store),t?this.actions=t:(this.sdk=new ke.HMSSdk,this.actions=new Qe(this.store,this.sdk,this.notifications)),this.actions.setFrameworkInfo({type:"js",sdkVersion:xt().version}),this.initialTriggerOnSubscribe=!1,ke.isBrowser&&(window.__hms=this,window.__beam=new ye(this.store,this.actions,this.notifications))}triggerOnSubscribe(){this.initialTriggerOnSubscribe||(O.makeStoreTriggerOnSubscribe(this.store),this.initialTriggerOnSubscribe=!0)}getStore(){return this.store}getHMSActions(){return this.actions}getActions(){return this.actions}getNotifications(){return{onNotification:this.notifications.onNotification}}static createNewHMSStore(e,t){let i=(0,wt.default)(()=>t()),o=i.setState;i.setState=n=>{let p=typeof n=="function"?(0,Lt.default)(n):n;o(p)};let r=i.getState;i.getState=n=>n?n(r()):r(),O.compareWithShallowCheckInSubscribe(i);let a=O.setUpDevtools(i,e);return W(_({},i),{namedSetState:a})}static makeStoreTriggerOnSubscribe(e){let t=e.subscribe;e.subscribe=(i,o,r)=>(i(e.getState(o),void 0),t(i,o,r))}static compareWithShallowCheckInSubscribe(e){let t=e.subscribe;e.subscribe=(i,o,r)=>(o||(o=a=>a),r=r||Ot.default,t(i,o,r))}static setUpDevtools(e,t){let i;try{i=window.__REDUX_DEVTOOLS_EXTENSION__||window.top.__REDUX_DEVTOOLS_EXTENSION__}catch(a){}if(!i)return a=>{e.setState(a)};let o=i.connect(O.devtoolsOptions(t));o.prefix=t?`${t} > `:"";let r=e.setState;return e.setState=a=>{r(a),o.send(`${o.prefix}setState`,e.getState())},o.subscribe(O.devtoolsSubscribe(o,e,r)),o.send("setUpStore",e.getState()),(a,n)=>{r(a);let p=n||`${o.prefix}action`;o.send(p,e.getState())}}static devtoolsOptions(e){return{name:e,actionsBlacklist:["audioLevel","playlistProgress","connectionQuality"]}}static devtoolsSubscribe(e,t,i){return o=>{var r,a,n,p;if(o.type==="DISPATCH"&&o.state)["JUMP_TO_ACTION","JUMP_TO_STATE"].includes(o.payload.type)?i(JSON.parse(o.state)):t.setState(JSON.parse(o.state));else if(o.type==="DISPATCH"&&((r=o.payload)==null?void 0:r.type)==="COMMIT")e.init(t.getState());else if(o.type==="DISPATCH"&&((a=o.payload)==null?void 0:a.type)==="IMPORT_STATE"){let I=(n=o.payload.nextLiftedState)==null?void 0:n.actionsById;(((p=o.payload.nextLiftedState)==null?void 0:p.computedStates)||[]).forEach(({state:y},w)=>{let J=I[w]||`${e.prefix}setState`;w===0?e.init(y):(i(y),e.send(J,t.getState()))})}}}};
1
+ var _t=Object.create;var Y=Object.defineProperty,Ut=Object.defineProperties,Kt=Object.getOwnPropertyDescriptor,Vt=Object.getOwnPropertyDescriptors,Bt=Object.getOwnPropertyNames,Xe=Object.getOwnPropertySymbols,qt=Object.getPrototypeOf,Ze=Object.prototype.hasOwnProperty,jt=Object.prototype.propertyIsEnumerable;var et=(s,e,t)=>e in s?Y(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,_=(s,e)=>{for(var t in e||(e={}))Ze.call(e,t)&&et(s,t,e[t]);if(Xe)for(var t of Xe(e))jt.call(e,t)&&et(s,t,e[t]);return s},W=(s,e)=>Ut(s,Vt(e)),tt=s=>Y(s,"__esModule",{value:!0});var Ft=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),$t=(s,e)=>{tt(s);for(var t in e)Y(s,t,{get:e[t],enumerable:!0})},Gt=(s,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Bt(e))!Ze.call(s,i)&&i!=="default"&&Y(s,i,{get:()=>e[i],enumerable:!(t=Kt(e,i))||t.enumerable});return s},R=s=>Gt(tt(Y(s!=null?_t(qt(s)):{},"default",s&&s.__esModule&&"default"in s?{get:()=>s.default,enumerable:!0}:{value:s,enumerable:!0})),s);var S=(s,e,t)=>new Promise((i,o)=>{var r=p=>{try{n(t.next(p))}catch(I){o(I)}},a=p=>{try{n(t.throw(p))}catch(I){o(I)}},n=p=>p.done?i(p.value):Promise.resolve(p.value).then(r,a);n((t=t.apply(s,e)).next())});var xt=Ft((En,Qi)=>{Qi.exports={version:"0.8.3",license:"MIT",main:"dist/index.cjs.js",module:"dist/index.js",typings:"dist/index.d.ts",files:["dist","src"],engines:{node:">=12"},exports:{".":{require:"./dist/index.cjs.js",import:"./dist/index.js",default:"./dist/index.js"}},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",sideEffects:!1,dependencies:{"@100mslive/hms-video":"0.7.3",eventemitter2:"^6.4.7",immer:"^9.0.6",reselect:"4.0.0",zustand:"3.5.7"},devDependencies:{"ts-node":"^10.4.0",tslib:"^2.2.0"},description:"This is an addon to the core sdk provided by 100ms. It abstracts away the intricacies of data management and provides a flux based reactive data store where data flows in only one direction.",repository:{type:"git",url:"git+https://github.com/100mslive/hms-video-store.git"},keywords:["video","webrtc","conferencing","100ms"],bugs:{url:"https://github.com/100mslive/hms-video-store/issues"},homepage:"https://github.com/100mslive/hms-video-store#readme",gitHead:"8193e1162ae5138fe8fc001aaecce1cf7624bd9e"}});$t(exports,{BeamControllerStore:()=>ye,DeviceType:()=>c.DeviceType,HMSAudioPluginType:()=>c.HMSAudioPluginType,HMSLogLevel:()=>c.HMSLogLevel,HMSMessageType:()=>Pe,HMSNotificationSeverity:()=>P,HMSNotificationTypes:()=>H,HMSPlaylistType:()=>m,HMSReactiveStore:()=>O,HMSRoomState:()=>T,HMSSimulcastLayer:()=>c.HMSSimulcastLayer,HMSStats:()=>ne,HMSVideoPluginCanvasContextType:()=>c.HMSVideoPluginCanvasContextType,HMSVideoPluginType:()=>c.HMSVideoPluginType,createDefaultStatsStore:()=>X,createDefaultStoreState:()=>z,parsedUserAgent:()=>c.parsedUserAgent,selectAppData:()=>bs,selectAppDataByPath:()=>Cs,selectAudioPlaylist:()=>xe,selectAudioPlaylistTrackByPeerID:()=>Fs,selectAudioTrackByID:()=>Ns,selectAudioTrackByPeerID:()=>Tt,selectAudioTrackVolume:()=>Be,selectAudioVolumeByPeerID:()=>Ys,selectAuxiliaryAudioByPeerID:()=>Bs,selectAuxiliaryTracksByPeerID:()=>ws,selectAvailableRoleNames:()=>Ts,selectBroadcastMessages:()=>ht,selectBroadcastMessagesUnreadCount:()=>ti,selectCameraStreamByPeerID:()=>Os,selectConnectionQualities:()=>zt,selectConnectionQualityByPeerID:()=>Vs,selectDegradedTracks:()=>us,selectDevices:()=>Yt,selectDidIJoinWithin:()=>yi,selectDominantSpeaker:()=>rs,selectErrors:()=>ot,selectFullAppData:()=>ue,selectHLSState:()=>hs,selectHMSMessages:()=>se,selectHMSMessagesCount:()=>be,selectHMSStats:()=>Nt,selectIsAllowedToPublish:()=>Mi,selectIsAllowedToSubscribe:()=>Hs,selectIsAudioLocallyMuted:()=>Ve,selectIsConnectedToRoom:()=>Me,selectIsInPreview:()=>ps,selectIsLocalAudioEnabled:()=>as,selectIsLocalAudioPluginPresent:()=>fi,selectIsLocalScreenShared:()=>me,selectIsLocalVideoDisplayEnabled:()=>Ee,selectIsLocalVideoEnabled:()=>pe,selectIsLocalVideoPluginPresent:()=>Hi,selectIsLocallyMutedByPeerID:()=>Qs,selectIsPeerAudioEnabled:()=>Gs,selectIsPeerVideoEnabled:()=>Ws,selectIsScreenShareLocallyMutedByPeerID:()=>Js,selectIsSomeoneScreenSharing:()=>ns,selectLocalAudioTrackID:()=>A,selectLocalMediaSettings:()=>Ie,selectLocalPeer:()=>E,selectLocalPeerID:()=>F,selectLocalPeerName:()=>ts,selectLocalPeerRole:()=>ie,selectLocalPeerRoleName:()=>ss,selectLocalTrackIDs:()=>ve,selectLocalVideoTrackID:()=>N,selectMessageIDsInOrder:()=>De,selectMessagesByPeerID:()=>si,selectMessagesByRole:()=>ii,selectMessagesMap:()=>Re,selectMessagesUnreadCountByPeerID:()=>ri,selectMessagesUnreadCountByRole:()=>oi,selectPeerAudioByID:()=>Ks,selectPeerByCondition:()=>gi,selectPeerByID:()=>L,selectPeerCount:()=>Xt,selectPeerMetadata:()=>ci,selectPeerName:()=>Si,selectPeerNameByID:()=>As,selectPeerScreenSharing:()=>at,selectPeerSharingAudio:()=>cs,selectPeerSharingAudioPlaylist:()=>ds,selectPeerSharingVideoPlaylist:()=>ls,selectPeers:()=>j,selectPeersByCondition:()=>hi,selectPeersByRole:()=>ai,selectPeersByRoles:()=>ni,selectPeersMap:()=>v,selectPeersScreenSharing:()=>Ss,selectPeersWithAudioStatus:()=>li,selectPermissions:()=>Ce,selectPreviewPeer:()=>es,selectRTMPState:()=>gs,selectRecentError:()=>Qt,selectRecordingState:()=>fs,selectRemotePeers:()=>os,selectRoleByRoleName:()=>pi,selectRoleChangeRequest:()=>ui,selectRolesMap:()=>U,selectRoom:()=>D,selectRoomID:()=>Jt,selectRoomStartTime:()=>ks,selectRoomStarted:()=>ms,selectRoomState:()=>b,selectScreenAudioTrackByID:()=>xs,selectScreenShareAudioByPeerID:()=>Ke,selectScreenShareByPeerID:()=>$s,selectScreenSharesByPeerId:()=>Ue,selectScreenVideoTrackByID:()=>Ls,selectScreenshareAudioVolumeByPeerID:()=>zs,selectSessionId:()=>ys,selectSessionMetadata:()=>Ps,selectSimulcastLayerByTrack:()=>Xs,selectSpeakers:()=>rt,selectTrackAudioByID:()=>_s,selectTrackByID:()=>ae,selectTracksMap:()=>g,selectUnreadHMSMessagesCount:()=>Ms,selectVideoPlaylist:()=>Le,selectVideoPlaylistAudioTrackByPeerID:()=>js,selectVideoPlaylistVideoTrackByPeerID:()=>qs,selectVideoTrackByID:()=>_e,selectVideoTrackByPeerID:()=>mt,simulcastMapping:()=>c.simulcastMapping});var Lt=R(require("immer")),Ot=R(require("zustand/shallow")),wt=R(require("zustand/vanilla")),ke=R(require("@100mslive/hms-video"));var yt=R(require("eventemitter2"));var T;(function(n){n.Disconnected="Disconnected",n.Preview="Preview",n.Connecting="Connecting",n.Connected="Connected",n.Reconnecting="Reconnecting",n.Disconnecting="Disconnecting",n.Failed="Failed"})(T||(T={}));var z=()=>({room:{id:"",isConnected:!1,name:"",peers:[],localPeer:"",roomState:T.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:[],preview:{},errors:[]}),X=()=>({peerStats:{},remoteTrackStats:{},localTrackStats:{},localPeer:{id:""}});var Pe;(function(e){e.CHAT="chat"})(Pe||(Pe={}));var P;(function(t){t.INFO="info",t.ERROR="error"})(P||(P={}));var H;(function(l){l.PEER_JOINED="PEER_JOINED",l.PEER_LEFT="PEER_LEFT",l.PEER_LIST="PEER_LIST",l.NEW_MESSAGE="NEW_MESSAGE",l.ERROR="ERROR",l.RECONNECTING="RECONNECTING",l.RECONNECTED="RECONNECTED",l.TRACK_ADDED="TRACK_ADDED",l.TRACK_REMOVED="TRACK_REMOVED",l.TRACK_MUTED="TRACK_MUTED",l.TRACK_UNMUTED="TRACK_UNMUTED",l.TRACK_DEGRADED="TRACK_DEGRADED",l.TRACK_RESTORED="TRACK_RESTORED",l.TRACK_DESCRIPTION_CHANGED="TRACK_DESCRIPTION_CHANGED",l.ROLE_UPDATED="ROLE_UPDATED",l.CHANGE_TRACK_STATE_REQUEST="CHANGE_TRACK_STATE_REQUEST",l.CHANGE_MULTI_TRACK_STATE_REQUEST="CHANGE_MULTI_TRACK_STATE_REQUEST",l.ROOM_ENDED="ROOM_ENDED",l.REMOVED_FROM_ROOM="REMOVED_FROM_ROOM",l.DEVICE_CHANGE_UPDATE="DEVICE_CHANGE_UPDATE",l.PLAYLIST_TRACK_ENDED="PLAYLIST_TRACK_ENDED",l.NAME_UPDATED="NAME_UPDATED",l.METADATA_UPDATED="METADATA_UPDATED"})(H||(H={}));var m;(function(t){t.audio="audio",t.video="video"})(m||(m={}));var c=R(require("@100mslive/hms-video"));var Se={[c.HMSPeerUpdate.PEER_JOINED]:H.PEER_JOINED,[c.HMSPeerUpdate.PEER_LEFT]:H.PEER_LEFT,[c.HMSPeerUpdate.ROLE_UPDATED]:H.ROLE_UPDATED,[c.HMSPeerUpdate.NAME_UPDATED]:H.NAME_UPDATED,[c.HMSPeerUpdate.METADATA_UPDATED]:H.METADATA_UPDATED},le={[c.HMSTrackUpdate.TRACK_ADDED]:H.TRACK_ADDED,[c.HMSTrackUpdate.TRACK_REMOVED]:H.TRACK_REMOVED,[c.HMSTrackUpdate.TRACK_MUTED]:H.TRACK_MUTED,[c.HMSTrackUpdate.TRACK_UNMUTED]:H.TRACK_UNMUTED,[c.HMSTrackUpdate.TRACK_DEGRADED]:H.TRACK_DEGRADED,[c.HMSTrackUpdate.TRACK_RESTORED]:H.TRACK_RESTORED,[c.HMSTrackUpdate.TRACK_DESCRIPTION_CHANGED]:H.TRACK_DESCRIPTION_CHANGED};var d=R(require("reselect"));function G(s,e){let t,i;if(e)for(let o of e.auxiliaryTracks){let r=s[o];Wt(r)&&(i=Z(r)?r:i,t=ee(r)?r:t)}return{video:t,audio:i}}function Z(s){return s&&s.type==="audio"}function ee(s){return s&&s.type==="video"}function Wt(s){return s&&s.source==="screen"}function de(s){return s&&s.source==="audioplaylist"}function te(s){return s&&s.source==="videoplaylist"}function st(s){return s?Boolean(s==null?void 0:s.degraded):!1}function Q(s,e){return e&&s.tracks[e]?s.tracks[e].enabled:!1}function it(s,e){return e&&s.tracks[e]?s.tracks[e].displayEnabled:!1}var D=s=>s.room,ot=s=>s.errors,Qt=(0,d.createSelector)(ot,s=>s.length===0?null:s.at(-1)),Jt=(0,d.createSelector)(D,s=>s.id),v=s=>s.peers,Re=s=>s.messages.byID,De=s=>s.messages.allIDs,g=s=>s.tracks,Ie=s=>s.settings,ue=s=>s.appData,Yt=s=>s.devices,rt=s=>s.speakers,zt=s=>s.connectionQualities,Me=(0,d.createSelector)([D],s=>s&&s.isConnected),Xt=(0,d.createSelector)([Me,D],(s,e)=>s?e.peerCount!==void 0?e.peerCount||1:e.peers.length:Math.max(e.peerCount!==void 0?e.peerCount:e.peers.length-1,0)),j=(0,d.createSelector)([D,v],(s,e)=>s.peers.map(t=>e[t])),Zt=(0,d.createSelector)(g,s=>Object.values(s)),E=(0,d.createSelector)(D,v,(s,e)=>e[s.localPeer]),es=s=>s.preview.peer,F=(0,d.createSelector)(D,s=>s.localPeer),ts=(0,d.createSelector)(E,s=>s==null?void 0:s.name),ss=(0,d.createSelector)(E,s=>s==null?void 0:s.roleName),A=(0,d.createSelector)(E,s=>s==null?void 0:s.audioTrack),N=(0,d.createSelector)(E,s=>s==null?void 0:s.videoTrack),is=(0,d.createSelector)(E,s=>s==null?void 0:s.auxiliaryTracks),ve=(0,d.createSelector)([A,N,is],(s,e,t)=>{let i=[...t];return s&&i.unshift(s),e&&i.unshift(e),i}),os=(0,d.createSelector)(j,s=>s.filter(e=>!e.isLocal)),rs=(0,d.createSelector)(v,rt,(s,e)=>{let t=Object.entries(e).sort((i,o)=>{var n,p;let r=((n=i[1])==null?void 0:n.audioLevel)||0;return(((p=o[1])==null?void 0:p.audioLevel)||0)>r?1:-1});if(t.length>0&&t[0][1].audioLevel&&t[0][1].audioLevel>0){let i=t[0][1].peerID;if(i in s)return s[i]}return null}),as=s=>{let e=E(s);return Q(s,e==null?void 0:e.audioTrack)},pe=s=>{let e=E(s);return Q(s,e==null?void 0:e.videoTrack)},Ee=s=>{let e=E(s);return it(s,e==null?void 0:e.videoTrack)},me=(0,d.createSelector)(E,g,(s,e)=>{let{video:t,audio:i}=G(e,s);return!!(t||i)}),at=(0,d.createSelector)(v,g,(s,e)=>{let t;for(let i in s){let o=s[i],{video:r,audio:a}=G(e,o);if(r)return o;a&&!t&&(t=o)}return t}),ns=(0,d.createSelector)(at,s=>!!s),cs=(0,d.createSelector)(v,g,(s,e)=>{for(let t in s){let i=s[t],{audio:o,video:r}=G(e,i);if(!r&&!!o)return i}}),Ss=(0,d.createSelector)(v,g,(s,e)=>{let t=[],i=[];for(let o in s){let r=s[o],{video:a,audio:n}=G(e,r);a?t.push(r):n&&i.push(r)}return t.concat(i)}),ls=(0,d.createSelector)(v,g,(s,e)=>{for(let t in e){let i=e[t];if(te(i)&&ee(i)&&i.peerId)return s[i.peerId]}}),ds=(0,d.createSelector)(v,g,(s,e)=>{for(let t in e){let i=e[t];if(de(i)&&i.peerId)return s[i.peerId]}}),us=(0,d.createSelector)(Zt,s=>s.filter(st)),be=(0,d.createSelector)(De,s=>s.length),Ms=(0,d.createSelector)(Re,s=>Object.values(s).filter(e=>!e.read).length),se=(0,d.createSelector)(De,Re,(s,e)=>{let t=[];return s.forEach(i=>{t.push(e[i])}),t}),b=(0,d.createSelector)([D],s=>s&&s.roomState),ps=(0,d.createSelector)(b,s=>s===T.Preview),ms=(0,d.createSelector)(D,s=>s.roomState!==T.Disconnected),U=s=>s.roles,Ts=(0,d.createSelector)([U],s=>Object.keys(s)),ie=(0,d.createSelector)([E,U],(s,e)=>(s==null?void 0:s.roleName)?e[s.roleName]:null),Hs=(0,d.createSelector)([ie],s=>{var e;return((e=s==null?void 0:s.subscribeParams)==null?void 0:e.subscribeToRoles)?s.subscribeParams.subscribeToRoles.length>0:!1}),Ce=(0,d.createSelector)(ie,s=>s==null?void 0:s.permissions),fs=(0,d.createSelector)(D,s=>s.recording),gs=(0,d.createSelector)(D,s=>s.rtmp),hs=(0,d.createSelector)(D,s=>s.hls),ys=(0,d.createSelector)(D,s=>s.sessionId),ks=(0,d.createSelector)(D,s=>s.startedAt),Ps=s=>s.sessionMetadata;var Ae=R(require("reselect"));var nt=(s=m.audio)=>e=>e.playlist[s].list,Ne=(s=m.audio)=>e=>e.playlist[s].selection,ct=(s=m.audio)=>e=>e.playlist[s].progress,St=(s=m.audio)=>e=>e.playlist[s].currentTime,lt=(s=m.audio)=>e=>e.playlist[s].playbackRate,dt=(s=m.audio)=>e=>e.playlist[s].volume,ut=(s=m.audio)=>(0,Ae.createSelector)(nt(s),e=>Object.values(e)),Mt=(s=m.audio)=>(0,Ae.createSelector)(nt(s),Ne(s),(e,t)=>{if(!!t.id)return e[t.id]}),xe={selection:Ne(m.audio),progress:ct(m.audio),currentTime:St(m.audio),playbackRate:lt(m.audio),volume:dt(m.audio),list:ut(m.audio),selectedItem:Mt(m.audio)},Le={selection:Ne(m.video),progress:ct(m.video),currentTime:St(m.video),playbackRate:lt(m.video),volume:dt(m.video),list:ut(m.video),selectedItem:Mt(m.video)};var f=R(require("reselect"));function u(s){return e=>t=>s(t,e)}var oe="HMS-Store:",M=class{static v(e,...t){this.log(c.HMSLogLevel.VERBOSE,e,...t)}static d(...e){this.log(c.HMSLogLevel.DEBUG,...e)}static i(...e){this.log(c.HMSLogLevel.INFO,...e)}static w(...e){this.log(c.HMSLogLevel.WARN,...e)}static e(...e){this.log(c.HMSLogLevel.ERROR,...e)}static time(e){this.log(c.HMSLogLevel.TIME,"[HMSPerformanceTiming]",e)}static timeEnd(e){this.log(c.HMSLogLevel.TIMEEND,"[HMSPerformanceTiming]",e,e)}static cleanUp(){performance.clearMarks(),performance.clearMeasures()}static log(e,...t){if(!(this.level.valueOf()>e.valueOf()))switch(e){case c.HMSLogLevel.VERBOSE:{console.log(oe,...t);break}case c.HMSLogLevel.DEBUG:{console.debug(oe,...t);break}case c.HMSLogLevel.INFO:{console.info(oe,...t);break}case c.HMSLogLevel.WARN:{console.warn(oe,...t);break}case c.HMSLogLevel.ERROR:{console.error(oe,...t);break}case c.HMSLogLevel.TIME:{performance.mark(t[1]);break}case c.HMSLogLevel.TIMEEND:{let i=t[0],o=t[1];try{let r=performance.measure(o,o);this.log(c.HMSLogLevel.DEBUG,i,o,r==null?void 0:r.duration),performance.clearMarks(o),performance.clearMeasures(o)}catch(r){this.log(c.HMSLogLevel.DEBUG,i,o,r)}break}}}};M.level=c.HMSLogLevel.VERBOSE;var Oe=(s,e)=>e,re=(s,e)=>e,pt=(s,e)=>e,Rs=(s,e)=>e,C=(0,f.createSelector)([v,Oe],(s,e)=>e?s[e]:null),we=(0,f.createSelector)([g,re],(s,e)=>e?s[e]:null),Ds=(0,f.createSelector)([g,re],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="video"?t:null}),Is=(0,f.createSelector)([g,re],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="audio"?t:null}),vs=(0,f.createSelector)([g,re],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="audio"&&(t==null?void 0:t.source)==="screen"?t:null}),Es=(0,f.createSelector)([g,re],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="video"&&(t==null?void 0:t.source)==="screen"?t:null}),L=u(C),bs=u((0,f.createSelector)([ue,Rs],(s,e)=>{if(!!s)return e?s[e]:s})),Cs=(...s)=>(0,f.createSelector)([ue],e=>{if(!!e){if(s&&s.length>0){let t=e;for(let i of s){if(!i)return t;t=t==null?void 0:t[i]}return t}return e}}),As=u((0,f.createSelector)(C,s=>s==null?void 0:s.name)),ae=u(we),_e=u(Ds),Ns=u(Is),xs=u(vs),Ls=u(Es),mt=u((s,e)=>{let t=C(s,e);if(t&&t.videoTrack&&t.videoTrack!=="")return s.tracks[t.videoTrack]}),Tt=u((s,e)=>{let t=C(s,e);if(t&&t.audioTrack&&t.audioTrack!=="")return s.tracks[t.audioTrack]}),Os=mt,ws=u((s,e)=>{let t=C(s,e);return(t==null?void 0:t.auxiliaryTracks.map(i=>s.tracks[i]))||[]}),Ht=(s,e)=>e?s.speakers[e]:null,_s=u((0,f.createSelector)(Ht,s=>(s==null?void 0:s.audioLevel)||0)),Us=(s,e)=>{let t=Tt(e)(s);return Ht(s,t==null?void 0:t.id)},Ks=u((0,f.createSelector)(Us,s=>(s==null?void 0:s.audioLevel)||0)),Vs=u((s,e)=>{if(e)return s.connectionQualities[e]}),Bs=u((s,e)=>{let t=C(s,e);if(t){let i=t==null?void 0:t.auxiliaryTracks.find(o=>Z(s.tracks[o]));return i?s.tracks[i]:void 0}}),qs=u((0,f.createSelector)(g,C,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return te(o)&&ee(o)});return t?s[t]:void 0})),js=u((0,f.createSelector)(g,C,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return te(o)&&Z(o)});return t?s[t]:void 0})),Fs=u((0,f.createSelector)(g,C,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return de(o)&&Z(o)});return t?s[t]:void 0})),Ue=u((0,f.createSelector)(g,C,(s,e)=>G(s,e))),$s=s=>(0,f.createSelector)(Ue(s),e=>e.video),Ke=s=>(0,f.createSelector)(Ue(s),e=>e.audio),Gs=u((s,e)=>{let t=C(s,e);return Q(s,t==null?void 0:t.audioTrack)}),Ws=u((s,e)=>{let t=C(s,e);return Q(s,t==null?void 0:t.videoTrack)}),Ve=u((s,e)=>{if(e&&s.tracks[e])return s.tracks[e].volume===0}),Qs=u((s,e)=>{let t=C(s,e);return Ve(t==null?void 0:t.audioTrack)(s)}),Js=u((s,e)=>{let t=Ke(e)(s);return Ve(t==null?void 0:t.id)(s)}),Be=u((s,e)=>{let t=we(s,e);if(t){if(t.type!=="audio"){M.w("Please pass audio track here");return}return t.volume}}),Ys=u((s,e)=>{let t=C(s,e);return Be(t==null?void 0:t.audioTrack)(s)}),zs=u((s,e)=>{let t=Ke(e)(s);return Be(t==null?void 0:t.id)(s)}),Xs=u((s,e)=>{let t=we(s,e);if(t){if(t.type!=="video"){M.w("Please pass video track here");return}return t.layer}}),ft=(0,f.createSelector)([se,F,Oe],(s,e,t)=>{if(!!t)return s.filter(i=>{var o;return!i.recipientPeer&&!((o=i.recipientRoles)==null?void 0:o.length)||i.sender&&![e,t].includes(i.sender)?!1:[e,t].includes(i.recipientPeer)})}),gt=(0,f.createSelector)([se,pt],(s,e)=>{if(!!e)return s.filter(t=>{var i,o;return((i=t.recipientRoles)==null?void 0:i.length)?(o=t.recipientRoles)==null?void 0:o.includes(e):!1})}),ht=(0,f.createSelector)(se,s=>s.filter(e=>{var t;return!e.recipientPeer&&!((t=e.recipientRoles)==null?void 0:t.length)})),Zs=(0,f.createSelector)([gt,pt],s=>s?s.filter(e=>!e.read).length:0),ei=(0,f.createSelector)([ft,Oe],s=>s?s.filter(e=>!e.read).length:0),ti=(0,f.createSelector)(ht,s=>s.filter(e=>!e.read).length),si=u(ft),ii=u(gt),oi=u(Zs),ri=u(ei),ai=s=>(0,f.createSelector)([j],e=>e.filter(t=>t.roleName===s)),ni=s=>(0,f.createSelector)([j],e=>e.filter(t=>t.roleName?s.includes(t.roleName):!1)),ci=s=>(0,f.createSelector)(L(s),e=>{try{return(e==null?void 0:e.metadata)&&e.metadata!==""?JSON.parse(e.metadata):{}}catch(t){return console.error("cannot parse peer metadata",t),{}}}),Si=s=>(0,f.createSelector)(L(s),e=>e==null?void 0:e.name);var Te=R(require("reselect"));var li=(0,Te.createSelector)([v,g],(s,e)=>Object.values(s).map(i=>{var o;return{peer:i,isAudioEnabled:i.audioTrack?(o=e[i.audioTrack])==null?void 0:o.enabled:!1}})),di=s=>s.roleChangeRequests[0]||null,ui=(0,Te.createSelector)([di,v,U],(s,e,t)=>s?{requestedBy:s.requestedBy?e[s.requestedBy]:void 0,role:t[s.roleName],token:s.token}:null),Mi=(0,Te.createSelector)([ie],s=>{var o;let e=!1,t=!1,i=!1;return((o=s==null?void 0:s.publishParams)==null?void 0:o.allowed)&&(e=s.publishParams.allowed.includes("video"),t=s.publishParams.allowed.includes("audio"),i=s.publishParams.allowed.includes("screen")),{video:e,audio:t,screen:i}});var V=R(require("reselect"));var pi=s=>(0,V.createSelector)([U],e=>e[s]),mi=(0,V.createSelector)([N,g],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Ti=(0,V.createSelector)([A,g],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Hi=s=>(0,V.createSelector)([mi],e=>e.includes(s)),fi=s=>(0,V.createSelector)([Ti],e=>e.includes(s)),gi=s=>(0,V.createSelector)(j,e=>e.find(s)),hi=s=>(0,V.createSelector)(j,e=>e.filter(s)),yi=s=>(0,V.createSelector)(D,e=>e.joinedAt&&Date.now()-e.joinedAt.getTime()<=s);var qe="hmsNotification",je=class{constructor(e){this.id=0;this.onNotification=(e,t)=>{let i=o=>{if(t){let r;if(Array.isArray(t)?r=t.includes(o.type):r=t===o.type,!r)return}e(o)};return this.eventEmitter.addListener(qe,i),()=>{this.eventEmitter.removeListener(qe,i)}};this.store=e,this.eventEmitter=new yt.EventEmitter2({maxListeners:Object.keys(H).length})}sendPlaylistTrackEnded(e){let t=this.createNotification(H.PLAYLIST_TRACK_ENDED,e,P.INFO);this.emitEvent(t)}sendDeviceChange(e){var i;let t=this.createNotification(H.DEVICE_CHANGE_UPDATE,e,e.error?P.ERROR:P.INFO,`Selected ${e.type} device - ${(i=e.selection)==null?void 0:i.label}`);this.emitEvent(t)}sendLeaveRoom(e){var o;let t=(o=e.requestedBy)==null?void 0:o.name,i=this.createNotification(e.roomEnded||!t?H.ROOM_ENDED:H.REMOVED_FROM_ROOM,e,P.INFO,`${e.roomEnded?"Room ended":"Removed from room"} ${t?`by ${t}`:""}`);this.emitEvent(i)}sendPeerList(e){let t=this.createNotification(H.PEER_LIST,e,P.INFO);this.emitEvent(t)}sendPeerUpdate(e,t){let i=this.store.getState(L(t==null?void 0:t.id))||t,o=Se[e];if(o){let r=this.createNotification(o,i,P.INFO);this.emitEvent(r)}}sendTrackUpdate(e,t){let i=this.store.getState(ae(t)),o=le[e];if(o){let r=this.createNotification(o,i,P.INFO);this.emitEvent(r)}}sendMessageReceived(e){let t=this.createNotification(H.NEW_MESSAGE,e,P.INFO);this.emitEvent(t)}sendError(e){let t=this.createNotification(H.ERROR,e,P.ERROR);this.emitEvent(t)}sendReconnecting(e){let t=this.createNotification(H.RECONNECTING,e,P.ERROR);this.emitEvent(t)}sendReconnected(){let e=this.createNotification(H.RECONNECTED,null,P.INFO);this.emitEvent(e)}sendChangeTrackStateRequest(e){let t=this.createNotification(H.CHANGE_TRACK_STATE_REQUEST,e,P.INFO);this.emitEvent(t)}sendChangeMultiTrackStateRequest(e){let t=this.createNotification(H.CHANGE_MULTI_TRACK_STATE_REQUEST,e,P.INFO);this.emitEvent(t)}emitEvent(e){this.eventEmitter.emit(qe,e)}createNotification(e,t,i,o=""){return this.id++,{id:this.id,type:e,message:o,data:t,severity:i}}};var B=R(require("@100mslive/hms-video"));var He=R(require("@100mslive/hms-video"));function kt(s){return s instanceof He.HMSRemoteAudioTrack||s instanceof He.HMSRemoteVideoTrack}var Pt=(s,e)=>{let t=fe(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];$e(o,r)?(K(o.auxiliaryTracks,r.auxiliaryTracks)&&(r.auxiliaryTracks=o.auxiliaryTracks),Object.assign(o,r)):Ge(o,r)?delete s[i]:We(o,r)&&(s[i]=r)}},Rt=(s,e)=>{let t=fe(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];$e(o,r)?(ki(o,r),Object.assign(o,r)):Ge(o,r)?delete s[i]:We(o,r)&&(s[i]=r)}},Dt=(s,e)=>{s.room.roomState===T.Preview?s.preview.peer?Object.assign(s.preview.peer,e[s.room.localPeer]):s.preview.peer=e[s.room.localPeer]:delete s.preview.peer},Fe=(s,e)=>{let t=fe(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];$e(o,r)?Object.assign(o,r):Ge(o,r)?delete s[i]:We(o,r)&&(s[i]=r)}},It=(s,e,t)=>{let i=t.reduce((r,a)=>(r[a.firstTrackId]=Object.values(e[a.getTrackIDBeingSent()]||{}).sort((n,p)=>!n.rid||!p.rid?0:n.rid<p.rid?-1:1),r),{}),o=fe(Object.keys(s),Object.keys(i));for(let r of o){if(!i[r]){delete s[r];continue}s[r]=i[r]}},ki=(s,e)=>{s.plugins&&K(s.plugins,e.plugins)&&(e.plugins=s.plugins),s.type==="video"&&s.layerDefinitions&&K(s.layerDefinitions,e.layerDefinitions)&&(e.layerDefinitions=s.layerDefinitions)},$e=(s,e)=>s&&e,Ge=(s,e)=>s&&!e,We=(s,e)=>!s&&e,K=(s,e)=>{if(s===e||s.length===0&&(e==null?void 0:e.length)===0)return!0;if(!s||!e||s.length!==e.length)return!1;for(let t=0;t<s.length;t++)if(s[t]!==e[t])return!1;return!0},fe=(s,e)=>{let t=new Set;for(let i of s)t.add(i);for(let i of e)t.add(i);return Array.from(t)};var x=R(require("@100mslive/hms-video"));var h=class{static convertPeer(e){var t,i,o;return{id:e.peerId,name:e.name,roleName:(t=e.role)==null?void 0:t.name,isLocal:e.isLocal,videoTrack:(i=e.videoTrack)==null?void 0:i.trackId,audioTrack:(o=e.audioTrack)==null?void 0:o.trackId,auxiliaryTracks:e.auxiliaryTracks.map(r=>r.trackId),customerUserId:e.customerUserId,metadata:e.metadata,joinedAt:e.joinedAt}}static convertTrack(e,t){let i={id:e.trackId,source:e.source,type:e.type,enabled:e.enabled,displayEnabled:e.enabled,peerId:e.peerId||t};return this.enrichTrack(i,e),i}static enrichTrack(e,t){let i=t.getMediaTrackSettings();t instanceof x.HMSRemoteAudioTrack&&(e.volume=t.getVolume()||0),h.updateDeviceID(e,t),e.type==="video"&&(e.source==="screen"?(e.displaySurface=i.displaySurface,h.enrichScreenTrack(e,t)):e.source==="regular"&&(e.facingMode=i.facingMode),e.height=i.height,e.width=i.width,h.enrichVideoTrack(e,t)),h.enrichPluginsDetails(e,t)}static updateDeviceID(e,t){var i;t instanceof x.HMSLocalVideoTrack||t instanceof x.HMSLocalAudioTrack?e.deviceID=t.settings.deviceId:e.deviceID=(i=t.getMediaTrackSettings())==null?void 0:i.deviceId}static enrichVideoTrack(e,t){t instanceof x.HMSRemoteVideoTrack&&(e.layer=t.getLayer(),e.preferredLayer=t.getPreferredLayer(),e.degraded=t.degraded),(t instanceof x.HMSRemoteVideoTrack||t instanceof x.HMSLocalVideoTrack)&&(K(t.getSimulcastDefinitions(),e.layerDefinitions)||(e.layerDefinitions=t.getSimulcastDefinitions()))}static enrichScreenTrack(e,t){var i,o;if(t instanceof x.HMSLocalVideoTrack){let r=(i=t.getCaptureHandle)==null?void 0:i.call(t);(r==null?void 0:r.handle)!==((o=e.captureHandle)==null?void 0:o.handle)&&(e.captureHandle=r),t.isCurrentTab&&(e.displaySurface="selfBrowser")}}static enrichPluginsDetails(e,t){(t instanceof x.HMSLocalVideoTrack||t instanceof x.HMSLocalAudioTrack)&&(K(t.getPlugins(),e.plugins)||(e.plugins=t.getPlugins()))}static convertRoom(e){var r,a;let{recording:t,rtmp:i,hls:o}=h.convertRecordingStreamingState(e==null?void 0:e.recording,e==null?void 0:e.rtmp,e==null?void 0:e.hls);return{id:e.id,name:e.name,localPeer:(a=(r=e.localPeer)==null?void 0:r.peerId)!=null?a:"",recording:t,rtmp:i,hls:o,sessionId:e.sessionId,startedAt:e.startedAt,joinedAt:e.joinedAt,peerCount:e.peerCount}}static convertMessage(e){var t,i,o,r,a,n,p;return{sender:(t=e.sender)==null?void 0:t.peerId,senderName:(i=e.sender)==null?void 0:i.name,senderRole:(r=(o=e.sender)==null?void 0:o.role)==null?void 0:r.name,senderUserId:(a=e.sender)==null?void 0:a.customerUserId,recipientPeer:(n=e.recipientPeer)==null?void 0:n.peerId,recipientRoles:(p=e.recipientRoles)==null?void 0:p.map(I=>I.name),time:e.time,type:e.type,message:e.message}}static convertRoles(e){let t={};return e&&e.forEach(i=>{t[i.name]=i}),t}static convertRoleChangeRequest(e){var t;return{requestedBy:(t=e.requestedBy)==null?void 0:t.peerId,roleName:e.role.name,token:e.token}}static convertException(e){return{code:e.code,action:e.action,name:e.name,message:e.message,description:e.description,isTerminal:e.isTerminal,nativeError:e.nativeError,timestamp:new Date}}static convertDeviceChangeUpdate(e){let t={devices:e.devices,selection:e.selection,type:e.type};return e.error&&(t.error=this.convertException(e.error)),t}static convertPlaylist(e){let t=this.getConvertedPlaylistType(e,m.audio),i=this.getConvertedPlaylistType(e,m.video);return{audio:t,video:i}}static convertPlaylistItem(e,t){let i=t.type,o=e.getCurrentSelection(i),r=e.isPlaying(i),a=t.url===(o==null?void 0:o.url);return W(_({},t),{type:t.type,selected:a,playing:a&&r})}static getConvertedPlaylistType(e,t){let i={},o=e.getCurrentSelection(t),r=e.getCurrentProgress(t),a=e.getVolume(t),n=e.getList(t),p=e.getCurrentIndex(t);return e.getList(t).forEach(I=>{i[I.id]=h.convertPlaylistItem(e,I)}),{list:i,selection:{id:o==null?void 0:o.id,hasPrevious:p>0,hasNext:p<n.length-1},progress:r,volume:a,currentTime:e.getCurrentTime(t),playbackRate:e.getPlaybackRate(t)}}static convertRecordingStreamingState(e,t,i){var o;return{recording:{browser:_({running:!1},e==null?void 0:e.browser),server:_({running:!1},e==null?void 0:e.server),hls:_({running:!1},e==null?void 0:e.hls)},rtmp:_({running:!1},t),hls:{variants:((o=i==null?void 0:i.variants)==null?void 0:o.map(r=>r))||[],running:!!(i==null?void 0:i.running),error:i==null?void 0:i.error}}}};var ge=class{constructor(e,t,i,o){this.playlistManager=e;this.syncPlaylistState=i;this.store=o;this.type=t}play(e){return S(this,null,function*(){if(!e){M.w("Please pass id to play");return}yield this.playlistManager.setEnabled(!0,{id:e,type:this.type})})}pause(){return S(this,null,function*(){let e=this.type===m.audio?xe:Le,t=this.store.getState(e.selection);if(!t.id){M.w("No item is currently playing to pause");return}yield this.playlistManager.setEnabled(!1,{id:t.id,type:this.type})})}playNext(){return S(this,null,function*(){yield this.playlistManager.playNext(this.type)})}playPrevious(){return S(this,null,function*(){yield this.playlistManager.playPrevious(this.type)})}seek(e){this.playlistManager.seek(e,this.type),this.syncPlaylistState(`seekOn${this.type}Playlist`)}seekTo(e){this.playlistManager.seekTo(e,this.type),this.syncPlaylistState(`seekToOn${this.type}Playlist`)}setVolume(e){this.playlistManager.setVolume(e,this.type),this.syncPlaylistState(`setVolumeOn${this.type}Playlist`)}setList(e){this.playlistManager.setList(e),this.syncPlaylistState(`setListOn${this.type}Playlist`)}stop(){return S(this,null,function*(){yield this.playlistManager.stop(this.type),this.syncPlaylistState(`stop${this.type}Playlist`)})}setIsAutoplayOn(e){this.playlistManager.setIsAutoplayOn(this.type,e)}setPlaybackRate(e){this.playlistManager.setPlaybackRate(this.type,e),this.syncPlaylistState(`set${this.type}PlaybackRate`)}removeItem(e){return S(this,null,function*(){let t=yield this.playlistManager.removeItem(e,this.type);return t&&this.syncPlaylistState(`remove${this.type}PlaylistItem`),t})}clearList(){return S(this,null,function*(){yield this.playlistManager.clearList(this.type),this.syncPlaylistState(`clear${this.type}Playlist`)})}};var Qe=class{constructor(e,t,i){this.hmsSDKTracks={};this.hmsSDKPeers={};this.isRoomJoinCalled=!1;this.ignoredMessageTypes=[];this.setProgress=({type:e,progress:t})=>{this.setState(i=>{i.playlist[e].progress=t,i.playlist[e].currentTime=this.sdk.getPlaylistManager().getCurrentTime(e)},"playlistProgress")};this.syncPlaylistState=e=>{this.setState(t=>{Object.assign(t.playlist,h.convertPlaylist(this.sdk.getPlaylistManager()))},e)};this.sendPeerUpdateNotification=(e,t)=>{let i=this.store.getState(L(t.peerId)),o=Se[e]||"peerUpdate";this.syncRoomState(o),i||(i=this.store.getState(L(t.peerId))),this.hmsNotifications.sendPeerUpdate(e,i)};this.setState=(e,t)=>this.store.namedSetState(e,t);this.store=e,this.sdk=t,this.hmsNotifications=i}refreshDevices(){return S(this,null,function*(){yield this.sdk.refreshDevices()})}unblockAudio(){return S(this,null,function*(){yield this.sdk.getAudioOutput().unblockAutoplay()})}setVolume(e,t){return S(this,null,function*(){t?yield this.setTrackVolume(e,t):(yield this.sdk.getAudioOutput().setVolume(e),this.syncRoomState("setOutputVolume"))})}setAudioOutputDevice(e){return S(this,null,function*(){(yield this.sdk.getAudioOutput().setDevice(e))&&this.setState(i=>{i.settings.audioOutputDeviceId=e},"setAudioOutputDevice")})}setPreferredLayer(e,t){return S(this,null,function*(){var o;let i=this.hmsSDKTracks[e];if(i)if(i instanceof B.HMSRemoteVideoTrack){if(t===B.HMSSimulcastLayer.NONE){M.w(`layer ${B.HMSSimulcastLayer.NONE} will be ignored`);return}if(((o=this.store.getState(_e(e)))==null?void 0:o.preferredLayer)===t){M.w(`preferred layer is already ${t}`);return}this.setState(a=>{let n=a.tracks[e];n&&(n.preferredLayer=t)},"setPreferredLayer"),yield i.setPreferredLayer(t)}else M.w(`track ${e} is not a remote video track`);else this.logPossibleInconsistency(`track ${e} not present, unable to set preffer layer`)})}preview(e){return S(this,null,function*(){if(this.isRoomJoinCalled){this.logPossibleInconsistency("attempting to call preview after join was called");return}let t=this.store.getState(b);if(t===T.Preview||t===T.Connecting){this.logPossibleInconsistency("attempting to call preview while room is in preview/connecting");return}try{this.setState(i=>{i.room.roomState=T.Connecting},"connecting"),yield this.sdkPreviewWithListeners(e)}catch(i){throw M.e("Cannot show preview. Failed to connect to room - ",i),i}})}join(e){return S(this,null,function*(){if(this.isRoomJoinCalled){this.logPossibleInconsistency("room join is called again");return}try{this.isRoomJoinCalled=!0,this.setState(t=>{t.room.roomState=T.Connecting},"join"),yield this.sdkJoinWithListeners(e)}catch(t){throw this.isRoomJoinCalled=!1,M.e("Failed to connect to room - ",t),t}})}leave(){return S(this,null,function*(){let e=this.store.getState(Me),t=!0;e||(t=!1,this.logPossibleInconsistency("room leave is called when no room is connected"));let i=this.store.getState(b);return this.setState(o=>{o.room.roomState=T.Disconnecting},"leaving"),this.sdk.leave(t).then(()=>{this.resetState("leave"),M.i("left room")}).catch(o=>{M.e("error in leaving room - ",o),this.setState(r=>{r.room.roomState=i},"revertLeave")})})}setScreenShareEnabled(e,t){return S(this,null,function*(){typeof t=="boolean"&&(t={audioOnly:t});try{e?yield this.startScreenShare(t):yield this.stopScreenShare()}catch(i){throw this.hmsNotifications.sendError(h.convertException(i)),i}})}addTrack(e,t="regular"){return S(this,null,function*(){yield this.sdk.addTrack(e,t),this.syncRoomState("addTrack")})}removeTrack(e){return S(this,null,function*(){yield this.sdk.removeTrack(e),this.syncRoomState("removeTrack")})}setLocalAudioEnabled(e){return S(this,null,function*(){let t=this.store.getState(A);t&&(yield this.setEnabledTrack(t,e))})}setLocalVideoEnabled(e){return S(this,null,function*(){let t=this.store.getState(N);t&&(yield this.setEnabledTrack(t,e))})}setEnabledTrack(e,t){return S(this,null,function*(){var r;if(((r=this.store.getState().tracks[e])==null?void 0:r.enabled)===t){this.logPossibleInconsistency(`local track[${e}] enabled state - ${t}`);return}this.setState(a=>{a.tracks[e]?a.tracks[e].displayEnabled=t:this.logPossibleInconsistency("track id not found for setEnabled")},"displayEnabled");try{yield this.setEnabledSDKTrack(e,t),this.syncRoomState("setEnabled")}catch(a){throw this.setState(n=>{n.tracks[e].displayEnabled=!t},"rollbackDisplayEnabled"),this.hmsNotifications.sendError(h.convertException(a)),a}let o=t?c.HMSTrackUpdate.TRACK_UNMUTED:c.HMSTrackUpdate.TRACK_MUTED;this.hmsNotifications.sendTrackUpdate(o,e)})}setAudioSettings(e){return S(this,null,function*(){let t=this.store.getState(A);t&&(yield this.setSDKLocalAudioTrackSettings(t,e),this.syncRoomState("setAudioSettings"))})}setVideoSettings(e){return S(this,null,function*(){let t=this.store.getState(N);t&&(yield this.setSDKLocalVideoTrackSettings(t,e),this.syncRoomState("setVideoSettings"))})}sendMessage(e){this.sendBroadcastMessage(e)}sendBroadcastMessage(e,t){return S(this,null,function*(){let i=yield this.sdk.sendBroadcastMessage(e,t);this.updateMessageInStore(i,{message:e,type:t})})}sendGroupMessage(e,t,i){return S(this,null,function*(){let o=this.store.getState(U),r=t.map(n=>o[n]),a=yield this.sdk.sendGroupMessage(e,r,i);this.updateMessageInStore(a,{message:e,recipientRoles:t,type:i})})}sendDirectMessage(e,t,i){return S(this,null,function*(){let o=this.hmsSDKPeers[t],r=yield this.sdk.sendDirectMessage(e,o,i);this.updateMessageInStore(r,{message:e,recipientPeer:o.peerId,type:i})})}updateMessageInStore(e,t){if(!e)throw M.w("sendMessage","Failed to send message",t),Error(`sendMessage Failed - ${JSON.stringify(t)}`);let i=h.convertMessage(e);return i.read=!0,i.senderName="You",i.ignored=this.ignoredMessageTypes.includes(i.type),this.putMessageInStore(i),i}setMessageRead(e,t){this.setState(i=>{t?i.messages.byID[t]?i.messages.byID[t].read=e:this.logPossibleInconsistency("no message with id is found"):i.messages.allIDs.forEach(o=>{i.messages.byID[o].read=e})},"setMessageRead")}attachVideo(e,t){return S(this,null,function*(){if(this.localAndVideoUnmuting(e))return new Promise(i=>{let o=this.store.subscribe(r=>S(this,null,function*(){r&&(yield this.attachVideoInternal(e,t),o(),i())}),pe)});yield this.attachVideoInternal(e,t)})}detachVideo(e,t){return S(this,null,function*(){let i=this.hmsSDKTracks[e];(i==null?void 0:i.type)==="video"?i.removeSink(t):(t&&(t.srcObject=null),this.logPossibleInconsistency("no video track found to remove sink"))})}addPluginToVideoTrack(e,t){return S(this,null,function*(){return this.addRemoveVideoPlugin(e,"add",t)})}addPluginToAudioTrack(e){return S(this,null,function*(){return this.addRemoveAudioPlugin(e,"add")})}validateVideoPluginSupport(e){let t={};if(t.isSupported=!1,!e)return M.w("no plugin passed in for checking support"),t.errMsg="no plugin passed in for checking support",t;let i=this.store.getState(N);if(!i)return M.w("video Track not added to local peer yet"),t.errMsg="call this function only after local peer has video track",t;let o=this.hmsSDKTracks[i];return o?t=o.validatePlugin(e):(M.w(`track ${i} not present, unable to validate plugin`),t.errMsg=`track ${i} not present, unable to validate plugin`),t}validateAudioPluginSupport(e){let t={};if(t.isSupported=!1,!e)return M.w('no plugin passed in for checking support"'),t.errMsg='no plugin passed in for checking support"',t;let i=this.store.getState(A);if(!i)return M.w("audio track not added to local peer yet"),t.errMsg="call this function only after local peer has audio track",t;let o=this.hmsSDKTracks[i];return o?t=o.validatePlugin(e):(M.w(`track ${i} not present, unable to validate plugin`),t.errMsg=`track ${i} not present, unable to validate plugin`),t}removePluginFromVideoTrack(e){return S(this,null,function*(){return this.addRemoveVideoPlugin(e,"remove")})}removePluginFromAudioTrack(e){return S(this,null,function*(){return this.addRemoveAudioPlugin(e,"remove")})}changeRole(e,t,i=!1){return S(this,null,function*(){let o=this.hmsSDKPeers[e];if(!o){this.logPossibleInconsistency(`Unknown peer ID given ${e} for changerole`);return}yield this.sdk.changeRoleOfPeer(o,t,i)})}changeRoleOfPeer(e,t,i=!1){return S(this,null,function*(){let o=this.hmsSDKPeers[e];if(!o){this.logPossibleInconsistency(`Unknown peer ID given ${e} for changerole`);return}yield this.sdk.changeRoleOfPeer(o,t,i)})}changeRoleOfPeersWithRoles(e,t){return S(this,null,function*(){let i=this.sdk.getRoles().filter(o=>e.includes(o.name));yield this.sdk.changeRoleOfPeersWithRoles(i,t)})}acceptChangeRole(e){return S(this,null,function*(){let t=e.requestedBy?this.hmsSDKPeers[e.requestedBy.id]:void 0;t||M.w(`peer for which role change is requested no longer available - ${e.requestedBy}`);let i={requestedBy:t,role:e.role,token:e.token};yield this.sdk.acceptChangeRole(i),this.removeRoleChangeRequest(e)})}initAppData(e){this.setState(t=>{t.appData=e},"initAppData")}setAppData(e,t,i){let o=(t==null?void 0:t.constructor.name)==="Object";this.setState(r=>{if(r.appData)i&&o?Object.assign(r.appData[e],t):r.appData[e]=t;else{let a={[e]:t};r.appData=a}},`setAppData-${e}`)}rejectChangeRole(e){this.removeRoleChangeRequest(e)}endRoom(e,t){return S(this,null,function*(){let i=this.store.getState(Ce);if(!(i==null?void 0:i.endRoom)){M.w("You are not allowed to perform this action - endRoom");return}let o=this.store.getState(b);this.setState(r=>{r.room.roomState=T.Disconnecting},"endingRoom");try{yield this.sdk.endRoom(e,t),this.resetState("endRoom")}catch(r){M.e("error in ending room - ",r),this.setState(a=>{a.room.roomState=o},"revertEndRoom")}})}removePeer(e,t){return S(this,null,function*(){let i=this.hmsSDKPeers[e];if(i&&!i.isLocal)yield this.sdk.removePeer(i,t);else{this.logPossibleInconsistency(`No remote peer found for peerID - ${e}`);return}})}startRTMPOrRecording(e){return S(this,null,function*(){yield this.sdk.startRTMPOrRecording(e)})}stopRTMPAndRecording(){return S(this,null,function*(){yield this.sdk.stopRTMPAndRecording()})}startHLSStreaming(e){return S(this,null,function*(){yield this.sdk.startHLSStreaming(e)})}stopHLSStreaming(e){return S(this,null,function*(){yield this.sdk.stopHLSStreaming(e)})}sendHLSTimedMetadata(e){return S(this,null,function*(){yield this.sdk.sendHLSTimedMetadata(e)})}changeName(e){return S(this,null,function*(){yield this.sdk.changeName(e)})}changeMetadata(e){return S(this,null,function*(){typeof e!="string"&&(e=JSON.stringify(e)),yield this.sdk.changeMetadata(e)})}setSessionMetadata(e){return S(this,null,function*(){yield this.sdk.setSessionMetadata(e),this.setState(t=>{t.sessionMetadata=e},"setSessionMetadata")})}populateSessionMetadata(){return S(this,null,function*(){let e=yield this.sdk.getSessionMetadata();this.setState(t=>{t.sessionMetadata=e},"populateSessionMetadata")})}setRemoteTrackEnabled(e,t){return S(this,null,function*(){if(typeof e=="string"){let i=this.hmsSDKTracks[e];i&&kt(i)?yield this.sdk.changeTrackState(i,t):this.logPossibleInconsistency(`No remote track with ID ${e} found for change track state`)}else Array.isArray(e)&&e.forEach(i=>this.setRemoteTrackEnabled(i,t))})}setRemoteTracksEnabled(e){return S(this,null,function*(){let t={enabled:e.enabled,type:e.type,source:e.source};if(e.roles){let i=this.store.getState(U);t.roles=e.roles.map(o=>i[o])}yield this.sdk.changeMultiTrackState(t)})}setLogLevel(e){M.level=e,this.sdk.setLogLevel(e)}setFrameworkInfo(e){this.sdk.setFrameworkInfo(e)}ignoreMessageTypes(e,t=!1){if(t)this.ignoredMessageTypes=e;else for(let i of e)this.ignoredMessageTypes.includes(i)||this.ignoredMessageTypes.push(i)}resetState(e="resetState"){this.isRoomJoinCalled=!1,this.hmsSDKTracks={},M.cleanUp(),this.setState(t=>{Object.assign(t,z())},e)}sdkJoinWithListeners(e){return S(this,null,function*(){yield this.sdk.join(e,{onJoin:this.onJoin.bind(this),onRoomUpdate:this.onRoomUpdate.bind(this),onPeerUpdate:this.onPeerUpdate.bind(this),onTrackUpdate:this.onTrackUpdate.bind(this),onMessageReceived:this.onMessageReceived.bind(this),onError:this.onError.bind(this),onReconnected:this.onReconnected.bind(this),onReconnecting:this.onReconnecting.bind(this),onRoleChangeRequest:this.onRoleChangeRequest.bind(this),onRoleUpdate:this.onRoleUpdate.bind(this),onDeviceChange:this.onDeviceChange.bind(this),onChangeTrackStateRequest:this.onChangeTrackStateRequest.bind(this),onChangeMultiTrackStateRequest:this.onChangeMultiTrackStateRequest.bind(this),onRemovedFromRoom:this.onRemovedFromRoom.bind(this),onNetworkQuality:this.onNetworkQuality.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)}),this.sdk.addConnectionQualityListener({onConnectionQualityUpdate:this.onConnectionQualityUpdate.bind(this)})})}onRemovedFromRoom(e){var o;let t=this.store.getState(L((o=e.requestedBy)==null?void 0:o.peerId));this.hmsNotifications.sendLeaveRoom(W(_({},e),{requestedBy:t||void 0}));let i=e.roomEnded||!t?"roomEnded":"removedFromRoom";M.i(`resetting state after peer removed ${i}`,e),this.resetState(i)}onDeviceChange(e){let t=e.devices;if(!t)return;let i=this.store.getState(E);if(this.setState(o=>{K(o.devices.audioInput,t.audioInput)||(o.devices.audioInput=t.audioInput),K(o.devices.videoInput,t.videoInput)||(o.devices.videoInput=t.videoInput),K(o.devices.audioOutput,t.audioOutput)||(o.devices.audioOutput=t.audioOutput),this.hmsSDKPeers[i==null?void 0:i.id]&&Object.assign(o.settings,this.getMediaSettings(this.hmsSDKPeers[i==null?void 0:i.id]))},"deviceChange"),e.selection){let o=h.convertDeviceChangeUpdate(e);this.hmsNotifications.sendDeviceChange(o)}}sdkPreviewWithListeners(e){return S(this,null,function*(){yield this.sdk.preview(e,{onPreview:this.onPreview.bind(this),onError:this.onError.bind(this),onReconnected:this.onReconnected.bind(this),onReconnecting:this.onReconnecting.bind(this),onDeviceChange:this.onDeviceChange.bind(this),onRoomUpdate:this.onRoomUpdate.bind(this),onPeerUpdate:this.onPeerUpdate.bind(this),onNetworkQuality:this.onNetworkQuality.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)})})}onNetworkQuality(e){this.setState(t=>{var o;let i=t.room.localPeer||((o=this.sdk.getLocalPeer())==null?void 0:o.peerId);i&&(t.connectionQualities[i]={peerID:i,downlinkQuality:e})},"ConnectionQuality")}startScreenShare(e){return S(this,null,function*(){this.store.getState(me)?this.logPossibleInconsistency("start screenshare is called while it's on"):(yield this.sdk.startScreenShare(()=>this.syncRoomState("screenshareStopped"),e),this.syncRoomState("startScreenShare"))})}stopScreenShare(){return S(this,null,function*(){this.store.getState(me)?(yield this.sdk.stopScreenShare(),this.syncRoomState("stopScreenShare")):this.logPossibleInconsistency("stop screenshare is called while it's not on")})}attachVideoInternal(e,t){return S(this,null,function*(){let i=this.hmsSDKTracks[e];i&&i.type==="video"?yield i.addSink(t):this.logPossibleInconsistency("no video track found to add sink")})}syncRoomState(e){e=`${e}_fullSync`,M.time(`store-sync-${e}`);let t={},i=[],o={},r={},a={},n=this.sdk.getPeers();for(let y of n){let w=h.convertPeer(y);t[w.id]=w,i.push(w.id),this.hmsSDKPeers[w.id]=y;let J=[y.audioTrack,y.videoTrack,...y.auxiliaryTracks];for(let ce of J){if(!ce)continue;let ze=h.convertTrack(ce);o[ze.id]=ze,r[ce.trackId]=ce}w.isLocal&&Object.assign(a,this.getMediaSettings(y))}let p=this.sdk.getRecordingState(),I=this.sdk.getRTMPState(),$=this.sdk.getHLSState();this.setState(y=>{y.room.peers=i;let w=y.peers,J=y.tracks;Pt(w,t),Rt(J,o),Object.assign(y.settings,a),this.hmsSDKTracks=r,Object.assign(y.roles,h.convertRoles(this.sdk.getRoles())),Object.assign(y.playlist,h.convertPlaylist(this.sdk.getPlaylistManager())),Object.assign(y.room,h.convertRecordingStreamingState(p,I,$)),Dt(y,w)},e),M.timeEnd(`store-sync-${e}`)}onPreview(e){this.setState(t=>{Object.assign(t.room,h.convertRoom(e)),t.room.roomState=T.Preview},"previewStart"),this.syncRoomState("previewSync")}onJoin(e){let t=this.sdk.getPlaylistManager();this.audioPlaylist=new ge(t,m.audio,this.syncPlaylistState.bind(this),this.store),this.videoPlaylist=new ge(t,m.video,this.syncRoomState.bind(this),this.store),this.syncRoomState("joinSync"),this.setState(i=>{Object.assign(i.room,h.convertRoom(e)),i.room.isConnected=!0,i.room.roomState=T.Connected},"joined"),t.onProgress(this.setProgress),t.onNewTrackStart(i=>{this.syncPlaylistState(`${i.type}PlaylistUpdate`)}),t.onPlaylistEnded(i=>{this.syncPlaylistState(`${i}PlaylistEnded`)}),t.onCurrentTrackEnded(i=>{this.hmsNotifications.sendPlaylistTrackEnded(h.convertPlaylistItem(t,i)),this.syncPlaylistState(`${i.type}PlaylistItemEnded`)})}onRoomUpdate(e,t){this.setState(i=>{Object.assign(i.room,h.convertRoom(t))},e)}onPeerUpdate(e,t){if(![c.HMSPeerUpdate.BECAME_DOMINANT_SPEAKER,c.HMSPeerUpdate.RESIGNED_DOMINANT_SPEAKER].includes(e)){if(Array.isArray(t)){this.syncRoomState("peersJoined");let i=[];for(let o of t){let r=this.store.getState(L(o.peerId));r&&i.push(r)}this.hmsNotifications.sendPeerList(i);return}this.sendPeerUpdateNotification(e,t)}}onTrackUpdate(e,t,i){if(e===c.HMSTrackUpdate.TRACK_REMOVED)this.hmsNotifications.sendTrackUpdate(e,t.trackId),this.handleTrackRemove(t,i);else{let o=le[e]||"trackUpdate";this.syncRoomState(o),this.hmsNotifications.sendTrackUpdate(e,t.trackId)}}onMessageReceived(e){let t=h.convertMessage(e);t.read=!1,t.ignored=this.ignoredMessageTypes.includes(t.type),this.putMessageInStore(t),this.hmsNotifications.sendMessageReceived(t)}putMessageInStore(e){e.ignored||this.setState(t=>{e.id=String(this.store.getState(be)+1),t.messages.byID[e.id]=e,t.messages.allIDs.push(e.id)},"newMessage")}onAudioLevelUpdate(e){this.setState(t=>{let i={};e.forEach(r=>{if(!r.track||!r.peer)return;let a=r.track.trackId;i[a]=r.audioLevel,t.speakers[a]||(t.speakers[a]={audioLevel:r.audioLevel,peerID:r.peer.peerId,trackID:a})});let o=Object.entries(t.speakers);for(let[r,a]of o)a.audioLevel=i[r]||0,a.audioLevel===0&&delete t.speakers[r]},"audioLevel")}onConnectionQualityUpdate(e){this.setState(t=>{let i=new Set;e.forEach(r=>{let a=r.peerID;!a||(i.add(a),t.connectionQualities[a]?Object.assign(t.connectionQualities[a],r):t.connectionQualities[a]=r)});let o=Object.keys(t.connectionQualities);for(let r of o)i.has(r)||delete t.connectionQualities[r]},"connectionQuality")}onChangeTrackStateRequest(e){var r;let t=this.store.getState(L((r=e.requestedBy)==null?void 0:r.peerId)),i=this.getStoreLocalTrackIDfromSDKTrack(e.track),o=this.store.getState(ae(i));if(!o)return this.logPossibleInconsistency(`Not found track for which track state change was requested, ${e.track}`);e.enabled||this.syncRoomState("changeTrackStateRequest"),this.hmsNotifications.sendChangeTrackStateRequest({requestedBy:t||void 0,track:o,enabled:e.enabled})}onChangeMultiTrackStateRequest(e){var r;let t=this.store.getState(L((r=e.requestedBy)==null?void 0:r.peerId));e.enabled||this.syncRoomState("changeMultiTrackStateRequest");let i=[],o=this.store.getState(g);for(let a of e.tracks){let n=this.getStoreLocalTrackIDfromSDKTrack(a);n&&o[n]&&i.push(o[n])}this.hmsNotifications.sendChangeMultiTrackStateRequest({requestedBy:t||void 0,tracks:i,enabled:e.enabled,type:e.type,source:e.source})}onReconnected(){this.syncRoomState("reconnectedSync"),this.hmsNotifications.sendReconnected(),this.setState(e=>{e.room.roomState=e.room.isConnected?T.Connected:T.Preview},"reconnected")}onReconnecting(e){let t=h.convertException(e);M.e("Reconnection: received error from sdk",t),this.hmsNotifications.sendReconnecting(t),this.setState(i=>{i.room.roomState=T.Reconnecting,i.errors.push(t)},"reconnecting")}onError(e){let t=h.convertException(e);t.isTerminal?(this.leave().then(()=>M.e("error from SDK, left room.")),this.setState(i=>{i.room.roomState=T.Failed,i.errors.push(t)},"errorTerminal")):this.store.getState().errors.length<50&&this.setState(o=>{o.errors.push(t)},"error"),this.syncRoomState("errorSync"),this.hmsNotifications.sendError(t),M.e("received error from sdk",t instanceof B.HMSException?`${t}`:t)}handleTrackRemove(e,t){this.setState(i=>{let o=i.peers[t.peerId],r=i.tracks,a=e.trackId;if(this.isSameStoreSDKTrack(a,o==null?void 0:o.audioTrack))o==null||delete o.audioTrack;else if(this.isSameStoreSDKTrack(a,o==null?void 0:o.videoTrack))o==null||delete o.videoTrack;else{let n=o==null?void 0:o.auxiliaryTracks.indexOf(a);n>-1&&this.isSameStoreSDKTrack(a,o==null?void 0:o.auxiliaryTracks[n])&&(o==null||o.auxiliaryTracks.splice(n,1))}delete r[a],delete this.hmsSDKTracks[a]},"trackRemoved")}setEnabledSDKTrack(e,t){return S(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setEnabled(t):this.logPossibleInconsistency(`track ${e} not present, unable to enabled/disable`)})}setSDKLocalVideoTrackSettings(e,t){return S(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setSettings(t):this.logPossibleInconsistency(`local track ${e} not present, unable to set settings`)})}setSDKLocalAudioTrackSettings(e,t){return S(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setSettings(t):this.logPossibleInconsistency(`local track ${e} not present, unable to set settings`)})}getMediaSettings(e){var r;let t=this.store.getState(Ie),i=e.audioTrack,o=e.videoTrack;return{audioInputDeviceId:(i==null?void 0:i.settings.deviceId)||t.audioInputDeviceId,videoInputDeviceId:(o==null?void 0:o.settings.deviceId)||t.videoInputDeviceId,audioOutputDeviceId:(r=this.sdk.getAudioOutput().getDevice())==null?void 0:r.deviceId}}setTrackVolume(e,t){return S(this,null,function*(){let i=this.hmsSDKTracks[t];i?i instanceof B.HMSAudioTrack?(yield i.setVolume(e),this.setState(o=>{let r=o.tracks[t];r&&r.type==="audio"&&(r.volume=e)},"trackVolume")):M.w(`track ${t} is not an audio track`):this.logPossibleInconsistency(`track ${t} not present, unable to set volume`)})}localAndVideoUnmuting(e){if(this.store.getState(E).videoTrack!==e)return!1;let i=this.store.getState(Ee),o=this.store.getState(pe);return i&&!o}logPossibleInconsistency(e){M.w("possible inconsistency detected - ",e)}addRemoveVideoPlugin(e,t,i){return S(this,null,function*(){if(!e){M.w("Invalid plugin received in store");return}let o=this.store.getState(N);if(o){let r=this.hmsSDKTracks[o];r?(t==="add"?yield r.addPlugin(e,i):t==="remove"&&(yield r.removePlugin(e)),this.syncRoomState(`${t}VideoPlugin`)):this.logPossibleInconsistency(`track ${o} not present, unable to remove plugin`)}})}addRemoveAudioPlugin(e,t){return S(this,null,function*(){if(!e){M.w("Invalid plugin received in store");return}let i=this.store.getState(A);if(i){let o=this.hmsSDKTracks[i];o?(t==="add"?yield o.addPlugin(e):t==="remove"&&(yield o.removePlugin(e)),this.syncRoomState(`${t}AudioPlugin`)):this.logPossibleInconsistency(`track ${i} not present, unable to remove plugin`)}})}isSameStoreSDKTrack(e,t){var i;return t?((i=this.hmsSDKTracks[t])==null?void 0:i.trackId)===e:!1}onRoleChangeRequest(e){this.setState(t=>{t.roleChangeRequests.length===0&&t.roleChangeRequests.push(h.convertRoleChangeRequest(e))},"roleChangeRequest")}removeRoleChangeRequest(e){this.setState(t=>{let i=t.roleChangeRequests.findIndex(o=>o.token===e.token);i!==-1&&t.roleChangeRequests.splice(i,1)},"removeRoleChangeRequest")}onRoleUpdate(){this.syncRoomState("roleUpdate")}getStoreLocalTrackIDfromSDKTrack(e){return this.store.getState(ve).find(i=>this.hmsSDKTracks[i].trackId===e.trackId)}};var vt=R(require("@100mslive/hms-video")),he=s=>vt.isBrowser?`${s} ${document.title}`:s;var ye=class{constructor(e,t,i){this.store=e,this.actions=t,this.notifications=i}getStore(){return this.store}getActions(){return this.actions}getNotifications(){return{onNotification:this.notifications.onNotification}}};var Et=(s,e,t)=>{let i;t.getState(b)===T.Connected&&(i=bt(s,e,t)),t.subscribe(o=>{[T.Connected,T.Reconnecting].includes(o)?i||(i=bt(s,e,t)):[T.Disconnected,T.Failed].includes(o)&&i&&(Di(e,o),i(),i=void 0)},b)},bt=(s,e,t)=>{var r,a;let i=Pi(t,e);(r=s.getWebrtcInternals())==null||r.start();let o=(a=s.getWebrtcInternals())==null?void 0:a.onStatsChange(n=>Ri(e,n,t,s));return()=>{i(),o&&o()}},Pi=(s,e)=>{let t,i,o;return s.getState(F)?e.namedSetState(r=>{r.localPeer.id=s.getState(F)},"localpeer-id"):t=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.id=r},"localpeer-id")},F),s.getState(N)?e.namedSetState(r=>{r.localPeer.videoTrack=s.getState(N)},"localpeer-videotrack-id"):i=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.videoTrack=r},"localpeer-videotrack-id")},N),s.getState(A)?e.namedSetState(r=>{r.localPeer.audioTrack=s.getState(A)},"localpeer-audiotrack-id"):o=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.audioTrack=r},"localpeer-audiotrack-id")},A),()=>{t==null||t(),i==null||i(),o==null||o()}},Ri=(s,e,t,i)=>{let o=t.getState(g);s.namedSetState(r=>{let a=t.getState(F),n={},p=Object.keys(o).filter($=>o[$].peerId!==a);for(let $ of p){let y=e.getRemoteTrackStats($);y&&(n[$]=y)}Fe(r.remoteTrackStats,n);let I={[a]:e.getLocalPeerStats()};Fe(r.peerStats,I),It(r.localTrackStats,e.getLocalTrackStats(),i.store.getLocalPeerTracks())},"webrtc-stats")},Di=(s,e="resetState")=>{s.namedSetState(t=>{Object.assign(t,X())},e)};var ne=class{constructor(e,t){this.hmsStore=e;this.sdk=t;this.store=O.createNewHMSStore(he("HMSStatsStore"),X),this.getState=this.store.getState,this.subscribe=this.store.subscribe,this.getPublishPeerConnection=()=>new Promise(i=>{var o,r;this.hmsStore.getState(b)==="Connected"?i((r=(o=this.sdk)==null?void 0:o.getWebrtcInternals())==null?void 0:r.getPublishPeerConnection()):this.hmsStore.subscribe(a=>{var n,p;a==="Connected"&&i((p=(n=this.sdk)==null?void 0:n.getWebrtcInternals())==null?void 0:p.getPublishPeerConnection())},b)}),this.getSubscribePeerConnection=()=>new Promise(i=>{var o,r;this.hmsStore.getState(b)==="Connected"?i((r=(o=this.sdk)==null?void 0:o.getWebrtcInternals())==null?void 0:r.getSubscribePeerConnection()):this.hmsStore.subscribe(a=>{var n,p;a==="Connected"&&i((p=(n=this.sdk)==null?void 0:n.getWebrtcInternals())==null?void 0:p.getSubscribePeerConnection())},b)}),!!this.sdk&&Et(this.sdk,this.store,this.hmsStore)}};var k=R(require("reselect"));var Ii=s=>s.localPeer.id,vi=s=>s.localPeer.audioTrack,Ei=s=>s.localPeer.videoTrack,bi=(s,e)=>e,Ct=(s,e)=>e,Ci=s=>s.remoteTrackStats,At=s=>s.peerStats,Je=s=>s.localTrackStats,q=(0,k.createSelector)([At,Ii],(s,e)=>s[e]),Ai=(0,k.createSelector)(q,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.packetsLost}),Ni=(0,k.createSelector)(q,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.jitter}),xi=(0,k.createSelector)(q,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bitrate}),Li=(0,k.createSelector)(q,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bitrate}),Oi=(0,k.createSelector)(q,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.availableOutgoingBitrate}),wi=(0,k.createSelector)(q,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.availableIncomingBitrate}),_i=(0,k.createSelector)(q,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bytesSent}),Ui=(0,k.createSelector)(q,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bytesReceived}),Ki=(0,k.createSelector)([At,bi],(s,e)=>e?s[e]:void 0),Vi=(0,k.createSelector)([Ci,Ct],(s,e)=>e?s[e]:void 0),Ye=(0,k.createSelector)([Je,Ct],(s,e)=>e?s[e]:void 0),Bi=u(Ki),qi=u(Vi),ji=(0,k.createSelector)([Je,vi],(s,e)=>{var t;return e?(t=s[e])==null?void 0:t[0]:void 0}),Fi=u((0,k.createSelector)(Ye,s=>s==null?void 0:s[0])),$i=(0,k.createSelector)([Je,Ei],(s,e)=>{var t;return e?(t=s[e])==null?void 0:t[0]:void 0}),Gi=u((0,k.createSelector)(Ye,s=>s)),Wi=s=>u((0,k.createSelector)(Ye,e=>{let t=Object.keys(c.simulcastMapping).find(i=>c.simulcastMapping[i]===s);return s&&(e==null?void 0:e.find(i=>i.rid===t))||(e==null?void 0:e[0])})),Nt={localPeerStats:q,packetsLost:Ai,jitter:Ni,publishBitrate:xi,subscribeBitrate:Li,availablePublishBitrate:Oi,availableSubscribeBitrate:wi,totalBytesSent:_i,totalBytesReceived:Ui,peerStatsByID:Bi,trackStatsByID:qi,localAudioTrackStatsByID:Fi,localVideoTrackStatsByID:Gi,localVideoTrackStatsByLayer:Wi,localAudioTrackStats:ji,localVideoTrackStats:$i};var O=class{constructor(e,t,i){this.getStats=()=>(this.stats||(this.stats=new ne(this.store,this.sdk)),this.stats);e?this.store=e:this.store=O.createNewHMSStore(he("HMSStore"),z),i?this.notifications=i:this.notifications=new je(this.store),t?this.actions=t:(this.sdk=new ke.HMSSdk,this.actions=new Qe(this.store,this.sdk,this.notifications)),this.actions.setFrameworkInfo({type:"js",sdkVersion:xt().version}),this.initialTriggerOnSubscribe=!1,ke.isBrowser&&(window.__hms=this,window.__beam=new ye(this.store,this.actions,this.notifications))}triggerOnSubscribe(){this.initialTriggerOnSubscribe||(O.makeStoreTriggerOnSubscribe(this.store),this.initialTriggerOnSubscribe=!0)}getStore(){return this.store}getHMSActions(){return this.actions}getActions(){return this.actions}getNotifications(){return{onNotification:this.notifications.onNotification}}static createNewHMSStore(e,t){let i=(0,wt.default)(()=>t()),o=i.setState;i.setState=n=>{let p=typeof n=="function"?(0,Lt.default)(n):n;o(p)};let r=i.getState;i.getState=n=>n?n(r()):r(),O.compareWithShallowCheckInSubscribe(i);let a=O.setUpDevtools(i,e);return W(_({},i),{namedSetState:a})}static makeStoreTriggerOnSubscribe(e){let t=e.subscribe;e.subscribe=(i,o,r)=>(i(e.getState(o),void 0),t(i,o,r))}static compareWithShallowCheckInSubscribe(e){let t=e.subscribe;e.subscribe=(i,o,r)=>(o||(o=a=>a),r=r||Ot.default,t(i,o,r))}static setUpDevtools(e,t){let i;try{i=window.__REDUX_DEVTOOLS_EXTENSION__||window.top.__REDUX_DEVTOOLS_EXTENSION__}catch(a){}if(!i)return a=>{e.setState(a)};let o=i.connect(O.devtoolsOptions(t));o.prefix=t?`${t} > `:"";let r=e.setState;return e.setState=a=>{r(a),o.send(`${o.prefix}setState`,e.getState())},o.subscribe(O.devtoolsSubscribe(o,e,r)),o.send("setUpStore",e.getState()),(a,n)=>{r(a);let p=n||`${o.prefix}action`;o.send(p,e.getState())}}static devtoolsOptions(e){return{name:e,actionsBlacklist:["audioLevel","playlistProgress","connectionQuality"]}}static devtoolsSubscribe(e,t,i){return o=>{var r,a,n,p;if(o.type==="DISPATCH"&&o.state)["JUMP_TO_ACTION","JUMP_TO_STATE"].includes(o.payload.type)?i(JSON.parse(o.state)):t.setState(JSON.parse(o.state));else if(o.type==="DISPATCH"&&((r=o.payload)==null?void 0:r.type)==="COMMIT")e.init(t.getState());else if(o.type==="DISPATCH"&&((a=o.payload)==null?void 0:a.type)==="IMPORT_STATE"){let I=(n=o.payload.nextLiftedState)==null?void 0:n.actionsById;(((p=o.payload.nextLiftedState)==null?void 0:p.computedStates)||[]).forEach(({state:y},w)=>{let J=I[w]||`${e.prefix}setState`;w===0?e.init(y):(i(y),e.send(J,t.getState()))})}}}};
2
2
  //# sourceMappingURL=index.cjs.js.map
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var Rt=Object.defineProperty,Dt=Object.defineProperties;var It=Object.getOwnPropertyDescriptors;var Le=Object.getOwnPropertySymbols;var vt=Object.prototype.hasOwnProperty,Et=Object.prototype.propertyIsEnumerable;var Oe=(s,e,t)=>e in s?Rt(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,w=(s,e)=>{for(var t in e||(e={}))vt.call(e,t)&&Oe(s,t,e[t]);if(Le)for(var t of Le(e))Et.call(e,t)&&Oe(s,t,e[t]);return s},G=(s,e)=>Dt(s,It(e));var bt=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var c=(s,e,t)=>new Promise((i,o)=>{var r=M=>{try{n(t.next(M))}catch(R){o(R)}},a=M=>{try{n(t.throw(M))}catch(R){o(R)}},n=M=>M.done?i(M.value):Promise.resolve(M.value).then(r,a);n((t=t.apply(s,e)).next())});var Pt=bt((zn,_s)=>{_s.exports={version:"0.8.2",license:"MIT",main:"dist/index.cjs.js",module:"dist/index.js",typings:"dist/index.d.ts",files:["dist","src"],engines:{node:">=12"},exports:{".":{require:"./dist/index.cjs.js",import:"./dist/index.js",default:"./dist/index.js"}},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",sideEffects:!1,dependencies:{"@100mslive/hms-video":"0.7.2",eventemitter2:"^6.4.7",immer:"^9.0.6",reselect:"4.0.0",zustand:"3.5.7"},devDependencies:{"ts-node":"^10.4.0",tslib:"^2.2.0"},description:"This is an addon to the core sdk provided by 100ms. It abstracts away the intricacies of data management and provides a flux based reactive data store where data flows in only one direction.",repository:{type:"git",url:"git+https://github.com/100mslive/hms-video-store.git"},keywords:["video","webrtc","conferencing","100ms"],bugs:{url:"https://github.com/100mslive/hms-video-store/issues"},homepage:"https://github.com/100mslive/hms-video-store#readme",gitHead:"60cfa51f3d560ae544d8b3a504ea02b71f8219cf"}});import Us from"immer";import Ks from"zustand/shallow";import Vs from"zustand/vanilla";import{HMSSdk as Bs,isBrowser as qs}from"@100mslive/hms-video";import{EventEmitter2 as ss}from"eventemitter2";var m;(function(n){n.Disconnected="Disconnected",n.Preview="Preview",n.Connecting="Connecting",n.Connected="Connected",n.Reconnecting="Reconnecting",n.Disconnecting="Disconnecting",n.Failed="Failed"})(m||(m={}));var te=()=>({room:{id:"",isConnected:!1,name:"",peers:[],localPeer:"",roomState:m.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:[],preview:{},errors:[]}),se=()=>({peerStats:{},remoteTrackStats:{},localTrackStats:{},localPeer:{id:""}});var we;(function(e){e.CHAT="chat"})(we||(we={}));var P;(function(t){t.INFO="info",t.ERROR="error"})(P||(P={}));var T;(function(S){S.PEER_JOINED="PEER_JOINED",S.PEER_LEFT="PEER_LEFT",S.PEER_LIST="PEER_LIST",S.NEW_MESSAGE="NEW_MESSAGE",S.ERROR="ERROR",S.RECONNECTING="RECONNECTING",S.RECONNECTED="RECONNECTED",S.TRACK_ADDED="TRACK_ADDED",S.TRACK_REMOVED="TRACK_REMOVED",S.TRACK_MUTED="TRACK_MUTED",S.TRACK_UNMUTED="TRACK_UNMUTED",S.TRACK_DEGRADED="TRACK_DEGRADED",S.TRACK_RESTORED="TRACK_RESTORED",S.TRACK_DESCRIPTION_CHANGED="TRACK_DESCRIPTION_CHANGED",S.ROLE_UPDATED="ROLE_UPDATED",S.CHANGE_TRACK_STATE_REQUEST="CHANGE_TRACK_STATE_REQUEST",S.CHANGE_MULTI_TRACK_STATE_REQUEST="CHANGE_MULTI_TRACK_STATE_REQUEST",S.ROOM_ENDED="ROOM_ENDED",S.REMOVED_FROM_ROOM="REMOVED_FROM_ROOM",S.DEVICE_CHANGE_UPDATE="DEVICE_CHANGE_UPDATE",S.PLAYLIST_TRACK_ENDED="PLAYLIST_TRACK_ENDED",S.NAME_UPDATED="NAME_UPDATED",S.METADATA_UPDATED="METADATA_UPDATED"})(T||(T={}));var p;(function(t){t.audio="audio",t.video="video"})(p||(p={}));import{DeviceType as Ct,HMSAudioPluginType as At,HMSException as ci,HMSLogLevel as y,HMSPeerUpdate as U,HMSRoomUpdate as Ii,HMSSimulcastLayer as Nt,HMSTrackUpdate as C,HMSVideoPluginCanvasContextType as xt,HMSVideoPluginType as Lt,parsedUserAgent as Ot,simulcastMapping as ie}from"@100mslive/hms-video";var oe={[U.PEER_JOINED]:T.PEER_JOINED,[U.PEER_LEFT]:T.PEER_LEFT,[U.ROLE_UPDATED]:T.ROLE_UPDATED,[U.NAME_UPDATED]:T.NAME_UPDATED,[U.METADATA_UPDATED]:T.METADATA_UPDATED},re={[C.TRACK_ADDED]:T.TRACK_ADDED,[C.TRACK_REMOVED]:T.TRACK_REMOVED,[C.TRACK_MUTED]:T.TRACK_MUTED,[C.TRACK_UNMUTED]:T.TRACK_UNMUTED,[C.TRACK_DEGRADED]:T.TRACK_DEGRADED,[C.TRACK_RESTORED]:T.TRACK_RESTORED,[C.TRACK_DESCRIPTION_CHANGED]:T.TRACK_DESCRIPTION_CHANGED};import{createSelector as l}from"reselect";function j(s,e){let t,i;if(e)for(let o of e.auxiliaryTracks){let r=s[o];wt(r)&&(i=J(r)?r:i,t=Y(r)?r:t)}return{video:t,audio:i}}function J(s){return s&&s.type==="audio"}function Y(s){return s&&s.type==="video"}function wt(s){return s&&s.source==="screen"}function ae(s){return s&&s.source==="audioplaylist"}function z(s){return s&&s.source==="videoplaylist"}function _e(s){return s?Boolean(s==null?void 0:s.degraded):!1}function W(s,e){return e&&s.tracks[e]?s.tracks[e].enabled:!1}function Ue(s,e){return e&&s.tracks[e]?s.tracks[e].displayEnabled:!1}var D=s=>s.room,_t=s=>s.errors,eo=l(_t,s=>s.length===0?null:s.at(-1)),to=l(D,s=>s.id),v=s=>s.peers,Ke=s=>s.messages.byID,Ve=s=>s.messages.allIDs,g=s=>s.tracks,Be=s=>s.settings,me=s=>s.appData,so=s=>s.devices,Ut=s=>s.speakers,io=s=>s.connectionQualities,Te=l([D],s=>s&&s.isConnected),oo=l([Te,D],(s,e)=>s?e.peerCount!==void 0?e.peerCount||1:e.peers.length:Math.max(e.peerCount!==void 0?e.peerCount:e.peers.length-1,0)),F=l([D,v],(s,e)=>s.peers.map(t=>e[t])),Kt=l(g,s=>Object.values(s)),E=l(D,v,(s,e)=>e[s.localPeer]),ro=s=>s.preview.peer,$=l(D,s=>s.localPeer),ao=l(E,s=>s==null?void 0:s.name),no=l(E,s=>s==null?void 0:s.roleName),A=l(E,s=>s==null?void 0:s.audioTrack),N=l(E,s=>s==null?void 0:s.videoTrack),Vt=l(E,s=>s==null?void 0:s.auxiliaryTracks),qe=l([A,N,Vt],(s,e,t)=>{let i=[...t];return s&&i.unshift(s),e&&i.unshift(e),i}),co=l(F,s=>s.filter(e=>!e.isLocal)),So=l(v,Ut,(s,e)=>{let t=Object.entries(e).sort((i,o)=>{var n,M;let r=((n=i[1])==null?void 0:n.audioLevel)||0;return(((M=o[1])==null?void 0:M.audioLevel)||0)>r?1:-1});if(t.length>0&&t[0][1].audioLevel&&t[0][1].audioLevel>0){let i=t[0][1].peerID;if(i in s)return s[i]}return null}),lo=s=>{let e=E(s);return W(s,e==null?void 0:e.audioTrack)},He=s=>{let e=E(s);return W(s,e==null?void 0:e.videoTrack)},je=s=>{let e=E(s);return Ue(s,e==null?void 0:e.videoTrack)},fe=l(E,g,(s,e)=>{let{video:t,audio:i}=j(e,s);return!!(t||i)}),Bt=l(v,g,(s,e)=>{let t;for(let i in s){let o=s[i],{video:r,audio:a}=j(e,o);if(r)return o;a&&!t&&(t=o)}return t}),uo=l(Bt,s=>!!s),Mo=l(v,g,(s,e)=>{for(let t in s){let i=s[t],{audio:o,video:r}=j(e,i);if(!r&&!!o)return i}}),po=l(v,g,(s,e)=>{let t=[],i=[];for(let o in s){let r=s[o],{video:a,audio:n}=j(e,r);a?t.push(r):n&&i.push(r)}return t.concat(i)}),mo=l(v,g,(s,e)=>{for(let t in e){let i=e[t];if(z(i)&&Y(i)&&i.peerId)return s[i.peerId]}}),To=l(v,g,(s,e)=>{for(let t in e){let i=e[t];if(ae(i)&&i.peerId)return s[i.peerId]}}),Ho=l(Kt,s=>s.filter(_e)),Fe=l(Ve,s=>s.length),fo=l(Ke,s=>Object.values(s).filter(e=>!e.read).length),ne=l(Ve,Ke,(s,e)=>{let t=[];return s.forEach(i=>{t.push(e[i])}),t}),b=l([D],s=>s&&s.roomState),go=l(b,s=>s===m.Preview),ho=l(D,s=>s.roomState!==m.Disconnected),K=s=>s.roles,yo=l([K],s=>Object.keys(s)),ce=l([E,K],(s,e)=>(s==null?void 0:s.roleName)?e[s.roleName]:null),ko=l([ce],s=>{var e;return((e=s==null?void 0:s.subscribeParams)==null?void 0:e.subscribeToRoles)?s.subscribeParams.subscribeToRoles.length>0:!1}),$e=l(ce,s=>s==null?void 0:s.permissions),Po=l(D,s=>s.recording),Ro=l(D,s=>s.rtmp),Do=l(D,s=>s.hls),Io=l(D,s=>s.sessionId),vo=l(D,s=>s.startedAt),Eo=s=>s.sessionMetadata;import{createSelector as Ge}from"reselect";var We=(s=p.audio)=>e=>e.playlist[s].list,ge=(s=p.audio)=>e=>e.playlist[s].selection,Qe=(s=p.audio)=>e=>e.playlist[s].progress,Je=(s=p.audio)=>e=>e.playlist[s].currentTime,Ye=(s=p.audio)=>e=>e.playlist[s].playbackRate,ze=(s=p.audio)=>e=>e.playlist[s].volume,Xe=(s=p.audio)=>Ge(We(s),e=>Object.values(e)),Ze=(s=p.audio)=>Ge(We(s),ge(s),(e,t)=>{if(!!t.id)return e[t.id]}),et={selection:ge(p.audio),progress:Qe(p.audio),currentTime:Je(p.audio),playbackRate:Ye(p.audio),volume:ze(p.audio),list:Xe(p.audio),selectedItem:Ze(p.audio)},tt={selection:ge(p.video),progress:Qe(p.video),currentTime:Je(p.video),playbackRate:Ye(p.video),volume:ze(p.video),list:Xe(p.video),selectedItem:Ze(p.video)};import{createSelector as H}from"reselect";function d(s){return e=>t=>s(t,e)}var X="HMS-Store:",u=class{static v(e,...t){this.log(y.VERBOSE,e,...t)}static d(...e){this.log(y.DEBUG,...e)}static i(...e){this.log(y.INFO,...e)}static w(...e){this.log(y.WARN,...e)}static e(...e){this.log(y.ERROR,...e)}static time(e){this.log(y.TIME,"[HMSPerformanceTiming]",e)}static timeEnd(e){this.log(y.TIMEEND,"[HMSPerformanceTiming]",e,e)}static cleanUp(){performance.clearMarks(),performance.clearMeasures()}static log(e,...t){if(!(this.level.valueOf()>e.valueOf()))switch(e){case y.VERBOSE:{console.log(X,...t);break}case y.DEBUG:{console.debug(X,...t);break}case y.INFO:{console.info(X,...t);break}case y.WARN:{console.warn(X,...t);break}case y.ERROR:{console.error(X,...t);break}case y.TIME:{performance.mark(t[1]);break}case y.TIMEEND:{let i=t[0],o=t[1];try{let r=performance.measure(o,o);this.log(y.DEBUG,i,o,r==null?void 0:r.duration),performance.clearMarks(o),performance.clearMeasures(o)}catch(r){this.log(y.DEBUG,i,o,r)}break}}}};u.level=y.VERBOSE;var he=(s,e)=>e,Z=(s,e)=>e,st=(s,e)=>e,qt=(s,e)=>e,I=H([v,he],(s,e)=>e?s[e]:null),ye=H([g,Z],(s,e)=>e?s[e]:null),jt=H([g,Z],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="video"?t:null}),Ft=H([g,Z],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="audio"?t:null}),$t=H([g,Z],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="audio"&&(t==null?void 0:t.source)==="screen"?t:null}),Gt=H([g,Z],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="video"&&(t==null?void 0:t.source)==="screen"?t:null}),L=d(I),jo=d(H([me,qt],(s,e)=>{if(!!s)return e?s[e]:s})),Fo=(...s)=>H([me],e=>{if(!!e){if(s&&s.length>0){let t=e;for(let i of s){if(!i)return t;t=t==null?void 0:t[i]}return t}return e}}),$o=d(H(I,s=>s==null?void 0:s.name)),Se=d(ye),it=d(jt),Go=d(Ft),Wo=d($t),Qo=d(Gt),Wt=d((s,e)=>{let t=I(s,e);if(t&&t.videoTrack&&t.videoTrack!=="")return s.tracks[t.videoTrack]}),Qt=d((s,e)=>{let t=I(s,e);if(t&&t.audioTrack&&t.audioTrack!=="")return s.tracks[t.audioTrack]}),Jo=Wt,Yo=d((s,e)=>{let t=I(s,e);return(t==null?void 0:t.auxiliaryTracks.map(i=>s.tracks[i]))||[]}),ot=(s,e)=>e?s.speakers[e]:null,zo=d(H(ot,s=>(s==null?void 0:s.audioLevel)||0)),Jt=(s,e)=>{let t=Qt(e)(s);return ot(s,t==null?void 0:t.id)},Xo=d(H(Jt,s=>(s==null?void 0:s.audioLevel)||0)),Zo=d((s,e)=>{if(e)return s.connectionQualities[e]}),er=d((s,e)=>{let t=I(s,e);if(t){let i=t==null?void 0:t.auxiliaryTracks.find(o=>J(s.tracks[o]));return i?s.tracks[i]:void 0}}),tr=d(H(g,I,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return z(o)&&Y(o)});return t?s[t]:void 0})),sr=d(H(g,I,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return z(o)&&J(o)});return t?s[t]:void 0})),ir=d(H(g,I,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return ae(o)&&J(o)});return t?s[t]:void 0})),rt=d(H(g,I,(s,e)=>j(s,e))),or=s=>H(rt(s),e=>e.video),at=s=>H(rt(s),e=>e.audio),rr=d((s,e)=>{let t=I(s,e);return W(s,t==null?void 0:t.audioTrack)}),ar=d((s,e)=>{let t=I(s,e);return W(s,t==null?void 0:t.videoTrack)}),nt=d((s,e)=>{if(e&&s.tracks[e])return s.tracks[e].volume===0}),nr=d((s,e)=>{let t=I(s,e);return nt(t==null?void 0:t.audioTrack)(s)}),cr=d((s,e)=>{let t=at(e)(s);return nt(t==null?void 0:t.id)(s)}),ct=d((s,e)=>{let t=ye(s,e);if(t){if(t.type!=="audio"){u.w("Please pass audio track here");return}return t.volume}}),Sr=d((s,e)=>{let t=I(s,e);return ct(t==null?void 0:t.audioTrack)(s)}),lr=d((s,e)=>{let t=at(e)(s);return ct(t==null?void 0:t.id)(s)}),dr=d((s,e)=>{let t=ye(s,e);if(t){if(t.type!=="video"){u.w("Please pass video track here");return}return t.layer}}),St=H([ne,$,he],(s,e,t)=>{if(!!t)return s.filter(i=>{var o;return!i.recipientPeer&&!((o=i.recipientRoles)==null?void 0:o.length)||i.sender&&![e,t].includes(i.sender)?!1:[e,t].includes(i.recipientPeer)})}),lt=H([ne,st],(s,e)=>{if(!!e)return s.filter(t=>{var i,o;return((i=t.recipientRoles)==null?void 0:i.length)?(o=t.recipientRoles)==null?void 0:o.includes(e):!1})}),Yt=H(ne,s=>s.filter(e=>{var t;return!e.recipientPeer&&!((t=e.recipientRoles)==null?void 0:t.length)})),zt=H([lt,st],s=>s?s.filter(e=>!e.read).length:0),Xt=H([St,he],s=>s?s.filter(e=>!e.read).length:0),ur=H(Yt,s=>s.filter(e=>!e.read).length),Mr=d(St),pr=d(lt),mr=d(zt),Tr=d(Xt),Hr=s=>H([F],e=>e.filter(t=>t.roleName===s)),fr=s=>H([F],e=>e.filter(t=>t.roleName?s.includes(t.roleName):!1)),gr=s=>H(L(s),e=>{try{return(e==null?void 0:e.metadata)&&e.metadata!==""?JSON.parse(e.metadata):{}}catch(t){return console.error("cannot parse peer metadata",t),{}}}),hr=s=>H(L(s),e=>e==null?void 0:e.name);import{createSelector as ke}from"reselect";var Rr=ke([v,g],(s,e)=>Object.values(s).map(i=>{var o;return{peer:i,isAudioEnabled:i.audioTrack?(o=e[i.audioTrack])==null?void 0:o.enabled:!1}})),Zt=s=>s.roleChangeRequests[0]||null,Dr=ke([Zt,v,K],(s,e,t)=>s?{requestedBy:s.requestedBy?e[s.requestedBy]:void 0,role:t[s.roleName],token:s.token}:null),Ir=ke([ce],s=>{var o;let e=!1,t=!1,i=!1;return((o=s==null?void 0:s.publishParams)==null?void 0:o.allowed)&&(e=s.publishParams.allowed.includes("video"),t=s.publishParams.allowed.includes("audio"),i=s.publishParams.allowed.includes("screen")),{video:e,audio:t,screen:i}});import{createSelector as B}from"reselect";var Cr=s=>B([K],e=>e[s]),es=B([N,g],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),ts=B([A,g],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Ar=s=>B([es],e=>e.includes(s)),Nr=s=>B([ts],e=>e.includes(s)),xr=s=>B(F,e=>e.find(s)),Lr=s=>B(F,e=>e.filter(s)),Or=s=>B(D,e=>e.joinedAt&&Date.now()-e.joinedAt.getTime()<=s);var Pe="hmsNotification",Re=class{constructor(e){this.id=0;this.onNotification=(e,t)=>{let i=o=>{if(t){let r;if(Array.isArray(t)?r=t.includes(o.type):r=t===o.type,!r)return}e(o)};return this.eventEmitter.addListener(Pe,i),()=>{this.eventEmitter.removeListener(Pe,i)}};this.store=e,this.eventEmitter=new ss({maxListeners:Object.keys(T).length})}sendPlaylistTrackEnded(e){let t=this.createNotification(T.PLAYLIST_TRACK_ENDED,e,P.INFO);this.emitEvent(t)}sendDeviceChange(e){var i;let t=this.createNotification(T.DEVICE_CHANGE_UPDATE,e,e.error?P.ERROR:P.INFO,`Selected ${e.type} device - ${(i=e.selection)==null?void 0:i.label}`);this.emitEvent(t)}sendLeaveRoom(e){var o;let t=(o=e.requestedBy)==null?void 0:o.name,i=this.createNotification(e.roomEnded||!t?T.ROOM_ENDED:T.REMOVED_FROM_ROOM,e,P.INFO,`${e.roomEnded?"Room ended":"Removed from room"} ${t?`by ${t}`:""}`);this.emitEvent(i)}sendPeerList(e){let t=this.createNotification(T.PEER_LIST,e,P.INFO);this.emitEvent(t)}sendPeerUpdate(e,t){let i=this.store.getState(L(t==null?void 0:t.id))||t,o=oe[e];if(o){let r=this.createNotification(o,i,P.INFO);this.emitEvent(r)}}sendTrackUpdate(e,t){let i=this.store.getState(Se(t)),o=re[e];if(o){let r=this.createNotification(o,i,P.INFO);this.emitEvent(r)}}sendMessageReceived(e){let t=this.createNotification(T.NEW_MESSAGE,e,P.INFO);this.emitEvent(t)}sendError(e){let t=this.createNotification(T.ERROR,e,P.ERROR);this.emitEvent(t)}sendReconnecting(e){let t=this.createNotification(T.RECONNECTING,e,P.ERROR);this.emitEvent(t)}sendReconnected(){let e=this.createNotification(T.RECONNECTED,null,P.INFO);this.emitEvent(e)}sendChangeTrackStateRequest(e){let t=this.createNotification(T.CHANGE_TRACK_STATE_REQUEST,e,P.INFO);this.emitEvent(t)}sendChangeMultiTrackStateRequest(e){let t=this.createNotification(T.CHANGE_MULTI_TRACK_STATE_REQUEST,e,P.INFO);this.emitEvent(t)}emitEvent(e){this.eventEmitter.emit(Pe,e)}createNotification(e,t,i,o=""){return this.id++,{id:this.id,type:e,message:o,data:t,severity:i}}};import{HMSAudioTrack as ns,HMSException as cs,HMSRemoteVideoTrack as Ss,HMSSimulcastLayer as ft}from"@100mslive/hms-video";import{HMSRemoteAudioTrack as is,HMSRemoteVideoTrack as os}from"@100mslive/hms-video";function dt(s){return s instanceof is||s instanceof os}var ut=(s,e)=>{let t=le(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Ie(o,r)?(_(o.auxiliaryTracks,r.auxiliaryTracks)&&(r.auxiliaryTracks=o.auxiliaryTracks),Object.assign(o,r)):ve(o,r)?delete s[i]:Ee(o,r)&&(s[i]=r)}},Mt=(s,e)=>{let t=le(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Ie(o,r)?(rs(o,r),Object.assign(o,r)):ve(o,r)?delete s[i]:Ee(o,r)&&(s[i]=r)}},pt=(s,e)=>{s.room.roomState===m.Preview?s.preview.peer?Object.assign(s.preview.peer,e[s.room.localPeer]):s.preview.peer=e[s.room.localPeer]:delete s.preview.peer},De=(s,e)=>{let t=le(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Ie(o,r)?Object.assign(o,r):ve(o,r)?delete s[i]:Ee(o,r)&&(s[i]=r)}},mt=(s,e,t)=>{let i=t.reduce((r,a)=>(r[a.firstTrackId]=Object.values(e[a.getTrackIDBeingSent()]||{}).sort((n,M)=>!n.rid||!M.rid?0:n.rid<M.rid?-1:1),r),{}),o=le(Object.keys(s),Object.keys(i));for(let r of o){if(!i[r]){delete s[r];continue}s[r]=i[r]}},rs=(s,e)=>{s.plugins&&_(s.plugins,e.plugins)&&(e.plugins=s.plugins),s.type==="video"&&s.layerDefinitions&&_(s.layerDefinitions,e.layerDefinitions)&&(e.layerDefinitions=s.layerDefinitions)},Ie=(s,e)=>s&&e,ve=(s,e)=>s&&!e,Ee=(s,e)=>!s&&e,_=(s,e)=>{if(s===e||s.length===0&&(e==null?void 0:e.length)===0)return!0;if(!s||!e||s.length!==e.length)return!1;for(let t=0;t<s.length;t++)if(s[t]!==e[t])return!1;return!0},le=(s,e)=>{let t=new Set;for(let i of s)t.add(i);for(let i of e)t.add(i);return Array.from(t)};import{HMSLocalAudioTrack as Tt,HMSLocalVideoTrack as de,HMSRemoteAudioTrack as as,HMSRemoteVideoTrack as Ht}from"@100mslive/hms-video";var f=class{static convertPeer(e){var t,i,o;return{id:e.peerId,name:e.name,roleName:(t=e.role)==null?void 0:t.name,isLocal:e.isLocal,videoTrack:(i=e.videoTrack)==null?void 0:i.trackId,audioTrack:(o=e.audioTrack)==null?void 0:o.trackId,auxiliaryTracks:e.auxiliaryTracks.map(r=>r.trackId),customerUserId:e.customerUserId,metadata:e.metadata,joinedAt:e.joinedAt}}static convertTrack(e,t){let i={id:e.trackId,source:e.source,type:e.type,enabled:e.enabled,displayEnabled:e.enabled,peerId:e.peerId||t};return this.enrichTrack(i,e),i}static enrichTrack(e,t){let i=t.getMediaTrackSettings();t instanceof as&&(e.volume=t.getVolume()||0),f.updateDeviceID(e,t),e.type==="video"&&(e.source==="screen"?(e.displaySurface=i.displaySurface,f.enrichScreenTrack(e,t)):e.source==="regular"&&(e.facingMode=i.facingMode),e.height=i.height,e.width=i.width,f.enrichVideoTrack(e,t)),f.enrichPluginsDetails(e,t)}static updateDeviceID(e,t){var i;t instanceof de||t instanceof Tt?e.deviceID=t.settings.deviceId:e.deviceID=(i=t.getMediaTrackSettings())==null?void 0:i.deviceId}static enrichVideoTrack(e,t){t instanceof Ht&&(e.layer=t.getLayer(),e.preferredLayer=t.getPreferredLayer(),e.degraded=t.degraded),(t instanceof Ht||t instanceof de)&&(_(t.getSimulcastDefinitions(),e.layerDefinitions)||(e.layerDefinitions=t.getSimulcastDefinitions()))}static enrichScreenTrack(e,t){var i,o;if(t instanceof de){let r=(i=t.getCaptureHandle)==null?void 0:i.call(t);(r==null?void 0:r.handle)!==((o=e.captureHandle)==null?void 0:o.handle)&&(e.captureHandle=r),t.isCurrentTab&&(e.displaySurface="selfBrowser")}}static enrichPluginsDetails(e,t){(t instanceof de||t instanceof Tt)&&(_(t.getPlugins(),e.plugins)||(e.plugins=t.getPlugins()))}static convertRoom(e){var r,a;let{recording:t,rtmp:i,hls:o}=f.convertRecordingStreamingState(e==null?void 0:e.recording,e==null?void 0:e.rtmp,e==null?void 0:e.hls);return{id:e.id,name:e.name,localPeer:(a=(r=e.localPeer)==null?void 0:r.peerId)!=null?a:"",recording:t,rtmp:i,hls:o,sessionId:e.sessionId,startedAt:e.startedAt,joinedAt:e.joinedAt,peerCount:e.peerCount}}static convertMessage(e){var t,i,o,r,a,n,M;return{sender:(t=e.sender)==null?void 0:t.peerId,senderName:(i=e.sender)==null?void 0:i.name,senderRole:(r=(o=e.sender)==null?void 0:o.role)==null?void 0:r.name,senderUserId:(a=e.sender)==null?void 0:a.customerUserId,recipientPeer:(n=e.recipientPeer)==null?void 0:n.peerId,recipientRoles:(M=e.recipientRoles)==null?void 0:M.map(R=>R.name),time:e.time,type:e.type,message:e.message}}static convertRoles(e){let t={};return e&&e.forEach(i=>{t[i.name]=i}),t}static convertRoleChangeRequest(e){var t;return{requestedBy:(t=e.requestedBy)==null?void 0:t.peerId,roleName:e.role.name,token:e.token}}static convertException(e){return{code:e.code,action:e.action,name:e.name,message:e.message,description:e.description,isTerminal:e.isTerminal,nativeError:e.nativeError,timestamp:new Date}}static convertDeviceChangeUpdate(e){let t={devices:e.devices,selection:e.selection,type:e.type};return e.error&&(t.error=this.convertException(e.error)),t}static convertPlaylist(e){let t=this.getConvertedPlaylistType(e,p.audio),i=this.getConvertedPlaylistType(e,p.video);return{audio:t,video:i}}static convertPlaylistItem(e,t){let i=t.type,o=e.getCurrentSelection(i),r=e.isPlaying(i),a=t.url===(o==null?void 0:o.url);return G(w({},t),{type:t.type,selected:a,playing:a&&r})}static getConvertedPlaylistType(e,t){let i={},o=e.getCurrentSelection(t),r=e.getCurrentProgress(t),a=e.getVolume(t),n=e.getList(t),M=e.getCurrentIndex(t);return e.getList(t).forEach(R=>{i[R.id]=f.convertPlaylistItem(e,R)}),{list:i,selection:{id:o==null?void 0:o.id,hasPrevious:M>0,hasNext:M<n.length-1},progress:r,volume:a,currentTime:e.getCurrentTime(t),playbackRate:e.getPlaybackRate(t)}}static convertRecordingStreamingState(e,t,i){var o;return{recording:{browser:w({running:!1},e==null?void 0:e.browser),server:w({running:!1},e==null?void 0:e.server),hls:w({running:!1},e==null?void 0:e.hls)},rtmp:w({running:!1},t),hls:{variants:((o=i==null?void 0:i.variants)==null?void 0:o.map(r=>r))||[],running:!!(i==null?void 0:i.running),error:i==null?void 0:i.error}}}};var ue=class{constructor(e,t,i,o){this.playlistManager=e;this.syncPlaylistState=i;this.store=o;this.type=t}play(e){return c(this,null,function*(){if(!e){u.w("Please pass id to play");return}yield this.playlistManager.setEnabled(!0,{id:e,type:this.type})})}pause(){return c(this,null,function*(){let e=this.type===p.audio?et:tt,t=this.store.getState(e.selection);if(!t.id){u.w("No item is currently playing to pause");return}yield this.playlistManager.setEnabled(!1,{id:t.id,type:this.type})})}playNext(){return c(this,null,function*(){yield this.playlistManager.playNext(this.type)})}playPrevious(){return c(this,null,function*(){yield this.playlistManager.playPrevious(this.type)})}seek(e){this.playlistManager.seek(e,this.type),this.syncPlaylistState(`seekOn${this.type}Playlist`)}seekTo(e){this.playlistManager.seekTo(e,this.type),this.syncPlaylistState(`seekToOn${this.type}Playlist`)}setVolume(e){this.playlistManager.setVolume(e,this.type),this.syncPlaylistState(`setVolumeOn${this.type}Playlist`)}setList(e){this.playlistManager.setList(e),this.syncPlaylistState(`setListOn${this.type}Playlist`)}stop(){return c(this,null,function*(){yield this.playlistManager.stop(this.type),this.syncPlaylistState(`stop${this.type}Playlist`)})}setIsAutoplayOn(e){this.playlistManager.setIsAutoplayOn(this.type,e)}setPlaybackRate(e){this.playlistManager.setPlaybackRate(this.type,e),this.syncPlaylistState(`set${this.type}PlaybackRate`)}removeItem(e){return c(this,null,function*(){let t=yield this.playlistManager.removeItem(e,this.type);return t&&this.syncPlaylistState(`remove${this.type}PlaylistItem`),t})}clearList(){return c(this,null,function*(){yield this.playlistManager.clearList(this.type),this.syncPlaylistState(`clear${this.type}Playlist`)})}};var be=class{constructor(e,t,i){this.hmsSDKTracks={};this.hmsSDKPeers={};this.isRoomJoinCalled=!1;this.ignoredMessageTypes=[];this.setProgress=({type:e,progress:t})=>{this.setState(i=>{i.playlist[e].progress=t,i.playlist[e].currentTime=this.sdk.getPlaylistManager().getCurrentTime(e)},"playlistProgress")};this.syncPlaylistState=e=>{this.setState(t=>{Object.assign(t.playlist,f.convertPlaylist(this.sdk.getPlaylistManager()))},e)};this.sendPeerUpdateNotification=(e,t)=>{let i=this.store.getState(L(t.peerId)),o=oe[e]||"peerUpdate";this.syncRoomState(o),i||(i=this.store.getState(L(t.peerId))),this.hmsNotifications.sendPeerUpdate(e,i)};this.setState=(e,t)=>this.store.namedSetState(e,t);this.store=e,this.sdk=t,this.hmsNotifications=i}refreshDevices(){return c(this,null,function*(){yield this.sdk.refreshDevices()})}unblockAudio(){return c(this,null,function*(){yield this.sdk.getAudioOutput().unblockAutoplay()})}setVolume(e,t){return c(this,null,function*(){t?yield this.setTrackVolume(e,t):(yield this.sdk.getAudioOutput().setVolume(e),this.syncRoomState("setOutputVolume"))})}setAudioOutputDevice(e){return c(this,null,function*(){(yield this.sdk.getAudioOutput().setDevice(e))&&this.setState(i=>{i.settings.audioOutputDeviceId=e},"setAudioOutputDevice")})}setPreferredLayer(e,t){return c(this,null,function*(){var o;let i=this.hmsSDKTracks[e];if(i)if(i instanceof Ss){if(t===ft.NONE){u.w(`layer ${ft.NONE} will be ignored`);return}if(((o=this.store.getState(it(e)))==null?void 0:o.preferredLayer)===t){u.w(`preferred layer is already ${t}`);return}this.setState(a=>{let n=a.tracks[e];n&&(n.preferredLayer=t)},"setPreferredLayer"),yield i.setPreferredLayer(t)}else u.w(`track ${e} is not a remote video track`);else this.logPossibleInconsistency(`track ${e} not present, unable to set preffer layer`)})}preview(e){return c(this,null,function*(){if(this.isRoomJoinCalled){this.logPossibleInconsistency("attempting to call preview after join was called");return}let t=this.store.getState(b);if(t===m.Preview||t===m.Connecting){this.logPossibleInconsistency("attempting to call preview while room is in preview/connecting");return}try{this.setState(i=>{i.room.roomState=m.Connecting},"connecting"),yield this.sdkPreviewWithListeners(e)}catch(i){throw u.e("Cannot show preview. Failed to connect to room - ",i),i}})}join(e){return c(this,null,function*(){if(this.isRoomJoinCalled){this.logPossibleInconsistency("room join is called again");return}try{this.isRoomJoinCalled=!0,this.setState(t=>{t.room.roomState=m.Connecting},"join"),yield this.sdkJoinWithListeners(e)}catch(t){throw this.isRoomJoinCalled=!1,u.e("Failed to connect to room - ",t),t}})}leave(){return c(this,null,function*(){let e=this.store.getState(Te),t=!0;e||(t=!1,this.logPossibleInconsistency("room leave is called when no room is connected"));let i=this.store.getState(b);return this.setState(o=>{o.room.roomState=m.Disconnecting},"leaving"),this.sdk.leave(t).then(()=>{this.resetState("leave"),u.i("left room")}).catch(o=>{u.e("error in leaving room - ",o),this.setState(r=>{r.room.roomState=i},"revertLeave")})})}setScreenShareEnabled(e,t){return c(this,null,function*(){typeof t=="boolean"&&(t={audioOnly:t});try{e?yield this.startScreenShare(t):yield this.stopScreenShare()}catch(i){throw this.hmsNotifications.sendError(f.convertException(i)),i}})}addTrack(e,t="regular"){return c(this,null,function*(){yield this.sdk.addTrack(e,t),this.syncRoomState("addTrack")})}removeTrack(e){return c(this,null,function*(){yield this.sdk.removeTrack(e),this.syncRoomState("removeTrack")})}setLocalAudioEnabled(e){return c(this,null,function*(){let t=this.store.getState(A);t&&(yield this.setEnabledTrack(t,e))})}setLocalVideoEnabled(e){return c(this,null,function*(){let t=this.store.getState(N);t&&(yield this.setEnabledTrack(t,e))})}setEnabledTrack(e,t){return c(this,null,function*(){var r;if(((r=this.store.getState().tracks[e])==null?void 0:r.enabled)===t){this.logPossibleInconsistency(`local track[${e}] enabled state - ${t}`);return}this.setState(a=>{a.tracks[e]?a.tracks[e].displayEnabled=t:this.logPossibleInconsistency("track id not found for setEnabled")},"displayEnabled");try{yield this.setEnabledSDKTrack(e,t),this.syncRoomState("setEnabled")}catch(a){throw this.setState(n=>{n.tracks[e].displayEnabled=!t},"rollbackDisplayEnabled"),this.hmsNotifications.sendError(f.convertException(a)),a}let o=t?C.TRACK_UNMUTED:C.TRACK_MUTED;this.hmsNotifications.sendTrackUpdate(o,e)})}setAudioSettings(e){return c(this,null,function*(){let t=this.store.getState(A);t&&(yield this.setSDKLocalAudioTrackSettings(t,e),this.syncRoomState("setAudioSettings"))})}setVideoSettings(e){return c(this,null,function*(){let t=this.store.getState(N);t&&(yield this.setSDKLocalVideoTrackSettings(t,e),this.syncRoomState("setVideoSettings"))})}sendMessage(e){this.sendBroadcastMessage(e)}sendBroadcastMessage(e,t){return c(this,null,function*(){let i=yield this.sdk.sendBroadcastMessage(e,t);this.updateMessageInStore(i,{message:e,type:t})})}sendGroupMessage(e,t,i){return c(this,null,function*(){let o=this.store.getState(K),r=t.map(n=>o[n]),a=yield this.sdk.sendGroupMessage(e,r,i);this.updateMessageInStore(a,{message:e,recipientRoles:t,type:i})})}sendDirectMessage(e,t,i){return c(this,null,function*(){let o=this.hmsSDKPeers[t],r=yield this.sdk.sendDirectMessage(e,o,i);this.updateMessageInStore(r,{message:e,recipientPeer:o.peerId,type:i})})}updateMessageInStore(e,t){if(!e)throw u.w("sendMessage","Failed to send message",t),Error(`sendMessage Failed - ${JSON.stringify(t)}`);let i=f.convertMessage(e);return i.read=!0,i.senderName="You",i.ignored=this.ignoredMessageTypes.includes(i.type),this.putMessageInStore(i),i}setMessageRead(e,t){this.setState(i=>{t?i.messages.byID[t]?i.messages.byID[t].read=e:this.logPossibleInconsistency("no message with id is found"):i.messages.allIDs.forEach(o=>{i.messages.byID[o].read=e})},"setMessageRead")}attachVideo(e,t){return c(this,null,function*(){if(this.localAndVideoUnmuting(e))return new Promise(i=>{let o=this.store.subscribe(r=>c(this,null,function*(){r&&(yield this.attachVideoInternal(e,t),o(),i())}),He)});yield this.attachVideoInternal(e,t)})}detachVideo(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];(i==null?void 0:i.type)==="video"?i.removeSink(t):(t&&(t.srcObject=null),this.logPossibleInconsistency("no video track found to remove sink"))})}addPluginToVideoTrack(e,t){return c(this,null,function*(){return this.addRemoveVideoPlugin(e,"add",t)})}addPluginToAudioTrack(e){return c(this,null,function*(){return this.addRemoveAudioPlugin(e,"add")})}validateVideoPluginSupport(e){let t={};if(t.isSupported=!1,!e)return u.w("no plugin passed in for checking support"),t.errMsg="no plugin passed in for checking support",t;let i=this.store.getState(N);if(!i)return u.w("video Track not added to local peer yet"),t.errMsg="call this function only after local peer has video track",t;let o=this.hmsSDKTracks[i];return o?t=o.validatePlugin(e):(u.w(`track ${i} not present, unable to validate plugin`),t.errMsg=`track ${i} not present, unable to validate plugin`),t}validateAudioPluginSupport(e){let t={};if(t.isSupported=!1,!e)return u.w('no plugin passed in for checking support"'),t.errMsg='no plugin passed in for checking support"',t;let i=this.store.getState(A);if(!i)return u.w("audio track not added to local peer yet"),t.errMsg="call this function only after local peer has audio track",t;let o=this.hmsSDKTracks[i];return o?t=o.validatePlugin(e):(u.w(`track ${i} not present, unable to validate plugin`),t.errMsg=`track ${i} not present, unable to validate plugin`),t}removePluginFromVideoTrack(e){return c(this,null,function*(){return this.addRemoveVideoPlugin(e,"remove")})}removePluginFromAudioTrack(e){return c(this,null,function*(){return this.addRemoveAudioPlugin(e,"remove")})}changeRole(e,t,i=!1){return c(this,null,function*(){let o=this.hmsSDKPeers[e];if(!o){this.logPossibleInconsistency(`Unknown peer ID given ${e} for changerole`);return}yield this.sdk.changeRoleOfPeer(o,t,i)})}changeRoleOfPeer(e,t,i=!1){return c(this,null,function*(){let o=this.hmsSDKPeers[e];if(!o){this.logPossibleInconsistency(`Unknown peer ID given ${e} for changerole`);return}yield this.sdk.changeRoleOfPeer(o,t,i)})}changeRoleOfPeersWithRoles(e,t){return c(this,null,function*(){let i=this.sdk.getRoles().filter(o=>e.includes(o.name));yield this.sdk.changeRoleOfPeersWithRoles(i,t)})}acceptChangeRole(e){return c(this,null,function*(){let t=e.requestedBy?this.hmsSDKPeers[e.requestedBy.id]:void 0;t||u.w(`peer for which role change is requested no longer available - ${e.requestedBy}`);let i={requestedBy:t,role:e.role,token:e.token};yield this.sdk.acceptChangeRole(i),this.removeRoleChangeRequest(e)})}initAppData(e){this.setState(t=>{t.appData=e},"initAppData")}setAppData(e,t,i){let o=(t==null?void 0:t.constructor.name)==="Object";this.setState(r=>{if(r.appData)i&&o?Object.assign(r.appData[e],t):r.appData[e]=t;else{let a={[e]:t};r.appData=a}},`setAppData-${e}`)}rejectChangeRole(e){this.removeRoleChangeRequest(e)}endRoom(e,t){return c(this,null,function*(){let i=this.store.getState($e);if(!(i==null?void 0:i.endRoom)){u.w("You are not allowed to perform this action - endRoom");return}let o=this.store.getState(b);this.setState(r=>{r.room.roomState=m.Disconnecting},"endingRoom");try{yield this.sdk.endRoom(e,t),this.resetState("endRoom")}catch(r){u.e("error in ending room - ",r),this.setState(a=>{a.room.roomState=o},"revertEndRoom")}})}removePeer(e,t){return c(this,null,function*(){let i=this.hmsSDKPeers[e];if(i&&!i.isLocal)yield this.sdk.removePeer(i,t);else{this.logPossibleInconsistency(`No remote peer found for peerID - ${e}`);return}})}startRTMPOrRecording(e){return c(this,null,function*(){yield this.sdk.startRTMPOrRecording(e)})}stopRTMPAndRecording(){return c(this,null,function*(){yield this.sdk.stopRTMPAndRecording()})}startHLSStreaming(e){return c(this,null,function*(){yield this.sdk.startHLSStreaming(e)})}stopHLSStreaming(e){return c(this,null,function*(){yield this.sdk.stopHLSStreaming(e)})}sendHLSTimedMetadata(e){return c(this,null,function*(){yield this.sdk.sendHLSTimedMetadata(e)})}changeName(e){return c(this,null,function*(){yield this.sdk.changeName(e)})}changeMetadata(e){return c(this,null,function*(){typeof e!="string"&&(e=JSON.stringify(e)),yield this.sdk.changeMetadata(e)})}setSessionMetadata(e){return c(this,null,function*(){yield this.sdk.setSessionMetadata(e),this.setState(t=>{t.sessionMetadata=e},"setSessionMetadata")})}populateSessionMetadata(){return c(this,null,function*(){let e=yield this.sdk.getSessionMetadata();this.setState(t=>{t.sessionMetadata=e},"populateSessionMetadata")})}setRemoteTrackEnabled(e,t){return c(this,null,function*(){if(typeof e=="string"){let i=this.hmsSDKTracks[e];i&&dt(i)?yield this.sdk.changeTrackState(i,t):this.logPossibleInconsistency(`No remote track with ID ${e} found for change track state`)}else Array.isArray(e)&&e.forEach(i=>this.setRemoteTrackEnabled(i,t))})}setRemoteTracksEnabled(e){return c(this,null,function*(){let t={enabled:e.enabled,type:e.type,source:e.source};if(e.roles){let i=this.store.getState(K);t.roles=e.roles.map(o=>i[o])}yield this.sdk.changeMultiTrackState(t)})}setLogLevel(e){u.level=e,this.sdk.setLogLevel(e)}setFrameworkInfo(e){this.sdk.setFrameworkInfo(e)}ignoreMessageTypes(e,t=!1){if(t)this.ignoredMessageTypes=e;else for(let i of e)this.ignoredMessageTypes.includes(i)||this.ignoredMessageTypes.push(i)}resetState(e="resetState"){this.isRoomJoinCalled=!1,this.hmsSDKTracks={},u.cleanUp(),this.setState(t=>{Object.assign(t,te())},e)}sdkJoinWithListeners(e){return c(this,null,function*(){yield this.sdk.join(e,{onJoin:this.onJoin.bind(this),onRoomUpdate:this.onRoomUpdate.bind(this),onPeerUpdate:this.onPeerUpdate.bind(this),onTrackUpdate:this.onTrackUpdate.bind(this),onMessageReceived:this.onMessageReceived.bind(this),onError:this.onError.bind(this),onReconnected:this.onReconnected.bind(this),onReconnecting:this.onReconnecting.bind(this),onRoleChangeRequest:this.onRoleChangeRequest.bind(this),onRoleUpdate:this.onRoleUpdate.bind(this),onDeviceChange:this.onDeviceChange.bind(this),onChangeTrackStateRequest:this.onChangeTrackStateRequest.bind(this),onChangeMultiTrackStateRequest:this.onChangeMultiTrackStateRequest.bind(this),onRemovedFromRoom:this.onRemovedFromRoom.bind(this),onNetworkQuality:this.onNetworkQuality.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)}),this.sdk.addConnectionQualityListener({onConnectionQualityUpdate:this.onConnectionQualityUpdate.bind(this)})})}onRemovedFromRoom(e){var o;let t=this.store.getState(L((o=e.requestedBy)==null?void 0:o.peerId));this.hmsNotifications.sendLeaveRoom(G(w({},e),{requestedBy:t||void 0}));let i=e.roomEnded||!t?"roomEnded":"removedFromRoom";u.i(`resetting state after peer removed ${i}`,e),this.resetState(i)}onDeviceChange(e){let t=e.devices;if(!t)return;let i=this.store.getState(E);if(this.setState(o=>{_(o.devices.audioInput,t.audioInput)||(o.devices.audioInput=t.audioInput),_(o.devices.videoInput,t.videoInput)||(o.devices.videoInput=t.videoInput),_(o.devices.audioOutput,t.audioOutput)||(o.devices.audioOutput=t.audioOutput),this.hmsSDKPeers[i==null?void 0:i.id]&&Object.assign(o.settings,this.getMediaSettings(this.hmsSDKPeers[i==null?void 0:i.id]))},"deviceChange"),e.selection){let o=f.convertDeviceChangeUpdate(e);this.hmsNotifications.sendDeviceChange(o)}}sdkPreviewWithListeners(e){return c(this,null,function*(){yield this.sdk.preview(e,{onPreview:this.onPreview.bind(this),onError:this.onError.bind(this),onReconnected:this.onReconnected.bind(this),onReconnecting:this.onReconnecting.bind(this),onDeviceChange:this.onDeviceChange.bind(this),onRoomUpdate:this.onRoomUpdate.bind(this),onPeerUpdate:this.onPeerUpdate.bind(this),onNetworkQuality:this.onNetworkQuality.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)})})}onNetworkQuality(e){this.setState(t=>{var o;let i=t.room.localPeer||((o=this.sdk.getLocalPeer())==null?void 0:o.peerId);i&&(t.connectionQualities[i]={peerID:i,downlinkQuality:e})},"ConnectionQuality")}startScreenShare(e){return c(this,null,function*(){this.store.getState(fe)?this.logPossibleInconsistency("start screenshare is called while it's on"):(yield this.sdk.startScreenShare(()=>this.syncRoomState("screenshareStopped"),e),this.syncRoomState("startScreenShare"))})}stopScreenShare(){return c(this,null,function*(){this.store.getState(fe)?(yield this.sdk.stopScreenShare(),this.syncRoomState("stopScreenShare")):this.logPossibleInconsistency("stop screenshare is called while it's not on")})}attachVideoInternal(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i&&i.type==="video"?yield i.addSink(t):this.logPossibleInconsistency("no video track found to add sink")})}syncRoomState(e){e=`${e}_fullSync`,u.time(`store-sync-${e}`);let t={},i=[],o={},r={},a={},n=this.sdk.getPeers();for(let h of n){let x=f.convertPeer(h);t[x.id]=x,i.push(x.id),this.hmsSDKPeers[x.id]=h;let Q=[h.audioTrack,h.videoTrack,...h.auxiliaryTracks];for(let ee of Q){if(!ee)continue;let xe=f.convertTrack(ee);o[xe.id]=xe,r[ee.trackId]=ee}x.isLocal&&Object.assign(a,this.getMediaSettings(h))}let M=this.sdk.getRecordingState(),R=this.sdk.getRTMPState(),q=this.sdk.getHLSState();this.setState(h=>{h.room.peers=i;let x=h.peers,Q=h.tracks;ut(x,t),Mt(Q,o),Object.assign(h.settings,a),this.hmsSDKTracks=r,Object.assign(h.roles,f.convertRoles(this.sdk.getRoles())),Object.assign(h.playlist,f.convertPlaylist(this.sdk.getPlaylistManager())),Object.assign(h.room,f.convertRecordingStreamingState(M,R,q)),pt(h,x)},e),u.timeEnd(`store-sync-${e}`)}onPreview(e){this.setState(t=>{Object.assign(t.room,f.convertRoom(e)),t.room.roomState=m.Preview},"previewStart"),this.syncRoomState("previewSync")}onJoin(e){let t=this.sdk.getPlaylistManager();this.audioPlaylist=new ue(t,p.audio,this.syncPlaylistState.bind(this),this.store),this.videoPlaylist=new ue(t,p.video,this.syncRoomState.bind(this),this.store),this.syncRoomState("joinSync"),this.setState(i=>{Object.assign(i.room,f.convertRoom(e)),i.room.isConnected=!0,i.room.roomState=m.Connected},"joined"),t.onProgress(this.setProgress),t.onNewTrackStart(i=>{this.syncPlaylistState(`${i.type}PlaylistUpdate`)}),t.onPlaylistEnded(i=>{this.syncPlaylistState(`${i}PlaylistEnded`)}),t.onCurrentTrackEnded(i=>{this.hmsNotifications.sendPlaylistTrackEnded(f.convertPlaylistItem(t,i)),this.syncPlaylistState(`${i.type}PlaylistItemEnded`)})}onRoomUpdate(e,t){this.setState(i=>{Object.assign(i.room,f.convertRoom(t))},e)}onPeerUpdate(e,t){if(![U.BECAME_DOMINANT_SPEAKER,U.RESIGNED_DOMINANT_SPEAKER].includes(e)){if(Array.isArray(t)){this.syncRoomState("peersJoined");let i=[];for(let o of t){let r=this.store.getState(L(o.peerId));r&&i.push(r)}this.hmsNotifications.sendPeerList(i);return}this.sendPeerUpdateNotification(e,t)}}onTrackUpdate(e,t,i){if(e===C.TRACK_REMOVED)this.hmsNotifications.sendTrackUpdate(e,t.trackId),this.handleTrackRemove(t,i);else{let o=re[e]||"trackUpdate";this.syncRoomState(o),this.hmsNotifications.sendTrackUpdate(e,t.trackId)}}onMessageReceived(e){let t=f.convertMessage(e);t.read=!1,t.ignored=this.ignoredMessageTypes.includes(t.type),this.putMessageInStore(t),this.hmsNotifications.sendMessageReceived(t)}putMessageInStore(e){e.ignored||this.setState(t=>{e.id=String(this.store.getState(Fe)+1),t.messages.byID[e.id]=e,t.messages.allIDs.push(e.id)},"newMessage")}onAudioLevelUpdate(e){this.setState(t=>{let i={};e.forEach(r=>{if(!r.track||!r.peer)return;let a=r.track.trackId;i[a]=r.audioLevel,t.speakers[a]||(t.speakers[a]={audioLevel:r.audioLevel,peerID:r.peer.peerId,trackID:a})});let o=Object.entries(t.speakers);for(let[r,a]of o)a.audioLevel=i[r]||0,a.audioLevel===0&&delete t.speakers[r]},"audioLevel")}onConnectionQualityUpdate(e){this.setState(t=>{let i=new Set;e.forEach(r=>{let a=r.peerID;!a||(i.add(a),t.connectionQualities[a]?Object.assign(t.connectionQualities[a],r):t.connectionQualities[a]=r)});let o=Object.keys(t.connectionQualities);for(let r of o)i.has(r)||delete t.connectionQualities[r]},"connectionQuality")}onChangeTrackStateRequest(e){var r;let t=this.store.getState(L((r=e.requestedBy)==null?void 0:r.peerId)),i=this.getStoreLocalTrackIDfromSDKTrack(e.track),o=this.store.getState(Se(i));if(!o)return this.logPossibleInconsistency(`Not found track for which track state change was requested, ${e.track}`);e.enabled||this.syncRoomState("changeTrackStateRequest"),this.hmsNotifications.sendChangeTrackStateRequest({requestedBy:t||void 0,track:o,enabled:e.enabled})}onChangeMultiTrackStateRequest(e){var r;let t=this.store.getState(L((r=e.requestedBy)==null?void 0:r.peerId));e.enabled||this.syncRoomState("changeMultiTrackStateRequest");let i=[],o=this.store.getState(g);for(let a of e.tracks){let n=this.getStoreLocalTrackIDfromSDKTrack(a);n&&o[n]&&i.push(o[n])}this.hmsNotifications.sendChangeMultiTrackStateRequest({requestedBy:t||void 0,tracks:i,enabled:e.enabled,type:e.type,source:e.source})}onReconnected(){this.syncRoomState("reconnectedSync"),this.hmsNotifications.sendReconnected(),this.setState(e=>{e.room.roomState=e.room.isConnected?m.Connected:m.Preview},"reconnected")}onReconnecting(e){let t=f.convertException(e);u.e("Reconnection: received error from sdk",t),this.hmsNotifications.sendReconnecting(t),this.setState(i=>{i.room.roomState=m.Reconnecting,i.errors.push(t)},"reconnecting")}onError(e){let t=f.convertException(e);t.isTerminal?(this.leave().then(()=>u.e("error from SDK, left room.")),this.setState(i=>{i.room.roomState=m.Failed,i.errors.push(t)},"errorTerminal")):this.store.getState().errors.length<50&&this.setState(o=>{o.errors.push(t)},"error"),this.syncRoomState("errorSync"),this.hmsNotifications.sendError(t),u.e("received error from sdk",t instanceof cs?`${t}`:t)}handleTrackRemove(e,t){this.setState(i=>{let o=i.peers[t.peerId],r=i.tracks,a=e.trackId;if(this.isSameStoreSDKTrack(a,o==null?void 0:o.audioTrack))o==null||delete o.audioTrack;else if(this.isSameStoreSDKTrack(a,o==null?void 0:o.videoTrack))o==null||delete o.videoTrack;else{let n=o==null?void 0:o.auxiliaryTracks.indexOf(a);n>-1&&this.isSameStoreSDKTrack(a,o==null?void 0:o.auxiliaryTracks[n])&&(o==null||o.auxiliaryTracks.splice(n,1))}delete r[a],delete this.hmsSDKTracks[a]},"trackRemoved")}setEnabledSDKTrack(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setEnabled(t):this.logPossibleInconsistency(`track ${e} not present, unable to enabled/disable`)})}setSDKLocalVideoTrackSettings(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setSettings(t):this.logPossibleInconsistency(`local track ${e} not present, unable to set settings`)})}setSDKLocalAudioTrackSettings(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setSettings(t):this.logPossibleInconsistency(`local track ${e} not present, unable to set settings`)})}getMediaSettings(e){var r;let t=this.store.getState(Be),i=e.audioTrack,o=e.videoTrack;return{audioInputDeviceId:(i==null?void 0:i.settings.deviceId)||t.audioInputDeviceId,videoInputDeviceId:(o==null?void 0:o.settings.deviceId)||t.videoInputDeviceId,audioOutputDeviceId:(r=this.sdk.getAudioOutput().getDevice())==null?void 0:r.deviceId}}setTrackVolume(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[t];i?i instanceof ns?(yield i.setVolume(e),this.setState(o=>{let r=o.tracks[t];r&&r.type==="audio"&&(r.volume=e)},"trackVolume")):u.w(`track ${t} is not an audio track`):this.logPossibleInconsistency(`track ${t} not present, unable to set volume`)})}localAndVideoUnmuting(e){if(this.store.getState(E).videoTrack!==e)return!1;let i=this.store.getState(je),o=this.store.getState(He);return i&&!o}logPossibleInconsistency(e){u.w("possible inconsistency detected - ",e)}addRemoveVideoPlugin(e,t,i){return c(this,null,function*(){if(!e){u.w("Invalid plugin received in store");return}let o=this.store.getState(N);if(o){let r=this.hmsSDKTracks[o];r?(t==="add"?yield r.addPlugin(e,i):t==="remove"&&(yield r.removePlugin(e)),this.syncRoomState(`${t}VideoPlugin`)):this.logPossibleInconsistency(`track ${o} not present, unable to remove plugin`)}})}addRemoveAudioPlugin(e,t){return c(this,null,function*(){if(!e){u.w("Invalid plugin received in store");return}let i=this.store.getState(A);if(i){let o=this.hmsSDKTracks[i];o?(t==="add"?yield o.addPlugin(e):t==="remove"&&(yield o.removePlugin(e)),this.syncRoomState(`${t}AudioPlugin`)):this.logPossibleInconsistency(`track ${i} not present, unable to remove plugin`)}})}isSameStoreSDKTrack(e,t){var i;return t?((i=this.hmsSDKTracks[t])==null?void 0:i.trackId)===e:!1}onRoleChangeRequest(e){this.setState(t=>{t.roleChangeRequests.length===0&&t.roleChangeRequests.push(f.convertRoleChangeRequest(e))},"roleChangeRequest")}removeRoleChangeRequest(e){this.setState(t=>{let i=t.roleChangeRequests.findIndex(o=>o.token===e.token);i!==-1&&t.roleChangeRequests.splice(i,1)},"removeRoleChangeRequest")}onRoleUpdate(){this.syncRoomState("roleUpdate")}getStoreLocalTrackIDfromSDKTrack(e){return this.store.getState(qe).find(i=>this.hmsSDKTracks[i].trackId===e.trackId)}};import{isBrowser as ls}from"@100mslive/hms-video";var Me=s=>ls?`${s} ${document.title}`:s;var Ce=class{constructor(e,t,i){this.store=e,this.actions=t,this.notifications=i}getStore(){return this.store}getActions(){return this.actions}getNotifications(){return{onNotification:this.notifications.onNotification}}};var gt=(s,e,t)=>{let i;t.getState(b)===m.Connected&&(i=ht(s,e,t)),t.subscribe(o=>{[m.Connected,m.Reconnecting].includes(o)?i||(i=ht(s,e,t)):[m.Disconnected,m.Failed].includes(o)&&i&&(Ms(e,o),i(),i=void 0)},b)},ht=(s,e,t)=>{var r,a;let i=ds(t,e);(r=s.getWebrtcInternals())==null||r.start();let o=(a=s.getWebrtcInternals())==null?void 0:a.onStatsChange(n=>us(e,n,t,s));return()=>{i(),o&&o()}},ds=(s,e)=>{let t,i,o;return s.getState($)?e.namedSetState(r=>{r.localPeer.id=s.getState($)},"localpeer-id"):t=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.id=r},"localpeer-id")},$),s.getState(N)?e.namedSetState(r=>{r.localPeer.videoTrack=s.getState(N)},"localpeer-videotrack-id"):i=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.videoTrack=r},"localpeer-videotrack-id")},N),s.getState(A)?e.namedSetState(r=>{r.localPeer.audioTrack=s.getState(A)},"localpeer-audiotrack-id"):o=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.audioTrack=r},"localpeer-audiotrack-id")},A),()=>{t==null||t(),i==null||i(),o==null||o()}},us=(s,e,t,i)=>{let o=t.getState(g);s.namedSetState(r=>{let a=t.getState($),n={},M=Object.keys(o).filter(q=>o[q].peerId!==a);for(let q of M){let h=e.getRemoteTrackStats(q);h&&(n[q]=h)}De(r.remoteTrackStats,n);let R={[a]:e.getLocalPeerStats()};De(r.peerStats,R),mt(r.localTrackStats,e.getLocalTrackStats(),i.store.getLocalPeerTracks())},"webrtc-stats")},Ms=(s,e="resetState")=>{s.namedSetState(t=>{Object.assign(t,se())},e)};var pe=class{constructor(e,t){this.hmsStore=e;this.sdk=t;this.store=O.createNewHMSStore(Me("HMSStatsStore"),se),this.getState=this.store.getState,this.subscribe=this.store.subscribe,this.getPublishPeerConnection=()=>new Promise(i=>{var o,r;this.hmsStore.getState(b)==="Connected"?i((r=(o=this.sdk)==null?void 0:o.getWebrtcInternals())==null?void 0:r.getPublishPeerConnection()):this.hmsStore.subscribe(a=>{var n,M;a==="Connected"&&i((M=(n=this.sdk)==null?void 0:n.getWebrtcInternals())==null?void 0:M.getPublishPeerConnection())},b)}),this.getSubscribePeerConnection=()=>new Promise(i=>{var o,r;this.hmsStore.getState(b)==="Connected"?i((r=(o=this.sdk)==null?void 0:o.getWebrtcInternals())==null?void 0:r.getSubscribePeerConnection()):this.hmsStore.subscribe(a=>{var n,M;a==="Connected"&&i((M=(n=this.sdk)==null?void 0:n.getWebrtcInternals())==null?void 0:M.getSubscribePeerConnection())},b)}),!!this.sdk&&gt(this.sdk,this.store,this.hmsStore)}};import{createSelector as k}from"reselect";var ps=s=>s.localPeer.id,ms=s=>s.localPeer.audioTrack,Ts=s=>s.localPeer.videoTrack,Hs=(s,e)=>e,yt=(s,e)=>e,fs=s=>s.remoteTrackStats,kt=s=>s.peerStats,Ae=s=>s.localTrackStats,V=k([kt,ps],(s,e)=>s[e]),gs=k(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.packetsLost}),hs=k(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.jitter}),ys=k(V,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bitrate}),ks=k(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bitrate}),Ps=k(V,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.availableOutgoingBitrate}),Rs=k(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.availableIncomingBitrate}),Ds=k(V,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bytesSent}),Is=k(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bytesReceived}),vs=k([kt,Hs],(s,e)=>e?s[e]:void 0),Es=k([fs,yt],(s,e)=>e?s[e]:void 0),Ne=k([Ae,yt],(s,e)=>e?s[e]:void 0),bs=d(vs),Cs=d(Es),As=k([Ae,ms],(s,e)=>{var t;return e?(t=s[e])==null?void 0:t[0]:void 0}),Ns=d(k(Ne,s=>s==null?void 0:s[0])),xs=k([Ae,Ts],(s,e)=>{var t;return e?(t=s[e])==null?void 0:t[0]:void 0}),Ls=d(k(Ne,s=>s)),Os=s=>d(k(Ne,e=>{let t=Object.keys(ie).find(i=>ie[i]===s);return s&&(e==null?void 0:e.find(i=>i.rid===t))||(e==null?void 0:e[0])})),ws={localPeerStats:V,packetsLost:gs,jitter:hs,publishBitrate:ys,subscribeBitrate:ks,availablePublishBitrate:Ps,availableSubscribeBitrate:Rs,totalBytesSent:Ds,totalBytesReceived:Is,peerStatsByID:bs,trackStatsByID:Cs,localAudioTrackStatsByID:Ns,localVideoTrackStatsByID:Ls,localVideoTrackStatsByLayer:Os,localAudioTrackStats:As,localVideoTrackStats:xs};var O=class{constructor(e,t,i){this.getStats=()=>(this.stats||(this.stats=new pe(this.store,this.sdk)),this.stats);e?this.store=e:this.store=O.createNewHMSStore(Me("HMSStore"),te),i?this.notifications=i:this.notifications=new Re(this.store),t?this.actions=t:(this.sdk=new Bs,this.actions=new be(this.store,this.sdk,this.notifications)),this.actions.setFrameworkInfo({type:"js",sdkVersion:Pt().version}),this.initialTriggerOnSubscribe=!1,qs&&(window.__hms=this,window.__beam=new Ce(this.store,this.actions,this.notifications))}triggerOnSubscribe(){this.initialTriggerOnSubscribe||(O.makeStoreTriggerOnSubscribe(this.store),this.initialTriggerOnSubscribe=!0)}getStore(){return this.store}getHMSActions(){return this.actions}getActions(){return this.actions}getNotifications(){return{onNotification:this.notifications.onNotification}}static createNewHMSStore(e,t){let i=Vs(()=>t()),o=i.setState;i.setState=n=>{let M=typeof n=="function"?Us(n):n;o(M)};let r=i.getState;i.getState=n=>n?n(r()):r(),O.compareWithShallowCheckInSubscribe(i);let a=O.setUpDevtools(i,e);return G(w({},i),{namedSetState:a})}static makeStoreTriggerOnSubscribe(e){let t=e.subscribe;e.subscribe=(i,o,r)=>(i(e.getState(o),void 0),t(i,o,r))}static compareWithShallowCheckInSubscribe(e){let t=e.subscribe;e.subscribe=(i,o,r)=>(o||(o=a=>a),r=r||Ks,t(i,o,r))}static setUpDevtools(e,t){let i;try{i=window.__REDUX_DEVTOOLS_EXTENSION__||window.top.__REDUX_DEVTOOLS_EXTENSION__}catch(a){}if(!i)return a=>{e.setState(a)};let o=i.connect(O.devtoolsOptions(t));o.prefix=t?`${t} > `:"";let r=e.setState;return e.setState=a=>{r(a),o.send(`${o.prefix}setState`,e.getState())},o.subscribe(O.devtoolsSubscribe(o,e,r)),o.send("setUpStore",e.getState()),(a,n)=>{r(a);let M=n||`${o.prefix}action`;o.send(M,e.getState())}}static devtoolsOptions(e){return{name:e,actionsBlacklist:["audioLevel","playlistProgress","connectionQuality"]}}static devtoolsSubscribe(e,t,i){return o=>{var r,a,n,M;if(o.type==="DISPATCH"&&o.state)["JUMP_TO_ACTION","JUMP_TO_STATE"].includes(o.payload.type)?i(JSON.parse(o.state)):t.setState(JSON.parse(o.state));else if(o.type==="DISPATCH"&&((r=o.payload)==null?void 0:r.type)==="COMMIT")e.init(t.getState());else if(o.type==="DISPATCH"&&((a=o.payload)==null?void 0:a.type)==="IMPORT_STATE"){let R=(n=o.payload.nextLiftedState)==null?void 0:n.actionsById;(((M=o.payload.nextLiftedState)==null?void 0:M.computedStates)||[]).forEach(({state:h},x)=>{let Q=R[x]||`${e.prefix}setState`;x===0?e.init(h):(i(h),e.send(Q,t.getState()))})}}}};export{Ce as BeamControllerStore,Ct as DeviceType,At as HMSAudioPluginType,y as HMSLogLevel,we as HMSMessageType,P as HMSNotificationSeverity,T as HMSNotificationTypes,p as HMSPlaylistType,O as HMSReactiveStore,m as HMSRoomState,Nt as HMSSimulcastLayer,pe as HMSStats,xt as HMSVideoPluginCanvasContextType,Lt as HMSVideoPluginType,se as createDefaultStatsStore,te as createDefaultStoreState,Ot as parsedUserAgent,jo as selectAppData,Fo as selectAppDataByPath,et as selectAudioPlaylist,ir as selectAudioPlaylistTrackByPeerID,Go as selectAudioTrackByID,Qt as selectAudioTrackByPeerID,ct as selectAudioTrackVolume,Sr as selectAudioVolumeByPeerID,er as selectAuxiliaryAudioByPeerID,Yo as selectAuxiliaryTracksByPeerID,yo as selectAvailableRoleNames,Yt as selectBroadcastMessages,ur as selectBroadcastMessagesUnreadCount,Jo as selectCameraStreamByPeerID,io as selectConnectionQualities,Zo as selectConnectionQualityByPeerID,Ho as selectDegradedTracks,so as selectDevices,Or as selectDidIJoinWithin,So as selectDominantSpeaker,_t as selectErrors,me as selectFullAppData,Do as selectHLSState,ne as selectHMSMessages,Fe as selectHMSMessagesCount,ws as selectHMSStats,Ir as selectIsAllowedToPublish,ko as selectIsAllowedToSubscribe,nt as selectIsAudioLocallyMuted,Te as selectIsConnectedToRoom,go as selectIsInPreview,lo as selectIsLocalAudioEnabled,Nr as selectIsLocalAudioPluginPresent,fe as selectIsLocalScreenShared,je as selectIsLocalVideoDisplayEnabled,He as selectIsLocalVideoEnabled,Ar as selectIsLocalVideoPluginPresent,nr as selectIsLocallyMutedByPeerID,rr as selectIsPeerAudioEnabled,ar as selectIsPeerVideoEnabled,cr as selectIsScreenShareLocallyMutedByPeerID,uo as selectIsSomeoneScreenSharing,A as selectLocalAudioTrackID,Be as selectLocalMediaSettings,E as selectLocalPeer,$ as selectLocalPeerID,ao as selectLocalPeerName,ce as selectLocalPeerRole,no as selectLocalPeerRoleName,qe as selectLocalTrackIDs,N as selectLocalVideoTrackID,Ve as selectMessageIDsInOrder,Mr as selectMessagesByPeerID,pr as selectMessagesByRole,Ke as selectMessagesMap,Tr as selectMessagesUnreadCountByPeerID,mr as selectMessagesUnreadCountByRole,Xo as selectPeerAudioByID,xr as selectPeerByCondition,L as selectPeerByID,oo as selectPeerCount,gr as selectPeerMetadata,hr as selectPeerName,$o as selectPeerNameByID,Bt as selectPeerScreenSharing,Mo as selectPeerSharingAudio,To as selectPeerSharingAudioPlaylist,mo as selectPeerSharingVideoPlaylist,F as selectPeers,Lr as selectPeersByCondition,Hr as selectPeersByRole,fr as selectPeersByRoles,v as selectPeersMap,po as selectPeersScreenSharing,Rr as selectPeersWithAudioStatus,$e as selectPermissions,ro as selectPreviewPeer,Ro as selectRTMPState,eo as selectRecentError,Po as selectRecordingState,co as selectRemotePeers,Cr as selectRoleByRoleName,Dr as selectRoleChangeRequest,K as selectRolesMap,D as selectRoom,to as selectRoomID,vo as selectRoomStartTime,ho as selectRoomStarted,b as selectRoomState,Wo as selectScreenAudioTrackByID,at as selectScreenShareAudioByPeerID,or as selectScreenShareByPeerID,rt as selectScreenSharesByPeerId,Qo as selectScreenVideoTrackByID,lr as selectScreenshareAudioVolumeByPeerID,Io as selectSessionId,Eo as selectSessionMetadata,dr as selectSimulcastLayerByTrack,Ut as selectSpeakers,zo as selectTrackAudioByID,Se as selectTrackByID,g as selectTracksMap,fo as selectUnreadHMSMessagesCount,tt as selectVideoPlaylist,sr as selectVideoPlaylistAudioTrackByPeerID,tr as selectVideoPlaylistVideoTrackByPeerID,it as selectVideoTrackByID,Wt as selectVideoTrackByPeerID,ie as simulcastMapping};
1
+ var Rt=Object.defineProperty,Dt=Object.defineProperties;var It=Object.getOwnPropertyDescriptors;var Le=Object.getOwnPropertySymbols;var vt=Object.prototype.hasOwnProperty,Et=Object.prototype.propertyIsEnumerable;var Oe=(s,e,t)=>e in s?Rt(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,w=(s,e)=>{for(var t in e||(e={}))vt.call(e,t)&&Oe(s,t,e[t]);if(Le)for(var t of Le(e))Et.call(e,t)&&Oe(s,t,e[t]);return s},G=(s,e)=>Dt(s,It(e));var bt=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var c=(s,e,t)=>new Promise((i,o)=>{var r=M=>{try{n(t.next(M))}catch(R){o(R)}},a=M=>{try{n(t.throw(M))}catch(R){o(R)}},n=M=>M.done?i(M.value):Promise.resolve(M.value).then(r,a);n((t=t.apply(s,e)).next())});var Pt=bt((zn,_s)=>{_s.exports={version:"0.8.3",license:"MIT",main:"dist/index.cjs.js",module:"dist/index.js",typings:"dist/index.d.ts",files:["dist","src"],engines:{node:">=12"},exports:{".":{require:"./dist/index.cjs.js",import:"./dist/index.js",default:"./dist/index.js"}},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",sideEffects:!1,dependencies:{"@100mslive/hms-video":"0.7.3",eventemitter2:"^6.4.7",immer:"^9.0.6",reselect:"4.0.0",zustand:"3.5.7"},devDependencies:{"ts-node":"^10.4.0",tslib:"^2.2.0"},description:"This is an addon to the core sdk provided by 100ms. It abstracts away the intricacies of data management and provides a flux based reactive data store where data flows in only one direction.",repository:{type:"git",url:"git+https://github.com/100mslive/hms-video-store.git"},keywords:["video","webrtc","conferencing","100ms"],bugs:{url:"https://github.com/100mslive/hms-video-store/issues"},homepage:"https://github.com/100mslive/hms-video-store#readme",gitHead:"8193e1162ae5138fe8fc001aaecce1cf7624bd9e"}});import Us from"immer";import Ks from"zustand/shallow";import Vs from"zustand/vanilla";import{HMSSdk as Bs,isBrowser as qs}from"@100mslive/hms-video";import{EventEmitter2 as ss}from"eventemitter2";var m;(function(n){n.Disconnected="Disconnected",n.Preview="Preview",n.Connecting="Connecting",n.Connected="Connected",n.Reconnecting="Reconnecting",n.Disconnecting="Disconnecting",n.Failed="Failed"})(m||(m={}));var te=()=>({room:{id:"",isConnected:!1,name:"",peers:[],localPeer:"",roomState:m.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:[],preview:{},errors:[]}),se=()=>({peerStats:{},remoteTrackStats:{},localTrackStats:{},localPeer:{id:""}});var we;(function(e){e.CHAT="chat"})(we||(we={}));var P;(function(t){t.INFO="info",t.ERROR="error"})(P||(P={}));var T;(function(S){S.PEER_JOINED="PEER_JOINED",S.PEER_LEFT="PEER_LEFT",S.PEER_LIST="PEER_LIST",S.NEW_MESSAGE="NEW_MESSAGE",S.ERROR="ERROR",S.RECONNECTING="RECONNECTING",S.RECONNECTED="RECONNECTED",S.TRACK_ADDED="TRACK_ADDED",S.TRACK_REMOVED="TRACK_REMOVED",S.TRACK_MUTED="TRACK_MUTED",S.TRACK_UNMUTED="TRACK_UNMUTED",S.TRACK_DEGRADED="TRACK_DEGRADED",S.TRACK_RESTORED="TRACK_RESTORED",S.TRACK_DESCRIPTION_CHANGED="TRACK_DESCRIPTION_CHANGED",S.ROLE_UPDATED="ROLE_UPDATED",S.CHANGE_TRACK_STATE_REQUEST="CHANGE_TRACK_STATE_REQUEST",S.CHANGE_MULTI_TRACK_STATE_REQUEST="CHANGE_MULTI_TRACK_STATE_REQUEST",S.ROOM_ENDED="ROOM_ENDED",S.REMOVED_FROM_ROOM="REMOVED_FROM_ROOM",S.DEVICE_CHANGE_UPDATE="DEVICE_CHANGE_UPDATE",S.PLAYLIST_TRACK_ENDED="PLAYLIST_TRACK_ENDED",S.NAME_UPDATED="NAME_UPDATED",S.METADATA_UPDATED="METADATA_UPDATED"})(T||(T={}));var p;(function(t){t.audio="audio",t.video="video"})(p||(p={}));import{DeviceType as Ct,HMSAudioPluginType as At,HMSException as ci,HMSLogLevel as y,HMSPeerUpdate as U,HMSRoomUpdate as Ii,HMSSimulcastLayer as Nt,HMSTrackUpdate as C,HMSVideoPluginCanvasContextType as xt,HMSVideoPluginType as Lt,parsedUserAgent as Ot,simulcastMapping as ie}from"@100mslive/hms-video";var oe={[U.PEER_JOINED]:T.PEER_JOINED,[U.PEER_LEFT]:T.PEER_LEFT,[U.ROLE_UPDATED]:T.ROLE_UPDATED,[U.NAME_UPDATED]:T.NAME_UPDATED,[U.METADATA_UPDATED]:T.METADATA_UPDATED},re={[C.TRACK_ADDED]:T.TRACK_ADDED,[C.TRACK_REMOVED]:T.TRACK_REMOVED,[C.TRACK_MUTED]:T.TRACK_MUTED,[C.TRACK_UNMUTED]:T.TRACK_UNMUTED,[C.TRACK_DEGRADED]:T.TRACK_DEGRADED,[C.TRACK_RESTORED]:T.TRACK_RESTORED,[C.TRACK_DESCRIPTION_CHANGED]:T.TRACK_DESCRIPTION_CHANGED};import{createSelector as l}from"reselect";function j(s,e){let t,i;if(e)for(let o of e.auxiliaryTracks){let r=s[o];wt(r)&&(i=J(r)?r:i,t=Y(r)?r:t)}return{video:t,audio:i}}function J(s){return s&&s.type==="audio"}function Y(s){return s&&s.type==="video"}function wt(s){return s&&s.source==="screen"}function ae(s){return s&&s.source==="audioplaylist"}function z(s){return s&&s.source==="videoplaylist"}function _e(s){return s?Boolean(s==null?void 0:s.degraded):!1}function W(s,e){return e&&s.tracks[e]?s.tracks[e].enabled:!1}function Ue(s,e){return e&&s.tracks[e]?s.tracks[e].displayEnabled:!1}var D=s=>s.room,_t=s=>s.errors,eo=l(_t,s=>s.length===0?null:s.at(-1)),to=l(D,s=>s.id),v=s=>s.peers,Ke=s=>s.messages.byID,Ve=s=>s.messages.allIDs,g=s=>s.tracks,Be=s=>s.settings,me=s=>s.appData,so=s=>s.devices,Ut=s=>s.speakers,io=s=>s.connectionQualities,Te=l([D],s=>s&&s.isConnected),oo=l([Te,D],(s,e)=>s?e.peerCount!==void 0?e.peerCount||1:e.peers.length:Math.max(e.peerCount!==void 0?e.peerCount:e.peers.length-1,0)),F=l([D,v],(s,e)=>s.peers.map(t=>e[t])),Kt=l(g,s=>Object.values(s)),E=l(D,v,(s,e)=>e[s.localPeer]),ro=s=>s.preview.peer,$=l(D,s=>s.localPeer),ao=l(E,s=>s==null?void 0:s.name),no=l(E,s=>s==null?void 0:s.roleName),A=l(E,s=>s==null?void 0:s.audioTrack),N=l(E,s=>s==null?void 0:s.videoTrack),Vt=l(E,s=>s==null?void 0:s.auxiliaryTracks),qe=l([A,N,Vt],(s,e,t)=>{let i=[...t];return s&&i.unshift(s),e&&i.unshift(e),i}),co=l(F,s=>s.filter(e=>!e.isLocal)),So=l(v,Ut,(s,e)=>{let t=Object.entries(e).sort((i,o)=>{var n,M;let r=((n=i[1])==null?void 0:n.audioLevel)||0;return(((M=o[1])==null?void 0:M.audioLevel)||0)>r?1:-1});if(t.length>0&&t[0][1].audioLevel&&t[0][1].audioLevel>0){let i=t[0][1].peerID;if(i in s)return s[i]}return null}),lo=s=>{let e=E(s);return W(s,e==null?void 0:e.audioTrack)},He=s=>{let e=E(s);return W(s,e==null?void 0:e.videoTrack)},je=s=>{let e=E(s);return Ue(s,e==null?void 0:e.videoTrack)},fe=l(E,g,(s,e)=>{let{video:t,audio:i}=j(e,s);return!!(t||i)}),Bt=l(v,g,(s,e)=>{let t;for(let i in s){let o=s[i],{video:r,audio:a}=j(e,o);if(r)return o;a&&!t&&(t=o)}return t}),uo=l(Bt,s=>!!s),Mo=l(v,g,(s,e)=>{for(let t in s){let i=s[t],{audio:o,video:r}=j(e,i);if(!r&&!!o)return i}}),po=l(v,g,(s,e)=>{let t=[],i=[];for(let o in s){let r=s[o],{video:a,audio:n}=j(e,r);a?t.push(r):n&&i.push(r)}return t.concat(i)}),mo=l(v,g,(s,e)=>{for(let t in e){let i=e[t];if(z(i)&&Y(i)&&i.peerId)return s[i.peerId]}}),To=l(v,g,(s,e)=>{for(let t in e){let i=e[t];if(ae(i)&&i.peerId)return s[i.peerId]}}),Ho=l(Kt,s=>s.filter(_e)),Fe=l(Ve,s=>s.length),fo=l(Ke,s=>Object.values(s).filter(e=>!e.read).length),ne=l(Ve,Ke,(s,e)=>{let t=[];return s.forEach(i=>{t.push(e[i])}),t}),b=l([D],s=>s&&s.roomState),go=l(b,s=>s===m.Preview),ho=l(D,s=>s.roomState!==m.Disconnected),K=s=>s.roles,yo=l([K],s=>Object.keys(s)),ce=l([E,K],(s,e)=>(s==null?void 0:s.roleName)?e[s.roleName]:null),ko=l([ce],s=>{var e;return((e=s==null?void 0:s.subscribeParams)==null?void 0:e.subscribeToRoles)?s.subscribeParams.subscribeToRoles.length>0:!1}),$e=l(ce,s=>s==null?void 0:s.permissions),Po=l(D,s=>s.recording),Ro=l(D,s=>s.rtmp),Do=l(D,s=>s.hls),Io=l(D,s=>s.sessionId),vo=l(D,s=>s.startedAt),Eo=s=>s.sessionMetadata;import{createSelector as Ge}from"reselect";var We=(s=p.audio)=>e=>e.playlist[s].list,ge=(s=p.audio)=>e=>e.playlist[s].selection,Qe=(s=p.audio)=>e=>e.playlist[s].progress,Je=(s=p.audio)=>e=>e.playlist[s].currentTime,Ye=(s=p.audio)=>e=>e.playlist[s].playbackRate,ze=(s=p.audio)=>e=>e.playlist[s].volume,Xe=(s=p.audio)=>Ge(We(s),e=>Object.values(e)),Ze=(s=p.audio)=>Ge(We(s),ge(s),(e,t)=>{if(!!t.id)return e[t.id]}),et={selection:ge(p.audio),progress:Qe(p.audio),currentTime:Je(p.audio),playbackRate:Ye(p.audio),volume:ze(p.audio),list:Xe(p.audio),selectedItem:Ze(p.audio)},tt={selection:ge(p.video),progress:Qe(p.video),currentTime:Je(p.video),playbackRate:Ye(p.video),volume:ze(p.video),list:Xe(p.video),selectedItem:Ze(p.video)};import{createSelector as H}from"reselect";function d(s){return e=>t=>s(t,e)}var X="HMS-Store:",u=class{static v(e,...t){this.log(y.VERBOSE,e,...t)}static d(...e){this.log(y.DEBUG,...e)}static i(...e){this.log(y.INFO,...e)}static w(...e){this.log(y.WARN,...e)}static e(...e){this.log(y.ERROR,...e)}static time(e){this.log(y.TIME,"[HMSPerformanceTiming]",e)}static timeEnd(e){this.log(y.TIMEEND,"[HMSPerformanceTiming]",e,e)}static cleanUp(){performance.clearMarks(),performance.clearMeasures()}static log(e,...t){if(!(this.level.valueOf()>e.valueOf()))switch(e){case y.VERBOSE:{console.log(X,...t);break}case y.DEBUG:{console.debug(X,...t);break}case y.INFO:{console.info(X,...t);break}case y.WARN:{console.warn(X,...t);break}case y.ERROR:{console.error(X,...t);break}case y.TIME:{performance.mark(t[1]);break}case y.TIMEEND:{let i=t[0],o=t[1];try{let r=performance.measure(o,o);this.log(y.DEBUG,i,o,r==null?void 0:r.duration),performance.clearMarks(o),performance.clearMeasures(o)}catch(r){this.log(y.DEBUG,i,o,r)}break}}}};u.level=y.VERBOSE;var he=(s,e)=>e,Z=(s,e)=>e,st=(s,e)=>e,qt=(s,e)=>e,I=H([v,he],(s,e)=>e?s[e]:null),ye=H([g,Z],(s,e)=>e?s[e]:null),jt=H([g,Z],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="video"?t:null}),Ft=H([g,Z],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="audio"?t:null}),$t=H([g,Z],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="audio"&&(t==null?void 0:t.source)==="screen"?t:null}),Gt=H([g,Z],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="video"&&(t==null?void 0:t.source)==="screen"?t:null}),L=d(I),jo=d(H([me,qt],(s,e)=>{if(!!s)return e?s[e]:s})),Fo=(...s)=>H([me],e=>{if(!!e){if(s&&s.length>0){let t=e;for(let i of s){if(!i)return t;t=t==null?void 0:t[i]}return t}return e}}),$o=d(H(I,s=>s==null?void 0:s.name)),Se=d(ye),it=d(jt),Go=d(Ft),Wo=d($t),Qo=d(Gt),Wt=d((s,e)=>{let t=I(s,e);if(t&&t.videoTrack&&t.videoTrack!=="")return s.tracks[t.videoTrack]}),Qt=d((s,e)=>{let t=I(s,e);if(t&&t.audioTrack&&t.audioTrack!=="")return s.tracks[t.audioTrack]}),Jo=Wt,Yo=d((s,e)=>{let t=I(s,e);return(t==null?void 0:t.auxiliaryTracks.map(i=>s.tracks[i]))||[]}),ot=(s,e)=>e?s.speakers[e]:null,zo=d(H(ot,s=>(s==null?void 0:s.audioLevel)||0)),Jt=(s,e)=>{let t=Qt(e)(s);return ot(s,t==null?void 0:t.id)},Xo=d(H(Jt,s=>(s==null?void 0:s.audioLevel)||0)),Zo=d((s,e)=>{if(e)return s.connectionQualities[e]}),er=d((s,e)=>{let t=I(s,e);if(t){let i=t==null?void 0:t.auxiliaryTracks.find(o=>J(s.tracks[o]));return i?s.tracks[i]:void 0}}),tr=d(H(g,I,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return z(o)&&Y(o)});return t?s[t]:void 0})),sr=d(H(g,I,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return z(o)&&J(o)});return t?s[t]:void 0})),ir=d(H(g,I,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return ae(o)&&J(o)});return t?s[t]:void 0})),rt=d(H(g,I,(s,e)=>j(s,e))),or=s=>H(rt(s),e=>e.video),at=s=>H(rt(s),e=>e.audio),rr=d((s,e)=>{let t=I(s,e);return W(s,t==null?void 0:t.audioTrack)}),ar=d((s,e)=>{let t=I(s,e);return W(s,t==null?void 0:t.videoTrack)}),nt=d((s,e)=>{if(e&&s.tracks[e])return s.tracks[e].volume===0}),nr=d((s,e)=>{let t=I(s,e);return nt(t==null?void 0:t.audioTrack)(s)}),cr=d((s,e)=>{let t=at(e)(s);return nt(t==null?void 0:t.id)(s)}),ct=d((s,e)=>{let t=ye(s,e);if(t){if(t.type!=="audio"){u.w("Please pass audio track here");return}return t.volume}}),Sr=d((s,e)=>{let t=I(s,e);return ct(t==null?void 0:t.audioTrack)(s)}),lr=d((s,e)=>{let t=at(e)(s);return ct(t==null?void 0:t.id)(s)}),dr=d((s,e)=>{let t=ye(s,e);if(t){if(t.type!=="video"){u.w("Please pass video track here");return}return t.layer}}),St=H([ne,$,he],(s,e,t)=>{if(!!t)return s.filter(i=>{var o;return!i.recipientPeer&&!((o=i.recipientRoles)==null?void 0:o.length)||i.sender&&![e,t].includes(i.sender)?!1:[e,t].includes(i.recipientPeer)})}),lt=H([ne,st],(s,e)=>{if(!!e)return s.filter(t=>{var i,o;return((i=t.recipientRoles)==null?void 0:i.length)?(o=t.recipientRoles)==null?void 0:o.includes(e):!1})}),Yt=H(ne,s=>s.filter(e=>{var t;return!e.recipientPeer&&!((t=e.recipientRoles)==null?void 0:t.length)})),zt=H([lt,st],s=>s?s.filter(e=>!e.read).length:0),Xt=H([St,he],s=>s?s.filter(e=>!e.read).length:0),ur=H(Yt,s=>s.filter(e=>!e.read).length),Mr=d(St),pr=d(lt),mr=d(zt),Tr=d(Xt),Hr=s=>H([F],e=>e.filter(t=>t.roleName===s)),fr=s=>H([F],e=>e.filter(t=>t.roleName?s.includes(t.roleName):!1)),gr=s=>H(L(s),e=>{try{return(e==null?void 0:e.metadata)&&e.metadata!==""?JSON.parse(e.metadata):{}}catch(t){return console.error("cannot parse peer metadata",t),{}}}),hr=s=>H(L(s),e=>e==null?void 0:e.name);import{createSelector as ke}from"reselect";var Rr=ke([v,g],(s,e)=>Object.values(s).map(i=>{var o;return{peer:i,isAudioEnabled:i.audioTrack?(o=e[i.audioTrack])==null?void 0:o.enabled:!1}})),Zt=s=>s.roleChangeRequests[0]||null,Dr=ke([Zt,v,K],(s,e,t)=>s?{requestedBy:s.requestedBy?e[s.requestedBy]:void 0,role:t[s.roleName],token:s.token}:null),Ir=ke([ce],s=>{var o;let e=!1,t=!1,i=!1;return((o=s==null?void 0:s.publishParams)==null?void 0:o.allowed)&&(e=s.publishParams.allowed.includes("video"),t=s.publishParams.allowed.includes("audio"),i=s.publishParams.allowed.includes("screen")),{video:e,audio:t,screen:i}});import{createSelector as B}from"reselect";var Cr=s=>B([K],e=>e[s]),es=B([N,g],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),ts=B([A,g],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Ar=s=>B([es],e=>e.includes(s)),Nr=s=>B([ts],e=>e.includes(s)),xr=s=>B(F,e=>e.find(s)),Lr=s=>B(F,e=>e.filter(s)),Or=s=>B(D,e=>e.joinedAt&&Date.now()-e.joinedAt.getTime()<=s);var Pe="hmsNotification",Re=class{constructor(e){this.id=0;this.onNotification=(e,t)=>{let i=o=>{if(t){let r;if(Array.isArray(t)?r=t.includes(o.type):r=t===o.type,!r)return}e(o)};return this.eventEmitter.addListener(Pe,i),()=>{this.eventEmitter.removeListener(Pe,i)}};this.store=e,this.eventEmitter=new ss({maxListeners:Object.keys(T).length})}sendPlaylistTrackEnded(e){let t=this.createNotification(T.PLAYLIST_TRACK_ENDED,e,P.INFO);this.emitEvent(t)}sendDeviceChange(e){var i;let t=this.createNotification(T.DEVICE_CHANGE_UPDATE,e,e.error?P.ERROR:P.INFO,`Selected ${e.type} device - ${(i=e.selection)==null?void 0:i.label}`);this.emitEvent(t)}sendLeaveRoom(e){var o;let t=(o=e.requestedBy)==null?void 0:o.name,i=this.createNotification(e.roomEnded||!t?T.ROOM_ENDED:T.REMOVED_FROM_ROOM,e,P.INFO,`${e.roomEnded?"Room ended":"Removed from room"} ${t?`by ${t}`:""}`);this.emitEvent(i)}sendPeerList(e){let t=this.createNotification(T.PEER_LIST,e,P.INFO);this.emitEvent(t)}sendPeerUpdate(e,t){let i=this.store.getState(L(t==null?void 0:t.id))||t,o=oe[e];if(o){let r=this.createNotification(o,i,P.INFO);this.emitEvent(r)}}sendTrackUpdate(e,t){let i=this.store.getState(Se(t)),o=re[e];if(o){let r=this.createNotification(o,i,P.INFO);this.emitEvent(r)}}sendMessageReceived(e){let t=this.createNotification(T.NEW_MESSAGE,e,P.INFO);this.emitEvent(t)}sendError(e){let t=this.createNotification(T.ERROR,e,P.ERROR);this.emitEvent(t)}sendReconnecting(e){let t=this.createNotification(T.RECONNECTING,e,P.ERROR);this.emitEvent(t)}sendReconnected(){let e=this.createNotification(T.RECONNECTED,null,P.INFO);this.emitEvent(e)}sendChangeTrackStateRequest(e){let t=this.createNotification(T.CHANGE_TRACK_STATE_REQUEST,e,P.INFO);this.emitEvent(t)}sendChangeMultiTrackStateRequest(e){let t=this.createNotification(T.CHANGE_MULTI_TRACK_STATE_REQUEST,e,P.INFO);this.emitEvent(t)}emitEvent(e){this.eventEmitter.emit(Pe,e)}createNotification(e,t,i,o=""){return this.id++,{id:this.id,type:e,message:o,data:t,severity:i}}};import{HMSAudioTrack as ns,HMSException as cs,HMSRemoteVideoTrack as Ss,HMSSimulcastLayer as ft}from"@100mslive/hms-video";import{HMSRemoteAudioTrack as is,HMSRemoteVideoTrack as os}from"@100mslive/hms-video";function dt(s){return s instanceof is||s instanceof os}var ut=(s,e)=>{let t=le(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Ie(o,r)?(_(o.auxiliaryTracks,r.auxiliaryTracks)&&(r.auxiliaryTracks=o.auxiliaryTracks),Object.assign(o,r)):ve(o,r)?delete s[i]:Ee(o,r)&&(s[i]=r)}},Mt=(s,e)=>{let t=le(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Ie(o,r)?(rs(o,r),Object.assign(o,r)):ve(o,r)?delete s[i]:Ee(o,r)&&(s[i]=r)}},pt=(s,e)=>{s.room.roomState===m.Preview?s.preview.peer?Object.assign(s.preview.peer,e[s.room.localPeer]):s.preview.peer=e[s.room.localPeer]:delete s.preview.peer},De=(s,e)=>{let t=le(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Ie(o,r)?Object.assign(o,r):ve(o,r)?delete s[i]:Ee(o,r)&&(s[i]=r)}},mt=(s,e,t)=>{let i=t.reduce((r,a)=>(r[a.firstTrackId]=Object.values(e[a.getTrackIDBeingSent()]||{}).sort((n,M)=>!n.rid||!M.rid?0:n.rid<M.rid?-1:1),r),{}),o=le(Object.keys(s),Object.keys(i));for(let r of o){if(!i[r]){delete s[r];continue}s[r]=i[r]}},rs=(s,e)=>{s.plugins&&_(s.plugins,e.plugins)&&(e.plugins=s.plugins),s.type==="video"&&s.layerDefinitions&&_(s.layerDefinitions,e.layerDefinitions)&&(e.layerDefinitions=s.layerDefinitions)},Ie=(s,e)=>s&&e,ve=(s,e)=>s&&!e,Ee=(s,e)=>!s&&e,_=(s,e)=>{if(s===e||s.length===0&&(e==null?void 0:e.length)===0)return!0;if(!s||!e||s.length!==e.length)return!1;for(let t=0;t<s.length;t++)if(s[t]!==e[t])return!1;return!0},le=(s,e)=>{let t=new Set;for(let i of s)t.add(i);for(let i of e)t.add(i);return Array.from(t)};import{HMSLocalAudioTrack as Tt,HMSLocalVideoTrack as de,HMSRemoteAudioTrack as as,HMSRemoteVideoTrack as Ht}from"@100mslive/hms-video";var f=class{static convertPeer(e){var t,i,o;return{id:e.peerId,name:e.name,roleName:(t=e.role)==null?void 0:t.name,isLocal:e.isLocal,videoTrack:(i=e.videoTrack)==null?void 0:i.trackId,audioTrack:(o=e.audioTrack)==null?void 0:o.trackId,auxiliaryTracks:e.auxiliaryTracks.map(r=>r.trackId),customerUserId:e.customerUserId,metadata:e.metadata,joinedAt:e.joinedAt}}static convertTrack(e,t){let i={id:e.trackId,source:e.source,type:e.type,enabled:e.enabled,displayEnabled:e.enabled,peerId:e.peerId||t};return this.enrichTrack(i,e),i}static enrichTrack(e,t){let i=t.getMediaTrackSettings();t instanceof as&&(e.volume=t.getVolume()||0),f.updateDeviceID(e,t),e.type==="video"&&(e.source==="screen"?(e.displaySurface=i.displaySurface,f.enrichScreenTrack(e,t)):e.source==="regular"&&(e.facingMode=i.facingMode),e.height=i.height,e.width=i.width,f.enrichVideoTrack(e,t)),f.enrichPluginsDetails(e,t)}static updateDeviceID(e,t){var i;t instanceof de||t instanceof Tt?e.deviceID=t.settings.deviceId:e.deviceID=(i=t.getMediaTrackSettings())==null?void 0:i.deviceId}static enrichVideoTrack(e,t){t instanceof Ht&&(e.layer=t.getLayer(),e.preferredLayer=t.getPreferredLayer(),e.degraded=t.degraded),(t instanceof Ht||t instanceof de)&&(_(t.getSimulcastDefinitions(),e.layerDefinitions)||(e.layerDefinitions=t.getSimulcastDefinitions()))}static enrichScreenTrack(e,t){var i,o;if(t instanceof de){let r=(i=t.getCaptureHandle)==null?void 0:i.call(t);(r==null?void 0:r.handle)!==((o=e.captureHandle)==null?void 0:o.handle)&&(e.captureHandle=r),t.isCurrentTab&&(e.displaySurface="selfBrowser")}}static enrichPluginsDetails(e,t){(t instanceof de||t instanceof Tt)&&(_(t.getPlugins(),e.plugins)||(e.plugins=t.getPlugins()))}static convertRoom(e){var r,a;let{recording:t,rtmp:i,hls:o}=f.convertRecordingStreamingState(e==null?void 0:e.recording,e==null?void 0:e.rtmp,e==null?void 0:e.hls);return{id:e.id,name:e.name,localPeer:(a=(r=e.localPeer)==null?void 0:r.peerId)!=null?a:"",recording:t,rtmp:i,hls:o,sessionId:e.sessionId,startedAt:e.startedAt,joinedAt:e.joinedAt,peerCount:e.peerCount}}static convertMessage(e){var t,i,o,r,a,n,M;return{sender:(t=e.sender)==null?void 0:t.peerId,senderName:(i=e.sender)==null?void 0:i.name,senderRole:(r=(o=e.sender)==null?void 0:o.role)==null?void 0:r.name,senderUserId:(a=e.sender)==null?void 0:a.customerUserId,recipientPeer:(n=e.recipientPeer)==null?void 0:n.peerId,recipientRoles:(M=e.recipientRoles)==null?void 0:M.map(R=>R.name),time:e.time,type:e.type,message:e.message}}static convertRoles(e){let t={};return e&&e.forEach(i=>{t[i.name]=i}),t}static convertRoleChangeRequest(e){var t;return{requestedBy:(t=e.requestedBy)==null?void 0:t.peerId,roleName:e.role.name,token:e.token}}static convertException(e){return{code:e.code,action:e.action,name:e.name,message:e.message,description:e.description,isTerminal:e.isTerminal,nativeError:e.nativeError,timestamp:new Date}}static convertDeviceChangeUpdate(e){let t={devices:e.devices,selection:e.selection,type:e.type};return e.error&&(t.error=this.convertException(e.error)),t}static convertPlaylist(e){let t=this.getConvertedPlaylistType(e,p.audio),i=this.getConvertedPlaylistType(e,p.video);return{audio:t,video:i}}static convertPlaylistItem(e,t){let i=t.type,o=e.getCurrentSelection(i),r=e.isPlaying(i),a=t.url===(o==null?void 0:o.url);return G(w({},t),{type:t.type,selected:a,playing:a&&r})}static getConvertedPlaylistType(e,t){let i={},o=e.getCurrentSelection(t),r=e.getCurrentProgress(t),a=e.getVolume(t),n=e.getList(t),M=e.getCurrentIndex(t);return e.getList(t).forEach(R=>{i[R.id]=f.convertPlaylistItem(e,R)}),{list:i,selection:{id:o==null?void 0:o.id,hasPrevious:M>0,hasNext:M<n.length-1},progress:r,volume:a,currentTime:e.getCurrentTime(t),playbackRate:e.getPlaybackRate(t)}}static convertRecordingStreamingState(e,t,i){var o;return{recording:{browser:w({running:!1},e==null?void 0:e.browser),server:w({running:!1},e==null?void 0:e.server),hls:w({running:!1},e==null?void 0:e.hls)},rtmp:w({running:!1},t),hls:{variants:((o=i==null?void 0:i.variants)==null?void 0:o.map(r=>r))||[],running:!!(i==null?void 0:i.running),error:i==null?void 0:i.error}}}};var ue=class{constructor(e,t,i,o){this.playlistManager=e;this.syncPlaylistState=i;this.store=o;this.type=t}play(e){return c(this,null,function*(){if(!e){u.w("Please pass id to play");return}yield this.playlistManager.setEnabled(!0,{id:e,type:this.type})})}pause(){return c(this,null,function*(){let e=this.type===p.audio?et:tt,t=this.store.getState(e.selection);if(!t.id){u.w("No item is currently playing to pause");return}yield this.playlistManager.setEnabled(!1,{id:t.id,type:this.type})})}playNext(){return c(this,null,function*(){yield this.playlistManager.playNext(this.type)})}playPrevious(){return c(this,null,function*(){yield this.playlistManager.playPrevious(this.type)})}seek(e){this.playlistManager.seek(e,this.type),this.syncPlaylistState(`seekOn${this.type}Playlist`)}seekTo(e){this.playlistManager.seekTo(e,this.type),this.syncPlaylistState(`seekToOn${this.type}Playlist`)}setVolume(e){this.playlistManager.setVolume(e,this.type),this.syncPlaylistState(`setVolumeOn${this.type}Playlist`)}setList(e){this.playlistManager.setList(e),this.syncPlaylistState(`setListOn${this.type}Playlist`)}stop(){return c(this,null,function*(){yield this.playlistManager.stop(this.type),this.syncPlaylistState(`stop${this.type}Playlist`)})}setIsAutoplayOn(e){this.playlistManager.setIsAutoplayOn(this.type,e)}setPlaybackRate(e){this.playlistManager.setPlaybackRate(this.type,e),this.syncPlaylistState(`set${this.type}PlaybackRate`)}removeItem(e){return c(this,null,function*(){let t=yield this.playlistManager.removeItem(e,this.type);return t&&this.syncPlaylistState(`remove${this.type}PlaylistItem`),t})}clearList(){return c(this,null,function*(){yield this.playlistManager.clearList(this.type),this.syncPlaylistState(`clear${this.type}Playlist`)})}};var be=class{constructor(e,t,i){this.hmsSDKTracks={};this.hmsSDKPeers={};this.isRoomJoinCalled=!1;this.ignoredMessageTypes=[];this.setProgress=({type:e,progress:t})=>{this.setState(i=>{i.playlist[e].progress=t,i.playlist[e].currentTime=this.sdk.getPlaylistManager().getCurrentTime(e)},"playlistProgress")};this.syncPlaylistState=e=>{this.setState(t=>{Object.assign(t.playlist,f.convertPlaylist(this.sdk.getPlaylistManager()))},e)};this.sendPeerUpdateNotification=(e,t)=>{let i=this.store.getState(L(t.peerId)),o=oe[e]||"peerUpdate";this.syncRoomState(o),i||(i=this.store.getState(L(t.peerId))),this.hmsNotifications.sendPeerUpdate(e,i)};this.setState=(e,t)=>this.store.namedSetState(e,t);this.store=e,this.sdk=t,this.hmsNotifications=i}refreshDevices(){return c(this,null,function*(){yield this.sdk.refreshDevices()})}unblockAudio(){return c(this,null,function*(){yield this.sdk.getAudioOutput().unblockAutoplay()})}setVolume(e,t){return c(this,null,function*(){t?yield this.setTrackVolume(e,t):(yield this.sdk.getAudioOutput().setVolume(e),this.syncRoomState("setOutputVolume"))})}setAudioOutputDevice(e){return c(this,null,function*(){(yield this.sdk.getAudioOutput().setDevice(e))&&this.setState(i=>{i.settings.audioOutputDeviceId=e},"setAudioOutputDevice")})}setPreferredLayer(e,t){return c(this,null,function*(){var o;let i=this.hmsSDKTracks[e];if(i)if(i instanceof Ss){if(t===ft.NONE){u.w(`layer ${ft.NONE} will be ignored`);return}if(((o=this.store.getState(it(e)))==null?void 0:o.preferredLayer)===t){u.w(`preferred layer is already ${t}`);return}this.setState(a=>{let n=a.tracks[e];n&&(n.preferredLayer=t)},"setPreferredLayer"),yield i.setPreferredLayer(t)}else u.w(`track ${e} is not a remote video track`);else this.logPossibleInconsistency(`track ${e} not present, unable to set preffer layer`)})}preview(e){return c(this,null,function*(){if(this.isRoomJoinCalled){this.logPossibleInconsistency("attempting to call preview after join was called");return}let t=this.store.getState(b);if(t===m.Preview||t===m.Connecting){this.logPossibleInconsistency("attempting to call preview while room is in preview/connecting");return}try{this.setState(i=>{i.room.roomState=m.Connecting},"connecting"),yield this.sdkPreviewWithListeners(e)}catch(i){throw u.e("Cannot show preview. Failed to connect to room - ",i),i}})}join(e){return c(this,null,function*(){if(this.isRoomJoinCalled){this.logPossibleInconsistency("room join is called again");return}try{this.isRoomJoinCalled=!0,this.setState(t=>{t.room.roomState=m.Connecting},"join"),yield this.sdkJoinWithListeners(e)}catch(t){throw this.isRoomJoinCalled=!1,u.e("Failed to connect to room - ",t),t}})}leave(){return c(this,null,function*(){let e=this.store.getState(Te),t=!0;e||(t=!1,this.logPossibleInconsistency("room leave is called when no room is connected"));let i=this.store.getState(b);return this.setState(o=>{o.room.roomState=m.Disconnecting},"leaving"),this.sdk.leave(t).then(()=>{this.resetState("leave"),u.i("left room")}).catch(o=>{u.e("error in leaving room - ",o),this.setState(r=>{r.room.roomState=i},"revertLeave")})})}setScreenShareEnabled(e,t){return c(this,null,function*(){typeof t=="boolean"&&(t={audioOnly:t});try{e?yield this.startScreenShare(t):yield this.stopScreenShare()}catch(i){throw this.hmsNotifications.sendError(f.convertException(i)),i}})}addTrack(e,t="regular"){return c(this,null,function*(){yield this.sdk.addTrack(e,t),this.syncRoomState("addTrack")})}removeTrack(e){return c(this,null,function*(){yield this.sdk.removeTrack(e),this.syncRoomState("removeTrack")})}setLocalAudioEnabled(e){return c(this,null,function*(){let t=this.store.getState(A);t&&(yield this.setEnabledTrack(t,e))})}setLocalVideoEnabled(e){return c(this,null,function*(){let t=this.store.getState(N);t&&(yield this.setEnabledTrack(t,e))})}setEnabledTrack(e,t){return c(this,null,function*(){var r;if(((r=this.store.getState().tracks[e])==null?void 0:r.enabled)===t){this.logPossibleInconsistency(`local track[${e}] enabled state - ${t}`);return}this.setState(a=>{a.tracks[e]?a.tracks[e].displayEnabled=t:this.logPossibleInconsistency("track id not found for setEnabled")},"displayEnabled");try{yield this.setEnabledSDKTrack(e,t),this.syncRoomState("setEnabled")}catch(a){throw this.setState(n=>{n.tracks[e].displayEnabled=!t},"rollbackDisplayEnabled"),this.hmsNotifications.sendError(f.convertException(a)),a}let o=t?C.TRACK_UNMUTED:C.TRACK_MUTED;this.hmsNotifications.sendTrackUpdate(o,e)})}setAudioSettings(e){return c(this,null,function*(){let t=this.store.getState(A);t&&(yield this.setSDKLocalAudioTrackSettings(t,e),this.syncRoomState("setAudioSettings"))})}setVideoSettings(e){return c(this,null,function*(){let t=this.store.getState(N);t&&(yield this.setSDKLocalVideoTrackSettings(t,e),this.syncRoomState("setVideoSettings"))})}sendMessage(e){this.sendBroadcastMessage(e)}sendBroadcastMessage(e,t){return c(this,null,function*(){let i=yield this.sdk.sendBroadcastMessage(e,t);this.updateMessageInStore(i,{message:e,type:t})})}sendGroupMessage(e,t,i){return c(this,null,function*(){let o=this.store.getState(K),r=t.map(n=>o[n]),a=yield this.sdk.sendGroupMessage(e,r,i);this.updateMessageInStore(a,{message:e,recipientRoles:t,type:i})})}sendDirectMessage(e,t,i){return c(this,null,function*(){let o=this.hmsSDKPeers[t],r=yield this.sdk.sendDirectMessage(e,o,i);this.updateMessageInStore(r,{message:e,recipientPeer:o.peerId,type:i})})}updateMessageInStore(e,t){if(!e)throw u.w("sendMessage","Failed to send message",t),Error(`sendMessage Failed - ${JSON.stringify(t)}`);let i=f.convertMessage(e);return i.read=!0,i.senderName="You",i.ignored=this.ignoredMessageTypes.includes(i.type),this.putMessageInStore(i),i}setMessageRead(e,t){this.setState(i=>{t?i.messages.byID[t]?i.messages.byID[t].read=e:this.logPossibleInconsistency("no message with id is found"):i.messages.allIDs.forEach(o=>{i.messages.byID[o].read=e})},"setMessageRead")}attachVideo(e,t){return c(this,null,function*(){if(this.localAndVideoUnmuting(e))return new Promise(i=>{let o=this.store.subscribe(r=>c(this,null,function*(){r&&(yield this.attachVideoInternal(e,t),o(),i())}),He)});yield this.attachVideoInternal(e,t)})}detachVideo(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];(i==null?void 0:i.type)==="video"?i.removeSink(t):(t&&(t.srcObject=null),this.logPossibleInconsistency("no video track found to remove sink"))})}addPluginToVideoTrack(e,t){return c(this,null,function*(){return this.addRemoveVideoPlugin(e,"add",t)})}addPluginToAudioTrack(e){return c(this,null,function*(){return this.addRemoveAudioPlugin(e,"add")})}validateVideoPluginSupport(e){let t={};if(t.isSupported=!1,!e)return u.w("no plugin passed in for checking support"),t.errMsg="no plugin passed in for checking support",t;let i=this.store.getState(N);if(!i)return u.w("video Track not added to local peer yet"),t.errMsg="call this function only after local peer has video track",t;let o=this.hmsSDKTracks[i];return o?t=o.validatePlugin(e):(u.w(`track ${i} not present, unable to validate plugin`),t.errMsg=`track ${i} not present, unable to validate plugin`),t}validateAudioPluginSupport(e){let t={};if(t.isSupported=!1,!e)return u.w('no plugin passed in for checking support"'),t.errMsg='no plugin passed in for checking support"',t;let i=this.store.getState(A);if(!i)return u.w("audio track not added to local peer yet"),t.errMsg="call this function only after local peer has audio track",t;let o=this.hmsSDKTracks[i];return o?t=o.validatePlugin(e):(u.w(`track ${i} not present, unable to validate plugin`),t.errMsg=`track ${i} not present, unable to validate plugin`),t}removePluginFromVideoTrack(e){return c(this,null,function*(){return this.addRemoveVideoPlugin(e,"remove")})}removePluginFromAudioTrack(e){return c(this,null,function*(){return this.addRemoveAudioPlugin(e,"remove")})}changeRole(e,t,i=!1){return c(this,null,function*(){let o=this.hmsSDKPeers[e];if(!o){this.logPossibleInconsistency(`Unknown peer ID given ${e} for changerole`);return}yield this.sdk.changeRoleOfPeer(o,t,i)})}changeRoleOfPeer(e,t,i=!1){return c(this,null,function*(){let o=this.hmsSDKPeers[e];if(!o){this.logPossibleInconsistency(`Unknown peer ID given ${e} for changerole`);return}yield this.sdk.changeRoleOfPeer(o,t,i)})}changeRoleOfPeersWithRoles(e,t){return c(this,null,function*(){let i=this.sdk.getRoles().filter(o=>e.includes(o.name));yield this.sdk.changeRoleOfPeersWithRoles(i,t)})}acceptChangeRole(e){return c(this,null,function*(){let t=e.requestedBy?this.hmsSDKPeers[e.requestedBy.id]:void 0;t||u.w(`peer for which role change is requested no longer available - ${e.requestedBy}`);let i={requestedBy:t,role:e.role,token:e.token};yield this.sdk.acceptChangeRole(i),this.removeRoleChangeRequest(e)})}initAppData(e){this.setState(t=>{t.appData=e},"initAppData")}setAppData(e,t,i){let o=(t==null?void 0:t.constructor.name)==="Object";this.setState(r=>{if(r.appData)i&&o?Object.assign(r.appData[e],t):r.appData[e]=t;else{let a={[e]:t};r.appData=a}},`setAppData-${e}`)}rejectChangeRole(e){this.removeRoleChangeRequest(e)}endRoom(e,t){return c(this,null,function*(){let i=this.store.getState($e);if(!(i==null?void 0:i.endRoom)){u.w("You are not allowed to perform this action - endRoom");return}let o=this.store.getState(b);this.setState(r=>{r.room.roomState=m.Disconnecting},"endingRoom");try{yield this.sdk.endRoom(e,t),this.resetState("endRoom")}catch(r){u.e("error in ending room - ",r),this.setState(a=>{a.room.roomState=o},"revertEndRoom")}})}removePeer(e,t){return c(this,null,function*(){let i=this.hmsSDKPeers[e];if(i&&!i.isLocal)yield this.sdk.removePeer(i,t);else{this.logPossibleInconsistency(`No remote peer found for peerID - ${e}`);return}})}startRTMPOrRecording(e){return c(this,null,function*(){yield this.sdk.startRTMPOrRecording(e)})}stopRTMPAndRecording(){return c(this,null,function*(){yield this.sdk.stopRTMPAndRecording()})}startHLSStreaming(e){return c(this,null,function*(){yield this.sdk.startHLSStreaming(e)})}stopHLSStreaming(e){return c(this,null,function*(){yield this.sdk.stopHLSStreaming(e)})}sendHLSTimedMetadata(e){return c(this,null,function*(){yield this.sdk.sendHLSTimedMetadata(e)})}changeName(e){return c(this,null,function*(){yield this.sdk.changeName(e)})}changeMetadata(e){return c(this,null,function*(){typeof e!="string"&&(e=JSON.stringify(e)),yield this.sdk.changeMetadata(e)})}setSessionMetadata(e){return c(this,null,function*(){yield this.sdk.setSessionMetadata(e),this.setState(t=>{t.sessionMetadata=e},"setSessionMetadata")})}populateSessionMetadata(){return c(this,null,function*(){let e=yield this.sdk.getSessionMetadata();this.setState(t=>{t.sessionMetadata=e},"populateSessionMetadata")})}setRemoteTrackEnabled(e,t){return c(this,null,function*(){if(typeof e=="string"){let i=this.hmsSDKTracks[e];i&&dt(i)?yield this.sdk.changeTrackState(i,t):this.logPossibleInconsistency(`No remote track with ID ${e} found for change track state`)}else Array.isArray(e)&&e.forEach(i=>this.setRemoteTrackEnabled(i,t))})}setRemoteTracksEnabled(e){return c(this,null,function*(){let t={enabled:e.enabled,type:e.type,source:e.source};if(e.roles){let i=this.store.getState(K);t.roles=e.roles.map(o=>i[o])}yield this.sdk.changeMultiTrackState(t)})}setLogLevel(e){u.level=e,this.sdk.setLogLevel(e)}setFrameworkInfo(e){this.sdk.setFrameworkInfo(e)}ignoreMessageTypes(e,t=!1){if(t)this.ignoredMessageTypes=e;else for(let i of e)this.ignoredMessageTypes.includes(i)||this.ignoredMessageTypes.push(i)}resetState(e="resetState"){this.isRoomJoinCalled=!1,this.hmsSDKTracks={},u.cleanUp(),this.setState(t=>{Object.assign(t,te())},e)}sdkJoinWithListeners(e){return c(this,null,function*(){yield this.sdk.join(e,{onJoin:this.onJoin.bind(this),onRoomUpdate:this.onRoomUpdate.bind(this),onPeerUpdate:this.onPeerUpdate.bind(this),onTrackUpdate:this.onTrackUpdate.bind(this),onMessageReceived:this.onMessageReceived.bind(this),onError:this.onError.bind(this),onReconnected:this.onReconnected.bind(this),onReconnecting:this.onReconnecting.bind(this),onRoleChangeRequest:this.onRoleChangeRequest.bind(this),onRoleUpdate:this.onRoleUpdate.bind(this),onDeviceChange:this.onDeviceChange.bind(this),onChangeTrackStateRequest:this.onChangeTrackStateRequest.bind(this),onChangeMultiTrackStateRequest:this.onChangeMultiTrackStateRequest.bind(this),onRemovedFromRoom:this.onRemovedFromRoom.bind(this),onNetworkQuality:this.onNetworkQuality.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)}),this.sdk.addConnectionQualityListener({onConnectionQualityUpdate:this.onConnectionQualityUpdate.bind(this)})})}onRemovedFromRoom(e){var o;let t=this.store.getState(L((o=e.requestedBy)==null?void 0:o.peerId));this.hmsNotifications.sendLeaveRoom(G(w({},e),{requestedBy:t||void 0}));let i=e.roomEnded||!t?"roomEnded":"removedFromRoom";u.i(`resetting state after peer removed ${i}`,e),this.resetState(i)}onDeviceChange(e){let t=e.devices;if(!t)return;let i=this.store.getState(E);if(this.setState(o=>{_(o.devices.audioInput,t.audioInput)||(o.devices.audioInput=t.audioInput),_(o.devices.videoInput,t.videoInput)||(o.devices.videoInput=t.videoInput),_(o.devices.audioOutput,t.audioOutput)||(o.devices.audioOutput=t.audioOutput),this.hmsSDKPeers[i==null?void 0:i.id]&&Object.assign(o.settings,this.getMediaSettings(this.hmsSDKPeers[i==null?void 0:i.id]))},"deviceChange"),e.selection){let o=f.convertDeviceChangeUpdate(e);this.hmsNotifications.sendDeviceChange(o)}}sdkPreviewWithListeners(e){return c(this,null,function*(){yield this.sdk.preview(e,{onPreview:this.onPreview.bind(this),onError:this.onError.bind(this),onReconnected:this.onReconnected.bind(this),onReconnecting:this.onReconnecting.bind(this),onDeviceChange:this.onDeviceChange.bind(this),onRoomUpdate:this.onRoomUpdate.bind(this),onPeerUpdate:this.onPeerUpdate.bind(this),onNetworkQuality:this.onNetworkQuality.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)})})}onNetworkQuality(e){this.setState(t=>{var o;let i=t.room.localPeer||((o=this.sdk.getLocalPeer())==null?void 0:o.peerId);i&&(t.connectionQualities[i]={peerID:i,downlinkQuality:e})},"ConnectionQuality")}startScreenShare(e){return c(this,null,function*(){this.store.getState(fe)?this.logPossibleInconsistency("start screenshare is called while it's on"):(yield this.sdk.startScreenShare(()=>this.syncRoomState("screenshareStopped"),e),this.syncRoomState("startScreenShare"))})}stopScreenShare(){return c(this,null,function*(){this.store.getState(fe)?(yield this.sdk.stopScreenShare(),this.syncRoomState("stopScreenShare")):this.logPossibleInconsistency("stop screenshare is called while it's not on")})}attachVideoInternal(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i&&i.type==="video"?yield i.addSink(t):this.logPossibleInconsistency("no video track found to add sink")})}syncRoomState(e){e=`${e}_fullSync`,u.time(`store-sync-${e}`);let t={},i=[],o={},r={},a={},n=this.sdk.getPeers();for(let h of n){let x=f.convertPeer(h);t[x.id]=x,i.push(x.id),this.hmsSDKPeers[x.id]=h;let Q=[h.audioTrack,h.videoTrack,...h.auxiliaryTracks];for(let ee of Q){if(!ee)continue;let xe=f.convertTrack(ee);o[xe.id]=xe,r[ee.trackId]=ee}x.isLocal&&Object.assign(a,this.getMediaSettings(h))}let M=this.sdk.getRecordingState(),R=this.sdk.getRTMPState(),q=this.sdk.getHLSState();this.setState(h=>{h.room.peers=i;let x=h.peers,Q=h.tracks;ut(x,t),Mt(Q,o),Object.assign(h.settings,a),this.hmsSDKTracks=r,Object.assign(h.roles,f.convertRoles(this.sdk.getRoles())),Object.assign(h.playlist,f.convertPlaylist(this.sdk.getPlaylistManager())),Object.assign(h.room,f.convertRecordingStreamingState(M,R,q)),pt(h,x)},e),u.timeEnd(`store-sync-${e}`)}onPreview(e){this.setState(t=>{Object.assign(t.room,f.convertRoom(e)),t.room.roomState=m.Preview},"previewStart"),this.syncRoomState("previewSync")}onJoin(e){let t=this.sdk.getPlaylistManager();this.audioPlaylist=new ue(t,p.audio,this.syncPlaylistState.bind(this),this.store),this.videoPlaylist=new ue(t,p.video,this.syncRoomState.bind(this),this.store),this.syncRoomState("joinSync"),this.setState(i=>{Object.assign(i.room,f.convertRoom(e)),i.room.isConnected=!0,i.room.roomState=m.Connected},"joined"),t.onProgress(this.setProgress),t.onNewTrackStart(i=>{this.syncPlaylistState(`${i.type}PlaylistUpdate`)}),t.onPlaylistEnded(i=>{this.syncPlaylistState(`${i}PlaylistEnded`)}),t.onCurrentTrackEnded(i=>{this.hmsNotifications.sendPlaylistTrackEnded(f.convertPlaylistItem(t,i)),this.syncPlaylistState(`${i.type}PlaylistItemEnded`)})}onRoomUpdate(e,t){this.setState(i=>{Object.assign(i.room,f.convertRoom(t))},e)}onPeerUpdate(e,t){if(![U.BECAME_DOMINANT_SPEAKER,U.RESIGNED_DOMINANT_SPEAKER].includes(e)){if(Array.isArray(t)){this.syncRoomState("peersJoined");let i=[];for(let o of t){let r=this.store.getState(L(o.peerId));r&&i.push(r)}this.hmsNotifications.sendPeerList(i);return}this.sendPeerUpdateNotification(e,t)}}onTrackUpdate(e,t,i){if(e===C.TRACK_REMOVED)this.hmsNotifications.sendTrackUpdate(e,t.trackId),this.handleTrackRemove(t,i);else{let o=re[e]||"trackUpdate";this.syncRoomState(o),this.hmsNotifications.sendTrackUpdate(e,t.trackId)}}onMessageReceived(e){let t=f.convertMessage(e);t.read=!1,t.ignored=this.ignoredMessageTypes.includes(t.type),this.putMessageInStore(t),this.hmsNotifications.sendMessageReceived(t)}putMessageInStore(e){e.ignored||this.setState(t=>{e.id=String(this.store.getState(Fe)+1),t.messages.byID[e.id]=e,t.messages.allIDs.push(e.id)},"newMessage")}onAudioLevelUpdate(e){this.setState(t=>{let i={};e.forEach(r=>{if(!r.track||!r.peer)return;let a=r.track.trackId;i[a]=r.audioLevel,t.speakers[a]||(t.speakers[a]={audioLevel:r.audioLevel,peerID:r.peer.peerId,trackID:a})});let o=Object.entries(t.speakers);for(let[r,a]of o)a.audioLevel=i[r]||0,a.audioLevel===0&&delete t.speakers[r]},"audioLevel")}onConnectionQualityUpdate(e){this.setState(t=>{let i=new Set;e.forEach(r=>{let a=r.peerID;!a||(i.add(a),t.connectionQualities[a]?Object.assign(t.connectionQualities[a],r):t.connectionQualities[a]=r)});let o=Object.keys(t.connectionQualities);for(let r of o)i.has(r)||delete t.connectionQualities[r]},"connectionQuality")}onChangeTrackStateRequest(e){var r;let t=this.store.getState(L((r=e.requestedBy)==null?void 0:r.peerId)),i=this.getStoreLocalTrackIDfromSDKTrack(e.track),o=this.store.getState(Se(i));if(!o)return this.logPossibleInconsistency(`Not found track for which track state change was requested, ${e.track}`);e.enabled||this.syncRoomState("changeTrackStateRequest"),this.hmsNotifications.sendChangeTrackStateRequest({requestedBy:t||void 0,track:o,enabled:e.enabled})}onChangeMultiTrackStateRequest(e){var r;let t=this.store.getState(L((r=e.requestedBy)==null?void 0:r.peerId));e.enabled||this.syncRoomState("changeMultiTrackStateRequest");let i=[],o=this.store.getState(g);for(let a of e.tracks){let n=this.getStoreLocalTrackIDfromSDKTrack(a);n&&o[n]&&i.push(o[n])}this.hmsNotifications.sendChangeMultiTrackStateRequest({requestedBy:t||void 0,tracks:i,enabled:e.enabled,type:e.type,source:e.source})}onReconnected(){this.syncRoomState("reconnectedSync"),this.hmsNotifications.sendReconnected(),this.setState(e=>{e.room.roomState=e.room.isConnected?m.Connected:m.Preview},"reconnected")}onReconnecting(e){let t=f.convertException(e);u.e("Reconnection: received error from sdk",t),this.hmsNotifications.sendReconnecting(t),this.setState(i=>{i.room.roomState=m.Reconnecting,i.errors.push(t)},"reconnecting")}onError(e){let t=f.convertException(e);t.isTerminal?(this.leave().then(()=>u.e("error from SDK, left room.")),this.setState(i=>{i.room.roomState=m.Failed,i.errors.push(t)},"errorTerminal")):this.store.getState().errors.length<50&&this.setState(o=>{o.errors.push(t)},"error"),this.syncRoomState("errorSync"),this.hmsNotifications.sendError(t),u.e("received error from sdk",t instanceof cs?`${t}`:t)}handleTrackRemove(e,t){this.setState(i=>{let o=i.peers[t.peerId],r=i.tracks,a=e.trackId;if(this.isSameStoreSDKTrack(a,o==null?void 0:o.audioTrack))o==null||delete o.audioTrack;else if(this.isSameStoreSDKTrack(a,o==null?void 0:o.videoTrack))o==null||delete o.videoTrack;else{let n=o==null?void 0:o.auxiliaryTracks.indexOf(a);n>-1&&this.isSameStoreSDKTrack(a,o==null?void 0:o.auxiliaryTracks[n])&&(o==null||o.auxiliaryTracks.splice(n,1))}delete r[a],delete this.hmsSDKTracks[a]},"trackRemoved")}setEnabledSDKTrack(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setEnabled(t):this.logPossibleInconsistency(`track ${e} not present, unable to enabled/disable`)})}setSDKLocalVideoTrackSettings(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setSettings(t):this.logPossibleInconsistency(`local track ${e} not present, unable to set settings`)})}setSDKLocalAudioTrackSettings(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setSettings(t):this.logPossibleInconsistency(`local track ${e} not present, unable to set settings`)})}getMediaSettings(e){var r;let t=this.store.getState(Be),i=e.audioTrack,o=e.videoTrack;return{audioInputDeviceId:(i==null?void 0:i.settings.deviceId)||t.audioInputDeviceId,videoInputDeviceId:(o==null?void 0:o.settings.deviceId)||t.videoInputDeviceId,audioOutputDeviceId:(r=this.sdk.getAudioOutput().getDevice())==null?void 0:r.deviceId}}setTrackVolume(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[t];i?i instanceof ns?(yield i.setVolume(e),this.setState(o=>{let r=o.tracks[t];r&&r.type==="audio"&&(r.volume=e)},"trackVolume")):u.w(`track ${t} is not an audio track`):this.logPossibleInconsistency(`track ${t} not present, unable to set volume`)})}localAndVideoUnmuting(e){if(this.store.getState(E).videoTrack!==e)return!1;let i=this.store.getState(je),o=this.store.getState(He);return i&&!o}logPossibleInconsistency(e){u.w("possible inconsistency detected - ",e)}addRemoveVideoPlugin(e,t,i){return c(this,null,function*(){if(!e){u.w("Invalid plugin received in store");return}let o=this.store.getState(N);if(o){let r=this.hmsSDKTracks[o];r?(t==="add"?yield r.addPlugin(e,i):t==="remove"&&(yield r.removePlugin(e)),this.syncRoomState(`${t}VideoPlugin`)):this.logPossibleInconsistency(`track ${o} not present, unable to remove plugin`)}})}addRemoveAudioPlugin(e,t){return c(this,null,function*(){if(!e){u.w("Invalid plugin received in store");return}let i=this.store.getState(A);if(i){let o=this.hmsSDKTracks[i];o?(t==="add"?yield o.addPlugin(e):t==="remove"&&(yield o.removePlugin(e)),this.syncRoomState(`${t}AudioPlugin`)):this.logPossibleInconsistency(`track ${i} not present, unable to remove plugin`)}})}isSameStoreSDKTrack(e,t){var i;return t?((i=this.hmsSDKTracks[t])==null?void 0:i.trackId)===e:!1}onRoleChangeRequest(e){this.setState(t=>{t.roleChangeRequests.length===0&&t.roleChangeRequests.push(f.convertRoleChangeRequest(e))},"roleChangeRequest")}removeRoleChangeRequest(e){this.setState(t=>{let i=t.roleChangeRequests.findIndex(o=>o.token===e.token);i!==-1&&t.roleChangeRequests.splice(i,1)},"removeRoleChangeRequest")}onRoleUpdate(){this.syncRoomState("roleUpdate")}getStoreLocalTrackIDfromSDKTrack(e){return this.store.getState(qe).find(i=>this.hmsSDKTracks[i].trackId===e.trackId)}};import{isBrowser as ls}from"@100mslive/hms-video";var Me=s=>ls?`${s} ${document.title}`:s;var Ce=class{constructor(e,t,i){this.store=e,this.actions=t,this.notifications=i}getStore(){return this.store}getActions(){return this.actions}getNotifications(){return{onNotification:this.notifications.onNotification}}};var gt=(s,e,t)=>{let i;t.getState(b)===m.Connected&&(i=ht(s,e,t)),t.subscribe(o=>{[m.Connected,m.Reconnecting].includes(o)?i||(i=ht(s,e,t)):[m.Disconnected,m.Failed].includes(o)&&i&&(Ms(e,o),i(),i=void 0)},b)},ht=(s,e,t)=>{var r,a;let i=ds(t,e);(r=s.getWebrtcInternals())==null||r.start();let o=(a=s.getWebrtcInternals())==null?void 0:a.onStatsChange(n=>us(e,n,t,s));return()=>{i(),o&&o()}},ds=(s,e)=>{let t,i,o;return s.getState($)?e.namedSetState(r=>{r.localPeer.id=s.getState($)},"localpeer-id"):t=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.id=r},"localpeer-id")},$),s.getState(N)?e.namedSetState(r=>{r.localPeer.videoTrack=s.getState(N)},"localpeer-videotrack-id"):i=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.videoTrack=r},"localpeer-videotrack-id")},N),s.getState(A)?e.namedSetState(r=>{r.localPeer.audioTrack=s.getState(A)},"localpeer-audiotrack-id"):o=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.audioTrack=r},"localpeer-audiotrack-id")},A),()=>{t==null||t(),i==null||i(),o==null||o()}},us=(s,e,t,i)=>{let o=t.getState(g);s.namedSetState(r=>{let a=t.getState($),n={},M=Object.keys(o).filter(q=>o[q].peerId!==a);for(let q of M){let h=e.getRemoteTrackStats(q);h&&(n[q]=h)}De(r.remoteTrackStats,n);let R={[a]:e.getLocalPeerStats()};De(r.peerStats,R),mt(r.localTrackStats,e.getLocalTrackStats(),i.store.getLocalPeerTracks())},"webrtc-stats")},Ms=(s,e="resetState")=>{s.namedSetState(t=>{Object.assign(t,se())},e)};var pe=class{constructor(e,t){this.hmsStore=e;this.sdk=t;this.store=O.createNewHMSStore(Me("HMSStatsStore"),se),this.getState=this.store.getState,this.subscribe=this.store.subscribe,this.getPublishPeerConnection=()=>new Promise(i=>{var o,r;this.hmsStore.getState(b)==="Connected"?i((r=(o=this.sdk)==null?void 0:o.getWebrtcInternals())==null?void 0:r.getPublishPeerConnection()):this.hmsStore.subscribe(a=>{var n,M;a==="Connected"&&i((M=(n=this.sdk)==null?void 0:n.getWebrtcInternals())==null?void 0:M.getPublishPeerConnection())},b)}),this.getSubscribePeerConnection=()=>new Promise(i=>{var o,r;this.hmsStore.getState(b)==="Connected"?i((r=(o=this.sdk)==null?void 0:o.getWebrtcInternals())==null?void 0:r.getSubscribePeerConnection()):this.hmsStore.subscribe(a=>{var n,M;a==="Connected"&&i((M=(n=this.sdk)==null?void 0:n.getWebrtcInternals())==null?void 0:M.getSubscribePeerConnection())},b)}),!!this.sdk&&gt(this.sdk,this.store,this.hmsStore)}};import{createSelector as k}from"reselect";var ps=s=>s.localPeer.id,ms=s=>s.localPeer.audioTrack,Ts=s=>s.localPeer.videoTrack,Hs=(s,e)=>e,yt=(s,e)=>e,fs=s=>s.remoteTrackStats,kt=s=>s.peerStats,Ae=s=>s.localTrackStats,V=k([kt,ps],(s,e)=>s[e]),gs=k(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.packetsLost}),hs=k(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.jitter}),ys=k(V,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bitrate}),ks=k(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bitrate}),Ps=k(V,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.availableOutgoingBitrate}),Rs=k(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.availableIncomingBitrate}),Ds=k(V,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bytesSent}),Is=k(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bytesReceived}),vs=k([kt,Hs],(s,e)=>e?s[e]:void 0),Es=k([fs,yt],(s,e)=>e?s[e]:void 0),Ne=k([Ae,yt],(s,e)=>e?s[e]:void 0),bs=d(vs),Cs=d(Es),As=k([Ae,ms],(s,e)=>{var t;return e?(t=s[e])==null?void 0:t[0]:void 0}),Ns=d(k(Ne,s=>s==null?void 0:s[0])),xs=k([Ae,Ts],(s,e)=>{var t;return e?(t=s[e])==null?void 0:t[0]:void 0}),Ls=d(k(Ne,s=>s)),Os=s=>d(k(Ne,e=>{let t=Object.keys(ie).find(i=>ie[i]===s);return s&&(e==null?void 0:e.find(i=>i.rid===t))||(e==null?void 0:e[0])})),ws={localPeerStats:V,packetsLost:gs,jitter:hs,publishBitrate:ys,subscribeBitrate:ks,availablePublishBitrate:Ps,availableSubscribeBitrate:Rs,totalBytesSent:Ds,totalBytesReceived:Is,peerStatsByID:bs,trackStatsByID:Cs,localAudioTrackStatsByID:Ns,localVideoTrackStatsByID:Ls,localVideoTrackStatsByLayer:Os,localAudioTrackStats:As,localVideoTrackStats:xs};var O=class{constructor(e,t,i){this.getStats=()=>(this.stats||(this.stats=new pe(this.store,this.sdk)),this.stats);e?this.store=e:this.store=O.createNewHMSStore(Me("HMSStore"),te),i?this.notifications=i:this.notifications=new Re(this.store),t?this.actions=t:(this.sdk=new Bs,this.actions=new be(this.store,this.sdk,this.notifications)),this.actions.setFrameworkInfo({type:"js",sdkVersion:Pt().version}),this.initialTriggerOnSubscribe=!1,qs&&(window.__hms=this,window.__beam=new Ce(this.store,this.actions,this.notifications))}triggerOnSubscribe(){this.initialTriggerOnSubscribe||(O.makeStoreTriggerOnSubscribe(this.store),this.initialTriggerOnSubscribe=!0)}getStore(){return this.store}getHMSActions(){return this.actions}getActions(){return this.actions}getNotifications(){return{onNotification:this.notifications.onNotification}}static createNewHMSStore(e,t){let i=Vs(()=>t()),o=i.setState;i.setState=n=>{let M=typeof n=="function"?Us(n):n;o(M)};let r=i.getState;i.getState=n=>n?n(r()):r(),O.compareWithShallowCheckInSubscribe(i);let a=O.setUpDevtools(i,e);return G(w({},i),{namedSetState:a})}static makeStoreTriggerOnSubscribe(e){let t=e.subscribe;e.subscribe=(i,o,r)=>(i(e.getState(o),void 0),t(i,o,r))}static compareWithShallowCheckInSubscribe(e){let t=e.subscribe;e.subscribe=(i,o,r)=>(o||(o=a=>a),r=r||Ks,t(i,o,r))}static setUpDevtools(e,t){let i;try{i=window.__REDUX_DEVTOOLS_EXTENSION__||window.top.__REDUX_DEVTOOLS_EXTENSION__}catch(a){}if(!i)return a=>{e.setState(a)};let o=i.connect(O.devtoolsOptions(t));o.prefix=t?`${t} > `:"";let r=e.setState;return e.setState=a=>{r(a),o.send(`${o.prefix}setState`,e.getState())},o.subscribe(O.devtoolsSubscribe(o,e,r)),o.send("setUpStore",e.getState()),(a,n)=>{r(a);let M=n||`${o.prefix}action`;o.send(M,e.getState())}}static devtoolsOptions(e){return{name:e,actionsBlacklist:["audioLevel","playlistProgress","connectionQuality"]}}static devtoolsSubscribe(e,t,i){return o=>{var r,a,n,M;if(o.type==="DISPATCH"&&o.state)["JUMP_TO_ACTION","JUMP_TO_STATE"].includes(o.payload.type)?i(JSON.parse(o.state)):t.setState(JSON.parse(o.state));else if(o.type==="DISPATCH"&&((r=o.payload)==null?void 0:r.type)==="COMMIT")e.init(t.getState());else if(o.type==="DISPATCH"&&((a=o.payload)==null?void 0:a.type)==="IMPORT_STATE"){let R=(n=o.payload.nextLiftedState)==null?void 0:n.actionsById;(((M=o.payload.nextLiftedState)==null?void 0:M.computedStates)||[]).forEach(({state:h},x)=>{let Q=R[x]||`${e.prefix}setState`;x===0?e.init(h):(i(h),e.send(Q,t.getState()))})}}}};export{Ce as BeamControllerStore,Ct as DeviceType,At as HMSAudioPluginType,y as HMSLogLevel,we as HMSMessageType,P as HMSNotificationSeverity,T as HMSNotificationTypes,p as HMSPlaylistType,O as HMSReactiveStore,m as HMSRoomState,Nt as HMSSimulcastLayer,pe as HMSStats,xt as HMSVideoPluginCanvasContextType,Lt as HMSVideoPluginType,se as createDefaultStatsStore,te as createDefaultStoreState,Ot as parsedUserAgent,jo as selectAppData,Fo as selectAppDataByPath,et as selectAudioPlaylist,ir as selectAudioPlaylistTrackByPeerID,Go as selectAudioTrackByID,Qt as selectAudioTrackByPeerID,ct as selectAudioTrackVolume,Sr as selectAudioVolumeByPeerID,er as selectAuxiliaryAudioByPeerID,Yo as selectAuxiliaryTracksByPeerID,yo as selectAvailableRoleNames,Yt as selectBroadcastMessages,ur as selectBroadcastMessagesUnreadCount,Jo as selectCameraStreamByPeerID,io as selectConnectionQualities,Zo as selectConnectionQualityByPeerID,Ho as selectDegradedTracks,so as selectDevices,Or as selectDidIJoinWithin,So as selectDominantSpeaker,_t as selectErrors,me as selectFullAppData,Do as selectHLSState,ne as selectHMSMessages,Fe as selectHMSMessagesCount,ws as selectHMSStats,Ir as selectIsAllowedToPublish,ko as selectIsAllowedToSubscribe,nt as selectIsAudioLocallyMuted,Te as selectIsConnectedToRoom,go as selectIsInPreview,lo as selectIsLocalAudioEnabled,Nr as selectIsLocalAudioPluginPresent,fe as selectIsLocalScreenShared,je as selectIsLocalVideoDisplayEnabled,He as selectIsLocalVideoEnabled,Ar as selectIsLocalVideoPluginPresent,nr as selectIsLocallyMutedByPeerID,rr as selectIsPeerAudioEnabled,ar as selectIsPeerVideoEnabled,cr as selectIsScreenShareLocallyMutedByPeerID,uo as selectIsSomeoneScreenSharing,A as selectLocalAudioTrackID,Be as selectLocalMediaSettings,E as selectLocalPeer,$ as selectLocalPeerID,ao as selectLocalPeerName,ce as selectLocalPeerRole,no as selectLocalPeerRoleName,qe as selectLocalTrackIDs,N as selectLocalVideoTrackID,Ve as selectMessageIDsInOrder,Mr as selectMessagesByPeerID,pr as selectMessagesByRole,Ke as selectMessagesMap,Tr as selectMessagesUnreadCountByPeerID,mr as selectMessagesUnreadCountByRole,Xo as selectPeerAudioByID,xr as selectPeerByCondition,L as selectPeerByID,oo as selectPeerCount,gr as selectPeerMetadata,hr as selectPeerName,$o as selectPeerNameByID,Bt as selectPeerScreenSharing,Mo as selectPeerSharingAudio,To as selectPeerSharingAudioPlaylist,mo as selectPeerSharingVideoPlaylist,F as selectPeers,Lr as selectPeersByCondition,Hr as selectPeersByRole,fr as selectPeersByRoles,v as selectPeersMap,po as selectPeersScreenSharing,Rr as selectPeersWithAudioStatus,$e as selectPermissions,ro as selectPreviewPeer,Ro as selectRTMPState,eo as selectRecentError,Po as selectRecordingState,co as selectRemotePeers,Cr as selectRoleByRoleName,Dr as selectRoleChangeRequest,K as selectRolesMap,D as selectRoom,to as selectRoomID,vo as selectRoomStartTime,ho as selectRoomStarted,b as selectRoomState,Wo as selectScreenAudioTrackByID,at as selectScreenShareAudioByPeerID,or as selectScreenShareByPeerID,rt as selectScreenSharesByPeerId,Qo as selectScreenVideoTrackByID,lr as selectScreenshareAudioVolumeByPeerID,Io as selectSessionId,Eo as selectSessionMetadata,dr as selectSimulcastLayerByTrack,Ut as selectSpeakers,zo as selectTrackAudioByID,Se as selectTrackByID,g as selectTracksMap,fo as selectUnreadHMSMessagesCount,tt as selectVideoPlaylist,sr as selectVideoPlaylistAudioTrackByPeerID,tr as selectVideoPlaylistVideoTrackByPeerID,it as selectVideoTrackByID,Wt as selectVideoTrackByPeerID,ie as simulcastMapping};
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.8.2",
2
+ "version": "0.8.3",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.cjs.js",
5
5
  "module": "dist/index.js",
@@ -41,7 +41,7 @@
41
41
  "author": "100ms",
42
42
  "sideEffects": false,
43
43
  "dependencies": {
44
- "@100mslive/hms-video": "0.7.2",
44
+ "@100mslive/hms-video": "0.7.3",
45
45
  "eventemitter2": "^6.4.7",
46
46
  "immer": "^9.0.6",
47
47
  "reselect": "4.0.0",
@@ -66,5 +66,5 @@
66
66
  "url": "https://github.com/100mslive/hms-video-store/issues"
67
67
  },
68
68
  "homepage": "https://github.com/100mslive/hms-video-store#readme",
69
- "gitHead": "60cfa51f3d560ae544d8b3a504ea02b71f8219cf"
69
+ "gitHead": "8193e1162ae5138fe8fc001aaecce1cf7624bd9e"
70
70
  }
package/src/core/index.ts CHANGED
@@ -25,6 +25,7 @@ export * from './webrtc-stats';
25
25
 
26
26
  export type {
27
27
  HMSConfig,
28
+ HMSPreviewConfig,
28
29
  HMSConfigInitialSettings,
29
30
  HMSAudioTrackSettings,
30
31
  HMSVideoTrackSettings,