@100mslive/hms-video-store 0.10.21 → 0.10.22

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.
@@ -72,21 +72,21 @@ export interface IHMSActions<T extends HMSGenericTypes = {
72
72
  /**
73
73
  * Send a plain text message to all the other participants in the room.
74
74
  * @param message - string message to broadcast
75
- * @param type - type of message eg: image, video etc. - optional defaults to chat
75
+ * @param type - type of message. For example: image, video etc. - optional defaults to chat
76
76
  */
77
77
  sendBroadcastMessage(message: string, type?: string): Promise<void>;
78
78
  /**
79
79
  *
80
80
  * @param message - string message to send
81
81
  * @param roles - roles to which to send the message
82
- * @param type - type of message eg: image, video etc. - optional defaults to chat
82
+ * @param type - type of message. For example: image, video etc. - optional defaults to chat
83
83
  */
84
84
  sendGroupMessage(message: string, roles: HMSRoleName[], type?: string): Promise<void>;
85
85
  /**
86
86
  *
87
87
  * @param message
88
88
  * @param peerID - id of the peer to which message has to be sent
89
- * @param type - type of message eg: image, video etc. - optional defaults to chat
89
+ * @param type - type of message. For example: image, video etc. - optional defaults to chat
90
90
  */
91
91
  sendDirectMessage(message: string, peerID: HMSPeerID, type?: string): Promise<void>;
92
92
  /**
@@ -97,7 +97,7 @@ export interface IHMSActions<T extends HMSGenericTypes = {
97
97
  * found in store, no change in store will take place.
98
98
  *
99
99
  * @param readStatus boolean value which you want to set as read flag for message/messages.
100
- * @param messageId message id whose read falg you want to set.
100
+ * @param messageId message id whose read flag you want to set.
101
101
  */
102
102
  setMessageRead(readStatus: boolean, messageId?: HMSMessageID): void;
103
103
  /**
@@ -237,7 +237,7 @@ export interface IHMSActions<T extends HMSGenericTypes = {
237
237
  */
238
238
  setRemoteTrackEnabled(forRemoteTrackID: HMSTrackID | HMSTrackID[], enabled: boolean): Promise<void>;
239
239
  /**
240
- * Use this to mute/unmute multipe tracks by source, role or type
240
+ * Use this to mute/unmute multiple tracks by source, role or type
241
241
  * @param {HMSChangeMultiTrackStateParams} params
242
242
  */
243
243
  setRemoteTracksEnabled(params: HMSChangeMultiTrackStateParams): Promise<void>;
@@ -25,7 +25,7 @@ export declare class HMSReactiveStore<T extends HMSGenericTypes = {
25
25
  * By default store.subscribe does not call the handler with the current state at time of subscription,
26
26
  * this behaviour can be modified by calling this function. What it means is that instead of calling the
27
27
  * handler only for changes which happen post subscription we'll also call it exactly once at the time
28
- * of subscription with the current state. This behaviour is similar to that of BehaviourSubject in rxjs.
28
+ * of subscription with the current state. This behaviour is similar to that of BehaviourSubject in RxJS.
29
29
  * This will be an irreversible change
30
30
  *
31
31
  * Note: you don't need this if you're using our react hooks, it takes care of this requirement.
@@ -86,14 +86,14 @@ export interface HMSScreenVideoTrack extends Omit<HMSVideoTrack, 'facingMode'> {
86
86
  /**
87
87
  * this can be used to identify the shared tab, if
88
88
  * the shared tab has set a captureHandle on its end as well as communicate
89
- * with the tab for e.g. using broadcast channel.
89
+ * with the tab, for example using broadcast channel.
90
90
  */
91
91
  captureHandle?: ScreenCaptureHandle;
92
92
  }
93
93
  export declare type HMSTrack = HMSVideoTrack | HMSAudioTrack | HMSScreenVideoTrack | HMSScreenAudioTrack;
94
94
  /**
95
95
  * HMS Speaker stores the details of peers speaking at any point of time along with
96
- * their audio levels. This can be used to current speakers or highlight videotiles.
96
+ * their audio levels. This can be used to current speakers or highlight video tiles.
97
97
  *
98
98
  * @privateRemarks
99
99
  * This is a separate interface instead of being part of the HMSPeer interface as the
@@ -249,3 +249,6 @@ export declare const selectPeerName: (peerId: HMSPeerID) => import("reselect").O
249
249
  export declare const selectPollByID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore<{
250
250
  sessionStore: Record<string, any>;
251
251
  }>, import("@100mslive/hms-video").HMSPoll | null>;
252
+ export declare const selectMessageByMessageID: (id: string) => import("reselect").OutputSelector<HMSStore<{
253
+ sessionStore: Record<string, any>;
254
+ }>, import("../schema").HMSMessage, (res: Record<string, import("../schema").HMSMessage>) => import("../schema").HMSMessage>;
package/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var Yt=Object.create;var Y=Object.defineProperty,zt=Object.defineProperties,Xt=Object.getOwnPropertyDescriptor,Zt=Object.getOwnPropertyDescriptors,es=Object.getOwnPropertyNames,at=Object.getOwnPropertySymbols,ts=Object.getPrototypeOf,ct=Object.prototype.hasOwnProperty,ss=Object.prototype.propertyIsEnumerable;var nt=(s,e,t)=>e in s?Y(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,k=(s,e)=>{for(var t in e||(e={}))ct.call(e,t)&&nt(s,t,e[t]);if(at)for(var t of at(e))ss.call(e,t)&&nt(s,t,e[t]);return s},q=(s,e)=>zt(s,Zt(e));var is=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),os=(s,e)=>{for(var t in e)Y(s,t,{get:e[t],enumerable:!0})},St=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of es(e))!ct.call(s,o)&&o!==t&&Y(s,o,{get:()=>e[o],enumerable:!(i=Xt(e,o))||i.enumerable});return s};var lt=(s,e,t)=>(t=s!=null?Yt(ts(s)):{},St(e||!s||!s.__esModule?Y(t,"default",{value:s,enumerable:!0}):t,s)),rs=s=>St(Y({},"__esModule",{value:!0}),s);var S=(s,e,t)=>new Promise((i,o)=>{var r=l=>{try{n(t.next(l))}catch(m){o(m)}},a=l=>{try{n(t.throw(l))}catch(m){o(m)}},n=l=>l.done?i(l.value):Promise.resolve(l.value).then(r,a);n((t=t.apply(s,e)).next())});var jt=is((Pn,$i)=>{$i.exports={version:"0.10.21",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.9.21",eventemitter2:"^6.4.7",immer:"^9.0.6",reselect:"4.0.0",zustand:"3.5.7"},devDependencies:{"jsdom-worker":"^0.3.0","ts-node":"^10.4.0",tslib:"^2.2.0"},description:"@100mslive Core SDK which abstracts the complexities of webRTC while providing a reactive store for data management with a unidirectional data flow",keywords:["video","webrtc","conferencing","100ms"],gitHead:"b2409381228fa1a60f446f7873086440578f704f"}});var fo={};os(fo,{DeviceType:()=>c.DeviceType,HMSAudioPluginType:()=>c.HMSAudioPluginType,HMSLogLevel:()=>c.HMSLogLevel,HMSMessageType:()=>dt,HMSNotificationSeverity:()=>Ae,HMSNotificationTypes:()=>pe,HMSPlaylistType:()=>Ce,HMSReactiveStore:()=>W,HMSRoomState:()=>ue,HMSStats:()=>J,HMSVideoPluginCanvasContextType:()=>c.HMSVideoPluginCanvasContextType,HMSVideoPluginType:()=>c.HMSVideoPluginType,createDefaultStatsStore:()=>X,createDefaultStoreState:()=>z,parsedUserAgent:()=>c.parsedUserAgent,selectAppData:()=>Ws,selectAppDataByPath:()=>Ys,selectAudioPlaylist:()=>je,selectAudioPlaylistTrackByPeerID:()=>li,selectAudioTrackByID:()=>Xs,selectAudioTrackByPeerID:()=>Et,selectAudioTrackVolume:()=>ze,selectAudioVolumeByPeerID:()=>Hi,selectAuxiliaryAudioByPeerID:()=>ni,selectAuxiliaryTracksByPeerID:()=>si,selectAvailableRoleNames:()=>bs,selectBroadcastMessages:()=>Nt,selectBroadcastMessagesUnreadCount:()=>hi,selectCameraStreamByPeerID:()=>ti,selectConnectionQualities:()=>ls,selectConnectionQualityByPeerID:()=>ai,selectDegradedTracks:()=>Ds,selectDevices:()=>Ss,selectDidIJoinWithin:()=>ji,selectDominantSpeaker:()=>ys,selectErrors:()=>Mt,selectFullAppData:()=>Te,selectHLSState:()=>Ls,selectHMSMessages:()=>ie,selectHMSMessagesCount:()=>vs,selectHMSStats:()=>Jt,selectHandRaisedPeers:()=>Ks,selectHasPeerHandRaised:()=>bi,selectIsAllowedToPreviewMedia:()=>Oi,selectIsAllowedToPublish:()=>xi,selectIsAllowedToSubscribe:()=>As,selectIsAudioLocallyMuted:()=>Ye,selectIsConnectedToRoom:()=>U,selectIsInPreview:()=>we,selectIsLargeRoom:()=>_s,selectIsLocalAudioEnabled:()=>ms,selectIsLocalAudioPluginPresent:()=>Ki,selectIsLocalScreenShared:()=>fe,selectIsLocalVideoDisplayEnabled:()=>_e,selectIsLocalVideoEnabled:()=>He,selectIsLocalVideoPluginPresent:()=>Vi,selectIsLocallyMutedByPeerID:()=>Mi,selectIsPeerAudioEnabled:()=>ui,selectIsPeerVideoEnabled:()=>pi,selectIsRoleAllowedToPublish:()=>_i,selectIsScreenShareLocallyMutedByPeerID:()=>Ti,selectIsSomeoneScreenSharing:()=>gs,selectLocalAudioTrackID:()=>A,selectLocalMediaSettings:()=>xe,selectLocalPeer:()=>v,selectLocalPeerID:()=>j,selectLocalPeerName:()=>Ms,selectLocalPeerRole:()=>oe,selectLocalPeerRoleName:()=>Ts,selectLocalTrackIDs:()=>Oe,selectLocalVideoTrackID:()=>I,selectMessageIDsInOrder:()=>Le,selectMessagesByPeerID:()=>Pi,selectMessagesByRole:()=>ki,selectMessagesMap:()=>Ne,selectMessagesUnreadCountByPeerID:()=>Di,selectMessagesUnreadCountByRole:()=>Ri,selectPeerAudioByID:()=>ri,selectPeerByCondition:()=>Bi,selectPeerByID:()=>R,selectPeerCount:()=>ds,selectPeerMetadata:()=>Ei,selectPeerName:()=>Ai,selectPeerNameByID:()=>zs,selectPeerScreenSharing:()=>Ht,selectPeerSharingAudio:()=>hs,selectPeerSharingAudioPlaylist:()=>Rs,selectPeerSharingVideoPlaylist:()=>ks,selectPeers:()=>N,selectPeersByCondition:()=>qi,selectPeersByRole:()=>vi,selectPeersByRoles:()=>Ii,selectPeersMap:()=>P,selectPeersScreenSharing:()=>Ps,selectPeersWithAudioStatus:()=>Ci,selectPermissions:()=>Ve,selectPollByID:()=>Xe,selectPolls:()=>Vs,selectPollsMap:()=>Ke,selectPreviewRole:()=>Ue,selectPreviewRoleName:()=>ft,selectRTMPState:()=>Ns,selectRecentError:()=>ns,selectRecordingState:()=>Cs,selectRemotePeers:()=>fs,selectRoleByRoleName:()=>Lt,selectRoleChangeRequest:()=>Li,selectRolesMap:()=>L,selectRoom:()=>h,selectRoomID:()=>cs,selectRoomStartTime:()=>Os,selectRoomStarted:()=>Es,selectRoomState:()=>E,selectScreenAudioTrackByID:()=>Zs,selectScreenShareAudioByPeerID:()=>Je,selectScreenShareByPeerID:()=>di,selectScreenSharesByPeerId:()=>We,selectScreenVideoTrackByID:()=>ei,selectScreenshareAudioVolumeByPeerID:()=>fi,selectSessionId:()=>xs,selectSessionMetadata:()=>Us,selectSessionStore:()=>Js,selectSimulcastLayerByTrack:()=>yi,selectSpeakers:()=>Tt,selectTemplateAppData:()=>ws,selectTrackAudioByID:()=>ii,selectTrackByID:()=>ne,selectTracksMap:()=>H,selectUnreadHMSMessagesCount:()=>Is,selectVideoPlaylist:()=>Ge,selectVideoPlaylistAudioTrackByPeerID:()=>Si,selectVideoPlaylistVideoTrackByPeerID:()=>ci,selectVideoTrackByID:()=>$e,selectVideoTrackByPeerID:()=>It,simulcastMapping:()=>c.simulcastMapping});module.exports=rs(fo);var ue=(n=>(n.Disconnected="Disconnected",n.Preview="Preview",n.Connecting="Connecting",n.Connected="Connected",n.Reconnecting="Reconnecting",n.Disconnecting="Disconnecting",n.Failed="Failed",n))(ue||{});var z=()=>({room:{id:"",isConnected:!1,name:"",peers:[],localPeer:"",roomState:"Disconnected",recording:{browser:{running:!1},server:{running:!1},hls:{running:!1}},rtmp:{running:!1},hls:{running:!1,variants:[]},sessionId:""},peers:{},tracks:{},playlist:{audio:{list:{},selection:{id:"",hasPrevious:!1,hasNext:!1},progress:0,volume:0,currentTime:0,playbackRate:1},video:{list:{},selection:{id:"",hasPrevious:!1,hasNext:!1},progress:0,volume:0,currentTime:0,playbackRate:1}},messages:{byID:{},allIDs:[]},speakers:{},connectionQualities:{},settings:{audioInputDeviceId:"",audioOutputDeviceId:"",videoInputDeviceId:""},devices:{audioInput:[],audioOutput:[],videoInput:[]},roles:{},roleChangeRequests:[],errors:[],sessionStore:{},templateAppData:{},polls:{},hideLocalPeer:!1}),X=()=>({peerStats:{},remoteTrackStats:{},localTrackStats:{},localPeer:{id:""}});var dt=(e=>(e.CHAT="chat",e))(dt||{});var Ae=(t=>(t.INFO="info",t.ERROR="error",t))(Ae||{}),pe=(T=>(T.PEER_JOINED="PEER_JOINED",T.PEER_LEFT="PEER_LEFT",T.PEER_LIST="PEER_LIST",T.NEW_MESSAGE="NEW_MESSAGE",T.ERROR="ERROR",T.RECONNECTING="RECONNECTING",T.RECONNECTED="RECONNECTED",T.TRACK_ADDED="TRACK_ADDED",T.TRACK_REMOVED="TRACK_REMOVED",T.TRACK_MUTED="TRACK_MUTED",T.TRACK_UNMUTED="TRACK_UNMUTED",T.TRACK_DEGRADED="TRACK_DEGRADED",T.TRACK_RESTORED="TRACK_RESTORED",T.TRACK_DESCRIPTION_CHANGED="TRACK_DESCRIPTION_CHANGED",T.ROLE_UPDATED="ROLE_UPDATED",T.CHANGE_TRACK_STATE_REQUEST="CHANGE_TRACK_STATE_REQUEST",T.CHANGE_MULTI_TRACK_STATE_REQUEST="CHANGE_MULTI_TRACK_STATE_REQUEST",T.ROOM_ENDED="ROOM_ENDED",T.REMOVED_FROM_ROOM="REMOVED_FROM_ROOM",T.DEVICE_CHANGE_UPDATE="DEVICE_CHANGE_UPDATE",T.PLAYLIST_TRACK_ENDED="PLAYLIST_TRACK_ENDED",T.NAME_UPDATED="NAME_UPDATED",T.METADATA_UPDATED="METADATA_UPDATED",T.POLL_CREATED="POLL_CREATED",T.POLL_STARTED="POLL_STARTED",T.POLL_STOPPED="POLL_STOPPED",T.POLL_VOTES_UPDATED="POLL_VOTES_UPDATED",T.HAND_RAISE_CHANGED="HAND_RAISE_CHANGED",T))(pe||{});var Ce=(t=>(t.audio="audio",t.video="video",t))(Ce||{});var u=require("reselect");function F(s,e){let t,i;if(e)for(let o of e.auxiliaryTracks){let r=s[o];as(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 as(s){return s&&s.source==="screen"}function Me(s){return s&&s.source==="audioplaylist"}function te(s){return s&&s.source==="videoplaylist"}function ut(s){return s?!!(s!=null&&s.degraded):!1}function $(s,e){return e&&s.tracks[e]?s.tracks[e].enabled:!1}function pt(s,e){return e&&s.tracks[e]?s.tracks[e].displayEnabled:!1}function se(s){var o;let e=!1,t=!1,i=!1;return(o=s==null?void 0:s.publishParams)!=null&&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 h=s=>s.room,Mt=s=>s.errors,ns=(0,u.createSelector)(Mt,s=>s.length===0?null:s.at(-1)),cs=(0,u.createSelector)(h,s=>s.id),P=s=>s.peers,Ne=s=>s.messages.byID,Le=s=>s.messages.allIDs,H=s=>s.tracks,xe=s=>s.settings,Te=s=>s.appData,Ss=s=>s.devices,Tt=s=>s.speakers,ls=s=>s.connectionQualities,U=(0,u.createSelector)([h],s=>s&&s.isConnected),ds=(0,u.createSelector)([U,h],(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)),us=s=>s.hideLocalPeer,N=(0,u.createSelector)([h,P,us],(s,e,t)=>t?s.peers.filter(i=>s.localPeer!==i).map(i=>e[i]):s.peers.map(i=>e[i])),ps=(0,u.createSelector)(H,s=>Object.values(s)),v=(0,u.createSelector)(h,P,(s,e)=>e[s.localPeer]),j=(0,u.createSelector)(h,s=>s.localPeer),Ms=(0,u.createSelector)(v,s=>s==null?void 0:s.name),Ts=(0,u.createSelector)(v,s=>s==null?void 0:s.roleName),A=(0,u.createSelector)(v,s=>s==null?void 0:s.audioTrack),I=(0,u.createSelector)(v,s=>s==null?void 0:s.videoTrack),Hs=(0,u.createSelector)(v,s=>s==null?void 0:s.auxiliaryTracks),Oe=(0,u.createSelector)([A,I,Hs],(s,e,t)=>{let i=t?[...t]:[];return s&&i.unshift(s),e&&i.unshift(e),i}),fs=(0,u.createSelector)(N,s=>s.filter(e=>!e.isLocal)),ys=(0,u.createSelector)(P,Tt,(s,e)=>{let t=Object.entries(e).sort((i,o)=>{var n,l;let r=((n=i[1])==null?void 0:n.audioLevel)||0;return(((l=o[1])==null?void 0:l.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}),ms=s=>{let e=v(s);return $(s,e==null?void 0:e.audioTrack)},He=s=>{let e=v(s);return $(s,e==null?void 0:e.videoTrack)},_e=s=>{let e=v(s);return pt(s,e==null?void 0:e.videoTrack)},fe=(0,u.createSelector)(v,H,(s,e)=>{let{video:t,audio:i}=F(e,s);return!!(t||i)}),Ht=(0,u.createSelector)(P,H,(s,e)=>{let t;for(let i in s){let o=s[i],{video:r,audio:a}=F(e,o);if(r)return o;a&&!t&&(t=o)}return t}),gs=(0,u.createSelector)(Ht,s=>!!s),hs=(0,u.createSelector)(P,H,(s,e)=>{for(let t in s){let i=s[t],{audio:o,video:r}=F(e,i);if(!r&&o)return i}}),Ps=(0,u.createSelector)(P,H,(s,e)=>{let t=[],i=[];for(let o in s){let r=s[o],{video:a,audio:n}=F(e,r);a?t.push(r):n&&i.push(r)}return t.concat(i)}),ks=(0,u.createSelector)(P,H,(s,e)=>{for(let t in e){let i=e[t];if(te(i)&&ee(i)&&i.peerId)return s[i.peerId]}}),Rs=(0,u.createSelector)(P,H,(s,e)=>{for(let t in e){let i=e[t];if(Me(i)&&i.peerId)return s[i.peerId]}}),Ds=(0,u.createSelector)(ps,s=>s.filter(ut)),vs=(0,u.createSelector)(Le,s=>s.length),Is=(0,u.createSelector)(Ne,s=>Object.values(s).filter(e=>!e.read).length),ie=(0,u.createSelector)(Le,Ne,(s,e)=>{let t=[];return s.forEach(i=>{t.push(e[i])}),t}),E=(0,u.createSelector)([h],s=>s&&s.roomState),we=(0,u.createSelector)(E,s=>s==="Preview"),Es=(0,u.createSelector)(h,s=>s.roomState!=="Disconnected"),L=s=>s.roles,bs=(0,u.createSelector)([L],s=>Object.keys(s)),oe=(0,u.createSelector)([v,L],(s,e)=>s!=null&&s.roleName?e[s.roleName]:null),ft=s=>{var e;return(e=s.preview)==null?void 0:e.asRole},Ue=(0,u.createSelector)([ft,L],(s,e)=>s?e[s]:null),As=(0,u.createSelector)([oe],s=>{var e;return(e=s==null?void 0:s.subscribeParams)!=null&&e.subscribeToRoles?s.subscribeParams.subscribeToRoles.length>0:!1}),Ve=(0,u.createSelector)(oe,s=>s==null?void 0:s.permissions),Cs=(0,u.createSelector)(h,s=>s.recording),Ns=(0,u.createSelector)(h,s=>s.rtmp),Ls=(0,u.createSelector)(h,s=>s.hls),xs=(0,u.createSelector)(h,s=>s.sessionId),Os=(0,u.createSelector)(h,s=>s.startedAt),_s=(0,u.createSelector)(h,s=>!!s.isLargeRoom),ws=s=>s.templateAppData,Us=s=>s.sessionMetadata,Ke=s=>s.polls,Vs=s=>Object.values(s.polls),Ks=(0,u.createSelector)(N,s=>s.filter(e=>e.isHandRaised));var Be=require("reselect");var yt=(s="audio")=>e=>e.playlist[s].list,qe=(s="audio")=>e=>e.playlist[s].selection,mt=(s="audio")=>e=>e.playlist[s].progress,gt=(s="audio")=>e=>e.playlist[s].currentTime,ht=(s="audio")=>e=>e.playlist[s].playbackRate,Pt=(s="audio")=>e=>e.playlist[s].volume,kt=(s="audio")=>(0,Be.createSelector)(yt(s),e=>Object.values(e)),Rt=(s="audio")=>(0,Be.createSelector)(yt(s),qe(s),(e,t)=>{if(t.id)return e[t.id]}),je={selection:qe("audio"),progress:mt("audio"),currentTime:gt("audio"),playbackRate:ht("audio"),volume:Pt("audio"),list:kt("audio"),selectedItem:Rt("audio")},Ge={selection:qe("video"),progress:mt("video"),currentTime:gt("video"),playbackRate:ht("video"),volume:Pt("video"),list:kt("video"),selectedItem:Rt("video")};var M=require("reselect");function p(s){return e=>t=>s(t,e)}var c=require("@100mslive/hms-video");var re="HMS-Store:",d=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(re,...t);break}case c.HMSLogLevel.DEBUG:{console.debug(re,...t);break}case c.HMSLogLevel.INFO:{console.info(re,...t);break}case c.HMSLogLevel.WARN:{console.warn(re,...t);break}case c.HMSLogLevel.ERROR:{console.error(re,...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}}}};d.level=c.HMSLogLevel.VERBOSE;var Fe=(s,e)=>e,ae=(s,e)=>e,vt=(s,e)=>e,Bs=(s,e)=>e,qs=(s,e)=>e,b=(0,M.createSelector)([P,Fe],(s,e)=>e?s[e]:null),Qe=(0,M.createSelector)([H,ae],(s,e)=>e?s[e]:null),js=(0,M.createSelector)([H,ae],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="video"?t:null}),Gs=(0,M.createSelector)([H,ae],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="audio"?t:null}),Fs=(0,M.createSelector)([H,ae],(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}),Qs=(0,M.createSelector)([H,ae],(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}),$s=(0,M.createSelector)([Ke,qs],(s,e)=>e?s[e]:null),R=p(b),Ws=p((0,M.createSelector)([Te,Bs],(s,e)=>{if(s)return e?s[e]:s}));function Js(s){return e=>{if(e.sessionStore)return s?e.sessionStore[s]:e.sessionStore}}var Ys=(...s)=>(0,M.createSelector)([Te],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}}),zs=p((0,M.createSelector)(b,s=>s==null?void 0:s.name)),ne=p(Qe),$e=p(js),Xs=p(Gs),Zs=p(Fs),ei=p(Qs),It=p((s,e)=>{let t=b(s,e);if(t&&t.videoTrack&&t.videoTrack!=="")return s.tracks[t.videoTrack]}),Et=p((s,e)=>{let t=b(s,e);if(t&&t.audioTrack&&t.audioTrack!=="")return s.tracks[t.audioTrack]}),ti=It,si=p((s,e)=>{let t=b(s,e);return(t==null?void 0:t.auxiliaryTracks.map(i=>s.tracks[i]))||[]}),bt=(s,e)=>e?s.speakers[e]:null,ii=p((0,M.createSelector)(bt,s=>(s==null?void 0:s.audioLevel)||0)),oi=(s,e)=>{let t=Et(e)(s);return bt(s,t==null?void 0:t.id)},ri=p((0,M.createSelector)(oi,s=>(s==null?void 0:s.audioLevel)||0)),ai=p((s,e)=>{if(e)return s.connectionQualities[e]}),ni=p((s,e)=>{let t=b(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}}),ci=p((0,M.createSelector)(H,b,(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})),Si=p((0,M.createSelector)(H,b,(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})),li=p((0,M.createSelector)(H,b,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return Me(o)&&Z(o)});return t?s[t]:void 0})),We=p((0,M.createSelector)(H,b,(s,e)=>F(s,e))),di=s=>(0,M.createSelector)(We(s),e=>e.video),Je=s=>(0,M.createSelector)(We(s),e=>e.audio),ui=p((s,e)=>{let t=b(s,e);return $(s,t==null?void 0:t.audioTrack)}),pi=p((s,e)=>{let t=b(s,e);return $(s,t==null?void 0:t.videoTrack)}),Ye=p((s,e)=>{if(e&&s.tracks[e])return s.tracks[e].volume===0}),Mi=p((s,e)=>{let t=b(s,e);return Ye(t==null?void 0:t.audioTrack)(s)}),Ti=p((s,e)=>{let t=Je(e)(s);return Ye(t==null?void 0:t.id)(s)}),ze=p((s,e)=>{let t=Qe(s,e);if(t){if(t.type!=="audio"){d.w("Please pass audio track here");return}return t.volume}}),Hi=p((s,e)=>{let t=b(s,e);return ze(t==null?void 0:t.audioTrack)(s)}),fi=p((s,e)=>{let t=Je(e)(s);return ze(t==null?void 0:t.id)(s)}),yi=p((s,e)=>{let t=Qe(s,e);if(t){if(t.type!=="video"){d.w("Please pass video track here");return}return t.layer}}),At=(0,M.createSelector)([ie,j,Fe],(s,e,t)=>{if(t)return s.filter(i=>{var o;return!i.recipientPeer&&!((o=i.recipientRoles)!=null&&o.length)||i.sender&&![e,t].includes(i.sender)?!1:[e,t].includes(i.recipientPeer)})}),Ct=(0,M.createSelector)([ie,vt],(s,e)=>{if(e)return s.filter(t=>{var i,o;return(i=t.recipientRoles)!=null&&i.length?(o=t.recipientRoles)==null?void 0:o.includes(e):!1})}),Nt=(0,M.createSelector)(ie,s=>s.filter(e=>{var t;return!e.recipientPeer&&!((t=e.recipientRoles)!=null&&t.length)})),mi=(0,M.createSelector)([Ct,vt],s=>s?s.filter(e=>!e.read).length:0),gi=(0,M.createSelector)([At,Fe],s=>s?s.filter(e=>!e.read).length:0),hi=(0,M.createSelector)(Nt,s=>s.filter(e=>!e.read).length),Pi=p(At),ki=p(Ct),Ri=p(mi),Di=p(gi),vi=s=>(0,M.createSelector)([N],e=>e.filter(t=>t.roleName===s)),Ii=s=>(0,M.createSelector)([N],e=>e.filter(t=>t.roleName?s.includes(t.roleName):!1)),Ei=s=>(0,M.createSelector)(R(s),e=>{try{return e!=null&&e.metadata&&e.metadata!==""?JSON.parse(e.metadata):{}}catch(t){return console.error("cannot parse peer metadata",t),{}}}),bi=s=>(0,M.createSelector)(R(s),e=>!!(e!=null&&e.isHandRaised)),Ai=s=>(0,M.createSelector)(R(s),e=>e==null?void 0:e.name),Xe=p($s);var ce=require("reselect");var Ci=(0,ce.createSelector)([P,H],(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}})),Ni=s=>s.roleChangeRequests[0]||null,Li=(0,ce.createSelector)([Ni,P,L],(s,e,t)=>s?{requestedBy:s.requestedBy?e[s.requestedBy]:void 0,role:t[s.roleName],token:s.token}:null),xi=(0,ce.createSelector)([oe],s=>se(s)),Oi=(0,ce.createSelector)([Ue],s=>se(s));var w=require("reselect");var Lt=s=>(0,w.createSelector)([L],e=>e[s]),_i=s=>(0,w.createSelector)(Lt(s),e=>se(e)),wi=(0,w.createSelector)([I,H],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Ui=(0,w.createSelector)([A,H],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Vi=s=>(0,w.createSelector)([wi],e=>e.includes(s)),Ki=s=>(0,w.createSelector)([Ui],e=>e.includes(s)),Bi=s=>(0,w.createSelector)(N,e=>e.find(s)),qi=s=>(0,w.createSelector)(N,e=>e.filter(s)),ji=s=>(0,w.createSelector)(h,e=>e.joinedAt&&Date.now()-e.joinedAt.getTime()<=s);var xt=(s,e)=>{let t=Se(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Q(o,r)?(C(o.auxiliaryTracks,r.auxiliaryTracks)&&(r.auxiliaryTracks=o.auxiliaryTracks),o.groups&&C(o.groups,r.groups)&&(r.groups=o.groups),Object.assign(o,r)):tt(o,r)?delete s[i]:ye(o,r)&&(s[i]=r)}},Ot=(s,e)=>{let t=Se(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Q(o,r)?(et(o,r),Object.assign(o,r)):tt(o,r)?delete s[i]:ye(o,r)&&(s[i]=r)}},_t=(s,e)=>{let t=Se(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Q(o,r)?(o.questions&&C(o.questions,r.questions)&&(r.questions=o.questions),Object.assign(o,r)):ye(o,r)&&(s[i]=r)}},Ze=(s,e)=>{let t=Se(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Q(o,r)?Object.assign(o,r):tt(o,r)?delete s[i]:ye(o,r)&&(s[i]=r)}},wt=(s,e,t)=>{let i=t.reduce((r,a)=>(r[a.firstTrackId]=Object.values(e[a.getTrackIDBeingSent()]||{}).sort((n,l)=>!n.rid||!l.rid?0:n.rid<l.rid?-1:1),r),{}),o=Se(Object.keys(s),Object.keys(i));for(let r of o){if(!i[r]){delete s[r];continue}s[r]=i[r]}},et=(s,e)=>{s.plugins&&C(s.plugins,e.plugins)&&(e.plugins=s.plugins),s.type==="video"&&s.layerDefinitions&&C(s.layerDefinitions,e.layerDefinitions)&&(e.layerDefinitions=s.layerDefinitions)},Q=(s,e)=>s&&e,tt=(s,e)=>s&&!e,ye=(s,e)=>!s&&e,C=(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},Se=(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 Vt=(s,e,t)=>{let i;t.getState(E)==="Connected"&&(i=Ut(s,e,t)),t.subscribe(o=>{["Connected","Reconnecting"].includes(o)?i||(i=Ut(s,e,t)):["Disconnected","Failed"].includes(o)&&i&&(Qi(e,o),i(),i=void 0)},E)},Ut=(s,e,t)=>{var r,a;let i=Gi(t,e);(r=s.getWebrtcInternals())==null||r.start();let o=(a=s.getWebrtcInternals())==null?void 0:a.onStatsChange(n=>Fi(e,n,t,s));return()=>{i(),o&&o()}},Gi=(s,e)=>{let t,i,o;return s.getState(j)?e.namedSetState(r=>{r.localPeer.id=s.getState(j)},"localpeer-id"):t=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.id=r},"localpeer-id")},j),s.getState(I)?e.namedSetState(r=>{r.localPeer.videoTrack=s.getState(I)},"localpeer-videotrack-id"):i=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.videoTrack=r},"localpeer-videotrack-id")},I),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()}},Fi=(s,e,t,i)=>{let o=t.getState(H);s.namedSetState(r=>{let a=t.getState(j),n={},l=Object.keys(o).filter(x=>o[x].peerId!==a);for(let x of l){let O=e.getRemoteTrackStats(x);O&&(n[x]=O)}Ze(r.remoteTrackStats,n);let m={[a]:e.getLocalPeerStats()};Ze(r.peerStats,m),wt(r.localTrackStats,e.getLocalTrackStats(),i.store.getLocalPeerTracks())},"webrtc-stats")},Qi=(s,e="resetState")=>{s.namedSetState(t=>{Object.assign(t,X())},e)};var Kt=require("@100mslive/hms-video"),me=s=>Kt.isBrowser?`${s} ${document.title}`:s;var Gt=require("immer"),Ft=lt(require("zustand/shallow")),Qt=lt(require("zustand/vanilla")),Ee=require("@100mslive/hms-video");var Bt=require("eventemitter2");var ge={[c.HMSPeerUpdate.PEER_JOINED]:"PEER_JOINED",[c.HMSPeerUpdate.PEER_LEFT]:"PEER_LEFT",[c.HMSPeerUpdate.ROLE_UPDATED]:"ROLE_UPDATED",[c.HMSPeerUpdate.NAME_UPDATED]:"NAME_UPDATED",[c.HMSPeerUpdate.METADATA_UPDATED]:"METADATA_UPDATED",[c.HMSPeerUpdate.HAND_RAISE_CHANGED]:"HAND_RAISE_CHANGED"},le={[c.HMSTrackUpdate.TRACK_ADDED]:"TRACK_ADDED",[c.HMSTrackUpdate.TRACK_REMOVED]:"TRACK_REMOVED",[c.HMSTrackUpdate.TRACK_MUTED]:"TRACK_MUTED",[c.HMSTrackUpdate.TRACK_UNMUTED]:"TRACK_UNMUTED",[c.HMSTrackUpdate.TRACK_DEGRADED]:"TRACK_DEGRADED",[c.HMSTrackUpdate.TRACK_RESTORED]:"TRACK_RESTORED",[c.HMSTrackUpdate.TRACK_DESCRIPTION_CHANGED]:"TRACK_DESCRIPTION_CHANGED"},he={[c.HMSPollsUpdate.POLL_CREATED]:"POLL_CREATED",[c.HMSPollsUpdate.POLL_STARTED]:"POLL_STARTED",[c.HMSPollsUpdate.POLL_STOPPED]:"POLL_STOPPED",[c.HMSPollsUpdate.POLL_STATS_UPDATED]:"POLL_VOTES_UPDATED"};var st="hmsNotification",Pe=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(st,i),()=>{this.eventEmitter.removeListener(st,i)}};this.store=e,this.eventEmitter=new Bt.EventEmitter2({maxListeners:Object.keys(pe).length})}sendPlaylistTrackEnded(e){let t=this.createNotification("PLAYLIST_TRACK_ENDED",e,"info");this.emitEvent(t)}sendDeviceChange(e){var i;let t=this.createNotification("DEVICE_CHANGE_UPDATE",e,e.error?"error":"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?"ROOM_ENDED":"REMOVED_FROM_ROOM",e,"info",`${e.roomEnded?"Room ended":"Removed from room"} ${t?`by ${t}`:""}`);this.emitEvent(i)}sendPeerList(e){if(e.length===0)return;let t=this.createNotification("PEER_LIST",e,"info");this.emitEvent(t)}sendPeerUpdate(e,t){let i=this.store.getState(R(t==null?void 0:t.id))||t,o=ge[e];if(o&&i){let r=this.createNotification(o,i,"info");this.emitEvent(r)}}sendTrackUpdate(e,t){let i=this.store.getState(ne(t)),o=le[e];if(o){let r=this.createNotification(o,i,"info");this.emitEvent(r)}}sendMessageReceived(e){let t=this.createNotification("NEW_MESSAGE",e,"info");this.emitEvent(t)}sendError(e){let t=this.createNotification("ERROR",e,"error");this.emitEvent(t)}sendReconnecting(e){let t=this.createNotification("RECONNECTING",e,"error");this.emitEvent(t)}sendReconnected(){let e=this.createNotification("RECONNECTED",null,"info");this.emitEvent(e)}sendChangeTrackStateRequest(e){let t=this.createNotification("CHANGE_TRACK_STATE_REQUEST",e,"info");this.emitEvent(t)}sendChangeMultiTrackStateRequest(e){let t=this.createNotification("CHANGE_MULTI_TRACK_STATE_REQUEST",e,"info");this.emitEvent(t)}sendPollUpdate(e,t){let i=he[e],o=this.store.getState(Xe(t));if(i){let r=this.createNotification(i,o,"info");this.emitEvent(r)}}emitEvent(e){this.eventEmitter.emit(st,e)}createNotification(e,t,i,o=""){return this.id++,{id:this.id,type:e,message:o,data:t,severity:i}}};var V=require("@100mslive/hms-video");var ke=require("@100mslive/hms-video");function qt(s){return s instanceof ke.HMSRemoteAudioTrack||s instanceof ke.HMSRemoteVideoTrack}var D=require("@100mslive/hms-video");var f=class s{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,groups:e.groups,isHandRaised:e.isHandRaised}}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 D.HMSRemoteAudioTrack&&(e.volume=t.getVolume()||0),s.updateDeviceID(e,t),s.enrichLocalTrack(e,t),e.type==="video"&&(e.source==="screen"?(e.displaySurface=i.displaySurface,s.enrichScreenTrack(e,t)):e.source==="regular"&&(e.facingMode=i.facingMode),e.height=i.height,e.width=i.width,s.enrichVideoTrack(e,t)),s.enrichPluginsDetails(e,t)}static enrichLocalTrack(e,t){(t instanceof D.HMSLocalVideoTrack||t instanceof D.HMSLocalAudioTrack)&&(e.isPublished=t.isPublished)}static updateDeviceID(e,t){var i;t instanceof D.HMSLocalVideoTrack||t instanceof D.HMSLocalAudioTrack?e.deviceID=t.settings.deviceId:e.deviceID=(i=t.getMediaTrackSettings())==null?void 0:i.deviceId}static enrichVideoTrack(e,t){t instanceof D.HMSRemoteVideoTrack&&(e.layer=t.getLayer(),e.preferredLayer=t.getPreferredLayer(),e.degraded=t.degraded),(t instanceof D.HMSRemoteVideoTrack||t instanceof D.HMSLocalVideoTrack)&&(C(t.getSimulcastDefinitions(),e.layerDefinitions)||(e.layerDefinitions=t.getSimulcastDefinitions()))}static enrichScreenTrack(e,t){var i,o;if(t instanceof D.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 D.HMSLocalVideoTrack||t instanceof D.HMSLocalAudioTrack)&&(C(t.getPlugins(),e.plugins)||(e.plugins=t.getPlugins()))}static convertRoom(e,t){let{recording:i,rtmp:o,hls:r}=s.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:t,recording:i,rtmp:o,hls:r,sessionId:e.sessionId,startedAt:e.startedAt,joinedAt:e.joinedAt,peerCount:e.peerCount,isLargeRoom:e.large_room_optimization}}static convertMessage(e){var t,i,o,r,a,n,l;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:(l=e.recipientRoles)==null?void 0:l.map(m=>m.name),time:e.time,type:e.type,message:e.message,id:e.id}}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,"audio"),i=this.getConvertedPlaylistType(e,"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 q(k({},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),l=e.getCurrentIndex(t);return e.getList(t).forEach(m=>{i[m.id]=s.convertPlaylistItem(e,m)}),{list:i,selection:{id:o==null?void 0:o.id,hasPrevious:l>0,hasNext:l<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:k({running:!1},e==null?void 0:e.browser),server:k({running:!1},e==null?void 0:e.server),hls:k({running:!1},e==null?void 0:e.hls)},rtmp:k({running:!1},t),hls:{variants:((o=i==null?void 0:i.variants)==null?void 0:o.map(r=>r))||[],running:!!(i!=null&&i.running),error:i==null?void 0:i.error}}}};var Re=class{constructor(e){this.sdk=e}get sdkInteractivityCenter(){return this.sdk.getInteractivityCenter()}createPoll(e){return this.sdkInteractivityCenter.createPoll(e)}startPoll(e){return this.sdkInteractivityCenter.startPoll(e)}stopPoll(e){return this.sdkInteractivityCenter.stopPoll(e)}addQuestionsToPoll(e,t){return this.sdkInteractivityCenter.addQuestionsToPoll(e,t)}addResponsesToPoll(e,t){return this.sdkInteractivityCenter.addResponsesToPoll(e,t)}};var de=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){d.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==="audio"?je:Ge,t=this.store.getState(e.selection);if(!t.id){d.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 De=class{constructor(e,t){this.sdk=e;this.setLocally=t}get sdkSessionStore(){return this.sdk.getSessionStore()}set(e,t){return S(this,null,function*(){let{value:i}=yield this.sdkSessionStore.set(String(e),t);this.setLocally({key:e,value:i})})}observe(e){return S(this,null,function*(){let t=Array.isArray(e)?e.map(i=>String(i)):[String(e)];yield this.sdkSessionStore.observe(t)})}unobserve(e){return S(this,null,function*(){let t=Array.isArray(e)?e.map(i=>String(i)):[String(e)];yield this.sdkSessionStore.unobserve(t)})}};var ve=class{constructor(e,t){this.intervalMs=100,this.shouldMonitor=!1,this.hasStarted=!1,this.unsubs=[],this.analysers={},this.store=e,this.actions=t}start(){return S(this,null,function*(){if(this.hasStarted)return;this.hasStarted=!0,d.d("starting audio level monitor for remote peers",this.store);let e=this.store.getState(U);d.d("starting audio levels is connected to room",e),e&&(yield this.monitorAudioLevels());let t=this.store.subscribe(this.monitorAudioLevels.bind(this),U);this.unsubs.push(t)})}stop(){return S(this,null,function*(){this.hasStarted&&(this.hasStarted=!1,this.shouldMonitor=!1,this.unsubs.forEach(e=>e()),d.d("stopped audio level monitor for remote peers"))})}monitorAudioLevels(){return S(this,null,function*(){if(!this.store.getState(U)){this.shouldMonitor&&(d.i("room no longer connected, stopping audio level monitoring for remote"),this.shouldMonitor=!1);return}if(this.shouldMonitor)return;d.i("monitoring audio levels"),this.shouldMonitor=!0;let t=()=>{this.shouldMonitor?(this.logAllPeersAudioLevels(),setTimeout(t,this.intervalMs)):d.i("stopped monitoring audio levels")};setTimeout(t,1e3)})}logAllPeersAudioLevels(){return S(this,null,function*(){var o;if(!window.__triggerBeamEvent__)return;let t=this.store.getState(N).filter(r=>!!r.audioTrack),i=[];for(let r of t){let a=this.actions.hmsSDKTracks[r.audioTrack],n=(o=a==null?void 0:a.stream)==null?void 0:o.nativeStream;if(r.joinedAt&&n){let l=yield this.getAudioLevel(r,n);l.level>0&&i.push(l)}}if(i.length>0){let r={event:"app-audio-level",data:i};window.__triggerBeamEvent__(JSON.stringify(r))}})}getAudioLevel(e,t){return S(this,null,function*(){this.analysers[t.id]||(this.analysers[t.id]=this.createAnalyserNode(t));let i=this.analysers[t.id],o=this.calculateAudioLevel(i);return{peerId:e.id,peerName:e.name,level:o}})}createAnalyserNode(e){this.audioContext||(this.audioContext=new AudioContext);let t=this.audioContext.createAnalyser();return this.audioContext.createMediaStreamSource(e).connect(t),t}calculateAudioLevel(e){let t=new Uint8Array(e.fftSize);e.getByteTimeDomainData(t);let i=.009,o=i;for(let n of t)o=Math.max(o,(n-128)/128);let r=(Math.log(i)-Math.log(o))/Math.log(i);return Math.ceil(Math.min(Math.max(r*100,0),100))}};var Ie=class{constructor(e,t,i){this.hmsSDKTracks={};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(R(t.peerId)),o=ge[e]||"peerUpdate";if(e===c.HMSPeerUpdate.ROLE_UPDATED)this.syncRoomState(o),this.updateMidCallPreviewRoomState(e,t);else if([c.HMSPeerUpdate.PEER_JOINED,c.HMSPeerUpdate.PEER_LEFT].includes(e))this.syncRoomState(o),i||(i=this.store.getState(R(t.peerId)));else if([c.HMSPeerUpdate.HAND_RAISE_CHANGED,c.HMSPeerUpdate.PEER_REMOVED,c.HMSPeerUpdate.PEER_ADDED].includes(e))this.syncRoomState(o),i||(i=this.store.getState(R(t.peerId)));else{let r=f.convertPeer(t);this.setState(a=>{let n=a.peers[r.id];Q(n,r)&&(C(n.auxiliaryTracks,r.auxiliaryTracks)&&(n.auxiliaryTracks=r.auxiliaryTracks),Object.assign(n,r)),i=r},o)}this.hmsNotifications.sendPeerUpdate(e,i)};this.getSDKHMSPeer=e=>this.sdk.getPeerMap()[e];this.setState=(e,t)=>this.store.namedSetState(e,t);this.store=e,this.sdk=t,this.hmsNotifications=i,this.sessionStore=new De(this.sdk,this.setSessionStoreValueLocally.bind(this)),this.interactivityCenter=new Re(this.sdk)}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 V.HMSRemoteVideoTrack){if(t===V.HMSSimulcastLayer.NONE){d.d(`layer ${V.HMSSimulcastLayer.NONE} will be ignored`);return}if(((o=this.store.getState($e(e)))==null?void 0:o.preferredLayer)===t){d.d(`preferred layer is already ${t}`);return}this.setState(a=>{let n=a.tracks[e];n&&(n.preferredLayer=t)},"setPreferredLayer"),yield i.setPreferredLayer(t)}else d.d(`track ${e} is not a remote video track`);else this.logPossibleInconsistency(`track ${e} not present, unable to set preffer layer`)})}getAuthTokenByRoomCode(e,t){return this.sdk.getAuthTokenByRoomCode(e,t)}preview(e){return S(this,null,function*(){let t=this.store.getState(E);if(t==="Preview"||t==="Connecting"){this.logPossibleInconsistency("attempting to call preview while room is in preview/connecting");return}try{t!=="Connected"&&this.setState(i=>{i.room.roomState="Connecting"},"connecting"),yield this.sdkPreviewWithListeners(e)}catch(i){throw d.e("Cannot show preview. Failed to connect to room - ",i),i}})}cancelMidCallPreview(){return S(this,null,function*(){return this.sdk.cancelMidCallPreview()})}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="Connecting"},"join"),yield this.sdkJoinWithListeners(e)}catch(t){throw this.isRoomJoinCalled=!1,d.e("Failed to connect to room - ",t),t}})}leave(){return S(this,null,function*(){let e=this.store.getState(U),t=!0;e||(t=!1,this.logPossibleInconsistency("room leave is called when no room is connected"));let i=this.store.getState(E);return this.setState(o=>{o.room.roomState="Disconnecting"},"leaving"),this.sdk.leave(t).then(()=>{this.resetState("leave"),this.beamSpeakerLabelsLogger&&this.beamSpeakerLabelsLogger.stop().catch(d.e),d.i("left room")}).catch(o=>{d.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(f.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(I);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(f.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(I);t&&(yield this.setSDKLocalVideoTrackSettings(t,e),this.syncRoomState("setVideoSettings"))})}switchCamera(){return S(this,null,function*(){let e=this.store.getState(I);if(e){let t=this.hmsSDKTracks[e];t&&(yield t.switchCamera(),this.syncRoomState("switchCamera"))}})}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(L),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.getSDKHMSPeer(t);if(!o)throw d.w("sendMessage","Failed to send message"),Error(`sendMessage Failed - peer ${t} not found`);let r=yield this.sdk.sendDirectMessage(e,o,i);this.updateMessageInStore(r,{message:e,recipientPeer:o.peerId,type:i})})}updateMessageInStore(e,t){if(!e)throw d.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 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())}),He)});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"?yield this.sdk.detachVideo(i,t):(t&&(t.srcObject=null),d.d("possible inconsistency detected - 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 d.w("no plugin passed in for checking support"),t.errMsg="no plugin passed in for checking support",t;let i=this.store.getState(I);if(!i)return d.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):(d.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 d.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 d.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):(d.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*(){yield this.sdk.changeRoleOfPeer(e,t,i)})}changeRoleOfPeer(e,t,i=!1){return S(this,null,function*(){yield this.sdk.changeRoleOfPeer(e,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.getSDKHMSPeer(e.requestedBy.id):void 0;t||d.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)})}raiseLocalPeerHand(){return S(this,null,function*(){yield this.sdk.raiseLocalPeerHand()})}lowerLocalPeerHand(){return S(this,null,function*(){yield this.sdk.lowerLocalPeerHand()})}raiseRemotePeerHand(e){return S(this,null,function*(){yield this.sdk.raiseRemotePeerHand(e)})}lowerRemotePeerHand(e){return S(this,null,function*(){yield this.sdk.lowerRemotePeerHand(e)})}getPeerListIterator(e){let t=this.sdk.getPeerListIterator(e);return{hasNext:()=>t.hasNext(),next:()=>S(this,null,function*(){return(yield t.next()).map(o=>f.convertPeer(o))}),findPeers:()=>S(this,null,function*(){return(yield t.findPeers()).map(o=>f.convertPeer(o))}),getTotal:()=>t.getTotal()}}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(Ve);if(!(i!=null&&i.endRoom)){d.w("You are not allowed to perform this action - endRoom");return}let o=this.store.getState(E);this.setState(r=>{r.room.roomState="Disconnecting"},"endingRoom");try{yield this.sdk.endRoom(e,t),this.resetState("endRoom")}catch(r){d.e("error in ending room - ",r),this.setState(a=>{a.room.roomState=o},"revertEndRoom")}})}removePeer(e,t){return S(this,null,function*(){var o;let i=(o=this.sdk.getLocalPeer())==null?void 0:o.peerId;e!==i&&(yield this.sdk.removePeer(e,t))})}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"),this.setSessionStoreValueLocally({key:"default",value:e},"setSessionMetadata")})}populateSessionMetadata(){return S(this,null,function*(){let e=yield this.sdk.getSessionMetadata();this.setState(t=>{t.sessionMetadata=e},"populateSessionMetadata"),this.setSessionStoreValueLocally({key:"default",value:e},"populateSessionmetadata")})}setRemoteTrackEnabled(e,t){return S(this,null,function*(){if(typeof e=="string"){let i=this.hmsSDKTracks[e];i&&qt(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(L);t.roles=e.roles.map(o=>i[o])}yield this.sdk.changeMultiTrackState(t)})}setLogLevel(e){d.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)}enableBeamSpeakerLabelsLogging(){return S(this,null,function*(){this.beamSpeakerLabelsLogger||(d.i("enabling beam speaker labels logging"),this.beamSpeakerLabelsLogger=new ve(this.store,this),yield this.beamSpeakerLabelsLogger.start())})}resetState(e="resetState"){this.isRoomJoinCalled=!1,this.hmsSDKTracks={},d.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),onPreview:this.onPreview.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),onSessionStoreUpdate:this.onSessionStoreUpdate.bind(this),onPollsUpdate:this.onPollsUpdate.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(R((o=e.requestedBy)==null?void 0:o.peerId));this.hmsNotifications.sendLeaveRoom(q(k({},e),{requestedBy:t||void 0}));let i=e.roomEnded||!t?"roomEnded":"removedFromRoom";d.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(v);if(this.setState(o=>{C(o.devices.audioInput,t.audioInput)||(o.devices.audioInput=t.audioInput),C(o.devices.videoInput,t.videoInput)||(o.devices.videoInput=t.videoInput),C(o.devices.audioOutput,t.audioOutput)||(o.devices.audioOutput=t.audioOutput);let r=this.sdk.getLocalPeer();i!=null&&i.id&&r&&Object.assign(o.settings,this.getMediaSettings(r))},"deviceChange"),e.selection){let o=f.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")}onSessionStoreUpdate(e){this.setSessionStoreValueLocally(e,"sessionStoreUpdate")}onPollsUpdate(e,t){let i=he[e];this.setState(o=>{let r=t.reduce((a,n)=>{var l;return a[n.id]=q(k({},n),{questions:(l=n.questions)==null?void 0:l.map(m=>{var x,O;return q(k({},m),{answer:m.answer?k({},m.answer):void 0,options:(x=m.options)==null?void 0:x.map(B=>k({},B)),responses:(O=m.responses)==null?void 0:O.map(B=>k({},B))})})}),a},{});_t(o.polls,r)},i),t.forEach(o=>this.hmsNotifications.sendPollUpdate(e,o.id))}startScreenShare(e){return S(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 S(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 S(this,null,function*(){let i=this.hmsSDKTracks[e];i&&i.type==="video"?yield this.sdk.attachVideo(i,t):this.logPossibleInconsistency("no video track found to add sink")})}syncRoomState(e){e=`${e}_fullSync`,d.time(`store-sync-${e}`);let t={},i=[],o={},r={},a={},n={},l,m=this.sdk.getPeers();for(let y of m){let G=f.convertPeer(y);t[G.id]=G,i.push(G.id),n[G.id]={peerID:G.id,downlinkQuality:y.networkQuality||-1};let be=[y.audioTrack,y.videoTrack,...y.auxiliaryTracks];for(let _ of be){if(!_)continue;let rt=f.convertTrack(_);o[rt.id]=rt,r[_.trackId]=_}if(y.isLocal){let _=y;l=this.getPreviewFields(_),Object.assign(a,this.getMediaSettings(_))}}let x=this.sdk.getRecordingState(),O=this.sdk.getRTMPState(),B=this.sdk.getHLSState();this.setState(y=>{var _;y.room.peers=i;let G=y.peers,be=y.tracks;xt(G,t),Ot(be,o),Object.assign(y.settings,a),Object.assign(y.connectionQualities,n),this.hmsSDKTracks=r,(_=y.preview)!=null&&_.localPeer&&(l!=null&&l.localPeer)?Object.assign(y.preview,l):y.preview=l,Object.assign(y.roles,f.convertRoles(this.sdk.getRoles())),Object.assign(y.playlist,f.convertPlaylist(this.sdk.getPlaylistManager())),Object.assign(y.room,f.convertRecordingStreamingState(x,O,B)),Object.assign(y.templateAppData,this.sdk.getTemplateAppData())},e),d.timeEnd(`store-sync-${e}`)}onPreview(e){this.setState(t=>{var i;Object.assign(t.room,f.convertRoom(e,(i=this.sdk.getLocalPeer())==null?void 0:i.peerId)),t.room.roomState="Preview"},"previewStart"),this.syncRoomState("previewSync")}onJoin(e){let t=this.sdk.getPlaylistManager();this.audioPlaylist=new de(t,"audio",this.syncPlaylistState.bind(this),this.store),this.videoPlaylist=new de(t,"video",this.syncRoomState.bind(this),this.store),this.syncRoomState("joinSync"),this.setState(i=>{var o;Object.assign(i.room,f.convertRoom(e,(o=this.sdk.getLocalPeer())==null?void 0:o.peerId)),i.room.isConnected=!0,i.room.roomState="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=>{var o;Object.assign(i.room,f.convertRoom(t,(o=this.sdk.getLocalPeer())==null?void 0:o.peerId))},e)}onPeerUpdate(e,t){if(![c.HMSPeerUpdate.BECAME_DOMINANT_SPEAKER,c.HMSPeerUpdate.RESIGNED_DOMINANT_SPEAKER].includes(e)){if(Array.isArray(t)){let i=this.store.getState(P),o=t.filter(a=>!i[a.peerId]);if(this.syncRoomState("peersJoined"),this.store.getState(U)){let a=[];for(let n of t){let l=this.store.getState(R(n.peerId));l&&a.push(l)}this.hmsNotifications.sendPeerList(a)}else o.forEach(a=>{let n=this.store.getState(R(a.peerId));n&&this.hmsNotifications.sendPeerUpdate(c.HMSPeerUpdate.PEER_JOINED,n)});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 if([c.HMSTrackUpdate.TRACK_ADDED,c.HMSTrackUpdate.TRACK_REMOVED].includes(e)){let o=le[e];this.syncRoomState(o),this.hmsNotifications.sendTrackUpdate(e,t.trackId)}else{let o=le[e]||"trackUpdate",r=f.convertTrack(t);this.setState(a=>{let n=a.tracks[r.id];Q(n,r)&&(et(n,r),Object.assign(n,r))},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=>{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=>{e.forEach(i=>{let o=i.peerID;o&&(t.connectionQualities[o]?Object.assign(t.connectionQualities[o],i):t.connectionQualities[o]=i)})},"connectionQuality")}onChangeTrackStateRequest(e){var r;let t=this.store.getState(R((r=e.requestedBy)==null?void 0:r.peerId)),i=this.getStoreLocalTrackIDfromSDKTrack(e.track),o=this.store.getState(ne(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(R((r=e.requestedBy)==null?void 0:r.peerId));e.enabled||this.syncRoomState("changeMultiTrackStateRequest");let i=[],o=this.store.getState(H);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?"Connected":"Preview"},"reconnected")}onReconnecting(e){let t=f.convertException(e);d.e("Reconnection: received error from sdk",t),this.hmsNotifications.sendReconnecting(t),this.setState(i=>{i.room.roomState="Reconnecting",i.errors.push(t)},"reconnecting")}onError(e){let t=f.convertException(e);t.isTerminal?(this.leave().then(()=>d.e("error from SDK, left room.")),this.setState(i=>{i.room.roomState="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),d.e("received error from sdk",t instanceof V.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(xe),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}}getPreviewFields(e){var i,o;if(!e.isInPreview())return;let t=f.convertPeer(e);return{localPeer:t.id,audioTrack:t.audioTrack,videoTrack:t.videoTrack,asRole:((i=e.asRole)==null?void 0:i.name)||((o=e.role)==null?void 0:o.name)}}setTrackVolume(e,t){return S(this,null,function*(){let i=this.hmsSDKTracks[t];i?i instanceof V.HMSAudioTrack?(yield i.setVolume(e),this.setState(o=>{let r=o.tracks[t];r&&r.type==="audio"&&(r.volume=e)},"trackVolume")):d.w(`track ${t} is not an audio track`):this.logPossibleInconsistency(`track ${t} not present, unable to set volume`)})}localAndVideoUnmuting(e){let t=this.store.getState(v);if((t==null?void 0:t.videoTrack)!==e)return!1;let i=this.store.getState(_e),o=this.store.getState(He);return i&&!o}logPossibleInconsistency(e){d.w("possible inconsistency detected - ",e)}addRemoveVideoPlugin(e,t,i){return S(this,null,function*(){if(!e){d.w("Invalid plugin received in store");return}let o=this.store.getState(I);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){d.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(Oe).find(i=>this.hmsSDKTracks[i].trackId===e.trackId)}updateMidCallPreviewRoomState(e,t){t.isLocal&&e===c.HMSPeerUpdate.ROLE_UPDATED&&this.store.getState(we)&&this.setState(i=>{i.room.roomState="Connected"},"midCallPreviewCompleted")}setSessionStoreValueLocally(e,t="setSessionStore"){let i=Array.isArray(e)?e:[e];this.setState(o=>{i.forEach(r=>{o.sessionStore[r.key]=r.value})},t)}};var W=class s{constructor(e,t,i){this.getStats=()=>(this.stats||(this.stats=new J(this.store,this.sdk)),this.stats);e?this.store=e:this.store=s.createNewHMSStore(me("HMSStore"),z),i?this.notifications=i:this.notifications=new Pe(this.store),t?this.actions=t:(this.sdk=new Ee.HMSSdk,this.actions=new Ie(this.store,this.sdk,this.notifications)),this.actions.setFrameworkInfo({type:"js",sdkVersion:jt().version}),this.initialTriggerOnSubscribe=!1,Ee.isBrowser&&(window.__hms=this)}triggerOnSubscribe(){this.initialTriggerOnSubscribe||(s.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,Qt.default)(()=>t()),o=i.setState;i.setState=n=>{let l=typeof n=="function"?(0,Gt.produce)(n):n;o(l)};let r=i.getState;i.getState=n=>n?n(r()):r(),s.compareWithShallowCheckInSubscribe(i);let a=s.setUpDevtools(i,e);return q(k({},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||Ft.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(s.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(s.devtoolsSubscribe(o,e,r)),o.send("setUpStore",e.getState()),(a,n)=>{r(a);let l=n||`${o.prefix}action`;o.send(l,e.getState())}}static devtoolsOptions(e){return{name:e,actionsBlacklist:["audioLevel","playlistProgress","connectionQuality"]}}static devtoolsSubscribe(e,t,i){return o=>{var r,a,n,l;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 m=(n=o.payload.nextLiftedState)==null?void 0:n.actionsById;(((l=o.payload.nextLiftedState)==null?void 0:l.computedStates)||[]).forEach(({state:O},B)=>{let y=m[B]||`${e.prefix}setState`;B===0?e.init(O):(i(O),e.send(y,t.getState()))})}}}};var J=class{constructor(e,t){this.hmsStore=e;this.sdk=t;this.store=W.createNewHMSStore(me("HMSStatsStore"),X),this.getState=this.store.getState,this.subscribe=this.store.subscribe,this.getPublishPeerConnection=()=>new Promise(i=>{var o,r;this.hmsStore.getState(E)==="Connected"?i((r=(o=this.sdk)==null?void 0:o.getWebrtcInternals())==null?void 0:r.getPublishPeerConnection()):this.hmsStore.subscribe(a=>{var n,l;a==="Connected"&&i((l=(n=this.sdk)==null?void 0:n.getWebrtcInternals())==null?void 0:l.getPublishPeerConnection())},E)}),this.getSubscribePeerConnection=()=>new Promise(i=>{var o,r;this.hmsStore.getState(E)==="Connected"?i((r=(o=this.sdk)==null?void 0:o.getWebrtcInternals())==null?void 0:r.getSubscribePeerConnection()):this.hmsStore.subscribe(a=>{var n,l;a==="Connected"&&i((l=(n=this.sdk)==null?void 0:n.getWebrtcInternals())==null?void 0:l.getSubscribePeerConnection())},E)}),this.sdk&&Vt(this.sdk,this.store,this.hmsStore)}};var g=require("reselect");var Wi=s=>s.localPeer.id,Ji=s=>s.localPeer.audioTrack,Yi=s=>s.localPeer.videoTrack,zi=(s,e)=>e,$t=(s,e)=>e,Xi=s=>s.remoteTrackStats,Wt=s=>s.peerStats,it=s=>s.localTrackStats,K=(0,g.createSelector)([Wt,Wi],(s,e)=>s[e]),Zi=(0,g.createSelector)(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.packetsLost}),eo=(0,g.createSelector)(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.jitter}),to=(0,g.createSelector)(K,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bitrate}),so=(0,g.createSelector)(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bitrate}),io=(0,g.createSelector)(K,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.availableOutgoingBitrate}),oo=(0,g.createSelector)(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.availableIncomingBitrate}),ro=(0,g.createSelector)(K,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bytesSent}),ao=(0,g.createSelector)(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bytesReceived}),no=(0,g.createSelector)([Wt,zi],(s,e)=>e?s[e]:void 0),co=(0,g.createSelector)([Xi,$t],(s,e)=>e?s[e]:void 0),ot=(0,g.createSelector)([it,$t],(s,e)=>e?s[e]:void 0),So=p(no),lo=p(co),uo=(0,g.createSelector)([it,Ji],(s,e)=>{var t;return e?(t=s[e])==null?void 0:t[0]:void 0}),po=p((0,g.createSelector)(ot,s=>s==null?void 0:s[0])),Mo=(0,g.createSelector)([it,Yi],(s,e)=>{var t;return e?(t=s[e])==null?void 0:t[0]:void 0}),To=p((0,g.createSelector)(ot,s=>s)),Ho=s=>p((0,g.createSelector)(ot,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])})),Jt={localPeerStats:K,packetsLost:Zi,jitter:eo,publishBitrate:to,subscribeBitrate:so,availablePublishBitrate:io,availableSubscribeBitrate:oo,totalBytesSent:ro,totalBytesReceived:ao,peerStatsByID:So,trackStatsByID:lo,localAudioTrackStatsByID:po,localVideoTrackStatsByID:To,localVideoTrackStatsByLayer:Ho,localAudioTrackStats:uo,localVideoTrackStats:Mo};
1
+ "use strict";var Yt=Object.create;var Y=Object.defineProperty,zt=Object.defineProperties,Xt=Object.getOwnPropertyDescriptor,Zt=Object.getOwnPropertyDescriptors,es=Object.getOwnPropertyNames,at=Object.getOwnPropertySymbols,ts=Object.getPrototypeOf,ct=Object.prototype.hasOwnProperty,ss=Object.prototype.propertyIsEnumerable;var nt=(s,e,t)=>e in s?Y(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,k=(s,e)=>{for(var t in e||(e={}))ct.call(e,t)&&nt(s,t,e[t]);if(at)for(var t of at(e))ss.call(e,t)&&nt(s,t,e[t]);return s},q=(s,e)=>zt(s,Zt(e));var is=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),os=(s,e)=>{for(var t in e)Y(s,t,{get:e[t],enumerable:!0})},St=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of es(e))!ct.call(s,o)&&o!==t&&Y(s,o,{get:()=>e[o],enumerable:!(i=Xt(e,o))||i.enumerable});return s};var lt=(s,e,t)=>(t=s!=null?Yt(ts(s)):{},St(e||!s||!s.__esModule?Y(t,"default",{value:s,enumerable:!0}):t,s)),rs=s=>St(Y({},"__esModule",{value:!0}),s);var S=(s,e,t)=>new Promise((i,o)=>{var r=l=>{try{n(t.next(l))}catch(m){o(m)}},a=l=>{try{n(t.throw(l))}catch(m){o(m)}},n=l=>l.done?i(l.value):Promise.resolve(l.value).then(r,a);n((t=t.apply(s,e)).next())});var jt=is((kn,Wi)=>{Wi.exports={version:"0.10.22",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.9.22",eventemitter2:"^6.4.7",immer:"^9.0.6",reselect:"4.0.0",zustand:"3.5.7"},devDependencies:{"jsdom-worker":"^0.3.0","ts-node":"^10.4.0",tslib:"^2.2.0"},description:"@100mslive Core SDK which abstracts the complexities of webRTC while providing a reactive store for data management with a unidirectional data flow",keywords:["video","webrtc","conferencing","100ms"],gitHead:"543b9152024ee7e4554701f1387b1af32906b58a"}});var yo={};os(yo,{DeviceType:()=>c.DeviceType,HMSAudioPluginType:()=>c.HMSAudioPluginType,HMSLogLevel:()=>c.HMSLogLevel,HMSMessageType:()=>dt,HMSNotificationSeverity:()=>Ce,HMSNotificationTypes:()=>Me,HMSPlaylistType:()=>Ne,HMSReactiveStore:()=>W,HMSRoomState:()=>pe,HMSStats:()=>J,HMSVideoPluginCanvasContextType:()=>c.HMSVideoPluginCanvasContextType,HMSVideoPluginType:()=>c.HMSVideoPluginType,createDefaultStatsStore:()=>X,createDefaultStoreState:()=>z,parsedUserAgent:()=>c.parsedUserAgent,selectAppData:()=>Ws,selectAppDataByPath:()=>Ys,selectAudioPlaylist:()=>je,selectAudioPlaylistTrackByPeerID:()=>li,selectAudioTrackByID:()=>Xs,selectAudioTrackByPeerID:()=>Et,selectAudioTrackVolume:()=>ze,selectAudioVolumeByPeerID:()=>Hi,selectAuxiliaryAudioByPeerID:()=>ni,selectAuxiliaryTracksByPeerID:()=>si,selectAvailableRoleNames:()=>bs,selectBroadcastMessages:()=>Nt,selectBroadcastMessagesUnreadCount:()=>hi,selectCameraStreamByPeerID:()=>ti,selectConnectionQualities:()=>ls,selectConnectionQualityByPeerID:()=>ai,selectDegradedTracks:()=>Ds,selectDevices:()=>Ss,selectDidIJoinWithin:()=>Gi,selectDominantSpeaker:()=>ys,selectErrors:()=>Mt,selectFullAppData:()=>He,selectHLSState:()=>Ls,selectHMSMessages:()=>oe,selectHMSMessagesCount:()=>Is,selectHMSStats:()=>Jt,selectHandRaisedPeers:()=>Ks,selectHasPeerHandRaised:()=>bi,selectIsAllowedToPreviewMedia:()=>_i,selectIsAllowedToPublish:()=>Oi,selectIsAllowedToSubscribe:()=>As,selectIsAudioLocallyMuted:()=>Ye,selectIsConnectedToRoom:()=>U,selectIsInPreview:()=>we,selectIsLargeRoom:()=>_s,selectIsLocalAudioEnabled:()=>ms,selectIsLocalAudioPluginPresent:()=>Bi,selectIsLocalScreenShared:()=>ye,selectIsLocalVideoDisplayEnabled:()=>_e,selectIsLocalVideoEnabled:()=>fe,selectIsLocalVideoPluginPresent:()=>Ki,selectIsLocallyMutedByPeerID:()=>Mi,selectIsPeerAudioEnabled:()=>ui,selectIsPeerVideoEnabled:()=>pi,selectIsRoleAllowedToPublish:()=>wi,selectIsScreenShareLocallyMutedByPeerID:()=>Ti,selectIsSomeoneScreenSharing:()=>gs,selectLocalAudioTrackID:()=>A,selectLocalMediaSettings:()=>xe,selectLocalPeer:()=>I,selectLocalPeerID:()=>j,selectLocalPeerName:()=>Ms,selectLocalPeerRole:()=>re,selectLocalPeerRoleName:()=>Ts,selectLocalTrackIDs:()=>Oe,selectLocalVideoTrackID:()=>v,selectMessageByMessageID:()=>Ci,selectMessageIDsInOrder:()=>Le,selectMessagesByPeerID:()=>Pi,selectMessagesByRole:()=>ki,selectMessagesMap:()=>ie,selectMessagesUnreadCountByPeerID:()=>Di,selectMessagesUnreadCountByRole:()=>Ri,selectPeerAudioByID:()=>ri,selectPeerByCondition:()=>qi,selectPeerByID:()=>R,selectPeerCount:()=>ds,selectPeerMetadata:()=>Ei,selectPeerName:()=>Ai,selectPeerNameByID:()=>zs,selectPeerScreenSharing:()=>Ht,selectPeerSharingAudio:()=>hs,selectPeerSharingAudioPlaylist:()=>Rs,selectPeerSharingVideoPlaylist:()=>ks,selectPeers:()=>N,selectPeersByCondition:()=>ji,selectPeersByRole:()=>Ii,selectPeersByRoles:()=>vi,selectPeersMap:()=>P,selectPeersScreenSharing:()=>Ps,selectPeersWithAudioStatus:()=>Ni,selectPermissions:()=>Ve,selectPollByID:()=>Xe,selectPolls:()=>Vs,selectPollsMap:()=>Ke,selectPreviewRole:()=>Ue,selectPreviewRoleName:()=>ft,selectRTMPState:()=>Ns,selectRecentError:()=>ns,selectRecordingState:()=>Cs,selectRemotePeers:()=>fs,selectRoleByRoleName:()=>Lt,selectRoleChangeRequest:()=>xi,selectRolesMap:()=>L,selectRoom:()=>h,selectRoomID:()=>cs,selectRoomStartTime:()=>Os,selectRoomStarted:()=>Es,selectRoomState:()=>E,selectScreenAudioTrackByID:()=>Zs,selectScreenShareAudioByPeerID:()=>Je,selectScreenShareByPeerID:()=>di,selectScreenSharesByPeerId:()=>We,selectScreenVideoTrackByID:()=>ei,selectScreenshareAudioVolumeByPeerID:()=>fi,selectSessionId:()=>xs,selectSessionMetadata:()=>Us,selectSessionStore:()=>Js,selectSimulcastLayerByTrack:()=>yi,selectSpeakers:()=>Tt,selectTemplateAppData:()=>ws,selectTrackAudioByID:()=>ii,selectTrackByID:()=>ce,selectTracksMap:()=>H,selectUnreadHMSMessagesCount:()=>vs,selectVideoPlaylist:()=>Ge,selectVideoPlaylistAudioTrackByPeerID:()=>Si,selectVideoPlaylistVideoTrackByPeerID:()=>ci,selectVideoTrackByID:()=>$e,selectVideoTrackByPeerID:()=>vt,simulcastMapping:()=>c.simulcastMapping});module.exports=rs(yo);var pe=(n=>(n.Disconnected="Disconnected",n.Preview="Preview",n.Connecting="Connecting",n.Connected="Connected",n.Reconnecting="Reconnecting",n.Disconnecting="Disconnecting",n.Failed="Failed",n))(pe||{});var z=()=>({room:{id:"",isConnected:!1,name:"",peers:[],localPeer:"",roomState:"Disconnected",recording:{browser:{running:!1},server:{running:!1},hls:{running:!1}},rtmp:{running:!1},hls:{running:!1,variants:[]},sessionId:""},peers:{},tracks:{},playlist:{audio:{list:{},selection:{id:"",hasPrevious:!1,hasNext:!1},progress:0,volume:0,currentTime:0,playbackRate:1},video:{list:{},selection:{id:"",hasPrevious:!1,hasNext:!1},progress:0,volume:0,currentTime:0,playbackRate:1}},messages:{byID:{},allIDs:[]},speakers:{},connectionQualities:{},settings:{audioInputDeviceId:"",audioOutputDeviceId:"",videoInputDeviceId:""},devices:{audioInput:[],audioOutput:[],videoInput:[]},roles:{},roleChangeRequests:[],errors:[],sessionStore:{},templateAppData:{},polls:{},hideLocalPeer:!1}),X=()=>({peerStats:{},remoteTrackStats:{},localTrackStats:{},localPeer:{id:""}});var dt=(e=>(e.CHAT="chat",e))(dt||{});var Ce=(t=>(t.INFO="info",t.ERROR="error",t))(Ce||{}),Me=(T=>(T.PEER_JOINED="PEER_JOINED",T.PEER_LEFT="PEER_LEFT",T.PEER_LIST="PEER_LIST",T.NEW_MESSAGE="NEW_MESSAGE",T.ERROR="ERROR",T.RECONNECTING="RECONNECTING",T.RECONNECTED="RECONNECTED",T.TRACK_ADDED="TRACK_ADDED",T.TRACK_REMOVED="TRACK_REMOVED",T.TRACK_MUTED="TRACK_MUTED",T.TRACK_UNMUTED="TRACK_UNMUTED",T.TRACK_DEGRADED="TRACK_DEGRADED",T.TRACK_RESTORED="TRACK_RESTORED",T.TRACK_DESCRIPTION_CHANGED="TRACK_DESCRIPTION_CHANGED",T.ROLE_UPDATED="ROLE_UPDATED",T.CHANGE_TRACK_STATE_REQUEST="CHANGE_TRACK_STATE_REQUEST",T.CHANGE_MULTI_TRACK_STATE_REQUEST="CHANGE_MULTI_TRACK_STATE_REQUEST",T.ROOM_ENDED="ROOM_ENDED",T.REMOVED_FROM_ROOM="REMOVED_FROM_ROOM",T.DEVICE_CHANGE_UPDATE="DEVICE_CHANGE_UPDATE",T.PLAYLIST_TRACK_ENDED="PLAYLIST_TRACK_ENDED",T.NAME_UPDATED="NAME_UPDATED",T.METADATA_UPDATED="METADATA_UPDATED",T.POLL_CREATED="POLL_CREATED",T.POLL_STARTED="POLL_STARTED",T.POLL_STOPPED="POLL_STOPPED",T.POLL_VOTES_UPDATED="POLL_VOTES_UPDATED",T.HAND_RAISE_CHANGED="HAND_RAISE_CHANGED",T))(Me||{});var Ne=(t=>(t.audio="audio",t.video="video",t))(Ne||{});var u=require("reselect");function F(s,e){let t,i;if(e)for(let o of e.auxiliaryTracks){let r=s[o];as(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 as(s){return s&&s.source==="screen"}function Te(s){return s&&s.source==="audioplaylist"}function te(s){return s&&s.source==="videoplaylist"}function ut(s){return s?!!(s!=null&&s.degraded):!1}function $(s,e){return e&&s.tracks[e]?s.tracks[e].enabled:!1}function pt(s,e){return e&&s.tracks[e]?s.tracks[e].displayEnabled:!1}function se(s){var o;let e=!1,t=!1,i=!1;return(o=s==null?void 0:s.publishParams)!=null&&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 h=s=>s.room,Mt=s=>s.errors,ns=(0,u.createSelector)(Mt,s=>s.length===0?null:s.at(-1)),cs=(0,u.createSelector)(h,s=>s.id),P=s=>s.peers,ie=s=>s.messages.byID,Le=s=>s.messages.allIDs,H=s=>s.tracks,xe=s=>s.settings,He=s=>s.appData,Ss=s=>s.devices,Tt=s=>s.speakers,ls=s=>s.connectionQualities,U=(0,u.createSelector)([h],s=>s&&s.isConnected),ds=(0,u.createSelector)([U,h],(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)),us=s=>s.hideLocalPeer,N=(0,u.createSelector)([h,P,us],(s,e,t)=>t?s.peers.filter(i=>s.localPeer!==i).map(i=>e[i]):s.peers.map(i=>e[i])),ps=(0,u.createSelector)(H,s=>Object.values(s)),I=(0,u.createSelector)(h,P,(s,e)=>e[s.localPeer]),j=(0,u.createSelector)(h,s=>s.localPeer),Ms=(0,u.createSelector)(I,s=>s==null?void 0:s.name),Ts=(0,u.createSelector)(I,s=>s==null?void 0:s.roleName),A=(0,u.createSelector)(I,s=>s==null?void 0:s.audioTrack),v=(0,u.createSelector)(I,s=>s==null?void 0:s.videoTrack),Hs=(0,u.createSelector)(I,s=>s==null?void 0:s.auxiliaryTracks),Oe=(0,u.createSelector)([A,v,Hs],(s,e,t)=>{let i=t?[...t]:[];return s&&i.unshift(s),e&&i.unshift(e),i}),fs=(0,u.createSelector)(N,s=>s.filter(e=>!e.isLocal)),ys=(0,u.createSelector)(P,Tt,(s,e)=>{let t=Object.entries(e).sort((i,o)=>{var n,l;let r=((n=i[1])==null?void 0:n.audioLevel)||0;return(((l=o[1])==null?void 0:l.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}),ms=s=>{let e=I(s);return $(s,e==null?void 0:e.audioTrack)},fe=s=>{let e=I(s);return $(s,e==null?void 0:e.videoTrack)},_e=s=>{let e=I(s);return pt(s,e==null?void 0:e.videoTrack)},ye=(0,u.createSelector)(I,H,(s,e)=>{let{video:t,audio:i}=F(e,s);return!!(t||i)}),Ht=(0,u.createSelector)(P,H,(s,e)=>{let t;for(let i in s){let o=s[i],{video:r,audio:a}=F(e,o);if(r)return o;a&&!t&&(t=o)}return t}),gs=(0,u.createSelector)(Ht,s=>!!s),hs=(0,u.createSelector)(P,H,(s,e)=>{for(let t in s){let i=s[t],{audio:o,video:r}=F(e,i);if(!r&&o)return i}}),Ps=(0,u.createSelector)(P,H,(s,e)=>{let t=[],i=[];for(let o in s){let r=s[o],{video:a,audio:n}=F(e,r);a?t.push(r):n&&i.push(r)}return t.concat(i)}),ks=(0,u.createSelector)(P,H,(s,e)=>{for(let t in e){let i=e[t];if(te(i)&&ee(i)&&i.peerId)return s[i.peerId]}}),Rs=(0,u.createSelector)(P,H,(s,e)=>{for(let t in e){let i=e[t];if(Te(i)&&i.peerId)return s[i.peerId]}}),Ds=(0,u.createSelector)(ps,s=>s.filter(ut)),Is=(0,u.createSelector)(Le,s=>s.length),vs=(0,u.createSelector)(ie,s=>Object.values(s).filter(e=>!e.read).length),oe=(0,u.createSelector)(Le,ie,(s,e)=>{let t=[];return s.forEach(i=>{t.push(e[i])}),t}),E=(0,u.createSelector)([h],s=>s&&s.roomState),we=(0,u.createSelector)(E,s=>s==="Preview"),Es=(0,u.createSelector)(h,s=>s.roomState!=="Disconnected"),L=s=>s.roles,bs=(0,u.createSelector)([L],s=>Object.keys(s)),re=(0,u.createSelector)([I,L],(s,e)=>s!=null&&s.roleName?e[s.roleName]:null),ft=s=>{var e;return(e=s.preview)==null?void 0:e.asRole},Ue=(0,u.createSelector)([ft,L],(s,e)=>s?e[s]:null),As=(0,u.createSelector)([re],s=>{var e;return(e=s==null?void 0:s.subscribeParams)!=null&&e.subscribeToRoles?s.subscribeParams.subscribeToRoles.length>0:!1}),Ve=(0,u.createSelector)(re,s=>s==null?void 0:s.permissions),Cs=(0,u.createSelector)(h,s=>s.recording),Ns=(0,u.createSelector)(h,s=>s.rtmp),Ls=(0,u.createSelector)(h,s=>s.hls),xs=(0,u.createSelector)(h,s=>s.sessionId),Os=(0,u.createSelector)(h,s=>s.startedAt),_s=(0,u.createSelector)(h,s=>!!s.isLargeRoom),ws=s=>s.templateAppData,Us=s=>s.sessionMetadata,Ke=s=>s.polls,Vs=s=>Object.values(s.polls),Ks=(0,u.createSelector)(N,s=>s.filter(e=>e.isHandRaised));var Be=require("reselect");var yt=(s="audio")=>e=>e.playlist[s].list,qe=(s="audio")=>e=>e.playlist[s].selection,mt=(s="audio")=>e=>e.playlist[s].progress,gt=(s="audio")=>e=>e.playlist[s].currentTime,ht=(s="audio")=>e=>e.playlist[s].playbackRate,Pt=(s="audio")=>e=>e.playlist[s].volume,kt=(s="audio")=>(0,Be.createSelector)(yt(s),e=>Object.values(e)),Rt=(s="audio")=>(0,Be.createSelector)(yt(s),qe(s),(e,t)=>{if(t.id)return e[t.id]}),je={selection:qe("audio"),progress:mt("audio"),currentTime:gt("audio"),playbackRate:ht("audio"),volume:Pt("audio"),list:kt("audio"),selectedItem:Rt("audio")},Ge={selection:qe("video"),progress:mt("video"),currentTime:gt("video"),playbackRate:ht("video"),volume:Pt("video"),list:kt("video"),selectedItem:Rt("video")};var M=require("reselect");function p(s){return e=>t=>s(t,e)}var c=require("@100mslive/hms-video");var ae="HMS-Store:",d=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(ae,...t);break}case c.HMSLogLevel.DEBUG:{console.debug(ae,...t);break}case c.HMSLogLevel.INFO:{console.info(ae,...t);break}case c.HMSLogLevel.WARN:{console.warn(ae,...t);break}case c.HMSLogLevel.ERROR:{console.error(ae,...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}}}};d.level=c.HMSLogLevel.VERBOSE;var Fe=(s,e)=>e,ne=(s,e)=>e,It=(s,e)=>e,Bs=(s,e)=>e,qs=(s,e)=>e,b=(0,M.createSelector)([P,Fe],(s,e)=>e?s[e]:null),Qe=(0,M.createSelector)([H,ne],(s,e)=>e?s[e]:null),js=(0,M.createSelector)([H,ne],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="video"?t:null}),Gs=(0,M.createSelector)([H,ne],(s,e)=>{if(!e)return null;let t=s[e];return(t==null?void 0:t.type)==="audio"?t:null}),Fs=(0,M.createSelector)([H,ne],(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}),Qs=(0,M.createSelector)([H,ne],(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}),$s=(0,M.createSelector)([Ke,qs],(s,e)=>e?s[e]:null),R=p(b),Ws=p((0,M.createSelector)([He,Bs],(s,e)=>{if(s)return e?s[e]:s}));function Js(s){return e=>{if(e.sessionStore)return s?e.sessionStore[s]:e.sessionStore}}var Ys=(...s)=>(0,M.createSelector)([He],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}}),zs=p((0,M.createSelector)(b,s=>s==null?void 0:s.name)),ce=p(Qe),$e=p(js),Xs=p(Gs),Zs=p(Fs),ei=p(Qs),vt=p((s,e)=>{let t=b(s,e);if(t&&t.videoTrack&&t.videoTrack!=="")return s.tracks[t.videoTrack]}),Et=p((s,e)=>{let t=b(s,e);if(t&&t.audioTrack&&t.audioTrack!=="")return s.tracks[t.audioTrack]}),ti=vt,si=p((s,e)=>{let t=b(s,e);return(t==null?void 0:t.auxiliaryTracks.map(i=>s.tracks[i]))||[]}),bt=(s,e)=>e?s.speakers[e]:null,ii=p((0,M.createSelector)(bt,s=>(s==null?void 0:s.audioLevel)||0)),oi=(s,e)=>{let t=Et(e)(s);return bt(s,t==null?void 0:t.id)},ri=p((0,M.createSelector)(oi,s=>(s==null?void 0:s.audioLevel)||0)),ai=p((s,e)=>{if(e)return s.connectionQualities[e]}),ni=p((s,e)=>{let t=b(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}}),ci=p((0,M.createSelector)(H,b,(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})),Si=p((0,M.createSelector)(H,b,(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})),li=p((0,M.createSelector)(H,b,(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})),We=p((0,M.createSelector)(H,b,(s,e)=>F(s,e))),di=s=>(0,M.createSelector)(We(s),e=>e.video),Je=s=>(0,M.createSelector)(We(s),e=>e.audio),ui=p((s,e)=>{let t=b(s,e);return $(s,t==null?void 0:t.audioTrack)}),pi=p((s,e)=>{let t=b(s,e);return $(s,t==null?void 0:t.videoTrack)}),Ye=p((s,e)=>{if(e&&s.tracks[e])return s.tracks[e].volume===0}),Mi=p((s,e)=>{let t=b(s,e);return Ye(t==null?void 0:t.audioTrack)(s)}),Ti=p((s,e)=>{let t=Je(e)(s);return Ye(t==null?void 0:t.id)(s)}),ze=p((s,e)=>{let t=Qe(s,e);if(t){if(t.type!=="audio"){d.w("Please pass audio track here");return}return t.volume}}),Hi=p((s,e)=>{let t=b(s,e);return ze(t==null?void 0:t.audioTrack)(s)}),fi=p((s,e)=>{let t=Je(e)(s);return ze(t==null?void 0:t.id)(s)}),yi=p((s,e)=>{let t=Qe(s,e);if(t){if(t.type!=="video"){d.w("Please pass video track here");return}return t.layer}}),At=(0,M.createSelector)([oe,j,Fe],(s,e,t)=>{if(t)return s.filter(i=>{var o;return!i.recipientPeer&&!((o=i.recipientRoles)!=null&&o.length)||i.sender&&![e,t].includes(i.sender)?!1:[e,t].includes(i.recipientPeer)})}),Ct=(0,M.createSelector)([oe,It],(s,e)=>{if(e)return s.filter(t=>{var i,o;return(i=t.recipientRoles)!=null&&i.length?(o=t.recipientRoles)==null?void 0:o.includes(e):!1})}),Nt=(0,M.createSelector)(oe,s=>s.filter(e=>{var t;return!e.recipientPeer&&!((t=e.recipientRoles)!=null&&t.length)})),mi=(0,M.createSelector)([Ct,It],s=>s?s.filter(e=>!e.read).length:0),gi=(0,M.createSelector)([At,Fe],s=>s?s.filter(e=>!e.read).length:0),hi=(0,M.createSelector)(Nt,s=>s.filter(e=>!e.read).length),Pi=p(At),ki=p(Ct),Ri=p(mi),Di=p(gi),Ii=s=>(0,M.createSelector)([N],e=>e.filter(t=>t.roleName===s)),vi=s=>(0,M.createSelector)([N],e=>e.filter(t=>t.roleName?s.includes(t.roleName):!1)),Ei=s=>(0,M.createSelector)(R(s),e=>{try{return e!=null&&e.metadata&&e.metadata!==""?JSON.parse(e.metadata):{}}catch(t){return console.error("cannot parse peer metadata",t),{}}}),bi=s=>(0,M.createSelector)(R(s),e=>!!(e!=null&&e.isHandRaised)),Ai=s=>(0,M.createSelector)(R(s),e=>e==null?void 0:e.name),Xe=p($s),Ci=s=>(0,M.createSelector)(ie,e=>e[s]);var Se=require("reselect");var Ni=(0,Se.createSelector)([P,H],(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}})),Li=s=>s.roleChangeRequests[0]||null,xi=(0,Se.createSelector)([Li,P,L],(s,e,t)=>s?{requestedBy:s.requestedBy?e[s.requestedBy]:void 0,role:t[s.roleName],token:s.token}:null),Oi=(0,Se.createSelector)([re],s=>se(s)),_i=(0,Se.createSelector)([Ue],s=>se(s));var w=require("reselect");var Lt=s=>(0,w.createSelector)([L],e=>e[s]),wi=s=>(0,w.createSelector)(Lt(s),e=>se(e)),Ui=(0,w.createSelector)([v,H],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Vi=(0,w.createSelector)([A,H],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Ki=s=>(0,w.createSelector)([Ui],e=>e.includes(s)),Bi=s=>(0,w.createSelector)([Vi],e=>e.includes(s)),qi=s=>(0,w.createSelector)(N,e=>e.find(s)),ji=s=>(0,w.createSelector)(N,e=>e.filter(s)),Gi=s=>(0,w.createSelector)(h,e=>e.joinedAt&&Date.now()-e.joinedAt.getTime()<=s);var xt=(s,e)=>{let t=le(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Q(o,r)?(C(o.auxiliaryTracks,r.auxiliaryTracks)&&(r.auxiliaryTracks=o.auxiliaryTracks),o.groups&&C(o.groups,r.groups)&&(r.groups=o.groups),Object.assign(o,r)):tt(o,r)?delete s[i]:me(o,r)&&(s[i]=r)}},Ot=(s,e)=>{let t=le(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Q(o,r)?(et(o,r),Object.assign(o,r)):tt(o,r)?delete s[i]:me(o,r)&&(s[i]=r)}},_t=(s,e)=>{let t=le(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Q(o,r)?(o.questions&&C(o.questions,r.questions)&&(r.questions=o.questions),Object.assign(o,r)):me(o,r)&&(s[i]=r)}},Ze=(s,e)=>{let t=le(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Q(o,r)?Object.assign(o,r):tt(o,r)?delete s[i]:me(o,r)&&(s[i]=r)}},wt=(s,e,t)=>{let i=t.reduce((r,a)=>(r[a.firstTrackId]=Object.values(e[a.getTrackIDBeingSent()]||{}).sort((n,l)=>!n.rid||!l.rid?0:n.rid<l.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]}},et=(s,e)=>{s.plugins&&C(s.plugins,e.plugins)&&(e.plugins=s.plugins),s.type==="video"&&s.layerDefinitions&&C(s.layerDefinitions,e.layerDefinitions)&&(e.layerDefinitions=s.layerDefinitions)},Q=(s,e)=>s&&e,tt=(s,e)=>s&&!e,me=(s,e)=>!s&&e,C=(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)};var Vt=(s,e,t)=>{let i;t.getState(E)==="Connected"&&(i=Ut(s,e,t)),t.subscribe(o=>{["Connected","Reconnecting"].includes(o)?i||(i=Ut(s,e,t)):["Disconnected","Failed"].includes(o)&&i&&($i(e,o),i(),i=void 0)},E)},Ut=(s,e,t)=>{var r,a;let i=Fi(t,e);(r=s.getWebrtcInternals())==null||r.start();let o=(a=s.getWebrtcInternals())==null?void 0:a.onStatsChange(n=>Qi(e,n,t,s));return()=>{i(),o&&o()}},Fi=(s,e)=>{let t,i,o;return s.getState(j)?e.namedSetState(r=>{r.localPeer.id=s.getState(j)},"localpeer-id"):t=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.id=r},"localpeer-id")},j),s.getState(v)?e.namedSetState(r=>{r.localPeer.videoTrack=s.getState(v)},"localpeer-videotrack-id"):i=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.videoTrack=r},"localpeer-videotrack-id")},v),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()}},Qi=(s,e,t,i)=>{let o=t.getState(H);s.namedSetState(r=>{let a=t.getState(j),n={},l=Object.keys(o).filter(x=>o[x].peerId!==a);for(let x of l){let O=e.getRemoteTrackStats(x);O&&(n[x]=O)}Ze(r.remoteTrackStats,n);let m={[a]:e.getLocalPeerStats()};Ze(r.peerStats,m),wt(r.localTrackStats,e.getLocalTrackStats(),i.store.getLocalPeerTracks())},"webrtc-stats")},$i=(s,e="resetState")=>{s.namedSetState(t=>{Object.assign(t,X())},e)};var Kt=require("@100mslive/hms-video"),ge=s=>Kt.isBrowser?`${s} ${document.title}`:s;var Gt=require("immer"),Ft=lt(require("zustand/shallow")),Qt=lt(require("zustand/vanilla")),be=require("@100mslive/hms-video");var Bt=require("eventemitter2");var he={[c.HMSPeerUpdate.PEER_JOINED]:"PEER_JOINED",[c.HMSPeerUpdate.PEER_LEFT]:"PEER_LEFT",[c.HMSPeerUpdate.ROLE_UPDATED]:"ROLE_UPDATED",[c.HMSPeerUpdate.NAME_UPDATED]:"NAME_UPDATED",[c.HMSPeerUpdate.METADATA_UPDATED]:"METADATA_UPDATED",[c.HMSPeerUpdate.HAND_RAISE_CHANGED]:"HAND_RAISE_CHANGED"},de={[c.HMSTrackUpdate.TRACK_ADDED]:"TRACK_ADDED",[c.HMSTrackUpdate.TRACK_REMOVED]:"TRACK_REMOVED",[c.HMSTrackUpdate.TRACK_MUTED]:"TRACK_MUTED",[c.HMSTrackUpdate.TRACK_UNMUTED]:"TRACK_UNMUTED",[c.HMSTrackUpdate.TRACK_DEGRADED]:"TRACK_DEGRADED",[c.HMSTrackUpdate.TRACK_RESTORED]:"TRACK_RESTORED",[c.HMSTrackUpdate.TRACK_DESCRIPTION_CHANGED]:"TRACK_DESCRIPTION_CHANGED"},Pe={[c.HMSPollsUpdate.POLL_CREATED]:"POLL_CREATED",[c.HMSPollsUpdate.POLL_STARTED]:"POLL_STARTED",[c.HMSPollsUpdate.POLL_STOPPED]:"POLL_STOPPED",[c.HMSPollsUpdate.POLL_STATS_UPDATED]:"POLL_VOTES_UPDATED"};var st="hmsNotification",ke=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(st,i),()=>{this.eventEmitter.removeListener(st,i)}};this.store=e,this.eventEmitter=new Bt.EventEmitter2({maxListeners:Object.keys(Me).length})}sendPlaylistTrackEnded(e){let t=this.createNotification("PLAYLIST_TRACK_ENDED",e,"info");this.emitEvent(t)}sendDeviceChange(e){var i;let t=this.createNotification("DEVICE_CHANGE_UPDATE",e,e.error?"error":"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?"ROOM_ENDED":"REMOVED_FROM_ROOM",e,"info",`${e.roomEnded?"Room ended":"Removed from room"} ${t?`by ${t}`:""}`);this.emitEvent(i)}sendPeerList(e){if(e.length===0)return;let t=this.createNotification("PEER_LIST",e,"info");this.emitEvent(t)}sendPeerUpdate(e,t){let i=this.store.getState(R(t==null?void 0:t.id))||t,o=he[e];if(o&&i){let r=this.createNotification(o,i,"info");this.emitEvent(r)}}sendTrackUpdate(e,t){let i=this.store.getState(ce(t)),o=de[e];if(o){let r=this.createNotification(o,i,"info");this.emitEvent(r)}}sendMessageReceived(e){let t=this.createNotification("NEW_MESSAGE",e,"info");this.emitEvent(t)}sendError(e){let t=this.createNotification("ERROR",e,"error");this.emitEvent(t)}sendReconnecting(e){let t=this.createNotification("RECONNECTING",e,"error");this.emitEvent(t)}sendReconnected(){let e=this.createNotification("RECONNECTED",null,"info");this.emitEvent(e)}sendChangeTrackStateRequest(e){let t=this.createNotification("CHANGE_TRACK_STATE_REQUEST",e,"info");this.emitEvent(t)}sendChangeMultiTrackStateRequest(e){let t=this.createNotification("CHANGE_MULTI_TRACK_STATE_REQUEST",e,"info");this.emitEvent(t)}sendPollUpdate(e,t){let i=Pe[e],o=this.store.getState(Xe(t));if(i){let r=this.createNotification(i,o,"info");this.emitEvent(r)}}emitEvent(e){this.eventEmitter.emit(st,e)}createNotification(e,t,i,o=""){return this.id++,{id:this.id,type:e,message:o,data:t,severity:i}}};var V=require("@100mslive/hms-video");var Re=require("@100mslive/hms-video");function qt(s){return s instanceof Re.HMSRemoteAudioTrack||s instanceof Re.HMSRemoteVideoTrack}var D=require("@100mslive/hms-video");var f=class s{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,groups:e.groups,isHandRaised:e.isHandRaised}}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 D.HMSRemoteAudioTrack&&(e.volume=t.getVolume()||0),s.updateDeviceID(e,t),s.enrichLocalTrack(e,t),e.type==="video"&&(e.source==="screen"?(e.displaySurface=i.displaySurface,s.enrichScreenTrack(e,t)):e.source==="regular"&&(e.facingMode=i.facingMode),e.height=i.height,e.width=i.width,s.enrichVideoTrack(e,t)),s.enrichPluginsDetails(e,t)}static enrichLocalTrack(e,t){(t instanceof D.HMSLocalVideoTrack||t instanceof D.HMSLocalAudioTrack)&&(e.isPublished=t.isPublished)}static updateDeviceID(e,t){var i;t instanceof D.HMSLocalVideoTrack||t instanceof D.HMSLocalAudioTrack?e.deviceID=t.settings.deviceId:e.deviceID=(i=t.getMediaTrackSettings())==null?void 0:i.deviceId}static enrichVideoTrack(e,t){t instanceof D.HMSRemoteVideoTrack&&(e.layer=t.getLayer(),e.preferredLayer=t.getPreferredLayer(),e.degraded=t.degraded),(t instanceof D.HMSRemoteVideoTrack||t instanceof D.HMSLocalVideoTrack)&&(C(t.getSimulcastDefinitions(),e.layerDefinitions)||(e.layerDefinitions=t.getSimulcastDefinitions()))}static enrichScreenTrack(e,t){var i,o;if(t instanceof D.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 D.HMSLocalVideoTrack||t instanceof D.HMSLocalAudioTrack)&&(C(t.getPlugins(),e.plugins)||(e.plugins=t.getPlugins()))}static convertRoom(e,t){let{recording:i,rtmp:o,hls:r}=s.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:t,recording:i,rtmp:o,hls:r,sessionId:e.sessionId,startedAt:e.startedAt,joinedAt:e.joinedAt,peerCount:e.peerCount,isLargeRoom:e.large_room_optimization}}static convertMessage(e){var t,i,o,r,a,n,l;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:(l=e.recipientRoles)==null?void 0:l.map(m=>m.name),time:e.time,type:e.type,message:e.message,id:e.id}}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,"audio"),i=this.getConvertedPlaylistType(e,"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 q(k({},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),l=e.getCurrentIndex(t);return e.getList(t).forEach(m=>{i[m.id]=s.convertPlaylistItem(e,m)}),{list:i,selection:{id:o==null?void 0:o.id,hasPrevious:l>0,hasNext:l<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:k({running:!1},e==null?void 0:e.browser),server:k({running:!1},e==null?void 0:e.server),hls:k({running:!1},e==null?void 0:e.hls)},rtmp:k({running:!1},t),hls:{variants:((o=i==null?void 0:i.variants)==null?void 0:o.map(r=>r))||[],running:!!(i!=null&&i.running),error:i==null?void 0:i.error}}}};var De=class{constructor(e){this.sdk=e}get sdkInteractivityCenter(){return this.sdk.getInteractivityCenter()}createPoll(e){return this.sdkInteractivityCenter.createPoll(e)}startPoll(e){return this.sdkInteractivityCenter.startPoll(e)}stopPoll(e){return this.sdkInteractivityCenter.stopPoll(e)}addQuestionsToPoll(e,t){return this.sdkInteractivityCenter.addQuestionsToPoll(e,t)}addResponsesToPoll(e,t){return this.sdkInteractivityCenter.addResponsesToPoll(e,t)}};var ue=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){d.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==="audio"?je:Ge,t=this.store.getState(e.selection);if(!t.id){d.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 Ie=class{constructor(e,t){this.sdk=e;this.setLocally=t}get sdkSessionStore(){return this.sdk.getSessionStore()}set(e,t){return S(this,null,function*(){let{value:i}=yield this.sdkSessionStore.set(String(e),t);this.setLocally({key:e,value:i})})}observe(e){return S(this,null,function*(){let t=Array.isArray(e)?e.map(i=>String(i)):[String(e)];yield this.sdkSessionStore.observe(t)})}unobserve(e){return S(this,null,function*(){let t=Array.isArray(e)?e.map(i=>String(i)):[String(e)];yield this.sdkSessionStore.unobserve(t)})}};var ve=class{constructor(e,t){this.intervalMs=100,this.shouldMonitor=!1,this.hasStarted=!1,this.unsubs=[],this.analysers={},this.store=e,this.actions=t}start(){return S(this,null,function*(){if(this.hasStarted)return;this.hasStarted=!0,d.d("starting audio level monitor for remote peers",this.store);let e=this.store.getState(U);d.d("starting audio levels is connected to room",e),e&&(yield this.monitorAudioLevels());let t=this.store.subscribe(this.monitorAudioLevels.bind(this),U);this.unsubs.push(t)})}stop(){return S(this,null,function*(){this.hasStarted&&(this.hasStarted=!1,this.shouldMonitor=!1,this.unsubs.forEach(e=>e()),d.d("stopped audio level monitor for remote peers"))})}monitorAudioLevels(){return S(this,null,function*(){if(!this.store.getState(U)){this.shouldMonitor&&(d.i("room no longer connected, stopping audio level monitoring for remote"),this.shouldMonitor=!1);return}if(this.shouldMonitor)return;d.i("monitoring audio levels"),this.shouldMonitor=!0;let t=()=>{this.shouldMonitor?(this.logAllPeersAudioLevels(),setTimeout(t,this.intervalMs)):d.i("stopped monitoring audio levels")};setTimeout(t,1e3)})}logAllPeersAudioLevels(){return S(this,null,function*(){var o;if(!window.__triggerBeamEvent__)return;let t=this.store.getState(N).filter(r=>!!r.audioTrack),i=[];for(let r of t){let a=this.actions.hmsSDKTracks[r.audioTrack],n=(o=a==null?void 0:a.stream)==null?void 0:o.nativeStream;if(r.joinedAt&&n){let l=yield this.getAudioLevel(r,n);l.level>0&&i.push(l)}}if(i.length>0){let r={event:"app-audio-level",data:i};window.__triggerBeamEvent__(JSON.stringify(r))}})}getAudioLevel(e,t){return S(this,null,function*(){this.analysers[t.id]||(this.analysers[t.id]=this.createAnalyserNode(t));let i=this.analysers[t.id],o=this.calculateAudioLevel(i);return{peerId:e.id,peerName:e.name,level:o}})}createAnalyserNode(e){this.audioContext||(this.audioContext=new AudioContext);let t=this.audioContext.createAnalyser();return this.audioContext.createMediaStreamSource(e).connect(t),t}calculateAudioLevel(e){let t=new Uint8Array(e.fftSize);e.getByteTimeDomainData(t);let i=.009,o=i;for(let n of t)o=Math.max(o,(n-128)/128);let r=(Math.log(i)-Math.log(o))/Math.log(i);return Math.ceil(Math.min(Math.max(r*100,0),100))}};var Ee=class{constructor(e,t,i){this.hmsSDKTracks={};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(R(t.peerId)),o=he[e]||"peerUpdate";if(e===c.HMSPeerUpdate.ROLE_UPDATED)this.syncRoomState(o),this.updateMidCallPreviewRoomState(e,t);else if([c.HMSPeerUpdate.PEER_JOINED,c.HMSPeerUpdate.PEER_LEFT].includes(e))this.syncRoomState(o),i||(i=this.store.getState(R(t.peerId)));else if([c.HMSPeerUpdate.HAND_RAISE_CHANGED,c.HMSPeerUpdate.PEER_REMOVED,c.HMSPeerUpdate.PEER_ADDED].includes(e))this.syncRoomState(o),i||(i=this.store.getState(R(t.peerId)));else{let r=f.convertPeer(t);this.setState(a=>{let n=a.peers[r.id];Q(n,r)&&(C(n.auxiliaryTracks,r.auxiliaryTracks)&&(n.auxiliaryTracks=r.auxiliaryTracks),Object.assign(n,r)),i=r},o)}this.hmsNotifications.sendPeerUpdate(e,i)};this.getSDKHMSPeer=e=>this.sdk.getPeerMap()[e];this.setState=(e,t)=>this.store.namedSetState(e,t);this.store=e,this.sdk=t,this.hmsNotifications=i,this.sessionStore=new Ie(this.sdk,this.setSessionStoreValueLocally.bind(this)),this.interactivityCenter=new De(this.sdk)}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 V.HMSRemoteVideoTrack){if(t===V.HMSSimulcastLayer.NONE){d.d(`layer ${V.HMSSimulcastLayer.NONE} will be ignored`);return}if(((o=this.store.getState($e(e)))==null?void 0:o.preferredLayer)===t){d.d(`preferred layer is already ${t}`);return}this.setState(a=>{let n=a.tracks[e];n&&(n.preferredLayer=t)},"setPreferredLayer"),yield i.setPreferredLayer(t)}else d.d(`track ${e} is not a remote video track`);else this.logPossibleInconsistency(`track ${e} not present, unable to set preffer layer`)})}getAuthTokenByRoomCode(e,t){return this.sdk.getAuthTokenByRoomCode(e,t)}preview(e){return S(this,null,function*(){let t=this.store.getState(E);if(t==="Preview"||t==="Connecting"){this.logPossibleInconsistency("attempting to call preview while room is in preview/connecting");return}try{t!=="Connected"&&this.setState(i=>{i.room.roomState="Connecting"},"connecting"),yield this.sdkPreviewWithListeners(e)}catch(i){throw d.e("Cannot show preview. Failed to connect to room - ",i),i}})}cancelMidCallPreview(){return S(this,null,function*(){return this.sdk.cancelMidCallPreview()})}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="Connecting"},"join"),yield this.sdkJoinWithListeners(e)}catch(t){throw this.isRoomJoinCalled=!1,d.e("Failed to connect to room - ",t),t}})}leave(){return S(this,null,function*(){let e=this.store.getState(U),t=!0;e||(t=!1,this.logPossibleInconsistency("room leave is called when no room is connected"));let i=this.store.getState(E);return this.setState(o=>{o.room.roomState="Disconnecting"},"leaving"),this.sdk.leave(t).then(()=>{this.resetState("leave"),this.beamSpeakerLabelsLogger&&this.beamSpeakerLabelsLogger.stop().catch(d.e),d.i("left room")}).catch(o=>{d.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(f.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(v);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(f.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(v);t&&(yield this.setSDKLocalVideoTrackSettings(t,e),this.syncRoomState("setVideoSettings"))})}switchCamera(){return S(this,null,function*(){let e=this.store.getState(v);if(e){let t=this.hmsSDKTracks[e];t&&(yield t.switchCamera(),this.syncRoomState("switchCamera"))}})}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(L),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.getSDKHMSPeer(t);if(!o)throw d.w("sendMessage","Failed to send message"),Error(`sendMessage Failed - peer ${t} not found`);let r=yield this.sdk.sendDirectMessage(e,o,i);this.updateMessageInStore(r,{message:e,recipientPeer:o.peerId,type:i})})}updateMessageInStore(e,t){var o;if(!e)throw d.w("sendMessage","Failed to send message",t),Error(`sendMessage Failed - ${JSON.stringify(t)}`);let i=f.convertMessage(e);return i.read=!0,i.senderName=`${(o=this.sdk.getLocalPeer())==null?void 0:o.name} (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())}),fe)});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"?yield this.sdk.detachVideo(i,t):(t&&(t.srcObject=null),d.d("possible inconsistency detected - 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 d.w("no plugin passed in for checking support"),t.errMsg="no plugin passed in for checking support",t;let i=this.store.getState(v);if(!i)return d.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):(d.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 d.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 d.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):(d.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*(){yield this.sdk.changeRoleOfPeer(e,t,i)})}changeRoleOfPeer(e,t,i=!1){return S(this,null,function*(){yield this.sdk.changeRoleOfPeer(e,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.getSDKHMSPeer(e.requestedBy.id):void 0;t||d.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)})}raiseLocalPeerHand(){return S(this,null,function*(){yield this.sdk.raiseLocalPeerHand()})}lowerLocalPeerHand(){return S(this,null,function*(){yield this.sdk.lowerLocalPeerHand()})}raiseRemotePeerHand(e){return S(this,null,function*(){yield this.sdk.raiseRemotePeerHand(e)})}lowerRemotePeerHand(e){return S(this,null,function*(){yield this.sdk.lowerRemotePeerHand(e)})}getPeerListIterator(e){let t=this.sdk.getPeerListIterator(e);return{hasNext:()=>t.hasNext(),next:()=>S(this,null,function*(){return(yield t.next()).map(o=>f.convertPeer(o))}),findPeers:()=>S(this,null,function*(){return(yield t.findPeers()).map(o=>f.convertPeer(o))}),getTotal:()=>t.getTotal()}}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(Ve);if(!(i!=null&&i.endRoom)){d.w("You are not allowed to perform this action - endRoom");return}let o=this.store.getState(E);this.setState(r=>{r.room.roomState="Disconnecting"},"endingRoom");try{yield this.sdk.endRoom(e,t),this.resetState("endRoom")}catch(r){d.e("error in ending room - ",r),this.setState(a=>{a.room.roomState=o},"revertEndRoom")}})}removePeer(e,t){return S(this,null,function*(){var o;let i=(o=this.sdk.getLocalPeer())==null?void 0:o.peerId;e!==i&&(yield this.sdk.removePeer(e,t))})}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"),this.setSessionStoreValueLocally({key:"default",value:e},"setSessionMetadata")})}populateSessionMetadata(){return S(this,null,function*(){let e=yield this.sdk.getSessionMetadata();this.setState(t=>{t.sessionMetadata=e},"populateSessionMetadata"),this.setSessionStoreValueLocally({key:"default",value:e},"populateSessionmetadata")})}setRemoteTrackEnabled(e,t){return S(this,null,function*(){if(typeof e=="string"){let i=this.hmsSDKTracks[e];i&&qt(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(L);t.roles=e.roles.map(o=>i[o])}yield this.sdk.changeMultiTrackState(t)})}setLogLevel(e){d.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)}enableBeamSpeakerLabelsLogging(){return S(this,null,function*(){this.beamSpeakerLabelsLogger||(d.i("enabling beam speaker labels logging"),this.beamSpeakerLabelsLogger=new ve(this.store,this),yield this.beamSpeakerLabelsLogger.start())})}resetState(e="resetState"){this.isRoomJoinCalled=!1,this.hmsSDKTracks={},d.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),onPreview:this.onPreview.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),onSessionStoreUpdate:this.onSessionStoreUpdate.bind(this),onPollsUpdate:this.onPollsUpdate.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(R((o=e.requestedBy)==null?void 0:o.peerId));this.hmsNotifications.sendLeaveRoom(q(k({},e),{requestedBy:t||void 0}));let i=e.roomEnded||!t?"roomEnded":"removedFromRoom";d.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(I);if(this.setState(o=>{C(o.devices.audioInput,t.audioInput)||(o.devices.audioInput=t.audioInput),C(o.devices.videoInput,t.videoInput)||(o.devices.videoInput=t.videoInput),C(o.devices.audioOutput,t.audioOutput)||(o.devices.audioOutput=t.audioOutput);let r=this.sdk.getLocalPeer();i!=null&&i.id&&r&&Object.assign(o.settings,this.getMediaSettings(r))},"deviceChange"),e.selection){let o=f.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")}onSessionStoreUpdate(e){this.setSessionStoreValueLocally(e,"sessionStoreUpdate")}onPollsUpdate(e,t){let i=Pe[e];this.setState(o=>{let r=t.reduce((a,n)=>{var l;return a[n.id]=q(k({},n),{questions:(l=n.questions)==null?void 0:l.map(m=>{var x,O;return q(k({},m),{answer:m.answer?k({},m.answer):void 0,options:(x=m.options)==null?void 0:x.map(B=>k({},B)),responses:(O=m.responses)==null?void 0:O.map(B=>k({},B))})})}),a},{});_t(o.polls,r)},i),t.forEach(o=>this.hmsNotifications.sendPollUpdate(e,o.id))}startScreenShare(e){return S(this,null,function*(){this.store.getState(ye)?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(ye)?(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 this.sdk.attachVideo(i,t):this.logPossibleInconsistency("no video track found to add sink")})}syncRoomState(e){e=`${e}_fullSync`,d.time(`store-sync-${e}`);let t={},i=[],o={},r={},a={},n={},l,m=this.sdk.getPeers();for(let y of m){let G=f.convertPeer(y);t[G.id]=G,i.push(G.id),n[G.id]={peerID:G.id,downlinkQuality:y.networkQuality||-1};let Ae=[y.audioTrack,y.videoTrack,...y.auxiliaryTracks];for(let _ of Ae){if(!_)continue;let rt=f.convertTrack(_);o[rt.id]=rt,r[_.trackId]=_}if(y.isLocal){let _=y;l=this.getPreviewFields(_),Object.assign(a,this.getMediaSettings(_))}}let x=this.sdk.getRecordingState(),O=this.sdk.getRTMPState(),B=this.sdk.getHLSState();this.setState(y=>{var _;y.room.peers=i;let G=y.peers,Ae=y.tracks;xt(G,t),Ot(Ae,o),Object.assign(y.settings,a),Object.assign(y.connectionQualities,n),this.hmsSDKTracks=r,(_=y.preview)!=null&&_.localPeer&&(l!=null&&l.localPeer)?Object.assign(y.preview,l):y.preview=l,Object.assign(y.roles,f.convertRoles(this.sdk.getRoles())),Object.assign(y.playlist,f.convertPlaylist(this.sdk.getPlaylistManager())),Object.assign(y.room,f.convertRecordingStreamingState(x,O,B)),Object.assign(y.templateAppData,this.sdk.getTemplateAppData())},e),d.timeEnd(`store-sync-${e}`)}onPreview(e){this.setState(t=>{var i;Object.assign(t.room,f.convertRoom(e,(i=this.sdk.getLocalPeer())==null?void 0:i.peerId)),t.room.roomState="Preview"},"previewStart"),this.syncRoomState("previewSync")}onJoin(e){let t=this.sdk.getPlaylistManager();this.audioPlaylist=new ue(t,"audio",this.syncPlaylistState.bind(this),this.store),this.videoPlaylist=new ue(t,"video",this.syncRoomState.bind(this),this.store),this.syncRoomState("joinSync"),this.setState(i=>{var o;Object.assign(i.room,f.convertRoom(e,(o=this.sdk.getLocalPeer())==null?void 0:o.peerId)),i.room.isConnected=!0,i.room.roomState="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=>{var o;Object.assign(i.room,f.convertRoom(t,(o=this.sdk.getLocalPeer())==null?void 0:o.peerId))},e)}onPeerUpdate(e,t){if(![c.HMSPeerUpdate.BECAME_DOMINANT_SPEAKER,c.HMSPeerUpdate.RESIGNED_DOMINANT_SPEAKER].includes(e)){if(Array.isArray(t)){let i=this.store.getState(P),o=t.filter(a=>!i[a.peerId]);if(this.syncRoomState("peersJoined"),this.store.getState(U)){let a=[];for(let n of t){let l=this.store.getState(R(n.peerId));l&&a.push(l)}this.hmsNotifications.sendPeerList(a)}else o.forEach(a=>{let n=this.store.getState(R(a.peerId));n&&this.hmsNotifications.sendPeerUpdate(c.HMSPeerUpdate.PEER_JOINED,n)});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 if([c.HMSTrackUpdate.TRACK_ADDED,c.HMSTrackUpdate.TRACK_REMOVED].includes(e)){let o=de[e];this.syncRoomState(o),this.hmsNotifications.sendTrackUpdate(e,t.trackId)}else{let o=de[e]||"trackUpdate",r=f.convertTrack(t);this.setState(a=>{let n=a.tracks[r.id];Q(n,r)&&(et(n,r),Object.assign(n,r))},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=>{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=>{e.forEach(i=>{let o=i.peerID;o&&(t.connectionQualities[o]?Object.assign(t.connectionQualities[o],i):t.connectionQualities[o]=i)})},"connectionQuality")}onChangeTrackStateRequest(e){var r;let t=this.store.getState(R((r=e.requestedBy)==null?void 0:r.peerId)),i=this.getStoreLocalTrackIDfromSDKTrack(e.track),o=this.store.getState(ce(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(R((r=e.requestedBy)==null?void 0:r.peerId));e.enabled||this.syncRoomState("changeMultiTrackStateRequest");let i=[],o=this.store.getState(H);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?"Connected":"Preview"},"reconnected")}onReconnecting(e){let t=f.convertException(e);d.e("Reconnection: received error from sdk",t),this.hmsNotifications.sendReconnecting(t),this.setState(i=>{i.room.roomState="Reconnecting",i.errors.push(t)},"reconnecting")}onError(e){let t=f.convertException(e);t.isTerminal?(this.leave().then(()=>d.e("error from SDK, left room.")),this.setState(i=>{i.room.roomState="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),d.e("received error from sdk",t instanceof V.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(xe),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}}getPreviewFields(e){var i,o;if(!e.isInPreview())return;let t=f.convertPeer(e);return{localPeer:t.id,audioTrack:t.audioTrack,videoTrack:t.videoTrack,asRole:((i=e.asRole)==null?void 0:i.name)||((o=e.role)==null?void 0:o.name)}}setTrackVolume(e,t){return S(this,null,function*(){let i=this.hmsSDKTracks[t];i?i instanceof V.HMSAudioTrack?(yield i.setVolume(e),this.setState(o=>{let r=o.tracks[t];r&&r.type==="audio"&&(r.volume=e)},"trackVolume")):d.w(`track ${t} is not an audio track`):this.logPossibleInconsistency(`track ${t} not present, unable to set volume`)})}localAndVideoUnmuting(e){let t=this.store.getState(I);if((t==null?void 0:t.videoTrack)!==e)return!1;let i=this.store.getState(_e),o=this.store.getState(fe);return i&&!o}logPossibleInconsistency(e){d.w("possible inconsistency detected - ",e)}addRemoveVideoPlugin(e,t,i){return S(this,null,function*(){if(!e){d.w("Invalid plugin received in store");return}let o=this.store.getState(v);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){d.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(Oe).find(i=>this.hmsSDKTracks[i].trackId===e.trackId)}updateMidCallPreviewRoomState(e,t){t.isLocal&&e===c.HMSPeerUpdate.ROLE_UPDATED&&this.store.getState(we)&&this.setState(i=>{i.room.roomState="Connected"},"midCallPreviewCompleted")}setSessionStoreValueLocally(e,t="setSessionStore"){let i=Array.isArray(e)?e:[e];this.setState(o=>{i.forEach(r=>{o.sessionStore[r.key]=r.value})},t)}};var W=class s{constructor(e,t,i){this.getStats=()=>(this.stats||(this.stats=new J(this.store,this.sdk)),this.stats);e?this.store=e:this.store=s.createNewHMSStore(ge("HMSStore"),z),i?this.notifications=i:this.notifications=new ke(this.store),t?this.actions=t:(this.sdk=new be.HMSSdk,this.actions=new Ee(this.store,this.sdk,this.notifications)),this.actions.setFrameworkInfo({type:"js",sdkVersion:jt().version}),this.initialTriggerOnSubscribe=!1,be.isBrowser&&(window.__hms=this)}triggerOnSubscribe(){this.initialTriggerOnSubscribe||(s.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,Qt.default)(()=>t()),o=i.setState;i.setState=n=>{let l=typeof n=="function"?(0,Gt.produce)(n):n;o(l)};let r=i.getState;i.getState=n=>n?n(r()):r(),s.compareWithShallowCheckInSubscribe(i);let a=s.setUpDevtools(i,e);return q(k({},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||Ft.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(s.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(s.devtoolsSubscribe(o,e,r)),o.send("setUpStore",e.getState()),(a,n)=>{r(a);let l=n||`${o.prefix}action`;o.send(l,e.getState())}}static devtoolsOptions(e){return{name:e,actionsBlacklist:["audioLevel","playlistProgress","connectionQuality"]}}static devtoolsSubscribe(e,t,i){return o=>{var r,a,n,l;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 m=(n=o.payload.nextLiftedState)==null?void 0:n.actionsById;(((l=o.payload.nextLiftedState)==null?void 0:l.computedStates)||[]).forEach(({state:O},B)=>{let y=m[B]||`${e.prefix}setState`;B===0?e.init(O):(i(O),e.send(y,t.getState()))})}}}};var J=class{constructor(e,t){this.hmsStore=e;this.sdk=t;this.store=W.createNewHMSStore(ge("HMSStatsStore"),X),this.getState=this.store.getState,this.subscribe=this.store.subscribe,this.getPublishPeerConnection=()=>new Promise(i=>{var o,r;this.hmsStore.getState(E)==="Connected"?i((r=(o=this.sdk)==null?void 0:o.getWebrtcInternals())==null?void 0:r.getPublishPeerConnection()):this.hmsStore.subscribe(a=>{var n,l;a==="Connected"&&i((l=(n=this.sdk)==null?void 0:n.getWebrtcInternals())==null?void 0:l.getPublishPeerConnection())},E)}),this.getSubscribePeerConnection=()=>new Promise(i=>{var o,r;this.hmsStore.getState(E)==="Connected"?i((r=(o=this.sdk)==null?void 0:o.getWebrtcInternals())==null?void 0:r.getSubscribePeerConnection()):this.hmsStore.subscribe(a=>{var n,l;a==="Connected"&&i((l=(n=this.sdk)==null?void 0:n.getWebrtcInternals())==null?void 0:l.getSubscribePeerConnection())},E)}),this.sdk&&Vt(this.sdk,this.store,this.hmsStore)}};var g=require("reselect");var Ji=s=>s.localPeer.id,Yi=s=>s.localPeer.audioTrack,zi=s=>s.localPeer.videoTrack,Xi=(s,e)=>e,$t=(s,e)=>e,Zi=s=>s.remoteTrackStats,Wt=s=>s.peerStats,it=s=>s.localTrackStats,K=(0,g.createSelector)([Wt,Ji],(s,e)=>s[e]),eo=(0,g.createSelector)(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.packetsLost}),to=(0,g.createSelector)(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.jitter}),so=(0,g.createSelector)(K,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bitrate}),io=(0,g.createSelector)(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bitrate}),oo=(0,g.createSelector)(K,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.availableOutgoingBitrate}),ro=(0,g.createSelector)(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.availableIncomingBitrate}),ao=(0,g.createSelector)(K,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bytesSent}),no=(0,g.createSelector)(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bytesReceived}),co=(0,g.createSelector)([Wt,Xi],(s,e)=>e?s[e]:void 0),So=(0,g.createSelector)([Zi,$t],(s,e)=>e?s[e]:void 0),ot=(0,g.createSelector)([it,$t],(s,e)=>e?s[e]:void 0),lo=p(co),uo=p(So),po=(0,g.createSelector)([it,Yi],(s,e)=>{var t;return e?(t=s[e])==null?void 0:t[0]:void 0}),Mo=p((0,g.createSelector)(ot,s=>s==null?void 0:s[0])),To=(0,g.createSelector)([it,zi],(s,e)=>{var t;return e?(t=s[e])==null?void 0:t[0]:void 0}),Ho=p((0,g.createSelector)(ot,s=>s)),fo=s=>p((0,g.createSelector)(ot,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])})),Jt={localPeerStats:K,packetsLost:eo,jitter:to,publishBitrate:so,subscribeBitrate:io,availablePublishBitrate:oo,availableSubscribeBitrate:ro,totalBytesSent:ao,totalBytesReceived:no,peerStatsByID:lo,trackStatsByID:uo,localAudioTrackStatsByID:Mo,localVideoTrackStatsByID:Ho,localVideoTrackStatsByLayer:fo,localAudioTrackStats:po,localVideoTrackStats:To};
2
2
  //# sourceMappingURL=index.cjs.js.map