@100mslive/hms-video-store 0.6.1-alpha.0 → 0.6.1-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/IHMSActions.d.ts +18 -0
- package/dist/core/hmsSDKStore/HMSSDKActions.d.ts +4 -0
- package/dist/core/hmsSDKStore/adapter.d.ts +2 -2
- package/dist/core/schema/notification.d.ts +2 -2
- package/dist/core/schema/peer.d.ts +21 -5
- package/dist/core/schema/schema.d.ts +1 -0
- package/dist/core/selectors/selectorUtils.d.ts +4 -4
- package/dist/core/selectors/selectors.d.ts +4 -2
- package/dist/core/selectors/selectorsByID.d.ts +34 -18
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +2 -2
- package/dist/test/fakeStore/fakeHMSStore.d.ts +5 -5
- package/dist/test/fixtures.d.ts +4 -2
- package/package.json +3 -3
- package/src/core/IHMSActions.ts +18 -0
- package/src/core/hmsSDKStore/HMSNotifications.ts +1 -1
- package/src/core/hmsSDKStore/HMSSDKActions.ts +23 -4
- package/src/core/hmsSDKStore/adapter.ts +17 -13
- package/src/core/hmsSDKStore/sdkUtils/storeMergeUtils.ts +7 -3
- package/src/core/schema/notification.ts +2 -1
- package/src/core/schema/peer.ts +25 -5
- package/src/core/schema/schema.ts +1 -0
- package/src/core/selectors/selectorUtils.ts +6 -3
- package/src/core/selectors/selectors.ts +6 -2
- package/src/core/selectors/selectorsByID.ts +78 -6
- package/src/test/fakeStore/fakeHMSStore.ts +16 -9
- package/src/test/fixtures.ts +4 -4
- package/src/test/unit/storeMergeUtils.test.ts +3 -3
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var Ht=Object.defineProperty,gt=Object.defineProperties;var ht=Object.getOwnPropertyDescriptors;var Ae=Object.getOwnPropertySymbols;var yt=Object.prototype.hasOwnProperty,ft=Object.prototype.propertyIsEnumerable;var Ne=(s,e,t)=>e in s?Ht(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,_=(s,e)=>{for(var t in e||(e={}))yt.call(e,t)&&Ne(s,t,e[t]);if(Ae)for(var t of Ae(e))ft.call(e,t)&&Ne(s,t,e[t]);return s},F=(s,e)=>gt(s,ht(e));var c=(s,e,t)=>new Promise((i,o)=>{var r=d=>{try{a(t.next(d))}catch(R){o(R)}},n=d=>{try{a(t.throw(d))}catch(R){o(R)}},a=d=>d.done?i(d.value):Promise.resolve(d.value).then(r,n);a((t=t.apply(s,e)).next())});import bs from"immer";import Cs from"zustand/vanilla";import As from"zustand/shallow";import{HMSSdk as Ns,isBrowser as xs}from"@100mslive/hms-video";var H;(function(a){a.Disconnected="Disconnected",a.Preview="Preview",a.Connecting="Connecting",a.Connected="Connected",a.Reconnecting="Reconnecting",a.Disconnecting="Disconnecting",a.Failed="Failed"})(H||(H={}));var ie=()=>({room:{id:"",isConnected:!1,name:"",peers:[],shareableLink:"",localPeer:"",hasWaitingRoom:!1,roomState:H.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:[]}),oe=()=>({peerStats:{},trackStats:{},localPeer:{id:""}});var xe;(function(e){e.CHAT="chat"})(xe||(xe={}));var P;(function(t){t.INFO="info",t.ERROR="error"})(P||(P={}));var T;(function(S){S.PEER_JOINED="PEER_JOINED",S.PEER_LEFT="PEER_LEFT",S.PEER_LIST="PEER_LIST",S.NEW_MESSAGE="NEW_MESSAGE",S.ERROR="ERROR",S.RECONNECTING="RECONNECTING",S.RECONNECTED="RECONNECTED",S.TRACK_ADDED="TRACK_ADDED",S.TRACK_REMOVED="TRACK_REMOVED",S.TRACK_MUTED="TRACK_MUTED",S.TRACK_UNMUTED="TRACK_UNMUTED",S.TRACK_DEGRADED="TRACK_DEGRADED",S.TRACK_RESTORED="TRACK_RESTORED",S.TRACK_DESCRIPTION_CHANGED="TRACK_DESCRIPTION_CHANGED",S.ROLE_UPDATED="ROLE_UPDATED",S.CHANGE_TRACK_STATE_REQUEST="CHANGE_TRACK_STATE_REQUEST",S.CHANGE_MULTI_TRACK_STATE_REQUEST="CHANGE_MULTI_TRACK_STATE_REQUEST",S.ROOM_ENDED="ROOM_ENDED",S.REMOVED_FROM_ROOM="REMOVED_FROM_ROOM",S.DEVICE_CHANGE_UPDATE="DEVICE_CHANGE_UPDATE",S.PLAYLIST_TRACK_ENDED="PLAYLIST_TRACK_ENDED",S.NAME_UPDATED="NAME_UPDATED",S.METADATA_UPDATED="METADATA_UPDATED"})(T||(T={}));var p;(function(t){t.audio="audio",t.video="video"})(p||(p={}));import{HMSException as js,HMSSimulcastLayer as $s,HMSPeerUpdate as U,HMSRoomUpdate as Fs,HMSTrackUpdate as C,HMSLogLevel as k,HMSAudioPluginType as kt,HMSVideoPluginType as Rt,HMSVideoPluginCanvasContextType as Pt,parsedUserAgent as Dt}from"@100mslive/hms-video";import{HMSLocalAudioTrack as _e,HMSLocalVideoTrack as we,HMSRemoteAudioTrack as vt,HMSRemoteVideoTrack as Et}from"@100mslive/hms-video";var Le=(s,e)=>{let t=He(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];pe(o,r)?(w(o.auxiliaryTracks,r.auxiliaryTracks)&&(r.auxiliaryTracks=o.auxiliaryTracks),Object.assign(o,r)):Te(o,r)?delete s[i]:me(o,r)&&(s[i]=r)}},Oe=(s,e)=>{let t=He(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];pe(o,r)?(It(o,r),Object.assign(o,r)):Te(o,r)?delete s[i]:me(o,r)&&(s[i]=r)}},Me=(s,e)=>{let t=He(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];pe(o,r)?Object.assign(o,r):Te(o,r)?delete s[i]:me(o,r)&&(s[i]=r)}},It=(s,e)=>{s.plugins&&w(s.plugins,e.plugins)&&(e.plugins=s.plugins),s.layerDefinitions&&w(s.layerDefinitions,e.layerDefinitions)&&(e.layerDefinitions=s.layerDefinitions)},pe=(s,e)=>s&&e,Te=(s,e)=>s&&!e,me=(s,e)=>!s&&e,w=(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},He=(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 m=class{static convertPeer(e){var t,i,o;return{id:e.peerId,name:e.name,roleName:(t=e.role)==null?void 0:t.name,isLocal:e.isLocal,videoTrack:(i=e.videoTrack)==null?void 0:i.trackId,audioTrack:(o=e.audioTrack)==null?void 0:o.trackId,auxiliaryTracks:e.auxiliaryTracks.map(r=>r.trackId),customerUserId:e.customerUserId,customerDescription:e.metadata,metadata:e.metadata,joinedAt:e.joinedAt}}static convertTrack(e,t){let i={id:e.trackId,source:e.source,type:e.type,enabled:e.enabled,displayEnabled:e.enabled,peerId:e.peerId||t};return this.enrichTrack(i,e),i}static enrichTrack(e,t){let i=t.getMediaTrackSettings();e.source==="screen"&&e.type==="video"&&(e.displaySurface=i.displaySurface),e.type==="video"&&(e.facingMode=i.facingMode),e.height=i.height,e.width=i.width,t instanceof vt&&(e.volume=t.getVolume()||0),m.updateDeviceID(e,t),m.enrichVideoTrack(e,t),m.enrichPluginsDetails(e,t)}static updateDeviceID(e,t){var i;t instanceof we||t instanceof _e?e.deviceID=t.settings.deviceId:e.deviceID=(i=t.getMediaTrackSettings())==null?void 0:i.deviceId}static enrichVideoTrack(e,t){t instanceof Et&&(e.layer=t.getSimulcastLayer(),e.degraded=t.degraded,w(t.getSimulcastDefinitions(),e.layerDefinitions)||(e.layerDefinitions=t.getSimulcastDefinitions()))}static enrichPluginsDetails(e,t){(t instanceof we||t instanceof _e)&&(w(t.getPlugins(),e.plugins)||(e.plugins=t.getPlugins()))}static convertRoom(e){var r,n;let{recording:t,rtmp:i,hls:o}=m.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:(n=(r=e.localPeer)==null?void 0:r.peerId)!=null?n:"",hasWaitingRoom:e.hasWaitingRoom,shareableLink:e.shareableLink,recording:t,rtmp:i,hls:o,sessionId:e.sessionId,startedAt:e.startedAt,joinedAt:e.joinedAt,peerCount:e.peerCount}}static convertMessage(e){var t,i,o,r,n,a,d;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:(n=e.sender)==null?void 0:n.customerUserId,recipientPeer:(a=e.recipientPeer)==null?void 0:a.peerId,recipientRoles:(d=e.recipientRoles)==null?void 0:d.map(R=>R.name),time:e.time,type:e.type,message:e.message}}static convertRoles(e){let t={};return e&&e.forEach(i=>{t[i.name]=i}),t}static convertRoleChangeRequest(e){var t;return{requestedBy:(t=e.requestedBy)==null?void 0:t.peerId,roleName:e.role.name,token:e.token}}static convertException(e){return{code:e.code,action:e.action,name:e.name,message:e.message,description:e.description,isTerminal:e.isTerminal,nativeError:e.nativeError,timestamp:new Date}}static convertDeviceChangeUpdate(e){let t={devices:e.devices,selection:e.selection,type:e.type};return e.error&&(t.error=this.convertException(e.error)),t}static convertPlaylist(e){let t=this.getConvertedPlaylistType(e,p.audio),i=this.getConvertedPlaylistType(e,p.video);return{audio:t,video:i}}static convertPlaylistItem(e,t){let i=t.type,o=e.getCurrentSelection(i),r=e.isPlaying(i),n=t.url===(o==null?void 0:o.url);return F(_({},t),{type:t.type,selected:n,playing:n&&r})}static getConvertedPlaylistType(e,t){let i={},o=e.getCurrentSelection(t),r=e.getCurrentProgress(t),n=e.getVolume(t),a=e.getList(t),d=e.getCurrentIndex(t);return e.getList(t).forEach(R=>{i[R.id]=m.convertPlaylistItem(e,R)}),{list:i,selection:{id:o==null?void 0:o.id,hasPrevious:d>0,hasNext:d<a.length-1},progress:r,volume:n,currentTime:e.getCurrentTime(t),playbackRate:e.getPlaybackRate(t)}}static convertRecordingStreamingState(e,t,i){var o;return{recording:{browser:_({running:!1},e==null?void 0:e.browser),server:_({running:!1},e==null?void 0:e.server),hls:_({running:!1},e==null?void 0:e.hls)},rtmp:_({running:!1},t),hls:{variants:((o=i==null?void 0:i.variants)==null?void 0:o.map(r=>r))||[],running:!!(i==null?void 0:i.running),error:i==null?void 0:i.error}}}};import{createSelector as l}from"reselect";function j(s,e,t=bt){let i,o;if(e)for(let r of e.auxiliaryTracks){let n=s[r];t(n)&&(o=Y(n)?n:o,i=X(n)?n:i)}return{video:i,audio:o}}function Y(s){return s&&s.type==="audio"}function X(s){return s&&s.type==="video"}function bt(s){return s&&s.source==="screen"}function re(s){return s&&s.source==="audioplaylist"}function z(s){return s&&s.source==="videoplaylist"}function Ue(s){return Boolean(s==null?void 0:s.degraded)}function G(s,e){return e&&s.tracks[e]?s.tracks[e].enabled:!1}function Ke(s,e){return e&&s.tracks[e]?s.tracks[e].displayEnabled:!1}var D=s=>s.room,eo=l(D,s=>s.id),v=s=>s.peers,Ve=s=>s.messages.byID,Be=s=>s.messages.allIDs,h=s=>s.tracks,qe=s=>s.settings,ge=s=>s.appData,to=s=>s.devices,Ct=s=>s.speakers,so=s=>s.connectionQualities,At=l([D],s=>s&&s.isConnected),io=l([At,D],(s,e)=>s?e.peerCount!==void 0?e.peerCount||1:e.peers.length:Math.max(e.peerCount!==void 0?e.peerCount:e.peers.length-1,0)),W=l([D,v],(s,e)=>s.peers.map(t=>e[t])),Nt=l(h,s=>Object.values(s)),E=l(D,v,(s,e)=>e[s.localPeer]),$=l(D,s=>s.localPeer),oo=l(E,s=>s==null?void 0:s.name),ro=l(E,s=>s==null?void 0:s.roleName),A=l(E,s=>s==null?void 0:s.audioTrack),N=l(E,s=>s==null?void 0:s.videoTrack),xt=l(E,s=>s==null?void 0:s.auxiliaryTracks),je=l([A,N,xt],(s,e,t)=>{let i=[...t];return s&&i.unshift(s),e&&i.unshift(e),i}),no=l(W,s=>s.filter(e=>!e.isLocal)),ao=l(v,Ct,(s,e)=>{let t=Object.entries(e).sort((i,o)=>{var a,d;let r=((a=i[1])==null?void 0:a.audioLevel)||0;return(((d=o[1])==null?void 0:d.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}),co=s=>{let e=E(s);return G(s,e==null?void 0:e.audioTrack)},he=s=>{let e=E(s);return G(s,e==null?void 0:e.videoTrack)},$e=s=>{let e=E(s);return Ke(s,e==null?void 0:e.videoTrack)},ye=l(E,h,(s,e)=>{let{video:t,audio:i}=j(e,s);return!!(t||i)}),Lt=l(v,h,(s,e)=>{let t;for(let i in s){let o=s[i],{video:r,audio:n}=j(e,o);if(r)return o;n&&!t&&(t=o)}return t}),So=l(Lt,s=>!!s),lo=l(v,h,(s,e)=>{for(let t in s){let i=s[t],{audio:o,video:r}=j(e,i);if(!r&&!!o)return i}}),uo=l(v,h,(s,e)=>{let t=[],i=[];for(let o in s){let r=s[o],{video:n,audio:a}=j(e,r);n?t.push(r):a&&i.push(r)}return t.concat(i)}),Mo=l(v,h,(s,e)=>{for(let t in e){let i=e[t];if(z(i)&&X(i)&&i.peerId)return s[i.peerId]}}),po=l(v,h,(s,e)=>{for(let t in e){let i=e[t];if(re(i)&&i.peerId)return s[i.peerId]}}),To=l(Nt,s=>s.filter(Ue)),Fe=l(Be,s=>s.length),mo=l(Ve,s=>Object.values(s).filter(e=>!e.read).length),ne=l(Be,Ve,(s,e)=>{let t=[];return s.forEach(i=>{t.push(e[i])}),t}),b=l([D],s=>s&&s.roomState),Ho=l(b,s=>s===H.Preview),Ge=l(D,s=>s.roomState!==H.Disconnected),K=s=>s.roles,go=l([K],s=>Object.keys(s)),ae=l([E,K],(s,e)=>(s==null?void 0:s.roleName)?e[s.roleName]:null),ho=l([ae],s=>{var e;return((e=s==null?void 0:s.subscribeParams)==null?void 0:e.subscribeToRoles)?s.subscribeParams.subscribeToRoles.length>0:!1}),We=l(ae,s=>s==null?void 0:s.permissions),yo=l(D,s=>s.recording),fo=l(D,s=>s.rtmp),ko=l(D,s=>s.hls),Ro=l(D,s=>s.sessionId),Po=l(D,s=>s.startedAt);import{createSelector as Qe}from"reselect";var Je=(s=p.audio)=>e=>e.playlist[s].list,fe=(s=p.audio)=>e=>e.playlist[s].selection,Ye=(s=p.audio)=>e=>e.playlist[s].progress,Xe=(s=p.audio)=>e=>e.playlist[s].currentTime,ze=(s=p.audio)=>e=>e.playlist[s].playbackRate,Ze=(s=p.audio)=>e=>e.playlist[s].volume,et=(s=p.audio)=>Qe(Je(s),e=>Object.values(e)),tt=(s=p.audio)=>Qe(Je(s),fe(s),(e,t)=>{if(!!t.id)return e[t.id]}),st={selection:fe(p.audio),progress:Ye(p.audio),currentTime:Xe(p.audio),playbackRate:ze(p.audio),volume:Ze(p.audio),list:et(p.audio),selectedItem:tt(p.audio)},it={selection:fe(p.video),progress:Ye(p.video),currentTime:Xe(p.video),playbackRate:ze(p.video),volume:Ze(p.video),list:et(p.video),selectedItem:tt(p.video)};import{createSelector as y}from"reselect";function u(s){return e=>t=>s(t,e)}var Z="HMS-Store:",M=class{static v(e,...t){this.log(k.VERBOSE,e,...t)}static d(...e){this.log(k.DEBUG,...e)}static i(...e){this.log(k.INFO,...e)}static w(...e){this.log(k.WARN,...e)}static e(...e){this.log(k.ERROR,...e)}static time(e){this.log(k.TIME,"[HMSPerformanceTiming]",e)}static timeEnd(e){this.log(k.TIMEEND,"[HMSPerformanceTiming]",e,e)}static cleanUp(){performance.clearMarks(),performance.clearMeasures()}static log(e,...t){if(!(this.level.valueOf()>e.valueOf()))switch(e){case k.VERBOSE:{console.log(Z,...t);break}case k.DEBUG:{console.debug(Z,...t);break}case k.INFO:{console.info(Z,...t);break}case k.WARN:{console.warn(Z,...t);break}case k.ERROR:{console.error(Z,...t);break}case k.TIME:{performance.mark(t[1]);break}case k.TIMEEND:{let i=t[0],o=t[1];try{let r=performance.measure(o,o);this.log(k.DEBUG,i,o,r==null?void 0:r.duration),performance.clearMarks(o),performance.clearMeasures(o)}catch(r){this.log(k.DEBUG,i,o,r)}break}}}};M.level=k.VERBOSE;var ke=(s,e)=>e,Ot=(s,e)=>e,ot=(s,e)=>e,_t=(s,e)=>e,I=y([v,ke],(s,e)=>e?s[e]:null),Re=y([h,Ot],(s,e)=>e?s[e]:null),x=u(I),Ko=u(y([ge,_t],(s,e)=>{if(!!s)return e?s[e]:s})),Vo=(...s)=>y([ge],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}}),Bo=u(y(I,s=>s==null?void 0:s.name)),ee=u(Re),wt=u((s,e)=>{let t=I(s,e);if(t&&t.videoTrack&&t.videoTrack!=="")return s.tracks[t.videoTrack]}),Ut=u((s,e)=>{let t=I(s,e);if(t&&t.audioTrack&&t.audioTrack!=="")return s.tracks[t.audioTrack]}),qo=wt,jo=u((s,e)=>{let t=I(s,e);return(t==null?void 0:t.auxiliaryTracks.map(i=>s.tracks[i]))||[]}),rt=(s,e)=>e?s.speakers[e]:null,$o=u(y(rt,s=>(s==null?void 0:s.audioLevel)||0)),Kt=(s,e)=>{let t=Ut(e)(s);return rt(s,t==null?void 0:t.id)},Fo=u(y(Kt,s=>(s==null?void 0:s.audioLevel)||0)),Go=u((s,e)=>{if(e)return s.connectionQualities[e]}),Wo=u((s,e)=>{let t=I(s,e);if(t){let i=t==null?void 0:t.auxiliaryTracks.find(o=>Y(s.tracks[o]));return i?s.tracks[i]:void 0}}),Qo=u(y(h,I,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return z(o)&&X(o)});return t?s[t]:void 0})),Jo=u(y(h,I,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return z(o)&&Y(o)});return t?s[t]:void 0})),Yo=u(y(h,I,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return re(o)&&Y(o)});return t?s[t]:void 0})),nt=u(y(h,I,(s,e)=>j(s,e))),Xo=s=>y(nt(s),e=>e.video),at=s=>y(nt(s),e=>e.audio),zo=u((s,e)=>{let t=I(s,e);return G(s,t==null?void 0:t.audioTrack)}),Zo=u((s,e)=>{let t=I(s,e);return G(s,t==null?void 0:t.videoTrack)}),ct=u((s,e)=>{if(e&&s.tracks[e])return s.tracks[e].volume===0}),er=u((s,e)=>{let t=I(s,e);return ct(t==null?void 0:t.audioTrack)(s)}),tr=u((s,e)=>{let t=at(e)(s);return ct(t==null?void 0:t.id)(s)}),St=u((s,e)=>{let t=Re(s,e);if(t){if(t.type!=="audio"){M.w("Please pass audio track here");return}return t.volume}}),sr=u((s,e)=>{let t=I(s,e);return St(t==null?void 0:t.audioTrack)(s)}),ir=u((s,e)=>{let t=at(e)(s);return St(t==null?void 0:t.id)(s)}),or=u((s,e)=>{let t=Re(s,e);if(t){if(t.type!=="video"){M.w("Please pass video track here");return}return t.layer}}),lt=y([ne,$,ke],(s,e,t)=>{if(!!t)return s.filter(i=>{var o;return!i.recipientPeer&&!((o=i.recipientRoles)==null?void 0:o.length)||i.sender&&![e,t].includes(i.sender)?!1:[e,t].includes(i.recipientPeer)})}),dt=y([ne,ot],(s,e)=>{if(!!e)return s.filter(t=>{var i,o;return((i=t.recipientRoles)==null?void 0:i.length)?(o=t.recipientRoles)==null?void 0:o.includes(e):!1})}),Vt=y(ne,s=>s.filter(e=>{var t;return!e.recipientPeer&&!((t=e.recipientRoles)==null?void 0:t.length)})),Bt=y([dt,ot],s=>s?s.filter(e=>!e.read).length:0),qt=y([lt,ke],s=>s?s.filter(e=>!e.read).length:0),rr=y(Vt,s=>s.filter(e=>!e.read).length),nr=u(lt),ar=u(dt),cr=u(Bt),Sr=u(qt),lr=s=>y([W],e=>e.filter(t=>t.roleName===s)),dr=s=>y(x(s),e=>{try{return(e==null?void 0:e.metadata)&&e.metadata!==""?JSON.parse(e.metadata):{}}catch(t){return console.error("cannot parse peer metadata",t),{}}}),ur=s=>y(x(s),e=>e==null?void 0:e.name);import{createSelector as Pe}from"reselect";var mr=Pe([v,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}})),jt=s=>s.roleChangeRequests[0]||null,Hr=Pe([jt,v,K],(s,e,t)=>s?{requestedBy:s.requestedBy?e[s.requestedBy]:void 0,role:t[s.roleName],token:s.token}:null),gr=Pe([ae],s=>{var o;let e=!1,t=!1,i=!1;return((o=s==null?void 0:s.publishParams)==null?void 0:o.allowed)&&(e=s.publishParams.allowed.includes("video"),t=s.publishParams.allowed.includes("audio"),i=s.publishParams.allowed.includes("screen")),{video:e,audio:t,screen:i}});import{createSelector as B}from"reselect";var kr=s=>B([K],e=>e[s]),$t=B([N,h],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Ft=B([A,h],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Rr=s=>B([$t],e=>e.includes(s)),Pr=s=>B([Ft],e=>e.includes(s)),Dr=s=>B(W,e=>e.find(s)),Ir=s=>B(W,e=>e.filter(s)),vr=s=>B(D,e=>e.joinedAt&&Date.now()-e.joinedAt.getTime()<=s);import{HMSAudioTrack as Qt,HMSException as Jt,HMSRemoteVideoTrack as Mt}from"@100mslive/hms-video";import{HMSRemoteAudioTrack as Gt,HMSRemoteVideoTrack as Wt}from"@100mslive/hms-video";function ut(s){return s instanceof Gt||s instanceof Wt}var ce=class{constructor(e,t,i,o){this.playlistManager=e;this.syncPlaylistState=i;this.store=o;this.type=t}play(e){return c(this,null,function*(){if(!e){M.w("Please pass id to play");return}yield this.playlistManager.setEnabled(!0,{id:e,type:this.type})})}pause(){return c(this,null,function*(){let e=this.type===p.audio?st:it,t=this.store.getState(e.selection);if(!t.id){M.w("No item is currently playing to pause");return}yield this.playlistManager.setEnabled(!1,{id:t.id,type:this.type})})}playNext(){return c(this,null,function*(){yield this.playlistManager.playNext(this.type)})}playPrevious(){return c(this,null,function*(){yield this.playlistManager.playPrevious(this.type)})}seek(e){this.playlistManager.seek(e,this.type),this.syncPlaylistState(`seekOn${this.type}Playlist`)}seekTo(e){this.playlistManager.seekTo(e,this.type),this.syncPlaylistState(`seekToOn${this.type}Playlist`)}setVolume(e){this.playlistManager.setVolume(e,this.type),this.syncPlaylistState(`setVolumeOn${this.type}Playlist`)}setList(e){this.playlistManager.setList(e),this.syncPlaylistState(`setListOn${this.type}Playlist`)}stop(){return c(this,null,function*(){yield this.playlistManager.stop(this.type),this.syncPlaylistState(`stop${this.type}Playlist`)})}setIsAutoplayOn(e){this.playlistManager.setIsAutoplayOn(this.type,e)}setPlaybackRate(e){this.playlistManager.setPlaybackRate(this.type,e),this.syncPlaylistState(`set${this.type}PlaybackRate`)}removeItem(e){return c(this,null,function*(){let t=yield this.playlistManager.removeItem(e,this.type);return t&&this.syncPlaylistState(`remove${this.type}PlaylistItem`),t})}clearList(){return c(this,null,function*(){yield this.playlistManager.clearList(this.type),this.syncPlaylistState(`clear${this.type}Playlist`)})}};var Se={[U.PEER_JOINED]:T.PEER_JOINED,[U.PEER_LEFT]:T.PEER_LEFT,[U.ROLE_UPDATED]:T.ROLE_UPDATED,[U.NAME_UPDATED]:T.NAME_UPDATED,[U.METADATA_UPDATED]:T.METADATA_UPDATED},le={[C.TRACK_ADDED]:T.TRACK_ADDED,[C.TRACK_REMOVED]:T.TRACK_REMOVED,[C.TRACK_MUTED]:T.TRACK_MUTED,[C.TRACK_UNMUTED]:T.TRACK_UNMUTED,[C.TRACK_DEGRADED]:T.TRACK_DEGRADED,[C.TRACK_RESTORED]:T.TRACK_RESTORED,[C.TRACK_DESCRIPTION_CHANGED]:T.TRACK_DESCRIPTION_CHANGED};var De=class{constructor(e,t,i){this.hmsSDKTracks={};this.hmsSDKPeers={};this.isRoomJoinCalled=!1;this.ignoredMessageTypes=[];this.setProgress=({type:e,progress:t})=>{this.setState(i=>{i.playlist[e].progress=t,i.playlist[e].currentTime=this.sdk.getPlaylistManager().getCurrentTime(e)},"playlistProgress")};this.syncPlaylistState=e=>{this.setState(t=>{Object.assign(t.playlist,m.convertPlaylist(this.sdk.getPlaylistManager()))},e)};this.sendPeerUpdateNotification=(e,t)=>{let i=this.store.getState(x(t.peerId)),o=Se[e]||"peerUpdate";this.syncRoomState(o),i||(i=this.store.getState(x(t.peerId))),this.hmsNotifications.sendPeerUpdate(e,i)};this.setState=(e,t)=>this.store.namedSetState(e,t);this.store=e,this.sdk=t,this.hmsNotifications=i}refreshDevices(){return c(this,null,function*(){yield this.sdk.refreshDevices()})}unblockAudio(){return c(this,null,function*(){yield this.sdk.getAudioOutput().unblockAutoplay()})}setVolume(e,t){t?this.setTrackVolume(e,t):(this.sdk.getAudioOutput().setVolume(e),this.syncRoomState("setOutputVolume"))}setAudioOutputDevice(e){this.sdk.getAudioOutput().setDevice(e)&&this.setState(i=>{i.settings.audioOutputDeviceId=e},"setAudioOutputDevice")}setPreferredLayer(e,t){let i=this.hmsSDKTracks[e];i?i instanceof Mt?(i.preferLayer(t),this.updateVideoLayer(e,"setPreferredLayer")):M.w(`track ${e} is not an video track`):this.logPossibleInconsistency(`track ${e} not present, unable to set preffer layer`)}preview(e){return c(this,null,function*(){if(this.isRoomJoinCalled){this.logPossibleInconsistency("attempting to call preview after join was called");return}let t=this.store.getState(b);if(t===H.Preview||t===H.Connecting){this.logPossibleInconsistency("attempting to call preview while room is in preview/connecting");return}try{this.setState(i=>{i.room.roomState=H.Connecting},"connecting"),yield this.sdkPreviewWithListeners(e)}catch(i){throw M.e("Cannot show preview. Failed to connect to room - ",i),i}})}join(e){return c(this,null,function*(){if(this.isRoomJoinCalled){this.logPossibleInconsistency("room join is called again");return}try{this.isRoomJoinCalled=!0,this.setState(t=>{t.room.roomState=H.Connecting},"join"),yield this.sdkJoinWithListeners(e)}catch(t){throw this.isRoomJoinCalled=!1,M.e("Failed to connect to room - ",t),t}})}leave(){return c(this,null,function*(){if(!this.store.getState(Ge)){this.logPossibleInconsistency("room leave is called when no room is connected");return}let t=this.store.getState(b);return this.setState(i=>{i.room.roomState=H.Disconnecting},"leaving"),this.sdk.leave().then(()=>{this.resetState("leave"),M.i("left room")}).catch(i=>{M.e("error in leaving room - ",i),this.setState(o=>{o.room.roomState=t},"revertLeave")})})}setScreenShareEnabled(e,t){return c(this,null,function*(){let i={audioOnly:!1,videoOnly:!1};typeof t=="object"?Object.assign(i,t):typeof t=="boolean"&&(i.audioOnly=t);try{e?yield this.startScreenShare(i):yield this.stopScreenShare()}catch(o){throw this.hmsNotifications.sendError(m.convertException(o)),o}})}addTrack(e,t="regular"){return c(this,null,function*(){yield this.sdk.addTrack(e,t),this.syncRoomState("addTrack")})}removeTrack(e){return c(this,null,function*(){yield this.sdk.removeTrack(e),this.syncRoomState("removeTrack")})}setLocalAudioEnabled(e){return c(this,null,function*(){let t=this.store.getState(A);t&&(yield this.setEnabledTrack(t,e))})}setLocalVideoEnabled(e){return c(this,null,function*(){let t=this.store.getState(N);t&&(yield this.setEnabledTrack(t,e))})}setEnabledTrack(e,t){return c(this,null,function*(){var r;if(((r=this.store.getState().tracks[e])==null?void 0:r.enabled)===t){this.logPossibleInconsistency(`local track[${e}] enabled state - ${t}`);return}this.setState(n=>{n.tracks[e]?n.tracks[e].displayEnabled=t:this.logPossibleInconsistency("track id not found for setEnabled")},"displayEnabled");try{yield this.setEnabledSDKTrack(e,t),this.syncRoomState("setEnabled")}catch(n){throw this.setState(a=>{a.tracks[e].displayEnabled=!t},"rollbackDisplayEnabled"),this.hmsNotifications.sendError(m.convertException(n)),n}let o=t?C.TRACK_UNMUTED:C.TRACK_MUTED;this.hmsNotifications.sendTrackUpdate(o,e)})}setAudioSettings(e){return c(this,null,function*(){let t=this.store.getState(A);t&&(yield this.setSDKLocalAudioTrackSettings(t,e),this.syncRoomState("setAudioSettings"))})}setVideoSettings(e){return c(this,null,function*(){let t=this.store.getState(N);t&&(yield this.setSDKLocalVideoTrackSettings(t,e),this.syncRoomState("setVideoSettings"))})}sendMessage(e){this.sendBroadcastMessage(e)}sendBroadcastMessage(e,t){return c(this,null,function*(){let i=yield this.sdk.sendBroadcastMessage(e,t);this.updateMessageInStore(i,{message:e,type:t})})}sendGroupMessage(e,t,i){return c(this,null,function*(){let o=this.store.getState(K),r=t.map(a=>o[a]),n=yield this.sdk.sendGroupMessage(e,r,i);this.updateMessageInStore(n,{message:e,recipientRoles:t,type:i})})}sendDirectMessage(e,t,i){return c(this,null,function*(){let o=this.hmsSDKPeers[t],r=yield this.sdk.sendDirectMessage(e,o,i);this.updateMessageInStore(r,{message:e,recipientPeer:o.peerId,type:i})})}updateMessageInStore(e,t){if(!e)throw M.w("sendMessage","Failed to send message",t),Error(`sendMessage Failed - ${JSON.stringify(t)}`);let i=m.convertMessage(e);return i.read=!0,i.senderName="You",i.ignored=this.ignoredMessageTypes.includes(i.type),this.putMessageInStore(i),i}setMessageRead(e,t){this.setState(i=>{t?i.messages.byID[t]?i.messages.byID[t].read=e:this.logPossibleInconsistency("no message with id is found"):i.messages.allIDs.forEach(o=>{i.messages.byID[o].read=e})},"setMessageRead")}attachVideo(e,t){return c(this,null,function*(){if(this.localAndVideoUnmuting(e))return new Promise(i=>{let o=this.store.subscribe(r=>c(this,null,function*(){r&&(yield this.attachVideoInternal(e,t),o(),i())}),he)});yield this.attachVideoInternal(e,t)})}detachVideo(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];(i==null?void 0:i.type)==="video"?(i.removeSink(t),this.updateVideoLayer(e,"detachVideo")):(t&&(t.srcObject=null),this.logPossibleInconsistency("no video track found to remove sink"))})}addPluginToVideoTrack(e,t){return c(this,null,function*(){return this.addRemoveVideoPlugin(e,"add",t)})}addPluginToAudioTrack(e){return c(this,null,function*(){return this.addRemoveAudioPlugin(e,"add")})}validateVideoPluginSupport(e){let t={};if(t.isSupported=!1,!e)return M.w("no plugin passed in for checking support"),t.errMsg="no plugin passed in for checking support",t;let i=this.store.getState(N);if(!i)return M.w("video Track not added to local peer yet"),t.errMsg="call this function only after local peer has video track",t;let o=this.hmsSDKTracks[i];return o?t=o.validatePlugin(e):(M.w(`track ${i} not present, unable to validate plugin`),t.errMsg=`track ${i} not present, unable to validate plugin`),t}validateAudioPluginSupport(e){let t={};if(t.isSupported=!1,!e)return M.w('no plugin passed in for checking support"'),t.errMsg='no plugin passed in for checking support"',t;let i=this.store.getState(A);if(!i)return M.w("audio track not added to local peer yet"),t.errMsg="call this function only after local peer has audio track",t;let o=this.hmsSDKTracks[i];return o?t=o.validatePlugin(e):(M.w(`track ${i} not present, unable to validate plugin`),t.errMsg=`track ${i} not present, unable to validate plugin`),t}removePluginFromVideoTrack(e){return c(this,null,function*(){return this.addRemoveVideoPlugin(e,"remove")})}removePluginFromAudioTrack(e){return c(this,null,function*(){return this.addRemoveAudioPlugin(e,"remove")})}changeRole(e,t,i=!1){return c(this,null,function*(){let o=this.hmsSDKPeers[e];if(!o){this.logPossibleInconsistency(`Unknown peer ID given ${e} for changerole`);return}yield this.sdk.changeRole(o,t,i)})}acceptChangeRole(e){return c(this,null,function*(){let t=e.requestedBy?this.hmsSDKPeers[e.requestedBy.id]:void 0;t||M.w(`peer for which role change is requested no longer available - ${e.requestedBy}`);let i={requestedBy:t,role:e.role,token:e.token};yield this.sdk.acceptChangeRole(i),this.removeRoleChangeRequest(e)})}initAppData(e){this.setState(t=>{t.appData=e},"initAppData")}setAppData(e,t,i){let o=(t==null?void 0:t.constructor.name)==="Object";this.setState(r=>{if(r.appData)i&&o?Object.assign(r.appData[e],t):r.appData[e]=t;else{let n={[e]:t};r.appData=n}},`setAppData-${e}`)}rejectChangeRole(e){this.removeRoleChangeRequest(e)}endRoom(e,t){return c(this,null,function*(){let i=this.store.getState(We);if(!(i==null?void 0:i.endRoom)){M.w("You are not allowed to perform this action - endRoom");return}let o=this.store.getState(b);this.setState(r=>{r.room.roomState=H.Disconnecting},"endingRoom");try{yield this.sdk.endRoom(e,t),this.resetState("endRoom")}catch(r){M.e("error in ending room - ",r),this.setState(n=>{n.room.roomState=o},"revertEndRoom")}})}removePeer(e,t){return c(this,null,function*(){let i=this.hmsSDKPeers[e];if(i&&!i.isLocal)yield this.sdk.removePeer(i,t);else{this.logPossibleInconsistency(`No remote peer found for peerID - ${e}`);return}})}startRTMPOrRecording(e){return c(this,null,function*(){yield this.sdk.startRTMPOrRecording(e)})}stopRTMPAndRecording(){return c(this,null,function*(){yield this.sdk.stopRTMPAndRecording()})}startHLSStreaming(e){return c(this,null,function*(){yield this.sdk.startHLSStreaming(e)})}stopHLSStreaming(e){return c(this,null,function*(){yield this.sdk.stopHLSStreaming(e)})}sendHLSTimedMetadata(e){return c(this,null,function*(){yield this.sdk.sendHLSTimedMetadata(e)})}changeName(e){return c(this,null,function*(){yield this.sdk.changeName(e)})}changeMetadata(e){return c(this,null,function*(){typeof e!="string"&&(e=JSON.stringify(e)),yield this.sdk.changeMetadata(e)})}setRemoteTrackEnabled(e,t){return c(this,null,function*(){if(typeof e=="string"){let i=this.hmsSDKTracks[e];i&&ut(i)?yield this.sdk.changeTrackState(i,t):this.logPossibleInconsistency(`No remote track with ID ${e} found for change track state`)}else Array.isArray(e)&&e.forEach(i=>this.setRemoteTrackEnabled(i,t))})}setRemoteTracksEnabled(e){return c(this,null,function*(){let t={enabled:e.enabled,type:e.type,source:e.source};if(e.roles){let i=this.store.getState(K);t.roles=e.roles.map(o=>i[o])}yield this.sdk.changeMultiTrackState(t)})}setLogLevel(e){M.level=e,this.sdk.setLogLevel(e)}ignoreMessageTypes(e,t=!1){if(t)this.ignoredMessageTypes=e;else for(let i of e)this.ignoredMessageTypes.includes(i)||this.ignoredMessageTypes.push(i)}resetState(e="resetState"){this.isRoomJoinCalled=!1,this.hmsSDKTracks={},M.cleanUp(),this.setState(t=>{Object.assign(t,ie())},e)}sdkJoinWithListeners(e){return c(this,null,function*(){yield this.sdk.join(e,{onJoin:this.onJoin.bind(this),onRoomUpdate:this.onRoomUpdate.bind(this),onPeerUpdate:this.onPeerUpdate.bind(this),onTrackUpdate:this.onTrackUpdate.bind(this),onMessageReceived:this.onMessageReceived.bind(this),onError:this.onError.bind(this),onReconnected:this.onReconnected.bind(this),onReconnecting:this.onReconnecting.bind(this),onRoleChangeRequest:this.onRoleChangeRequest.bind(this),onRoleUpdate:this.onRoleUpdate.bind(this),onDeviceChange:this.onDeviceChange.bind(this),onChangeTrackStateRequest:this.onChangeTrackStateRequest.bind(this),onChangeMultiTrackStateRequest:this.onChangeMultiTrackStateRequest.bind(this),onRemovedFromRoom:this.onRemovedFromRoom.bind(this),onNetworkQuality:this.onNetworkQuality.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)}),this.sdk.addConnectionQualityListener({onConnectionQualityUpdate:this.onConnectionQualityUpdate.bind(this)})})}onRemovedFromRoom(e){var o;let t=this.store.getState(x((o=e.requestedBy)==null?void 0:o.peerId));this.hmsNotifications.sendLeaveRoom(F(_({},e),{requestedBy:t||void 0}));let i=e.roomEnded||!t?"roomEnded":"removedFromRoom";M.i(`resetting state after peer removed ${i}`,e),this.resetState(i)}onDeviceChange(e){let t=e.devices;if(!t)return;let i=this.store.getState(E);if(this.setState(o=>{w(o.devices.audioInput,t.audioInput)||(o.devices.audioInput=t.audioInput),w(o.devices.videoInput,t.videoInput)||(o.devices.videoInput=t.videoInput),w(o.devices.audioOutput,t.audioOutput)||(o.devices.audioOutput=t.audioOutput),this.hmsSDKPeers[i==null?void 0:i.id]&&Object.assign(o.settings,this.getMediaSettings(this.hmsSDKPeers[i==null?void 0:i.id]))},"deviceChange"),e.selection){let o=m.convertDeviceChangeUpdate(e);this.hmsNotifications.sendDeviceChange(o)}}sdkPreviewWithListeners(e){return c(this,null,function*(){yield this.sdk.preview(e,{onPreview:this.onPreview.bind(this),onError:this.onError.bind(this),onReconnected:this.onReconnected.bind(this),onReconnecting:this.onReconnecting.bind(this),onDeviceChange:this.onDeviceChange.bind(this),onRoomUpdate:this.onRoomUpdate.bind(this),onPeerUpdate:this.onPeerUpdate.bind(this),onNetworkQuality:this.onNetworkQuality.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)})})}onNetworkQuality(e){this.setState(t=>{var o;let i=t.room.localPeer||((o=this.sdk.getLocalPeer())==null?void 0:o.peerId);i&&(t.connectionQualities[i]={peerID:i,downlinkQuality:e})},"ConnectionQuality")}startScreenShare(e){return c(this,null,function*(){this.store.getState(ye)?this.logPossibleInconsistency("start screenshare is called while it's on"):(yield this.sdk.startScreenShare(()=>this.syncRoomState("screenshareStopped"),e),this.syncRoomState("startScreenShare"))})}stopScreenShare(){return c(this,null,function*(){this.store.getState(ye)?(yield this.sdk.stopScreenShare(),this.syncRoomState("stopScreenShare")):this.logPossibleInconsistency("stop screenshare is called while it's not on")})}attachVideoInternal(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i&&i.type==="video"?(i.addSink(t),this.updateVideoLayer(e,"attachVideo")):this.logPossibleInconsistency("no video track found to add sink")})}syncRoomState(e){e=`${e}_fullSync`,M.time(`store-sync-${e}`);let t={},i=[],o={},r={},n={},a=this.sdk.getPeers();for(let f of a){let O=m.convertPeer(f);t[O.id]=O,i.push(O.id),this.hmsSDKPeers[O.id]=f;let J=[f.audioTrack,f.videoTrack,...f.auxiliaryTracks];for(let se of J){if(!se)continue;let Ce=m.convertTrack(se);o[Ce.id]=Ce,r[se.trackId]=se}O.isLocal&&Object.assign(n,this.getMediaSettings(f))}let d=this.sdk.getRecordingState(),R=this.sdk.getRTMPState(),q=this.sdk.getHLSState();this.setState(f=>{f.room.peers=i;let O=f.peers,J=f.tracks;Le(O,t),Oe(J,o),Object.assign(f.settings,n),this.hmsSDKTracks=r,Object.assign(f.roles,m.convertRoles(this.sdk.getRoles())),Object.assign(f.playlist,m.convertPlaylist(this.sdk.getPlaylistManager())),Object.assign(f.room,m.convertRecordingStreamingState(d,R,q))},e),M.timeEnd(`store-sync-${e}`)}onPreview(e){this.setState(t=>{Object.assign(t.room,m.convertRoom(e)),t.room.roomState=H.Preview},"previewStart"),this.syncRoomState("previewSync")}onJoin(e){let t=this.sdk.getPlaylistManager();this.audioPlaylist=new ce(t,p.audio,this.syncPlaylistState.bind(this),this.store),this.videoPlaylist=new ce(t,p.video,this.syncRoomState.bind(this),this.store),this.syncRoomState("joinSync"),this.setState(i=>{Object.assign(i.room,m.convertRoom(e)),i.room.isConnected=!0,i.room.roomState=H.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(m.convertPlaylistItem(t,i)),this.syncPlaylistState(`${i.type}PlaylistItemEnded`)})}onRoomUpdate(e,t){this.setState(i=>{Object.assign(i.room,m.convertRoom(t))},e)}onPeerUpdate(e,t){if(![U.BECAME_DOMINANT_SPEAKER,U.RESIGNED_DOMINANT_SPEAKER].includes(e)){if(Array.isArray(t)){this.syncRoomState("peersJoined");let i=[];for(let o of t){let r=this.store.getState(x(o.peerId));r&&i.push(r)}this.hmsNotifications.sendPeerList(i);return}this.sendPeerUpdateNotification(e,t)}}onTrackUpdate(e,t,i){if(e===C.TRACK_REMOVED)this.hmsNotifications.sendTrackUpdate(e,t.trackId),this.handleTrackRemove(t,i);else{let o=le[e]||"trackUpdate";this.syncRoomState(o),this.hmsNotifications.sendTrackUpdate(e,t.trackId)}}onMessageReceived(e){let t=m.convertMessage(e);t.read=!1,t.ignored=this.ignoredMessageTypes.includes(t.type),this.putMessageInStore(t),this.hmsNotifications.sendMessageReceived(t)}putMessageInStore(e){e.ignored||this.setState(t=>{e.id=String(this.store.getState(Fe)+1),t.messages.byID[e.id]=e,t.messages.allIDs.push(e.id)},"newMessage")}onAudioLevelUpdate(e){this.setState(t=>{let i={};e.forEach(r=>{if(!r.track||!r.peer)return;let n=r.track.trackId;i[n]=r.audioLevel,t.speakers[n]||(t.speakers[n]={audioLevel:r.audioLevel,peerID:r.peer.peerId,trackID:n})});let o=Object.entries(t.speakers);for(let[r,n]of o)n.audioLevel=i[r]||0,n.audioLevel===0&&delete t.speakers[r]},"audioLevel")}onConnectionQualityUpdate(e){this.setState(t=>{let i=new Set;e.forEach(r=>{let n=r.peerID;!n||(i.add(n),t.connectionQualities[n]?Object.assign(t.connectionQualities[n],r):t.connectionQualities[n]=r)});let o=Object.keys(t.connectionQualities);for(let r of o)i.has(r)||delete t.connectionQualities[r]},"connectionQuality")}onChangeTrackStateRequest(e){var r;let t=this.store.getState(x((r=e.requestedBy)==null?void 0:r.peerId)),i=this.getStoreLocalTrackIDfromSDKTrack(e.track),o=this.store.getState(ee(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(x((r=e.requestedBy)==null?void 0:r.peerId));e.enabled||this.syncRoomState("changeMultiTrackStateRequest");let i=[],o=this.store.getState(h);for(let n of e.tracks){let a=this.getStoreLocalTrackIDfromSDKTrack(n);a&&o[a]&&i.push(o[a])}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?H.Connected:H.Preview},"reconnected")}onReconnecting(e){let t=m.convertException(e);M.e("Reconnection: received error from sdk",t),this.hmsNotifications.sendReconnecting(t),this.setState(i=>{i.room.roomState=H.Reconnecting,i.errors.push(t)},"reconnecting")}onError(e){let t=m.convertException(e);t.isTerminal?(this.leave().then(()=>M.e("error from SDK, left room.")),this.setState(i=>{i.room.roomState=H.Failed,i.errors.push(t)},"errorTerminal")):this.store.getState().errors.length<50&&this.setState(o=>{o.errors.push(t)},"error"),this.syncRoomState("errorSync"),this.hmsNotifications.sendError(t),M.e("received error from sdk",t instanceof Jt?`${t}`:t)}updateVideoLayer(e,t){let i=this.hmsSDKTracks[e];if(i&&i instanceof Mt){let o=this.store.getState(ee(e));((o==null?void 0:o.layer)!==i.getSimulcastLayer()||(o==null?void 0:o.degraded)!==i.degraded)&&this.setState(n=>{n.tracks[e].layer=i.getSimulcastLayer(),n.tracks[e].degraded=i.degraded},t)}}handleTrackRemove(e,t){this.setState(i=>{let o=i.peers[t.peerId],r=i.tracks,n=e.trackId;if(this.isSameStoreSDKTrack(n,o==null?void 0:o.audioTrack))o==null||delete o.audioTrack;else if(this.isSameStoreSDKTrack(n,o==null?void 0:o.videoTrack))o==null||delete o.videoTrack;else{let a=o==null?void 0:o.auxiliaryTracks.indexOf(n);a>-1&&this.isSameStoreSDKTrack(n,o==null?void 0:o.auxiliaryTracks[a])&&(o==null||o.auxiliaryTracks.splice(a,1))}delete r[n],delete this.hmsSDKTracks[n]},"trackRemoved")}setEnabledSDKTrack(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setEnabled(t):this.logPossibleInconsistency(`track ${e} not present, unable to enabled/disable`)})}setSDKLocalVideoTrackSettings(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setSettings(t):this.logPossibleInconsistency(`local track ${e} not present, unable to set settings`)})}setSDKLocalAudioTrackSettings(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setSettings(t):this.logPossibleInconsistency(`local track ${e} not present, unable to set settings`)})}getMediaSettings(e){var r;let t=this.store.getState(qe),i=e.audioTrack,o=e.videoTrack;return{audioInputDeviceId:(i==null?void 0:i.settings.deviceId)||t.audioInputDeviceId,videoInputDeviceId:(o==null?void 0:o.settings.deviceId)||t.videoInputDeviceId,audioOutputDeviceId:(r=this.sdk.getAudioOutput().getDevice())==null?void 0:r.deviceId}}setTrackVolume(e,t){let i=this.hmsSDKTracks[t];i?i instanceof Qt?(i.setVolume(e),this.setState(o=>{let r=o.tracks[t];r&&(r.volume=e)},"trackVolume")):M.w(`track ${t} is not an audio track`):this.logPossibleInconsistency(`track ${t} not present, unable to set volume`)}localAndVideoUnmuting(e){if(this.store.getState(E).videoTrack!==e)return!1;let i=this.store.getState($e),o=this.store.getState(he);return i&&!o}logPossibleInconsistency(e){M.w("possible inconsistency detected - ",e)}addRemoveVideoPlugin(e,t,i){return c(this,null,function*(){if(!e){M.w("Invalid plugin received in store");return}let o=this.store.getState(N);if(o){let r=this.hmsSDKTracks[o];r?(t==="add"?yield r.addPlugin(e,i):t==="remove"&&(yield r.removePlugin(e)),this.syncRoomState(`${t}VideoPlugin`)):this.logPossibleInconsistency(`track ${o} not present, unable to remove plugin`)}})}addRemoveAudioPlugin(e,t){return c(this,null,function*(){if(!e){M.w("Invalid plugin received in store");return}let i=this.store.getState(A);if(i){let o=this.hmsSDKTracks[i];o?(t==="add"?yield o.addPlugin(e):t==="remove"&&(yield o.removePlugin(e)),this.syncRoomState(`${t}AudioPlugin`)):this.logPossibleInconsistency(`track ${i} not present, unable to remove plugin`)}})}isSameStoreSDKTrack(e,t){var i;return t?((i=this.hmsSDKTracks[t])==null?void 0:i.trackId)===e:!1}onRoleChangeRequest(e){this.setState(t=>{t.roleChangeRequests.length===0&&t.roleChangeRequests.push(m.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(je).find(i=>this.hmsSDKTracks[i].trackId===e.trackId)}};import{EventEmitter2 as Yt}from"eventemitter2";var Ie="hmsNotification",ve=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(Ie,i),()=>{this.eventEmitter.removeListener(Ie,i)}};this.store=e,this.eventEmitter=new Yt}sendPlaylistTrackEnded(e){let t=this.createNotification(T.PLAYLIST_TRACK_ENDED,e,P.INFO);this.emitEvent(t)}sendDeviceChange(e){var i;let t=this.createNotification(T.DEVICE_CHANGE_UPDATE,e,e.error?P.ERROR:P.INFO,`Selected ${e.type} device - ${(i=e.selection)==null?void 0:i.label}`);this.emitEvent(t)}sendLeaveRoom(e){var o;let t=(o=e.requestedBy)==null?void 0:o.name,i=this.createNotification(e.roomEnded||!t?T.ROOM_ENDED:T.REMOVED_FROM_ROOM,e,P.INFO,`${e.roomEnded?"Room ended":"Removed from room"} ${t?`by ${t}`:""}`);this.emitEvent(i)}sendPeerList(e){let t=this.createNotification(T.PEER_LIST,e,P.INFO);this.emitEvent(t)}sendPeerUpdate(e,t){let i=this.store.getState(x(t==null?void 0:t.id))||t,o=Se[e];if(o){let r=this.createNotification(o,i,P.INFO);this.emitEvent(r)}}sendTrackUpdate(e,t){let i=this.store.getState(ee(t)),o=le[e];if(o){let r=this.createNotification(o,i,P.INFO);this.emitEvent(r)}}sendMessageReceived(e){let t=this.createNotification(T.NEW_MESSAGE,e,P.INFO);this.emitEvent(t)}sendError(e){let t=this.createNotification(T.ERROR,e,P.ERROR);this.emitEvent(t)}sendReconnecting(e){let t=this.createNotification(T.RECONNECTING,e,P.ERROR);this.emitEvent(t)}sendReconnected(){let e=this.createNotification(T.RECONNECTED,null,P.INFO);this.emitEvent(e)}sendChangeTrackStateRequest(e){let t=this.createNotification(T.CHANGE_TRACK_STATE_REQUEST,e,P.INFO);this.emitEvent(t)}sendChangeMultiTrackStateRequest(e){let t=this.createNotification(T.CHANGE_MULTI_TRACK_STATE_REQUEST,e,P.INFO);this.emitEvent(t)}emitEvent(e){this.eventEmitter.emit(Ie,e)}createNotification(e,t,i,o=""){return this.id++,{id:this.id,type:e,message:o,data:t,severity:i}}};import{isBrowser as Xt}from"@100mslive/hms-video";var de=s=>Xt?`${s} ${document.title}`:s;var pt=(s,e,t)=>{let i;t.getState(b)===H.Connected&&(i=Tt(s,e,t)),t.subscribe(o=>{[H.Connected,H.Reconnecting].includes(o)?i||(i=Tt(s,e,t)):i&&(es(e),i())},b)},Tt=(s,e,t)=>{var r,n;let i=zt(t,e);(r=s.getWebrtcInternals())==null||r.start();let o=(n=s.getWebrtcInternals())==null?void 0:n.onStatsChange(a=>Zt(e,a,t));return()=>{i(),o&&o()}},zt=(s,e)=>{let t,i,o;return s.getState($)?e.namedSetState(r=>{r.localPeer.id=s.getState($)},"localpeer-id"):t=s.subscribe(r=>{r&&e.namedSetState(n=>{n.localPeer.id=r},"localpeer-id")},$),s.getState(N)?e.namedSetState(r=>{r.localPeer.videoTrack=s.getState(N)},"localpeer-videotrack-id"):i=s.subscribe(r=>{r&&e.namedSetState(n=>{n.localPeer.videoTrack=r},"localpeer-videotrack-id")},N),s.getState(A)?e.namedSetState(r=>{r.localPeer.videoTrack=s.getState(A)},"localpeer-audiotrack-id"):o=s.subscribe(r=>{r&&e.namedSetState(n=>{n.localPeer.videoTrack=r},"localpeer-audiotrack-id")},A),()=>{t==null||t(),i==null||i(),o==null||o()}},Zt=(s,e,t)=>{let i=t.getState(h);s.namedSetState(o=>{let r={},n=Object.keys(i);for(let R of n){let q=e.getTrackStats(R);q&&(r[R]=q)}Me(o.trackStats,r);let d={[t.getState($)]:e.getLocalPeerStats()};Me(o.peerStats,d)},"webrtc-stats")},es=(s,e="resetState")=>{s.namedSetState(t=>{Object.assign(t,oe())},e)};var ue=class{constructor(e,t){this.hmsStore=e;this.sdk=t;this.store=L.createNewHMSStore(de("HMSStatsStore"),oe),this.getState=this.store.getState,this.subscribe=this.store.subscribe,this.getPublishPeerConnection=()=>new Promise(i=>{var o,r;this.hmsStore.getState(b)==="Connected"?i((r=(o=this.sdk)==null?void 0:o.getWebrtcInternals())==null?void 0:r.getPublishPeerConnection()):this.hmsStore.subscribe(n=>{var a,d;n==="Connected"&&i((d=(a=this.sdk)==null?void 0:a.getWebrtcInternals())==null?void 0:d.getPublishPeerConnection())},b)}),this.getSubscribePeerConnection=()=>new Promise(i=>{var o,r;this.hmsStore.getState(b)==="Connected"?i((r=(o=this.sdk)==null?void 0:o.getWebrtcInternals())==null?void 0:r.getSubscribePeerConnection()):this.hmsStore.subscribe(n=>{var a,d;n==="Connected"&&i((d=(a=this.sdk)==null?void 0:a.getWebrtcInternals())==null?void 0:d.getSubscribePeerConnection())},b)}),!!this.sdk&&pt(this.sdk,this.store,this.hmsStore)}};import{createSelector as g}from"reselect";var ts=s=>s.localPeer.id,ss=s=>s.localPeer.audioTrack,is=s=>s.localPeer.videoTrack,os=(s,e)=>e,rs=(s,e)=>e,Ee=s=>s.trackStats,mt=s=>s.peerStats,V=g([mt,ts],(s,e)=>s[e]),ns=g(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.packetsLost}),as=g(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.jitter}),cs=g(V,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bitrate}),Ss=g(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bitrate}),ls=g(V,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.availableOutgoingBitrate}),ds=g(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.availableIncomingBitrate}),us=g(V,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bytesSent}),Ms=g(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bytesReceived}),ps=g([mt,os],(s,e)=>e?s[e]:void 0),Q=g([Ee,rs],(s,e)=>e?s[e]:void 0),Ts=u(ps),ms=u(Q),Hs=u(g(Q,s=>s==null?void 0:s.bitrate)),gs=u(g(Q,s=>s==null?void 0:s.bytesReceived)),hs=u(g(Q,s=>s==null?void 0:s.framesPerSecond)),ys=u(g(Q,s=>s==null?void 0:s.jitter)),fs=u(g(Q,s=>s==null?void 0:s.packetsLost)),be=g([Ee,ss],(s,e)=>e?s[e]:void 0),te=g([Ee,is],(s,e)=>e?s[e]:void 0),ks=g(be,s=>s==null?void 0:s.bitrate),Rs=g(te,s=>s==null?void 0:s.bitrate),Ps=g(be,s=>s==null?void 0:s.bytesSent),Ds=g(te,s=>s==null?void 0:s.bytesSent),Is=g(te,s=>s==null?void 0:s.framesPerSecond),vs=g(te,s=>s==null?void 0:s.qualityLimitationReason),Es={localPeerStats:V,packetsLost:ns,jitter:as,publishBitrate:cs,subscribeBitrate:Ss,availablePublishBitrate:ls,availableSubscribeBitrate:ds,totalBytesSent:us,totalBytesReceived:Ms,peerStatsByID:Ts,trackStatsByID:ms,bitrateByTrackID:Hs,bytesReceivedByTrackID:gs,framerateByTrackID:hs,jitterByTrackID:ys,packetsLostByTrackID:fs,localAudioTrackStats:be,localVideoTrackStats:te,localAudioTrackBitrate:ks,localVideoTrackBitrate:Rs,localAudioTrackBytesSent:Ps,localVideoTrackBytesSent:Ds,localVideoTrackFramerate:Is,localVideoTrackQualityLimitationReason:vs};var L=class{constructor(e,t,i){this.getStats=()=>(this.stats||(this.stats=new ue(this.store,this.sdk)),this.stats);e?this.store=e:this.store=L.createNewHMSStore(de("HMSStore"),ie),i?this.notifications=i:this.notifications=new ve(this.store),t?this.actions=t:(this.sdk=new Ns,this.actions=new De(this.store,this.sdk,this.notifications)),this.initialTriggerOnSubscribe=!1,xs&&(window.__hms=this)}triggerOnSubscribe(){this.initialTriggerOnSubscribe||(L.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=Cs(()=>t()),o=i.setState;i.setState=a=>{let d=typeof a=="function"?bs(a):a;o(d)};let r=i.getState;i.getState=a=>{if(a){let d=a.name||"byIDSelector";window.selectorsCount||(window.selectorsCount={}),window.selectorsCount[d]=(window.selectorsCount[d]||0)+1;let R=performance.now(),q=a(r()),f=performance.now()-R;return f>1&&(window.expensiveSelectors=window.expensiveSelectors||new Map,window.expensiveSelectors.set(d,f)),q}return r()},L.compareWithShallowCheckInSubscribe(i);let n=L.setUpDevtools(i,e);return F(_({},i),{namedSetState:n})}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=n=>n),r=r||As,t(i,o,r))}static setUpDevtools(e,t){let i;try{i=window.__REDUX_DEVTOOLS_EXTENSION__||window.top.__REDUX_DEVTOOLS_EXTENSION__}catch(n){}if(!i)return n=>{e.setState(n)};let o=i.connect(L.devtoolsOptions(t));o.prefix=t?`${t} > `:"";let r=e.setState;return e.setState=n=>{r(n),o.send(`${o.prefix}setState`,e.getState())},o.subscribe(L.devtoolsSubscribe(o,e,r)),o.send("setUpStore",e.getState()),(n,a)=>{r(n);let d=a||`${o.prefix}action`;o.send(d,e.getState())}}static devtoolsOptions(e){return{name:e,actionsBlacklist:["audioLevel","playlistProgress","connectionQuality"]}}static devtoolsSubscribe(e,t,i){return o=>{var r,n,a,d;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"&&((n=o.payload)==null?void 0:n.type)==="IMPORT_STATE"){let R=(a=o.payload.nextLiftedState)==null?void 0:a.actionsById;(((d=o.payload.nextLiftedState)==null?void 0:d.computedStates)||[]).forEach(({state:f},O)=>{let J=R[O]||`${e.prefix}setState`;O===0?e.init(f):(i(f),e.send(J,t.getState()))})}}}};export{kt as HMSAudioPluginType,k as HMSLogLevel,xe as HMSMessageType,P as HMSNotificationSeverity,T as HMSNotificationTypes,p as HMSPlaylistType,L as HMSReactiveStore,H as HMSRoomState,ue as HMSStats,Pt as HMSVideoPluginCanvasContextType,Rt as HMSVideoPluginType,oe as createDefaultStatsStore,ie as createDefaultStoreState,Dt as parsedUserAgent,Ko as selectAppData,Vo as selectAppDataByPath,st as selectAudioPlaylist,Yo as selectAudioPlaylistTrackByPeerID,Ut as selectAudioTrackByPeerID,St as selectAudioTrackVolume,sr as selectAudioVolumeByPeerID,Wo as selectAuxiliaryAudioByPeerID,jo as selectAuxiliaryTracksByPeerID,go as selectAvailableRoleNames,Vt as selectBroadcastMessages,rr as selectBroadcastMessagesUnreadCount,qo as selectCameraStreamByPeerID,so as selectConnectionQualities,Go as selectConnectionQualityByPeerID,To as selectDegradedTracks,to as selectDevices,vr as selectDidIJoinWithin,ao as selectDominantSpeaker,ge as selectFullAppData,ko as selectHLSState,ne as selectHMSMessages,Fe as selectHMSMessagesCount,Es as selectHMSStats,gr as selectIsAllowedToPublish,ho as selectIsAllowedToSubscribe,ct as selectIsAudioLocallyMuted,At as selectIsConnectedToRoom,Ho as selectIsInPreview,co as selectIsLocalAudioEnabled,Pr as selectIsLocalAudioPluginPresent,ye as selectIsLocalScreenShared,$e as selectIsLocalVideoDisplayEnabled,he as selectIsLocalVideoEnabled,Rr as selectIsLocalVideoPluginPresent,er as selectIsLocallyMutedByPeerID,zo as selectIsPeerAudioEnabled,Zo as selectIsPeerVideoEnabled,tr as selectIsScreenShareLocallyMutedByPeerID,So as selectIsSomeoneScreenSharing,A as selectLocalAudioTrackID,qe as selectLocalMediaSettings,E as selectLocalPeer,$ as selectLocalPeerID,oo as selectLocalPeerName,ae as selectLocalPeerRole,ro as selectLocalPeerRoleName,je as selectLocalTrackIDs,N as selectLocalVideoTrackID,Be as selectMessageIDsInOrder,nr as selectMessagesByPeerID,ar as selectMessagesByRole,Ve as selectMessagesMap,Sr as selectMessagesUnreadCountByPeerID,cr as selectMessagesUnreadCountByRole,Fo as selectPeerAudioByID,Dr as selectPeerByCondition,x as selectPeerByID,io as selectPeerCount,dr as selectPeerMetadata,ur as selectPeerName,Bo as selectPeerNameByID,Lt as selectPeerScreenSharing,lo as selectPeerSharingAudio,po as selectPeerSharingAudioPlaylist,Mo as selectPeerSharingVideoPlaylist,W as selectPeers,Ir as selectPeersByCondition,lr as selectPeersByRole,v as selectPeersMap,uo as selectPeersScreenSharing,mr as selectPeersWithAudioStatus,We as selectPermissions,fo as selectRTMPState,yo as selectRecordingState,no as selectRemotePeers,kr as selectRoleByRoleName,Hr as selectRoleChangeRequest,K as selectRolesMap,D as selectRoom,eo as selectRoomID,Po as selectRoomStartTime,Ge as selectRoomStarted,b as selectRoomState,at as selectScreenShareAudioByPeerID,Xo as selectScreenShareByPeerID,nt as selectScreenSharesByPeerId,ir as selectScreenshareAudioVolumeByPeerID,Ro as selectSessionId,or as selectSimulcastLayerByTrack,Ct as selectSpeakers,$o as selectTrackAudioByID,ee as selectTrackByID,h as selectTracksMap,mo as selectUnreadHMSMessagesCount,it as selectVideoPlaylist,Jo as selectVideoPlaylistAudioTrackByPeerID,Qo as selectVideoPlaylistVideoTrackByPeerID,wt as selectVideoTrackByPeerID};
|
|
1
|
+
var ht=Object.defineProperty,yt=Object.defineProperties;var ft=Object.getOwnPropertyDescriptors;var Ne=Object.getOwnPropertySymbols;var kt=Object.prototype.hasOwnProperty,Rt=Object.prototype.propertyIsEnumerable;var xe=(s,e,t)=>e in s?ht(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,_=(s,e)=>{for(var t in e||(e={}))kt.call(e,t)&&xe(s,t,e[t]);if(Ne)for(var t of Ne(e))Rt.call(e,t)&&xe(s,t,e[t]);return s},F=(s,e)=>yt(s,ft(e));var c=(s,e,t)=>new Promise((i,o)=>{var r=u=>{try{n(t.next(u))}catch(R){o(R)}},a=u=>{try{n(t.throw(u))}catch(R){o(R)}},n=u=>u.done?i(u.value):Promise.resolve(u.value).then(r,a);n((t=t.apply(s,e)).next())});import Ls from"immer";import Os from"zustand/vanilla";import _s from"zustand/shallow";import{HMSSdk as ws,isBrowser as Us}from"@100mslive/hms-video";var h;(function(n){n.Disconnected="Disconnected",n.Preview="Preview",n.Connecting="Connecting",n.Connected="Connected",n.Reconnecting="Reconnecting",n.Disconnecting="Disconnecting",n.Failed="Failed"})(h||(h={}));var ie=()=>({room:{id:"",isConnected:!1,name:"",peers:[],shareableLink:"",localPeer:"",hasWaitingRoom:!1,roomState:h.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:[]}),oe=()=>({peerStats:{},trackStats:{},localPeer:{id:""}});var Le;(function(e){e.CHAT="chat"})(Le||(Le={}));var P;(function(t){t.INFO="info",t.ERROR="error"})(P||(P={}));var T;(function(S){S.PEER_JOINED="PEER_JOINED",S.PEER_LEFT="PEER_LEFT",S.PEER_LIST="PEER_LIST",S.NEW_MESSAGE="NEW_MESSAGE",S.ERROR="ERROR",S.RECONNECTING="RECONNECTING",S.RECONNECTED="RECONNECTED",S.TRACK_ADDED="TRACK_ADDED",S.TRACK_REMOVED="TRACK_REMOVED",S.TRACK_MUTED="TRACK_MUTED",S.TRACK_UNMUTED="TRACK_UNMUTED",S.TRACK_DEGRADED="TRACK_DEGRADED",S.TRACK_RESTORED="TRACK_RESTORED",S.TRACK_DESCRIPTION_CHANGED="TRACK_DESCRIPTION_CHANGED",S.ROLE_UPDATED="ROLE_UPDATED",S.CHANGE_TRACK_STATE_REQUEST="CHANGE_TRACK_STATE_REQUEST",S.CHANGE_MULTI_TRACK_STATE_REQUEST="CHANGE_MULTI_TRACK_STATE_REQUEST",S.ROOM_ENDED="ROOM_ENDED",S.REMOVED_FROM_ROOM="REMOVED_FROM_ROOM",S.DEVICE_CHANGE_UPDATE="DEVICE_CHANGE_UPDATE",S.PLAYLIST_TRACK_ENDED="PLAYLIST_TRACK_ENDED",S.NAME_UPDATED="NAME_UPDATED",S.METADATA_UPDATED="METADATA_UPDATED"})(T||(T={}));var p;(function(t){t.audio="audio",t.video="video"})(p||(p={}));import{HMSException as Qs,HMSSimulcastLayer as Js,HMSPeerUpdate as U,HMSRoomUpdate as Ys,HMSTrackUpdate as C,HMSLogLevel as k,HMSAudioPluginType as Pt,HMSVideoPluginType as Dt,HMSVideoPluginCanvasContextType as It,parsedUserAgent as vt}from"@100mslive/hms-video";import{HMSLocalAudioTrack as we,HMSLocalVideoTrack as Ue,HMSRemoteAudioTrack as bt,HMSRemoteVideoTrack as Ct}from"@100mslive/hms-video";var Oe=(s,e)=>{let t=ge(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Te(o,r)?(w(o.auxiliaryTracks,r.auxiliaryTracks)&&(r.auxiliaryTracks=o.auxiliaryTracks),Object.assign(o,r)):me(o,r)?delete s[i]:He(o,r)&&(s[i]=r)}},_e=(s,e)=>{let t=ge(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Te(o,r)?(Et(o,r),Object.assign(o,r)):me(o,r)?delete s[i]:He(o,r)&&(s[i]=r)}},pe=(s,e)=>{let t=ge(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Te(o,r)?Object.assign(o,r):me(o,r)?delete s[i]:He(o,r)&&(s[i]=r)}},Et=(s,e)=>{s.plugins&&w(s.plugins,e.plugins)&&(e.plugins=s.plugins),s.type==="video"&&s.layerDefinitions&&w(s.layerDefinitions,e.layerDefinitions)&&(e.layerDefinitions=s.layerDefinitions)},Te=(s,e)=>s&&e,me=(s,e)=>s&&!e,He=(s,e)=>!s&&e,w=(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},ge=(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 m=class{static convertPeer(e){var t,i,o;return{id:e.peerId,name:e.name,roleName:(t=e.role)==null?void 0:t.name,isLocal:e.isLocal,videoTrack:(i=e.videoTrack)==null?void 0:i.trackId,audioTrack:(o=e.audioTrack)==null?void 0:o.trackId,auxiliaryTracks:e.auxiliaryTracks.map(r=>r.trackId),customerUserId:e.customerUserId,customerDescription:e.metadata,metadata:e.metadata,joinedAt:e.joinedAt}}static convertTrack(e,t){let i={id:e.trackId,source:e.source,type:e.type,enabled:e.enabled,displayEnabled:e.enabled,peerId:e.peerId||t};return this.enrichTrack(i,e),i}static enrichTrack(e,t){let i=t.getMediaTrackSettings();t instanceof bt&&(e.volume=t.getVolume()||0),m.updateDeviceID(e,t),e.type==="video"&&(e.source==="screen"?e.displaySurface=i.displaySurface:e.source==="regular"&&(e.facingMode=i.facingMode),e.height=i.height,e.width=i.width,m.enrichVideoTrack(e,t)),m.enrichPluginsDetails(e,t)}static updateDeviceID(e,t){var i;t instanceof Ue||t instanceof we?e.deviceID=t.settings.deviceId:e.deviceID=(i=t.getMediaTrackSettings())==null?void 0:i.deviceId}static enrichVideoTrack(e,t){t instanceof Ct&&(e.layer=t.getSimulcastLayer(),e.degraded=t.degraded,w(t.getSimulcastDefinitions(),e.layerDefinitions)||(e.layerDefinitions=t.getSimulcastDefinitions()))}static enrichPluginsDetails(e,t){(t instanceof Ue||t instanceof we)&&(w(t.getPlugins(),e.plugins)||(e.plugins=t.getPlugins()))}static convertRoom(e){var r,a;let{recording:t,rtmp:i,hls:o}=m.convertRecordingStreamingState(e==null?void 0:e.recording,e==null?void 0:e.rtmp,e==null?void 0:e.hls);return{id:e.id,name:e.name,localPeer:(a=(r=e.localPeer)==null?void 0:r.peerId)!=null?a:"",hasWaitingRoom:e.hasWaitingRoom,shareableLink:e.shareableLink,recording:t,rtmp:i,hls:o,sessionId:e.sessionId,startedAt:e.startedAt,joinedAt:e.joinedAt,peerCount:e.peerCount}}static convertMessage(e){var t,i,o,r,a,n,u;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:(u=e.recipientRoles)==null?void 0:u.map(R=>R.name),time:e.time,type:e.type,message:e.message}}static convertRoles(e){let t={};return e&&e.forEach(i=>{t[i.name]=i}),t}static convertRoleChangeRequest(e){var t;return{requestedBy:(t=e.requestedBy)==null?void 0:t.peerId,roleName:e.role.name,token:e.token}}static convertException(e){return{code:e.code,action:e.action,name:e.name,message:e.message,description:e.description,isTerminal:e.isTerminal,nativeError:e.nativeError,timestamp:new Date}}static convertDeviceChangeUpdate(e){let t={devices:e.devices,selection:e.selection,type:e.type};return e.error&&(t.error=this.convertException(e.error)),t}static convertPlaylist(e){let t=this.getConvertedPlaylistType(e,p.audio),i=this.getConvertedPlaylistType(e,p.video);return{audio:t,video:i}}static convertPlaylistItem(e,t){let i=t.type,o=e.getCurrentSelection(i),r=e.isPlaying(i),a=t.url===(o==null?void 0:o.url);return F(_({},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),u=e.getCurrentIndex(t);return e.getList(t).forEach(R=>{i[R.id]=m.convertPlaylistItem(e,R)}),{list:i,selection:{id:o==null?void 0:o.id,hasPrevious:u>0,hasNext:u<n.length-1},progress:r,volume:a,currentTime:e.getCurrentTime(t),playbackRate:e.getPlaybackRate(t)}}static convertRecordingStreamingState(e,t,i){var o;return{recording:{browser:_({running:!1},e==null?void 0:e.browser),server:_({running:!1},e==null?void 0:e.server),hls:_({running:!1},e==null?void 0:e.hls)},rtmp:_({running:!1},t),hls:{variants:((o=i==null?void 0:i.variants)==null?void 0:o.map(r=>r))||[],running:!!(i==null?void 0:i.running),error:i==null?void 0:i.error}}}};import{createSelector as d}from"reselect";function j(s,e,t=At){let i,o;if(e)for(let r of e.auxiliaryTracks){let a=s[r];t(a)&&(o=Y(a)?a:o,i=X(a)?a:i)}return{video:i,audio:o}}function Y(s){return s&&s.type==="audio"}function X(s){return s&&s.type==="video"}function At(s){return s&&s.source==="screen"}function re(s){return s&&s.source==="audioplaylist"}function z(s){return s&&s.source==="videoplaylist"}function Ve(s){return s?Boolean(s==null?void 0:s.degraded):!1}function G(s,e){return e&&s.tracks[e]?s.tracks[e].enabled:!1}function Ke(s,e){return e&&s.tracks[e]?s.tracks[e].displayEnabled:!1}var D=s=>s.room,co=d(D,s=>s.id),v=s=>s.peers,Be=s=>s.messages.byID,qe=s=>s.messages.allIDs,H=s=>s.tracks,je=s=>s.settings,he=s=>s.appData,So=s=>s.devices,Nt=s=>s.speakers,lo=s=>s.connectionQualities,xt=d([D],s=>s&&s.isConnected),uo=d([xt,D],(s,e)=>s?e.peerCount!==void 0?e.peerCount||1:e.peers.length:Math.max(e.peerCount!==void 0?e.peerCount:e.peers.length-1,0)),W=d([D,v],(s,e)=>s.peers.map(t=>e[t])),Lt=d(H,s=>Object.values(s)),E=d(D,v,(s,e)=>e[s.localPeer]),$=d(D,s=>s.localPeer),Mo=d(E,s=>s==null?void 0:s.name),po=d(E,s=>s==null?void 0:s.roleName),A=d(E,s=>s==null?void 0:s.audioTrack),N=d(E,s=>s==null?void 0:s.videoTrack),Ot=d(E,s=>s==null?void 0:s.auxiliaryTracks),$e=d([A,N,Ot],(s,e,t)=>{let i=[...t];return s&&i.unshift(s),e&&i.unshift(e),i}),To=d(W,s=>s.filter(e=>!e.isLocal)),mo=d(v,Nt,(s,e)=>{let t=Object.entries(e).sort((i,o)=>{var n,u;let r=((n=i[1])==null?void 0:n.audioLevel)||0;return(((u=o[1])==null?void 0:u.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}),Ho=s=>{let e=E(s);return G(s,e==null?void 0:e.audioTrack)},ye=s=>{let e=E(s);return G(s,e==null?void 0:e.videoTrack)},Fe=s=>{let e=E(s);return Ke(s,e==null?void 0:e.videoTrack)},fe=d(E,H,(s,e)=>{let{video:t,audio:i}=j(e,s);return!!(t||i)}),_t=d(v,H,(s,e)=>{let t;for(let i in s){let o=s[i],{video:r,audio:a}=j(e,o);if(r)return o;a&&!t&&(t=o)}return t}),go=d(_t,s=>!!s),ho=d(v,H,(s,e)=>{for(let t in s){let i=s[t],{audio:o,video:r}=j(e,i);if(!r&&!!o)return i}}),yo=d(v,H,(s,e)=>{let t=[],i=[];for(let o in s){let r=s[o],{video:a,audio:n}=j(e,r);a?t.push(r):n&&i.push(r)}return t.concat(i)}),fo=d(v,H,(s,e)=>{for(let t in e){let i=e[t];if(z(i)&&X(i)&&i.peerId)return s[i.peerId]}}),ko=d(v,H,(s,e)=>{for(let t in e){let i=e[t];if(re(i)&&i.peerId)return s[i.peerId]}}),Ro=d(Lt,s=>s.filter(Ve)),Ge=d(qe,s=>s.length),Po=d(Be,s=>Object.values(s).filter(e=>!e.read).length),ae=d(qe,Be,(s,e)=>{let t=[];return s.forEach(i=>{t.push(e[i])}),t}),b=d([D],s=>s&&s.roomState),Do=d(b,s=>s===h.Preview),We=d(D,s=>s.roomState!==h.Disconnected),V=s=>s.roles,Io=d([V],s=>Object.keys(s)),ne=d([E,V],(s,e)=>(s==null?void 0:s.roleName)?e[s.roleName]:null),vo=d([ne],s=>{var e;return((e=s==null?void 0:s.subscribeParams)==null?void 0:e.subscribeToRoles)?s.subscribeParams.subscribeToRoles.length>0:!1}),Qe=d(ne,s=>s==null?void 0:s.permissions),Eo=d(D,s=>s.recording),bo=d(D,s=>s.rtmp),Co=d(D,s=>s.hls),Ao=d(D,s=>s.sessionId),No=d(D,s=>s.startedAt),xo=s=>s.sessionMetadata;import{createSelector as Je}from"reselect";var Ye=(s=p.audio)=>e=>e.playlist[s].list,ke=(s=p.audio)=>e=>e.playlist[s].selection,Xe=(s=p.audio)=>e=>e.playlist[s].progress,ze=(s=p.audio)=>e=>e.playlist[s].currentTime,Ze=(s=p.audio)=>e=>e.playlist[s].playbackRate,et=(s=p.audio)=>e=>e.playlist[s].volume,tt=(s=p.audio)=>Je(Ye(s),e=>Object.values(e)),st=(s=p.audio)=>Je(Ye(s),ke(s),(e,t)=>{if(!!t.id)return e[t.id]}),it={selection:ke(p.audio),progress:Xe(p.audio),currentTime:ze(p.audio),playbackRate:Ze(p.audio),volume:et(p.audio),list:tt(p.audio),selectedItem:st(p.audio)},ot={selection:ke(p.video),progress:Xe(p.video),currentTime:ze(p.video),playbackRate:Ze(p.video),volume:et(p.video),list:tt(p.video),selectedItem:st(p.video)};import{createSelector as g}from"reselect";function l(s){return e=>t=>s(t,e)}var Z="HMS-Store:",M=class{static v(e,...t){this.log(k.VERBOSE,e,...t)}static d(...e){this.log(k.DEBUG,...e)}static i(...e){this.log(k.INFO,...e)}static w(...e){this.log(k.WARN,...e)}static e(...e){this.log(k.ERROR,...e)}static time(e){this.log(k.TIME,"[HMSPerformanceTiming]",e)}static timeEnd(e){this.log(k.TIMEEND,"[HMSPerformanceTiming]",e,e)}static cleanUp(){performance.clearMarks(),performance.clearMeasures()}static log(e,...t){if(!(this.level.valueOf()>e.valueOf()))switch(e){case k.VERBOSE:{console.log(Z,...t);break}case k.DEBUG:{console.debug(Z,...t);break}case k.INFO:{console.info(Z,...t);break}case k.WARN:{console.warn(Z,...t);break}case k.ERROR:{console.error(Z,...t);break}case k.TIME:{performance.mark(t[1]);break}case k.TIMEEND:{let i=t[0],o=t[1];try{let r=performance.measure(o,o);this.log(k.DEBUG,i,o,r==null?void 0:r.duration),performance.clearMarks(o),performance.clearMeasures(o)}catch(r){this.log(k.DEBUG,i,o,r)}break}}}};M.level=k.VERBOSE;var Re=(s,e)=>e,ee=(s,e)=>e,rt=(s,e)=>e,wt=(s,e)=>e,I=g([v,Re],(s,e)=>e?s[e]:null),Pe=g([H,ee],(s,e)=>e?s[e]:null),Ut=g([H,ee],(s,e)=>{if(!e)return null;let t=s[e];return t.type==="video"?t:null}),Vt=g([H,ee],(s,e)=>{if(!e)return null;let t=s[e];return t.type==="audio"?t:null}),Kt=g([H,ee],(s,e)=>{if(!e)return null;let t=s[e];return t.type==="audio"&&t.source==="screen"?t:null}),Bt=g([H,ee],(s,e)=>{if(!e)return null;let t=s[e];return t.type==="video"&&t.source==="screen"?t:null}),x=l(I),Qo=l(g([he,wt],(s,e)=>{if(!!s)return e?s[e]:s})),Jo=(...s)=>g([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}}),Yo=l(g(I,s=>s==null?void 0:s.name)),ce=l(Pe),at=l(Ut),Xo=l(Vt),zo=l(Kt),Zo=l(Bt),qt=l((s,e)=>{let t=I(s,e);if(t&&t.videoTrack&&t.videoTrack!=="")return s.tracks[t.videoTrack]}),jt=l((s,e)=>{let t=I(s,e);if(t&&t.audioTrack&&t.audioTrack!=="")return s.tracks[t.audioTrack]}),er=qt,tr=l((s,e)=>{let t=I(s,e);return(t==null?void 0:t.auxiliaryTracks.map(i=>s.tracks[i]))||[]}),nt=(s,e)=>e?s.speakers[e]:null,sr=l(g(nt,s=>(s==null?void 0:s.audioLevel)||0)),$t=(s,e)=>{let t=jt(e)(s);return nt(s,t==null?void 0:t.id)},ir=l(g($t,s=>(s==null?void 0:s.audioLevel)||0)),or=l((s,e)=>{if(e)return s.connectionQualities[e]}),rr=l((s,e)=>{let t=I(s,e);if(t){let i=t==null?void 0:t.auxiliaryTracks.find(o=>Y(s.tracks[o]));return i?s.tracks[i]:void 0}}),ar=l(g(H,I,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return z(o)&&X(o)});return t?s[t]:void 0})),nr=l(g(H,I,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return z(o)&&Y(o)});return t?s[t]:void 0})),cr=l(g(H,I,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return re(o)&&Y(o)});return t?s[t]:void 0})),ct=l(g(H,I,(s,e)=>j(s,e))),Sr=s=>g(ct(s),e=>e.video),St=s=>g(ct(s),e=>e.audio),lr=l((s,e)=>{let t=I(s,e);return G(s,t==null?void 0:t.audioTrack)}),dr=l((s,e)=>{let t=I(s,e);return G(s,t==null?void 0:t.videoTrack)}),lt=l((s,e)=>{if(e&&s.tracks[e])return s.tracks[e].volume===0}),ur=l((s,e)=>{let t=I(s,e);return lt(t==null?void 0:t.audioTrack)(s)}),Mr=l((s,e)=>{let t=St(e)(s);return lt(t==null?void 0:t.id)(s)}),dt=l((s,e)=>{let t=Pe(s,e);if(t){if(t.type!=="audio"){M.w("Please pass audio track here");return}return t.volume}}),pr=l((s,e)=>{let t=I(s,e);return dt(t==null?void 0:t.audioTrack)(s)}),Tr=l((s,e)=>{let t=St(e)(s);return dt(t==null?void 0:t.id)(s)}),mr=l((s,e)=>{let t=Pe(s,e);if(t){if(t.type!=="video"){M.w("Please pass video track here");return}return t.layer}}),ut=g([ae,$,Re],(s,e,t)=>{if(!!t)return s.filter(i=>{var o;return!i.recipientPeer&&!((o=i.recipientRoles)==null?void 0:o.length)||i.sender&&![e,t].includes(i.sender)?!1:[e,t].includes(i.recipientPeer)})}),Mt=g([ae,rt],(s,e)=>{if(!!e)return s.filter(t=>{var i,o;return((i=t.recipientRoles)==null?void 0:i.length)?(o=t.recipientRoles)==null?void 0:o.includes(e):!1})}),Ft=g(ae,s=>s.filter(e=>{var t;return!e.recipientPeer&&!((t=e.recipientRoles)==null?void 0:t.length)})),Gt=g([Mt,rt],s=>s?s.filter(e=>!e.read).length:0),Wt=g([ut,Re],s=>s?s.filter(e=>!e.read).length:0),Hr=g(Ft,s=>s.filter(e=>!e.read).length),gr=l(ut),hr=l(Mt),yr=l(Gt),fr=l(Wt),kr=s=>g([W],e=>e.filter(t=>t.roleName===s)),Rr=s=>g(x(s),e=>{try{return(e==null?void 0:e.metadata)&&e.metadata!==""?JSON.parse(e.metadata):{}}catch(t){return console.error("cannot parse peer metadata",t),{}}}),Pr=s=>g(x(s),e=>e==null?void 0:e.name);import{createSelector as De}from"reselect";var Er=De([v,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}})),Qt=s=>s.roleChangeRequests[0]||null,br=De([Qt,v,V],(s,e,t)=>s?{requestedBy:s.requestedBy?e[s.requestedBy]:void 0,role:t[s.roleName],token:s.token}:null),Cr=De([ne],s=>{var o;let e=!1,t=!1,i=!1;return((o=s==null?void 0:s.publishParams)==null?void 0:o.allowed)&&(e=s.publishParams.allowed.includes("video"),t=s.publishParams.allowed.includes("audio"),i=s.publishParams.allowed.includes("screen")),{video:e,audio:t,screen:i}});import{createSelector as B}from"reselect";var Lr=s=>B([V],e=>e[s]),Jt=B([N,H],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Yt=B([A,H],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Or=s=>B([Jt],e=>e.includes(s)),_r=s=>B([Yt],e=>e.includes(s)),wr=s=>B(W,e=>e.find(s)),Ur=s=>B(W,e=>e.filter(s)),Vr=s=>B(D,e=>e.joinedAt&&Date.now()-e.joinedAt.getTime()<=s);import{HMSAudioTrack as Zt,HMSException as es,HMSRemoteVideoTrack as Tt}from"@100mslive/hms-video";import{HMSRemoteAudioTrack as Xt,HMSRemoteVideoTrack as zt}from"@100mslive/hms-video";function pt(s){return s instanceof Xt||s instanceof zt}var Se=class{constructor(e,t,i,o){this.playlistManager=e;this.syncPlaylistState=i;this.store=o;this.type=t}play(e){return c(this,null,function*(){if(!e){M.w("Please pass id to play");return}yield this.playlistManager.setEnabled(!0,{id:e,type:this.type})})}pause(){return c(this,null,function*(){let e=this.type===p.audio?it:ot,t=this.store.getState(e.selection);if(!t.id){M.w("No item is currently playing to pause");return}yield this.playlistManager.setEnabled(!1,{id:t.id,type:this.type})})}playNext(){return c(this,null,function*(){yield this.playlistManager.playNext(this.type)})}playPrevious(){return c(this,null,function*(){yield this.playlistManager.playPrevious(this.type)})}seek(e){this.playlistManager.seek(e,this.type),this.syncPlaylistState(`seekOn${this.type}Playlist`)}seekTo(e){this.playlistManager.seekTo(e,this.type),this.syncPlaylistState(`seekToOn${this.type}Playlist`)}setVolume(e){this.playlistManager.setVolume(e,this.type),this.syncPlaylistState(`setVolumeOn${this.type}Playlist`)}setList(e){this.playlistManager.setList(e),this.syncPlaylistState(`setListOn${this.type}Playlist`)}stop(){return c(this,null,function*(){yield this.playlistManager.stop(this.type),this.syncPlaylistState(`stop${this.type}Playlist`)})}setIsAutoplayOn(e){this.playlistManager.setIsAutoplayOn(this.type,e)}setPlaybackRate(e){this.playlistManager.setPlaybackRate(this.type,e),this.syncPlaylistState(`set${this.type}PlaybackRate`)}removeItem(e){return c(this,null,function*(){let t=yield this.playlistManager.removeItem(e,this.type);return t&&this.syncPlaylistState(`remove${this.type}PlaylistItem`),t})}clearList(){return c(this,null,function*(){yield this.playlistManager.clearList(this.type),this.syncPlaylistState(`clear${this.type}Playlist`)})}};var le={[U.PEER_JOINED]:T.PEER_JOINED,[U.PEER_LEFT]:T.PEER_LEFT,[U.ROLE_UPDATED]:T.ROLE_UPDATED,[U.NAME_UPDATED]:T.NAME_UPDATED,[U.METADATA_UPDATED]:T.METADATA_UPDATED},de={[C.TRACK_ADDED]:T.TRACK_ADDED,[C.TRACK_REMOVED]:T.TRACK_REMOVED,[C.TRACK_MUTED]:T.TRACK_MUTED,[C.TRACK_UNMUTED]:T.TRACK_UNMUTED,[C.TRACK_DEGRADED]:T.TRACK_DEGRADED,[C.TRACK_RESTORED]:T.TRACK_RESTORED,[C.TRACK_DESCRIPTION_CHANGED]:T.TRACK_DESCRIPTION_CHANGED};var Ie=class{constructor(e,t,i){this.hmsSDKTracks={};this.hmsSDKPeers={};this.isRoomJoinCalled=!1;this.ignoredMessageTypes=[];this.setProgress=({type:e,progress:t})=>{this.setState(i=>{i.playlist[e].progress=t,i.playlist[e].currentTime=this.sdk.getPlaylistManager().getCurrentTime(e)},"playlistProgress")};this.syncPlaylistState=e=>{this.setState(t=>{Object.assign(t.playlist,m.convertPlaylist(this.sdk.getPlaylistManager()))},e)};this.sendPeerUpdateNotification=(e,t)=>{let i=this.store.getState(x(t.peerId)),o=le[e]||"peerUpdate";this.syncRoomState(o),i||(i=this.store.getState(x(t.peerId))),this.hmsNotifications.sendPeerUpdate(e,i)};this.setState=(e,t)=>this.store.namedSetState(e,t);this.store=e,this.sdk=t,this.hmsNotifications=i}refreshDevices(){return c(this,null,function*(){yield this.sdk.refreshDevices()})}unblockAudio(){return c(this,null,function*(){yield this.sdk.getAudioOutput().unblockAutoplay()})}setVolume(e,t){t?this.setTrackVolume(e,t):(this.sdk.getAudioOutput().setVolume(e),this.syncRoomState("setOutputVolume"))}setAudioOutputDevice(e){this.sdk.getAudioOutput().setDevice(e)&&this.setState(i=>{i.settings.audioOutputDeviceId=e},"setAudioOutputDevice")}setPreferredLayer(e,t){let i=this.hmsSDKTracks[e];i?i instanceof Tt?(i.preferLayer(t),this.updateVideoLayer(e,"setPreferredLayer")):M.w(`track ${e} is not an video track`):this.logPossibleInconsistency(`track ${e} not present, unable to set preffer layer`)}preview(e){return c(this,null,function*(){if(this.isRoomJoinCalled){this.logPossibleInconsistency("attempting to call preview after join was called");return}let t=this.store.getState(b);if(t===h.Preview||t===h.Connecting){this.logPossibleInconsistency("attempting to call preview while room is in preview/connecting");return}try{this.setState(i=>{i.room.roomState=h.Connecting},"connecting"),yield this.sdkPreviewWithListeners(e)}catch(i){throw M.e("Cannot show preview. Failed to connect to room - ",i),i}})}join(e){return c(this,null,function*(){if(this.isRoomJoinCalled){this.logPossibleInconsistency("room join is called again");return}try{this.isRoomJoinCalled=!0,this.setState(t=>{t.room.roomState=h.Connecting},"join"),yield this.sdkJoinWithListeners(e)}catch(t){throw this.isRoomJoinCalled=!1,M.e("Failed to connect to room - ",t),t}})}leave(){return c(this,null,function*(){if(!this.store.getState(We)){this.logPossibleInconsistency("room leave is called when no room is connected");return}let t=this.store.getState(b);return this.setState(i=>{i.room.roomState=h.Disconnecting},"leaving"),this.sdk.leave().then(()=>{this.resetState("leave"),M.i("left room")}).catch(i=>{M.e("error in leaving room - ",i),this.setState(o=>{o.room.roomState=t},"revertLeave")})})}setScreenShareEnabled(e,t){return c(this,null,function*(){let i={audioOnly:!1,videoOnly:!1};typeof t=="object"?Object.assign(i,t):typeof t=="boolean"&&(i.audioOnly=t);try{e?yield this.startScreenShare(i):yield this.stopScreenShare()}catch(o){throw this.hmsNotifications.sendError(m.convertException(o)),o}})}addTrack(e,t="regular"){return c(this,null,function*(){yield this.sdk.addTrack(e,t),this.syncRoomState("addTrack")})}removeTrack(e){return c(this,null,function*(){yield this.sdk.removeTrack(e),this.syncRoomState("removeTrack")})}setLocalAudioEnabled(e){return c(this,null,function*(){let t=this.store.getState(A);t&&(yield this.setEnabledTrack(t,e))})}setLocalVideoEnabled(e){return c(this,null,function*(){let t=this.store.getState(N);t&&(yield this.setEnabledTrack(t,e))})}setEnabledTrack(e,t){return c(this,null,function*(){var r;if(((r=this.store.getState().tracks[e])==null?void 0:r.enabled)===t){this.logPossibleInconsistency(`local track[${e}] enabled state - ${t}`);return}this.setState(a=>{a.tracks[e]?a.tracks[e].displayEnabled=t:this.logPossibleInconsistency("track id not found for setEnabled")},"displayEnabled");try{yield this.setEnabledSDKTrack(e,t),this.syncRoomState("setEnabled")}catch(a){throw this.setState(n=>{n.tracks[e].displayEnabled=!t},"rollbackDisplayEnabled"),this.hmsNotifications.sendError(m.convertException(a)),a}let o=t?C.TRACK_UNMUTED:C.TRACK_MUTED;this.hmsNotifications.sendTrackUpdate(o,e)})}setAudioSettings(e){return c(this,null,function*(){let t=this.store.getState(A);t&&(yield this.setSDKLocalAudioTrackSettings(t,e),this.syncRoomState("setAudioSettings"))})}setVideoSettings(e){return c(this,null,function*(){let t=this.store.getState(N);t&&(yield this.setSDKLocalVideoTrackSettings(t,e),this.syncRoomState("setVideoSettings"))})}sendMessage(e){this.sendBroadcastMessage(e)}sendBroadcastMessage(e,t){return c(this,null,function*(){let i=yield this.sdk.sendBroadcastMessage(e,t);this.updateMessageInStore(i,{message:e,type:t})})}sendGroupMessage(e,t,i){return c(this,null,function*(){let o=this.store.getState(V),r=t.map(n=>o[n]),a=yield this.sdk.sendGroupMessage(e,r,i);this.updateMessageInStore(a,{message:e,recipientRoles:t,type:i})})}sendDirectMessage(e,t,i){return c(this,null,function*(){let o=this.hmsSDKPeers[t],r=yield this.sdk.sendDirectMessage(e,o,i);this.updateMessageInStore(r,{message:e,recipientPeer:o.peerId,type:i})})}updateMessageInStore(e,t){if(!e)throw M.w("sendMessage","Failed to send message",t),Error(`sendMessage Failed - ${JSON.stringify(t)}`);let i=m.convertMessage(e);return i.read=!0,i.senderName="You",i.ignored=this.ignoredMessageTypes.includes(i.type),this.putMessageInStore(i),i}setMessageRead(e,t){this.setState(i=>{t?i.messages.byID[t]?i.messages.byID[t].read=e:this.logPossibleInconsistency("no message with id is found"):i.messages.allIDs.forEach(o=>{i.messages.byID[o].read=e})},"setMessageRead")}attachVideo(e,t){return c(this,null,function*(){if(this.localAndVideoUnmuting(e))return new Promise(i=>{let o=this.store.subscribe(r=>c(this,null,function*(){r&&(yield this.attachVideoInternal(e,t),o(),i())}),ye)});yield this.attachVideoInternal(e,t)})}detachVideo(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];(i==null?void 0:i.type)==="video"?(i.removeSink(t),this.updateVideoLayer(e,"detachVideo")):(t&&(t.srcObject=null),this.logPossibleInconsistency("no video track found to remove sink"))})}addPluginToVideoTrack(e,t){return c(this,null,function*(){return this.addRemoveVideoPlugin(e,"add",t)})}addPluginToAudioTrack(e){return c(this,null,function*(){return this.addRemoveAudioPlugin(e,"add")})}validateVideoPluginSupport(e){let t={};if(t.isSupported=!1,!e)return M.w("no plugin passed in for checking support"),t.errMsg="no plugin passed in for checking support",t;let i=this.store.getState(N);if(!i)return M.w("video Track not added to local peer yet"),t.errMsg="call this function only after local peer has video track",t;let o=this.hmsSDKTracks[i];return o?t=o.validatePlugin(e):(M.w(`track ${i} not present, unable to validate plugin`),t.errMsg=`track ${i} not present, unable to validate plugin`),t}validateAudioPluginSupport(e){let t={};if(t.isSupported=!1,!e)return M.w('no plugin passed in for checking support"'),t.errMsg='no plugin passed in for checking support"',t;let i=this.store.getState(A);if(!i)return M.w("audio track not added to local peer yet"),t.errMsg="call this function only after local peer has audio track",t;let o=this.hmsSDKTracks[i];return o?t=o.validatePlugin(e):(M.w(`track ${i} not present, unable to validate plugin`),t.errMsg=`track ${i} not present, unable to validate plugin`),t}removePluginFromVideoTrack(e){return c(this,null,function*(){return this.addRemoveVideoPlugin(e,"remove")})}removePluginFromAudioTrack(e){return c(this,null,function*(){return this.addRemoveAudioPlugin(e,"remove")})}changeRole(e,t,i=!1){return c(this,null,function*(){let o=this.hmsSDKPeers[e];if(!o){this.logPossibleInconsistency(`Unknown peer ID given ${e} for changerole`);return}yield this.sdk.changeRole(o,t,i)})}acceptChangeRole(e){return c(this,null,function*(){let t=e.requestedBy?this.hmsSDKPeers[e.requestedBy.id]:void 0;t||M.w(`peer for which role change is requested no longer available - ${e.requestedBy}`);let i={requestedBy:t,role:e.role,token:e.token};yield this.sdk.acceptChangeRole(i),this.removeRoleChangeRequest(e)})}initAppData(e){this.setState(t=>{t.appData=e},"initAppData")}setAppData(e,t,i){let o=(t==null?void 0:t.constructor.name)==="Object";this.setState(r=>{if(r.appData)i&&o?Object.assign(r.appData[e],t):r.appData[e]=t;else{let a={[e]:t};r.appData=a}},`setAppData-${e}`)}rejectChangeRole(e){this.removeRoleChangeRequest(e)}endRoom(e,t){return c(this,null,function*(){let i=this.store.getState(Qe);if(!(i==null?void 0:i.endRoom)){M.w("You are not allowed to perform this action - endRoom");return}let o=this.store.getState(b);this.setState(r=>{r.room.roomState=h.Disconnecting},"endingRoom");try{yield this.sdk.endRoom(e,t),this.resetState("endRoom")}catch(r){M.e("error in ending room - ",r),this.setState(a=>{a.room.roomState=o},"revertEndRoom")}})}removePeer(e,t){return c(this,null,function*(){let i=this.hmsSDKPeers[e];if(i&&!i.isLocal)yield this.sdk.removePeer(i,t);else{this.logPossibleInconsistency(`No remote peer found for peerID - ${e}`);return}})}startRTMPOrRecording(e){return c(this,null,function*(){yield this.sdk.startRTMPOrRecording(e)})}stopRTMPAndRecording(){return c(this,null,function*(){yield this.sdk.stopRTMPAndRecording()})}startHLSStreaming(e){return c(this,null,function*(){yield this.sdk.startHLSStreaming(e)})}stopHLSStreaming(e){return c(this,null,function*(){yield this.sdk.stopHLSStreaming(e)})}sendHLSTimedMetadata(e){return c(this,null,function*(){yield this.sdk.sendHLSTimedMetadata(e)})}changeName(e){return c(this,null,function*(){yield this.sdk.changeName(e)})}changeMetadata(e){return c(this,null,function*(){typeof e!="string"&&(e=JSON.stringify(e)),yield this.sdk.changeMetadata(e)})}setSessionMetadata(i){return c(this,arguments,function*(e,t={localOnly:!1}){t.localOnly||(yield this.sdk.setSessionMetadata(e)),this.setState(o=>{o.sessionMetadata=e},`setSessionMetadata${t.localOnly?"LocalOnly":""}`)})}populateSessionMetadata(){return c(this,null,function*(){let e=yield this.sdk.getSessionMetadata();this.setState(t=>{t.sessionMetadata=e},"populateSessionMetadata")})}setRemoteTrackEnabled(e,t){return c(this,null,function*(){if(typeof e=="string"){let i=this.hmsSDKTracks[e];i&&pt(i)?yield this.sdk.changeTrackState(i,t):this.logPossibleInconsistency(`No remote track with ID ${e} found for change track state`)}else Array.isArray(e)&&e.forEach(i=>this.setRemoteTrackEnabled(i,t))})}setRemoteTracksEnabled(e){return c(this,null,function*(){let t={enabled:e.enabled,type:e.type,source:e.source};if(e.roles){let i=this.store.getState(V);t.roles=e.roles.map(o=>i[o])}yield this.sdk.changeMultiTrackState(t)})}setLogLevel(e){M.level=e,this.sdk.setLogLevel(e)}ignoreMessageTypes(e,t=!1){if(t)this.ignoredMessageTypes=e;else for(let i of e)this.ignoredMessageTypes.includes(i)||this.ignoredMessageTypes.push(i)}resetState(e="resetState"){this.isRoomJoinCalled=!1,this.hmsSDKTracks={},M.cleanUp(),this.setState(t=>{Object.assign(t,ie())},e)}sdkJoinWithListeners(e){return c(this,null,function*(){yield this.sdk.join(e,{onJoin:this.onJoin.bind(this),onRoomUpdate:this.onRoomUpdate.bind(this),onPeerUpdate:this.onPeerUpdate.bind(this),onTrackUpdate:this.onTrackUpdate.bind(this),onMessageReceived:this.onMessageReceived.bind(this),onError:this.onError.bind(this),onReconnected:this.onReconnected.bind(this),onReconnecting:this.onReconnecting.bind(this),onRoleChangeRequest:this.onRoleChangeRequest.bind(this),onRoleUpdate:this.onRoleUpdate.bind(this),onDeviceChange:this.onDeviceChange.bind(this),onChangeTrackStateRequest:this.onChangeTrackStateRequest.bind(this),onChangeMultiTrackStateRequest:this.onChangeMultiTrackStateRequest.bind(this),onRemovedFromRoom:this.onRemovedFromRoom.bind(this),onNetworkQuality:this.onNetworkQuality.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)}),this.sdk.addConnectionQualityListener({onConnectionQualityUpdate:this.onConnectionQualityUpdate.bind(this)})})}onRemovedFromRoom(e){var o;let t=this.store.getState(x((o=e.requestedBy)==null?void 0:o.peerId));this.hmsNotifications.sendLeaveRoom(F(_({},e),{requestedBy:t||void 0}));let i=e.roomEnded||!t?"roomEnded":"removedFromRoom";M.i(`resetting state after peer removed ${i}`,e),this.resetState(i)}onDeviceChange(e){let t=e.devices;if(!t)return;let i=this.store.getState(E);if(this.setState(o=>{w(o.devices.audioInput,t.audioInput)||(o.devices.audioInput=t.audioInput),w(o.devices.videoInput,t.videoInput)||(o.devices.videoInput=t.videoInput),w(o.devices.audioOutput,t.audioOutput)||(o.devices.audioOutput=t.audioOutput),this.hmsSDKPeers[i==null?void 0:i.id]&&Object.assign(o.settings,this.getMediaSettings(this.hmsSDKPeers[i==null?void 0:i.id]))},"deviceChange"),e.selection){let o=m.convertDeviceChangeUpdate(e);this.hmsNotifications.sendDeviceChange(o)}}sdkPreviewWithListeners(e){return c(this,null,function*(){yield this.sdk.preview(e,{onPreview:this.onPreview.bind(this),onError:this.onError.bind(this),onReconnected:this.onReconnected.bind(this),onReconnecting:this.onReconnecting.bind(this),onDeviceChange:this.onDeviceChange.bind(this),onRoomUpdate:this.onRoomUpdate.bind(this),onPeerUpdate:this.onPeerUpdate.bind(this),onNetworkQuality:this.onNetworkQuality.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)})})}onNetworkQuality(e){this.setState(t=>{var o;let i=t.room.localPeer||((o=this.sdk.getLocalPeer())==null?void 0:o.peerId);i&&(t.connectionQualities[i]={peerID:i,downlinkQuality:e})},"ConnectionQuality")}startScreenShare(e){return c(this,null,function*(){this.store.getState(fe)?this.logPossibleInconsistency("start screenshare is called while it's on"):(yield this.sdk.startScreenShare(()=>this.syncRoomState("screenshareStopped"),e),this.syncRoomState("startScreenShare"))})}stopScreenShare(){return c(this,null,function*(){this.store.getState(fe)?(yield this.sdk.stopScreenShare(),this.syncRoomState("stopScreenShare")):this.logPossibleInconsistency("stop screenshare is called while it's not on")})}attachVideoInternal(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i&&i.type==="video"?(i.addSink(t),this.updateVideoLayer(e,"attachVideo")):this.logPossibleInconsistency("no video track found to add sink")})}syncRoomState(e){e=`${e}_fullSync`,M.time(`store-sync-${e}`);let t={},i=[],o={},r={},a={},n=this.sdk.getPeers();for(let f of n){let O=m.convertPeer(f);t[O.id]=O,i.push(O.id),this.hmsSDKPeers[O.id]=f;let J=[f.audioTrack,f.videoTrack,...f.auxiliaryTracks];for(let se of J){if(!se)continue;let Ae=m.convertTrack(se);o[Ae.id]=Ae,r[se.trackId]=se}O.isLocal&&Object.assign(a,this.getMediaSettings(f))}let u=this.sdk.getRecordingState(),R=this.sdk.getRTMPState(),q=this.sdk.getHLSState();this.setState(f=>{f.room.peers=i;let O=f.peers,J=f.tracks;Oe(O,t),_e(J,o),Object.assign(f.settings,a),this.hmsSDKTracks=r,Object.assign(f.roles,m.convertRoles(this.sdk.getRoles())),Object.assign(f.playlist,m.convertPlaylist(this.sdk.getPlaylistManager())),Object.assign(f.room,m.convertRecordingStreamingState(u,R,q))},e),M.timeEnd(`store-sync-${e}`)}onPreview(e){this.setState(t=>{Object.assign(t.room,m.convertRoom(e)),t.room.roomState=h.Preview},"previewStart"),this.syncRoomState("previewSync")}onJoin(e){let t=this.sdk.getPlaylistManager();this.audioPlaylist=new Se(t,p.audio,this.syncPlaylistState.bind(this),this.store),this.videoPlaylist=new Se(t,p.video,this.syncRoomState.bind(this),this.store),this.syncRoomState("joinSync"),this.setState(i=>{Object.assign(i.room,m.convertRoom(e)),i.room.isConnected=!0,i.room.roomState=h.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(m.convertPlaylistItem(t,i)),this.syncPlaylistState(`${i.type}PlaylistItemEnded`)})}onRoomUpdate(e,t){this.setState(i=>{Object.assign(i.room,m.convertRoom(t))},e)}onPeerUpdate(e,t){if(![U.BECAME_DOMINANT_SPEAKER,U.RESIGNED_DOMINANT_SPEAKER].includes(e)){if(Array.isArray(t)){this.syncRoomState("peersJoined");let i=[];for(let o of t){let r=this.store.getState(x(o.peerId));r&&i.push(r)}this.hmsNotifications.sendPeerList(i);return}this.sendPeerUpdateNotification(e,t)}}onTrackUpdate(e,t,i){if(e===C.TRACK_REMOVED)this.hmsNotifications.sendTrackUpdate(e,t.trackId),this.handleTrackRemove(t,i);else{let o=de[e]||"trackUpdate";this.syncRoomState(o),this.hmsNotifications.sendTrackUpdate(e,t.trackId)}}onMessageReceived(e){let t=m.convertMessage(e);t.read=!1,t.ignored=this.ignoredMessageTypes.includes(t.type),this.putMessageInStore(t),this.hmsNotifications.sendMessageReceived(t)}putMessageInStore(e){e.ignored||this.setState(t=>{e.id=String(this.store.getState(Ge)+1),t.messages.byID[e.id]=e,t.messages.allIDs.push(e.id)},"newMessage")}onAudioLevelUpdate(e){this.setState(t=>{let i={};e.forEach(r=>{if(!r.track||!r.peer)return;let a=r.track.trackId;i[a]=r.audioLevel,t.speakers[a]||(t.speakers[a]={audioLevel:r.audioLevel,peerID:r.peer.peerId,trackID:a})});let o=Object.entries(t.speakers);for(let[r,a]of o)a.audioLevel=i[r]||0,a.audioLevel===0&&delete t.speakers[r]},"audioLevel")}onConnectionQualityUpdate(e){this.setState(t=>{let i=new Set;e.forEach(r=>{let a=r.peerID;!a||(i.add(a),t.connectionQualities[a]?Object.assign(t.connectionQualities[a],r):t.connectionQualities[a]=r)});let o=Object.keys(t.connectionQualities);for(let r of o)i.has(r)||delete t.connectionQualities[r]},"connectionQuality")}onChangeTrackStateRequest(e){var r;let t=this.store.getState(x((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(x((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?h.Connected:h.Preview},"reconnected")}onReconnecting(e){let t=m.convertException(e);M.e("Reconnection: received error from sdk",t),this.hmsNotifications.sendReconnecting(t),this.setState(i=>{i.room.roomState=h.Reconnecting,i.errors.push(t)},"reconnecting")}onError(e){let t=m.convertException(e);t.isTerminal?(this.leave().then(()=>M.e("error from SDK, left room.")),this.setState(i=>{i.room.roomState=h.Failed,i.errors.push(t)},"errorTerminal")):this.store.getState().errors.length<50&&this.setState(o=>{o.errors.push(t)},"error"),this.syncRoomState("errorSync"),this.hmsNotifications.sendError(t),M.e("received error from sdk",t instanceof es?`${t}`:t)}updateVideoLayer(e,t){let i=this.hmsSDKTracks[e];if(i&&i instanceof Tt){let o=this.store.getState(at(e));((o==null?void 0:o.layer)!==i.getSimulcastLayer()||(o==null?void 0:o.degraded)!==i.degraded)&&this.setState(a=>{let n=a.tracks[e];n.layer=i.getSimulcastLayer(),n.degraded=i.degraded},t)}}handleTrackRemove(e,t){this.setState(i=>{let o=i.peers[t.peerId],r=i.tracks,a=e.trackId;if(this.isSameStoreSDKTrack(a,o==null?void 0:o.audioTrack))o==null||delete o.audioTrack;else if(this.isSameStoreSDKTrack(a,o==null?void 0:o.videoTrack))o==null||delete o.videoTrack;else{let n=o==null?void 0:o.auxiliaryTracks.indexOf(a);n>-1&&this.isSameStoreSDKTrack(a,o==null?void 0:o.auxiliaryTracks[n])&&(o==null||o.auxiliaryTracks.splice(n,1))}delete r[a],delete this.hmsSDKTracks[a]},"trackRemoved")}setEnabledSDKTrack(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setEnabled(t):this.logPossibleInconsistency(`track ${e} not present, unable to enabled/disable`)})}setSDKLocalVideoTrackSettings(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setSettings(t):this.logPossibleInconsistency(`local track ${e} not present, unable to set settings`)})}setSDKLocalAudioTrackSettings(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i?yield i.setSettings(t):this.logPossibleInconsistency(`local track ${e} not present, unable to set settings`)})}getMediaSettings(e){var r;let t=this.store.getState(je),i=e.audioTrack,o=e.videoTrack;return{audioInputDeviceId:(i==null?void 0:i.settings.deviceId)||t.audioInputDeviceId,videoInputDeviceId:(o==null?void 0:o.settings.deviceId)||t.videoInputDeviceId,audioOutputDeviceId:(r=this.sdk.getAudioOutput().getDevice())==null?void 0:r.deviceId}}setTrackVolume(e,t){let i=this.hmsSDKTracks[t];i?i instanceof Zt?(i.setVolume(e),this.setState(o=>{let r=o.tracks[t];r&&r.type==="audio"&&(r.volume=e)},"trackVolume")):M.w(`track ${t} is not an audio track`):this.logPossibleInconsistency(`track ${t} not present, unable to set volume`)}localAndVideoUnmuting(e){if(this.store.getState(E).videoTrack!==e)return!1;let i=this.store.getState(Fe),o=this.store.getState(ye);return i&&!o}logPossibleInconsistency(e){M.w("possible inconsistency detected - ",e)}addRemoveVideoPlugin(e,t,i){return c(this,null,function*(){if(!e){M.w("Invalid plugin received in store");return}let o=this.store.getState(N);if(o){let r=this.hmsSDKTracks[o];r?(t==="add"?yield r.addPlugin(e,i):t==="remove"&&(yield r.removePlugin(e)),this.syncRoomState(`${t}VideoPlugin`)):this.logPossibleInconsistency(`track ${o} not present, unable to remove plugin`)}})}addRemoveAudioPlugin(e,t){return c(this,null,function*(){if(!e){M.w("Invalid plugin received in store");return}let i=this.store.getState(A);if(i){let o=this.hmsSDKTracks[i];o?(t==="add"?yield o.addPlugin(e):t==="remove"&&(yield o.removePlugin(e)),this.syncRoomState(`${t}AudioPlugin`)):this.logPossibleInconsistency(`track ${i} not present, unable to remove plugin`)}})}isSameStoreSDKTrack(e,t){var i;return t?((i=this.hmsSDKTracks[t])==null?void 0:i.trackId)===e:!1}onRoleChangeRequest(e){this.setState(t=>{t.roleChangeRequests.length===0&&t.roleChangeRequests.push(m.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($e).find(i=>this.hmsSDKTracks[i].trackId===e.trackId)}};import{EventEmitter2 as ts}from"eventemitter2";var ve="hmsNotification",Ee=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(ve,i),()=>{this.eventEmitter.removeListener(ve,i)}};this.store=e,this.eventEmitter=new ts({maxListeners:Object.keys(T).length})}sendPlaylistTrackEnded(e){let t=this.createNotification(T.PLAYLIST_TRACK_ENDED,e,P.INFO);this.emitEvent(t)}sendDeviceChange(e){var i;let t=this.createNotification(T.DEVICE_CHANGE_UPDATE,e,e.error?P.ERROR:P.INFO,`Selected ${e.type} device - ${(i=e.selection)==null?void 0:i.label}`);this.emitEvent(t)}sendLeaveRoom(e){var o;let t=(o=e.requestedBy)==null?void 0:o.name,i=this.createNotification(e.roomEnded||!t?T.ROOM_ENDED:T.REMOVED_FROM_ROOM,e,P.INFO,`${e.roomEnded?"Room ended":"Removed from room"} ${t?`by ${t}`:""}`);this.emitEvent(i)}sendPeerList(e){let t=this.createNotification(T.PEER_LIST,e,P.INFO);this.emitEvent(t)}sendPeerUpdate(e,t){let i=this.store.getState(x(t==null?void 0:t.id))||t,o=le[e];if(o){let r=this.createNotification(o,i,P.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,P.INFO);this.emitEvent(r)}}sendMessageReceived(e){let t=this.createNotification(T.NEW_MESSAGE,e,P.INFO);this.emitEvent(t)}sendError(e){let t=this.createNotification(T.ERROR,e,P.ERROR);this.emitEvent(t)}sendReconnecting(e){let t=this.createNotification(T.RECONNECTING,e,P.ERROR);this.emitEvent(t)}sendReconnected(){let e=this.createNotification(T.RECONNECTED,null,P.INFO);this.emitEvent(e)}sendChangeTrackStateRequest(e){let t=this.createNotification(T.CHANGE_TRACK_STATE_REQUEST,e,P.INFO);this.emitEvent(t)}sendChangeMultiTrackStateRequest(e){let t=this.createNotification(T.CHANGE_MULTI_TRACK_STATE_REQUEST,e,P.INFO);this.emitEvent(t)}emitEvent(e){this.eventEmitter.emit(ve,e)}createNotification(e,t,i,o=""){return this.id++,{id:this.id,type:e,message:o,data:t,severity:i}}};import{isBrowser as ss}from"@100mslive/hms-video";var ue=s=>ss?`${s} ${document.title}`:s;var mt=(s,e,t)=>{let i;t.getState(b)===h.Connected&&(i=Ht(s,e,t)),t.subscribe(o=>{[h.Connected,h.Reconnecting].includes(o)?i||(i=Ht(s,e,t)):i&&(rs(e),i())},b)},Ht=(s,e,t)=>{var r,a;let i=is(t,e);(r=s.getWebrtcInternals())==null||r.start();let o=(a=s.getWebrtcInternals())==null?void 0:a.onStatsChange(n=>os(e,n,t));return()=>{i(),o&&o()}},is=(s,e)=>{let t,i,o;return s.getState($)?e.namedSetState(r=>{r.localPeer.id=s.getState($)},"localpeer-id"):t=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.id=r},"localpeer-id")},$),s.getState(N)?e.namedSetState(r=>{r.localPeer.videoTrack=s.getState(N)},"localpeer-videotrack-id"):i=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.videoTrack=r},"localpeer-videotrack-id")},N),s.getState(A)?e.namedSetState(r=>{r.localPeer.videoTrack=s.getState(A)},"localpeer-audiotrack-id"):o=s.subscribe(r=>{r&&e.namedSetState(a=>{a.localPeer.videoTrack=r},"localpeer-audiotrack-id")},A),()=>{t==null||t(),i==null||i(),o==null||o()}},os=(s,e,t)=>{let i=t.getState(H);s.namedSetState(o=>{let r={},a=Object.keys(i);for(let R of a){let q=e.getTrackStats(R);q&&(r[R]=q)}pe(o.trackStats,r);let u={[t.getState($)]:e.getLocalPeerStats()};pe(o.peerStats,u)},"webrtc-stats")},rs=(s,e="resetState")=>{s.namedSetState(t=>{Object.assign(t,oe())},e)};var Me=class{constructor(e,t){this.hmsStore=e;this.sdk=t;this.store=L.createNewHMSStore(ue("HMSStatsStore"),oe),this.getState=this.store.getState,this.subscribe=this.store.subscribe,this.getPublishPeerConnection=()=>new Promise(i=>{var o,r;this.hmsStore.getState(b)==="Connected"?i((r=(o=this.sdk)==null?void 0:o.getWebrtcInternals())==null?void 0:r.getPublishPeerConnection()):this.hmsStore.subscribe(a=>{var n,u;a==="Connected"&&i((u=(n=this.sdk)==null?void 0:n.getWebrtcInternals())==null?void 0:u.getPublishPeerConnection())},b)}),this.getSubscribePeerConnection=()=>new Promise(i=>{var o,r;this.hmsStore.getState(b)==="Connected"?i((r=(o=this.sdk)==null?void 0:o.getWebrtcInternals())==null?void 0:r.getSubscribePeerConnection()):this.hmsStore.subscribe(a=>{var n,u;a==="Connected"&&i((u=(n=this.sdk)==null?void 0:n.getWebrtcInternals())==null?void 0:u.getSubscribePeerConnection())},b)}),!!this.sdk&&mt(this.sdk,this.store,this.hmsStore)}};import{createSelector as y}from"reselect";var as=s=>s.localPeer.id,ns=s=>s.localPeer.audioTrack,cs=s=>s.localPeer.videoTrack,Ss=(s,e)=>e,ls=(s,e)=>e,be=s=>s.trackStats,gt=s=>s.peerStats,K=y([gt,as],(s,e)=>s[e]),ds=y(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.packetsLost}),us=y(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.jitter}),Ms=y(K,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bitrate}),ps=y(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bitrate}),Ts=y(K,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.availableOutgoingBitrate}),ms=y(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.availableIncomingBitrate}),Hs=y(K,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bytesSent}),gs=y(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bytesReceived}),hs=y([gt,Ss],(s,e)=>e?s[e]:void 0),Q=y([be,ls],(s,e)=>e?s[e]:void 0),ys=l(hs),fs=l(Q),ks=l(y(Q,s=>s==null?void 0:s.bitrate)),Rs=l(y(Q,s=>s==null?void 0:s.bytesReceived)),Ps=l(y(Q,s=>s==null?void 0:s.framesPerSecond)),Ds=l(y(Q,s=>s==null?void 0:s.jitter)),Is=l(y(Q,s=>s==null?void 0:s.packetsLost)),Ce=y([be,ns],(s,e)=>e?s[e]:void 0),te=y([be,cs],(s,e)=>e?s[e]:void 0),vs=y(Ce,s=>s==null?void 0:s.bitrate),Es=y(te,s=>s==null?void 0:s.bitrate),bs=y(Ce,s=>s==null?void 0:s.bytesSent),Cs=y(te,s=>s==null?void 0:s.bytesSent),As=y(te,s=>s==null?void 0:s.framesPerSecond),Ns=y(te,s=>s==null?void 0:s.qualityLimitationReason),xs={localPeerStats:K,packetsLost:ds,jitter:us,publishBitrate:Ms,subscribeBitrate:ps,availablePublishBitrate:Ts,availableSubscribeBitrate:ms,totalBytesSent:Hs,totalBytesReceived:gs,peerStatsByID:ys,trackStatsByID:fs,bitrateByTrackID:ks,bytesReceivedByTrackID:Rs,framerateByTrackID:Ps,jitterByTrackID:Ds,packetsLostByTrackID:Is,localAudioTrackStats:Ce,localVideoTrackStats:te,localAudioTrackBitrate:vs,localVideoTrackBitrate:Es,localAudioTrackBytesSent:bs,localVideoTrackBytesSent:Cs,localVideoTrackFramerate:As,localVideoTrackQualityLimitationReason:Ns};var L=class{constructor(e,t,i){this.getStats=()=>(this.stats||(this.stats=new Me(this.store,this.sdk)),this.stats);e?this.store=e:this.store=L.createNewHMSStore(ue("HMSStore"),ie),i?this.notifications=i:this.notifications=new Ee(this.store),t?this.actions=t:(this.sdk=new ws,this.actions=new Ie(this.store,this.sdk,this.notifications)),this.initialTriggerOnSubscribe=!1,Us&&(window.__hms=this)}triggerOnSubscribe(){this.initialTriggerOnSubscribe||(L.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=Os(()=>t()),o=i.setState;i.setState=n=>{let u=typeof n=="function"?Ls(n):n;o(u)};let r=i.getState;i.getState=n=>{if(n){let u=n.name||"byIDSelector";window.selectorsCount||(window.selectorsCount={}),window.selectorsCount[u]=(window.selectorsCount[u]||0)+1;let R=performance.now(),q=n(r()),f=performance.now()-R;return f>1&&(window.expensiveSelectors=window.expensiveSelectors||new Map,window.expensiveSelectors.set(u,f)),q}return r()},L.compareWithShallowCheckInSubscribe(i);let a=L.setUpDevtools(i,e);return F(_({},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||_s,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(L.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(L.devtoolsSubscribe(o,e,r)),o.send("setUpStore",e.getState()),(a,n)=>{r(a);let u=n||`${o.prefix}action`;o.send(u,e.getState())}}static devtoolsOptions(e){return{name:e,actionsBlacklist:["audioLevel","playlistProgress","connectionQuality"]}}static devtoolsSubscribe(e,t,i){return o=>{var r,a,n,u;if(o.type==="DISPATCH"&&o.state)["JUMP_TO_ACTION","JUMP_TO_STATE"].includes(o.payload.type)?i(JSON.parse(o.state)):t.setState(JSON.parse(o.state));else if(o.type==="DISPATCH"&&((r=o.payload)==null?void 0:r.type)==="COMMIT")e.init(t.getState());else if(o.type==="DISPATCH"&&((a=o.payload)==null?void 0:a.type)==="IMPORT_STATE"){let R=(n=o.payload.nextLiftedState)==null?void 0:n.actionsById;(((u=o.payload.nextLiftedState)==null?void 0:u.computedStates)||[]).forEach(({state:f},O)=>{let J=R[O]||`${e.prefix}setState`;O===0?e.init(f):(i(f),e.send(J,t.getState()))})}}}};export{Pt as HMSAudioPluginType,k as HMSLogLevel,Le as HMSMessageType,P as HMSNotificationSeverity,T as HMSNotificationTypes,p as HMSPlaylistType,L as HMSReactiveStore,h as HMSRoomState,Me as HMSStats,It as HMSVideoPluginCanvasContextType,Dt as HMSVideoPluginType,oe as createDefaultStatsStore,ie as createDefaultStoreState,vt as parsedUserAgent,Qo as selectAppData,Jo as selectAppDataByPath,it as selectAudioPlaylist,cr as selectAudioPlaylistTrackByPeerID,Xo as selectAudioTrackByID,jt as selectAudioTrackByPeerID,dt as selectAudioTrackVolume,pr as selectAudioVolumeByPeerID,rr as selectAuxiliaryAudioByPeerID,tr as selectAuxiliaryTracksByPeerID,Io as selectAvailableRoleNames,Ft as selectBroadcastMessages,Hr as selectBroadcastMessagesUnreadCount,er as selectCameraStreamByPeerID,lo as selectConnectionQualities,or as selectConnectionQualityByPeerID,Ro as selectDegradedTracks,So as selectDevices,Vr as selectDidIJoinWithin,mo as selectDominantSpeaker,he as selectFullAppData,Co as selectHLSState,ae as selectHMSMessages,Ge as selectHMSMessagesCount,xs as selectHMSStats,Cr as selectIsAllowedToPublish,vo as selectIsAllowedToSubscribe,lt as selectIsAudioLocallyMuted,xt as selectIsConnectedToRoom,Do as selectIsInPreview,Ho as selectIsLocalAudioEnabled,_r as selectIsLocalAudioPluginPresent,fe as selectIsLocalScreenShared,Fe as selectIsLocalVideoDisplayEnabled,ye as selectIsLocalVideoEnabled,Or as selectIsLocalVideoPluginPresent,ur as selectIsLocallyMutedByPeerID,lr as selectIsPeerAudioEnabled,dr as selectIsPeerVideoEnabled,Mr as selectIsScreenShareLocallyMutedByPeerID,go as selectIsSomeoneScreenSharing,A as selectLocalAudioTrackID,je as selectLocalMediaSettings,E as selectLocalPeer,$ as selectLocalPeerID,Mo as selectLocalPeerName,ne as selectLocalPeerRole,po as selectLocalPeerRoleName,$e as selectLocalTrackIDs,N as selectLocalVideoTrackID,qe as selectMessageIDsInOrder,gr as selectMessagesByPeerID,hr as selectMessagesByRole,Be as selectMessagesMap,fr as selectMessagesUnreadCountByPeerID,yr as selectMessagesUnreadCountByRole,ir as selectPeerAudioByID,wr as selectPeerByCondition,x as selectPeerByID,uo as selectPeerCount,Rr as selectPeerMetadata,Pr as selectPeerName,Yo as selectPeerNameByID,_t as selectPeerScreenSharing,ho as selectPeerSharingAudio,ko as selectPeerSharingAudioPlaylist,fo as selectPeerSharingVideoPlaylist,W as selectPeers,Ur as selectPeersByCondition,kr as selectPeersByRole,v as selectPeersMap,yo as selectPeersScreenSharing,Er as selectPeersWithAudioStatus,Qe as selectPermissions,bo as selectRTMPState,Eo as selectRecordingState,To as selectRemotePeers,Lr as selectRoleByRoleName,br as selectRoleChangeRequest,V as selectRolesMap,D as selectRoom,co as selectRoomID,No as selectRoomStartTime,We as selectRoomStarted,b as selectRoomState,zo as selectScreenAudioTrackByID,St as selectScreenShareAudioByPeerID,Sr as selectScreenShareByPeerID,ct as selectScreenSharesByPeerId,Zo as selectScreenVideoTrackByID,Tr as selectScreenshareAudioVolumeByPeerID,Ao as selectSessionId,xo as selectSessionMetadata,mr as selectSimulcastLayerByTrack,Nt as selectSpeakers,sr as selectTrackAudioByID,ce as selectTrackByID,H as selectTracksMap,Po as selectUnreadHMSMessagesCount,ot as selectVideoPlaylist,nr as selectVideoPlaylistAudioTrackByPeerID,ar as selectVideoPlaylistVideoTrackByPeerID,at as selectVideoTrackByID,qt as selectVideoTrackByPeerID};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|