agora-appbuilder-core 4.0.24 → 4.0.25-beta-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/package.json +1 -1
  2. package/template/agora-rn-uikit/.eslintrc.js +0 -5
  3. package/template/agora-rn-uikit/package-lock.json +6116 -23528
  4. package/template/agora-rn-uikit/package.json +14 -14
  5. package/template/agora-rn-uikit/src/AgoraUIKit.tsx +6 -6
  6. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +6 -6
  7. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +40 -79
  8. package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +10 -0
  9. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +17 -26
  10. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +0 -1
  11. package/template/agora-rn-uikit/src/Controls/Icons.ts +0 -51
  12. package/template/agora-rn-uikit/src/Controls/Local/EndCall.tsx +4 -6
  13. package/template/agora-rn-uikit/src/Controls/Local/FullScreen.tsx +1 -3
  14. package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +2 -5
  15. package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +2 -5
  16. package/template/agora-rn-uikit/src/Controls/Local/Recording.tsx +2 -0
  17. package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +6 -7
  18. package/template/agora-rn-uikit/src/Controls/LocalControls.tsx +5 -5
  19. package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +4 -5
  20. package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +1 -3
  21. package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +4 -5
  22. package/template/agora-rn-uikit/src/Controls/RemoteControls.tsx +2 -2
  23. package/template/agora-rn-uikit/src/Reducer/ActiveSpeakerDetected.ts +11 -0
  24. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +7 -8
  25. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +7 -8
  26. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +7 -6
  27. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +8 -7
  28. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +9 -9
  29. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +8 -7
  30. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +13 -14
  31. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +7 -6
  32. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +7 -6
  33. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +6 -5
  34. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +3 -20
  35. package/template/agora-rn-uikit/src/Reducer/index.ts +1 -2
  36. package/template/agora-rn-uikit/src/Rtc/Create.tsx +125 -122
  37. package/template/agora-rn-uikit/src/Rtc/Join.tsx +27 -46
  38. package/template/agora-rn-uikit/src/RtcConfigure.tsx +77 -175
  39. package/template/agora-rn-uikit/src/Utils/quality.tsx +0 -8
  40. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +12 -56
  41. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +17 -47
  42. package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +11 -19
  43. package/template/agora-rn-uikit/src/index.ts +9 -16
  44. package/template/customization-api/typeDefinition.ts +1 -4
  45. package/template/customization-api/utils.ts +1 -0
  46. package/template/defaultConfig.js +2 -0
  47. package/template/global.d.ts +2 -0
  48. package/template/src/AppRoutes.tsx +1 -7
  49. package/template/src/auth/AuthProvider.tsx +70 -24
  50. package/template/src/auth/useIDPAuth.electron.tsx +59 -2
  51. package/template/src/auth/useIDPAuth.native.tsx +59 -2
  52. package/template/src/auth/useIDPAuth.tsx +60 -2
  53. package/template/src/auth/useTokenAuth.tsx +66 -4
  54. package/template/src/components/DeviceConfigure.tsx +74 -68
  55. package/template/src/components/GraphQLProvider.tsx +0 -1
  56. package/template/src/components/contexts/WaitingRoomContext.tsx +11 -4
  57. package/template/src/components/recording-bot/RecordingBotRoute.tsx +1 -1
  58. package/template/src/components/useUserPreference.tsx +56 -9
  59. package/template/src/components/whiteboard/WhiteboardConfigure.tsx +4 -1
  60. package/template/src/components/whiteboard/WhiteboardToolBox.tsx +185 -24
  61. package/template/src/components/whiteboard/WhiteboardWidget.tsx +47 -6
  62. package/template/src/logger/AppBuilderLogger.tsx +94 -36
  63. package/template/src/logger/transports/customer-transport.ts +7 -3
  64. package/template/src/pages/VideoCall.tsx +3 -5
  65. package/template/src/subComponents/SelectDevice.tsx +14 -52
  66. package/template/src/subComponents/caption/useSTTAPI.tsx +39 -3
  67. package/template/src/subComponents/recording/useRecording.tsx +69 -20
  68. package/template/src/subComponents/waiting-rooms/useWaitingRoomAPI.ts +30 -8
  69. package/template/src/utils/common.tsx +6 -1
  70. package/template/src/utils/useCreateRoom.ts +21 -2
  71. package/template/src/utils/useFindActiveSpeaker.ts +12 -5
  72. package/template/src/utils/useGetMeetingPhrase.ts +44 -1
  73. package/template/src/utils/useJoinRoom.ts +29 -2
  74. package/template/src/utils/useMutePSTN.ts +29 -0
  75. package/template/agora-rn-uikit/src/Contexts/ContentContext.tsx +0 -10
  76. package/template/agora-rn-uikit/src/Contexts/DispatchContext.tsx +0 -22
  77. package/template/agora-rn-uikit/src/Reducer/ActiveSpeaker.ts +0 -30
  78. package/template/agora-rn-uikit/src/Reducer/UserSecondaryPin.ts +0 -23
  79. package/template/agora-rn-uikit/src/Utils/isBotUser.ts +0 -15
@@ -22,24 +22,24 @@
22
22
  "url": "https://github.com/AgoraIO-Community/ReactNative-UIKit/issues"
23
23
  },
24
24
  "peerDependencies": {
25
- "react": "18.2.0",
26
- "react-native": "0.72.4",
27
- "react-native-agora": "4.2.6"
25
+ "react": "^16.9.0",
26
+ "react-native": "^0.61.5",
27
+ "react-native-agora": "^3.0.1-rc.4"
28
28
  },
29
29
  "devDependencies": {
30
- "@babel/core": "^7.20.0",
31
- "@babel/runtime": "^7.20.0",
30
+ "@babel/core": "^7.6.2",
31
+ "@babel/runtime": "^7.6.2",
32
32
  "@react-native-community/eslint-config": "^1.0.0",
33
33
  "@types/jest": "^24.0.24",
34
- "@types/react-native": "0.67.6",
35
- "@types/react-test-renderer": "18.0.0",
36
- "@typescript-eslint/eslint-plugin": "6.4.0",
37
- "@typescript-eslint/parser": "6.4.0",
38
- "babel-jest": "^29.2.1",
39
- "eslint": "^8.19.0",
40
- "jest": "^29.2.1",
41
- "metro-react-native-babel-preset": "0.76.8",
42
- "react-test-renderer": "18.2.0",
34
+ "@types/react-native": "^0.62.0",
35
+ "@types/react-test-renderer": "16.9.2",
36
+ "@typescript-eslint/eslint-plugin": "^2.27.0",
37
+ "@typescript-eslint/parser": "^2.27.0",
38
+ "babel-jest": "^24.9.0",
39
+ "eslint": "^6.5.1",
40
+ "jest": "^24.9.0",
41
+ "metro-react-native-babel-preset": "^0.58.0",
42
+ "react-test-renderer": "16.11.0",
43
43
  "prettier": "^2.0.4",
44
44
  "typescript": "^3.8.3"
45
45
  },
@@ -3,7 +3,7 @@ import {ScrollView, View} from 'react-native';
3
3
  import RtcConfigure from './RtcConfigure';
4
4
  import MaxVideoView from './Views/MaxVideoView';
5
5
  import MinVideoView from './Views/MinVideoView';
6
- import {ContentConsumer} from './Contexts/ContentContext';
6
+ import {RenderConsumer} from './Contexts/RenderContext';
7
7
  import {PropsProvider, PropsInterface} from './Contexts/PropsContext';
8
8
 
9
9
  import styles from './Style';
@@ -16,12 +16,12 @@ const AgoraUIKit: React.FC<PropsInterface> = (props) => {
16
16
  <PropsProvider value={props}>
17
17
  <View style={{backgroundColor: '#000', flex: 1}}>
18
18
  <RtcConfigure>
19
- <ContentConsumer>
20
- {({defaultContent, activeUids}) => {
19
+ <RenderConsumer>
20
+ {({renderList, activeUids}) => {
21
21
  const [maxUid, ...minUids] = activeUids;
22
22
  return (
23
23
  <>
24
- <MaxVideoView user={defaultContent[maxUid]} key={maxUid} />
24
+ <MaxVideoView user={renderList[maxUid]} key={maxUid} />
25
25
  <ScrollView
26
26
  showsHorizontalScrollIndicator={false}
27
27
  horizontal={true}
@@ -29,7 +29,7 @@ const AgoraUIKit: React.FC<PropsInterface> = (props) => {
29
29
  {minUids.map((minUid) => (
30
30
  <MinVideoView
31
31
  showOverlay
32
- user={defaultContent[minUid]}
32
+ user={renderList[minUid]}
33
33
  key={minUid}
34
34
  />
35
35
  ))}
@@ -37,7 +37,7 @@ const AgoraUIKit: React.FC<PropsInterface> = (props) => {
37
37
  </>
38
38
  );
39
39
  }}
40
- </ContentConsumer>
40
+ </RenderConsumer>
41
41
  <LocalControls />
42
42
  </RtcConfigure>
43
43
  </View>
@@ -1,10 +1,10 @@
1
1
  import React, {useContext, createContext} from 'react';
2
- import ContentContext from './ContentContext';
3
- import {ContentInterface} from './PropsContext';
2
+ import RenderContext from './RenderContext';
3
+ import {RenderInterface} from './PropsContext';
4
4
  import {UidType} from './RtcContext';
5
5
 
6
- export const LocalContext = createContext<ContentInterface>(
7
- {} as ContentInterface,
6
+ export const LocalContext = createContext<RenderInterface>(
7
+ {} as RenderInterface,
8
8
  );
9
9
  export const LocalProvider = LocalContext.Provider;
10
10
  export const LocalConsumer = LocalContext.Consumer;
@@ -15,12 +15,12 @@ interface LocalUserContextInterface {
15
15
  }
16
16
 
17
17
  const LocalUserContext: React.FC<LocalUserContextInterface> = (props) => {
18
- const {defaultContent} = useContext(ContentContext);
18
+ const {renderList} = useContext(RenderContext);
19
19
  if (!props?.localUid) {
20
20
  console.error('Error: local user id is empty');
21
21
  return null;
22
22
  }
23
- let localUser: ContentInterface = defaultContent[props?.localUid];
23
+ let localUser: RenderInterface = renderList[props?.localUid];
24
24
  if (!localUser) {
25
25
  console.error("Error: we couldn't find the local user data");
26
26
  return null;
@@ -1,44 +1,26 @@
1
1
  import React from 'react';
2
2
  import {StyleProp, ViewStyle} from 'react-native';
3
- import {IRtcEngineEventHandler} from 'react-native-agora';
3
+ import {RtcEngineEvents} from 'react-native-agora/lib/typescript/src/common/RtcEvents';
4
4
  import {EncryptionMode} from 'react-native-agora';
5
5
  import {VideoProfile} from '../Utils/quality';
6
6
  import {UidType} from './RtcContext';
7
7
 
8
8
  /* User role for live streaming mode */
9
- export enum ClientRoleType {
10
- /**
11
- * 1: Host. A host can both send and receive streams.
12
- */
13
- ClientRoleBroadcaster = 1,
14
- /**
15
- * 2: (Default) Audience. An audience member can only receive streams.
16
- */
17
- ClientRoleAudience = 2,
9
+ export enum ClientRole {
10
+ /* 1: A host can both send and receive streams. */
11
+ Broadcaster = 1,
12
+ /* 2: The default role. An audience can only receive streams. */
13
+ Audience = 2,
18
14
  }
19
15
 
20
16
  /* Mode for RTC (Live or Broadcast) */
21
- export enum ChannelProfileType {
22
- /**
23
- * 0: Communication. Use this profile when there are only two users in the channel.
24
- */
25
- ChannelProfileCommunication = 0,
26
- /**
27
- * 1: Live streaming. Live streaming. Use this profile when there are more than two users in the channel.
28
- */
29
- ChannelProfileLiveBroadcasting = 1,
30
- /**
31
- * 2: Gaming. This profile is deprecated.
32
- */
33
- ChannelProfileGame = 2,
34
- /**
35
- * Cloud gaming. The scenario is optimized for latency. Use this profile if the use case requires frequent interactions between users.
36
- */
37
- ChannelProfileCloudGaming = 3,
38
- /**
39
- * @ignore
40
- */
41
- ChannelProfileCommunication1v1 = 4,
17
+ export enum ChannelProfile {
18
+ /** 0: (Default) The Communication profile.
19
+ * Use this profile in one-on-one calls or group calls, where all users can talk freely. */
20
+ Communication = 0,
21
+ /** 1: The Live-Broadcast profile.
22
+ * Users in a live-broadcast channel have a role as either host or audience. A host can both send and receive streams; an audience can only receive streams. */
23
+ LiveBroadcasting = 1,
42
24
  }
43
25
 
44
26
  // disabled is intentionally kept as the 1st item in the enum.
@@ -63,38 +45,23 @@ export enum PermissionState {
63
45
  export const toggleHelper = (state: ToggleState) =>
64
46
  state === ToggleState.enabled ? ToggleState.disabled : ToggleState.enabled;
65
47
 
66
- export interface DefaultContentInterface {
67
- //uikit and core
48
+ export interface DefaultRenderInterface {
68
49
  uid: UidType;
69
50
  audio: ToggleState;
70
51
  video: ToggleState;
71
52
  streamType: 'high' | 'low';
72
53
  type: 'rtc';
73
54
  permissionStatus?: PermissionState;
74
- audioForceDisabled?: boolean;
75
- videoForceDisabled?: boolean;
76
55
  //applicable only to the screenshare
77
56
  parentUid?: UidType;
78
- //uikit and core
79
-
80
- //core only
81
- name: string;
82
- screenUid: number;
83
- offline: boolean;
84
- lastMessageTimeStamp: number;
85
- isInWaitingRoom?: boolean;
86
- //core only
87
57
  }
88
- export interface CustomContentInterface<T> {
89
- type: T extends DefaultContentInterface['type'] ? never : T;
58
+ export interface CustomRenderInterface<T> {
59
+ type: T extends DefaultRenderInterface['type'] ? never : T;
90
60
  }
91
- export interface ExtenedContentInterface
92
- extends CustomContentInterface<string> {
61
+ interface ExtenedRenderInterface extends CustomRenderInterface<string> {
93
62
  [key: string]: any;
94
63
  }
95
- export type ContentInterface =
96
- | DefaultContentInterface
97
- | ExtenedContentInterface;
64
+ export type RenderInterface = DefaultRenderInterface | ExtenedRenderInterface;
98
65
 
99
66
  interface remoteBtnStylesInterface {
100
67
  muteRemoteAudio?: StyleProp<ViewStyle>;
@@ -137,13 +104,17 @@ export interface RtcPropsInterface {
137
104
  dual?: boolean | null;
138
105
  profile?: VideoProfile;
139
106
  initialDualStreamMode?: DualStreamMode;
140
- role?: ClientRoleType /* Set local user's role between audience and host. Use with mode set to livestreaming. (default: host) */;
107
+ role?: ClientRole /* Set local user's role between audience and host. Use with mode set to livestreaming. (default: host) */;
141
108
  callActive?: boolean;
142
109
  encryption?: {
143
110
  key: string;
144
- mode: EncryptionMode.Aes128Gcm2 | EncryptionMode.Aes256Gcm2;
145
- salt: number[];
111
+ mode:
112
+ | EncryptionMode.AES128XTS
113
+ | EncryptionMode.AES256XTS
114
+ | EncryptionMode.AES128ECB;
146
115
  };
116
+ preferredCameraId?: string;
117
+ preferredMicrophoneId?: string;
147
118
  // commented for v1 release
148
119
  // lifecycle?: {
149
120
  // useBeforeJoin?: () => () => Promise<void>;
@@ -152,13 +123,6 @@ export interface RtcPropsInterface {
152
123
  geoFencing?: boolean;
153
124
  audioRoom?: boolean;
154
125
  activeSpeaker?: boolean;
155
- preventJoin?: boolean;
156
-
157
- //core only
158
- screenShareUid?: number;
159
- screenShareToken?: string;
160
- recordingBot?: false;
161
- //core only
162
126
  }
163
127
 
164
128
  export interface CallbacksInterface {
@@ -166,26 +130,24 @@ export interface CallbacksInterface {
166
130
  FullScreen(): void; //?
167
131
  SwitchCamera(): void; //Not in reducer
168
132
  UpdateDualStreamMode(mode: DualStreamMode): void;
169
- UserJoined: IRtcEngineEventHandler['onUserJoined'];
170
- UserOffline: IRtcEngineEventHandler['onUserOffline'];
133
+ UserJoined: RtcEngineEvents['UserJoined'];
134
+ UserOffline: RtcEngineEvents['UserOffline'];
171
135
  SwapVideo(uid: UidType): void;
172
136
  DequeVideo(uid: UidType): void;
173
- UserMuteRemoteAudio(uid: UidType, muted: ContentInterface['audio']): void;
174
- UserMuteRemoteVideo(uid: UidType, muted: ContentInterface['video']): void;
175
- LocalMuteAudio(muted: ToggleState, forceDisabled?: boolean): void;
176
- LocalMuteVideo(muted: ToggleState, forceDisabled?: boolean): void;
137
+ UserMuteRemoteAudio(uid: UidType, muted: RenderInterface['audio']): void;
138
+ UserMuteRemoteVideo(uid: UidType, muted: RenderInterface['video']): void;
139
+ LocalMuteAudio(muted: ToggleState): void;
140
+ LocalMuteVideo(muted: ToggleState): void;
177
141
  LocalPermissionState(
178
- permissionState: ContentInterface['permissionStatus'],
142
+ permissionState: RenderInterface['permissionStatus'],
179
143
  ): void;
180
- RemoteAudioStateChanged: IRtcEngineEventHandler['onRemoteAudioStateChanged'];
181
- RemoteVideoStateChanged: IRtcEngineEventHandler['onRemoteVideoStateChanged'];
182
- JoinChannelSuccess: IRtcEngineEventHandler['onJoinChannelSuccess'];
183
- UpdateRenderList(uid: UidType, user: Partial<ContentInterface>): void;
144
+ RemoteAudioStateChanged: RtcEngineEvents['RemoteAudioStateChanged'];
145
+ RemoteVideoStateChanged: RtcEngineEvents['RemoteVideoStateChanged'];
146
+ ActiveSpeakerDetected: RtcEngineEvents['ActiveSpeaker'];
147
+ JoinChannelSuccess: RtcEngineEvents['JoinChannelSuccess'];
148
+ UpdateRenderList(uid: UidType, user: Partial<RenderInterface>): void;
184
149
  AddCustomContent(uid: UidType, data: any): void;
185
- RemoveCustomContent(uid: UidType): void;
186
150
  UserPin(Uid: UidType): void;
187
- UserSecondaryPin(Uid: UidType): void;
188
- ActiveSpeaker(Uid: UidType): void;
189
151
  }
190
152
 
191
153
  export type CustomCallbacksInterface = CallbacksInterface;
@@ -194,20 +156,19 @@ export interface PropsInterface {
194
156
  rtcProps: RtcPropsInterface;
195
157
  styleProps?: Partial<StylePropInterface>;
196
158
  callbacks?: Partial<CallbacksInterface>;
197
- mode?: ChannelProfileType;
159
+ mode?: ChannelProfile;
198
160
  }
199
161
 
200
- const initialValue: Partial<PropsInterface> = {
162
+ const initialValue: PropsInterface = {
201
163
  rtcProps: {
202
164
  appId: '',
203
165
  channel: '',
204
166
  geoFencing: true,
205
167
  audioRoom: false,
206
- preventJoin: true,
207
168
  },
208
169
  };
209
170
 
210
- const PropsContext = React.createContext<Partial<PropsInterface>>(initialValue);
171
+ const PropsContext = React.createContext<PropsInterface>(initialValue);
211
172
 
212
173
  export const PropsProvider = PropsContext.Provider;
213
174
  export const PropsConsumer = PropsContext.Consumer;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import {RenderStateInterface} from './RtcContext';
3
+
4
+ const RenderContext = React.createContext<RenderStateInterface>(
5
+ {} as RenderStateInterface,
6
+ );
7
+
8
+ export const RenderProvider = RenderContext.Provider;
9
+ export const RenderConsumer = RenderContext.Consumer;
10
+ export default RenderContext;
@@ -1,37 +1,19 @@
1
1
  import React from 'react';
2
2
  import {CallbacksInterface} from './PropsContext';
3
- import {IRtcEngine} from 'react-native-agora';
4
- import type {DualStreamMode, ContentInterface} from './PropsContext';
3
+ import RtcEngine from 'react-native-agora';
4
+ import type {DualStreamMode, RenderInterface} from './PropsContext';
5
5
 
6
6
  export type UidType = number;
7
7
 
8
- export interface ContentObjects {
9
- [key: number]: ContentInterface;
8
+ export interface RenderObjects {
9
+ [key: number]: RenderInterface;
10
10
  }
11
11
 
12
- type JSXElement = () => JSX.Element;
13
- export interface CustomContentInferface {
14
- uid: UidType;
15
- component: boolean | React.ComponentType | JSXElement;
16
- props: any;
17
- onStage?: boolean; //true by default
18
- }
19
-
20
- export interface CustomContentObjects {
21
- [key: number]: CustomContentInferface;
22
- }
23
- export interface ContentStateInterface {
24
- customContent?: CustomContentObjects;
25
- setCustomContent: (
26
- uid: CustomContentInferface['uid'],
27
- component: CustomContentInferface['component'],
28
- props?: CustomContentInferface['props'],
29
- onStage?: CustomContentInferface['onStage'],
30
- ) => void;
31
- defaultContent: ContentObjects;
12
+ export interface RenderStateInterface {
13
+ renderList: RenderObjects;
32
14
  activeUids: Array<UidType>;
15
+ activeSpeaker?: UidType;
33
16
  pinnedUid?: UidType;
34
- secondaryPinnedUid?: UidType;
35
17
  lastJoinedUid?: UidType;
36
18
  }
37
19
 
@@ -40,10 +22,19 @@ export interface ActionInterface<T extends keyof CallbacksInterface> {
40
22
  value: Parameters<CallbacksInterface[T]>;
41
23
  }
42
24
 
25
+ export type DispatchType = <
26
+ T extends keyof CallbacksInterface,
27
+ V extends Parameters<CallbacksInterface[T]>,
28
+ >(action: {
29
+ type: T;
30
+ value: V;
31
+ }) => void;
32
+
43
33
  export type ActionType<T extends keyof CallbacksInterface> = ActionInterface<T>;
44
34
 
45
35
  export interface RtcContextInterface {
46
- RtcEngineUnsafe: IRtcEngine;
36
+ RtcEngine: RtcEngine;
37
+ dispatch: DispatchType;
47
38
  setDualStreamMode: React.Dispatch<React.SetStateAction<DualStreamMode>>;
48
39
  }
49
40
 
@@ -26,7 +26,6 @@ interface BtnTemplateBasicInterface {
26
26
  disabled?: boolean;
27
27
  }
28
28
  interface BtnTemplateInterfaceWithName extends BtnTemplateBasicInterface {
29
- //@ts-ignore
30
29
  name?: keyof IconsInterface;
31
30
  }
32
31
  interface BtnTemplateInterfaceWithIcon extends BtnTemplateBasicInterface {
@@ -9,43 +9,9 @@ export interface IconsInterface {
9
9
  'demote-outlined': string;
10
10
  'lower-hand': string;
11
11
  'raise-hand': string;
12
- 'white-board': string;
13
- ains: string;
14
- 'vb-blur': string;
15
- 'vb-color': string;
16
- 'vb-image': string;
17
- vb: string;
18
- 'turn-off-stt': string;
19
- 'live-caption-mode': string;
20
- done: string;
21
- warning: string;
22
- 'noise-cancellation': string;
23
- 'whiteboard-new': string;
24
- chat_attachment_pdf: string;
25
- chat_attachment_image: string;
26
- chat_attachment_doc: string;
27
- chat_attachment_unknown: string;
28
- chat_emoji_fill: string;
29
- chat_emoji: string;
30
12
  }
31
13
 
32
14
  const icons: IconsInterface = {
33
- 'whiteboard-new':
34
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANWSURBVHgB7ZuBcdswDEWhXgdIN1C6QNNO4HSCbBB3gmYDuxPEncC+LuJs4GwgbxBvgAIVXcs2KQKU5MgS3h3PdzIBif8gUIQoAMMwjDQQMad2A8YxJModtQIPLFksMP5HTVUcNKEqkAAzjPMMY8RFj5Q5jA0a9Eoh0BuMCWX0iAX6AMNBm1d+w1igaHhAHQWOaTbD8LQe4hHGAg12ijoKGBNdR08W60AOJ/TDTvk3h+tmm2XZrcbgY+gPLJPYEkphhsIPUOIViMS5o581tSGthFcUPS+g5OwWc5GzgWGJw9ySQFtQ4ntQHFrkMKsUcZgjgVxCzmF4/JJ2dOkl+GdosfdG7Ql7UJ1LmNbnCt8zasu6Dhts4dmhKzDhoRCFSwo8FNqKuk4hepGTsMOHQqzcPXWdvEAPwA6XFHhSKqnr2EuBsL7OHCIpeq5VoGfUsVH4zsXj7aNAqK8UMncK/+vOBaIuN24grb+oQ12dmVkqfHvzWp2BWCA6PKG2QH9u4MeFn9iwaodp0ZMr/Bc+B3UGUYGwjBZNTphBIugJ/wji6JGOV22A+oTJFJgQTaij0J4j5KiRATZDFU2oYw5KQo4aGWC5LmsCR6AokSt8JtWZQ86qfVLei714ju3c8VeI80SNk3gO7TGHSyBRFMskvZ96OZoW1YjAcuaRTM0FRp52UUbyW4qQw/YM6k8+RdnyYImVaMLDLCm5ldk2+bkr5LQ9g/gFaNZQfNutFcLk0JCQ8/YMZBfBEbHA5uxv5xxaInSi9gx0FzPHBkAHqM+lNtBfUErZgllAB6jHqzZIvzBNNB3Nki1fRz8FcufiaOIXAb46eOGEmUCHSMabnRr4HNE7peg7/Ca4CNlHyY5Ot4MLIBlvLwR6LyTjHdIWvE4wgSKYQBFMoAgmUAQTKIIJFMEEijBagaQrKJFAOMzPGkVjOhVoG+g3hYHAkeOi5yHQ5bXOOFRs52re4zVFEl1rFmifXBUhVNo9ejt7ulidQLnLdczcV/dT+/ZJs0ATGCcFifO5esCXpHm7/kXqMT2Dv0D8fnrwTCC34foexiXSP3F8m8290zx15Ez+FcKz2lDg6YxTyjc35jOkn0NNqX2hJt7adkFSauZbKPcS/En5wMUwDMMwDMMw4C9ycj0K0Sb6NAAAAABJRU5ErkJggg==',
35
- 'noise-cancellation':
36
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANxSURBVHgB7ZvxddowEMaPvv5fRlA2yAjuBMkGYYPSCeJMAJ0AMkGyAWzQdAKzAXSCr6dafjjGtiRbxgLu9949g5Fk+8vJOukUIkEQBEEQBEEQ/JlQBACY8uGRTZlTH9omk8mObhkWRrFt0MxKl/Fsc8G2N6JfLvwA92wZ7Ogy945tqlKbKV0qlQdxIbN5kmlzXaqjveiJxoRvYGZu5sGz3hr+bFrae0YPcQcDRy/YeNRR6M60oc15S539KALxRZPKjSSO9R7RnVlLu1r4t1LZDGN2MZyOPk5exOVSdCe1tD1F7jGaBQXgC3libuKZPyaVn7RHaVdXNBIcNx348IutOJ6PQpjSX6iJDC3xy5AeNAROHoS872dsKZstAFNs/8tj7GE2AD5dzDcyPdAV4CQQ9+01H+7YXtl2luJamBddnuu90oXj7EF64sg244/f2X42FCuESc0LMwqQT2vQpct7j2JGqCV/3FZ+2sYmTIm5Oc7IE2+BSrxYvo9OKSQpPCcxI7Gic4BjsJh51DnLMI88Ym8LSeYu7fTxIE0RjKUUJ4eW8zuKEZwxUEQ+P6tOZJfwWEzr60FRUzOg6O9zn4HkqgUqUQwgKXnylW4A9pgtdUxQ3IoHdUYEsiACWRCBLAQRCMeFtAyOOawhQD4pLaLnZ4oBnC7Ct2Y1cUwVdeHBci9ZpXxCPQnhQdOa76ql/Dt150/TD0YMVTn9jXoSQqCPmnNJU2ETxW7Jn7VlM4OqOfeXxgafUy0FK0udIVLPb9VKFAs4zZFZd1cg4OYF1GdrnbO9g4P61G/qUK+64eDkIeGwuIX6F3+QjEqQDVTGW/SiWdlr9LvmzmXmbES4N6bZsb171NXeoio/3UW1AavBE4Kkfztcd0WxYbpL3RKn09Jmx2v+QD2KYgTNq4XBM6y6zYZrpRQzfIO/G248mCe1eI5z8mA00B7jrPq4P/KYa9EkDmLtWlXwedJY9yBP8Fg4h31nyTi7yPoAe7S8Nx71ZASdlupOzbmZKdOW38ow4gpCL+A/pfBFv+8UXTrolwurQ3tUStcE7NMKV2FWuAavacIIpd8tGw9RdFk9tF/2vxd0AfnLuK4L6nOX+fINDU73XGsSigDJalgQgSyIQBZEIAsikAURyEIsAl3FrvxBQb53sGBJwikmqpboWRAEQRCC8A+7wtIN3wzWKgAAAABJRU5ErkJggg==',
37
- warning:
38
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAADNUlEQVR4Ae2c0W0TQRCG/zXxe0pwOoAOLh0kEkQ8kgpIKoioAKggvAEJUkwFuAPoADrABcQssxs7SqSsvXu3Mztx5pMsnew7Rxn/s9/tns+AYRiGYRiGYRiGYRjGtuCvMKHHLhTjoJBYtGtc0WZ38wSmGOPYHWIOZYygkWu8xap4AYcDeu4EClGXwNC2VKzfD7w0xw5eUAr/QBH6ErjA+8Qroa3PoQxVBfQXeEPj3cGaXTp/eae1FaCmhWPrLvCDCjhZu6OjFn4WW1mFUPQkMIhjU/ECPo6RaoSiIoFrxJFCjVB0JPDmnK8ENUJpXsAoDuA5ylEhlKYtnC2OFAqE0jaBueJIoUAozRLYQxxpdrDXSijtElgujnXv1UwoTQo4QBwpOv917QyGDfEWHiyOFI2EIp/AoeJI0UgoogmsKo4UwkKRTWC5OGb0EU+LjhAWilgBe4hj372ix0schu2C40SFItLCxeIgIVDh9u69xwW1vss/XkooMglc4IxFHCkEhcJewJg+H9tXmrP4t5nhT2Bo3VYICIW1gMtrHBO0g10obAWM7TOisa81I5xzfruBL4HS4kgTVq/ZPkiWAjYUR4oTGk5qLl7cwpPAluJI4ZIX7AdRvYAKxJGiW86GqlK1gGrEkYJSWFsodROoRxwpqgulWgEViiNFVaHUS2BNcXjs3p2GxW1XMdkVhVJlNSYOzq7ytCmsqHh8XG7XX8X2OHZH+ISBDC4g2zUOfubL1etBS17DW1i/OFJUEcqgBIpc4+DG08LrEX6hJ8MSyD/jKL8mUspAofQuIPuMIyRjdU2EtsFH57/0X73u1cLs4vD4Tm11bx3PX8a0d+Cht1D6JZBbHCP8hSy9hVKcQCFxzOkD2l8N7nHm4PAT/IRLqbOSA8oL+I2KJ3XaEm7xcnHy30GGWRh3Sw4oKiDLjEMbC5y61/iQu3t2AR/xjKOUIqHkS+TxzjhKKRJKVgIFB3FNZAklL4HbPu49TFYKNyZwefOz9HmZCiiBG+uTm0B1d4qz4/O+pLmxgNFGHu/wtAj/82nOjvmnMZ/JwGOSyT/dPwJRhTGmGn+fwTAMwzAMwzAMwzCMLeA/aQAlpfLwqQYAAAAASUVORK5CYII=',
39
- vb: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAEfSURBVHgB7VNbEcIwELwwCCgOkIADggMcgAQcVAI4KBJAARLAQeugdXBc6KVzpE2a5Ls7szNtsrebywNgQSoQsSWe+XtLrIlvYsFjJ+xhNQXPD5q5gJD5kfgKmZsFxISMzD26cqq7LHNe7YVYmQ6Mzo5Lc9tdKGDK3IZK1CIkzpzFsmVrUOE0Xjx/k+cyF2DNS1HkQ+vU/A4dIroo2UDzfxsKkOazAcL8LMbunoDKNY/ZosGcCwth8Lf/YmuyHpo1vYg5jf0V1W4NJj40e+c1JAAnHpqaKTCrOhL3xB1xSzRjHbEhfohPpdSD9dpo6P8OER2UgdvjojZ6SGi1wjxcXS/lCUDIQ0fbs5EDK58Q8jC6pmuP8AD9oaaigQWp+AKsAoDF7uWeIAAAAABJRU5ErkJggg==',
40
- 'vb-image':
41
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAB20lEQVRIie2UPWsUURSGn2siwcRsdgU/EkjnT5BgsZVgxCaNCiqIIi4WRrD1F6RQxMKAgTRWahkIikktRtzSD1IpCIIEsfAjCQQei5zRyZDdmVjnheHcc+5733fuzLkXdrFTqJ/UEzE+pLbVp+reqF1Rv6rjkTfUl+ozdV8Vg4mIh9W36kK2UG2qi+qZnHhbfaXWona5iskR9V1evANvqiiurlcRf18UV/vVlno3Yr/aow7kxdULZQYfthEfVpfdxK+Iy+pwzF+qJB7k/DcfjPhE/aE2I29G/jjyO5m42igzyMSvqedjvKJOF3jT6kr2+SLW1Td53p6iQUppVW0BD4CPUV4DagVqDViNNb/VOrAAWLaDlrqWtWvU7qsb6g31aMQN9V7MD6mv46mXGfwVjz4/qA6o827FfNR74qAtqUNdxUM0L95WJ3NzY9ExY4U1FzNx9VwVk/3qLePKqAr1bPGgpQ7ElFIyOuo0cAo4BowAfcA68AVoAy+A59EcJ4GRlNKjMoM+4DZwEzgAfAeWgM8xbgCjwPEYf2Oz66ZSSt2vijCYiR85p06ovR14vTE/F/yHRU6nHfwEFoGrpW/zD7PAeEppsIpB98PSBSmlLZrbbh24/r8Gu9gx/gBohhCCgI16xQAAAABJRU5ErkJggg==',
42
- 'vb-color':
43
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAvVBMVEUAAAAAAAAAAAAAAABAQEAgICAcHBwaGhogICAeHh4mGiYhISEfHx8eGB4aGh8eGR4cHCAeHiIdHSEbGx8fGx8eGiIeHiEdHSAdGiAdGh8cGh8cGh8cHB4bGyAcHCAdGx8cHB4eGx4dGx0dGx8bGx8cGh8bGh8bGyAdHB8dGx4cGx8cHB8cHB8cHB8cHB4bGx4bGx8cGiAbGx8cGyAcGh8cGh8cGx8cGyAcGyAcGyAcGx8dGx8cGx8cGx////9owITRAAAAPnRSTlMAAQIDBAgJChARFBcZKzIzNzw9QkJERUdhYmNkZWhvcnd5enuCioyer7K0tba3ubq8wcXJy8zOz9DR09bY2WCHnYUAAAABYktHRD5JZADjAAAAuklEQVQoz52R2RKCMAxFiyLu+4KCiiuKAm6oqOT/f0sMbaEwvnAfMpNzm9xpS0heSb3N0XtfduOayDt7oHotSgk+/UAsq8H5DATZFcq7QdhNFI0WgG3Ei/avUUiZFoCgicYI5zVFpyXUGg0TMjqg4fLdwLLuaDz4bp7lo/GMd7MsB41TNmP1J9yro6Gm+bUVXVB2k9S35lX2VIOA0bMkPrrBz7dFo2CwGT39gX2aM8x8rayajn9bSiS/vu5rPfA8hChsAAAAAElFTkSuQmCC',
44
- 'vb-blur':
45
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAABWUlEQVRIieWUP0oDYRDF36gRxMZOUQRbIZBIPICYxsZKm1SxtMoBvIBN0qRJrpDaY6iQwt5CCGiUFGLjv5+Fm2SyZDdfFATJg4VvmDdvZmeGkWYCwB6w7uxd4CAkdiEwx6KkeWd3JD2Hl/jXAOpA3dlVoOHsBlBN4nvMBea06EuyZwFAFshF7xpQc74SUI5x/QwGfCAHZPs+v6YZDVdxOZa/JddzM7sBzpzf8zOadj6AARWgDVwCpakEAhKcMIpPYD8kdrCmwA5QiN5NoOl4R7E4k3TsYgd8oADk+z4/gzcNZ/ASE3waU9yje3v+u6SPsb+TBGAb6LkW3QGrIbHB0wY29N2qV0ktM+v9OEH/rphZBShKOpW0EqN1JdXM7Nrz41qp5zqq+kLSUgKlCGylaaQCOGQy8mkak67praS0XnckPUxb+AiAzejWtIEucA9cAefA2q/E/wW+AK4bGrj694GPAAAAAElFTkSuQmCC',
46
- ains: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYAgMAAACdGdVrAAAACVBMVEUAAAD///////9zeKVjAAAAA3RSTlMAZr+SD6biAAAAAWJLR0QB/wIt3gAAADVJREFUCNdjYEADjA5giqkBk2J0agRJMjU1NaBTjE5NTUBJIAfEhVJQQawaYIZhtQjmCCQAAMpYF99YsyCnAAAAAElFTkSuQmCC',
47
- 'white-board':
48
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAABeElEQVRIie3Uz4tNcRjH8c/XlRgjkiKzUNyr/EjK1n/g/5C/wI8F+ROklNjMjZKysrDT2GuahcjCxqCIJMKUppfFPeo6fWfuGZrdfDbn9Dzf8/48z3POeZINTVBpB7Avybkkp5IsJ3me5GYp5c1/u+EQPuMXnuEplvAVJ1d4poddXQ0OYojjY7EZvMewcn6AV1jG5X/t6gA+4E4ld8vfurQW8F5cw098xNGxXK+5bsHDMYMvXcC7G/D35l0MsX8sP8BLnK6YPJgEP4x3DXgW/VZ+gLcN7FvL5CqmJhncbcZxpJIbh2ubrKRNlVhJMt2GJ5lLMtM6O53kwqpVt0B9vMYL7Fil8j+amziWisl27FkXeMuoExw71xN+Ap9wD1u7wvtdx4JtuGi0Kq50Nbi+1pkbLcZHtVztM+1VYk+SnCml/GiBp3A+ybEkC107uDGpcpzFvNGPxmhVVLvbXInNJlls7peS3G5X3mgxyeMk90sp852q31BNvwGhl1TXx/9xfQAAAABJRU5ErkJggg==',
49
15
  profile:
50
16
  'data:image/png;base64,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',
51
17
  'no-mic':
@@ -66,23 +32,6 @@ const icons: IconsInterface = {
66
32
  'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADvSURBVHgB5ZRREcIwDIZbB5MQCZOABBxQCUMBSJgEHCBhczAJlTAJITmyo1dW2vTKC/x3ubVZky9JbzPmr4SInmySdcemCR7I7nFQmAhFAcxrAE7ilyBhJ75pBxCu+VxfC3FbpR8Ai2zzI5OEq4wAxAcZgJctmBJxuzFE/GsTQAqy+ZoAJPAggblxVQMAX/LRuHxrwFsnQWIsBtChkcwlACj30icgkEveR9VecV8pCJR0cMMyMeQYQfIAJYR1khj1z08NUUsJGUyNlJCLqVEhZNqDWAXE0QMSr2dr7cyF0Jrv40z70XxD+Px2nPkZPQCoHCglmaLpAgAAAABJRU5ErkJggg==',
67
33
  'raise-hand':
68
34
  'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADxSURBVHgB5ZTtEYIwDIYD5391gzqBjIAbOIojsIFuoBs4AmyAG+AIblATDSdW+pFSf3g+d+81V0jeNrQA/BVa644EKcGCNapFFfqFQi1IvvxZgEfJ43wwR3HN8cqVnI9N8uoKRx6tXLGc2HbQUjKaLGEiuWVe8ejtcaxBMpIYYCvPqP1XDOjI4rBF7SRJPeUgri2x6oOxWpnNAMKhe/C43RliPpzaosb3QqzBFbVhgyNI0X6o7xdzEgQ7uIGdBp7/p7Ug52MHJ8fqO5ZJeKv0+/EMRYEETKgExSuIIdAk/AZbTOjE0DdpB0U71EHclp/kDilNkhWhg0nUAAAAAElFTkSuQmCC',
69
- 'turn-off-stt':
70
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAECSURBVHgBzVQLEcIwDE25CZgDhoNJQMJQADiYA4YCcDAsoIA6GChYHQAKSnJLj1LaXvncwbt710/SlyzpCvAP0FrnxBTHFbIPcMs+JfLMLF2NzI6KQ4OskVdPPMVjhTTZkeDRK2g57YUQCt7ECL6MJEFuQhGxF6ZJqRlS3TqeS2vf1K+HoZ5PUbQvE86Qulrzemo6bN2MPFmQ7TXbWxaskBveq3wHooLss0B2+o4DiYecHwSdS906vjt3zyCDMNbW/AKJiAkW9oKbIPHSSxj+ppcF5549ylRGzoQFMZMJhEEPhUYuY4KmTtRJBXGMkSefQdgLFGrA/6kuKPjsk0fkd7gBEy7vamLyRFEAAAAASUVORK5CYII=',
71
- 'live-caption-mode':
72
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADUSURBVHgB5VPtDYIwEL0S/ssIHYERGEE3qBPoBuIGMgFsAk6iI7hBfadHUpsirZFfvOSlxx333RKtDmoUrLUax4nS8QDPSik+KXMMBqwoHUb4Qu4Z78i0pwRIZ8X4ndGfkVM4q8GhHdWFZwT90amGu+l836kKW0c+gCWCVfS5tJa+AQ412ItsA/YKvAX0PfvOVfgz8ikDso4tbcEdve9b4egNZqhiA/LV0SI38BsQiJfReP/EVRjanryEmmaw6Ay5gtKZUSw0eA0F7MS4oTQM4rtWPAFxAE4MEjNhpQAAAABJRU5ErkJggg==',
73
- done: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABDSURBVHgB1c3BDQAgCAPAjuIIbKQjuJmjOIKjICS+TBPCkyZ99QhAvahqs64M3lZhoxB8KH7Ax/7hgeC9oxlidoQ6ue+PS8aRUCPDAAAAAElFTkSuQmCC',
74
- chat_attachment_pdf:
75
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAEnklEQVR4Ae2dS2wTRxjH/+O4EXU5tBLlIVLEtoc+pFaBnlooQqJBbS8k6qUSlQhVUa9Vc6h6KlUPVQ8IOHNIDnCOufEUj/C6EFCQIByIw0sICaEIhYCQ8bBfFstrYyf2zuzO7Oz3kyztOrOR9/vN4xt7dhdgGIZhGIZhGCZrCGigVHqwFnk5DMhef/ddWERpaiq8e1UKuX/Lpk0jsIQcFAmCX7niB38zLAt+E3qFFMOnxsb+hiUoC/CDvxf2B74OWcFuWySoCwD6kUJskaBDQGqxQUKmBRCmJWReAGFSAgt4jSkJLCCECQksoIGkJbCAJiQpgQW0ICkJLGABkpDAAhYhbgksoA3ilMAC2iQuCSygA+KQwAI6RLcEFhABnRJYQERIwsmzZwehiPMCcrn4TlFA7IAizgvo7u5GbEhshiLOC3h/+fJYW4EqzgvI5/NY3dODQqEAG8kjA5CEFStXwkY4CzIMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzAMCzBMpHtFyMHv1kJiGFL0+nupuko+TPm9ZZhd9zVmtmxDVLwPVivdb6Pjg+eDXxFX0hz4RmbXb8CjH39BFFQFdN4FSbHXpeATS8fPY0npJkwQQYBM5b0hFqNwfRwm4EH4Nbnnz2CC+BZmFd4BtjZpLHNPgTtTwORE/fvLVgAbv32zfLUsHdfIJ1/4r8/RkkcPgXMnYDMxClgKDPzc+u8UnP3/+gG+FeyTgIXKFw8Co4fq36PgL3QMibNcQHJdEAWcXlUo4H/9H7SURqi2h8sS/X6gd/0B10hmbSgFc2gw2KaA/zoEfPlVsL2xDzhWrC9PreK/P4Nt6sa2/xZsU9mxE292X8SBPdbX9mYkPwhT7R6/WNtv1gLCkJzRg7X9ge1wCTNZ0GJBbyRcs9d8BJdIbnk6ZSzEp/7AuXWg9v74pcWPDY8HreTtGgpeYXZ8D9tJRkB1wG2keKiWBWUUMxdo0CA6drz9QXPNh7XtZvMBgsaV2+mTmVwWVM1qGtPLdvimr7Z9Y6J5mcsXUpkFJdcCogS+mqaGZ9TnjsMl7LxGjAbsPSPBbDo86FJKGk5hHcDei/Ro4K5C/f7RYvB1hGPEJ2ButjaBajVwhqEuarRJgBf6Mm7yWu2YOyWkkRgFPA3SzHYhAZ2UJ0jM5ATSTISZsJiBg1SWvA0TdC5AyKtwkOfexzBBBAHY6VoreLKhD3OfrYcJOhYgRo5MIyfXQYgiUg4tS6ElKY9/+AmmUH6GTOnufYkMk/yylEaEmEZ2Ue6K1QVITCOzCOWERMMPMvIMsorAYSiiLqD8Yh+ySpd6IqIswPM8vx8Up5ExcgIj3qpV01BEz2/CZeHPDeDkDLkFM5Wu3D/QgBYBnufXBCG1fKBU4J+rjtpPaFsV4fX0+GNBxXkJFf8cg3PVg5aHeYYp3bv3O6Sg2/o6tYQd1MVSzdcYfEK7AIIe8Cm7Xu4WQv3OsnbgJxl5sVNXt1P3nxEj809afUv2+5O1bTY+6rYlNLufn2C+PINyeV+Q6TEMwzAMwzAMw+jhFRM1de8F+M56AAAAAElFTkSuQmCC',
76
- chat_attachment_doc:
77
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAFR0lEQVR4Ae2dTWwbRRTH/+OYUEUUIiSK26ZRjATi4EotXCJVCpa4IERpjsAB0lNz4ICEBBIg1RxAwIUgcSinRFzokYKEckG4LUW9oEaCA+JQG1pUjumHqjaNPd2X9ciTzdrb9ezuzNrvd2n98Zr4/d68+ai9BhiGYRiGYRiGGTUEEqDRuDaDolwG5CHv5iQconH5sn5zTQr51YtzcytwhAIM8ZPfvuQlvwrHkh/CISHF8i/nz5+EIxgL8JL/JdxP/DZkGzVXJJgLAOaRQ1yRkISA3OKChJEWQNiWMPICCJsSWEAHWxJYgIYNCSwgQNYSWEAIWUpgAT3ISgIL6EMWElhABGlLYAEPQJoSWMADkpYEFhCDNCSwgJgkLYEFDECSEljAgJCEn8+dW4AhQy+gUEjvJQqIt2DI0AsYHx9HakhUYcjQC3hiz55UR4EpQy+gWCxi/9QUJiYm4CJFjAAk4clSCS7CqyDLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLsADLDHStiFJNztyTWJaAc9eGiMO+R1p45ZnbOPHcTQxK+cB+o+ttxA6m5G9IXEKOEx/kqCehNreOQTAVELsFeZWfu2tDRPHj3xP4/VqKb+DqQ2wBMqfXhoii/s8u2IAn4Q4379pJRSpvzHrdm5oPBJrUjTvAr03gz//7x05P+vGVEvCYV5TXvbif/gK+W4sX96/X0r+o+3+6TGoCjsyEP0YJObYSnpjFWeCTl3be//KzwHvV3nHvV/3HdY50fo9TF4EPV+EsqY87ShhVsYIqtb7oV6pOMPnXOyNGjzuz4Fe3TjD59PP0ONdJXcDb3wNPfQYcXuq2H0rip1qy6faJ2e7tz+t+DFU8xamqJwn68+i2nvwPVv3nqzhqWy5XP5HZzENJfHWlOxqoRR0sdf8+Pdl9HvVuPY4kKhY1AXryKdnfXOwd5yqZTv1qQlVUNAGKsMn2QrMrjkaLkqW3sahJ2lUyX3vpk6haKel9/UqPVYs+j6jnH9QERK2uXIX3AZbJXEBY1erVXenxOQp9lKhRpI+mipufv4gkUwHUu/V+r9qNPi+E7R9oPa8E6Mtamhv6xeWBzARQhX77WjeRtFb/ozMCaCSopNIIobW9IrjU1Fc6+sRLMYuBJSrtG1wfGbGPUh8/KWXUc35Y6FYkJZaOIfSjCbqvemp7CwluxOgxFadXP8XpLevreX+E9IoLiwnj6NPekfQL8c8tTI+jU/+QHiVB799U+R+t7jxSoCODR3d1q386cJZEo+XN0zsTSWt9uk9VfzCO2ltU8m2SigBqDcHjAKpKSuKFZu842oCdXvN3u6p1kKjfmv3X+bTbpUTTmZGKo7ZG9/X7eS6QmoBBoYQPcnxAiXY92WEMMgnHb5Q5YPfDbdggtgAhkNNNf3+eL23ABrEFtIDjGLJR8EblFqozdmbq2ALWa6LZFjgsBXJw1tiffbtbW29JeXf2Bmxh/B0yjSv/Re4LhpnM35ayAyGaGF2MW7G5AIkmRhZhvCBJ4CxInsWoInAGhpgL2NxYwqgyJowXIsYCyuWy1wdFHSNGQWClvHdvE4Ykcxy9KYZubxDBenus8DESIBEB5bJXCUIm8gvlAu+1JlH9RGL/IVOemvLmgvbQS2h7r9F/rcmQyJd56jSuXn0HUtBlfScxXKxvVX6CyScSF0DQF3zKsVZNCPMry7qBt8goiuNJtZ1t/zJSZOubVh+S895m7ZiLX3XbE9rdb20wW2exubnkr/QYhmEYhmEYhmGS4T4UntJm2xhgXwAAAABJRU5ErkJggg==',
78
- chat_attachment_image:
79
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAFM0lEQVR4Ae2d22scVRzHv2d2djfZXBqLuaxJwLVoES1WHwQtlogPoiCWQnzxQUsFrw9SRPBBjX9AbX0QER/aBy2lguBLoRDRNkgebbWh9dJsIAkpMSbbbdbNbmZ3nDNxyybNbmd35sw5M/v7QCA7ZzjsfD/nnLmc2RmAIAiCIAiCIIhWg8ED0umFe6GbJwBzr/WxBwqRnp6u/njRZOZnz+zffxKKoMElG+GXf7HCH4Fi4W/DXmayEz9OTHwMRXAtwAr/GNQPfhNmGWOqSHAvADiAAKKKBC8EBBYVJLS0AI5sCS0vgCNTAgn4H1kSSEAVMiSQgC34LYEEbIOfEkhADfySQALq4IcEEnAHREsgAQ4QKYEEOESUBBLQACIkkIAG8VoCCWgCLyWQgCbhEn64cOFVuCT0AjRN3CYysFfgktALiMViEIaJEbgk9AJ6+/qE9gK3hF6ArusYHBpCIpGAiuhoAbiE/oEBqAgdBUmGBEiGBEiGBEiGBEiGBEiGBEiGBEiGBEiGBEiGBEjGl2tB2VIE4zfvwpKho1BW3/l98TU81XkD3ZESRCM8DR7+6ZVezBdjgQifM11ow+nlXvu7i0Z4IhOrOwITfDUFU8N4VvxP34Qnw1tTUFkyohAN7YTrwHuBaEiAZEiAZEiAZEI5J9zDruNg/CiS7C+0sRyulPbhbPF1ZEz15oVD1wN4+G+3vYmUdskOn/Ng5Gdr2Vt2mWqETsDzsS9vBV9NG1vFwdhRqIZSQ1A+O4n8jUn7/3jHQ2jvfgKa3t1IFXZrr0VSuwbVUEJA7p9zWJoZw3phdtPyaHwYXX2j2Dl8xHFda2an3dq3o9ZymUgfgpZnP8XC74dvC5/Dl/Fy/ueUhfKummVXjH1QDakCnIbL11n801kv+K74nt0LtsKXnV1/A6ohTcBSeqyhlp39+4wjCRmzH5+vfWEdej5pf+bBp8uP2Mt4mWr4vg8oG1l7vM8unkGjcAmcvvvri+NBnyqMIQj4KoCHP395FIV/p9AsTiUEBd+GIKMwh9lLz7oKvwKXsHD1sC006PgigIfPW/52RzrNkls+Z9fZrISIMY1YfhzRwiS00iJkIXwIKuSmcP3qa56Gf6tuqzdxCYMPf+v4hE0v/oq21a+gGZueJ4pSbA/yXUdQjvTBT4T3gPmpUSHhV6hIcNIT4rlvkMh8cFv4nEjxN3Qsv4Oo1Sv8RLgAP8bpigRjba7mOjz8eO5U3XqYmUP7zWO+SgjNxThbwtT2EpyEX42fEkJ1NZQPdVslNBp+Bb8khO5ydLWEZsOvwCWIJpQzYraEy89h9z3WDJgu8IfaHhDaOeH14gr+mLuGolGEyoR6Up6Hr7qE0N8VobqElrgtRWUJLXNfUEVCvpCHSggX0B7tgirYEubVkuBeAGMz9YoHdzwAlSiVS44lDHc/eqdVMnCJewEmZuoVv/zYR0r1Ao4TCbFIAo8PvFS/IrCLcIkHQ5B5vl7pzkQS7z/9NfYkR6AStSTw4Ps7duOFXR+iM3Z3/UoYvodLXL9HLJ1O91hnmytoRXQtlUomZ+AC1z0glUpZ4yD7CS2GxnDSbfh2PfACgx2CBzukAJEpR7RP4AGeCLD64Yw1m+HJFwoE1rZ60fo5np0HpIaGjlvzX6GXULa2cWNbvcGTl3lWk56bexcm44/1DdTrDR2QsVu+h+FzPBfA4S/4NCOlMcbcP1lWDayDDJ0d8mrY2VQzBGK/aTVqHrBO1l5U8VW3NeFn9/YJZuk8DOP4xpEeQRAEQRAEQRCEN/wHfTpF+u7LGxoAAAAASUVORK5CYII=',
80
- chat_attachment_unknown:
81
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAADEElEQVR4Ae3dbU4TQRzH8d+0a5uQSDDKU1qU9QR4AULiAYSXvlJu4A3EE4gngHe+RA9gFDgAnIA2seILNTb4qk3bcbatSTFA2c5s/7O7v88r+oZ059tuZx8yCxARERERUd4oOFCrfV9FoPcAvWZezsEjtbOz0ZenWul3T9fX9+GJAiwNBr93YgZ/A54N/hXWlFZ7n4+PX8MT1gHM4L+F/wN/ie5hx5cI9gGATaSQLxFcBEgtHyLkOkBEOkLuA0QkIzDAkFQEBhghEYEB/jPtCAxwhWlGYIBrTCsCA9xgGhEYYIykIzDALSQZgQFuKakIDBBDEhEYICbXERhgAi4jMMCEogifjo5ewlLmAxQKyW2ignoBS5kPUCqVkBiNDVjKfID5hYVEvwW2Mh8gCAJUqlXMzMzARwFyIIqwuLQEH3EWJIwBhDGAMAYQxgDCGEAYAwhjAGEMIIwBhDGAMAYQxgDCGEAYAwhjAGEMIIwBhDGAsInWinh/cLCqdHHP/Ond2hBxlMslzN9/gEplGZMKVypW623Evig/HPwTpHjg/2m12micn6PVbuFxuAoJsXdBBQSpWxtinB8/f+Hi4g8kxA6gtU7l2hDj/G42IYE/wkOdThcSGEAYAwhjAGEMIIwBhDGAMAYQxgDCGEAYAwhjAGEMIIwBhDGAMAYQNkkAmSsXCQuCIiRMEuAUGTQ7excS4l+SVN1tZOxbsLS4gHtzMpe5Ywd4vrVVNxGeKIUPSLlyudy/JeXRwxVIsX6GTO3rN40cs70vyH4WpFQd+WW9K7YPoFFHbinrCYmD4wB9iLxS+AhL9gE67V3kVVFZT0SsA4RhaPaD6gtypqCwHy4v12HJzamIjsrcscEYzV6x8AYOOAkQhuaToLSTN5QKZltdfPojzk7GhdWq+S3oZT5Cz2zjYFvdcPIwz1G1RuOVOV8RLeubqVvYEe1io0++w8GPOA8QiR7wqYvdHaXsV5b1g5lkBGrb1W7n0n9GgvpPWr2jN83B2jMfH3V7rejovn+A2T1Ep7M7mOkRERERERG58RfsH+jT00AlhAAAAABJRU5ErkJggg==',
82
- chat_emoji_fill:
83
- 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzUwNTFfNTQ5MjApIj4KPG1hc2sgaWQ9Im1hc2swXzUwNTFfNTQ5MjAiIHN0eWxlPSJtYXNrLXR5cGU6YWxwaGEiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjAiIHk9IjAiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+CjxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0iI0Q5RDlEOSIvPgo8L21hc2s+CjxnIG1hc2s9InVybCgjbWFzazBfNTA1MV81NDkyMCkiPgo8cGF0aCBkPSJNMjEgMTJDMjEgMTYuOTcwNiAxNi45NzA2IDIxIDEyIDIxQzcuMDI5NDQgMjEgMyAxNi45NzA2IDMgMTJDMyA3LjAyOTQ0IDcuMDI5NDQgMyAxMiAzQzE2Ljk3MDYgMyAyMSA3LjAyOTQ0IDIxIDEyWiIgZmlsbD0iI0ZGQUIwMCIvPgo8cGF0aCBkPSJNOS41NDUwMyAyMS4xNjg1QzguMjc3IDIwLjgyODggNy4xNDk1OSAyMC4yNjg4IDYuMTYyOCAxOS40ODg2QzUuMTc1OTkgMTguNzA4MyA0LjM4MDQ0IDE3Ljc5NTIgMy43NzYxNSAxNi43NDkxQzMuMTcxODUgMTUuNzAyOSAyLjc3ODM5IDE0LjU1NzcgMi41OTU3NyAxMy4zMTM1QzIuNDEzMTQgMTIuMDY5MiAyLjQ5MTcxIDEwLjgxMzEgMi44MzE0OCA5LjU0NTAzQzMuMTcxMjUgOC4yNzcgMy43MzEyNCA3LjE0OTU5IDQuNTExNDQgNi4xNjI4QzUuMjkxNjYgNS4xNzU5OSA2LjIwNDgyIDQuMzgwNDQgNy4yNTA5NCAzLjc3NjE1QzguMjk3MDggMy4xNzE4NSA5LjQ0MjI4IDIuNzc4MzkgMTAuNjg2NSAyLjU5NTc3QzExLjkzMDggMi40MTMxNCAxMy4xODY5IDIuNDkxNzEgMTQuNDU1IDIuODMxNDhDMTUuNzIzIDMuMTcxMjUgMTYuODUwNCAzLjczMTI0IDE3LjgzNzIgNC41MTE0NEMxOC44MjQgNS4yOTE2NiAxOS42MTk2IDYuMjA0ODIgMjAuMjIzOCA3LjI1MDk0QzIwLjgyODEgOC4yOTcwOCAyMS4yMjE2IDkuNDQyMjggMjEuNDA0MiAxMC42ODY1QzIxLjU4NjkgMTEuOTMwOCAyMS41MDgzIDEzLjE4NjkgMjEuMTY4NSAxNC40NTVDMjAuODI4OCAxNS43MjMgMjAuMjY4OCAxNi44NTA0IDE5LjQ4ODYgMTcuODM3MkMxOC43MDgzIDE4LjgyNCAxNy43OTUyIDE5LjYxOTYgMTYuNzQ5MSAyMC4yMjM4QzE1LjcwMjkgMjAuODI4MSAxNC41NTc3IDIxLjIyMTYgMTMuMzEzNSAyMS40MDQyQzEyLjA2OTIgMjEuNTg2OSAxMC44MTMxIDIxLjUwODMgOS41NDUwMyAyMS4xNjg1Wk05LjkzMTI5IDE5LjcyMDVDMTIuMDg2NiAyMC4yOTggMTQuMTEyNiAyMC4wMzkzIDE2LjAwOTMgMTguOTQ0MkMxNy45MDU5IDE3Ljg0OTIgMTkuMTQzIDE2LjIyNCAxOS43MjA1IDE0LjA2ODdDMjAuMjk4IDExLjkxMzQgMjAuMDM5MyA5Ljg4NzQxIDE4Ljk0NDIgNy45OTA3NUMxNy44NDkyIDYuMDk0MDkgMTYuMjI0IDQuODU3IDE0LjA2ODcgNC4yNzk0OUMxMS45MTM0IDMuNzAxOTcgOS44ODc0MSAzLjk2MDczIDcuOTkwNzUgNS4wNTU3N0M2LjA5NDA5IDYuMTUwODEgNC44NTcgNy43NzU5OCA0LjI3OTQ5IDkuOTMxMjlDMy43MDE5NyAxMi4wODY2IDMuOTYwNzMgMTQuMTEyNiA1LjA1NTc3IDE2LjAwOTNDNi4xNTA4MSAxNy45MDU5IDcuNzc1OTggMTkuMTQzIDkuOTMxMjkgMTkuNzIwNVpNMTAuNjU3MyAxNy4wMTA5QzExLjUyMzUgMTcuMjQzIDEyLjM3NzUgMTcuMjUyIDEzLjIxOTEgMTcuMDM3OUMxNC4wNjA4IDE2LjgyMzkgMTQuODA0MiAxNi40MjY2IDE1LjQ0OTMgMTUuODQ2M0MxNS41ODc3IDE1LjY5NTEgMTUuNjMyMSAxNS41MTc3IDE1LjU4MjYgMTUuMzE0MUMxNS41MzMgMTUuMTEwNSAxNS40MDQ5IDE0Ljk4MSAxNS4xOTgzIDE0LjkyNTdMNy43NjczNSAxMi45MzQ2QzcuNTYwNzMgMTIuODc5MiA3LjM4NTA3IDEyLjkyNzMgNy4yNDAzNiAxMy4wNzg4QzcuMDk1NjcgMTMuMjMwMyA3LjA0NTQ1IDEzLjQwNjIgNy4wODk3MiAxMy42MDYzQzcuMzU4MTggMTQuNDMxNSA3LjgwNzA4IDE1LjE0ODIgOC40MzY0MiAxNS43NTY0QzkuMDY1NzggMTYuMzY0NiA5LjgwNjA5IDE2Ljc4MjggMTAuNjU3MyAxNy4wMTA5WiIgZmlsbD0iIzExMTExMSIvPgo8cGF0aCBkPSJNMTAuNzQ2MiAxMC4yNTY2QzEwLjQzNTcgMTAuNTY5NiAxMC4wNTU2IDEwLjcyNjEgOS42MDU5OCAxMC43MjYxQzkuMTU2MzQgMTAuNzI2MSA4Ljc3NjI3IDEwLjU3MDggOC40NjU3NSAxMC4yNjAzQzguMTU1MjUgOS45NDk4MiA4IDkuNTY3NCA4IDkuMTEzMDVDOCA4LjY1ODcgOC4xNTUyNSA4LjI3NjI3IDguNDY1NzUgNy45NjU3N0M4Ljc3NjI3IDcuNjU1MjYgOS4xNTg3IDcuNSA5LjYxMzA1IDcuNUMxMC4wNTcyIDcuNSAxMC40MzQ3IDcuNjU3NjEgMTAuNzQ1NiA3Ljk3MjgyQzExLjA1NjUgOC4yODgwNCAxMS4yMTIgOC42NjkyMiAxMS4yMTIgOS4xMTYzN0MxMS4yMTIgOS41NjM1MiAxMS4wNTY3IDkuOTQzNiAxMC43NDYyIDEwLjI1NjZaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMTYuNzQ2MiAxMS43NTY2QzE2LjQzNTcgMTIuMDY5NiAxNi4wNTU2IDEyLjIyNjEgMTUuNjA2IDEyLjIyNjFDMTUuMTU2MyAxMi4yMjYxIDE0Ljc3NjMgMTIuMDcwOCAxNC40NjU4IDExLjc2MDNDMTQuMTU1MyAxMS40NDk4IDE0IDExLjA2NzQgMTQgMTAuNjEzQzE0IDEwLjE1ODcgMTQuMTU1MyA5Ljc3NjI3IDE0LjQ2NTggOS40NjU3N0MxNC43NzYzIDkuMTU1MjYgMTUuMTU4NyA5IDE1LjYxMyA5QzE2LjA1NzIgOSAxNi40MzQ3IDkuMTU3NjEgMTYuNzQ1NiA5LjQ3MjgyQzE3LjA1NjUgOS43ODgwNCAxNy4yMTIgMTAuMTY5MiAxNy4yMTIgMTAuNjE2NEMxNy4yMTIgMTEuMDYzNSAxNy4wNTY3IDExLjQ0MzYgMTYuNzQ2MiAxMS43NTY2WiIgZmlsbD0iYmxhY2siLz4KPC9nPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzUwNTFfNTQ5MjAiPgo8cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==',
84
- chat_emoji:
85
- 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPG1hc2sgaWQ9Im1hc2swXzUwNTFfNTQ5MDMiIHN0eWxlPSJtYXNrLXR5cGU6YWxwaGEiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjAiIHk9IjAiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+CjxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0iI0Q5RDlEOSIvPgo8L21hc2s+CjxnIG1hc2s9InVybCgjbWFzazBfNTA1MV81NDkwMykiPgo8cGF0aCBkPSJNMTUuNDA2MSAxMC44MDc3QzE1Ljc2OTkgMTAuODA3NyAxNi4wNzg1IDEwLjY4MDMgMTYuMzMxNyAxMC40MjU2QzE2LjU4NDkgMTAuMTcwOSAxNi43MTE1IDkuODYxNTggMTYuNzExNSA5LjQ5NzdDMTYuNzExNSA5LjEzMzgzIDE2LjU4NDEgOC44MjUzIDE2LjMyOTQgOC41NzIxQzE2LjA3NDcgOC4zMTg5IDE1Ljc2NTQgOC4xOTIzIDE1LjQwMTYgOC4xOTIzQzE1LjAzNzcgOC4xOTIzIDE0LjcyOTIgOC4zMTk2NiAxNC40NzYgOC41NzQzOEMxNC4yMjI3IDguODI5MDggMTQuMDk2MSA5LjEzODM3IDE0LjA5NjEgOS41MDIyNUMxNC4wOTYxIDkuODY2MTIgMTQuMjIzNSAxMC4xNzQ3IDE0LjQ3ODIgMTAuNDI3OUMxNC43MzI5IDEwLjY4MTEgMTUuMDQyMiAxMC44MDc3IDE1LjQwNjEgMTAuODA3N1pNOC41OTg0IDEwLjgwNzdDOC45NjIyNyAxMC44MDc3IDkuMjcwOCAxMC42ODAzIDkuNTI0IDEwLjQyNTZDOS43NzcyMiAxMC4xNzA5IDkuOTAzODMgOS44NjE1OCA5LjkwMzgzIDkuNDk3N0M5LjkwMzgzIDkuMTMzODMgOS43NzY0NyA4LjgyNTMgOS41MjE3NSA4LjU3MjFDOS4yNjcwMyA4LjMxODkgOC45NTc3NCA4LjE5MjMgOC41OTM4OCA4LjE5MjNDOC4yMzAwMSA4LjE5MjMgNy45MjE0NyA4LjMxOTY2IDcuNjY4MjUgOC41NzQzOEM3LjQxNTA1IDguODI5MDggNy4yODg0NSA5LjEzODM3IDcuMjg4NDUgOS41MDIyNUM3LjI4ODQ1IDkuODY2MTIgNy40MTU4MSAxMC4xNzQ3IDcuNjcwNTMgMTAuNDI3OUM3LjkyNTI0IDEwLjY4MTEgOC4yMzQ1MyAxMC44MDc3IDguNTk4NCAxMC44MDc3Wk0xMi4wMDE2IDIxLjVDMTAuNjg3NyAyMS41IDkuNDUyNjggMjEuMjUwNiA4LjI5NjU1IDIwLjc1MkM3LjE0MDQgMjAuMjUzMyA2LjEzNDcyIDE5LjU3NjUgNS4yNzk1IDE4LjcyMTdDNC40MjQyNyAxNy44NjY5IDMuNzQ3MjEgMTYuODYxNiAzLjI0ODMzIDE1LjcwNkMyLjc0OTQ0IDE0LjU1MDQgMi41IDEzLjMxNTYgMi41IDEyLjAwMTdDMi41IDEwLjY4NzcgMi43NDkzMyA5LjQ1MjY4IDMuMjQ4IDguMjk2NTVDMy43NDY2NyA3LjE0MDQgNC40MjM0MiA2LjEzNDcyIDUuMjc4MjUgNS4yNzk1QzYuMTMzMSA0LjQyNDI3IDcuMTM4MzQgMy43NDcyMSA4LjI5Mzk4IDMuMjQ4MzNDOS40NDk1OSAyLjc0OTQ0IDEwLjY4NDQgMi41IDExLjk5ODMgMi41QzEzLjMxMjIgMi41IDE0LjU0NzMgMi43NDkzMyAxNS43MDM0IDMuMjQ4QzE2Ljg1OTYgMy43NDY2NyAxNy44NjUyIDQuNDIzNDIgMTguNzIwNSA1LjI3ODI1QzE5LjU3NTcgNi4xMzMxIDIwLjI1MjcgNy4xMzgzNCAyMC43NTE2IDguMjkzOThDMjEuMjUwNSA5LjQ0OTU5IDIxLjUgMTAuNjg0NCAyMS41IDExLjk5ODNDMjEuNSAxMy4zMTIyIDIxLjI1MDYgMTQuNTQ3MyAyMC43NTIgMTUuNzAzNEMyMC4yNTMzIDE2Ljg1OTYgMTkuNTc2NSAxNy44NjUyIDE4LjcyMTcgMTguNzIwNUMxNy44NjY5IDE5LjU3NTcgMTYuODYxNiAyMC4yNTI3IDE1LjcwNiAyMC43NTE2QzE0LjU1MDQgMjEuMjUwNSAxMy4zMTU2IDIxLjUgMTIuMDAxNiAyMS41Wk0xMiAyMEMxNC4yMzMzIDIwIDE2LjEyNSAxOS4yMjUgMTcuNjc1IDE3LjY3NUMxOS4yMjUgMTYuMTI1IDIwIDE0LjIzMzMgMjAgMTJDMjAgOS43NjY2NCAxOS4yMjUgNy44NzQ5OCAxNy42NzUgNi4zMjQ5OEMxNi4xMjUgNC43NzQ5OCAxNC4yMzMzIDMuOTk5OTggMTIgMy45OTk5OEM5Ljc2NjY0IDMuOTk5OTggNy44NzQ5OCA0Ljc3NDk4IDYuMzI0OTggNi4zMjQ5OEM0Ljc3NDk4IDcuODc0OTggMy45OTk5OCA5Ljc2NjY0IDMuOTk5OTggMTJDMy45OTk5OCAxNC4yMzMzIDQuNzc0OTggMTYuMTI1IDYuMzI0OTggMTcuNjc1QzcuODc0OTggMTkuMjI1IDkuNzY2NjQgMjAgMTIgMjBaTTEyIDE3LjE5MjNDMTIuODk3NSAxNy4xOTIzIDEzLjcyNTQgMTYuOTc5OCAxNC40ODM3IDE2LjU1NDhDMTUuMjQyIDE2LjEyOTggMTUuODU3OCAxNS41NTMyIDE2LjMzMTEgMTQuODI1QzE2LjQyNTcgMTQuNjQyOSAxNi40MjI3IDE0LjQ1OTkgMTYuMzIyMSAxNC4yNzU5QzE2LjIyMTQgMTQuMDkyIDE2LjA2NDEgMTQgMTUuODUgMTRIOC4xNUM3LjkzNTkgMTQgNy43Nzg1MiAxNC4wOTIgNy42Nzc4OCAxNC4yNzU5QzcuNTc3MjQgMTQuNDU5OSA3LjU3NDI1IDE0LjY0MjkgNy42Njg5IDE0LjgyNUM4LjE0MjIgMTUuNTUzMiA4Ljc2MTg1IDE2LjEyOTggOS41Mjc4NSAxNi41NTQ4QzEwLjI5MzkgMTYuOTc5OCAxMS4xMTc5IDE3LjE5MjMgMTIgMTcuMTkyM1oiIGZpbGw9IndoaXRlIi8+CjwvZz4KPC9zdmc+Cg==',
86
35
  };
87
36
 
88
37
  export default icons;
@@ -3,24 +3,22 @@ import PropsContext from '../../Contexts/PropsContext';
3
3
  import RtcContext from '../../Contexts/RtcContext';
4
4
  import BtnTemplate from '../BtnTemplate';
5
5
  import styles from '../../Style';
6
- import DispatchContext from '../../Contexts/DispatchContext';
7
6
 
8
- interface EndCallProps {
9
- btnText?: string;
7
+ interface EndCallProps{
8
+ btnText?: string
10
9
  }
11
10
 
12
11
  function EndCall(props?: EndCallProps) {
13
12
  const {styleProps} = useContext(PropsContext);
14
13
  const {localBtnStyles} = styleProps || {};
15
14
  const {endCall} = localBtnStyles || {};
16
- const {dispatch} = useContext(DispatchContext);
15
+ const {dispatch} = useContext(RtcContext);
17
16
 
18
17
  return (
19
18
  <BtnTemplate
20
- //@ts-ignore
21
19
  name={'callEnd'}
22
20
  btnText={props?.btnText || 'Hang Up'}
23
- color="#FD0845"
21
+ color='#FD0845'
24
22
  style={{...styles.endCall, ...(endCall as object)}}
25
23
  onPress={() =>
26
24
  dispatch({
@@ -3,16 +3,14 @@ import PropsContext from '../../Contexts/PropsContext';
3
3
  import RtcContext from '../../Contexts/RtcContext';
4
4
  import BtnTemplate from '../BtnTemplate';
5
5
  import styles from '../../Style';
6
- import DispatchContext from '../../Contexts/DispatchContext';
7
6
 
8
7
  function FullScreen() {
9
8
  const {styleProps} = useContext(PropsContext);
10
9
  const {localBtnStyles} = styleProps || {};
11
10
  const {fullScreen} = localBtnStyles || {};
12
- const {dispatch} = useContext(DispatchContext);
11
+ const {dispatch} = useContext(RtcContext);
13
12
  return (
14
13
  <BtnTemplate
15
- //@ts-ignore
16
14
  name={'fullscreen'}
17
15
  style={{...styles.localBtn, ...(fullScreen as object)}}
18
16
  onPress={() => {
@@ -4,7 +4,6 @@ import RtcContext from '../../Contexts/RtcContext';
4
4
  import BtnTemplate from '../BtnTemplate';
5
5
  import styles from '../../Style';
6
6
  import {LocalContext} from '../../Contexts/LocalUserContext';
7
- import DispatchContext from '../../Contexts/DispatchContext';
8
7
 
9
8
  interface LocalAudioMuteProps {
10
9
  btnText?: string;
@@ -16,13 +15,11 @@ function LocalAudioMute(props: LocalAudioMuteProps) {
16
15
  const {localBtnStyles, remoteBtnStyles} = styleProps || {};
17
16
  const {muteLocalAudio} = localBtnStyles || {};
18
17
  const {muteRemoteAudio} = remoteBtnStyles || {};
19
- const {RtcEngineUnsafe} = useContext(RtcContext);
20
- const {dispatch} = useContext(DispatchContext);
18
+ const {RtcEngine, dispatch} = useContext(RtcContext);
21
19
  const local = useContext(LocalContext);
22
20
 
23
21
  return (
24
22
  <BtnTemplate
25
- //@ts-ignore
26
23
  name={local.audio === ToggleState.enabled ? 'mic' : 'micOff'}
27
24
  btnText={btnText}
28
25
  style={{
@@ -49,7 +46,7 @@ function LocalAudioMute(props: LocalAudioMuteProps) {
49
46
  });
50
47
 
51
48
  try {
52
- await RtcEngineUnsafe.muteLocalAudioStream(
49
+ await RtcEngine.muteLocalAudioStream(
53
50
  localState === ToggleState.enabled,
54
51
  );
55
52
  // Enable UI
@@ -4,7 +4,6 @@ import RtcContext from '../../Contexts/RtcContext';
4
4
  import BtnTemplate from '../BtnTemplate';
5
5
  import styles from '../../Style';
6
6
  import {LocalContext} from '../../Contexts/LocalUserContext';
7
- import DispatchContext from '../../Contexts/DispatchContext';
8
7
 
9
8
  interface LocalVideoMuteProps {
10
9
  btnText?: string;
@@ -17,13 +16,11 @@ function LocalVideoMute(props: LocalVideoMuteProps) {
17
16
  const {localBtnStyles, remoteBtnStyles} = styleProps || {};
18
17
  const {muteLocalVideo} = localBtnStyles || {};
19
18
  const {muteRemoteVideo} = remoteBtnStyles || {};
20
- const {RtcEngineUnsafe} = useContext(RtcContext);
21
- const {dispatch} = useContext(DispatchContext);
19
+ const {RtcEngine, dispatch} = useContext(RtcContext);
22
20
  const local = useContext(LocalContext);
23
21
 
24
22
  return (
25
23
  <BtnTemplate
26
- //@ts-ignore
27
24
  name={local.video === ToggleState.enabled ? 'videocam' : 'videocamOff'}
28
25
  btnText={btnText}
29
26
  style={{
@@ -50,7 +47,7 @@ function LocalVideoMute(props: LocalVideoMuteProps) {
50
47
  });
51
48
 
52
49
  try {
53
- await RtcEngineUnsafe.muteLocalVideoStream(
50
+ await RtcEngine.muteLocalVideoStream(
54
51
  localState === ToggleState.enabled ? true : false,
55
52
  );
56
53
  console.log('muted video', localState);