@100mslive/hms-video-store 0.2.84 → 0.2.86-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/storeName.d.ts +1 -0
- package/dist/core/IHMSStore.d.ts +31 -9
- package/dist/core/hmsSDKStore/HMSReactiveStore.d.ts +18 -2
- package/dist/core/hmsSDKStore/adapter.d.ts +2 -1
- package/dist/core/hmsSDKStore/common/presence.d.ts +5 -0
- package/dist/core/hmsSDKStore/sdkTypes.d.ts +2 -2
- package/dist/core/hmsSDKStore/sdkUtils/storeMergeUtils.d.ts +2 -1
- package/dist/core/index.d.ts +2 -1
- package/dist/core/schema/index.d.ts +1 -0
- package/dist/core/schema/schema.d.ts +13 -0
- package/dist/core/schema/webrtc-stats.d.ts +34 -0
- package/dist/core/selectors/common.d.ts +16 -0
- package/dist/core/selectors/selectorsByID.d.ts +27 -33
- package/dist/core/webrtc-stats/HMSStats.d.ts +13 -0
- package/dist/core/webrtc-stats/index.d.ts +2 -0
- package/dist/core/webrtc-stats/selectors.d.ts +73 -0
- package/dist/core/webrtc-stats/webrtc-stats-store.d.ts +3 -0
- package/dist/hms-video-store.cjs.js +1 -1
- package/dist/hms-video-store.esm.js +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const storeNameWithTabTitle: (storeName: string) => string;
|
package/dist/core/IHMSStore.d.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { HMSStore } from './schema';
|
|
2
|
-
import { StateSelector, StoreApi, Subscribe } from 'zustand/vanilla';
|
|
1
|
+
import { HMSStore, HMSStatsStore } from './schema';
|
|
2
|
+
import { StateSelector, StoreApi, Subscribe, State } from 'zustand/vanilla';
|
|
3
3
|
import { NamedSetState } from './hmsSDKStore/internalTypes';
|
|
4
4
|
/**
|
|
5
5
|
* HMS Reactive store can be used to subscribe to different parts of the store using selectors
|
|
6
6
|
* and get a callback when the value changes.
|
|
7
7
|
*/
|
|
8
|
-
export interface
|
|
8
|
+
export interface IStore<T extends State> extends StoreApi<T> {
|
|
9
9
|
/**
|
|
10
10
|
* Get a part of store using a selector which is true at the current point of time.
|
|
11
11
|
*
|
|
12
12
|
* Usage: `store.getState(selectDominantSpeaker);`
|
|
13
13
|
*/
|
|
14
|
-
getState: GetState<
|
|
14
|
+
getState: GetState<T>;
|
|
15
15
|
/**
|
|
16
16
|
* Subscribe to a part of store using selectors, whenever the subscribed part changes, the callback
|
|
17
17
|
* is called with both the latest and previous value of the changed part.
|
|
@@ -24,18 +24,18 @@ export interface IHMSStore extends StoreApi<HMSStore> {
|
|
|
24
24
|
* store.subscribe(onSpeakerUpdate, selectDominantSpeaker);
|
|
25
25
|
* ```
|
|
26
26
|
*/
|
|
27
|
-
subscribe: Subscribe<
|
|
27
|
+
subscribe: Subscribe<T>;
|
|
28
28
|
/**
|
|
29
29
|
* @private
|
|
30
30
|
* @internal
|
|
31
31
|
* @privateRemarks
|
|
32
32
|
* wraps setState to take an additional action name parameter which can show up in redux devtools.
|
|
33
33
|
*/
|
|
34
|
-
namedSetState: NamedSetState<
|
|
34
|
+
namedSetState: NamedSetState<T>;
|
|
35
35
|
}
|
|
36
|
-
export interface GetState<T> {
|
|
36
|
+
export interface GetState<T extends State> {
|
|
37
37
|
(): T;
|
|
38
|
-
<StateSlice>(selector?: StateSelector<
|
|
38
|
+
<StateSlice>(selector?: StateSelector<T, StateSlice>): StateSlice;
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
41
|
* HMS store can be used to:
|
|
@@ -51,4 +51,26 @@ export interface GetState<T> {
|
|
|
51
51
|
*
|
|
52
52
|
* @category Core
|
|
53
53
|
*/
|
|
54
|
-
export declare type
|
|
54
|
+
export declare type IStoreReadOnly<T extends State> = Omit<IStore<T>, 'setState' | 'namedSetState' | 'destroy'>;
|
|
55
|
+
/**
|
|
56
|
+
* HMS Reactive store can be used to subscribe to different parts of the store using selectors
|
|
57
|
+
* and get a callback when the value changes.
|
|
58
|
+
*/
|
|
59
|
+
export declare type IHMSStore = IStore<HMSStore>;
|
|
60
|
+
/**
|
|
61
|
+
* HMS store can be used to:
|
|
62
|
+
* - Get a part of the current store or state(getState)
|
|
63
|
+
* - Subscribe to different parts of the store using selectors and execute a callback when the value changes.
|
|
64
|
+
*
|
|
65
|
+
* Both getState and subscribe use selectors to query a part the store.
|
|
66
|
+
*
|
|
67
|
+
*
|
|
68
|
+
* Selectors are functions with HMSStore as an argument and returns a part of the store.
|
|
69
|
+
*
|
|
70
|
+
* **StoreSelector** is a type alias for this type of function.
|
|
71
|
+
*
|
|
72
|
+
* @category Core
|
|
73
|
+
*/
|
|
74
|
+
export declare type IHMSStoreReadOnly = IStoreReadOnly<HMSStore>;
|
|
75
|
+
export declare type IHMSStatsStore = IStore<HMSStatsStore>;
|
|
76
|
+
export declare type IHMSStatsStoreReadOnly = IStoreReadOnly<HMSStatsStore>;
|
|
@@ -1,11 +1,22 @@
|
|
|
1
|
+
import { State } from 'zustand/vanilla';
|
|
1
2
|
import { IHMSActions } from '../IHMSActions';
|
|
3
|
+
import { IStore } from '../IHMSStore';
|
|
2
4
|
import { IHMSStore, IHMSStoreReadOnly } from '../IHMSStore';
|
|
3
5
|
import { HMSNotifications } from './HMSNotifications';
|
|
4
6
|
import { IHMSNotifications } from '../IHMSNotifications';
|
|
7
|
+
import { HMSStats } from '../webrtc-stats';
|
|
8
|
+
declare global {
|
|
9
|
+
interface Window {
|
|
10
|
+
__hms: HMSReactiveStore;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
5
13
|
export declare class HMSReactiveStore {
|
|
14
|
+
private readonly sdk?;
|
|
6
15
|
private readonly actions;
|
|
7
16
|
private readonly store;
|
|
8
17
|
private readonly notifications;
|
|
18
|
+
private webrtcStats?;
|
|
19
|
+
/** @TODO store flag for both HMSStore and HMSInternalsStore */
|
|
9
20
|
private initialTriggerOnSubscribe;
|
|
10
21
|
constructor(hmsStore?: IHMSStore, hmsActions?: IHMSActions, hmsNotifications?: HMSNotifications);
|
|
11
22
|
/**
|
|
@@ -35,14 +46,19 @@ export declare class HMSReactiveStore {
|
|
|
35
46
|
* for analytics
|
|
36
47
|
*/
|
|
37
48
|
getNotifications(): IHMSNotifications;
|
|
49
|
+
/**
|
|
50
|
+
* @alpha
|
|
51
|
+
* @internal
|
|
52
|
+
*/
|
|
53
|
+
getWebrtcStats: () => HMSStats;
|
|
38
54
|
/**
|
|
39
55
|
* @internal
|
|
40
56
|
*/
|
|
41
|
-
static createNewHMSStore():
|
|
57
|
+
static createNewHMSStore<T extends State>(storeName: string, defaultCreatorFn: () => T): IStore<T>;
|
|
42
58
|
/**
|
|
43
59
|
* @internal
|
|
44
60
|
*/
|
|
45
|
-
static makeStoreTriggerOnSubscribe(store:
|
|
61
|
+
static makeStoreTriggerOnSubscribe<T extends State>(store: IStore<T>): void;
|
|
46
62
|
/**
|
|
47
63
|
* use shallow equality check by default for subscribe to optimize for array/object selectors.
|
|
48
64
|
* by default zustand does only reference matching so something like, getPeers for eg. would trigger
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HMSRoleChangeRequest as SDKHMSRoleChangeRequest, HMSTrack as SDKHMSTrack } from '@100mslive/hms-video';
|
|
1
|
+
import { HMSPeerConnectionStats, HMSRoleChangeRequest as SDKHMSRoleChangeRequest, HMSTrack as SDKHMSTrack } from '@100mslive/hms-video';
|
|
2
2
|
import { HMSDeviceChangeEvent, HMSException, HMSMessage, HMSPeer, HMSPeerID, HMSPlaylistItem, HMSRole, HMSRoleChangeStoreRequest, HMSRoleName, HMSRoom, HMSTrack } from '../schema';
|
|
3
3
|
import * as sdkTypes from './sdkTypes';
|
|
4
4
|
export declare class SDKToHMS {
|
|
@@ -41,6 +41,7 @@ export declare class SDKToHMS {
|
|
|
41
41
|
};
|
|
42
42
|
};
|
|
43
43
|
static convertPlaylistItem<T>(playlistManager: sdkTypes.HMSPlaylistManager, playlistItem: sdkTypes.HMSPlaylistItem<T>): HMSPlaylistItem<T>;
|
|
44
|
+
static convertConnectionStats(stats: HMSPeerConnectionStats): any;
|
|
44
45
|
private static getConvertedPlaylistType;
|
|
45
46
|
static convertRecordingStreamingState(recording: sdkTypes.HMSRecording | undefined, rtmp: sdkTypes.HMSRTMP | undefined, hls: sdkTypes.HMSHLS | undefined): {
|
|
46
47
|
recording: sdkTypes.HMSRecording;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { HMSException, HMSSimulcastLayer, HMSPeerUpdate, HMSRoomUpdate, HMSTrackUpdate, HMSAudioTrackSettings, HMSVideoTrackSettings, HMSPeer, HMSRoom, HMSMessage, HMSConfig, HMSSpeaker, HMSRole, HMSLocalPeer, HMSRemotePeer, SimulcastLayerDefinition, DeviceMap, HMSLogLevel, HMSDeviceChangeEvent, HMSPlaylistItem, HMSPlaylistManager, HMSPlaylistProgressEvent, RTMPRecordingConfig, HMSRecording, HMSRTMP, HMSAudioPluginType, HMSVideoPluginType, HMSVideoPlugin, HMSAudioPlugin, HLSConfig, HMSHLS } from '@100mslive/hms-video';
|
|
1
|
+
import { HMSException, HMSSimulcastLayer, HMSPeerUpdate, HMSRoomUpdate, HMSTrackUpdate, HMSAudioTrackSettings, HMSVideoTrackSettings, HMSPeer, HMSRoom, HMSMessage, HMSConfig, HMSSpeaker, HMSRole, HMSLocalPeer, HMSRemotePeer, SimulcastLayerDefinition, DeviceMap, HMSLogLevel, HMSDeviceChangeEvent, HMSPlaylistItem, HMSPlaylistManager, HMSPlaylistProgressEvent, RTMPRecordingConfig, HMSRecording, HMSRTMP, HMSWebrtcInternals, HMSWebrtcStats, HMSPeerConnectionStats, HMSAudioPluginType, HMSVideoPluginType, HMSVideoPlugin, HMSAudioPlugin, HLSConfig, HMSHLS } from '@100mslive/hms-video';
|
|
2
2
|
export { HMSException, HMSSimulcastLayer, HMSRoomUpdate, HMSPeerUpdate, HMSTrackUpdate, HMSLogLevel, HMSAudioPluginType, HMSVideoPluginType, };
|
|
3
|
-
export type { DeviceMap, HMSPeer, HMSRoom, HMSMessage, HMSSpeaker, HMSConfig, HMSAudioTrackSettings, HMSVideoTrackSettings, HMSRole, HMSLocalPeer, HMSRemotePeer, SimulcastLayerDefinition, HMSDeviceChangeEvent, HMSPlaylistItem, HMSPlaylistManager, HMSPlaylistProgressEvent, RTMPRecordingConfig, HMSRecording, HMSRTMP, HMSVideoPlugin, HMSAudioPlugin, HLSConfig, HMSHLS, };
|
|
3
|
+
export type { DeviceMap, HMSPeer, HMSRoom, HMSMessage, HMSSpeaker, HMSConfig, HMSAudioTrackSettings, HMSVideoTrackSettings, HMSRole, HMSLocalPeer, HMSRemotePeer, SimulcastLayerDefinition, HMSDeviceChangeEvent, HMSPlaylistItem, HMSPlaylistManager, HMSPlaylistProgressEvent, RTMPRecordingConfig, HMSRecording, HMSRTMP, HMSWebrtcInternals, HMSWebrtcStats, HMSPeerConnectionStats, HMSVideoPlugin, HMSAudioPlugin, HLSConfig, HMSHLS, };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HMSPeer, HMSPeerID, HMSTrack, HMSTrackID } from '../../schema';
|
|
1
|
+
import { HMSPeer, HMSPeerID, HMSTrack, HMSTrackID, HMSPeerStats, HMSTrackStats } from '../../schema';
|
|
2
2
|
/**
|
|
3
3
|
* updates draftPeers with newPeers ensuring minimal reference changes
|
|
4
4
|
* @remarks
|
|
@@ -11,4 +11,5 @@ import { HMSPeer, HMSPeerID, HMSTrack, HMSTrackID } from '../../schema';
|
|
|
11
11
|
*/
|
|
12
12
|
export declare const mergeNewPeersInDraft: (draftPeers: Record<HMSPeerID, HMSPeer>, newPeers: Record<HMSPeerID, Partial<HMSPeer>>) => void;
|
|
13
13
|
export declare const mergeNewTracksInDraft: (draftTracks: Record<HMSTrackID, HMSTrack>, newTracks: Record<HMSTrackID, Partial<HMSTrack>>) => void;
|
|
14
|
+
export declare const mergeNewIndividualStatsInDraft: <TID extends string, T extends HMSTrackStats | HMSPeerStats>(draftStats: Record<TID, T | undefined>, newStats: Record<TID, Partial<T | undefined>>) => void;
|
|
14
15
|
export declare const areArraysEqual: <T>(arr1: T[], arr2?: T[] | undefined) => boolean;
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { IHMSStore, IHMSStoreReadOnly as HMSStoreWrapper, GetState } from './IHMSStore';
|
|
1
|
+
export type { IStore, IStoreReadOnly, IHMSStore, IHMSStoreReadOnly as HMSStoreWrapper, GetState, IHMSStatsStore, IHMSStatsStoreReadOnly as HMSStatsStoreWrapper, } from './IHMSStore';
|
|
2
2
|
export type { IHMSActions as HMSActions } from './IHMSActions';
|
|
3
3
|
export type { IHMSNotifications as HMSNotifications } from './IHMSNotifications';
|
|
4
4
|
export type { HMSNotificationCallback } from './IHMSNotifications';
|
|
@@ -6,4 +6,5 @@ export { HMSReactiveStore } from './hmsSDKStore/HMSReactiveStore';
|
|
|
6
6
|
export * from './schema';
|
|
7
7
|
export * from './selectors';
|
|
8
8
|
export { HMSLogLevel, HMSAudioPluginType, HMSVideoPluginType } from './hmsSDKStore/sdkTypes';
|
|
9
|
+
export * from './webrtc-stats';
|
|
9
10
|
export type { HMSConfig, HMSAudioTrackSettings, HMSVideoTrackSettings, HMSSimulcastLayer, SimulcastLayerDefinition, DeviceMap, RTMPRecordingConfig, HMSRecording, HMSRTMP, } from './hmsSDKStore/sdkTypes';
|
|
@@ -7,6 +7,7 @@ import { HMSRole } from './role';
|
|
|
7
7
|
import { HMSRoleChangeStoreRequest } from './requests';
|
|
8
8
|
import { HMSException } from './error';
|
|
9
9
|
import { HMSPlaylist } from './playlist';
|
|
10
|
+
import { HMSPeerConnectionStats, HMSPeerStats, HMSTrackStats } from './webrtc-stats';
|
|
10
11
|
export interface HMSStore {
|
|
11
12
|
room: HMSRoom;
|
|
12
13
|
peers: Record<HMSPeerID, HMSPeer>;
|
|
@@ -23,7 +24,19 @@ export interface HMSStore {
|
|
|
23
24
|
roleChangeRequests: HMSRoleChangeStoreRequest[];
|
|
24
25
|
errors: HMSException[];
|
|
25
26
|
}
|
|
27
|
+
export interface HMSStatsStore {
|
|
28
|
+
publishStats?: HMSPeerConnectionStats;
|
|
29
|
+
subscribeStats?: HMSPeerConnectionStats;
|
|
30
|
+
trackStats: Record<HMSTrackID, HMSTrackStats | undefined>;
|
|
31
|
+
peerStats: Record<HMSPeerID, HMSPeerStats | undefined>;
|
|
32
|
+
localPeer: {
|
|
33
|
+
id: HMSPeerID;
|
|
34
|
+
videoTrack?: HMSTrackID;
|
|
35
|
+
audioTrack?: HMSTrackID;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
26
38
|
/**
|
|
27
39
|
* @internal
|
|
28
40
|
*/
|
|
29
41
|
export declare const createDefaultStoreState: () => HMSStore;
|
|
42
|
+
export declare const createDefaultStatsStore: () => HMSStatsStore;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { HMSPeerConnectionStats as SDKHMSPeerConnectionStats } from '@100mslive/hms-video';
|
|
2
|
+
declare type WithBitrate = {
|
|
3
|
+
bitrate: number;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Missing properties in TS eventhough WebRTC supports it.
|
|
7
|
+
* Ref: https://www.w3.org/TR/webrtc-stats/#summary
|
|
8
|
+
*/
|
|
9
|
+
declare type MissingRTCTrackStats = {
|
|
10
|
+
bytesReceived?: number;
|
|
11
|
+
framesPerSecond?: number;
|
|
12
|
+
bytesSent?: number;
|
|
13
|
+
jitter?: number;
|
|
14
|
+
packetsLost?: number;
|
|
15
|
+
qualityLimitationReason?: string;
|
|
16
|
+
};
|
|
17
|
+
export declare type HMSPeerConnectionStats = Pick<SDKHMSPeerConnectionStats, 'type' | 'packetsLost' | 'jitter'>;
|
|
18
|
+
export declare type HMSTrackStats = RTCRtpStreamStats & {
|
|
19
|
+
peerID?: string;
|
|
20
|
+
peerName?: string;
|
|
21
|
+
} & WithBitrate & MissingRTCTrackStats;
|
|
22
|
+
export declare type HMSInboundTrackStats = HMSTrackStats & RTCInboundRtpStreamStats;
|
|
23
|
+
export declare type HMSOutboundTrackStats = HMSTrackStats & RTCOutboundRtpStreamStats;
|
|
24
|
+
export declare type RTCTrackStats = RTCInboundRtpStreamStats | RTCOutboundRtpStreamStats;
|
|
25
|
+
declare type AdditionalPeerStats = {
|
|
26
|
+
packetsLost: number;
|
|
27
|
+
packetsLostRate: number;
|
|
28
|
+
jitter: number;
|
|
29
|
+
};
|
|
30
|
+
export declare type HMSPeerStats = {
|
|
31
|
+
publish?: RTCIceCandidatePairStats & WithBitrate;
|
|
32
|
+
subscribe?: RTCIceCandidatePairStats & WithBitrate & AdditionalPeerStats;
|
|
33
|
+
};
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { HMSStatsStore, HMSStore } from '../schema';
|
|
2
|
+
export declare type StoreTypes = HMSStore | HMSStatsStore;
|
|
3
|
+
declare type byIDSelector<S extends StoreTypes, T> = (store: S, id?: string) => T;
|
|
4
|
+
/**
|
|
5
|
+
* StoreSelector is a function that takes in {@link HMSStore} as argument
|
|
6
|
+
* and returns a part of the store that is queried using the selector.
|
|
7
|
+
* @typeParam T Part of the store that you wish to query.
|
|
8
|
+
*/
|
|
9
|
+
export declare type StoreSelector<S extends StoreTypes, T> = (store: S) => T;
|
|
10
|
+
/**
|
|
11
|
+
* takes in a normal selector which has store and id as input and curries it to make it easier to use.
|
|
12
|
+
* Before: store.getState((store) => normalSelector(store, peerID))
|
|
13
|
+
* After: store.getState(curriedSelector(peerID))
|
|
14
|
+
*/
|
|
15
|
+
export declare function byIDCurry<S extends StoreTypes, T>(selector: byIDSelector<S, T>): (id?: string) => StoreSelector<S, T>;
|
|
16
|
+
export {};
|
|
@@ -1,55 +1,49 @@
|
|
|
1
1
|
import { HMSPeerID, HMSRoleName, HMSStore, HMSTrack } from '../schema';
|
|
2
|
-
/**
|
|
3
|
-
* StoreSelector is a function that takes in {@link HMSStore} as argument
|
|
4
|
-
* and returns a part of the store that is queried using the selector.
|
|
5
|
-
* @typeParam T Part of the store that you wish to query.
|
|
6
|
-
*/
|
|
7
|
-
export declare type StoreSelector<T> = (store: HMSStore) => T;
|
|
8
2
|
/**
|
|
9
3
|
* Select the {@link HMSPeer} object given a peer ID.
|
|
10
4
|
*/
|
|
11
|
-
export declare const selectPeerByID: (id?: string | undefined) => StoreSelector<import("../schema").HMSPeer | null>;
|
|
5
|
+
export declare const selectPeerByID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, import("../schema").HMSPeer | null>;
|
|
12
6
|
/**
|
|
13
7
|
* Select the name of a {@link HMSPeer} given a peer ID.
|
|
14
8
|
*/
|
|
15
|
-
export declare const selectPeerNameByID: (id?: string | undefined) => StoreSelector<string | undefined>;
|
|
9
|
+
export declare const selectPeerNameByID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, string | undefined>;
|
|
16
10
|
/**
|
|
17
11
|
* Select the {@link HMSTrack} object given a track ID.
|
|
18
12
|
*/
|
|
19
|
-
export declare const selectTrackByID: (id?: string | undefined) => StoreSelector<HMSTrack | null>;
|
|
13
|
+
export declare const selectTrackByID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, HMSTrack | null>;
|
|
20
14
|
/**
|
|
21
15
|
* Select the primary video track of a peer given a peer ID.
|
|
22
16
|
*/
|
|
23
|
-
export declare const selectVideoTrackByPeerID: (id?: string | undefined) => StoreSelector<HMSTrack | undefined>;
|
|
17
|
+
export declare const selectVideoTrackByPeerID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, HMSTrack | undefined>;
|
|
24
18
|
/**
|
|
25
19
|
* Select the primary audio track of a peer given a peer ID.
|
|
26
20
|
*/
|
|
27
|
-
export declare const selectAudioTrackByPeerID: (id?: string | undefined) => StoreSelector<HMSTrack | undefined>;
|
|
21
|
+
export declare const selectAudioTrackByPeerID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, HMSTrack | undefined>;
|
|
28
22
|
/**
|
|
29
23
|
* Select the camera stream of a peer given a peer ID.
|
|
30
24
|
* This is the primary video track of a peer.
|
|
31
25
|
*/
|
|
32
|
-
export declare const selectCameraStreamByPeerID: (id?: string | undefined) => StoreSelector<HMSTrack | undefined>;
|
|
26
|
+
export declare const selectCameraStreamByPeerID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, HMSTrack | undefined>;
|
|
33
27
|
/**
|
|
34
28
|
* Select an array of auxiliary tracks of a peer given a peer ID.
|
|
35
29
|
*/
|
|
36
|
-
export declare const selectAuxiliaryTracksByPeerID: (id?: string | undefined) => StoreSelector<HMSTrack[]>;
|
|
30
|
+
export declare const selectAuxiliaryTracksByPeerID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, HMSTrack[]>;
|
|
37
31
|
/**
|
|
38
32
|
* Select the audio level of a track given a track ID.
|
|
39
33
|
*/
|
|
40
|
-
export declare const selectTrackAudioByID: (id?: string | undefined) => StoreSelector<number>;
|
|
34
|
+
export declare const selectTrackAudioByID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, number>;
|
|
41
35
|
/**
|
|
42
36
|
* Select audio level of audioTrack of a peer given a peer IDß.
|
|
43
37
|
*/
|
|
44
|
-
export declare const selectPeerAudioByID: (id?: string | undefined) => StoreSelector<number>;
|
|
38
|
+
export declare const selectPeerAudioByID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, number>;
|
|
45
39
|
/**
|
|
46
40
|
* Select the first auxiliary audio track of a peer given a peer ID.
|
|
47
41
|
*/
|
|
48
|
-
export declare const selectAuxiliaryAudioByPeerID: (id?: string | undefined) => StoreSelector<HMSTrack | undefined>;
|
|
49
|
-
export declare const selectVideoPlaylistVideoTrackByPeerID: (id?: string | undefined) => StoreSelector<HMSTrack | undefined>;
|
|
50
|
-
export declare const selectVideoPlaylistAudioTrackByPeerID: (id?: string | undefined) => StoreSelector<HMSTrack | undefined>;
|
|
51
|
-
export declare const selectAudioPlaylistTrackByPeerID: (id?: string | undefined) => StoreSelector<HMSTrack | undefined>;
|
|
52
|
-
export declare const selectScreenSharesByPeerId: (id?: string | undefined) => StoreSelector<{
|
|
42
|
+
export declare const selectAuxiliaryAudioByPeerID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, HMSTrack | undefined>;
|
|
43
|
+
export declare const selectVideoPlaylistVideoTrackByPeerID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, HMSTrack | undefined>;
|
|
44
|
+
export declare const selectVideoPlaylistAudioTrackByPeerID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, HMSTrack | undefined>;
|
|
45
|
+
export declare const selectAudioPlaylistTrackByPeerID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, HMSTrack | undefined>;
|
|
46
|
+
export declare const selectScreenSharesByPeerId: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, {
|
|
53
47
|
video: HMSTrack | undefined;
|
|
54
48
|
audio: HMSTrack | undefined;
|
|
55
49
|
}>;
|
|
@@ -70,23 +64,23 @@ export declare const selectScreenShareAudioByPeerID: (id?: string | undefined) =
|
|
|
70
64
|
/**
|
|
71
65
|
* Select a boolean denoting whether a peer has unmuted audio and sharing it to other peers.
|
|
72
66
|
*/
|
|
73
|
-
export declare const selectIsPeerAudioEnabled: (id?: string | undefined) => StoreSelector<boolean>;
|
|
67
|
+
export declare const selectIsPeerAudioEnabled: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, boolean>;
|
|
74
68
|
/**
|
|
75
69
|
* Select a boolean denoting whether a peer has unmuted video and sharing it to other peers.
|
|
76
70
|
*/
|
|
77
|
-
export declare const selectIsPeerVideoEnabled: (id?: string | undefined) => StoreSelector<boolean>;
|
|
71
|
+
export declare const selectIsPeerVideoEnabled: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, boolean>;
|
|
78
72
|
/**
|
|
79
73
|
* Select a boolean denoting whether you've muted an audio track locally(only for you) given a track ID.
|
|
80
74
|
*/
|
|
81
|
-
export declare const selectIsAudioLocallyMuted: (id?: string | undefined) => StoreSelector<boolean | undefined>;
|
|
75
|
+
export declare const selectIsAudioLocallyMuted: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, boolean | undefined>;
|
|
82
76
|
/**
|
|
83
77
|
* Select a boolean denoting whether you've muted the primary audio track of a peer locally(only for you) given a peer ID.
|
|
84
78
|
*/
|
|
85
|
-
export declare const selectIsLocallyMutedByPeerID: (id?: string | undefined) => StoreSelector<boolean | undefined>;
|
|
79
|
+
export declare const selectIsLocallyMutedByPeerID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, boolean | undefined>;
|
|
86
80
|
/**
|
|
87
81
|
* Select a boolean denoting whether you've muted the screen share audio track of a peer locally(only for you) given a peer ID.
|
|
88
82
|
*/
|
|
89
|
-
export declare const selectIsScreenShareLocallyMutedByPeerID: (id?: string | undefined) => StoreSelector<boolean | undefined>;
|
|
83
|
+
export declare const selectIsScreenShareLocallyMutedByPeerID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, boolean | undefined>;
|
|
90
84
|
/**
|
|
91
85
|
* Select the local audio volume of an audio track given a track ID.
|
|
92
86
|
*
|
|
@@ -94,25 +88,25 @@ export declare const selectIsScreenShareLocallyMutedByPeerID: (id?: string | und
|
|
|
94
88
|
* - Audio Level measures the audio of a track and it comes from 100ms's servers.
|
|
95
89
|
* - Volume is how loud you hear the audio of a track, this is controlled by you at the client side.
|
|
96
90
|
*/
|
|
97
|
-
export declare const selectAudioTrackVolume: (id?: string | undefined) => StoreSelector<number | undefined>;
|
|
91
|
+
export declare const selectAudioTrackVolume: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, number | undefined>;
|
|
98
92
|
/**
|
|
99
93
|
* Select the local audio volume of the primary audio track of a peer given a peer ID.
|
|
100
94
|
*/
|
|
101
|
-
export declare const selectAudioVolumeByPeerID: (id?: string | undefined) => StoreSelector<number | undefined>;
|
|
95
|
+
export declare const selectAudioVolumeByPeerID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, number | undefined>;
|
|
102
96
|
/**
|
|
103
97
|
* Select the local audio volume of the screen share of a peer given a peer ID.
|
|
104
98
|
*/
|
|
105
|
-
export declare const selectScreenshareAudioVolumeByPeerID: (id?: string | undefined) => StoreSelector<number | undefined>;
|
|
99
|
+
export declare const selectScreenshareAudioVolumeByPeerID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, number | undefined>;
|
|
106
100
|
/**
|
|
107
101
|
* Select the current simulcast layer of a track given a track ID.
|
|
108
102
|
*/
|
|
109
|
-
export declare const selectSimulcastLayerByTrack: (id?: string | undefined) => StoreSelector<import("../../../../hms-video-web/dist").HMSSimulcastLayer | undefined>;
|
|
103
|
+
export declare const selectSimulcastLayerByTrack: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, import("../../../../hms-video-web/dist").HMSSimulcastLayer | undefined>;
|
|
110
104
|
export declare const selectBroadcastMessages: import("reselect").OutputSelector<HMSStore, import("../schema").HMSMessage[], (res: import("../schema").HMSMessage[]) => import("../schema").HMSMessage[]>;
|
|
111
105
|
export declare const selectBroadcastMessagesUnreadCount: import("reselect").OutputSelector<HMSStore, number, (res: import("../schema").HMSMessage[]) => number>;
|
|
112
|
-
export declare const selectMessagesByPeerID: (id?: string | undefined) => StoreSelector<import("../schema").HMSMessage[] | undefined>;
|
|
113
|
-
export declare const selectMessagesByRole: (id?: string | undefined) => StoreSelector<import("../schema").HMSMessage[] | undefined>;
|
|
114
|
-
export declare const selectMessagesUnreadCountByRole: (id?: string | undefined) => StoreSelector<number>;
|
|
115
|
-
export declare const selectMessagesUnreadCountByPeerID: (id?: string | undefined) => StoreSelector<number>;
|
|
106
|
+
export declare const selectMessagesByPeerID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, import("../schema").HMSMessage[] | undefined>;
|
|
107
|
+
export declare const selectMessagesByRole: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, import("../schema").HMSMessage[] | undefined>;
|
|
108
|
+
export declare const selectMessagesUnreadCountByRole: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, number>;
|
|
109
|
+
export declare const selectMessagesUnreadCountByPeerID: (id?: string | undefined) => import("./common").StoreSelector<HMSStore, number>;
|
|
116
110
|
/**
|
|
117
111
|
* Select an array of peers of a particular role
|
|
118
112
|
* @param role HMSRoleName
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { HMSSdk } from '@100mslive/hms-video';
|
|
2
|
+
import { Subscribe } from 'zustand/vanilla';
|
|
3
|
+
import { HMSStatsStore, IHMSStore, HMSStatsStoreWrapper, GetState } from '..';
|
|
4
|
+
export declare class HMSStats implements HMSStatsStoreWrapper {
|
|
5
|
+
private hmsStore;
|
|
6
|
+
private sdk?;
|
|
7
|
+
readonly getState: GetState<HMSStatsStore>;
|
|
8
|
+
readonly subscribe: Subscribe<HMSStatsStore>;
|
|
9
|
+
readonly getPublishPeerConnection: () => Promise<RTCPeerConnection | undefined>;
|
|
10
|
+
readonly getSubscribePeerConnection: () => Promise<RTCPeerConnection | undefined>;
|
|
11
|
+
private readonly store;
|
|
12
|
+
constructor(hmsStore: IHMSStore, sdk?: HMSSdk | undefined);
|
|
13
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { HMSStatsStore } from '../schema';
|
|
2
|
+
/**
|
|
3
|
+
* Local peer stats selectors
|
|
4
|
+
*/
|
|
5
|
+
export declare const localPeerStats: import("reselect").OutputSelector<HMSStatsStore, import("../schema").HMSPeerStats | undefined, (res1: Record<string, import("../schema").HMSPeerStats | undefined>, res2: string) => import("../schema").HMSPeerStats | undefined>;
|
|
6
|
+
/**
|
|
7
|
+
* The total number of packets lost during the call
|
|
8
|
+
*/
|
|
9
|
+
export declare const packetsLost: import("reselect").OutputSelector<HMSStatsStore, number | undefined, (res: import("../schema").HMSPeerStats | undefined) => number | undefined>;
|
|
10
|
+
export declare const jitter: import("reselect").OutputSelector<HMSStatsStore, number | undefined, (res: import("../schema").HMSPeerStats | undefined) => number | undefined>;
|
|
11
|
+
/**
|
|
12
|
+
* The bitrate at which all the local tracks are being published at
|
|
13
|
+
*/
|
|
14
|
+
export declare const publishBitrate: import("reselect").OutputSelector<HMSStatsStore, number | undefined, (res: import("../schema").HMSPeerStats | undefined) => number | undefined>;
|
|
15
|
+
/**
|
|
16
|
+
* The bitrate at which all the remote tracks are being received at
|
|
17
|
+
*/
|
|
18
|
+
export declare const subscribeBitrate: import("reselect").OutputSelector<HMSStatsStore, number | undefined, (res: import("../schema").HMSPeerStats | undefined) => number | undefined>;
|
|
19
|
+
/**
|
|
20
|
+
* The total bitrate available for publishing
|
|
21
|
+
*/
|
|
22
|
+
export declare const availablePublishBitrate: import("reselect").OutputSelector<HMSStatsStore, number | undefined, (res: import("../schema").HMSPeerStats | undefined) => number | undefined>;
|
|
23
|
+
/**
|
|
24
|
+
* The total bitrate available for subscribing to remote peers
|
|
25
|
+
*/
|
|
26
|
+
export declare const availableSubscribeBitrate: import("reselect").OutputSelector<HMSStatsStore, number | undefined, (res: import("../schema").HMSPeerStats | undefined) => number | undefined>;
|
|
27
|
+
/**
|
|
28
|
+
* The total bytes sent by the local peer
|
|
29
|
+
*/
|
|
30
|
+
export declare const totalBytesSent: import("reselect").OutputSelector<HMSStatsStore, number | undefined, (res: import("../schema").HMSPeerStats | undefined) => number | undefined>;
|
|
31
|
+
/**
|
|
32
|
+
* The total bytes received by the local peer
|
|
33
|
+
*/
|
|
34
|
+
export declare const totalBytesReceived: import("reselect").OutputSelector<HMSStatsStore, number | undefined, (res: import("../schema").HMSPeerStats | undefined) => number | undefined>;
|
|
35
|
+
/**
|
|
36
|
+
* Stats(bitrate, bytes sent/received, etc...) for a single peer given the peer ID
|
|
37
|
+
*/
|
|
38
|
+
export declare const peerStatsByID: (id?: string | undefined) => import("../selectors/common").StoreSelector<HMSStatsStore, import("../schema").HMSPeerStats | undefined>;
|
|
39
|
+
/**
|
|
40
|
+
* Stats(bitrate, bytes sent/received, framerate, FPS, etc...) for a single track
|
|
41
|
+
*/
|
|
42
|
+
export declare const trackStatsByID: (id?: string | undefined) => import("../selectors/common").StoreSelector<HMSStatsStore, import("../schema").HMSTrackStats | undefined>;
|
|
43
|
+
/**
|
|
44
|
+
* The bitrate at which the track's data is being received
|
|
45
|
+
*/
|
|
46
|
+
export declare const bitrateByTrackID: (id?: string | undefined) => import("../selectors/common").StoreSelector<HMSStatsStore, number | undefined>;
|
|
47
|
+
/**
|
|
48
|
+
* Bytes received from a particular track
|
|
49
|
+
*/
|
|
50
|
+
export declare const bytesReceivedByTrackID: (id?: string | undefined) => import("../selectors/common").StoreSelector<HMSStatsStore, number | undefined>;
|
|
51
|
+
/**
|
|
52
|
+
* The framerate(frames per second) of a particular video track
|
|
53
|
+
*/
|
|
54
|
+
export declare const framerateByTrackID: (id?: string | undefined) => import("../selectors/common").StoreSelector<HMSStatsStore, number | undefined>;
|
|
55
|
+
/**
|
|
56
|
+
* The jitter faced while receiving a particular track
|
|
57
|
+
*/
|
|
58
|
+
export declare const jitterByTrackID: (id?: string | undefined) => import("../selectors/common").StoreSelector<HMSStatsStore, number | undefined>;
|
|
59
|
+
/**
|
|
60
|
+
* The number of packets lost while receiving a particular track
|
|
61
|
+
*/
|
|
62
|
+
export declare const packetsLostByTrackID: (id?: string | undefined) => import("../selectors/common").StoreSelector<HMSStatsStore, number | undefined>;
|
|
63
|
+
/**
|
|
64
|
+
* Local track stats selectors
|
|
65
|
+
*/
|
|
66
|
+
export declare const localAudioTrackStats: import("reselect").OutputSelector<HMSStatsStore, import("../schema").HMSTrackStats | undefined, (res1: Record<string, import("../schema").HMSTrackStats | undefined>, res2: string | undefined) => import("../schema").HMSTrackStats | undefined>;
|
|
67
|
+
export declare const localVideoTrackStats: import("reselect").OutputSelector<HMSStatsStore, import("../schema").HMSTrackStats | undefined, (res1: Record<string, import("../schema").HMSTrackStats | undefined>, res2: string | undefined) => import("../schema").HMSTrackStats | undefined>;
|
|
68
|
+
export declare const localAudioTrackBitrate: import("reselect").OutputSelector<HMSStatsStore, number | undefined, (res: import("../schema").HMSTrackStats | undefined) => number | undefined>;
|
|
69
|
+
export declare const localVideoTrackBitrate: import("reselect").OutputSelector<HMSStatsStore, number | undefined, (res: import("../schema").HMSTrackStats | undefined) => number | undefined>;
|
|
70
|
+
export declare const localAudioTrackBytesSent: import("reselect").OutputSelector<HMSStatsStore, number | undefined, (res: import("../schema").HMSTrackStats | undefined) => number | undefined>;
|
|
71
|
+
export declare const localVideoTrackBytesSent: import("reselect").OutputSelector<HMSStatsStore, number | undefined, (res: import("../schema").HMSTrackStats | undefined) => number | undefined>;
|
|
72
|
+
export declare const localVideoTrackFramerate: import("reselect").OutputSelector<HMSStatsStore, number | undefined, (res: import("../schema").HMSTrackStats | undefined) => number | undefined>;
|
|
73
|
+
export declare const localVideoTrackQualityLimitationReason: import("reselect").OutputSelector<HMSStatsStore, string | undefined, (res: import("../schema").HMSTrackStats | undefined) => string | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var gt=Object.create;var $=Object.defineProperty,ht=Object.defineProperties,Tt=Object.getOwnPropertyDescriptor,yt=Object.getOwnPropertyDescriptors,Ht=Object.getOwnPropertyNames,xe=Object.getOwnPropertySymbols,ft=Object.getPrototypeOf,Oe=Object.prototype.hasOwnProperty,kt=Object.prototype.propertyIsEnumerable;var we=(s,e,t)=>e in s?$(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,_=(s,e)=>{for(var t in e||(e={}))Oe.call(e,t)&&we(s,t,e[t]);if(xe)for(var t of xe(e))kt.call(e,t)&&we(s,t,e[t]);return s},K=(s,e)=>ht(s,yt(e)),Ne=s=>$(s,"__esModule",{value:!0});var Pt=(s,e)=>{Ne(s);for(var t in e)$(s,t,{get:e[t],enumerable:!0})},Rt=(s,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ht(e))!Oe.call(s,i)&&i!=="default"&&$(s,i,{get:()=>e[i],enumerable:!(t=Tt(e,i))||t.enumerable});return s},R=s=>Rt(Ne($(s!=null?gt(ft(s)):{},"default",s&&s.__esModule&&"default"in s?{get:()=>s.default,enumerable:!0}:{value:s,enumerable:!0})),s);var c=(s,e,t)=>new Promise((i,o)=>{var r=g=>{try{u(t.next(g))}catch(P){o(P)}},a=g=>{try{u(t.throw(g))}catch(P){o(P)}},u=g=>g.done?i(g.value):Promise.resolve(g.value).then(r,a);u((t=t.apply(s,e)).next())});Pt(exports,{HMSAudioPluginType:()=>n.HMSAudioPluginType,HMSLogLevel:()=>n.HMSLogLevel,HMSMessageType:()=>ce,HMSNotificationSeverity:()=>k,HMSNotificationTypes:()=>M,HMSPlaylistType:()=>S,HMSReactiveStore:()=>O,HMSRoomState:()=>H,HMSVideoPluginType:()=>n.HMSVideoPluginType,createDefaultStoreState:()=>F,selectAudioPlaylist:()=>He,selectAudioPlaylistTrackByPeerID:()=>as,selectAudioTrackByPeerID:()=>st,selectAudioTrackVolume:()=>Ie,selectAudioVolumeByPeerID:()=>us,selectAuxiliaryAudioByPeerID:()=>is,selectAuxiliaryTracksByPeerID:()=>Zt,selectAvailableRoleNames:()=>$t,selectBroadcastMessages:()=>at,selectBroadcastMessagesUnreadCount:()=>hs,selectCameraStreamByPeerID:()=>zt,selectDegradedTracks:()=>Vt,selectDevices:()=>It,selectDominantSpeaker:()=>xt,selectHLSState:()=>Jt,selectHMSMessages:()=>W,selectHMSMessagesCount:()=>me,selectIsAllowedToPublish:()=>Is,selectIsAllowedToSubscribe:()=>Ft,selectIsAudioLocallyMuted:()=>De,selectIsConnectedToRoom:()=>Et,selectIsInPreview:()=>qt,selectIsLocalAudioEnabled:()=>Ot,selectIsLocalAudioPluginPresent:()=>Ls,selectIsLocalScreenShared:()=>ie,selectIsLocalVideoDisplayEnabled:()=>Me,selectIsLocalVideoEnabled:()=>se,selectIsLocalVideoPluginPresent:()=>Cs,selectIsLocallyMutedByPeerID:()=>ds,selectIsPeerAudioEnabled:()=>cs,selectIsPeerVideoEnabled:()=>ls,selectIsScreenShareLocallyMutedByPeerID:()=>Ss,selectIsSomeoneScreenSharing:()=>wt,selectLocalAudioTrackID:()=>w,selectLocalMediaSettings:()=>Se,selectLocalPeer:()=>E,selectLocalPeerID:()=>ue,selectLocalPeerRole:()=>Y,selectLocalTrackIDs:()=>pe,selectLocalVideoTrackID:()=>N,selectMessageIDsInOrder:()=>de,selectMessagesByPeerID:()=>Ts,selectMessagesByRole:()=>ys,selectMessagesMap:()=>le,selectMessagesUnreadCountByPeerID:()=>fs,selectMessagesUnreadCountByRole:()=>Hs,selectPeerAudioByID:()=>ss,selectPeerByID:()=>b,selectPeerCount:()=>bt,selectPeerMetadata:()=>Ps,selectPeerNameByID:()=>Xt,selectPeerScreenSharing:()=>je,selectPeerSharingAudio:()=>Nt,selectPeerSharingAudioPlaylist:()=>Kt,selectPeerSharingVideoPlaylist:()=>_t,selectPeers:()=>te,selectPeersByRole:()=>ks,selectPeersMap:()=>v,selectPeersScreenSharing:()=>Ut,selectPeersWithAudioStatus:()=>Rs,selectPermissions:()=>he,selectRTMPState:()=>jt,selectRecordingState:()=>Gt,selectRemotePeers:()=>Lt,selectRoleByRoleName:()=>Es,selectRoleChangeRequest:()=>Ds,selectRolesMap:()=>x,selectRoom:()=>I,selectRoomStartTime:()=>Yt,selectRoomStarted:()=>ge,selectRoomState:()=>oe,selectScreenShareAudioByPeerID:()=>ve,selectScreenShareByPeerID:()=>ns,selectScreenSharesByPeerId:()=>Re,selectScreenshareAudioVolumeByPeerID:()=>ps,selectSessionId:()=>Wt,selectSimulcastLayerByTrack:()=>Ms,selectSpeakers:()=>Ge,selectTrackAudioByID:()=>es,selectTrackByID:()=>X,selectTracksMap:()=>T,selectUnreadHMSMessagesCount:()=>Bt,selectVideoPlaylist:()=>fe,selectVideoPlaylistAudioTrackByPeerID:()=>rs,selectVideoPlaylistVideoTrackByPeerID:()=>os,selectVideoTrackByPeerID:()=>tt});var ut=R(require("immer")),pt=R(require("zustand/vanilla")),Mt=R(require("zustand/shallow")),mt=R(require("@100mslive/hms-video"));var H;(function(a){a.Disconnected="Disconnected",a.Preview="Preview",a.Connecting="Connecting",a.Connected="Connected",a.Reconnecting="Reconnecting",a.Failed="Failed"})(H||(H={}));var F=()=>({room:{id:"",isConnected:!1,name:"",peers:[],shareableLink:"",localPeer:"",hasWaitingRoom:!1,roomState:H.Disconnected,recording:{browser:{running:!1},server:{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:{},settings:{audioInputDeviceId:"",audioOutputDeviceId:"",videoInputDeviceId:""},devices:{audioInput:[],audioOutput:[],videoInput:[]},roles:{},roleChangeRequests:[],errors:[]});var ce;(function(e){e.CHAT="chat"})(ce||(ce={}));var k;(function(i){i.INFO="info",i.ERROR="error",i.CRITICAL="critical"})(k||(k={}));var M;(function(l){l.PEER_JOINED="PEER_JOINED",l.PEER_LEFT="PEER_LEFT",l.PEER_LIST="PEER_LIST",l.NEW_MESSAGE="NEW_MESSAGE",l.ERROR="ERROR",l.RECONNECTING="RECONNECTING",l.RECONNECTED="RECONNECTED",l.TRACK_ADDED="TRACK_ADDED",l.TRACK_REMOVED="TRACK_REMOVED",l.TRACK_MUTED="TRACK_MUTED",l.TRACK_UNMUTED="TRACK_UNMUTED",l.TRACK_DEGRADED="TRACK_DEGRADED",l.TRACK_RESTORED="TRACK_RESTORED",l.ROLE_CHANGE_REQUEST="ROLE_CHANGE_REQUEST",l.ROLE_UPDATED="ROLE_UPDATED",l.CHANGE_TRACK_STATE_REQUEST="CHANGE_TRACK_STATE_REQUEST",l.CHANGE_MULTI_TRACK_STATE_REQUEST="CHANGE_MULTI_TRACK_STATE_REQUEST",l.ROOM_ENDED="ROOM_ENDED",l.REMOVED_FROM_ROOM="REMOVED_FROM_ROOM",l.DEVICE_CHANGE_UPDATE="DEVICE_CHANGE_UPDATE",l.PLAYLIST_TRACK_ENDED="PLAYLIST_TRACK_ENDED",l.NAME_UPDATED="NAME_UPDATED",l.METADATA_UPDATED="METADATA_UPDATED"})(M||(M={}));var S;(function(t){t.audio="audio",t.video="video"})(S||(S={}));var n=R(require("@100mslive/hms-video"));var L=R(require("@100mslive/hms-video"));var Ue=(s,e)=>{let t=qe(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Ke(o,r)?(C(o.auxiliaryTracks,r.auxiliaryTracks)&&(r.auxiliaryTracks=o.auxiliaryTracks),Object.assign(o,r)):Ve(o,r)?delete s[i]:Be(o,r)&&(s[i]=r)}},_e=(s,e)=>{let t=qe(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Ke(o,r)?(vt(o,r),Object.assign(o,r)):Ve(o,r)?delete s[i]:Be(o,r)&&(s[i]=r)}},vt=(s,e)=>{s.plugins&&C(s.plugins,e.plugins)&&(e.plugins=s.plugins),s.layerDefinitions&&C(s.layerDefinitions,e.layerDefinitions)&&(e.layerDefinitions=s.layerDefinitions)},Ke=(s,e)=>s&&e,Ve=(s,e)=>s&&!e,Be=(s,e)=>!s&&e,C=(s,e)=>{if(s===e||s.length===0&&(e==null?void 0:e.length)===0)return!0;if(!s||!e||s.length!==e.length)return!1;for(let t=0;t<s.length;t++)if(s[t]!==e[t])return!1;return!0},qe=(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 h=class{static convertPeer(e){var t,i,o;return{id:e.peerId,name:e.name,roleName:(t=e.role)==null?void 0:t.name,isLocal:e.isLocal,videoTrack:(i=e.videoTrack)==null?void 0:i.trackId,audioTrack:(o=e.audioTrack)==null?void 0:o.trackId,auxiliaryTracks:e.auxiliaryTracks.map(r=>r.trackId),customerUserId:e.customerUserId,customerDescription:e.metadata,metadata:e.metadata}}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.height=i.height,e.width=i.width,t instanceof L.HMSRemoteAudioTrack&&(e.volume=t.getVolume()||0),h.updateDeviceID(e,t),h.enrichVideoTrack(e,t),h.enrichPluginsDetails(e,t)}static updateDeviceID(e,t){var i;t instanceof L.HMSLocalVideoTrack||t instanceof L.HMSLocalAudioTrack?e.deviceID=t.settings.deviceId:e.deviceID=(i=t.getMediaTrackSettings())==null?void 0:i.deviceId}static enrichVideoTrack(e,t){t instanceof L.HMSRemoteVideoTrack&&(e.layer=t.getSimulcastLayer(),e.degraded=t.degraded,C(t.getSimulcastDefinitions(),e.layerDefinitions)||(e.layerDefinitions=t.getSimulcastDefinitions()))}static enrichPluginsDetails(e,t){(t instanceof L.HMSLocalVideoTrack||t instanceof L.HMSLocalAudioTrack)&&(C(t.getPlugins(),e.plugins)||(e.plugins=t.getPlugins()))}static convertRoom(e){var t,i,o,r,a,u,g;return{id:e.id,name:e.name,localPeer:(i=(t=e.localPeer)==null?void 0:t.peerId)!=null?i:"",hasWaitingRoom:e.hasWaitingRoom,shareableLink:e.shareableLink,recording:{browser:{running:!!((o=e.recording)==null?void 0:o.browser.running)},server:{running:!!((r=e.recording)==null?void 0:r.server.running)}},rtmp:{running:!!((a=e.rtmp)==null?void 0:a.running)},hls:{running:!!((u=e.hls)==null?void 0:u.running),variants:((g=e.hls)==null?void 0:g.variants)||[]},sessionId:e.sessionId,startedAt:e.startedAt&&new Date(e.startedAt)}}static convertMessage(e){var t,i,o;return{sender:e.sender.peerId,senderName:e.sender.name,senderRole:(t=e.sender.role)==null?void 0:t.name,senderUserId:e.sender.customerUserId,recipientPeer:(i=e.recipientPeer)==null?void 0:i.peerId,recipientRoles:(o=e.recipientRoles)==null?void 0:o.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){return{requestedBy:e.requestedBy.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,S.audio),i=this.getConvertedPlaylistType(e,S.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 K(_({},t),{type:t.type,selected:a,playing:a&&r})}static getConvertedPlaylistType(e,t){let i={},o=e.getCurrentSelection(t),r=e.getCurrentProgress(t),a=e.getVolume(t),u=e.getList(t),g=e.getCurrentIndex(t);return e.getList(t).forEach(P=>{i[P.id]=h.convertPlaylistItem(e,P)}),{list:i,selection:{id:o==null?void 0:o.id,hasPrevious:g>0,hasNext:g<u.length-1},progress:r,volume:a,currentTime:e.getCurrentTime(t),playbackRate:e.getPlaybackRate(t)}}static convertRecordingStreamingState(e,t,i){var o,r;return{recording:{browser:{running:!!((o=e==null?void 0:e.browser)==null?void 0:o.running)},server:{running:!!((r=e==null?void 0:e.server)==null?void 0:r.running)}},rtmp:{running:!!(t==null?void 0:t.running)},hls:{variants:(i==null?void 0:i.variants)||[],running:!!(i==null?void 0:i.running)}}}};var d=R(require("reselect"));function U(s,e,t=Dt){let i,o;if(e)for(let r of e.auxiliaryTracks){let a=s[r];t(a)&&(o=G(a)?a:o,i=j(a)?a:i)}return{video:i,audio:o}}function G(s){return s&&s.type==="audio"}function j(s){return s&&s.type==="video"}function Dt(s){return s&&s.source==="screen"}function ee(s){return s&&s.source==="audioplaylist"}function J(s){return s&&s.source==="videoplaylist"}function $e(s){return Boolean(s==null?void 0:s.degraded)}function V(s,e){return e&&s.tracks[e]?s.tracks[e].enabled:!1}function Fe(s,e){return e&&s.tracks[e]?s.tracks[e].displayEnabled:!1}var I=s=>s.room,v=s=>s.peers,le=s=>s.messages.byID,de=s=>s.messages.allIDs,T=s=>s.tracks,Se=s=>s.settings,It=s=>s.devices,Ge=s=>s.speakers,Et=(0,d.createSelector)([I],s=>s&&s.isConnected),bt=(0,d.createSelector)(I,s=>s.peers.length),te=(0,d.createSelector)([I,v],(s,e)=>s.peers.map(t=>e[t])),At=(0,d.createSelector)(T,s=>Object.values(s)),E=(0,d.createSelector)(I,v,(s,e)=>e[s.localPeer]),ue=(0,d.createSelector)(I,s=>s.localPeer),w=(0,d.createSelector)(E,s=>s==null?void 0:s.audioTrack),N=(0,d.createSelector)(E,s=>s==null?void 0:s.videoTrack),Ct=(0,d.createSelector)(E,s=>s==null?void 0:s.auxiliaryTracks),pe=(0,d.createSelector)([w,N,Ct],(s,e,t)=>{let i=[...t];return s&&i.unshift(s),e&&i.unshift(e),i}),Lt=(0,d.createSelector)(te,s=>s.filter(e=>!e.isLocal)),xt=(0,d.createSelector)(v,Ge,(s,e)=>{let t=Object.entries(e).sort((i,o)=>{var u,g;let r=((u=i[1])==null?void 0:u.audioLevel)||0;return(((g=o[1])==null?void 0:g.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}),Ot=s=>{let e=E(s);return V(s,e==null?void 0:e.audioTrack)},se=s=>{let e=E(s);return V(s,e==null?void 0:e.videoTrack)},Me=s=>{let e=E(s);return Fe(s,e==null?void 0:e.videoTrack)},ie=(0,d.createSelector)(E,T,(s,e)=>{let{video:t,audio:i}=U(e,s);return!!(t||i)}),je=(0,d.createSelector)(v,T,(s,e)=>{let t;for(let i in s){let o=s[i],{video:r,audio:a}=U(e,o);if(r)return o;a&&!t&&(t=o)}return t}),wt=(0,d.createSelector)(je,s=>!!s),Nt=(0,d.createSelector)(v,T,(s,e)=>{for(let t in s){let i=s[t],{audio:o,video:r}=U(e,i);if(!r&&!!o)return i}}),Ut=(0,d.createSelector)(v,T,(s,e)=>{let t=[],i=[];for(let o in s){let r=s[o],{video:a,audio:u}=U(e,r);a?t.push(r):u&&i.push(r)}return t.concat(i)}),_t=(0,d.createSelector)(v,T,(s,e)=>{for(let t in e){let i=e[t];if(J(i)&&j(i)&&i.peerId)return s[i.peerId]}}),Kt=(0,d.createSelector)(v,T,(s,e)=>{for(let t in e){let i=e[t];if(ee(i)&&i.peerId)return s[i.peerId]}}),Vt=(0,d.createSelector)(At,s=>s.filter($e)),me=(0,d.createSelector)(de,s=>s.length),Bt=(0,d.createSelector)(le,s=>Object.values(s).filter(e=>!e.read).length),W=(0,d.createSelector)(de,le,(s,e)=>{let t=[];return s.forEach(i=>{t.push(e[i])}),t}),oe=(0,d.createSelector)([I],s=>s&&s.roomState),qt=(0,d.createSelector)(oe,s=>s===H.Preview),ge=(0,d.createSelector)(I,s=>s.roomState!==H.Disconnected),x=s=>s.roles,$t=(0,d.createSelector)([x],s=>Object.keys(s)),Y=(0,d.createSelector)([E,x],(s,e)=>(s==null?void 0:s.roleName)?e[s.roleName]:null),Ft=(0,d.createSelector)([Y],s=>{var e;return((e=s==null?void 0:s.subscribeParams)==null?void 0:e.subscribeToRoles)?s.subscribeParams.subscribeToRoles.length>0:!1}),he=(0,d.createSelector)(Y,s=>s==null?void 0:s.permissions),Gt=(0,d.createSelector)(I,s=>s.recording),jt=(0,d.createSelector)(I,s=>s.rtmp),Jt=(0,d.createSelector)(I,s=>s.hls),Wt=(0,d.createSelector)(I,s=>s.sessionId),Yt=(0,d.createSelector)(I,s=>s.startedAt);var Te=R(require("reselect"));var Je=(s=S.audio)=>e=>e.playlist[s].list,ye=(s=S.audio)=>e=>e.playlist[s].selection,We=(s=S.audio)=>e=>e.playlist[s].progress,Ye=(s=S.audio)=>e=>e.playlist[s].currentTime,Qe=(s=S.audio)=>e=>e.playlist[s].playbackRate,Xe=(s=S.audio)=>e=>e.playlist[s].volume,ze=(s=S.audio)=>(0,Te.createSelector)(Je(s),e=>Object.values(e)),Ze=(s=S.audio)=>(0,Te.createSelector)(Je(s),ye(s),(e,t)=>{if(!!t.id)return e[t.id]}),He={selection:ye(S.audio),progress:We(S.audio),currentTime:Ye(S.audio),playbackRate:Qe(S.audio),volume:Xe(S.audio),list:ze(S.audio),selectedItem:Ze(S.audio)},fe={selection:ye(S.video),progress:We(S.video),currentTime:Ye(S.video),playbackRate:Qe(S.video),volume:Xe(S.video),list:ze(S.video),selectedItem:Ze(S.video)};var y=R(require("reselect"));var Q="HMS-Store:",p=class{static v(e,...t){this.log(n.HMSLogLevel.VERBOSE,e,...t)}static d(...e){this.log(n.HMSLogLevel.DEBUG,...e)}static i(...e){this.log(n.HMSLogLevel.INFO,...e)}static w(...e){this.log(n.HMSLogLevel.WARN,...e)}static e(...e){this.log(n.HMSLogLevel.ERROR,...e)}static time(e){this.log(n.HMSLogLevel.TIME,"[HMSPerformanceTiming]",e)}static timeEnd(e){this.log(n.HMSLogLevel.TIMEEND,"[HMSPerformanceTiming]",e,e)}static cleanUp(){performance.clearMarks(),performance.clearMeasures()}static log(e,...t){if(!(this.level.valueOf()>e.valueOf()))switch(e){case n.HMSLogLevel.VERBOSE:{console.log(Q,...t);break}case n.HMSLogLevel.DEBUG:{console.debug(Q,...t);break}case n.HMSLogLevel.INFO:{console.info(Q,...t);break}case n.HMSLogLevel.WARN:{console.warn(Q,...t);break}case n.HMSLogLevel.ERROR:{console.error(Q,...t);break}case n.HMSLogLevel.TIME:{performance.mark(t[1]);break}case n.HMSLogLevel.TIMEEND:{let i=t[0],o=t[1];try{let r=performance.measure(o,o);this.log(n.HMSLogLevel.DEBUG,i,o,r==null?void 0:r.duration),performance.clearMarks(o),performance.clearMeasures(o)}catch(r){this.log(n.HMSLogLevel.DEBUG,i,o,r)}break}}}};p.level=n.HMSLogLevel.VERBOSE;function m(s){return e=>t=>s(t,e)}var ke=(s,e)=>e,Qt=(s,e)=>e,et=(s,e)=>e,D=(0,y.createSelector)([v,ke],(s,e)=>e?s[e]:null),Pe=(0,y.createSelector)([T,Qt],(s,e)=>e?s[e]:null),b=m(D),Xt=m((0,y.createSelector)(D,s=>s==null?void 0:s.name)),X=m(Pe),tt=m((s,e)=>{let t=D(s,e);if(t&&t.videoTrack&&t.videoTrack!=="")return s.tracks[t.videoTrack]}),st=m((s,e)=>{let t=D(s,e);if(t&&t.audioTrack&&t.audioTrack!=="")return s.tracks[t.audioTrack]}),zt=tt,Zt=m((s,e)=>{let t=D(s,e);return(t==null?void 0:t.auxiliaryTracks.map(i=>s.tracks[i]))||[]}),it=(s,e)=>e?s.speakers[e]:null,es=m((0,y.createSelector)(it,s=>(s==null?void 0:s.audioLevel)||0)),ts=(s,e)=>{let t=st(e)(s);return it(s,t==null?void 0:t.id)},ss=m((0,y.createSelector)(ts,s=>(s==null?void 0:s.audioLevel)||0)),is=m((s,e)=>{let t=D(s,e);if(t){let i=t==null?void 0:t.auxiliaryTracks.find(o=>G(s.tracks[o]));return i?s.tracks[i]:void 0}}),os=m((0,y.createSelector)(T,D,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return J(o)&&j(o)});return t?s[t]:void 0})),rs=m((0,y.createSelector)(T,D,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return J(o)&&G(o)});return t?s[t]:void 0})),as=m((0,y.createSelector)(T,D,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return ee(o)&&G(o)});return t?s[t]:void 0})),Re=m((0,y.createSelector)(T,D,(s,e)=>U(s,e))),ns=s=>(0,y.createSelector)(Re(s),e=>e.video),ve=s=>(0,y.createSelector)(Re(s),e=>e.audio),cs=m((s,e)=>{let t=D(s,e);return V(s,t==null?void 0:t.audioTrack)}),ls=m((s,e)=>{let t=D(s,e);return V(s,t==null?void 0:t.videoTrack)}),De=m((s,e)=>{if(e&&s.tracks[e])return s.tracks[e].volume===0}),ds=m((s,e)=>{let t=D(s,e);return De(t==null?void 0:t.audioTrack)(s)}),Ss=m((s,e)=>{let t=ve(e)(s);return De(t==null?void 0:t.id)(s)}),Ie=m((s,e)=>{let t=Pe(s,e);if(t){if(t.type!=="audio"){p.w("Please pass audio track here");return}return t.volume}}),us=m((s,e)=>{let t=D(s,e);return Ie(t==null?void 0:t.audioTrack)(s)}),ps=m((s,e)=>{let t=ve(e)(s);return Ie(t==null?void 0:t.id)(s)}),Ms=m((s,e)=>{let t=Pe(s,e);if(t){if(t.type!=="video"){p.w("Please pass video track here");return}return t.layer}}),ot=(0,y.createSelector)([W,ue,ke],(s,e,t)=>{if(!!t)return s.filter(i=>{var o;return!i.recipientPeer&&!((o=i.recipientRoles)==null?void 0:o.length)||![e,t].includes(i.sender)?!1:[e,t].includes(i.recipientPeer)})}),rt=(0,y.createSelector)([W,et],(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})}),at=(0,y.createSelector)(W,s=>s.filter(e=>{var t;return!e.recipientPeer&&!((t=e.recipientRoles)==null?void 0:t.length)})),ms=(0,y.createSelector)([rt,et],s=>s?s.filter(e=>!e.read).length:0),gs=(0,y.createSelector)([ot,ke],s=>s?s.filter(e=>!e.read).length:0),hs=(0,y.createSelector)(at,s=>s.filter(e=>!e.read).length),Ts=m(ot),ys=m(rt),Hs=m(ms),fs=m(gs),ks=s=>(0,y.createSelector)([te],e=>e.filter(t=>t.roleName===s)),Ps=s=>(0,y.createSelector)(b(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),{}}});var re=R(require("reselect")),Rs=(0,re.createSelector)([v,T],(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}})),vs=s=>s.roleChangeRequests[0]||null,Ds=(0,re.createSelector)([vs,v,x],(s,e,t)=>s?{requestedBy:e[s.requestedBy],role:t[s.roleName],token:s.token}:null),Is=(0,re.createSelector)([Y],s=>{var o;let e=!1,t=!1,i=!1;return((o=s==null?void 0:s.publishParams)==null?void 0:o.allowed)&&(e=s.publishParams.allowed.includes("video"),t=s.publishParams.allowed.includes("audio"),i=s.publishParams.allowed.includes("screen")),{video:e,audio:t,screen:i}});var B=R(require("reselect"));var Es=s=>(0,B.createSelector)([x],e=>e[s]),bs=(0,B.createSelector)([N,T],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),As=(0,B.createSelector)([w,T],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Cs=s=>(0,B.createSelector)([bs],e=>e.includes(s)),Ls=s=>(0,B.createSelector)([As],e=>e.includes(s));var z=R(require("@100mslive/hms-video"));var ae=R(require("@100mslive/hms-video"));function nt(s){return s instanceof ae.HMSRemoteAudioTrack||s instanceof ae.HMSRemoteVideoTrack}var ne=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){p.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===S.audio?He:fe,t=this.store.getState(e.selection);if(!t.id){p.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`)}};var ct={[n.HMSPeerUpdate.PEER_JOINED]:M.PEER_JOINED,[n.HMSPeerUpdate.PEER_LEFT]:M.PEER_LEFT,[n.HMSPeerUpdate.ROLE_UPDATED]:M.ROLE_UPDATED,[n.HMSPeerUpdate.AUDIO_TOGGLED]:"PEER_AUDIO_UPDATED",[n.HMSPeerUpdate.VIDEO_TOGGLED]:"PEER_VIDEO_UPDATED",[n.HMSPeerUpdate.NAME_UPDATED]:M.NAME_UPDATED,[n.HMSPeerUpdate.METADATA_UPDATED]:M.METADATA_UPDATED},lt={[n.HMSTrackUpdate.TRACK_ADDED]:M.TRACK_ADDED,[n.HMSTrackUpdate.TRACK_REMOVED]:M.TRACK_REMOVED,[n.HMSTrackUpdate.TRACK_MUTED]:M.TRACK_MUTED,[n.HMSTrackUpdate.TRACK_UNMUTED]:M.TRACK_UNMUTED,[n.HMSTrackUpdate.TRACK_DEGRADED]:M.TRACK_DEGRADED,[n.HMSTrackUpdate.TRACK_RESTORED]:M.TRACK_RESTORED},dt={[n.HMSPeerUpdate.PEER_JOINED]:"peerJoined",[n.HMSPeerUpdate.PEER_LEFT]:"peerLeft",[n.HMSPeerUpdate.NAME_UPDATED]:"peerNameUpdated",[n.HMSPeerUpdate.METADATA_UPDATED]:"peerMetadataUpdated"};var Ee=class{constructor(e,t,i){this.hmsSDKTracks={};this.hmsSDKPeers={};this.isRoomJoinCalled=!1;this.setProgress=({type:e,progress:t})=>{this.setState(i=>{i.playlist[e].progress=t,i.playlist[e].currentTime=this.sdk.getPlaylistManager().getCurrentTime(e)},"playlistProgress")};this.syncPlaylistState=e=>{this.setState(t=>{Object.assign(t.playlist,h.convertPlaylist(this.sdk.getPlaylistManager()))},e)};this.sendPeerUpdateNotification=(e,t)=>{let i=this.store.getState(b(t.peerId)),o="peerUpdate";o=dt[e],this.syncRoomState(o),i||(i=this.store.getState(b(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}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 z.HMSRemoteVideoTrack?(i.preferLayer(t),this.updateVideoLayer(e,"setPreferredLayer")):p.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(oe);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 p.e("Cannot show preview. Failed to connect to room - ",i),i}})}join(e){if(this.isRoomJoinCalled){this.logPossibleInconsistency("room join is called again");return}try{this.sdkJoinWithListeners(e),this.isRoomJoinCalled=!0,this.setState(t=>{t.room.roomState=H.Connecting},"join")}catch(t){throw this.isRoomJoinCalled=!1,p.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}return this.sdk.leave().then(()=>{this.resetState("leave"),p.i("left room")}).catch(t=>{p.e("error in leaving room - ",t)})})}setScreenShareEnabled(e,t){return c(this,null,function*(){e?yield this.startScreenShare(t):yield this.stopScreenShare()})}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(w);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(u=>{u.tracks[e].displayEnabled=!t},"rollbackDisplayEnabled"),this.hmsNotifications.sendError(h.convertException(a)),a}let o=t?n.HMSTrackUpdate.TRACK_UNMUTED:n.HMSTrackUpdate.TRACK_MUTED;this.hmsNotifications.sendTrackUpdate(o,e)})}setAudioSettings(e){return c(this,null,function*(){let t=this.store.getState(w);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(x),r=t.map(u=>o[u]),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 p.w("sendMessage","Failed to send message",t),Error(`sendMessage Failed - ${JSON.stringify(t)}`);let i=h.convertMessage(e);return i.read=!0,i.senderName="You",this.onHMSMessage(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())}),se)});yield this.attachVideoInternal(e,t)})}detachVideo(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i&&i.type==="video"?(yield i.removeSink(t),this.updateVideoLayer(e,"detachVideo")):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")})}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||p.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)})}rejectChangeRole(e){this.removeRoleChangeRequest(e)}endRoom(e,t){return c(this,null,function*(){let i=this.store.getState(he);if(!(i==null?void 0:i.endRoom)){p.w("You are not allowed to perform this action - endRoom");return}yield this.sdk.endRoom(e,t)})}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)})}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&&nt(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(x);t.roles=e.roles.map(o=>i[o])}yield this.sdk.changeMultiTrackState(t)})}setLogLevel(e){p.level=e,this.sdk.setLogLevel(e)}resetState(e="resetState"){this.setState(t=>{Object.assign(t,F())},e),this.isRoomJoinCalled=!1,this.hmsSDKTracks={},p.cleanUp()}sdkJoinWithListeners(e){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)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)})}onRemovedFromRoom(e){var i;let t=this.store.getState(b((i=e.requestedBy)==null?void 0:i.peerId));this.hmsNotifications.sendLeaveRoom(K(_({},e),{requestedBy:t||void 0})),p.i("resetting state after peer removed",e),this.resetState(e.roomEnded||!t?"roomEnded":"removedFromRoom")}onDeviceChange(e){let t=e.devices;if(!t)return;let i=this.store.getState(E);if(this.setState(o=>{C(o.devices.audioInput,t.audioInput)||(o.devices.audioInput=t.audioInput),C(o.devices.videoInput,t.videoInput)||(o.devices.videoInput=t.videoInput),C(o.devices.audioOutput,t.audioOutput)||(o.devices.audioOutput=t.audioOutput),this.hmsSDKPeers[i==null?void 0:i.id]&&Object.assign(o.settings,this.getMediaSettings(this.hmsSDKPeers[i==null?void 0:i.id]))},"deviceChange"),e.selection){let o=h.convertDeviceChangeUpdate(e);this.hmsNotifications.sendDeviceChange(o)}}sdkPreviewWithListeners(e){return c(this,null,function*(){yield this.sdk.preview(e,{onPreview:this.onPreview.bind(this),onError:this.onError.bind(this),onDeviceChange:this.onDeviceChange.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)})})}startScreenShare(e){return c(this,null,function*(){this.store.getState(ie)?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(ie)?(yield this.sdk.stopScreenShare(),this.syncRoomState("stopScreenShare")):this.logPossibleInconsistency("stop screenshare is called while it's not on")})}attachVideoInternal(e,t){return c(this,null,function*(){let i=this.hmsSDKTracks[e];i&&i.type==="video"?(yield i.addSink(t),this.updateVideoLayer(e,"attachVideo")):this.logPossibleInconsistency("no video track found to add sink")})}syncRoomState(e){p.time(`store-sync-${e}`);let t={},i=[],o={},r={},a={},u=this.sdk.getPeers();for(let f of u){let A=h.convertPeer(f);t[A.id]=A,i.push(A.id),this.hmsSDKPeers[A.id]=f;let q=[f.audioTrack,f.videoTrack,...f.auxiliaryTracks];for(let Z of q){if(!Z)continue;let Le=h.convertTrack(Z);o[Le.id]=Le,r[Z.trackId]=Z}A.isLocal&&Object.assign(a,this.getMediaSettings(f))}let g=this.sdk.getRecordingState(),P=this.sdk.getRTMPState(),Ce=this.sdk.getHLSState();this.setState(f=>{f.room.peers=i;let A=f.peers,q=f.tracks;Ue(A,t),_e(q,o),Object.assign(f.settings,a),this.hmsSDKTracks=r,Object.assign(f.roles,h.convertRoles(this.sdk.getRoles())),Object.assign(f.playlist,h.convertPlaylist(this.sdk.getPlaylistManager())),Object.assign(f.room,h.convertRecordingStreamingState(g,P,Ce))},e),p.timeEnd(`store-sync-${e}`)}onPreview(e){this.setState(t=>{Object.assign(t.room,h.convertRoom(e)),t.room.roomState=H.Preview},"previewStart"),this.syncRoomState("previewSync")}onJoin(e){let t=this.sdk.getPlaylistManager();this.audioPlaylist=new ne(t,S.audio,this.syncPlaylistState.bind(this),this.store),this.videoPlaylist=new ne(t,S.video,this.syncRoomState.bind(this),this.store),this.syncRoomState("joinSync"),this.setState(i=>{Object.assign(i.room,h.convertRoom(e)),i.room.isConnected=!0,i.room.roomState=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(h.convertPlaylistItem(t,i)),this.syncPlaylistState(`${i.type}PlaylistItemEnded`)})}onRoomUpdate(e,t){this.setState(i=>{Object.assign(i.room,h.convertRoom(t))},"RoomUpdate")}onPeerUpdate(e,t){if(![n.HMSPeerUpdate.BECAME_DOMINANT_SPEAKER,n.HMSPeerUpdate.RESIGNED_DOMINANT_SPEAKER].includes(e)){if(Array.isArray(t)){this.syncRoomState("peersJoined");let i=[];for(let o of t){let r=this.store.getState(b(o.peerId));r&&i.push(r)}this.hmsNotifications.sendPeerList(i);return}this.sendPeerUpdateNotification(e,t)}}onTrackUpdate(e,t,i){if(e===n.HMSTrackUpdate.TRACK_REMOVED)this.hmsNotifications.sendTrackUpdate(e,t.trackId),this.handleTrackRemove(t,i);else{let o=e===n.HMSTrackUpdate.TRACK_ADDED?"trackAdded":"trackUpdate";this.syncRoomState(o),this.hmsNotifications.sendTrackUpdate(e,t.trackId)}}onMessageReceived(e){let t=h.convertMessage(e);t.read=!1,this.onHMSMessage(t),this.hmsNotifications.sendMessageReceived(t)}onHMSMessage(e){this.setState(t=>{e.id=String(this.store.getState(me)+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")}onChangeTrackStateRequest(e){let t=this.store.getState(b(e.requestedBy.peerId)),i=this.getStoreLocalTrackIDfromSDKTrack(e.track),o=this.store.getState(X(i));if(!t)return this.logPossibleInconsistency(`Not found peer who requested track state change, ${e.requestedBy}`);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,track:o,enabled:e.enabled})}onChangeMultiTrackStateRequest(e){let t=this.store.getState(b(e.requestedBy.peerId));if(!t)return this.logPossibleInconsistency(`Not found peer who requested track state change, ${e.requestedBy}`);e.enabled||this.syncRoomState("changeMultiTrackStateRequest");let i=[],o=this.store.getState(T);for(let r of e.tracks){let a=this.getStoreLocalTrackIDfromSDKTrack(r);a&&o[a]&&i.push(o[a])}this.hmsNotifications.sendChangeMultiTrackStateRequest({requestedBy:t,tracks:i,enabled:e.enabled,type:e.type,source:e.source})}onReconnected(){this.syncRoomState("reconnectedSync"),this.hmsNotifications.sendReconnected(),this.setState(e=>{e.room.roomState=H.Connected},"reconnected")}onReconnecting(e){let t=h.convertException(e);p.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=h.convertException(e);t.isTerminal?(this.leave().then(()=>p.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.hmsNotifications.sendError(t),p.e("received error from sdk",t)}updateVideoLayer(e,t){let i=this.hmsSDKTracks[e];i&&i instanceof z.HMSRemoteVideoTrack&&this.setState(o=>{o.tracks[e].layer=i.getSimulcastLayer()},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 u=o==null?void 0:o.auxiliaryTracks.indexOf(a);u>-1&&this.isSameStoreSDKTrack(a,o==null?void 0:o.auxiliaryTracks[u])&&(o==null||o.auxiliaryTracks.splice(u,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(Se),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 z.HMSAudioTrack?(i.setVolume(e),this.setState(o=>{let r=o.tracks[t];r&&(r.volume=e)},"trackVolume")):p.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(Me),o=this.store.getState(se);return i&&!o}logPossibleInconsistency(e){p.w("possible inconsistency detected - ",e)}addRemoveVideoPlugin(e,t,i){return c(this,null,function*(){if(!e){p.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){p.w("Invalid plugin received in store");return}let i=this.store.getState(w);if(i){let o=this.hmsSDKTracks[i];o?(t==="add"?yield o.addPlugin(e):t==="remove"&&(yield o.removePlugin(e)),this.syncRoomState(`${t}AudioPlugin`)):this.logPossibleInconsistency(`track ${i} not present, unable to remove plugin`)}})}isSameStoreSDKTrack(e,t){var i;return t?((i=this.hmsSDKTracks[t])==null?void 0:i.trackId)===e:!1}onRoleChangeRequest(e){this.setState(t=>{t.roleChangeRequests.length===0&&t.roleChangeRequests.push(h.convertRoleChangeRequest(e))},"roleChangeRequest")}removeRoleChangeRequest(e){this.setState(t=>{let i=t.roleChangeRequests.findIndex(o=>o.token===e.token);i!==-1&&t.roleChangeRequests.splice(i,1)},"removeRoleChangeRequest")}onRoleUpdate(){this.syncRoomState("roleUpdate")}getStoreLocalTrackIDfromSDKTrack(e){return this.store.getState(pe).find(i=>this.hmsSDKTracks[i].trackId===e.trackId)}};var St=R(require("eventemitter2"));var be="hmsNotification",Ae=class{constructor(e){this.id=0;this.onNotification=e=>(this.eventEmitter.addListener(be,e),()=>{this.eventEmitter.removeListener(be,e)});this.store=e,this.eventEmitter=new St.EventEmitter2}sendPlaylistTrackEnded(e){let t=this.createNotification(M.PLAYLIST_TRACK_ENDED,e,k.INFO);this.emitEvent(t)}sendDeviceChange(e){var i;let t=this.createNotification(M.DEVICE_CHANGE_UPDATE,e,e.error?k.ERROR:k.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?M.ROOM_ENDED:M.REMOVED_FROM_ROOM,e,k.INFO,`${e.roomEnded?"Room ended":"Removed from room"} ${t?`by ${t}`:""}`);this.emitEvent(i)}sendPeerList(e){let t=this.createNotification(M.PEER_LIST,e,k.INFO);this.emitEvent(t)}sendPeerUpdate(e,t){let i=this.store.getState(b(t==null?void 0:t.id))||t,o=ct[e];if(o){let r=this.createNotification(o,i,k.INFO);this.emitEvent(r)}}sendTrackUpdate(e,t){let i=this.store.getState(X(t)),o=lt[e];if(o){let r=this.createNotification(o,i,k.INFO);this.emitEvent(r)}}sendMessageReceived(e){let t=this.createNotification(M.NEW_MESSAGE,e,k.INFO);this.emitEvent(t)}sendError(e){let t=this.createNotification(M.ERROR,e,k.ERROR);this.emitEvent(t)}sendReconnecting(e){let t=this.createNotification(M.RECONNECTING,e,k.ERROR);this.emitEvent(t)}sendReconnected(){let e=this.createNotification(M.RECONNECTED,null,k.INFO);this.emitEvent(e)}sendChangeTrackStateRequest(e){let t=this.createNotification(M.CHANGE_TRACK_STATE_REQUEST,e,k.INFO);this.emitEvent(t)}sendChangeMultiTrackStateRequest(e){let t=this.createNotification(M.CHANGE_MULTI_TRACK_STATE_REQUEST,e,k.INFO);this.emitEvent(t)}emitEvent(e){this.eventEmitter.emit(be,e)}createNotification(e,t,i,o=""){return this.id++,{id:this.id,type:e,message:o,data:t,severity:i}}};var O=class{constructor(e,t,i){e?this.store=e:this.store=O.createNewHMSStore(),i?this.notifications=i:this.notifications=new Ae(this.store),t?this.actions=t:this.actions=new Ee(this.store,new mt.HMSSdk,this.notifications),this.initialTriggerOnSubscribe=!1}triggerOnSubscribe(){this.initialTriggerOnSubscribe||(O.makeStoreTriggerOnSubscribe(this.store),this.initialTriggerOnSubscribe=!0)}getStore(){return this.store}getHMSActions(){return this.actions}getNotifications(){return{onNotification:this.notifications.onNotification}}static createNewHMSStore(){let e=(0,pt.default)(()=>F()),t=e.setState;e.setState=r=>{let a=typeof r=="function"?(0,ut.default)(r):r;t(a)};let i=e.getState;e.getState=r=>{if(r){let a=r.name||"byIDSelector";window.selectorsCount||(window.selectorsCount={}),window.selectorsCount[a]=(window.selectorsCount[a]||0)+1;let u=performance.now(),g=r(i()),P=performance.now()-u;return P>1&&(window.expensiveSelectors=window.expensiveSelectors||new Map,window.expensiveSelectors.set(a,P)),g}return i()},O.useShallowCheckInSubscribe(e);let o=O.setUpDevtools(e,"HMSStore");return K(_({},e),{namedSetState:o})}static makeStoreTriggerOnSubscribe(e){let t=e.subscribe;e.subscribe=(i,o,r)=>(i(e.getState(o),void 0),t(i,o,r))}static useShallowCheckInSubscribe(e){let t=e.subscribe;e.subscribe=(i,o,r)=>(o||(o=a=>a),r=r||Mt.default,t(i,o,r))}static setUpDevtools(e,t){let i;try{i=window.__REDUX_DEVTOOLS_EXTENSION__||window.top.__REDUX_DEVTOOLS_EXTENSION__}catch(a){}if(!i)return a=>{e.setState(a)};let o=i.connect(O.devtoolsOptions(t));o.prefix=t?`${t} > `:"";let r=e.setState;return e.setState=a=>{r(a),o.send(`${o.prefix}setState`,e.getState())},o.subscribe(O.devtoolsSubscribe(o,e,r)),o.send("setUpStore",e.getState()),(a,u)=>{r(a);let g=u||`${o.prefix}action`;o.send(g,e.getState())}}static devtoolsOptions(e){return{name:e,actionsBlacklist:["audioLevel","playlistProgress"]}}static devtoolsSubscribe(e,t,i){return o=>{var r,a,u,g;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 P=(u=o.payload.nextLiftedState)==null?void 0:u.actionsById;(((g=o.payload.nextLiftedState)==null?void 0:g.computedStates)||[]).forEach(({state:f},A)=>{let q=P[A]||`${e.prefix}setState`;A===0?e.init(f):(i(f),e.send(q,t.getState()))})}}}};
|
|
1
|
+
var Nt=Object.create;var Y=Object.defineProperty,Ut=Object.defineProperties,_t=Object.getOwnPropertyDescriptor,Kt=Object.getOwnPropertyDescriptors,Vt=Object.getOwnPropertyNames,ze=Object.getOwnPropertySymbols,Bt=Object.getPrototypeOf,Xe=Object.prototype.hasOwnProperty,qt=Object.prototype.propertyIsEnumerable;var Ze=(s,e,t)=>e in s?Y(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,q=(s,e)=>{for(var t in e||(e={}))Xe.call(e,t)&&Ze(s,t,e[t]);if(ze)for(var t of ze(e))qt.call(e,t)&&Ze(s,t,e[t]);return s},W=(s,e)=>Ut(s,Kt(e)),et=s=>Y(s,"__esModule",{value:!0});var tt=(s,e)=>{et(s);for(var t in e)Y(s,t,{get:e[t],enumerable:!0})},jt=(s,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Vt(e))!Xe.call(s,r)&&r!=="default"&&Y(s,r,{get:()=>e[r],enumerable:!(t=_t(e,r))||t.enumerable});return s},I=s=>jt(et(Y(s!=null?Nt(Bt(s)):{},"default",s&&s.__esModule&&"default"in s?{get:()=>s.default,enumerable:!0}:{value:s,enumerable:!0})),s);var c=(s,e,t)=>new Promise((r,i)=>{var o=d=>{try{l(t.next(d))}catch(P){i(P)}},n=d=>{try{l(t.throw(d))}catch(P){i(P)}},l=d=>d.done?r(d.value):Promise.resolve(d.value).then(o,n);l((t=t.apply(s,e)).next())});tt(exports,{HMSAudioPluginType:()=>a.HMSAudioPluginType,HMSLogLevel:()=>a.HMSLogLevel,HMSMessageType:()=>He,HMSNotificationSeverity:()=>R,HMSNotificationTypes:()=>h,HMSPlaylistType:()=>M,HMSReactiveStore:()=>L,HMSRoomState:()=>y,HMSStats:()=>ae,HMSVideoPluginType:()=>a.HMSVideoPluginType,createDefaultStatsStore:()=>z,createDefaultStoreState:()=>Q,selectAudioPlaylist:()=>we,selectAudioPlaylistTrackByPeerID:()=>Rs,selectAudioTrackByPeerID:()=>gt,selectAudioTrackVolume:()=>je,selectAudioVolumeByPeerID:()=>As,selectAuxiliaryAudioByPeerID:()=>fs,selectAuxiliaryTracksByPeerID:()=>gs,selectAvailableRoleNames:()=>cs,selectBroadcastMessages:()=>ft,selectBroadcastMessagesUnreadCount:()=>ws,selectCameraStreamByPeerID:()=>hs,selectDegradedTracks:()=>os,selectDevices:()=>Ft,selectDominantSpeaker:()=>Xt,selectHLSState:()=>us,selectHMSMessages:()=>te,selectHMSMessagesCount:()=>Ae,selectHMSStats:()=>Te,selectIsAllowedToPublish:()=>$s,selectIsAllowedToSubscribe:()=>ls,selectIsAudioLocallyMuted:()=>qe,selectIsConnectedToRoom:()=>Gt,selectIsInPreview:()=>as,selectIsLocalAudioEnabled:()=>Zt,selectIsLocalAudioPluginPresent:()=>Qs,selectIsLocalScreenShared:()=>pe,selectIsLocalVideoDisplayEnabled:()=>Ee,selectIsLocalVideoEnabled:()=>ue,selectIsLocalVideoPluginPresent:()=>Ys,selectIsLocallyMutedByPeerID:()=>bs,selectIsPeerAudioEnabled:()=>vs,selectIsPeerVideoEnabled:()=>Ds,selectIsScreenShareLocallyMutedByPeerID:()=>Es,selectIsSomeoneScreenSharing:()=>es,selectLocalAudioTrackID:()=>A,selectLocalMediaSettings:()=>De,selectLocalPeer:()=>E,selectLocalPeerID:()=>K,selectLocalPeerRole:()=>se,selectLocalTrackIDs:()=>be,selectLocalVideoTrackID:()=>C,selectMessageIDsInOrder:()=>ve,selectMessagesByPeerID:()=>Ns,selectMessagesByRole:()=>Us,selectMessagesMap:()=>Ie,selectMessagesUnreadCountByPeerID:()=>Ks,selectMessagesUnreadCountByRole:()=>_s,selectPeerAudioByID:()=>ys,selectPeerByID:()=>O,selectPeerCount:()=>Jt,selectPeerMetadata:()=>Bs,selectPeerNameByID:()=>Ke,selectPeerScreenSharing:()=>at,selectPeerSharingAudio:()=>ts,selectPeerSharingAudioPlaylist:()=>is,selectPeerSharingVideoPlaylist:()=>rs,selectPeers:()=>de,selectPeersByRole:()=>Vs,selectPeersMap:()=>v,selectPeersScreenSharing:()=>ss,selectPeersWithAudioStatus:()=>qs,selectPermissions:()=>xe,selectRTMPState:()=>ds,selectRecordingState:()=>Ss,selectRemotePeers:()=>zt,selectRoleByRoleName:()=>Fs,selectRoleChangeRequest:()=>Ws,selectRolesMap:()=>_,selectRoom:()=>b,selectRoomStartTime:()=>Ms,selectRoomStarted:()=>Ce,selectRoomState:()=>x,selectScreenShareAudioByPeerID:()=>Be,selectScreenShareByPeerID:()=>Is,selectScreenSharesByPeerId:()=>Ve,selectScreenshareAudioVolumeByPeerID:()=>Cs,selectSessionId:()=>ps,selectSimulcastLayerByTrack:()=>xs,selectSpeakers:()=>nt,selectTrackAudioByID:()=>Ts,selectTrackByID:()=>ie,selectTracksMap:()=>H,selectUnreadHMSMessagesCount:()=>ns,selectVideoPlaylist:()=>Ne,selectVideoPlaylistAudioTrackByPeerID:()=>Ps,selectVideoPlaylistVideoTrackByPeerID:()=>ks,selectVideoTrackByPeerID:()=>ht});var xt=I(require("immer")),Lt=I(require("zustand/vanilla")),Ot=I(require("zustand/shallow")),wt=I(require("@100mslive/hms-video"));var y;(function(n){n.Disconnected="Disconnected",n.Preview="Preview",n.Connecting="Connecting",n.Connected="Connected",n.Reconnecting="Reconnecting",n.Failed="Failed"})(y||(y={}));var Q=()=>({room:{id:"",isConnected:!1,name:"",peers:[],shareableLink:"",localPeer:"",hasWaitingRoom:!1,roomState:y.Disconnected,recording:{browser:{running:!1},server:{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:{},settings:{audioInputDeviceId:"",audioOutputDeviceId:"",videoInputDeviceId:""},devices:{audioInput:[],audioOutput:[],videoInput:[]},roles:{},roleChangeRequests:[],errors:[]}),z=()=>({peerStats:{},trackStats:{},localPeer:{id:""}});var He;(function(e){e.CHAT="chat"})(He||(He={}));var R;(function(r){r.INFO="info",r.ERROR="error",r.CRITICAL="critical"})(R||(R={}));var h;(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.ROLE_CHANGE_REQUEST="ROLE_CHANGE_REQUEST",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"})(h||(h={}));var M;(function(t){t.audio="audio",t.video="video"})(M||(M={}));var a=I(require("@100mslive/hms-video"));var U=I(require("@100mslive/hms-video"));var st=(s,e)=>{let t=Re(Object.keys(s),Object.keys(e));for(let r of t){let i=s[r],o=e[r];fe(i,o)?(N(i.auxiliaryTracks,o.auxiliaryTracks)&&(o.auxiliaryTracks=i.auxiliaryTracks),Object.assign(i,o)):ke(i,o)?delete s[r]:Pe(i,o)&&(s[r]=o)}},rt=(s,e)=>{let t=Re(Object.keys(s),Object.keys(e));for(let r of t){let i=s[r],o=e[r];fe(i,o)?(Wt(i,o),Object.assign(i,o)):ke(i,o)?delete s[r]:Pe(i,o)&&(s[r]=o)}},ye=(s,e)=>{let t=Re(Object.keys(s),Object.keys(e));for(let r of t){let i=s[r],o=e[r];fe(i,o)?Object.assign(i,o):ke(i,o)?delete s[r]:Pe(i,o)&&(s[r]=o)}},Wt=(s,e)=>{s.plugins&&N(s.plugins,e.plugins)&&(e.plugins=s.plugins),s.layerDefinitions&&N(s.layerDefinitions,e.layerDefinitions)&&(e.layerDefinitions=s.layerDefinitions)},fe=(s,e)=>s&&e,ke=(s,e)=>s&&!e,Pe=(s,e)=>!s&&e,N=(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},Re=(s,e)=>{let t=new Set;for(let r of s)t.add(r);for(let r of e)t.add(r);return Array.from(t)};var T=class{static convertPeer(e){var t,r,i;return{id:e.peerId,name:e.name,roleName:(t=e.role)==null?void 0:t.name,isLocal:e.isLocal,videoTrack:(r=e.videoTrack)==null?void 0:r.trackId,audioTrack:(i=e.audioTrack)==null?void 0:i.trackId,auxiliaryTracks:e.auxiliaryTracks.map(o=>o.trackId),customerUserId:e.customerUserId,customerDescription:e.metadata,metadata:e.metadata}}static convertTrack(e,t){let r={id:e.trackId,source:e.source,type:e.type,enabled:e.enabled,displayEnabled:e.enabled,peerId:e.peerId||t};return this.enrichTrack(r,e),r}static enrichTrack(e,t){let r=t.getMediaTrackSettings();e.source==="screen"&&e.type==="video"&&(e.displaySurface=r.displaySurface),e.height=r.height,e.width=r.width,t instanceof U.HMSRemoteAudioTrack&&(e.volume=t.getVolume()||0),T.updateDeviceID(e,t),T.enrichVideoTrack(e,t),T.enrichPluginsDetails(e,t)}static updateDeviceID(e,t){var r;t instanceof U.HMSLocalVideoTrack||t instanceof U.HMSLocalAudioTrack?e.deviceID=t.settings.deviceId:e.deviceID=(r=t.getMediaTrackSettings())==null?void 0:r.deviceId}static enrichVideoTrack(e,t){t instanceof U.HMSRemoteVideoTrack&&(e.layer=t.getSimulcastLayer(),e.degraded=t.degraded,N(t.getSimulcastDefinitions(),e.layerDefinitions)||(e.layerDefinitions=t.getSimulcastDefinitions()))}static enrichPluginsDetails(e,t){(t instanceof U.HMSLocalVideoTrack||t instanceof U.HMSLocalAudioTrack)&&(N(t.getPlugins(),e.plugins)||(e.plugins=t.getPlugins()))}static convertRoom(e){var t,r,i,o,n,l,d;return{id:e.id,name:e.name,localPeer:(r=(t=e.localPeer)==null?void 0:t.peerId)!=null?r:"",hasWaitingRoom:e.hasWaitingRoom,shareableLink:e.shareableLink,recording:{browser:{running:!!((i=e.recording)==null?void 0:i.browser.running)},server:{running:!!((o=e.recording)==null?void 0:o.server.running)}},rtmp:{running:!!((n=e.rtmp)==null?void 0:n.running)},hls:{running:!!((l=e.hls)==null?void 0:l.running),variants:((d=e.hls)==null?void 0:d.variants)||[]},sessionId:e.sessionId,startedAt:e.startedAt&&new Date(e.startedAt)}}static convertMessage(e){var t,r,i;return{sender:e.sender.peerId,senderName:e.sender.name,senderRole:(t=e.sender.role)==null?void 0:t.name,senderUserId:e.sender.customerUserId,recipientPeer:(r=e.recipientPeer)==null?void 0:r.peerId,recipientRoles:(i=e.recipientRoles)==null?void 0:i.map(o=>o.name),time:e.time,type:e.type,message:e.message}}static convertRoles(e){let t={};return e&&e.forEach(r=>{t[r.name]=r}),t}static convertRoleChangeRequest(e){return{requestedBy:e.requestedBy.peerId,roleName:e.role.name,token:e.token}}static convertException(e){return{code:e.code,action:e.action,name:e.name,message:e.message,description:e.description,isTerminal:e.isTerminal,nativeError:e.nativeError,timestamp:new Date}}static convertDeviceChangeUpdate(e){let t={devices:e.devices,selection:e.selection,type:e.type};return e.error&&(t.error=this.convertException(e.error)),t}static convertPlaylist(e){let t=this.getConvertedPlaylistType(e,M.audio),r=this.getConvertedPlaylistType(e,M.video);return{audio:t,video:r}}static convertPlaylistItem(e,t){let r=t.type,i=e.getCurrentSelection(r),o=e.isPlaying(r),n=t.url===(i==null?void 0:i.url);return W(q({},t),{type:t.type,selected:n,playing:n&&o})}static convertConnectionStats(e){let t=q({},e);return delete t.rawStatsArray,delete t.rawStats,t}static getConvertedPlaylistType(e,t){let r={},i=e.getCurrentSelection(t),o=e.getCurrentProgress(t),n=e.getVolume(t),l=e.getList(t),d=e.getCurrentIndex(t);return e.getList(t).forEach(P=>{r[P.id]=T.convertPlaylistItem(e,P)}),{list:r,selection:{id:i==null?void 0:i.id,hasPrevious:d>0,hasNext:d<l.length-1},progress:o,volume:n,currentTime:e.getCurrentTime(t),playbackRate:e.getPlaybackRate(t)}}static convertRecordingStreamingState(e,t,r){var i,o;return{recording:{browser:{running:!!((i=e==null?void 0:e.browser)==null?void 0:i.running)},server:{running:!!((o=e==null?void 0:e.server)==null?void 0:o.running)}},rtmp:{running:!!(t==null?void 0:t.running)},hls:{variants:(r==null?void 0:r.variants)||[],running:!!(r==null?void 0:r.running)}}}};var u=I(require("reselect"));function j(s,e,t=$t){let r,i;if(e)for(let o of e.auxiliaryTracks){let n=s[o];t(n)&&(i=X(n)?n:i,r=Z(n)?n:r)}return{video:r,audio:i}}function X(s){return s&&s.type==="audio"}function Z(s){return s&&s.type==="video"}function $t(s){return s&&s.source==="screen"}function Se(s){return s&&s.source==="audioplaylist"}function ee(s){return s&&s.source==="videoplaylist"}function it(s){return Boolean(s==null?void 0:s.degraded)}function $(s,e){return e&&s.tracks[e]?s.tracks[e].enabled:!1}function ot(s,e){return e&&s.tracks[e]?s.tracks[e].displayEnabled:!1}var b=s=>s.room,v=s=>s.peers,Ie=s=>s.messages.byID,ve=s=>s.messages.allIDs,H=s=>s.tracks,De=s=>s.settings,Ft=s=>s.devices,nt=s=>s.speakers,Gt=(0,u.createSelector)([b],s=>s&&s.isConnected),Jt=(0,u.createSelector)(b,s=>s.peers.length),de=(0,u.createSelector)([b,v],(s,e)=>s.peers.map(t=>e[t])),Yt=(0,u.createSelector)(H,s=>Object.values(s)),E=(0,u.createSelector)(b,v,(s,e)=>e[s.localPeer]),K=(0,u.createSelector)(b,s=>s.localPeer),A=(0,u.createSelector)(E,s=>s==null?void 0:s.audioTrack),C=(0,u.createSelector)(E,s=>s==null?void 0:s.videoTrack),Qt=(0,u.createSelector)(E,s=>s==null?void 0:s.auxiliaryTracks),be=(0,u.createSelector)([A,C,Qt],(s,e,t)=>{let r=[...t];return s&&r.unshift(s),e&&r.unshift(e),r}),zt=(0,u.createSelector)(de,s=>s.filter(e=>!e.isLocal)),Xt=(0,u.createSelector)(v,nt,(s,e)=>{let t=Object.entries(e).sort((r,i)=>{var l,d;let o=((l=r[1])==null?void 0:l.audioLevel)||0;return(((d=i[1])==null?void 0:d.audioLevel)||0)>o?1:-1});if(t.length>0&&t[0][1].audioLevel&&t[0][1].audioLevel>0){let r=t[0][1].peerID;if(r in s)return s[r]}return null}),Zt=s=>{let e=E(s);return $(s,e==null?void 0:e.audioTrack)},ue=s=>{let e=E(s);return $(s,e==null?void 0:e.videoTrack)},Ee=s=>{let e=E(s);return ot(s,e==null?void 0:e.videoTrack)},pe=(0,u.createSelector)(E,H,(s,e)=>{let{video:t,audio:r}=j(e,s);return!!(t||r)}),at=(0,u.createSelector)(v,H,(s,e)=>{let t;for(let r in s){let i=s[r],{video:o,audio:n}=j(e,i);if(o)return i;n&&!t&&(t=i)}return t}),es=(0,u.createSelector)(at,s=>!!s),ts=(0,u.createSelector)(v,H,(s,e)=>{for(let t in s){let r=s[t],{audio:i,video:o}=j(e,r);if(!o&&!!i)return r}}),ss=(0,u.createSelector)(v,H,(s,e)=>{let t=[],r=[];for(let i in s){let o=s[i],{video:n,audio:l}=j(e,o);n?t.push(o):l&&r.push(o)}return t.concat(r)}),rs=(0,u.createSelector)(v,H,(s,e)=>{for(let t in e){let r=e[t];if(ee(r)&&Z(r)&&r.peerId)return s[r.peerId]}}),is=(0,u.createSelector)(v,H,(s,e)=>{for(let t in e){let r=e[t];if(Se(r)&&r.peerId)return s[r.peerId]}}),os=(0,u.createSelector)(Yt,s=>s.filter(it)),Ae=(0,u.createSelector)(ve,s=>s.length),ns=(0,u.createSelector)(Ie,s=>Object.values(s).filter(e=>!e.read).length),te=(0,u.createSelector)(ve,Ie,(s,e)=>{let t=[];return s.forEach(r=>{t.push(e[r])}),t}),x=(0,u.createSelector)([b],s=>s&&s.roomState),as=(0,u.createSelector)(x,s=>s===y.Preview),Ce=(0,u.createSelector)(b,s=>s.roomState!==y.Disconnected),_=s=>s.roles,cs=(0,u.createSelector)([_],s=>Object.keys(s)),se=(0,u.createSelector)([E,_],(s,e)=>(s==null?void 0:s.roleName)?e[s.roleName]:null),ls=(0,u.createSelector)([se],s=>{var e;return((e=s==null?void 0:s.subscribeParams)==null?void 0:e.subscribeToRoles)?s.subscribeParams.subscribeToRoles.length>0:!1}),xe=(0,u.createSelector)(se,s=>s==null?void 0:s.permissions),Ss=(0,u.createSelector)(b,s=>s.recording),ds=(0,u.createSelector)(b,s=>s.rtmp),us=(0,u.createSelector)(b,s=>s.hls),ps=(0,u.createSelector)(b,s=>s.sessionId),Ms=(0,u.createSelector)(b,s=>s.startedAt);var Le=I(require("reselect"));var ct=(s=M.audio)=>e=>e.playlist[s].list,Oe=(s=M.audio)=>e=>e.playlist[s].selection,lt=(s=M.audio)=>e=>e.playlist[s].progress,St=(s=M.audio)=>e=>e.playlist[s].currentTime,dt=(s=M.audio)=>e=>e.playlist[s].playbackRate,ut=(s=M.audio)=>e=>e.playlist[s].volume,pt=(s=M.audio)=>(0,Le.createSelector)(ct(s),e=>Object.values(e)),Mt=(s=M.audio)=>(0,Le.createSelector)(ct(s),Oe(s),(e,t)=>{if(!!t.id)return e[t.id]}),we={selection:Oe(M.audio),progress:lt(M.audio),currentTime:St(M.audio),playbackRate:dt(M.audio),volume:ut(M.audio),list:pt(M.audio),selectedItem:Mt(M.audio)},Ne={selection:Oe(M.video),progress:lt(M.video),currentTime:St(M.video),playbackRate:dt(M.video),volume:ut(M.video),list:pt(M.video),selectedItem:Mt(M.video)};var k=I(require("reselect"));function p(s){return e=>t=>s(t,e)}var re="HMS-Store:",m=class{static v(e,...t){this.log(a.HMSLogLevel.VERBOSE,e,...t)}static d(...e){this.log(a.HMSLogLevel.DEBUG,...e)}static i(...e){this.log(a.HMSLogLevel.INFO,...e)}static w(...e){this.log(a.HMSLogLevel.WARN,...e)}static e(...e){this.log(a.HMSLogLevel.ERROR,...e)}static time(e){this.log(a.HMSLogLevel.TIME,"[HMSPerformanceTiming]",e)}static timeEnd(e){this.log(a.HMSLogLevel.TIMEEND,"[HMSPerformanceTiming]",e,e)}static cleanUp(){performance.clearMarks(),performance.clearMeasures()}static log(e,...t){if(!(this.level.valueOf()>e.valueOf()))switch(e){case a.HMSLogLevel.VERBOSE:{console.log(re,...t);break}case a.HMSLogLevel.DEBUG:{console.debug(re,...t);break}case a.HMSLogLevel.INFO:{console.info(re,...t);break}case a.HMSLogLevel.WARN:{console.warn(re,...t);break}case a.HMSLogLevel.ERROR:{console.error(re,...t);break}case a.HMSLogLevel.TIME:{performance.mark(t[1]);break}case a.HMSLogLevel.TIMEEND:{let r=t[0],i=t[1];try{let o=performance.measure(i,i);this.log(a.HMSLogLevel.DEBUG,r,i,o==null?void 0:o.duration),performance.clearMarks(i),performance.clearMeasures(i)}catch(o){this.log(a.HMSLogLevel.DEBUG,r,i,o)}break}}}};m.level=a.HMSLogLevel.VERBOSE;var Ue=(s,e)=>e,ms=(s,e)=>e,mt=(s,e)=>e,D=(0,k.createSelector)([v,Ue],(s,e)=>e?s[e]:null),_e=(0,k.createSelector)([H,ms],(s,e)=>e?s[e]:null),O=p(D),Ke=p((0,k.createSelector)(D,s=>s==null?void 0:s.name)),ie=p(_e),ht=p((s,e)=>{let t=D(s,e);if(t&&t.videoTrack&&t.videoTrack!=="")return s.tracks[t.videoTrack]}),gt=p((s,e)=>{let t=D(s,e);if(t&&t.audioTrack&&t.audioTrack!=="")return s.tracks[t.audioTrack]}),hs=ht,gs=p((s,e)=>{let t=D(s,e);return(t==null?void 0:t.auxiliaryTracks.map(r=>s.tracks[r]))||[]}),Tt=(s,e)=>e?s.speakers[e]:null,Ts=p((0,k.createSelector)(Tt,s=>(s==null?void 0:s.audioLevel)||0)),Hs=(s,e)=>{let t=gt(e)(s);return Tt(s,t==null?void 0:t.id)},ys=p((0,k.createSelector)(Hs,s=>(s==null?void 0:s.audioLevel)||0)),fs=p((s,e)=>{let t=D(s,e);if(t){let r=t==null?void 0:t.auxiliaryTracks.find(i=>X(s.tracks[i]));return r?s.tracks[r]:void 0}}),ks=p((0,k.createSelector)(H,D,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(r=>{let i=s[r];return ee(i)&&Z(i)});return t?s[t]:void 0})),Ps=p((0,k.createSelector)(H,D,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(r=>{let i=s[r];return ee(i)&&X(i)});return t?s[t]:void 0})),Rs=p((0,k.createSelector)(H,D,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(r=>{let i=s[r];return Se(i)&&X(i)});return t?s[t]:void 0})),Ve=p((0,k.createSelector)(H,D,(s,e)=>j(s,e))),Is=s=>(0,k.createSelector)(Ve(s),e=>e.video),Be=s=>(0,k.createSelector)(Ve(s),e=>e.audio),vs=p((s,e)=>{let t=D(s,e);return $(s,t==null?void 0:t.audioTrack)}),Ds=p((s,e)=>{let t=D(s,e);return $(s,t==null?void 0:t.videoTrack)}),qe=p((s,e)=>{if(e&&s.tracks[e])return s.tracks[e].volume===0}),bs=p((s,e)=>{let t=D(s,e);return qe(t==null?void 0:t.audioTrack)(s)}),Es=p((s,e)=>{let t=Be(e)(s);return qe(t==null?void 0:t.id)(s)}),je=p((s,e)=>{let t=_e(s,e);if(t){if(t.type!=="audio"){m.w("Please pass audio track here");return}return t.volume}}),As=p((s,e)=>{let t=D(s,e);return je(t==null?void 0:t.audioTrack)(s)}),Cs=p((s,e)=>{let t=Be(e)(s);return je(t==null?void 0:t.id)(s)}),xs=p((s,e)=>{let t=_e(s,e);if(t){if(t.type!=="video"){m.w("Please pass video track here");return}return t.layer}}),Ht=(0,k.createSelector)([te,K,Ue],(s,e,t)=>{if(!!t)return s.filter(r=>{var i;return!r.recipientPeer&&!((i=r.recipientRoles)==null?void 0:i.length)||![e,t].includes(r.sender)?!1:[e,t].includes(r.recipientPeer)})}),yt=(0,k.createSelector)([te,mt],(s,e)=>{if(!!e)return s.filter(t=>{var r,i;return((r=t.recipientRoles)==null?void 0:r.length)?(i=t.recipientRoles)==null?void 0:i.includes(e):!1})}),ft=(0,k.createSelector)(te,s=>s.filter(e=>{var t;return!e.recipientPeer&&!((t=e.recipientRoles)==null?void 0:t.length)})),Ls=(0,k.createSelector)([yt,mt],s=>s?s.filter(e=>!e.read).length:0),Os=(0,k.createSelector)([Ht,Ue],s=>s?s.filter(e=>!e.read).length:0),ws=(0,k.createSelector)(ft,s=>s.filter(e=>!e.read).length),Ns=p(Ht),Us=p(yt),_s=p(Ls),Ks=p(Os),Vs=s=>(0,k.createSelector)([de],e=>e.filter(t=>t.roleName===s)),Bs=s=>(0,k.createSelector)(O(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),{}}});var Me=I(require("reselect")),qs=(0,Me.createSelector)([v,H],(s,e)=>Object.values(s).map(r=>{var i;return{peer:r,isAudioEnabled:r.audioTrack?(i=e[r.audioTrack])==null?void 0:i.enabled:!1}})),js=s=>s.roleChangeRequests[0]||null,Ws=(0,Me.createSelector)([js,v,_],(s,e,t)=>s?{requestedBy:e[s.requestedBy],role:t[s.roleName],token:s.token}:null),$s=(0,Me.createSelector)([se],s=>{var i;let e=!1,t=!1,r=!1;return((i=s==null?void 0:s.publishParams)==null?void 0:i.allowed)&&(e=s.publishParams.allowed.includes("video"),t=s.publishParams.allowed.includes("audio"),r=s.publishParams.allowed.includes("screen")),{video:e,audio:t,screen:r}});var F=I(require("reselect"));var Fs=s=>(0,F.createSelector)([_],e=>e[s]),Gs=(0,F.createSelector)([C,H],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Js=(0,F.createSelector)([A,H],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Ys=s=>(0,F.createSelector)([Gs],e=>e.includes(s)),Qs=s=>(0,F.createSelector)([Js],e=>e.includes(s));var oe=I(require("@100mslive/hms-video"));var me=I(require("@100mslive/hms-video"));function kt(s){return s instanceof me.HMSRemoteAudioTrack||s instanceof me.HMSRemoteVideoTrack}var he=class{constructor(e,t,r,i){this.playlistManager=e;this.syncPlaylistState=r;this.store=i;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===M.audio?we:Ne,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`)}};var Pt={[a.HMSPeerUpdate.PEER_JOINED]:h.PEER_JOINED,[a.HMSPeerUpdate.PEER_LEFT]:h.PEER_LEFT,[a.HMSPeerUpdate.ROLE_UPDATED]:h.ROLE_UPDATED,[a.HMSPeerUpdate.AUDIO_TOGGLED]:"PEER_AUDIO_UPDATED",[a.HMSPeerUpdate.VIDEO_TOGGLED]:"PEER_VIDEO_UPDATED",[a.HMSPeerUpdate.NAME_UPDATED]:h.NAME_UPDATED,[a.HMSPeerUpdate.METADATA_UPDATED]:h.METADATA_UPDATED},Rt={[a.HMSTrackUpdate.TRACK_ADDED]:h.TRACK_ADDED,[a.HMSTrackUpdate.TRACK_REMOVED]:h.TRACK_REMOVED,[a.HMSTrackUpdate.TRACK_MUTED]:h.TRACK_MUTED,[a.HMSTrackUpdate.TRACK_UNMUTED]:h.TRACK_UNMUTED,[a.HMSTrackUpdate.TRACK_DEGRADED]:h.TRACK_DEGRADED,[a.HMSTrackUpdate.TRACK_RESTORED]:h.TRACK_RESTORED},It={[a.HMSPeerUpdate.PEER_JOINED]:"peerJoined",[a.HMSPeerUpdate.PEER_LEFT]:"peerLeft",[a.HMSPeerUpdate.NAME_UPDATED]:"peerNameUpdated",[a.HMSPeerUpdate.METADATA_UPDATED]:"peerMetadataUpdated"};var We=class{constructor(e,t,r){this.hmsSDKTracks={};this.hmsSDKPeers={};this.isRoomJoinCalled=!1;this.setProgress=({type:e,progress:t})=>{this.setState(r=>{r.playlist[e].progress=t,r.playlist[e].currentTime=this.sdk.getPlaylistManager().getCurrentTime(e)},"playlistProgress")};this.syncPlaylistState=e=>{this.setState(t=>{Object.assign(t.playlist,T.convertPlaylist(this.sdk.getPlaylistManager()))},e)};this.sendPeerUpdateNotification=(e,t)=>{let r=this.store.getState(O(t.peerId)),i="peerUpdate";i=It[e],this.syncRoomState(i),r||(r=this.store.getState(O(t.peerId))),this.hmsNotifications.sendPeerUpdate(e,r)};this.setState=(e,t)=>this.store.namedSetState(e,t);this.store=e,this.sdk=t,this.hmsNotifications=r}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(r=>{r.settings.audioOutputDeviceId=e},"setAudioOutputDevice")}setPreferredLayer(e,t){let r=this.hmsSDKTracks[e];r?r instanceof oe.HMSRemoteVideoTrack?(r.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(x);if(t===y.Preview||t===y.Connecting){this.logPossibleInconsistency("attempting to call preview while room is in preview/connecting");return}try{this.setState(r=>{r.room.roomState=y.Connecting},"connecting"),yield this.sdkPreviewWithListeners(e)}catch(r){throw m.e("Cannot show preview. Failed to connect to room - ",r),r}})}join(e){if(this.isRoomJoinCalled){this.logPossibleInconsistency("room join is called again");return}try{this.sdkJoinWithListeners(e),this.isRoomJoinCalled=!0,this.setState(t=>{t.room.roomState=y.Connecting},"join")}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(Ce)){this.logPossibleInconsistency("room leave is called when no room is connected");return}return this.sdk.leave().then(()=>{this.resetState("leave"),m.i("left room")}).catch(t=>{m.e("error in leaving room - ",t)})})}setScreenShareEnabled(e,t){return c(this,null,function*(){e?yield this.startScreenShare(t):yield this.stopScreenShare()})}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(C);t&&(yield this.setEnabledTrack(t,e))})}setEnabledTrack(e,t){return c(this,null,function*(){var o;if(((o=this.store.getState().tracks[e])==null?void 0:o.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(l=>{l.tracks[e].displayEnabled=!t},"rollbackDisplayEnabled"),this.hmsNotifications.sendError(T.convertException(n)),n}let i=t?a.HMSTrackUpdate.TRACK_UNMUTED:a.HMSTrackUpdate.TRACK_MUTED;this.hmsNotifications.sendTrackUpdate(i,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(C);t&&(yield this.setSDKLocalVideoTrackSettings(t,e),this.syncRoomState("setVideoSettings"))})}sendMessage(e){this.sendBroadcastMessage(e)}sendBroadcastMessage(e,t){return c(this,null,function*(){let r=yield this.sdk.sendBroadcastMessage(e,t);this.updateMessageInStore(r,{message:e,type:t})})}sendGroupMessage(e,t,r){return c(this,null,function*(){let i=this.store.getState(_),o=t.map(l=>i[l]),n=yield this.sdk.sendGroupMessage(e,o,r);this.updateMessageInStore(n,{message:e,recipientRoles:t,type:r})})}sendDirectMessage(e,t,r){return c(this,null,function*(){let i=this.hmsSDKPeers[t],o=yield this.sdk.sendDirectMessage(e,i,r);this.updateMessageInStore(o,{message:e,recipientPeer:i.peerId,type:r})})}updateMessageInStore(e,t){if(!e)throw m.w("sendMessage","Failed to send message",t),Error(`sendMessage Failed - ${JSON.stringify(t)}`);let r=T.convertMessage(e);return r.read=!0,r.senderName="You",this.onHMSMessage(r),r}setMessageRead(e,t){this.setState(r=>{t?r.messages.byID[t]?r.messages.byID[t].read=e:this.logPossibleInconsistency("no message with id is found"):r.messages.allIDs.forEach(i=>{r.messages.byID[i].read=e})},"setMessageRead")}attachVideo(e,t){return c(this,null,function*(){if(this.localAndVideoUnmuting(e))return new Promise(r=>{let i=this.store.subscribe(o=>c(this,null,function*(){o&&(yield this.attachVideoInternal(e,t),i(),r())}),ue)});yield this.attachVideoInternal(e,t)})}detachVideo(e,t){return c(this,null,function*(){let r=this.hmsSDKTracks[e];r&&r.type==="video"?(yield r.removeSink(t),this.updateVideoLayer(e,"detachVideo")):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")})}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,r=!1){return c(this,null,function*(){let i=this.hmsSDKPeers[e];if(!i){this.logPossibleInconsistency(`Unknown peer ID given ${e} for changerole`);return}yield this.sdk.changeRole(i,t,r)})}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 r={requestedBy:t,role:e.role,token:e.token};yield this.sdk.acceptChangeRole(r),this.removeRoleChangeRequest(e)})}rejectChangeRole(e){this.removeRoleChangeRequest(e)}endRoom(e,t){return c(this,null,function*(){let r=this.store.getState(xe);if(!(r==null?void 0:r.endRoom)){m.w("You are not allowed to perform this action - endRoom");return}yield this.sdk.endRoom(e,t)})}removePeer(e,t){return c(this,null,function*(){let r=this.hmsSDKPeers[e];if(r&&!r.isLocal)yield this.sdk.removePeer(r,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)})}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 r=this.hmsSDKTracks[e];r&&kt(r)?yield this.sdk.changeTrackState(r,t):this.logPossibleInconsistency(`No remote track with ID ${e} found for change track state`)}else Array.isArray(e)&&e.forEach(r=>this.setRemoteTrackEnabled(r,t))})}setRemoteTracksEnabled(e){return c(this,null,function*(){let t={enabled:e.enabled,type:e.type,source:e.source};if(e.roles){let r=this.store.getState(_);t.roles=e.roles.map(i=>r[i])}yield this.sdk.changeMultiTrackState(t)})}setLogLevel(e){m.level=e,this.sdk.setLogLevel(e)}resetState(e="resetState"){this.setState(t=>{Object.assign(t,Q())},e),this.isRoomJoinCalled=!1,this.hmsSDKTracks={},m.cleanUp()}sdkJoinWithListeners(e){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)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)})}onRemovedFromRoom(e){var r;let t=this.store.getState(O((r=e.requestedBy)==null?void 0:r.peerId));this.hmsNotifications.sendLeaveRoom(W(q({},e),{requestedBy:t||void 0})),m.i("resetting state after peer removed",e),this.resetState(e.roomEnded||!t?"roomEnded":"removedFromRoom")}onDeviceChange(e){let t=e.devices;if(!t)return;let r=this.store.getState(E);if(this.setState(i=>{N(i.devices.audioInput,t.audioInput)||(i.devices.audioInput=t.audioInput),N(i.devices.videoInput,t.videoInput)||(i.devices.videoInput=t.videoInput),N(i.devices.audioOutput,t.audioOutput)||(i.devices.audioOutput=t.audioOutput),this.hmsSDKPeers[r==null?void 0:r.id]&&Object.assign(i.settings,this.getMediaSettings(this.hmsSDKPeers[r==null?void 0:r.id]))},"deviceChange"),e.selection){let i=T.convertDeviceChangeUpdate(e);this.hmsNotifications.sendDeviceChange(i)}}sdkPreviewWithListeners(e){return c(this,null,function*(){yield this.sdk.preview(e,{onPreview:this.onPreview.bind(this),onError:this.onError.bind(this),onDeviceChange:this.onDeviceChange.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)})})}startScreenShare(e){return c(this,null,function*(){this.store.getState(pe)?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(pe)?(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 r=this.hmsSDKTracks[e];r&&r.type==="video"?(yield r.addSink(t),this.updateVideoLayer(e,"attachVideo")):this.logPossibleInconsistency("no video track found to add sink")})}syncRoomState(e){m.time(`store-sync-${e}`);let t={},r=[],i={},o={},n={},l=this.sdk.getPeers();for(let f of l){let w=T.convertPeer(f);t[w.id]=w,r.push(w.id),this.hmsSDKPeers[w.id]=f;let J=[f.audioTrack,f.videoTrack,...f.auxiliaryTracks];for(let le of J){if(!le)continue;let Qe=T.convertTrack(le);i[Qe.id]=Qe,o[le.trackId]=le}w.isLocal&&Object.assign(n,this.getMediaSettings(f))}let d=this.sdk.getRecordingState(),P=this.sdk.getRTMPState(),B=this.sdk.getHLSState();this.setState(f=>{f.room.peers=r;let w=f.peers,J=f.tracks;st(w,t),rt(J,i),Object.assign(f.settings,n),this.hmsSDKTracks=o,Object.assign(f.roles,T.convertRoles(this.sdk.getRoles())),Object.assign(f.playlist,T.convertPlaylist(this.sdk.getPlaylistManager())),Object.assign(f.room,T.convertRecordingStreamingState(d,P,B))},e),m.timeEnd(`store-sync-${e}`)}onPreview(e){this.setState(t=>{Object.assign(t.room,T.convertRoom(e)),t.room.roomState=y.Preview},"previewStart"),this.syncRoomState("previewSync")}onJoin(e){let t=this.sdk.getPlaylistManager();this.audioPlaylist=new he(t,M.audio,this.syncPlaylistState.bind(this),this.store),this.videoPlaylist=new he(t,M.video,this.syncRoomState.bind(this),this.store),this.syncRoomState("joinSync"),this.setState(r=>{Object.assign(r.room,T.convertRoom(e)),r.room.isConnected=!0,r.room.roomState=y.Connected},"joined"),t.onProgress(this.setProgress),t.onNewTrackStart(r=>{this.syncPlaylistState(`${r.type}PlaylistUpdate`)}),t.onPlaylistEnded(r=>{this.syncPlaylistState(`${r}PlaylistEnded`)}),t.onCurrentTrackEnded(r=>{this.hmsNotifications.sendPlaylistTrackEnded(T.convertPlaylistItem(t,r)),this.syncPlaylistState(`${r.type}PlaylistItemEnded`)})}onRoomUpdate(e,t){this.setState(r=>{Object.assign(r.room,T.convertRoom(t))},"RoomUpdate")}onPeerUpdate(e,t){if(![a.HMSPeerUpdate.BECAME_DOMINANT_SPEAKER,a.HMSPeerUpdate.RESIGNED_DOMINANT_SPEAKER].includes(e)){if(Array.isArray(t)){this.syncRoomState("peersJoined");let r=[];for(let i of t){let o=this.store.getState(O(i.peerId));o&&r.push(o)}this.hmsNotifications.sendPeerList(r);return}this.sendPeerUpdateNotification(e,t)}}onTrackUpdate(e,t,r){if(e===a.HMSTrackUpdate.TRACK_REMOVED)this.hmsNotifications.sendTrackUpdate(e,t.trackId),this.handleTrackRemove(t,r);else{let i=e===a.HMSTrackUpdate.TRACK_ADDED?"trackAdded":"trackUpdate";this.syncRoomState(i),this.hmsNotifications.sendTrackUpdate(e,t.trackId)}}onMessageReceived(e){let t=T.convertMessage(e);t.read=!1,this.onHMSMessage(t),this.hmsNotifications.sendMessageReceived(t)}onHMSMessage(e){this.setState(t=>{e.id=String(this.store.getState(Ae)+1),t.messages.byID[e.id]=e,t.messages.allIDs.push(e.id)},"newMessage")}onAudioLevelUpdate(e){this.setState(t=>{let r={};e.forEach(o=>{if(!o.track||!o.peer)return;let n=o.track.trackId;r[n]=o.audioLevel,t.speakers[n]||(t.speakers[n]={audioLevel:o.audioLevel,peerID:o.peer.peerId,trackID:n})});let i=Object.entries(t.speakers);for(let[o,n]of i)n.audioLevel=r[o]||0,n.audioLevel===0&&delete t.speakers[o]},"audioLevel")}onChangeTrackStateRequest(e){let t=this.store.getState(O(e.requestedBy.peerId)),r=this.getStoreLocalTrackIDfromSDKTrack(e.track),i=this.store.getState(ie(r));if(!t)return this.logPossibleInconsistency(`Not found peer who requested track state change, ${e.requestedBy}`);if(!i)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,track:i,enabled:e.enabled})}onChangeMultiTrackStateRequest(e){let t=this.store.getState(O(e.requestedBy.peerId));if(!t)return this.logPossibleInconsistency(`Not found peer who requested track state change, ${e.requestedBy}`);e.enabled||this.syncRoomState("changeMultiTrackStateRequest");let r=[],i=this.store.getState(H);for(let o of e.tracks){let n=this.getStoreLocalTrackIDfromSDKTrack(o);n&&i[n]&&r.push(i[n])}this.hmsNotifications.sendChangeMultiTrackStateRequest({requestedBy:t,tracks:r,enabled:e.enabled,type:e.type,source:e.source})}onReconnected(){this.syncRoomState("reconnectedSync"),this.hmsNotifications.sendReconnected(),this.setState(e=>{e.room.roomState=y.Connected},"reconnected")}onReconnecting(e){let t=T.convertException(e);m.e("Reconnection: received error from sdk",t),this.hmsNotifications.sendReconnecting(t),this.setState(r=>{r.room.roomState=y.Reconnecting,r.errors.push(t)},"reconnecting")}onError(e){let t=T.convertException(e);t.isTerminal?(this.leave().then(()=>m.e("error from SDK, left room.")),this.setState(r=>{r.room.roomState=y.Failed,r.errors.push(t)},"errorTerminal")):this.store.getState().errors.length<50&&this.setState(i=>{i.errors.push(t)},"error"),this.hmsNotifications.sendError(t),m.e("received error from sdk",t)}updateVideoLayer(e,t){let r=this.hmsSDKTracks[e];r&&r instanceof oe.HMSRemoteVideoTrack&&this.setState(i=>{i.tracks[e].layer=r.getSimulcastLayer()},t)}handleTrackRemove(e,t){this.setState(r=>{let i=r.peers[t.peerId],o=r.tracks,n=e.trackId;if(this.isSameStoreSDKTrack(n,i==null?void 0:i.audioTrack))i==null||delete i.audioTrack;else if(this.isSameStoreSDKTrack(n,i==null?void 0:i.videoTrack))i==null||delete i.videoTrack;else{let l=i==null?void 0:i.auxiliaryTracks.indexOf(n);l>-1&&this.isSameStoreSDKTrack(n,i==null?void 0:i.auxiliaryTracks[l])&&(i==null||i.auxiliaryTracks.splice(l,1))}delete o[n],delete this.hmsSDKTracks[n]},"trackRemoved")}setEnabledSDKTrack(e,t){return c(this,null,function*(){let r=this.hmsSDKTracks[e];r?yield r.setEnabled(t):this.logPossibleInconsistency(`track ${e} not present, unable to enabled/disable`)})}setSDKLocalVideoTrackSettings(e,t){return c(this,null,function*(){let r=this.hmsSDKTracks[e];r?yield r.setSettings(t):this.logPossibleInconsistency(`local track ${e} not present, unable to set settings`)})}setSDKLocalAudioTrackSettings(e,t){return c(this,null,function*(){let r=this.hmsSDKTracks[e];r?yield r.setSettings(t):this.logPossibleInconsistency(`local track ${e} not present, unable to set settings`)})}getMediaSettings(e){var o;let t=this.store.getState(De),r=e.audioTrack,i=e.videoTrack;return{audioInputDeviceId:(r==null?void 0:r.settings.deviceId)||t.audioInputDeviceId,videoInputDeviceId:(i==null?void 0:i.settings.deviceId)||t.videoInputDeviceId,audioOutputDeviceId:(o=this.sdk.getAudioOutput().getDevice())==null?void 0:o.deviceId}}setTrackVolume(e,t){let r=this.hmsSDKTracks[t];r?r instanceof oe.HMSAudioTrack?(r.setVolume(e),this.setState(i=>{let o=i.tracks[t];o&&(o.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 r=this.store.getState(Ee),i=this.store.getState(ue);return r&&!i}logPossibleInconsistency(e){m.w("possible inconsistency detected - ",e)}addRemoveVideoPlugin(e,t,r){return c(this,null,function*(){if(!e){m.w("Invalid plugin received in store");return}let i=this.store.getState(C);if(i){let o=this.hmsSDKTracks[i];o?(t==="add"?yield o.addPlugin(e,r):t==="remove"&&(yield o.removePlugin(e)),this.syncRoomState(`${t}VideoPlugin`)):this.logPossibleInconsistency(`track ${i} 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 r=this.store.getState(A);if(r){let i=this.hmsSDKTracks[r];i?(t==="add"?yield i.addPlugin(e):t==="remove"&&(yield i.removePlugin(e)),this.syncRoomState(`${t}AudioPlugin`)):this.logPossibleInconsistency(`track ${r} not present, unable to remove plugin`)}})}isSameStoreSDKTrack(e,t){var r;return t?((r=this.hmsSDKTracks[t])==null?void 0:r.trackId)===e:!1}onRoleChangeRequest(e){this.setState(t=>{t.roleChangeRequests.length===0&&t.roleChangeRequests.push(T.convertRoleChangeRequest(e))},"roleChangeRequest")}removeRoleChangeRequest(e){this.setState(t=>{let r=t.roleChangeRequests.findIndex(i=>i.token===e.token);r!==-1&&t.roleChangeRequests.splice(r,1)},"removeRoleChangeRequest")}onRoleUpdate(){this.syncRoomState("roleUpdate")}getStoreLocalTrackIDfromSDKTrack(e){return this.store.getState(be).find(r=>this.hmsSDKTracks[r].trackId===e.trackId)}};var vt=I(require("eventemitter2"));var $e="hmsNotification",Fe=class{constructor(e){this.id=0;this.onNotification=e=>(this.eventEmitter.addListener($e,e),()=>{this.eventEmitter.removeListener($e,e)});this.store=e,this.eventEmitter=new vt.EventEmitter2}sendPlaylistTrackEnded(e){let t=this.createNotification(h.PLAYLIST_TRACK_ENDED,e,R.INFO);this.emitEvent(t)}sendDeviceChange(e){var r;let t=this.createNotification(h.DEVICE_CHANGE_UPDATE,e,e.error?R.ERROR:R.INFO,`Selected ${e.type} device - ${(r=e.selection)==null?void 0:r.label}`);this.emitEvent(t)}sendLeaveRoom(e){var i;let t=(i=e.requestedBy)==null?void 0:i.name,r=this.createNotification(e.roomEnded||!t?h.ROOM_ENDED:h.REMOVED_FROM_ROOM,e,R.INFO,`${e.roomEnded?"Room ended":"Removed from room"} ${t?`by ${t}`:""}`);this.emitEvent(r)}sendPeerList(e){let t=this.createNotification(h.PEER_LIST,e,R.INFO);this.emitEvent(t)}sendPeerUpdate(e,t){let r=this.store.getState(O(t==null?void 0:t.id))||t,i=Pt[e];if(i){let o=this.createNotification(i,r,R.INFO);this.emitEvent(o)}}sendTrackUpdate(e,t){let r=this.store.getState(ie(t)),i=Rt[e];if(i){let o=this.createNotification(i,r,R.INFO);this.emitEvent(o)}}sendMessageReceived(e){let t=this.createNotification(h.NEW_MESSAGE,e,R.INFO);this.emitEvent(t)}sendError(e){let t=this.createNotification(h.ERROR,e,R.ERROR);this.emitEvent(t)}sendReconnecting(e){let t=this.createNotification(h.RECONNECTING,e,R.ERROR);this.emitEvent(t)}sendReconnected(){let e=this.createNotification(h.RECONNECTED,null,R.INFO);this.emitEvent(e)}sendChangeTrackStateRequest(e){let t=this.createNotification(h.CHANGE_TRACK_STATE_REQUEST,e,R.INFO);this.emitEvent(t)}sendChangeMultiTrackStateRequest(e){let t=this.createNotification(h.CHANGE_MULTI_TRACK_STATE_REQUEST,e,R.INFO);this.emitEvent(t)}emitEvent(e){this.eventEmitter.emit($e,e)}createNotification(e,t,r,i=""){return this.id++,{id:this.id,type:e,message:i,data:t,severity:r}}};var Dt=I(require("@100mslive/hms-video")),ge=s=>Dt.isBrowser?`${s} ${document.title}`:s;function ne(s){return s!=null}var bt=(s,e,t)=>{let r;t.getState(x)===y.Connected&&(r=Et(s,e,t)),t.subscribe(i=>{[y.Connected,y.Reconnecting].includes(i)?r||(r=Et(s,e,t)):r&&(rr(e),r())},x)},Et=(s,e,t)=>{var o;let r=zs(t,e),i=(o=s.getWebrtcInternals())==null?void 0:o.onStatsChange(n=>Xs(e,n,t));return()=>{r(),i&&i()}},zs=(s,e)=>{let t,r,i;return s.getState(K)?e.namedSetState(o=>{o.localPeer.id=s.getState(K)},"localpeer-id"):t=s.subscribe(o=>{o&&e.namedSetState(n=>{n.localPeer.id=o},"localpeer-id")},K),s.getState(C)?e.namedSetState(o=>{o.localPeer.videoTrack=s.getState(C)},"localpeer-videotrack-id"):r=s.subscribe(o=>{o&&e.namedSetState(n=>{n.localPeer.videoTrack=o},"localpeer-videotrack-id")},C),s.getState(A)?e.namedSetState(o=>{o.localPeer.videoTrack=s.getState(A)},"localpeer-audiotrack-id"):i=s.subscribe(o=>{o&&e.namedSetState(n=>{n.localPeer.videoTrack=o},"localpeer-audiotrack-id")},A),()=>{t==null||t(),r==null||r(),i==null||i()}},Xs=(s,e,t)=>{let r=t.getState(H);s.namedSetState(i=>{let o={},n=Object.keys(r);for(let d of n){let P=e.getTrackStats(d);P&&(o[d]=tr(t,r[d],P,i.trackStats[d]))}ye(i.trackStats,o);let l=Zs(t,i.peerStats[t.getState(K)],e);ye(i.peerStats,l)},"webrtc-stats")},Zs=(s,e,t)=>{let r=t.getLocalPeerStats(),i={},o=s.getState(K);return i[o]||(i[o]={}),e?i[o]=er(t,e):(r.publish&&(i[o].publish=Object.assign(r.publish,{bitrate:0})),r.subscribe&&(i[o].subscribe=Object.assign(r.subscribe,{bitrate:0},{packetsLost:t.getPacketsLost(),jitter:t.getJitter(),packetsLostRate:0}))),i},er=(s,e)=>{var d,P,B;let t=s.getLocalPeerStats(),r=At(s.getPacketsLost(),(d=e==null?void 0:e.subscribe)==null?void 0:d.packetsLost,(P=t.subscribe)==null?void 0:P.timestamp,(B=e==null?void 0:e.subscribe)==null?void 0:B.timestamp),i=Ge("bytesSent",t.publish,e==null?void 0:e.publish),o=Ge("bytesReceived",t.subscribe,e==null?void 0:e.subscribe),n=Object.assign(t.publish,{bitrate:i}),l=Object.assign(t.subscribe,{bitrate:o},{packetsLost:s.getPacketsLost(),jitter:s.getJitter(),packetsLostRate:r});return{publish:n,subscribe:l}},tr=(s,e,t,r)=>{let i=Ge((t==null?void 0:t.type)==="outbound-rtp"?"bytesSent":"bytesReceived",t,r);return Object.assign(t,{peerID:e.peerId,peerName:s.getState(Ke(e.peerId)),bitrate:i})},Ge=(s,e,t)=>sr(s,e,t)*8,sr=(s,e,t)=>{let r=e&&e[s],i=t?t[s]:null;return e&&t&&ne(r)&&ne(i)?At(r,i,e.timestamp,t.timestamp)*1e3:0},At=(s,e,t,r)=>ne(s)&&ne(e)&&t&&r?(s-e)/(t-r):0,rr=(s,e="resetState")=>{s.namedSetState(t=>{Object.assign(t,z())},e)};var ae=class{constructor(e,t){this.hmsStore=e;this.sdk=t;this.store=L.createNewHMSStore(ge("HMSStatsStore"),z),this.getState=this.store.getState,this.subscribe=this.store.subscribe,this.getPublishPeerConnection=()=>new Promise(r=>{var i,o;this.hmsStore.getState(x)==="Connected"?r((o=(i=this.sdk)==null?void 0:i.getWebrtcInternals())==null?void 0:o.getPublishPeerConnection()):this.hmsStore.subscribe(n=>{var l,d;n==="Connected"&&r((d=(l=this.sdk)==null?void 0:l.getWebrtcInternals())==null?void 0:d.getPublishPeerConnection())},x)}),this.getSubscribePeerConnection=()=>new Promise(r=>{var i,o;this.hmsStore.getState(x)==="Connected"?r((o=(i=this.sdk)==null?void 0:i.getWebrtcInternals())==null?void 0:o.getSubscribePeerConnection()):this.hmsStore.subscribe(n=>{var l,d;n==="Connected"&&r((d=(l=this.sdk)==null?void 0:l.getWebrtcInternals())==null?void 0:d.getSubscribePeerConnection())},x)}),!!this.sdk&&bt(this.sdk,this.store,this.hmsStore)}};var Te={};tt(Te,{availablePublishBitrate:()=>pr,availableSubscribeBitrate:()=>Mr,bitrateByTrackID:()=>yr,bytesReceivedByTrackID:()=>fr,framerateByTrackID:()=>kr,jitter:()=>Sr,jitterByTrackID:()=>Pr,localAudioTrackBitrate:()=>Ir,localAudioTrackBytesSent:()=>Dr,localAudioTrackStats:()=>Ye,localPeerStats:()=>V,localVideoTrackBitrate:()=>vr,localVideoTrackBytesSent:()=>br,localVideoTrackFramerate:()=>Er,localVideoTrackQualityLimitationReason:()=>Ar,localVideoTrackStats:()=>ce,packetsLost:()=>lr,packetsLostByTrackID:()=>Rr,peerStatsByID:()=>Tr,publishBitrate:()=>dr,subscribeBitrate:()=>ur,totalBytesReceived:()=>hr,totalBytesSent:()=>mr,trackStatsByID:()=>Hr});var g=I(require("reselect"));var ir=s=>s.localPeer.id,or=s=>s.localPeer.audioTrack,nr=s=>s.localPeer.videoTrack,ar=(s,e)=>e,cr=(s,e)=>e,Je=s=>s.trackStats,Ct=s=>s.peerStats,V=(0,g.createSelector)([Ct,ir],(s,e)=>s[e]),lr=(0,g.createSelector)(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.packetsLost}),Sr=(0,g.createSelector)(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.jitter}),dr=(0,g.createSelector)(V,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bitrate}),ur=(0,g.createSelector)(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bitrate}),pr=(0,g.createSelector)(V,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.availableOutgoingBitrate}),Mr=(0,g.createSelector)(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.availableIncomingBitrate}),mr=(0,g.createSelector)(V,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bytesSent}),hr=(0,g.createSelector)(V,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bytesReceived}),gr=(0,g.createSelector)([Ct,ar],(s,e)=>e?s[e]:void 0),G=(0,g.createSelector)([Je,cr],(s,e)=>e?s[e]:void 0),Tr=p(gr),Hr=p(G),yr=p((0,g.createSelector)(G,s=>s==null?void 0:s.bitrate)),fr=p((0,g.createSelector)(G,s=>s==null?void 0:s.bytesReceived)),kr=p((0,g.createSelector)(G,s=>s==null?void 0:s.framesPerSecond)),Pr=p((0,g.createSelector)(G,s=>s==null?void 0:s.jitter)),Rr=p((0,g.createSelector)(G,s=>s==null?void 0:s.packetsLost)),Ye=(0,g.createSelector)([Je,or],(s,e)=>e?s[e]:void 0),ce=(0,g.createSelector)([Je,nr],(s,e)=>e?s[e]:void 0),Ir=(0,g.createSelector)(Ye,s=>s==null?void 0:s.bitrate),vr=(0,g.createSelector)(ce,s=>s==null?void 0:s.bitrate),Dr=(0,g.createSelector)(Ye,s=>s==null?void 0:s.bytesSent),br=(0,g.createSelector)(ce,s=>s==null?void 0:s.bytesSent),Er=(0,g.createSelector)(ce,s=>s==null?void 0:s.framesPerSecond),Ar=(0,g.createSelector)(ce,s=>s==null?void 0:s.qualityLimitationReason);var L=class{constructor(e,t,r){this.getWebrtcStats=()=>(this.webrtcStats||(this.webrtcStats=new ae(this.store,this.sdk)),this.webrtcStats);e?this.store=e:this.store=L.createNewHMSStore(ge("HMSStore"),Q),r?this.notifications=r:this.notifications=new Fe(this.store),t?this.actions=t:(this.sdk=new wt.HMSSdk,this.actions=new We(this.store,this.sdk,this.notifications)),this.initialTriggerOnSubscribe=!1,window.__hms=this}triggerOnSubscribe(){this.initialTriggerOnSubscribe||(L.makeStoreTriggerOnSubscribe(this.store),this.initialTriggerOnSubscribe=!0)}getStore(){return this.store}getHMSActions(){return this.actions}getNotifications(){return{onNotification:this.notifications.onNotification}}static createNewHMSStore(e,t){let r=(0,Lt.default)(()=>t()),i=r.setState;r.setState=l=>{let d=typeof l=="function"?(0,xt.default)(l):l;i(d)};let o=r.getState;r.getState=l=>{if(l){let d=l.name||"byIDSelector";window.selectorsCount||(window.selectorsCount={}),window.selectorsCount[d]=(window.selectorsCount[d]||0)+1;let P=performance.now(),B=l(o()),f=performance.now()-P;return f>1&&(window.expensiveSelectors=window.expensiveSelectors||new Map,window.expensiveSelectors.set(d,f)),B}return o()},L.useShallowCheckInSubscribe(r);let n=L.setUpDevtools(r,e);return W(q({},r),{namedSetState:n})}static makeStoreTriggerOnSubscribe(e){let t=e.subscribe;e.subscribe=(r,i,o)=>(r(e.getState(i),void 0),t(r,i,o))}static useShallowCheckInSubscribe(e){let t=e.subscribe;e.subscribe=(r,i,o)=>(i||(i=n=>n),o=o||Ot.default,t(r,i,o))}static setUpDevtools(e,t){let r;try{r=window.__REDUX_DEVTOOLS_EXTENSION__||window.top.__REDUX_DEVTOOLS_EXTENSION__}catch(n){}if(!r)return n=>{e.setState(n)};let i=r.connect(L.devtoolsOptions(t));i.prefix=t?`${t} > `:"";let o=e.setState;return e.setState=n=>{o(n),i.send(`${i.prefix}setState`,e.getState())},i.subscribe(L.devtoolsSubscribe(i,e,o)),i.send("setUpStore",e.getState()),(n,l)=>{o(n);let d=l||`${i.prefix}action`;i.send(d,e.getState())}}static devtoolsOptions(e){return{name:e,actionsBlacklist:["audioLevel","playlistProgress"]}}static devtoolsSubscribe(e,t,r){return i=>{var o,n,l,d;if(i.type==="DISPATCH"&&i.state)["JUMP_TO_ACTION","JUMP_TO_STATE"].includes(i.payload.type)?r(JSON.parse(i.state)):t.setState(JSON.parse(i.state));else if(i.type==="DISPATCH"&&((o=i.payload)==null?void 0:o.type)==="COMMIT")e.init(t.getState());else if(i.type==="DISPATCH"&&((n=i.payload)==null?void 0:n.type)==="IMPORT_STATE"){let P=(l=i.payload.nextLiftedState)==null?void 0:l.actionsById;(((d=i.payload.nextLiftedState)==null?void 0:d.computedStates)||[]).forEach(({state:f},w)=>{let J=P[w]||`${e.prefix}setState`;w===0?e.init(f):(r(f),e.send(J,t.getState()))})}}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var ot=Object.defineProperty,rt=Object.defineProperties;var at=Object.getOwnPropertyDescriptors;var pe=Object.getOwnPropertySymbols;var nt=Object.prototype.hasOwnProperty,ct=Object.prototype.propertyIsEnumerable;var Me=(s,e,t)=>e in s?ot(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,_=(s,e)=>{for(var t in e||(e={}))nt.call(e,t)&&Me(s,t,e[t]);if(pe)for(var t of pe(e))ct.call(e,t)&&Me(s,t,e[t]);return s},K=(s,e)=>rt(s,at(e));var n=(s,e,t)=>new Promise((i,o)=>{var r=m=>{try{S(t.next(m))}catch(R){o(R)}},a=m=>{try{S(t.throw(m))}catch(R){o(R)}},S=m=>m.done?i(m.value):Promise.resolve(m.value).then(r,a);S((t=t.apply(s,e)).next())});import xt from"immer";import Ot from"zustand/vanilla";import wt from"zustand/shallow";import{HMSSdk as Nt}from"@100mslive/hms-video";var f;(function(a){a.Disconnected="Disconnected",a.Preview="Preview",a.Connecting="Connecting",a.Connected="Connected",a.Reconnecting="Reconnecting",a.Failed="Failed"})(f||(f={}));var W=()=>({room:{id:"",isConnected:!1,name:"",peers:[],shareableLink:"",localPeer:"",hasWaitingRoom:!1,roomState:f.Disconnected,recording:{browser:{running:!1},server:{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:{},settings:{audioInputDeviceId:"",audioOutputDeviceId:"",videoInputDeviceId:""},devices:{audioInput:[],audioOutput:[],videoInput:[]},roles:{},roleChangeRequests:[],errors:[]});var me;(function(e){e.CHAT="chat"})(me||(me={}));var k;(function(i){i.INFO="info",i.ERROR="error",i.CRITICAL="critical"})(k||(k={}));var p;(function(c){c.PEER_JOINED="PEER_JOINED",c.PEER_LEFT="PEER_LEFT",c.PEER_LIST="PEER_LIST",c.NEW_MESSAGE="NEW_MESSAGE",c.ERROR="ERROR",c.RECONNECTING="RECONNECTING",c.RECONNECTED="RECONNECTED",c.TRACK_ADDED="TRACK_ADDED",c.TRACK_REMOVED="TRACK_REMOVED",c.TRACK_MUTED="TRACK_MUTED",c.TRACK_UNMUTED="TRACK_UNMUTED",c.TRACK_DEGRADED="TRACK_DEGRADED",c.TRACK_RESTORED="TRACK_RESTORED",c.ROLE_CHANGE_REQUEST="ROLE_CHANGE_REQUEST",c.ROLE_UPDATED="ROLE_UPDATED",c.CHANGE_TRACK_STATE_REQUEST="CHANGE_TRACK_STATE_REQUEST",c.CHANGE_MULTI_TRACK_STATE_REQUEST="CHANGE_MULTI_TRACK_STATE_REQUEST",c.ROOM_ENDED="ROOM_ENDED",c.REMOVED_FROM_ROOM="REMOVED_FROM_ROOM",c.DEVICE_CHANGE_UPDATE="DEVICE_CHANGE_UPDATE",c.PLAYLIST_TRACK_ENDED="PLAYLIST_TRACK_ENDED",c.NAME_UPDATED="NAME_UPDATED",c.METADATA_UPDATED="METADATA_UPDATED"})(p||(p={}));var d;(function(t){t.audio="audio",t.video="video"})(d||(d={}));import{HMSException as jt,HMSSimulcastLayer as Jt,HMSPeerUpdate as P,HMSRoomUpdate as Wt,HMSTrackUpdate as I,HMSLogLevel as T,HMSAudioPluginType as lt,HMSVideoPluginType as dt}from"@100mslive/hms-video";import{HMSLocalAudioTrack as ke,HMSLocalVideoTrack as Pe,HMSRemoteAudioTrack as ut,HMSRemoteVideoTrack as pt}from"@100mslive/hms-video";var ge=(s,e)=>{let t=fe(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Te(o,r)?(C(o.auxiliaryTracks,r.auxiliaryTracks)&&(r.auxiliaryTracks=o.auxiliaryTracks),Object.assign(o,r)):ye(o,r)?delete s[i]:He(o,r)&&(s[i]=r)}},he=(s,e)=>{let t=fe(Object.keys(s),Object.keys(e));for(let i of t){let o=s[i],r=e[i];Te(o,r)?(St(o,r),Object.assign(o,r)):ye(o,r)?delete s[i]:He(o,r)&&(s[i]=r)}},St=(s,e)=>{s.plugins&&C(s.plugins,e.plugins)&&(e.plugins=s.plugins),s.layerDefinitions&&C(s.layerDefinitions,e.layerDefinitions)&&(e.layerDefinitions=s.layerDefinitions)},Te=(s,e)=>s&&e,ye=(s,e)=>s&&!e,He=(s,e)=>!s&&e,C=(s,e)=>{if(s===e||s.length===0&&(e==null?void 0:e.length)===0)return!0;if(!s||!e||s.length!==e.length)return!1;for(let t=0;t<s.length;t++)if(s[t]!==e[t])return!1;return!0},fe=(s,e)=>{let t=new Set;for(let i of s)t.add(i);for(let i of e)t.add(i);return Array.from(t)};var g=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}}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.height=i.height,e.width=i.width,t instanceof ut&&(e.volume=t.getVolume()||0),g.updateDeviceID(e,t),g.enrichVideoTrack(e,t),g.enrichPluginsDetails(e,t)}static updateDeviceID(e,t){var i;t instanceof Pe||t instanceof ke?e.deviceID=t.settings.deviceId:e.deviceID=(i=t.getMediaTrackSettings())==null?void 0:i.deviceId}static enrichVideoTrack(e,t){t instanceof pt&&(e.layer=t.getSimulcastLayer(),e.degraded=t.degraded,C(t.getSimulcastDefinitions(),e.layerDefinitions)||(e.layerDefinitions=t.getSimulcastDefinitions()))}static enrichPluginsDetails(e,t){(t instanceof Pe||t instanceof ke)&&(C(t.getPlugins(),e.plugins)||(e.plugins=t.getPlugins()))}static convertRoom(e){var t,i,o,r,a,S,m;return{id:e.id,name:e.name,localPeer:(i=(t=e.localPeer)==null?void 0:t.peerId)!=null?i:"",hasWaitingRoom:e.hasWaitingRoom,shareableLink:e.shareableLink,recording:{browser:{running:!!((o=e.recording)==null?void 0:o.browser.running)},server:{running:!!((r=e.recording)==null?void 0:r.server.running)}},rtmp:{running:!!((a=e.rtmp)==null?void 0:a.running)},hls:{running:!!((S=e.hls)==null?void 0:S.running),variants:((m=e.hls)==null?void 0:m.variants)||[]},sessionId:e.sessionId,startedAt:e.startedAt&&new Date(e.startedAt)}}static convertMessage(e){var t,i,o;return{sender:e.sender.peerId,senderName:e.sender.name,senderRole:(t=e.sender.role)==null?void 0:t.name,senderUserId:e.sender.customerUserId,recipientPeer:(i=e.recipientPeer)==null?void 0:i.peerId,recipientRoles:(o=e.recipientRoles)==null?void 0:o.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){return{requestedBy:e.requestedBy.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,d.audio),i=this.getConvertedPlaylistType(e,d.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 K(_({},t),{type:t.type,selected:a,playing:a&&r})}static getConvertedPlaylistType(e,t){let i={},o=e.getCurrentSelection(t),r=e.getCurrentProgress(t),a=e.getVolume(t),S=e.getList(t),m=e.getCurrentIndex(t);return e.getList(t).forEach(R=>{i[R.id]=g.convertPlaylistItem(e,R)}),{list:i,selection:{id:o==null?void 0:o.id,hasPrevious:m>0,hasNext:m<S.length-1},progress:r,volume:a,currentTime:e.getCurrentTime(t),playbackRate:e.getPlaybackRate(t)}}static convertRecordingStreamingState(e,t,i){var o,r;return{recording:{browser:{running:!!((o=e==null?void 0:e.browser)==null?void 0:o.running)},server:{running:!!((r=e==null?void 0:e.server)==null?void 0:r.running)}},rtmp:{running:!!(t==null?void 0:t.running)},hls:{variants:(i==null?void 0:i.variants)||[],running:!!(i==null?void 0:i.running)}}}};import{createSelector as l}from"reselect";function w(s,e,t=Mt){let i,o;if(e)for(let r of e.auxiliaryTracks){let a=s[r];t(a)&&(o=q(a)?a:o,i=$(a)?a:i)}return{video:i,audio:o}}function q(s){return s&&s.type==="audio"}function $(s){return s&&s.type==="video"}function Mt(s){return s&&s.source==="screen"}function Y(s){return s&&s.source==="audioplaylist"}function F(s){return s&&s.source==="videoplaylist"}function Re(s){return Boolean(s==null?void 0:s.degraded)}function V(s,e){return e&&s.tracks[e]?s.tracks[e].enabled:!1}function ve(s,e){return e&&s.tracks[e]?s.tracks[e].displayEnabled:!1}var E=s=>s.room,D=s=>s.peers,De=s=>s.messages.byID,Ie=s=>s.messages.allIDs,h=s=>s.tracks,Ee=s=>s.settings,js=s=>s.devices,mt=s=>s.speakers,Js=l([E],s=>s&&s.isConnected),Ws=l(E,s=>s.peers.length),ee=l([E,D],(s,e)=>s.peers.map(t=>e[t])),gt=l(h,s=>Object.values(s)),b=l(E,D,(s,e)=>e[s.localPeer]),be=l(E,s=>s.localPeer),N=l(b,s=>s==null?void 0:s.audioTrack),U=l(b,s=>s==null?void 0:s.videoTrack),ht=l(b,s=>s==null?void 0:s.auxiliaryTracks),Ae=l([N,U,ht],(s,e,t)=>{let i=[...t];return s&&i.unshift(s),e&&i.unshift(e),i}),Ys=l(ee,s=>s.filter(e=>!e.isLocal)),Qs=l(D,mt,(s,e)=>{let t=Object.entries(e).sort((i,o)=>{var S,m;let r=((S=i[1])==null?void 0:S.audioLevel)||0;return(((m=o[1])==null?void 0:m.audioLevel)||0)>r?1:-1});if(t.length>0&&t[0][1].audioLevel&&t[0][1].audioLevel>0){let i=t[0][1].peerID;if(i in s)return s[i]}return null}),Xs=s=>{let e=b(s);return V(s,e==null?void 0:e.audioTrack)},te=s=>{let e=b(s);return V(s,e==null?void 0:e.videoTrack)},Ce=s=>{let e=b(s);return ve(s,e==null?void 0:e.videoTrack)},se=l(b,h,(s,e)=>{let{video:t,audio:i}=w(e,s);return!!(t||i)}),Tt=l(D,h,(s,e)=>{let t;for(let i in s){let o=s[i],{video:r,audio:a}=w(e,o);if(r)return o;a&&!t&&(t=o)}return t}),zs=l(Tt,s=>!!s),Zs=l(D,h,(s,e)=>{for(let t in s){let i=s[t],{audio:o,video:r}=w(e,i);if(!r&&!!o)return i}}),ei=l(D,h,(s,e)=>{let t=[],i=[];for(let o in s){let r=s[o],{video:a,audio:S}=w(e,r);a?t.push(r):S&&i.push(r)}return t.concat(i)}),ti=l(D,h,(s,e)=>{for(let t in e){let i=e[t];if(F(i)&&$(i)&&i.peerId)return s[i.peerId]}}),si=l(D,h,(s,e)=>{for(let t in e){let i=e[t];if(Y(i)&&i.peerId)return s[i.peerId]}}),ii=l(gt,s=>s.filter(Re)),Le=l(Ie,s=>s.length),oi=l(De,s=>Object.values(s).filter(e=>!e.read).length),Q=l(Ie,De,(s,e)=>{let t=[];return s.forEach(i=>{t.push(e[i])}),t}),ie=l([E],s=>s&&s.roomState),ri=l(ie,s=>s===f.Preview),xe=l(E,s=>s.roomState!==f.Disconnected),x=s=>s.roles,ai=l([x],s=>Object.keys(s)),X=l([b,x],(s,e)=>(s==null?void 0:s.roleName)?e[s.roleName]:null),ni=l([X],s=>{var e;return((e=s==null?void 0:s.subscribeParams)==null?void 0:e.subscribeToRoles)?s.subscribeParams.subscribeToRoles.length>0:!1}),Oe=l(X,s=>s==null?void 0:s.permissions),ci=l(E,s=>s.recording),li=l(E,s=>s.rtmp),di=l(E,s=>s.hls),Si=l(E,s=>s.sessionId),ui=l(E,s=>s.startedAt);import{createSelector as we}from"reselect";var Ne=(s=d.audio)=>e=>e.playlist[s].list,oe=(s=d.audio)=>e=>e.playlist[s].selection,Ue=(s=d.audio)=>e=>e.playlist[s].progress,_e=(s=d.audio)=>e=>e.playlist[s].currentTime,Ke=(s=d.audio)=>e=>e.playlist[s].playbackRate,Ve=(s=d.audio)=>e=>e.playlist[s].volume,Be=(s=d.audio)=>we(Ne(s),e=>Object.values(e)),qe=(s=d.audio)=>we(Ne(s),oe(s),(e,t)=>{if(!!t.id)return e[t.id]}),$e={selection:oe(d.audio),progress:Ue(d.audio),currentTime:_e(d.audio),playbackRate:Ke(d.audio),volume:Ve(d.audio),list:Be(d.audio),selectedItem:qe(d.audio)},Fe={selection:oe(d.video),progress:Ue(d.video),currentTime:_e(d.video),playbackRate:Ke(d.video),volume:Ve(d.video),list:Be(d.video),selectedItem:qe(d.video)};import{createSelector as y}from"reselect";var G="HMS-Store:",u=class{static v(e,...t){this.log(T.VERBOSE,e,...t)}static d(...e){this.log(T.DEBUG,...e)}static i(...e){this.log(T.INFO,...e)}static w(...e){this.log(T.WARN,...e)}static e(...e){this.log(T.ERROR,...e)}static time(e){this.log(T.TIME,"[HMSPerformanceTiming]",e)}static timeEnd(e){this.log(T.TIMEEND,"[HMSPerformanceTiming]",e,e)}static cleanUp(){performance.clearMarks(),performance.clearMeasures()}static log(e,...t){if(!(this.level.valueOf()>e.valueOf()))switch(e){case T.VERBOSE:{console.log(G,...t);break}case T.DEBUG:{console.debug(G,...t);break}case T.INFO:{console.info(G,...t);break}case T.WARN:{console.warn(G,...t);break}case T.ERROR:{console.error(G,...t);break}case T.TIME:{performance.mark(t[1]);break}case T.TIMEEND:{let i=t[0],o=t[1];try{let r=performance.measure(o,o);this.log(T.DEBUG,i,o,r==null?void 0:r.duration),performance.clearMarks(o),performance.clearMeasures(o)}catch(r){this.log(T.DEBUG,i,o,r)}break}}}};u.level=T.VERBOSE;function M(s){return e=>t=>s(t,e)}var re=(s,e)=>e,yt=(s,e)=>e,Ge=(s,e)=>e,v=y([D,re],(s,e)=>e?s[e]:null),ae=y([h,yt],(s,e)=>e?s[e]:null),L=M(v),vi=M(y(v,s=>s==null?void 0:s.name)),z=M(ae),Ht=M((s,e)=>{let t=v(s,e);if(t&&t.videoTrack&&t.videoTrack!=="")return s.tracks[t.videoTrack]}),ft=M((s,e)=>{let t=v(s,e);if(t&&t.audioTrack&&t.audioTrack!=="")return s.tracks[t.audioTrack]}),Di=Ht,Ii=M((s,e)=>{let t=v(s,e);return(t==null?void 0:t.auxiliaryTracks.map(i=>s.tracks[i]))||[]}),je=(s,e)=>e?s.speakers[e]:null,Ei=M(y(je,s=>(s==null?void 0:s.audioLevel)||0)),kt=(s,e)=>{let t=ft(e)(s);return je(s,t==null?void 0:t.id)},bi=M(y(kt,s=>(s==null?void 0:s.audioLevel)||0)),Ai=M((s,e)=>{let t=v(s,e);if(t){let i=t==null?void 0:t.auxiliaryTracks.find(o=>q(s.tracks[o]));return i?s.tracks[i]:void 0}}),Ci=M(y(h,v,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return F(o)&&$(o)});return t?s[t]:void 0})),Li=M(y(h,v,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return F(o)&&q(o)});return t?s[t]:void 0})),xi=M(y(h,v,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(i=>{let o=s[i];return Y(o)&&q(o)});return t?s[t]:void 0})),Je=M(y(h,v,(s,e)=>w(s,e))),Oi=s=>y(Je(s),e=>e.video),We=s=>y(Je(s),e=>e.audio),wi=M((s,e)=>{let t=v(s,e);return V(s,t==null?void 0:t.audioTrack)}),Ni=M((s,e)=>{let t=v(s,e);return V(s,t==null?void 0:t.videoTrack)}),Ye=M((s,e)=>{if(e&&s.tracks[e])return s.tracks[e].volume===0}),Ui=M((s,e)=>{let t=v(s,e);return Ye(t==null?void 0:t.audioTrack)(s)}),_i=M((s,e)=>{let t=We(e)(s);return Ye(t==null?void 0:t.id)(s)}),Qe=M((s,e)=>{let t=ae(s,e);if(t){if(t.type!=="audio"){u.w("Please pass audio track here");return}return t.volume}}),Ki=M((s,e)=>{let t=v(s,e);return Qe(t==null?void 0:t.audioTrack)(s)}),Vi=M((s,e)=>{let t=We(e)(s);return Qe(t==null?void 0:t.id)(s)}),Bi=M((s,e)=>{let t=ae(s,e);if(t){if(t.type!=="video"){u.w("Please pass video track here");return}return t.layer}}),Xe=y([Q,be,re],(s,e,t)=>{if(!!t)return s.filter(i=>{var o;return!i.recipientPeer&&!((o=i.recipientRoles)==null?void 0:o.length)||![e,t].includes(i.sender)?!1:[e,t].includes(i.recipientPeer)})}),ze=y([Q,Ge],(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})}),Pt=y(Q,s=>s.filter(e=>{var t;return!e.recipientPeer&&!((t=e.recipientRoles)==null?void 0:t.length)})),Rt=y([ze,Ge],s=>s?s.filter(e=>!e.read).length:0),vt=y([Xe,re],s=>s?s.filter(e=>!e.read).length:0),qi=y(Pt,s=>s.filter(e=>!e.read).length),$i=M(Xe),Fi=M(ze),Gi=M(Rt),ji=M(vt),Ji=s=>y([ee],e=>e.filter(t=>t.roleName===s)),Wi=s=>y(L(s),e=>{try{return(e==null?void 0:e.metadata)&&e.metadata!==""?JSON.parse(e.metadata):{}}catch(t){return console.error("cannot parse peer metadata",t),{}}});import{createSelector as ne}from"reselect";var zi=ne([D,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}})),Dt=s=>s.roleChangeRequests[0]||null,Zi=ne([Dt,D,x],(s,e,t)=>s?{requestedBy:e[s.requestedBy],role:t[s.roleName],token:s.token}:null),eo=ne([X],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 j}from"reselect";var oo=s=>j([x],e=>e[s]),It=j([U,h],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Et=j([N,h],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),ro=s=>j([It],e=>e.includes(s)),ao=s=>j([Et],e=>e.includes(s));import{HMSAudioTrack as Ct,HMSRemoteVideoTrack as it}from"@100mslive/hms-video";import{HMSRemoteAudioTrack as bt,HMSRemoteVideoTrack as At}from"@100mslive/hms-video";function Ze(s){return s instanceof bt||s instanceof At}var Z=class{constructor(e,t,i,o){this.playlistManager=e;this.syncPlaylistState=i;this.store=o;this.type=t}play(e){return n(this,null,function*(){if(!e){u.w("Please pass id to play");return}yield this.playlistManager.setEnabled(!0,{id:e,type:this.type})})}pause(){return n(this,null,function*(){let e=this.type===d.audio?$e:Fe,t=this.store.getState(e.selection);if(!t.id){u.w("No item is currently playing to pause");return}yield this.playlistManager.setEnabled(!1,{id:t.id,type:this.type})})}playNext(){return n(this,null,function*(){yield this.playlistManager.playNext(this.type)})}playPrevious(){return n(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 n(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`)}};var et={[P.PEER_JOINED]:p.PEER_JOINED,[P.PEER_LEFT]:p.PEER_LEFT,[P.ROLE_UPDATED]:p.ROLE_UPDATED,[P.AUDIO_TOGGLED]:"PEER_AUDIO_UPDATED",[P.VIDEO_TOGGLED]:"PEER_VIDEO_UPDATED",[P.NAME_UPDATED]:p.NAME_UPDATED,[P.METADATA_UPDATED]:p.METADATA_UPDATED},tt={[I.TRACK_ADDED]:p.TRACK_ADDED,[I.TRACK_REMOVED]:p.TRACK_REMOVED,[I.TRACK_MUTED]:p.TRACK_MUTED,[I.TRACK_UNMUTED]:p.TRACK_UNMUTED,[I.TRACK_DEGRADED]:p.TRACK_DEGRADED,[I.TRACK_RESTORED]:p.TRACK_RESTORED},st={[P.PEER_JOINED]:"peerJoined",[P.PEER_LEFT]:"peerLeft",[P.NAME_UPDATED]:"peerNameUpdated",[P.METADATA_UPDATED]:"peerMetadataUpdated"};var ce=class{constructor(e,t,i){this.hmsSDKTracks={};this.hmsSDKPeers={};this.isRoomJoinCalled=!1;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,g.convertPlaylist(this.sdk.getPlaylistManager()))},e)};this.sendPeerUpdateNotification=(e,t)=>{let i=this.store.getState(L(t.peerId)),o="peerUpdate";o=st[e],this.syncRoomState(o),i||(i=this.store.getState(L(t.peerId))),this.hmsNotifications.sendPeerUpdate(e,i)};this.setState=(e,t)=>this.store.namedSetState(e,t);this.store=e,this.sdk=t,this.hmsNotifications=i}unblockAudio(){return n(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 it?(i.preferLayer(t),this.updateVideoLayer(e,"setPreferredLayer")):u.w(`track ${e} is not an video track`):this.logPossibleInconsistency(`track ${e} not present, unable to set preffer layer`)}preview(e){return n(this,null,function*(){if(this.isRoomJoinCalled){this.logPossibleInconsistency("attempting to call preview after join was called");return}let t=this.store.getState(ie);if(t===f.Preview||t===f.Connecting){this.logPossibleInconsistency("attempting to call preview while room is in preview/connecting");return}try{this.setState(i=>{i.room.roomState=f.Connecting},"connecting"),yield this.sdkPreviewWithListeners(e)}catch(i){throw u.e("Cannot show preview. Failed to connect to room - ",i),i}})}join(e){if(this.isRoomJoinCalled){this.logPossibleInconsistency("room join is called again");return}try{this.sdkJoinWithListeners(e),this.isRoomJoinCalled=!0,this.setState(t=>{t.room.roomState=f.Connecting},"join")}catch(t){throw this.isRoomJoinCalled=!1,u.e("Failed to connect to room - ",t),t}}leave(){return n(this,null,function*(){if(!this.store.getState(xe)){this.logPossibleInconsistency("room leave is called when no room is connected");return}return this.sdk.leave().then(()=>{this.resetState("leave"),u.i("left room")}).catch(t=>{u.e("error in leaving room - ",t)})})}setScreenShareEnabled(e,t){return n(this,null,function*(){e?yield this.startScreenShare(t):yield this.stopScreenShare()})}addTrack(e,t="regular"){return n(this,null,function*(){yield this.sdk.addTrack(e,t),this.syncRoomState("addTrack")})}removeTrack(e){return n(this,null,function*(){yield this.sdk.removeTrack(e),this.syncRoomState("removeTrack")})}setLocalAudioEnabled(e){return n(this,null,function*(){let t=this.store.getState(N);t&&(yield this.setEnabledTrack(t,e))})}setLocalVideoEnabled(e){return n(this,null,function*(){let t=this.store.getState(U);t&&(yield this.setEnabledTrack(t,e))})}setEnabledTrack(e,t){return n(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(S=>{S.tracks[e].displayEnabled=!t},"rollbackDisplayEnabled"),this.hmsNotifications.sendError(g.convertException(a)),a}let o=t?I.TRACK_UNMUTED:I.TRACK_MUTED;this.hmsNotifications.sendTrackUpdate(o,e)})}setAudioSettings(e){return n(this,null,function*(){let t=this.store.getState(N);t&&(yield this.setSDKLocalAudioTrackSettings(t,e),this.syncRoomState("setAudioSettings"))})}setVideoSettings(e){return n(this,null,function*(){let t=this.store.getState(U);t&&(yield this.setSDKLocalVideoTrackSettings(t,e),this.syncRoomState("setVideoSettings"))})}sendMessage(e){this.sendBroadcastMessage(e)}sendBroadcastMessage(e,t){return n(this,null,function*(){let i=yield this.sdk.sendBroadcastMessage(e,t);this.updateMessageInStore(i,{message:e,type:t})})}sendGroupMessage(e,t,i){return n(this,null,function*(){let o=this.store.getState(x),r=t.map(S=>o[S]),a=yield this.sdk.sendGroupMessage(e,r,i);this.updateMessageInStore(a,{message:e,recipientRoles:t,type:i})})}sendDirectMessage(e,t,i){return n(this,null,function*(){let o=this.hmsSDKPeers[t],r=yield this.sdk.sendDirectMessage(e,o,i);this.updateMessageInStore(r,{message:e,recipientPeer:o.peerId,type:i})})}updateMessageInStore(e,t){if(!e)throw u.w("sendMessage","Failed to send message",t),Error(`sendMessage Failed - ${JSON.stringify(t)}`);let i=g.convertMessage(e);return i.read=!0,i.senderName="You",this.onHMSMessage(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 n(this,null,function*(){if(this.localAndVideoUnmuting(e))return new Promise(i=>{let o=this.store.subscribe(r=>n(this,null,function*(){r&&(yield this.attachVideoInternal(e,t),o(),i())}),te)});yield this.attachVideoInternal(e,t)})}detachVideo(e,t){return n(this,null,function*(){let i=this.hmsSDKTracks[e];i&&i.type==="video"?(yield i.removeSink(t),this.updateVideoLayer(e,"detachVideo")):this.logPossibleInconsistency("no video track found to remove sink")})}addPluginToVideoTrack(e,t){return n(this,null,function*(){return this.addRemoveVideoPlugin(e,"add",t)})}addPluginToAudioTrack(e){return n(this,null,function*(){return this.addRemoveAudioPlugin(e,"add")})}removePluginFromVideoTrack(e){return n(this,null,function*(){return this.addRemoveVideoPlugin(e,"remove")})}removePluginFromAudioTrack(e){return n(this,null,function*(){return this.addRemoveAudioPlugin(e,"remove")})}changeRole(e,t,i=!1){return n(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 n(this,null,function*(){let t=e.requestedBy?this.hmsSDKPeers[e.requestedBy.id]:void 0;t||u.w(`peer for which role change is requested no longer available - ${e.requestedBy}`);let i={requestedBy:t,role:e.role,token:e.token};yield this.sdk.acceptChangeRole(i),this.removeRoleChangeRequest(e)})}rejectChangeRole(e){this.removeRoleChangeRequest(e)}endRoom(e,t){return n(this,null,function*(){let i=this.store.getState(Oe);if(!(i==null?void 0:i.endRoom)){u.w("You are not allowed to perform this action - endRoom");return}yield this.sdk.endRoom(e,t)})}removePeer(e,t){return n(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 n(this,null,function*(){yield this.sdk.startRTMPOrRecording(e)})}stopRTMPAndRecording(){return n(this,null,function*(){yield this.sdk.stopRTMPAndRecording()})}startHLSStreaming(e){return n(this,null,function*(){yield this.sdk.startHLSStreaming(e)})}stopHLSStreaming(e){return n(this,null,function*(){yield this.sdk.stopHLSStreaming(e)})}changeName(e){return n(this,null,function*(){yield this.sdk.changeName(e)})}changeMetadata(e){return n(this,null,function*(){typeof e!="string"&&(e=JSON.stringify(e)),yield this.sdk.changeMetadata(e)})}setRemoteTrackEnabled(e,t){return n(this,null,function*(){if(typeof e=="string"){let i=this.hmsSDKTracks[e];i&&Ze(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 n(this,null,function*(){let t={enabled:e.enabled,type:e.type,source:e.source};if(e.roles){let i=this.store.getState(x);t.roles=e.roles.map(o=>i[o])}yield this.sdk.changeMultiTrackState(t)})}setLogLevel(e){u.level=e,this.sdk.setLogLevel(e)}resetState(e="resetState"){this.setState(t=>{Object.assign(t,W())},e),this.isRoomJoinCalled=!1,this.hmsSDKTracks={},u.cleanUp()}sdkJoinWithListeners(e){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)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)})}onRemovedFromRoom(e){var i;let t=this.store.getState(L((i=e.requestedBy)==null?void 0:i.peerId));this.hmsNotifications.sendLeaveRoom(K(_({},e),{requestedBy:t||void 0})),u.i("resetting state after peer removed",e),this.resetState(e.roomEnded||!t?"roomEnded":"removedFromRoom")}onDeviceChange(e){let t=e.devices;if(!t)return;let i=this.store.getState(b);if(this.setState(o=>{C(o.devices.audioInput,t.audioInput)||(o.devices.audioInput=t.audioInput),C(o.devices.videoInput,t.videoInput)||(o.devices.videoInput=t.videoInput),C(o.devices.audioOutput,t.audioOutput)||(o.devices.audioOutput=t.audioOutput),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=g.convertDeviceChangeUpdate(e);this.hmsNotifications.sendDeviceChange(o)}}sdkPreviewWithListeners(e){return n(this,null,function*(){yield this.sdk.preview(e,{onPreview:this.onPreview.bind(this),onError:this.onError.bind(this),onDeviceChange:this.onDeviceChange.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)})})}startScreenShare(e){return n(this,null,function*(){this.store.getState(se)?this.logPossibleInconsistency("start screenshare is called while it's on"):(yield this.sdk.startScreenShare(()=>this.syncRoomState("screenshareStopped"),e),this.syncRoomState("startScreenShare"))})}stopScreenShare(){return n(this,null,function*(){this.store.getState(se)?(yield this.sdk.stopScreenShare(),this.syncRoomState("stopScreenShare")):this.logPossibleInconsistency("stop screenshare is called while it's not on")})}attachVideoInternal(e,t){return n(this,null,function*(){let i=this.hmsSDKTracks[e];i&&i.type==="video"?(yield i.addSink(t),this.updateVideoLayer(e,"attachVideo")):this.logPossibleInconsistency("no video track found to add sink")})}syncRoomState(e){u.time(`store-sync-${e}`);let t={},i=[],o={},r={},a={},S=this.sdk.getPeers();for(let H of S){let A=g.convertPeer(H);t[A.id]=A,i.push(A.id),this.hmsSDKPeers[A.id]=H;let B=[H.audioTrack,H.videoTrack,...H.auxiliaryTracks];for(let J of B){if(!J)continue;let ue=g.convertTrack(J);o[ue.id]=ue,r[J.trackId]=J}A.isLocal&&Object.assign(a,this.getMediaSettings(H))}let m=this.sdk.getRecordingState(),R=this.sdk.getRTMPState(),Se=this.sdk.getHLSState();this.setState(H=>{H.room.peers=i;let A=H.peers,B=H.tracks;ge(A,t),he(B,o),Object.assign(H.settings,a),this.hmsSDKTracks=r,Object.assign(H.roles,g.convertRoles(this.sdk.getRoles())),Object.assign(H.playlist,g.convertPlaylist(this.sdk.getPlaylistManager())),Object.assign(H.room,g.convertRecordingStreamingState(m,R,Se))},e),u.timeEnd(`store-sync-${e}`)}onPreview(e){this.setState(t=>{Object.assign(t.room,g.convertRoom(e)),t.room.roomState=f.Preview},"previewStart"),this.syncRoomState("previewSync")}onJoin(e){let t=this.sdk.getPlaylistManager();this.audioPlaylist=new Z(t,d.audio,this.syncPlaylistState.bind(this),this.store),this.videoPlaylist=new Z(t,d.video,this.syncRoomState.bind(this),this.store),this.syncRoomState("joinSync"),this.setState(i=>{Object.assign(i.room,g.convertRoom(e)),i.room.isConnected=!0,i.room.roomState=f.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(g.convertPlaylistItem(t,i)),this.syncPlaylistState(`${i.type}PlaylistItemEnded`)})}onRoomUpdate(e,t){this.setState(i=>{Object.assign(i.room,g.convertRoom(t))},"RoomUpdate")}onPeerUpdate(e,t){if(![P.BECAME_DOMINANT_SPEAKER,P.RESIGNED_DOMINANT_SPEAKER].includes(e)){if(Array.isArray(t)){this.syncRoomState("peersJoined");let i=[];for(let o of t){let r=this.store.getState(L(o.peerId));r&&i.push(r)}this.hmsNotifications.sendPeerList(i);return}this.sendPeerUpdateNotification(e,t)}}onTrackUpdate(e,t,i){if(e===I.TRACK_REMOVED)this.hmsNotifications.sendTrackUpdate(e,t.trackId),this.handleTrackRemove(t,i);else{let o=e===I.TRACK_ADDED?"trackAdded":"trackUpdate";this.syncRoomState(o),this.hmsNotifications.sendTrackUpdate(e,t.trackId)}}onMessageReceived(e){let t=g.convertMessage(e);t.read=!1,this.onHMSMessage(t),this.hmsNotifications.sendMessageReceived(t)}onHMSMessage(e){this.setState(t=>{e.id=String(this.store.getState(Le)+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")}onChangeTrackStateRequest(e){let t=this.store.getState(L(e.requestedBy.peerId)),i=this.getStoreLocalTrackIDfromSDKTrack(e.track),o=this.store.getState(z(i));if(!t)return this.logPossibleInconsistency(`Not found peer who requested track state change, ${e.requestedBy}`);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,track:o,enabled:e.enabled})}onChangeMultiTrackStateRequest(e){let t=this.store.getState(L(e.requestedBy.peerId));if(!t)return this.logPossibleInconsistency(`Not found peer who requested track state change, ${e.requestedBy}`);e.enabled||this.syncRoomState("changeMultiTrackStateRequest");let i=[],o=this.store.getState(h);for(let r of e.tracks){let a=this.getStoreLocalTrackIDfromSDKTrack(r);a&&o[a]&&i.push(o[a])}this.hmsNotifications.sendChangeMultiTrackStateRequest({requestedBy:t,tracks:i,enabled:e.enabled,type:e.type,source:e.source})}onReconnected(){this.syncRoomState("reconnectedSync"),this.hmsNotifications.sendReconnected(),this.setState(e=>{e.room.roomState=f.Connected},"reconnected")}onReconnecting(e){let t=g.convertException(e);u.e("Reconnection: received error from sdk",t),this.hmsNotifications.sendReconnecting(t),this.setState(i=>{i.room.roomState=f.Reconnecting,i.errors.push(t)},"reconnecting")}onError(e){let t=g.convertException(e);t.isTerminal?(this.leave().then(()=>u.e("error from SDK, left room.")),this.setState(i=>{i.room.roomState=f.Failed,i.errors.push(t)},"errorTerminal")):this.store.getState().errors.length<50&&this.setState(o=>{o.errors.push(t)},"error"),this.hmsNotifications.sendError(t),u.e("received error from sdk",t)}updateVideoLayer(e,t){let i=this.hmsSDKTracks[e];i&&i instanceof it&&this.setState(o=>{o.tracks[e].layer=i.getSimulcastLayer()},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 S=o==null?void 0:o.auxiliaryTracks.indexOf(a);S>-1&&this.isSameStoreSDKTrack(a,o==null?void 0:o.auxiliaryTracks[S])&&(o==null||o.auxiliaryTracks.splice(S,1))}delete r[a],delete this.hmsSDKTracks[a]},"trackRemoved")}setEnabledSDKTrack(e,t){return n(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 n(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 n(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(Ee),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 Ct?(i.setVolume(e),this.setState(o=>{let r=o.tracks[t];r&&(r.volume=e)},"trackVolume")):u.w(`track ${t} is not an audio track`):this.logPossibleInconsistency(`track ${t} not present, unable to set volume`)}localAndVideoUnmuting(e){if(this.store.getState(b).videoTrack!==e)return!1;let i=this.store.getState(Ce),o=this.store.getState(te);return i&&!o}logPossibleInconsistency(e){u.w("possible inconsistency detected - ",e)}addRemoveVideoPlugin(e,t,i){return n(this,null,function*(){if(!e){u.w("Invalid plugin received in store");return}let o=this.store.getState(U);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 n(this,null,function*(){if(!e){u.w("Invalid plugin received in store");return}let i=this.store.getState(N);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(g.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(Ae).find(i=>this.hmsSDKTracks[i].trackId===e.trackId)}};import{EventEmitter2 as Lt}from"eventemitter2";var le="hmsNotification",de=class{constructor(e){this.id=0;this.onNotification=e=>(this.eventEmitter.addListener(le,e),()=>{this.eventEmitter.removeListener(le,e)});this.store=e,this.eventEmitter=new Lt}sendPlaylistTrackEnded(e){let t=this.createNotification(p.PLAYLIST_TRACK_ENDED,e,k.INFO);this.emitEvent(t)}sendDeviceChange(e){var i;let t=this.createNotification(p.DEVICE_CHANGE_UPDATE,e,e.error?k.ERROR:k.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?p.ROOM_ENDED:p.REMOVED_FROM_ROOM,e,k.INFO,`${e.roomEnded?"Room ended":"Removed from room"} ${t?`by ${t}`:""}`);this.emitEvent(i)}sendPeerList(e){let t=this.createNotification(p.PEER_LIST,e,k.INFO);this.emitEvent(t)}sendPeerUpdate(e,t){let i=this.store.getState(L(t==null?void 0:t.id))||t,o=et[e];if(o){let r=this.createNotification(o,i,k.INFO);this.emitEvent(r)}}sendTrackUpdate(e,t){let i=this.store.getState(z(t)),o=tt[e];if(o){let r=this.createNotification(o,i,k.INFO);this.emitEvent(r)}}sendMessageReceived(e){let t=this.createNotification(p.NEW_MESSAGE,e,k.INFO);this.emitEvent(t)}sendError(e){let t=this.createNotification(p.ERROR,e,k.ERROR);this.emitEvent(t)}sendReconnecting(e){let t=this.createNotification(p.RECONNECTING,e,k.ERROR);this.emitEvent(t)}sendReconnected(){let e=this.createNotification(p.RECONNECTED,null,k.INFO);this.emitEvent(e)}sendChangeTrackStateRequest(e){let t=this.createNotification(p.CHANGE_TRACK_STATE_REQUEST,e,k.INFO);this.emitEvent(t)}sendChangeMultiTrackStateRequest(e){let t=this.createNotification(p.CHANGE_MULTI_TRACK_STATE_REQUEST,e,k.INFO);this.emitEvent(t)}emitEvent(e){this.eventEmitter.emit(le,e)}createNotification(e,t,i,o=""){return this.id++,{id:this.id,type:e,message:o,data:t,severity:i}}};var O=class{constructor(e,t,i){e?this.store=e:this.store=O.createNewHMSStore(),i?this.notifications=i:this.notifications=new de(this.store),t?this.actions=t:this.actions=new ce(this.store,new Nt,this.notifications),this.initialTriggerOnSubscribe=!1}triggerOnSubscribe(){this.initialTriggerOnSubscribe||(O.makeStoreTriggerOnSubscribe(this.store),this.initialTriggerOnSubscribe=!0)}getStore(){return this.store}getHMSActions(){return this.actions}getNotifications(){return{onNotification:this.notifications.onNotification}}static createNewHMSStore(){let e=Ot(()=>W()),t=e.setState;e.setState=r=>{let a=typeof r=="function"?xt(r):r;t(a)};let i=e.getState;e.getState=r=>{if(r){let a=r.name||"byIDSelector";window.selectorsCount||(window.selectorsCount={}),window.selectorsCount[a]=(window.selectorsCount[a]||0)+1;let S=performance.now(),m=r(i()),R=performance.now()-S;return R>1&&(window.expensiveSelectors=window.expensiveSelectors||new Map,window.expensiveSelectors.set(a,R)),m}return i()},O.useShallowCheckInSubscribe(e);let o=O.setUpDevtools(e,"HMSStore");return K(_({},e),{namedSetState:o})}static makeStoreTriggerOnSubscribe(e){let t=e.subscribe;e.subscribe=(i,o,r)=>(i(e.getState(o),void 0),t(i,o,r))}static useShallowCheckInSubscribe(e){let t=e.subscribe;e.subscribe=(i,o,r)=>(o||(o=a=>a),r=r||wt,t(i,o,r))}static setUpDevtools(e,t){let i;try{i=window.__REDUX_DEVTOOLS_EXTENSION__||window.top.__REDUX_DEVTOOLS_EXTENSION__}catch(a){}if(!i)return a=>{e.setState(a)};let o=i.connect(O.devtoolsOptions(t));o.prefix=t?`${t} > `:"";let r=e.setState;return e.setState=a=>{r(a),o.send(`${o.prefix}setState`,e.getState())},o.subscribe(O.devtoolsSubscribe(o,e,r)),o.send("setUpStore",e.getState()),(a,S)=>{r(a);let m=S||`${o.prefix}action`;o.send(m,e.getState())}}static devtoolsOptions(e){return{name:e,actionsBlacklist:["audioLevel","playlistProgress"]}}static devtoolsSubscribe(e,t,i){return o=>{var r,a,S,m;if(o.type==="DISPATCH"&&o.state)["JUMP_TO_ACTION","JUMP_TO_STATE"].includes(o.payload.type)?i(JSON.parse(o.state)):t.setState(JSON.parse(o.state));else if(o.type==="DISPATCH"&&((r=o.payload)==null?void 0:r.type)==="COMMIT")e.init(t.getState());else if(o.type==="DISPATCH"&&((a=o.payload)==null?void 0:a.type)==="IMPORT_STATE"){let R=(S=o.payload.nextLiftedState)==null?void 0:S.actionsById;(((m=o.payload.nextLiftedState)==null?void 0:m.computedStates)||[]).forEach(({state:H},A)=>{let B=R[A]||`${e.prefix}setState`;A===0?e.init(H):(i(H),e.send(B,t.getState()))})}}}};export{lt as HMSAudioPluginType,T as HMSLogLevel,me as HMSMessageType,k as HMSNotificationSeverity,p as HMSNotificationTypes,d as HMSPlaylistType,O as HMSReactiveStore,f as HMSRoomState,dt as HMSVideoPluginType,W as createDefaultStoreState,$e as selectAudioPlaylist,xi as selectAudioPlaylistTrackByPeerID,ft as selectAudioTrackByPeerID,Qe as selectAudioTrackVolume,Ki as selectAudioVolumeByPeerID,Ai as selectAuxiliaryAudioByPeerID,Ii as selectAuxiliaryTracksByPeerID,ai as selectAvailableRoleNames,Pt as selectBroadcastMessages,qi as selectBroadcastMessagesUnreadCount,Di as selectCameraStreamByPeerID,ii as selectDegradedTracks,js as selectDevices,Qs as selectDominantSpeaker,di as selectHLSState,Q as selectHMSMessages,Le as selectHMSMessagesCount,eo as selectIsAllowedToPublish,ni as selectIsAllowedToSubscribe,Ye as selectIsAudioLocallyMuted,Js as selectIsConnectedToRoom,ri as selectIsInPreview,Xs as selectIsLocalAudioEnabled,ao as selectIsLocalAudioPluginPresent,se as selectIsLocalScreenShared,Ce as selectIsLocalVideoDisplayEnabled,te as selectIsLocalVideoEnabled,ro as selectIsLocalVideoPluginPresent,Ui as selectIsLocallyMutedByPeerID,wi as selectIsPeerAudioEnabled,Ni as selectIsPeerVideoEnabled,_i as selectIsScreenShareLocallyMutedByPeerID,zs as selectIsSomeoneScreenSharing,N as selectLocalAudioTrackID,Ee as selectLocalMediaSettings,b as selectLocalPeer,be as selectLocalPeerID,X as selectLocalPeerRole,Ae as selectLocalTrackIDs,U as selectLocalVideoTrackID,Ie as selectMessageIDsInOrder,$i as selectMessagesByPeerID,Fi as selectMessagesByRole,De as selectMessagesMap,ji as selectMessagesUnreadCountByPeerID,Gi as selectMessagesUnreadCountByRole,bi as selectPeerAudioByID,L as selectPeerByID,Ws as selectPeerCount,Wi as selectPeerMetadata,vi as selectPeerNameByID,Tt as selectPeerScreenSharing,Zs as selectPeerSharingAudio,si as selectPeerSharingAudioPlaylist,ti as selectPeerSharingVideoPlaylist,ee as selectPeers,Ji as selectPeersByRole,D as selectPeersMap,ei as selectPeersScreenSharing,zi as selectPeersWithAudioStatus,Oe as selectPermissions,li as selectRTMPState,ci as selectRecordingState,Ys as selectRemotePeers,oo as selectRoleByRoleName,Zi as selectRoleChangeRequest,x as selectRolesMap,E as selectRoom,ui as selectRoomStartTime,xe as selectRoomStarted,ie as selectRoomState,We as selectScreenShareAudioByPeerID,Oi as selectScreenShareByPeerID,Je as selectScreenSharesByPeerId,Vi as selectScreenshareAudioVolumeByPeerID,Si as selectSessionId,Bi as selectSimulcastLayerByTrack,mt as selectSpeakers,Ei as selectTrackAudioByID,z as selectTrackByID,h as selectTracksMap,oi as selectUnreadHMSMessagesCount,Fe as selectVideoPlaylist,Li as selectVideoPlaylistAudioTrackByPeerID,Ci as selectVideoPlaylistVideoTrackByPeerID,Ht as selectVideoTrackByPeerID};
|
|
1
|
+
var de=Object.defineProperty,Pt=Object.defineProperties;var Rt=Object.getOwnPropertyDescriptors;var xe=Object.getOwnPropertySymbols;var It=Object.prototype.hasOwnProperty,vt=Object.prototype.propertyIsEnumerable;var Le=(s,e,t)=>e in s?de(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,q=(s,e)=>{for(var t in e||(e={}))It.call(e,t)&&Le(s,t,e[t]);if(xe)for(var t of xe(e))vt.call(e,t)&&Le(s,t,e[t]);return s},W=(s,e)=>Pt(s,Rt(e)),Dt=s=>de(s,"__esModule",{value:!0});var bt=(s,e)=>{Dt(s);for(var t in e)de(s,t,{get:e[t],enumerable:!0})};var a=(s,e,t)=>new Promise((r,i)=>{var o=S=>{try{c(t.next(S))}catch(f){i(f)}},n=S=>{try{c(t.throw(S))}catch(f){i(f)}},c=S=>S.done?r(S.value):Promise.resolve(S.value).then(o,n);c((t=t.apply(s,e)).next())});import Os from"immer";import ws from"zustand/vanilla";import Ns from"zustand/shallow";import{HMSSdk 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.Failed="Failed"})(H||(H={}));var se=()=>({room:{id:"",isConnected:!1,name:"",peers:[],shareableLink:"",localPeer:"",hasWaitingRoom:!1,roomState:H.Disconnected,recording:{browser:{running:!1},server:{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:{},settings:{audioInputDeviceId:"",audioOutputDeviceId:"",videoInputDeviceId:""},devices:{audioInput:[],audioOutput:[],videoInput:[]},roles:{},roleChangeRequests:[],errors:[]}),re=()=>({peerStats:{},trackStats:{},localPeer:{id:""}});var Oe;(function(e){e.CHAT="chat"})(Oe||(Oe={}));var R;(function(r){r.INFO="info",r.ERROR="error",r.CRITICAL="critical"})(R||(R={}));var m;(function(l){l.PEER_JOINED="PEER_JOINED",l.PEER_LEFT="PEER_LEFT",l.PEER_LIST="PEER_LIST",l.NEW_MESSAGE="NEW_MESSAGE",l.ERROR="ERROR",l.RECONNECTING="RECONNECTING",l.RECONNECTED="RECONNECTED",l.TRACK_ADDED="TRACK_ADDED",l.TRACK_REMOVED="TRACK_REMOVED",l.TRACK_MUTED="TRACK_MUTED",l.TRACK_UNMUTED="TRACK_UNMUTED",l.TRACK_DEGRADED="TRACK_DEGRADED",l.TRACK_RESTORED="TRACK_RESTORED",l.ROLE_CHANGE_REQUEST="ROLE_CHANGE_REQUEST",l.ROLE_UPDATED="ROLE_UPDATED",l.CHANGE_TRACK_STATE_REQUEST="CHANGE_TRACK_STATE_REQUEST",l.CHANGE_MULTI_TRACK_STATE_REQUEST="CHANGE_MULTI_TRACK_STATE_REQUEST",l.ROOM_ENDED="ROOM_ENDED",l.REMOVED_FROM_ROOM="REMOVED_FROM_ROOM",l.DEVICE_CHANGE_UPDATE="DEVICE_CHANGE_UPDATE",l.PLAYLIST_TRACK_ENDED="PLAYLIST_TRACK_ENDED",l.NAME_UPDATED="NAME_UPDATED",l.METADATA_UPDATED="METADATA_UPDATED"})(m||(m={}));var p;(function(t){t.audio="audio",t.video="video"})(p||(p={}));import{HMSException as Gs,HMSSimulcastLayer as Js,HMSPeerUpdate as I,HMSRoomUpdate as Ys,HMSTrackUpdate as b,HMSLogLevel as k,HMSAudioPluginType as Et,HMSVideoPluginType as At}from"@100mslive/hms-video";import{HMSLocalAudioTrack as Ue,HMSLocalVideoTrack as _e,HMSRemoteAudioTrack as xt,HMSRemoteVideoTrack as Lt}from"@100mslive/hms-video";var we=(s,e)=>{let t=he(Object.keys(s),Object.keys(e));for(let r of t){let i=s[r],o=e[r];pe(i,o)?(N(i.auxiliaryTracks,o.auxiliaryTracks)&&(o.auxiliaryTracks=i.auxiliaryTracks),Object.assign(i,o)):Me(i,o)?delete s[r]:me(i,o)&&(s[r]=o)}},Ne=(s,e)=>{let t=he(Object.keys(s),Object.keys(e));for(let r of t){let i=s[r],o=e[r];pe(i,o)?(Ct(i,o),Object.assign(i,o)):Me(i,o)?delete s[r]:me(i,o)&&(s[r]=o)}},ue=(s,e)=>{let t=he(Object.keys(s),Object.keys(e));for(let r of t){let i=s[r],o=e[r];pe(i,o)?Object.assign(i,o):Me(i,o)?delete s[r]:me(i,o)&&(s[r]=o)}},Ct=(s,e)=>{s.plugins&&N(s.plugins,e.plugins)&&(e.plugins=s.plugins),s.layerDefinitions&&N(s.layerDefinitions,e.layerDefinitions)&&(e.layerDefinitions=s.layerDefinitions)},pe=(s,e)=>s&&e,Me=(s,e)=>s&&!e,me=(s,e)=>!s&&e,N=(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 r of s)t.add(r);for(let r of e)t.add(r);return Array.from(t)};var h=class{static convertPeer(e){var t,r,i;return{id:e.peerId,name:e.name,roleName:(t=e.role)==null?void 0:t.name,isLocal:e.isLocal,videoTrack:(r=e.videoTrack)==null?void 0:r.trackId,audioTrack:(i=e.audioTrack)==null?void 0:i.trackId,auxiliaryTracks:e.auxiliaryTracks.map(o=>o.trackId),customerUserId:e.customerUserId,customerDescription:e.metadata,metadata:e.metadata}}static convertTrack(e,t){let r={id:e.trackId,source:e.source,type:e.type,enabled:e.enabled,displayEnabled:e.enabled,peerId:e.peerId||t};return this.enrichTrack(r,e),r}static enrichTrack(e,t){let r=t.getMediaTrackSettings();e.source==="screen"&&e.type==="video"&&(e.displaySurface=r.displaySurface),e.height=r.height,e.width=r.width,t instanceof xt&&(e.volume=t.getVolume()||0),h.updateDeviceID(e,t),h.enrichVideoTrack(e,t),h.enrichPluginsDetails(e,t)}static updateDeviceID(e,t){var r;t instanceof _e||t instanceof Ue?e.deviceID=t.settings.deviceId:e.deviceID=(r=t.getMediaTrackSettings())==null?void 0:r.deviceId}static enrichVideoTrack(e,t){t instanceof Lt&&(e.layer=t.getSimulcastLayer(),e.degraded=t.degraded,N(t.getSimulcastDefinitions(),e.layerDefinitions)||(e.layerDefinitions=t.getSimulcastDefinitions()))}static enrichPluginsDetails(e,t){(t instanceof _e||t instanceof Ue)&&(N(t.getPlugins(),e.plugins)||(e.plugins=t.getPlugins()))}static convertRoom(e){var t,r,i,o,n,c,S;return{id:e.id,name:e.name,localPeer:(r=(t=e.localPeer)==null?void 0:t.peerId)!=null?r:"",hasWaitingRoom:e.hasWaitingRoom,shareableLink:e.shareableLink,recording:{browser:{running:!!((i=e.recording)==null?void 0:i.browser.running)},server:{running:!!((o=e.recording)==null?void 0:o.server.running)}},rtmp:{running:!!((n=e.rtmp)==null?void 0:n.running)},hls:{running:!!((c=e.hls)==null?void 0:c.running),variants:((S=e.hls)==null?void 0:S.variants)||[]},sessionId:e.sessionId,startedAt:e.startedAt&&new Date(e.startedAt)}}static convertMessage(e){var t,r,i;return{sender:e.sender.peerId,senderName:e.sender.name,senderRole:(t=e.sender.role)==null?void 0:t.name,senderUserId:e.sender.customerUserId,recipientPeer:(r=e.recipientPeer)==null?void 0:r.peerId,recipientRoles:(i=e.recipientRoles)==null?void 0:i.map(o=>o.name),time:e.time,type:e.type,message:e.message}}static convertRoles(e){let t={};return e&&e.forEach(r=>{t[r.name]=r}),t}static convertRoleChangeRequest(e){return{requestedBy:e.requestedBy.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),r=this.getConvertedPlaylistType(e,p.video);return{audio:t,video:r}}static convertPlaylistItem(e,t){let r=t.type,i=e.getCurrentSelection(r),o=e.isPlaying(r),n=t.url===(i==null?void 0:i.url);return W(q({},t),{type:t.type,selected:n,playing:n&&o})}static convertConnectionStats(e){let t=q({},e);return delete t.rawStatsArray,delete t.rawStats,t}static getConvertedPlaylistType(e,t){let r={},i=e.getCurrentSelection(t),o=e.getCurrentProgress(t),n=e.getVolume(t),c=e.getList(t),S=e.getCurrentIndex(t);return e.getList(t).forEach(f=>{r[f.id]=h.convertPlaylistItem(e,f)}),{list:r,selection:{id:i==null?void 0:i.id,hasPrevious:S>0,hasNext:S<c.length-1},progress:o,volume:n,currentTime:e.getCurrentTime(t),playbackRate:e.getPlaybackRate(t)}}static convertRecordingStreamingState(e,t,r){var i,o;return{recording:{browser:{running:!!((i=e==null?void 0:e.browser)==null?void 0:i.running)},server:{running:!!((o=e==null?void 0:e.server)==null?void 0:o.running)}},rtmp:{running:!!(t==null?void 0:t.running)},hls:{variants:(r==null?void 0:r.variants)||[],running:!!(r==null?void 0:r.running)}}}};import{createSelector as d}from"reselect";function j(s,e,t=Ot){let r,i;if(e)for(let o of e.auxiliaryTracks){let n=s[o];t(n)&&(i=J(n)?n:i,r=Y(n)?n:r)}return{video:r,audio:i}}function J(s){return s&&s.type==="audio"}function Y(s){return s&&s.type==="video"}function Ot(s){return s&&s.source==="screen"}function ie(s){return s&&s.source==="audioplaylist"}function Q(s){return s&&s.source==="videoplaylist"}function Ke(s){return Boolean(s==null?void 0:s.degraded)}function $(s,e){return e&&s.tracks[e]?s.tracks[e].enabled:!1}function Ve(s,e){return e&&s.tracks[e]?s.tracks[e].displayEnabled:!1}var E=s=>s.room,D=s=>s.peers,Be=s=>s.messages.byID,qe=s=>s.messages.allIDs,T=s=>s.tracks,je=s=>s.settings,zr=s=>s.devices,wt=s=>s.speakers,Xr=d([E],s=>s&&s.isConnected),Zr=d(E,s=>s.peers.length),ge=d([E,D],(s,e)=>s.peers.map(t=>e[t])),Nt=d(T,s=>Object.values(s)),A=d(E,D,(s,e)=>e[s.localPeer]),V=d(E,s=>s.localPeer),C=d(A,s=>s==null?void 0:s.audioTrack),x=d(A,s=>s==null?void 0:s.videoTrack),Ut=d(A,s=>s==null?void 0:s.auxiliaryTracks),We=d([C,x,Ut],(s,e,t)=>{let r=[...t];return s&&r.unshift(s),e&&r.unshift(e),r}),ei=d(ge,s=>s.filter(e=>!e.isLocal)),ti=d(D,wt,(s,e)=>{let t=Object.entries(e).sort((r,i)=>{var c,S;let o=((c=r[1])==null?void 0:c.audioLevel)||0;return(((S=i[1])==null?void 0:S.audioLevel)||0)>o?1:-1});if(t.length>0&&t[0][1].audioLevel&&t[0][1].audioLevel>0){let r=t[0][1].peerID;if(r in s)return s[r]}return null}),si=s=>{let e=A(s);return $(s,e==null?void 0:e.audioTrack)},Te=s=>{let e=A(s);return $(s,e==null?void 0:e.videoTrack)},$e=s=>{let e=A(s);return Ve(s,e==null?void 0:e.videoTrack)},He=d(A,T,(s,e)=>{let{video:t,audio:r}=j(e,s);return!!(t||r)}),_t=d(D,T,(s,e)=>{let t;for(let r in s){let i=s[r],{video:o,audio:n}=j(e,i);if(o)return i;n&&!t&&(t=i)}return t}),ri=d(_t,s=>!!s),ii=d(D,T,(s,e)=>{for(let t in s){let r=s[t],{audio:i,video:o}=j(e,r);if(!o&&!!i)return r}}),oi=d(D,T,(s,e)=>{let t=[],r=[];for(let i in s){let o=s[i],{video:n,audio:c}=j(e,o);n?t.push(o):c&&r.push(o)}return t.concat(r)}),ni=d(D,T,(s,e)=>{for(let t in e){let r=e[t];if(Q(r)&&Y(r)&&r.peerId)return s[r.peerId]}}),ai=d(D,T,(s,e)=>{for(let t in e){let r=e[t];if(ie(r)&&r.peerId)return s[r.peerId]}}),ci=d(Nt,s=>s.filter(Ke)),Fe=d(qe,s=>s.length),li=d(Be,s=>Object.values(s).filter(e=>!e.read).length),oe=d(qe,Be,(s,e)=>{let t=[];return s.forEach(r=>{t.push(e[r])}),t}),L=d([E],s=>s&&s.roomState),Si=d(L,s=>s===H.Preview),Ge=d(E,s=>s.roomState!==H.Disconnected),_=s=>s.roles,di=d([_],s=>Object.keys(s)),ne=d([A,_],(s,e)=>(s==null?void 0:s.roleName)?e[s.roleName]:null),ui=d([ne],s=>{var e;return((e=s==null?void 0:s.subscribeParams)==null?void 0:e.subscribeToRoles)?s.subscribeParams.subscribeToRoles.length>0:!1}),Je=d(ne,s=>s==null?void 0:s.permissions),pi=d(E,s=>s.recording),Mi=d(E,s=>s.rtmp),mi=d(E,s=>s.hls),hi=d(E,s=>s.sessionId),gi=d(E,s=>s.startedAt);import{createSelector as Ye}from"reselect";var Qe=(s=p.audio)=>e=>e.playlist[s].list,ye=(s=p.audio)=>e=>e.playlist[s].selection,ze=(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,et=(s=p.audio)=>e=>e.playlist[s].volume,tt=(s=p.audio)=>Ye(Qe(s),e=>Object.values(e)),st=(s=p.audio)=>Ye(Qe(s),ye(s),(e,t)=>{if(!!t.id)return e[t.id]}),rt={selection:ye(p.audio),progress:ze(p.audio),currentTime:Xe(p.audio),playbackRate:Ze(p.audio),volume:et(p.audio),list:tt(p.audio),selectedItem:st(p.audio)},it={selection:ye(p.video),progress:ze(p.video),currentTime:Xe(p.video),playbackRate:Ze(p.video),volume:et(p.video),list:tt(p.video),selectedItem:st(p.video)};import{createSelector as P}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 r=t[0],i=t[1];try{let o=performance.measure(i,i);this.log(k.DEBUG,r,i,o==null?void 0:o.duration),performance.clearMarks(i),performance.clearMeasures(i)}catch(o){this.log(k.DEBUG,r,i,o)}break}}}};M.level=k.VERBOSE;var fe=(s,e)=>e,Kt=(s,e)=>e,ot=(s,e)=>e,v=P([D,fe],(s,e)=>e?s[e]:null),ke=P([T,Kt],(s,e)=>e?s[e]:null),U=u(v),nt=u(P(v,s=>s==null?void 0:s.name)),ae=u(ke),Vt=u((s,e)=>{let t=v(s,e);if(t&&t.videoTrack&&t.videoTrack!=="")return s.tracks[t.videoTrack]}),Bt=u((s,e)=>{let t=v(s,e);if(t&&t.audioTrack&&t.audioTrack!=="")return s.tracks[t.audioTrack]}),xi=Vt,Li=u((s,e)=>{let t=v(s,e);return(t==null?void 0:t.auxiliaryTracks.map(r=>s.tracks[r]))||[]}),at=(s,e)=>e?s.speakers[e]:null,Oi=u(P(at,s=>(s==null?void 0:s.audioLevel)||0)),qt=(s,e)=>{let t=Bt(e)(s);return at(s,t==null?void 0:t.id)},wi=u(P(qt,s=>(s==null?void 0:s.audioLevel)||0)),Ni=u((s,e)=>{let t=v(s,e);if(t){let r=t==null?void 0:t.auxiliaryTracks.find(i=>J(s.tracks[i]));return r?s.tracks[r]:void 0}}),Ui=u(P(T,v,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(r=>{let i=s[r];return Q(i)&&Y(i)});return t?s[t]:void 0})),_i=u(P(T,v,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(r=>{let i=s[r];return Q(i)&&J(i)});return t?s[t]:void 0})),Ki=u(P(T,v,(s,e)=>{let t=e==null?void 0:e.auxiliaryTracks.find(r=>{let i=s[r];return ie(i)&&J(i)});return t?s[t]:void 0})),ct=u(P(T,v,(s,e)=>j(s,e))),Vi=s=>P(ct(s),e=>e.video),lt=s=>P(ct(s),e=>e.audio),Bi=u((s,e)=>{let t=v(s,e);return $(s,t==null?void 0:t.audioTrack)}),qi=u((s,e)=>{let t=v(s,e);return $(s,t==null?void 0:t.videoTrack)}),St=u((s,e)=>{if(e&&s.tracks[e])return s.tracks[e].volume===0}),ji=u((s,e)=>{let t=v(s,e);return St(t==null?void 0:t.audioTrack)(s)}),Wi=u((s,e)=>{let t=lt(e)(s);return St(t==null?void 0:t.id)(s)}),dt=u((s,e)=>{let t=ke(s,e);if(t){if(t.type!=="audio"){M.w("Please pass audio track here");return}return t.volume}}),$i=u((s,e)=>{let t=v(s,e);return dt(t==null?void 0:t.audioTrack)(s)}),Fi=u((s,e)=>{let t=lt(e)(s);return dt(t==null?void 0:t.id)(s)}),Gi=u((s,e)=>{let t=ke(s,e);if(t){if(t.type!=="video"){M.w("Please pass video track here");return}return t.layer}}),ut=P([oe,V,fe],(s,e,t)=>{if(!!t)return s.filter(r=>{var i;return!r.recipientPeer&&!((i=r.recipientRoles)==null?void 0:i.length)||![e,t].includes(r.sender)?!1:[e,t].includes(r.recipientPeer)})}),pt=P([oe,ot],(s,e)=>{if(!!e)return s.filter(t=>{var r,i;return((r=t.recipientRoles)==null?void 0:r.length)?(i=t.recipientRoles)==null?void 0:i.includes(e):!1})}),jt=P(oe,s=>s.filter(e=>{var t;return!e.recipientPeer&&!((t=e.recipientRoles)==null?void 0:t.length)})),Wt=P([pt,ot],s=>s?s.filter(e=>!e.read).length:0),$t=P([ut,fe],s=>s?s.filter(e=>!e.read).length:0),Ji=P(jt,s=>s.filter(e=>!e.read).length),Yi=u(ut),Qi=u(pt),zi=u(Wt),Xi=u($t),Zi=s=>P([ge],e=>e.filter(t=>t.roleName===s)),eo=s=>P(U(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),{}}});import{createSelector as Pe}from"reselect";var io=Pe([D,T],(s,e)=>Object.values(s).map(r=>{var i;return{peer:r,isAudioEnabled:r.audioTrack?(i=e[r.audioTrack])==null?void 0:i.enabled:!1}})),Ft=s=>s.roleChangeRequests[0]||null,oo=Pe([Ft,D,_],(s,e,t)=>s?{requestedBy:e[s.requestedBy],role:t[s.roleName],token:s.token}:null),no=Pe([ne],s=>{var i;let e=!1,t=!1,r=!1;return((i=s==null?void 0:s.publishParams)==null?void 0:i.allowed)&&(e=s.publishParams.allowed.includes("video"),t=s.publishParams.allowed.includes("audio"),r=s.publishParams.allowed.includes("screen")),{video:e,audio:t,screen:r}});import{createSelector as X}from"reselect";var So=s=>X([_],e=>e[s]),Gt=X([x,T],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),Jt=X([C,T],(s,e)=>{let t=null;return s&&(t=e[s]),(t==null?void 0:t.plugins)||[]}),uo=s=>X([Gt],e=>e.includes(s)),po=s=>X([Jt],e=>e.includes(s));import{HMSAudioTrack as zt,HMSRemoteVideoTrack as Tt}from"@100mslive/hms-video";import{HMSRemoteAudioTrack as Yt,HMSRemoteVideoTrack as Qt}from"@100mslive/hms-video";function Mt(s){return s instanceof Yt||s instanceof Qt}var ce=class{constructor(e,t,r,i){this.playlistManager=e;this.syncPlaylistState=r;this.store=i;this.type=t}play(e){return a(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 a(this,null,function*(){let e=this.type===p.audio?rt: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 a(this,null,function*(){yield this.playlistManager.playNext(this.type)})}playPrevious(){return a(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 a(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`)}};var mt={[I.PEER_JOINED]:m.PEER_JOINED,[I.PEER_LEFT]:m.PEER_LEFT,[I.ROLE_UPDATED]:m.ROLE_UPDATED,[I.AUDIO_TOGGLED]:"PEER_AUDIO_UPDATED",[I.VIDEO_TOGGLED]:"PEER_VIDEO_UPDATED",[I.NAME_UPDATED]:m.NAME_UPDATED,[I.METADATA_UPDATED]:m.METADATA_UPDATED},ht={[b.TRACK_ADDED]:m.TRACK_ADDED,[b.TRACK_REMOVED]:m.TRACK_REMOVED,[b.TRACK_MUTED]:m.TRACK_MUTED,[b.TRACK_UNMUTED]:m.TRACK_UNMUTED,[b.TRACK_DEGRADED]:m.TRACK_DEGRADED,[b.TRACK_RESTORED]:m.TRACK_RESTORED},gt={[I.PEER_JOINED]:"peerJoined",[I.PEER_LEFT]:"peerLeft",[I.NAME_UPDATED]:"peerNameUpdated",[I.METADATA_UPDATED]:"peerMetadataUpdated"};var Re=class{constructor(e,t,r){this.hmsSDKTracks={};this.hmsSDKPeers={};this.isRoomJoinCalled=!1;this.setProgress=({type:e,progress:t})=>{this.setState(r=>{r.playlist[e].progress=t,r.playlist[e].currentTime=this.sdk.getPlaylistManager().getCurrentTime(e)},"playlistProgress")};this.syncPlaylistState=e=>{this.setState(t=>{Object.assign(t.playlist,h.convertPlaylist(this.sdk.getPlaylistManager()))},e)};this.sendPeerUpdateNotification=(e,t)=>{let r=this.store.getState(U(t.peerId)),i="peerUpdate";i=gt[e],this.syncRoomState(i),r||(r=this.store.getState(U(t.peerId))),this.hmsNotifications.sendPeerUpdate(e,r)};this.setState=(e,t)=>this.store.namedSetState(e,t);this.store=e,this.sdk=t,this.hmsNotifications=r}unblockAudio(){return a(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(r=>{r.settings.audioOutputDeviceId=e},"setAudioOutputDevice")}setPreferredLayer(e,t){let r=this.hmsSDKTracks[e];r?r instanceof Tt?(r.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 a(this,null,function*(){if(this.isRoomJoinCalled){this.logPossibleInconsistency("attempting to call preview after join was called");return}let t=this.store.getState(L);if(t===H.Preview||t===H.Connecting){this.logPossibleInconsistency("attempting to call preview while room is in preview/connecting");return}try{this.setState(r=>{r.room.roomState=H.Connecting},"connecting"),yield this.sdkPreviewWithListeners(e)}catch(r){throw M.e("Cannot show preview. Failed to connect to room - ",r),r}})}join(e){if(this.isRoomJoinCalled){this.logPossibleInconsistency("room join is called again");return}try{this.sdkJoinWithListeners(e),this.isRoomJoinCalled=!0,this.setState(t=>{t.room.roomState=H.Connecting},"join")}catch(t){throw this.isRoomJoinCalled=!1,M.e("Failed to connect to room - ",t),t}}leave(){return a(this,null,function*(){if(!this.store.getState(Ge)){this.logPossibleInconsistency("room leave is called when no room is connected");return}return this.sdk.leave().then(()=>{this.resetState("leave"),M.i("left room")}).catch(t=>{M.e("error in leaving room - ",t)})})}setScreenShareEnabled(e,t){return a(this,null,function*(){e?yield this.startScreenShare(t):yield this.stopScreenShare()})}addTrack(e,t="regular"){return a(this,null,function*(){yield this.sdk.addTrack(e,t),this.syncRoomState("addTrack")})}removeTrack(e){return a(this,null,function*(){yield this.sdk.removeTrack(e),this.syncRoomState("removeTrack")})}setLocalAudioEnabled(e){return a(this,null,function*(){let t=this.store.getState(C);t&&(yield this.setEnabledTrack(t,e))})}setLocalVideoEnabled(e){return a(this,null,function*(){let t=this.store.getState(x);t&&(yield this.setEnabledTrack(t,e))})}setEnabledTrack(e,t){return a(this,null,function*(){var o;if(((o=this.store.getState().tracks[e])==null?void 0:o.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(c=>{c.tracks[e].displayEnabled=!t},"rollbackDisplayEnabled"),this.hmsNotifications.sendError(h.convertException(n)),n}let i=t?b.TRACK_UNMUTED:b.TRACK_MUTED;this.hmsNotifications.sendTrackUpdate(i,e)})}setAudioSettings(e){return a(this,null,function*(){let t=this.store.getState(C);t&&(yield this.setSDKLocalAudioTrackSettings(t,e),this.syncRoomState("setAudioSettings"))})}setVideoSettings(e){return a(this,null,function*(){let t=this.store.getState(x);t&&(yield this.setSDKLocalVideoTrackSettings(t,e),this.syncRoomState("setVideoSettings"))})}sendMessage(e){this.sendBroadcastMessage(e)}sendBroadcastMessage(e,t){return a(this,null,function*(){let r=yield this.sdk.sendBroadcastMessage(e,t);this.updateMessageInStore(r,{message:e,type:t})})}sendGroupMessage(e,t,r){return a(this,null,function*(){let i=this.store.getState(_),o=t.map(c=>i[c]),n=yield this.sdk.sendGroupMessage(e,o,r);this.updateMessageInStore(n,{message:e,recipientRoles:t,type:r})})}sendDirectMessage(e,t,r){return a(this,null,function*(){let i=this.hmsSDKPeers[t],o=yield this.sdk.sendDirectMessage(e,i,r);this.updateMessageInStore(o,{message:e,recipientPeer:i.peerId,type:r})})}updateMessageInStore(e,t){if(!e)throw M.w("sendMessage","Failed to send message",t),Error(`sendMessage Failed - ${JSON.stringify(t)}`);let r=h.convertMessage(e);return r.read=!0,r.senderName="You",this.onHMSMessage(r),r}setMessageRead(e,t){this.setState(r=>{t?r.messages.byID[t]?r.messages.byID[t].read=e:this.logPossibleInconsistency("no message with id is found"):r.messages.allIDs.forEach(i=>{r.messages.byID[i].read=e})},"setMessageRead")}attachVideo(e,t){return a(this,null,function*(){if(this.localAndVideoUnmuting(e))return new Promise(r=>{let i=this.store.subscribe(o=>a(this,null,function*(){o&&(yield this.attachVideoInternal(e,t),i(),r())}),Te)});yield this.attachVideoInternal(e,t)})}detachVideo(e,t){return a(this,null,function*(){let r=this.hmsSDKTracks[e];r&&r.type==="video"?(yield r.removeSink(t),this.updateVideoLayer(e,"detachVideo")):this.logPossibleInconsistency("no video track found to remove sink")})}addPluginToVideoTrack(e,t){return a(this,null,function*(){return this.addRemoveVideoPlugin(e,"add",t)})}addPluginToAudioTrack(e){return a(this,null,function*(){return this.addRemoveAudioPlugin(e,"add")})}removePluginFromVideoTrack(e){return a(this,null,function*(){return this.addRemoveVideoPlugin(e,"remove")})}removePluginFromAudioTrack(e){return a(this,null,function*(){return this.addRemoveAudioPlugin(e,"remove")})}changeRole(e,t,r=!1){return a(this,null,function*(){let i=this.hmsSDKPeers[e];if(!i){this.logPossibleInconsistency(`Unknown peer ID given ${e} for changerole`);return}yield this.sdk.changeRole(i,t,r)})}acceptChangeRole(e){return a(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 r={requestedBy:t,role:e.role,token:e.token};yield this.sdk.acceptChangeRole(r),this.removeRoleChangeRequest(e)})}rejectChangeRole(e){this.removeRoleChangeRequest(e)}endRoom(e,t){return a(this,null,function*(){let r=this.store.getState(Je);if(!(r==null?void 0:r.endRoom)){M.w("You are not allowed to perform this action - endRoom");return}yield this.sdk.endRoom(e,t)})}removePeer(e,t){return a(this,null,function*(){let r=this.hmsSDKPeers[e];if(r&&!r.isLocal)yield this.sdk.removePeer(r,t);else{this.logPossibleInconsistency(`No remote peer found for peerID - ${e}`);return}})}startRTMPOrRecording(e){return a(this,null,function*(){yield this.sdk.startRTMPOrRecording(e)})}stopRTMPAndRecording(){return a(this,null,function*(){yield this.sdk.stopRTMPAndRecording()})}startHLSStreaming(e){return a(this,null,function*(){yield this.sdk.startHLSStreaming(e)})}stopHLSStreaming(e){return a(this,null,function*(){yield this.sdk.stopHLSStreaming(e)})}changeName(e){return a(this,null,function*(){yield this.sdk.changeName(e)})}changeMetadata(e){return a(this,null,function*(){typeof e!="string"&&(e=JSON.stringify(e)),yield this.sdk.changeMetadata(e)})}setRemoteTrackEnabled(e,t){return a(this,null,function*(){if(typeof e=="string"){let r=this.hmsSDKTracks[e];r&&Mt(r)?yield this.sdk.changeTrackState(r,t):this.logPossibleInconsistency(`No remote track with ID ${e} found for change track state`)}else Array.isArray(e)&&e.forEach(r=>this.setRemoteTrackEnabled(r,t))})}setRemoteTracksEnabled(e){return a(this,null,function*(){let t={enabled:e.enabled,type:e.type,source:e.source};if(e.roles){let r=this.store.getState(_);t.roles=e.roles.map(i=>r[i])}yield this.sdk.changeMultiTrackState(t)})}setLogLevel(e){M.level=e,this.sdk.setLogLevel(e)}resetState(e="resetState"){this.setState(t=>{Object.assign(t,se())},e),this.isRoomJoinCalled=!1,this.hmsSDKTracks={},M.cleanUp()}sdkJoinWithListeners(e){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)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)})}onRemovedFromRoom(e){var r;let t=this.store.getState(U((r=e.requestedBy)==null?void 0:r.peerId));this.hmsNotifications.sendLeaveRoom(W(q({},e),{requestedBy:t||void 0})),M.i("resetting state after peer removed",e),this.resetState(e.roomEnded||!t?"roomEnded":"removedFromRoom")}onDeviceChange(e){let t=e.devices;if(!t)return;let r=this.store.getState(A);if(this.setState(i=>{N(i.devices.audioInput,t.audioInput)||(i.devices.audioInput=t.audioInput),N(i.devices.videoInput,t.videoInput)||(i.devices.videoInput=t.videoInput),N(i.devices.audioOutput,t.audioOutput)||(i.devices.audioOutput=t.audioOutput),this.hmsSDKPeers[r==null?void 0:r.id]&&Object.assign(i.settings,this.getMediaSettings(this.hmsSDKPeers[r==null?void 0:r.id]))},"deviceChange"),e.selection){let i=h.convertDeviceChangeUpdate(e);this.hmsNotifications.sendDeviceChange(i)}}sdkPreviewWithListeners(e){return a(this,null,function*(){yield this.sdk.preview(e,{onPreview:this.onPreview.bind(this),onError:this.onError.bind(this),onDeviceChange:this.onDeviceChange.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)})})}startScreenShare(e){return a(this,null,function*(){this.store.getState(He)?this.logPossibleInconsistency("start screenshare is called while it's on"):(yield this.sdk.startScreenShare(()=>this.syncRoomState("screenshareStopped"),e),this.syncRoomState("startScreenShare"))})}stopScreenShare(){return a(this,null,function*(){this.store.getState(He)?(yield this.sdk.stopScreenShare(),this.syncRoomState("stopScreenShare")):this.logPossibleInconsistency("stop screenshare is called while it's not on")})}attachVideoInternal(e,t){return a(this,null,function*(){let r=this.hmsSDKTracks[e];r&&r.type==="video"?(yield r.addSink(t),this.updateVideoLayer(e,"attachVideo")):this.logPossibleInconsistency("no video track found to add sink")})}syncRoomState(e){M.time(`store-sync-${e}`);let t={},r=[],i={},o={},n={},c=this.sdk.getPeers();for(let y of c){let w=h.convertPeer(y);t[w.id]=w,r.push(w.id),this.hmsSDKPeers[w.id]=y;let G=[y.audioTrack,y.videoTrack,...y.auxiliaryTracks];for(let te of G){if(!te)continue;let Ce=h.convertTrack(te);i[Ce.id]=Ce,o[te.trackId]=te}w.isLocal&&Object.assign(n,this.getMediaSettings(y))}let S=this.sdk.getRecordingState(),f=this.sdk.getRTMPState(),B=this.sdk.getHLSState();this.setState(y=>{y.room.peers=r;let w=y.peers,G=y.tracks;we(w,t),Ne(G,i),Object.assign(y.settings,n),this.hmsSDKTracks=o,Object.assign(y.roles,h.convertRoles(this.sdk.getRoles())),Object.assign(y.playlist,h.convertPlaylist(this.sdk.getPlaylistManager())),Object.assign(y.room,h.convertRecordingStreamingState(S,f,B))},e),M.timeEnd(`store-sync-${e}`)}onPreview(e){this.setState(t=>{Object.assign(t.room,h.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(r=>{Object.assign(r.room,h.convertRoom(e)),r.room.isConnected=!0,r.room.roomState=H.Connected},"joined"),t.onProgress(this.setProgress),t.onNewTrackStart(r=>{this.syncPlaylistState(`${r.type}PlaylistUpdate`)}),t.onPlaylistEnded(r=>{this.syncPlaylistState(`${r}PlaylistEnded`)}),t.onCurrentTrackEnded(r=>{this.hmsNotifications.sendPlaylistTrackEnded(h.convertPlaylistItem(t,r)),this.syncPlaylistState(`${r.type}PlaylistItemEnded`)})}onRoomUpdate(e,t){this.setState(r=>{Object.assign(r.room,h.convertRoom(t))},"RoomUpdate")}onPeerUpdate(e,t){if(![I.BECAME_DOMINANT_SPEAKER,I.RESIGNED_DOMINANT_SPEAKER].includes(e)){if(Array.isArray(t)){this.syncRoomState("peersJoined");let r=[];for(let i of t){let o=this.store.getState(U(i.peerId));o&&r.push(o)}this.hmsNotifications.sendPeerList(r);return}this.sendPeerUpdateNotification(e,t)}}onTrackUpdate(e,t,r){if(e===b.TRACK_REMOVED)this.hmsNotifications.sendTrackUpdate(e,t.trackId),this.handleTrackRemove(t,r);else{let i=e===b.TRACK_ADDED?"trackAdded":"trackUpdate";this.syncRoomState(i),this.hmsNotifications.sendTrackUpdate(e,t.trackId)}}onMessageReceived(e){let t=h.convertMessage(e);t.read=!1,this.onHMSMessage(t),this.hmsNotifications.sendMessageReceived(t)}onHMSMessage(e){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 r={};e.forEach(o=>{if(!o.track||!o.peer)return;let n=o.track.trackId;r[n]=o.audioLevel,t.speakers[n]||(t.speakers[n]={audioLevel:o.audioLevel,peerID:o.peer.peerId,trackID:n})});let i=Object.entries(t.speakers);for(let[o,n]of i)n.audioLevel=r[o]||0,n.audioLevel===0&&delete t.speakers[o]},"audioLevel")}onChangeTrackStateRequest(e){let t=this.store.getState(U(e.requestedBy.peerId)),r=this.getStoreLocalTrackIDfromSDKTrack(e.track),i=this.store.getState(ae(r));if(!t)return this.logPossibleInconsistency(`Not found peer who requested track state change, ${e.requestedBy}`);if(!i)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,track:i,enabled:e.enabled})}onChangeMultiTrackStateRequest(e){let t=this.store.getState(U(e.requestedBy.peerId));if(!t)return this.logPossibleInconsistency(`Not found peer who requested track state change, ${e.requestedBy}`);e.enabled||this.syncRoomState("changeMultiTrackStateRequest");let r=[],i=this.store.getState(T);for(let o of e.tracks){let n=this.getStoreLocalTrackIDfromSDKTrack(o);n&&i[n]&&r.push(i[n])}this.hmsNotifications.sendChangeMultiTrackStateRequest({requestedBy:t,tracks:r,enabled:e.enabled,type:e.type,source:e.source})}onReconnected(){this.syncRoomState("reconnectedSync"),this.hmsNotifications.sendReconnected(),this.setState(e=>{e.room.roomState=H.Connected},"reconnected")}onReconnecting(e){let t=h.convertException(e);M.e("Reconnection: received error from sdk",t),this.hmsNotifications.sendReconnecting(t),this.setState(r=>{r.room.roomState=H.Reconnecting,r.errors.push(t)},"reconnecting")}onError(e){let t=h.convertException(e);t.isTerminal?(this.leave().then(()=>M.e("error from SDK, left room.")),this.setState(r=>{r.room.roomState=H.Failed,r.errors.push(t)},"errorTerminal")):this.store.getState().errors.length<50&&this.setState(i=>{i.errors.push(t)},"error"),this.hmsNotifications.sendError(t),M.e("received error from sdk",t)}updateVideoLayer(e,t){let r=this.hmsSDKTracks[e];r&&r instanceof Tt&&this.setState(i=>{i.tracks[e].layer=r.getSimulcastLayer()},t)}handleTrackRemove(e,t){this.setState(r=>{let i=r.peers[t.peerId],o=r.tracks,n=e.trackId;if(this.isSameStoreSDKTrack(n,i==null?void 0:i.audioTrack))i==null||delete i.audioTrack;else if(this.isSameStoreSDKTrack(n,i==null?void 0:i.videoTrack))i==null||delete i.videoTrack;else{let c=i==null?void 0:i.auxiliaryTracks.indexOf(n);c>-1&&this.isSameStoreSDKTrack(n,i==null?void 0:i.auxiliaryTracks[c])&&(i==null||i.auxiliaryTracks.splice(c,1))}delete o[n],delete this.hmsSDKTracks[n]},"trackRemoved")}setEnabledSDKTrack(e,t){return a(this,null,function*(){let r=this.hmsSDKTracks[e];r?yield r.setEnabled(t):this.logPossibleInconsistency(`track ${e} not present, unable to enabled/disable`)})}setSDKLocalVideoTrackSettings(e,t){return a(this,null,function*(){let r=this.hmsSDKTracks[e];r?yield r.setSettings(t):this.logPossibleInconsistency(`local track ${e} not present, unable to set settings`)})}setSDKLocalAudioTrackSettings(e,t){return a(this,null,function*(){let r=this.hmsSDKTracks[e];r?yield r.setSettings(t):this.logPossibleInconsistency(`local track ${e} not present, unable to set settings`)})}getMediaSettings(e){var o;let t=this.store.getState(je),r=e.audioTrack,i=e.videoTrack;return{audioInputDeviceId:(r==null?void 0:r.settings.deviceId)||t.audioInputDeviceId,videoInputDeviceId:(i==null?void 0:i.settings.deviceId)||t.videoInputDeviceId,audioOutputDeviceId:(o=this.sdk.getAudioOutput().getDevice())==null?void 0:o.deviceId}}setTrackVolume(e,t){let r=this.hmsSDKTracks[t];r?r instanceof zt?(r.setVolume(e),this.setState(i=>{let o=i.tracks[t];o&&(o.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(A).videoTrack!==e)return!1;let r=this.store.getState($e),i=this.store.getState(Te);return r&&!i}logPossibleInconsistency(e){M.w("possible inconsistency detected - ",e)}addRemoveVideoPlugin(e,t,r){return a(this,null,function*(){if(!e){M.w("Invalid plugin received in store");return}let i=this.store.getState(x);if(i){let o=this.hmsSDKTracks[i];o?(t==="add"?yield o.addPlugin(e,r):t==="remove"&&(yield o.removePlugin(e)),this.syncRoomState(`${t}VideoPlugin`)):this.logPossibleInconsistency(`track ${i} not present, unable to remove plugin`)}})}addRemoveAudioPlugin(e,t){return a(this,null,function*(){if(!e){M.w("Invalid plugin received in store");return}let r=this.store.getState(C);if(r){let i=this.hmsSDKTracks[r];i?(t==="add"?yield i.addPlugin(e):t==="remove"&&(yield i.removePlugin(e)),this.syncRoomState(`${t}AudioPlugin`)):this.logPossibleInconsistency(`track ${r} not present, unable to remove plugin`)}})}isSameStoreSDKTrack(e,t){var r;return t?((r=this.hmsSDKTracks[t])==null?void 0:r.trackId)===e:!1}onRoleChangeRequest(e){this.setState(t=>{t.roleChangeRequests.length===0&&t.roleChangeRequests.push(h.convertRoleChangeRequest(e))},"roleChangeRequest")}removeRoleChangeRequest(e){this.setState(t=>{let r=t.roleChangeRequests.findIndex(i=>i.token===e.token);r!==-1&&t.roleChangeRequests.splice(r,1)},"removeRoleChangeRequest")}onRoleUpdate(){this.syncRoomState("roleUpdate")}getStoreLocalTrackIDfromSDKTrack(e){return this.store.getState(We).find(r=>this.hmsSDKTracks[r].trackId===e.trackId)}};import{EventEmitter2 as Xt}from"eventemitter2";var Ie="hmsNotification",ve=class{constructor(e){this.id=0;this.onNotification=e=>(this.eventEmitter.addListener(Ie,e),()=>{this.eventEmitter.removeListener(Ie,e)});this.store=e,this.eventEmitter=new Xt}sendPlaylistTrackEnded(e){let t=this.createNotification(m.PLAYLIST_TRACK_ENDED,e,R.INFO);this.emitEvent(t)}sendDeviceChange(e){var r;let t=this.createNotification(m.DEVICE_CHANGE_UPDATE,e,e.error?R.ERROR:R.INFO,`Selected ${e.type} device - ${(r=e.selection)==null?void 0:r.label}`);this.emitEvent(t)}sendLeaveRoom(e){var i;let t=(i=e.requestedBy)==null?void 0:i.name,r=this.createNotification(e.roomEnded||!t?m.ROOM_ENDED:m.REMOVED_FROM_ROOM,e,R.INFO,`${e.roomEnded?"Room ended":"Removed from room"} ${t?`by ${t}`:""}`);this.emitEvent(r)}sendPeerList(e){let t=this.createNotification(m.PEER_LIST,e,R.INFO);this.emitEvent(t)}sendPeerUpdate(e,t){let r=this.store.getState(U(t==null?void 0:t.id))||t,i=mt[e];if(i){let o=this.createNotification(i,r,R.INFO);this.emitEvent(o)}}sendTrackUpdate(e,t){let r=this.store.getState(ae(t)),i=ht[e];if(i){let o=this.createNotification(i,r,R.INFO);this.emitEvent(o)}}sendMessageReceived(e){let t=this.createNotification(m.NEW_MESSAGE,e,R.INFO);this.emitEvent(t)}sendError(e){let t=this.createNotification(m.ERROR,e,R.ERROR);this.emitEvent(t)}sendReconnecting(e){let t=this.createNotification(m.RECONNECTING,e,R.ERROR);this.emitEvent(t)}sendReconnected(){let e=this.createNotification(m.RECONNECTED,null,R.INFO);this.emitEvent(e)}sendChangeTrackStateRequest(e){let t=this.createNotification(m.CHANGE_TRACK_STATE_REQUEST,e,R.INFO);this.emitEvent(t)}sendChangeMultiTrackStateRequest(e){let t=this.createNotification(m.CHANGE_MULTI_TRACK_STATE_REQUEST,e,R.INFO);this.emitEvent(t)}emitEvent(e){this.eventEmitter.emit(Ie,e)}createNotification(e,t,r,i=""){return this.id++,{id:this.id,type:e,message:i,data:t,severity:r}}};import{isBrowser as Zt}from"@100mslive/hms-video";var le=s=>Zt?`${s} ${document.title}`:s;function Z(s){return s!=null}var Ht=(s,e,t)=>{let r;t.getState(L)===H.Connected&&(r=yt(s,e,t)),t.subscribe(i=>{[H.Connected,H.Reconnecting].includes(i)?r||(r=yt(s,e,t)):r&&(ns(e),r())},L)},yt=(s,e,t)=>{var o;let r=es(t,e),i=(o=s.getWebrtcInternals())==null?void 0:o.onStatsChange(n=>ts(e,n,t));return()=>{r(),i&&i()}},es=(s,e)=>{let t,r,i;return s.getState(V)?e.namedSetState(o=>{o.localPeer.id=s.getState(V)},"localpeer-id"):t=s.subscribe(o=>{o&&e.namedSetState(n=>{n.localPeer.id=o},"localpeer-id")},V),s.getState(x)?e.namedSetState(o=>{o.localPeer.videoTrack=s.getState(x)},"localpeer-videotrack-id"):r=s.subscribe(o=>{o&&e.namedSetState(n=>{n.localPeer.videoTrack=o},"localpeer-videotrack-id")},x),s.getState(C)?e.namedSetState(o=>{o.localPeer.videoTrack=s.getState(C)},"localpeer-audiotrack-id"):i=s.subscribe(o=>{o&&e.namedSetState(n=>{n.localPeer.videoTrack=o},"localpeer-audiotrack-id")},C),()=>{t==null||t(),r==null||r(),i==null||i()}},ts=(s,e,t)=>{let r=t.getState(T);s.namedSetState(i=>{let o={},n=Object.keys(r);for(let S of n){let f=e.getTrackStats(S);f&&(o[S]=is(t,r[S],f,i.trackStats[S]))}ue(i.trackStats,o);let c=ss(t,i.peerStats[t.getState(V)],e);ue(i.peerStats,c)},"webrtc-stats")},ss=(s,e,t)=>{let r=t.getLocalPeerStats(),i={},o=s.getState(V);return i[o]||(i[o]={}),e?i[o]=rs(t,e):(r.publish&&(i[o].publish=Object.assign(r.publish,{bitrate:0})),r.subscribe&&(i[o].subscribe=Object.assign(r.subscribe,{bitrate:0},{packetsLost:t.getPacketsLost(),jitter:t.getJitter(),packetsLostRate:0}))),i},rs=(s,e)=>{var S,f,B;let t=s.getLocalPeerStats(),r=ft(s.getPacketsLost(),(S=e==null?void 0:e.subscribe)==null?void 0:S.packetsLost,(f=t.subscribe)==null?void 0:f.timestamp,(B=e==null?void 0:e.subscribe)==null?void 0:B.timestamp),i=De("bytesSent",t.publish,e==null?void 0:e.publish),o=De("bytesReceived",t.subscribe,e==null?void 0:e.subscribe),n=Object.assign(t.publish,{bitrate:i}),c=Object.assign(t.subscribe,{bitrate:o},{packetsLost:s.getPacketsLost(),jitter:s.getJitter(),packetsLostRate:r});return{publish:n,subscribe:c}},is=(s,e,t,r)=>{let i=De((t==null?void 0:t.type)==="outbound-rtp"?"bytesSent":"bytesReceived",t,r);return Object.assign(t,{peerID:e.peerId,peerName:s.getState(nt(e.peerId)),bitrate:i})},De=(s,e,t)=>os(s,e,t)*8,os=(s,e,t)=>{let r=e&&e[s],i=t?t[s]:null;return e&&t&&Z(r)&&Z(i)?ft(r,i,e.timestamp,t.timestamp)*1e3:0},ft=(s,e,t,r)=>Z(s)&&Z(e)&&t&&r?(s-e)/(t-r):0,ns=(s,e="resetState")=>{s.namedSetState(t=>{Object.assign(t,re())},e)};var Se=class{constructor(e,t){this.hmsStore=e;this.sdk=t;this.store=O.createNewHMSStore(le("HMSStatsStore"),re),this.getState=this.store.getState,this.subscribe=this.store.subscribe,this.getPublishPeerConnection=()=>new Promise(r=>{var i,o;this.hmsStore.getState(L)==="Connected"?r((o=(i=this.sdk)==null?void 0:i.getWebrtcInternals())==null?void 0:o.getPublishPeerConnection()):this.hmsStore.subscribe(n=>{var c,S;n==="Connected"&&r((S=(c=this.sdk)==null?void 0:c.getWebrtcInternals())==null?void 0:S.getPublishPeerConnection())},L)}),this.getSubscribePeerConnection=()=>new Promise(r=>{var i,o;this.hmsStore.getState(L)==="Connected"?r((o=(i=this.sdk)==null?void 0:i.getWebrtcInternals())==null?void 0:o.getSubscribePeerConnection()):this.hmsStore.subscribe(n=>{var c,S;n==="Connected"&&r((S=(c=this.sdk)==null?void 0:c.getWebrtcInternals())==null?void 0:S.getSubscribePeerConnection())},L)}),!!this.sdk&&Ht(this.sdk,this.store,this.hmsStore)}};var Ae={};bt(Ae,{availablePublishBitrate:()=>hs,availableSubscribeBitrate:()=>gs,bitrateByTrackID:()=>Ps,bytesReceivedByTrackID:()=>Rs,framerateByTrackID:()=>Is,jitter:()=>ps,jitterByTrackID:()=>vs,localAudioTrackBitrate:()=>bs,localAudioTrackBytesSent:()=>As,localAudioTrackStats:()=>Ee,localPeerStats:()=>K,localVideoTrackBitrate:()=>Es,localVideoTrackBytesSent:()=>Cs,localVideoTrackFramerate:()=>xs,localVideoTrackQualityLimitationReason:()=>Ls,localVideoTrackStats:()=>ee,packetsLost:()=>us,packetsLostByTrackID:()=>Ds,peerStatsByID:()=>fs,publishBitrate:()=>Ms,subscribeBitrate:()=>ms,totalBytesReceived:()=>Hs,totalBytesSent:()=>Ts,trackStatsByID:()=>ks});import{createSelector as g}from"reselect";var as=s=>s.localPeer.id,cs=s=>s.localPeer.audioTrack,ls=s=>s.localPeer.videoTrack,Ss=(s,e)=>e,ds=(s,e)=>e,be=s=>s.trackStats,kt=s=>s.peerStats,K=g([kt,as],(s,e)=>s[e]),us=g(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.packetsLost}),ps=g(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.jitter}),Ms=g(K,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bitrate}),ms=g(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bitrate}),hs=g(K,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.availableOutgoingBitrate}),gs=g(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.availableIncomingBitrate}),Ts=g(K,s=>{var e;return(e=s==null?void 0:s.publish)==null?void 0:e.bytesSent}),Hs=g(K,s=>{var e;return(e=s==null?void 0:s.subscribe)==null?void 0:e.bytesReceived}),ys=g([kt,Ss],(s,e)=>e?s[e]:void 0),F=g([be,ds],(s,e)=>e?s[e]:void 0),fs=u(ys),ks=u(F),Ps=u(g(F,s=>s==null?void 0:s.bitrate)),Rs=u(g(F,s=>s==null?void 0:s.bytesReceived)),Is=u(g(F,s=>s==null?void 0:s.framesPerSecond)),vs=u(g(F,s=>s==null?void 0:s.jitter)),Ds=u(g(F,s=>s==null?void 0:s.packetsLost)),Ee=g([be,cs],(s,e)=>e?s[e]:void 0),ee=g([be,ls],(s,e)=>e?s[e]:void 0),bs=g(Ee,s=>s==null?void 0:s.bitrate),Es=g(ee,s=>s==null?void 0:s.bitrate),As=g(Ee,s=>s==null?void 0:s.bytesSent),Cs=g(ee,s=>s==null?void 0:s.bytesSent),xs=g(ee,s=>s==null?void 0:s.framesPerSecond),Ls=g(ee,s=>s==null?void 0:s.qualityLimitationReason);var O=class{constructor(e,t,r){this.getWebrtcStats=()=>(this.webrtcStats||(this.webrtcStats=new Se(this.store,this.sdk)),this.webrtcStats);e?this.store=e:this.store=O.createNewHMSStore(le("HMSStore"),se),r?this.notifications=r:this.notifications=new ve(this.store),t?this.actions=t:(this.sdk=new Us,this.actions=new Re(this.store,this.sdk,this.notifications)),this.initialTriggerOnSubscribe=!1,window.__hms=this}triggerOnSubscribe(){this.initialTriggerOnSubscribe||(O.makeStoreTriggerOnSubscribe(this.store),this.initialTriggerOnSubscribe=!0)}getStore(){return this.store}getHMSActions(){return this.actions}getNotifications(){return{onNotification:this.notifications.onNotification}}static createNewHMSStore(e,t){let r=ws(()=>t()),i=r.setState;r.setState=c=>{let S=typeof c=="function"?Os(c):c;i(S)};let o=r.getState;r.getState=c=>{if(c){let S=c.name||"byIDSelector";window.selectorsCount||(window.selectorsCount={}),window.selectorsCount[S]=(window.selectorsCount[S]||0)+1;let f=performance.now(),B=c(o()),y=performance.now()-f;return y>1&&(window.expensiveSelectors=window.expensiveSelectors||new Map,window.expensiveSelectors.set(S,y)),B}return o()},O.useShallowCheckInSubscribe(r);let n=O.setUpDevtools(r,e);return W(q({},r),{namedSetState:n})}static makeStoreTriggerOnSubscribe(e){let t=e.subscribe;e.subscribe=(r,i,o)=>(r(e.getState(i),void 0),t(r,i,o))}static useShallowCheckInSubscribe(e){let t=e.subscribe;e.subscribe=(r,i,o)=>(i||(i=n=>n),o=o||Ns,t(r,i,o))}static setUpDevtools(e,t){let r;try{r=window.__REDUX_DEVTOOLS_EXTENSION__||window.top.__REDUX_DEVTOOLS_EXTENSION__}catch(n){}if(!r)return n=>{e.setState(n)};let i=r.connect(O.devtoolsOptions(t));i.prefix=t?`${t} > `:"";let o=e.setState;return e.setState=n=>{o(n),i.send(`${i.prefix}setState`,e.getState())},i.subscribe(O.devtoolsSubscribe(i,e,o)),i.send("setUpStore",e.getState()),(n,c)=>{o(n);let S=c||`${i.prefix}action`;i.send(S,e.getState())}}static devtoolsOptions(e){return{name:e,actionsBlacklist:["audioLevel","playlistProgress"]}}static devtoolsSubscribe(e,t,r){return i=>{var o,n,c,S;if(i.type==="DISPATCH"&&i.state)["JUMP_TO_ACTION","JUMP_TO_STATE"].includes(i.payload.type)?r(JSON.parse(i.state)):t.setState(JSON.parse(i.state));else if(i.type==="DISPATCH"&&((o=i.payload)==null?void 0:o.type)==="COMMIT")e.init(t.getState());else if(i.type==="DISPATCH"&&((n=i.payload)==null?void 0:n.type)==="IMPORT_STATE"){let f=(c=i.payload.nextLiftedState)==null?void 0:c.actionsById;(((S=i.payload.nextLiftedState)==null?void 0:S.computedStates)||[]).forEach(({state:y},w)=>{let G=f[w]||`${e.prefix}setState`;w===0?e.init(y):(r(y),e.send(G,t.getState()))})}}}};export{Et as HMSAudioPluginType,k as HMSLogLevel,Oe as HMSMessageType,R as HMSNotificationSeverity,m as HMSNotificationTypes,p as HMSPlaylistType,O as HMSReactiveStore,H as HMSRoomState,Se as HMSStats,At as HMSVideoPluginType,re as createDefaultStatsStore,se as createDefaultStoreState,rt as selectAudioPlaylist,Ki as selectAudioPlaylistTrackByPeerID,Bt as selectAudioTrackByPeerID,dt as selectAudioTrackVolume,$i as selectAudioVolumeByPeerID,Ni as selectAuxiliaryAudioByPeerID,Li as selectAuxiliaryTracksByPeerID,di as selectAvailableRoleNames,jt as selectBroadcastMessages,Ji as selectBroadcastMessagesUnreadCount,xi as selectCameraStreamByPeerID,ci as selectDegradedTracks,zr as selectDevices,ti as selectDominantSpeaker,mi as selectHLSState,oe as selectHMSMessages,Fe as selectHMSMessagesCount,Ae as selectHMSStats,no as selectIsAllowedToPublish,ui as selectIsAllowedToSubscribe,St as selectIsAudioLocallyMuted,Xr as selectIsConnectedToRoom,Si as selectIsInPreview,si as selectIsLocalAudioEnabled,po as selectIsLocalAudioPluginPresent,He as selectIsLocalScreenShared,$e as selectIsLocalVideoDisplayEnabled,Te as selectIsLocalVideoEnabled,uo as selectIsLocalVideoPluginPresent,ji as selectIsLocallyMutedByPeerID,Bi as selectIsPeerAudioEnabled,qi as selectIsPeerVideoEnabled,Wi as selectIsScreenShareLocallyMutedByPeerID,ri as selectIsSomeoneScreenSharing,C as selectLocalAudioTrackID,je as selectLocalMediaSettings,A as selectLocalPeer,V as selectLocalPeerID,ne as selectLocalPeerRole,We as selectLocalTrackIDs,x as selectLocalVideoTrackID,qe as selectMessageIDsInOrder,Yi as selectMessagesByPeerID,Qi as selectMessagesByRole,Be as selectMessagesMap,Xi as selectMessagesUnreadCountByPeerID,zi as selectMessagesUnreadCountByRole,wi as selectPeerAudioByID,U as selectPeerByID,Zr as selectPeerCount,eo as selectPeerMetadata,nt as selectPeerNameByID,_t as selectPeerScreenSharing,ii as selectPeerSharingAudio,ai as selectPeerSharingAudioPlaylist,ni as selectPeerSharingVideoPlaylist,ge as selectPeers,Zi as selectPeersByRole,D as selectPeersMap,oi as selectPeersScreenSharing,io as selectPeersWithAudioStatus,Je as selectPermissions,Mi as selectRTMPState,pi as selectRecordingState,ei as selectRemotePeers,So as selectRoleByRoleName,oo as selectRoleChangeRequest,_ as selectRolesMap,E as selectRoom,gi as selectRoomStartTime,Ge as selectRoomStarted,L as selectRoomState,lt as selectScreenShareAudioByPeerID,Vi as selectScreenShareByPeerID,ct as selectScreenSharesByPeerId,Fi as selectScreenshareAudioVolumeByPeerID,hi as selectSessionId,Gi as selectSimulcastLayerByTrack,wt as selectSpeakers,Oi as selectTrackAudioByID,ae as selectTrackByID,T as selectTracksMap,li as selectUnreadHMSMessagesCount,it as selectVideoPlaylist,_i as selectVideoPlaylistAudioTrackByPeerID,Ui as selectVideoPlaylistVideoTrackByPeerID,Vt as selectVideoTrackByPeerID};
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.2.
|
|
2
|
+
"version": "0.2.86-alpha.4",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/hms-video-store.cjs.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"module": "dist/hms-video-store.esm.js",
|
|
34
34
|
"sideEffects": false,
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@100mslive/hms-video": "0.1.
|
|
36
|
+
"@100mslive/hms-video": "0.1.40-alpha.2",
|
|
37
37
|
"eventemitter2": "^6.4.5",
|
|
38
38
|
"immer": "^9.0.6",
|
|
39
39
|
"reselect": "4.0.0",
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"url": "https://github.com/100mslive/hms-video-store/issues"
|
|
60
60
|
},
|
|
61
61
|
"homepage": "https://github.com/100mslive/hms-video-store#readme",
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "3b623527c1c875e405813aac07649d3bbeb6b0a7"
|
|
63
63
|
}
|