@100mslive/react-native-room-kit 0.2.0 → 1.0.1

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 (1085) hide show
  1. package/README.md +2 -11
  2. package/lib/commonjs/HMSInstanceSetup.js +2 -2
  3. package/lib/commonjs/HMSInstanceSetup.js.map +1 -1
  4. package/lib/commonjs/HMSPrebuilt.js +8 -10
  5. package/lib/commonjs/HMSPrebuilt.js.map +1 -1
  6. package/lib/commonjs/HMSRoomSetup.js +30 -33
  7. package/lib/commonjs/HMSRoomSetup.js.map +1 -1
  8. package/lib/commonjs/Icons/AlertTriangle/assets/alert-triangle-filled.png +0 -0
  9. package/lib/commonjs/Icons/AlertTriangle/assets/alert-triangle-filled@2x.png +0 -0
  10. package/lib/commonjs/Icons/AlertTriangle/assets/alert-triangle-filled@3x.png +0 -0
  11. package/lib/commonjs/Icons/AlertTriangle/index.js +2 -1
  12. package/lib/commonjs/Icons/AlertTriangle/index.js.map +1 -1
  13. package/lib/commonjs/Icons/Chevron/index.js +5 -1
  14. package/lib/commonjs/Icons/Chevron/index.js.map +1 -1
  15. package/lib/commonjs/Icons/Eye/assets/eye-on-small.png +0 -0
  16. package/lib/commonjs/Icons/Eye/assets/eye-on-small@2x.png +0 -0
  17. package/lib/commonjs/Icons/Eye/assets/eye-on-small@3x.png +0 -0
  18. package/lib/commonjs/Icons/Eye/index.js +35 -0
  19. package/lib/commonjs/Icons/Eye/index.js.map +1 -0
  20. package/lib/commonjs/Icons/Leave/index.js +5 -1
  21. package/lib/commonjs/Icons/Leave/index.js.map +1 -1
  22. package/lib/commonjs/Icons/Person/assets/person-left.png +0 -0
  23. package/lib/commonjs/Icons/Person/assets/person-left@2x.png +0 -0
  24. package/lib/commonjs/Icons/Person/assets/person-left@3x.png +0 -0
  25. package/lib/commonjs/Icons/Person/assets/person-off.png +0 -0
  26. package/lib/commonjs/Icons/Person/assets/person-off@2x.png +0 -0
  27. package/lib/commonjs/Icons/Person/assets/person-off@3x.png +0 -0
  28. package/lib/commonjs/Icons/Person/assets/person-rectangle.png +0 -0
  29. package/lib/commonjs/Icons/Person/assets/person-rectangle@2x.png +0 -0
  30. package/lib/commonjs/Icons/Person/assets/person-rectangle@3x.png +0 -0
  31. package/lib/commonjs/Icons/Person/index.js +2 -1
  32. package/lib/commonjs/Icons/Person/index.js.map +1 -1
  33. package/lib/commonjs/Icons/Search/assets/search.png +0 -0
  34. package/lib/commonjs/Icons/Search/assets/search@2x.png +0 -0
  35. package/lib/commonjs/Icons/Search/assets/search@3x.png +0 -0
  36. package/lib/commonjs/Icons/Search/index.js +34 -0
  37. package/lib/commonjs/Icons/Search/index.js.map +1 -0
  38. package/lib/commonjs/Icons/WelcomeHand/assets/welcome-hand.png +0 -0
  39. package/lib/commonjs/Icons/WelcomeHand/assets/welcome-hand@2x.png +0 -0
  40. package/lib/commonjs/Icons/WelcomeHand/assets/welcome-hand@3x.png +0 -0
  41. package/lib/commonjs/Icons/WelcomeHand/index.js +30 -0
  42. package/lib/commonjs/Icons/WelcomeHand/index.js.map +1 -0
  43. package/lib/commonjs/Icons/index.js +33 -0
  44. package/lib/commonjs/Icons/index.js.map +1 -1
  45. package/lib/commonjs/assets/audio-level-white.json +1271 -0
  46. package/lib/commonjs/assets/empty-chat-illustration/empty-chat.png +0 -0
  47. package/lib/commonjs/assets/empty-chat-illustration/empty-chat@2x.png +0 -0
  48. package/lib/commonjs/assets/empty-chat-illustration/empty-chat@3x.png +0 -0
  49. package/lib/commonjs/components/AnimatedFooter.js +35 -0
  50. package/lib/commonjs/components/AnimatedFooter.js.map +1 -0
  51. package/lib/commonjs/components/AnimatedHLSFooter.js +36 -0
  52. package/lib/commonjs/components/AnimatedHLSFooter.js.map +1 -0
  53. package/lib/commonjs/components/AnimatedHeader.js +44 -0
  54. package/lib/commonjs/components/AnimatedHeader.js.map +1 -0
  55. package/lib/commonjs/components/AvatarView.js +2 -2
  56. package/lib/commonjs/components/AvatarView.js.map +1 -1
  57. package/lib/commonjs/components/BackButton.js +2 -2
  58. package/lib/commonjs/components/BackButton.js.map +1 -1
  59. package/lib/commonjs/components/BottomSheet.js +8 -5
  60. package/lib/commonjs/components/BottomSheet.js.map +1 -1
  61. package/lib/commonjs/components/ChangeNameModalContent.js +14 -7
  62. package/lib/commonjs/components/ChangeNameModalContent.js.map +1 -1
  63. package/lib/commonjs/components/Chat/ChatBanner.js +37 -57
  64. package/lib/commonjs/components/Chat/ChatBanner.js.map +1 -1
  65. package/lib/commonjs/components/Chat/ChatFilterBottomSheetOpener.js +82 -0
  66. package/lib/commonjs/components/Chat/ChatFilterBottomSheetOpener.js.map +1 -0
  67. package/lib/commonjs/components/Chat/ChatFilterBottomSheetView.js +68 -0
  68. package/lib/commonjs/components/Chat/ChatFilterBottomSheetView.js.map +1 -0
  69. package/lib/commonjs/components/Chat/ChatFilterItem.js +70 -0
  70. package/lib/commonjs/components/Chat/ChatFilterItem.js.map +1 -0
  71. package/lib/commonjs/components/Chat/ChatFilterView.js +197 -0
  72. package/lib/commonjs/components/Chat/ChatFilterView.js.map +1 -0
  73. package/lib/commonjs/components/Chat/ChatList.js +9 -10
  74. package/lib/commonjs/components/Chat/ChatList.js.map +1 -1
  75. package/lib/commonjs/components/Chat/ChatMessage.js +38 -139
  76. package/lib/commonjs/components/Chat/ChatMessage.js.map +1 -1
  77. package/lib/commonjs/components/Chat/PinnedMessage.js +41 -45
  78. package/lib/commonjs/components/Chat/PinnedMessage.js.map +1 -1
  79. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js +42 -0
  80. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js.map +1 -0
  81. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsHeader.js +105 -0
  82. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsHeader.js.map +1 -0
  83. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsView.js +65 -0
  84. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsView.js.map +1 -0
  85. package/lib/commonjs/components/ChatAndParticipants/ChatView.js +36 -0
  86. package/lib/commonjs/components/ChatAndParticipants/ChatView.js.map +1 -0
  87. package/lib/commonjs/components/ChatAndParticipants/ParticipantsView.js +40 -0
  88. package/lib/commonjs/components/ChatAndParticipants/ParticipantsView.js.map +1 -0
  89. package/lib/commonjs/components/ChatAndParticipants/index.js +17 -0
  90. package/lib/commonjs/components/ChatAndParticipants/index.js.map +1 -0
  91. package/lib/commonjs/components/CompanyLogo.js +4 -3
  92. package/lib/commonjs/components/CompanyLogo.js.map +1 -1
  93. package/lib/commonjs/components/DefaultModal.js +2 -6
  94. package/lib/commonjs/components/DefaultModal.js.map +1 -1
  95. package/lib/commonjs/components/DisplayView.js +8 -21
  96. package/lib/commonjs/components/DisplayView.js.map +1 -1
  97. package/lib/commonjs/components/EndRoomModalContent.js +22 -8
  98. package/lib/commonjs/components/EndRoomModalContent.js.map +1 -1
  99. package/lib/commonjs/components/Footer.js +40 -32
  100. package/lib/commonjs/components/Footer.js.map +1 -1
  101. package/lib/commonjs/components/FullScreenVideoView.js +74 -0
  102. package/lib/commonjs/components/FullScreenVideoView.js.map +1 -0
  103. package/lib/commonjs/components/GridView.js +132 -52
  104. package/lib/commonjs/components/GridView.js.map +1 -1
  105. package/lib/commonjs/components/HLSFooter.js +35 -0
  106. package/lib/commonjs/components/HLSFooter.js.map +1 -0
  107. package/lib/commonjs/components/HLSView.js +12 -24
  108. package/lib/commonjs/components/HLSView.js.map +1 -1
  109. package/lib/commonjs/components/HMSBaseButton.js +2 -2
  110. package/lib/commonjs/components/HMSBaseButton.js.map +1 -1
  111. package/lib/commonjs/components/HMSChat.js +17 -16
  112. package/lib/commonjs/components/HMSChat.js.map +1 -1
  113. package/lib/commonjs/components/HMSDangerButton.js +4 -3
  114. package/lib/commonjs/components/HMSDangerButton.js.map +1 -1
  115. package/lib/commonjs/components/HMSHLSMessage.js +66 -0
  116. package/lib/commonjs/components/HMSHLSMessage.js.map +1 -0
  117. package/lib/commonjs/components/HMSHLSMessageList.js +58 -0
  118. package/lib/commonjs/components/HMSHLSMessageList.js.map +1 -0
  119. package/lib/commonjs/components/HMSHLSNotStarted.js +3 -8
  120. package/lib/commonjs/components/HMSHLSNotStarted.js.map +1 -1
  121. package/lib/commonjs/components/HMSHLSStreamLoading.js +6 -4
  122. package/lib/commonjs/components/HMSHLSStreamLoading.js.map +1 -1
  123. package/lib/commonjs/components/HMSHandRaiseNotification.js +84 -0
  124. package/lib/commonjs/components/HMSHandRaiseNotification.js.map +1 -0
  125. package/lib/commonjs/components/HMSKeyboardAvoidingView.js +48 -0
  126. package/lib/commonjs/components/HMSKeyboardAvoidingView.js.map +1 -0
  127. package/lib/commonjs/components/HMSLiveIndicator.js +104 -0
  128. package/lib/commonjs/components/HMSLiveIndicator.js.map +1 -0
  129. package/lib/commonjs/components/HMSLocalScreenshareNotification.js +38 -0
  130. package/lib/commonjs/components/HMSLocalScreenshareNotification.js.map +1 -0
  131. package/lib/commonjs/components/HMSLocalVideoView.js +6 -25
  132. package/lib/commonjs/components/HMSLocalVideoView.js.map +1 -1
  133. package/lib/commonjs/components/HMSManageAudioOutput.js +9 -3
  134. package/lib/commonjs/components/HMSManageAudioOutput.js.map +1 -1
  135. package/lib/commonjs/components/HMSManageCameraRotation.js +2 -2
  136. package/lib/commonjs/components/HMSManageCameraRotation.js.map +1 -1
  137. package/lib/commonjs/components/HMSManageLeave.js +37 -14
  138. package/lib/commonjs/components/HMSManageLeave.js.map +1 -1
  139. package/lib/commonjs/components/HMSManageLocalAudio.js +2 -2
  140. package/lib/commonjs/components/HMSManageLocalAudio.js.map +1 -1
  141. package/lib/commonjs/components/HMSManageLocalVideo.js +2 -2
  142. package/lib/commonjs/components/HMSManageLocalVideo.js.map +1 -1
  143. package/lib/commonjs/components/HMSManageRaiseHand.js +23 -11
  144. package/lib/commonjs/components/HMSManageRaiseHand.js.map +1 -1
  145. package/lib/commonjs/components/HMSMeetingEnded.js +2 -2
  146. package/lib/commonjs/components/HMSMeetingEnded.js.map +1 -1
  147. package/lib/commonjs/components/HMSNotification.js +96 -0
  148. package/lib/commonjs/components/HMSNotification.js.map +1 -0
  149. package/lib/commonjs/components/HMSNotifications.js +114 -0
  150. package/lib/commonjs/components/HMSNotifications.js.map +1 -0
  151. package/lib/commonjs/components/HMSOverlayChatView.js +30 -0
  152. package/lib/commonjs/components/HMSOverlayChatView.js.map +1 -0
  153. package/lib/commonjs/components/HMSPreviewEditName.js +2 -2
  154. package/lib/commonjs/components/HMSPreviewEditName.js.map +1 -1
  155. package/lib/commonjs/components/HMSPreviewHLSLiveIndicator.js +5 -4
  156. package/lib/commonjs/components/HMSPreviewHLSLiveIndicator.js.map +1 -1
  157. package/lib/commonjs/components/HMSPreviewJoinButton.js +11 -7
  158. package/lib/commonjs/components/HMSPreviewJoinButton.js.map +1 -1
  159. package/lib/commonjs/components/HMSPreviewNetworkQuality.js +3 -3
  160. package/lib/commonjs/components/HMSPreviewNetworkQuality.js.map +1 -1
  161. package/lib/commonjs/components/HMSPreviewPeersList.js +2 -2
  162. package/lib/commonjs/components/HMSPreviewPeersList.js.map +1 -1
  163. package/lib/commonjs/components/HMSPreviewSubtitle.js +3 -5
  164. package/lib/commonjs/components/HMSPreviewSubtitle.js.map +1 -1
  165. package/lib/commonjs/components/HMSPreviewTile.js +3 -3
  166. package/lib/commonjs/components/HMSPreviewTile.js.map +1 -1
  167. package/lib/commonjs/components/HMSPreviewTitle.js +3 -5
  168. package/lib/commonjs/components/HMSPreviewTitle.js.map +1 -1
  169. package/lib/commonjs/components/HMSPrimaryButton.js +2 -2
  170. package/lib/commonjs/components/HMSPrimaryButton.js.map +1 -1
  171. package/lib/commonjs/components/HMSRecordingIndicator.js +12 -5
  172. package/lib/commonjs/components/HMSRecordingIndicator.js.map +1 -1
  173. package/lib/commonjs/components/HMSRoleChangeDeclinedNotification.js +30 -0
  174. package/lib/commonjs/components/HMSRoleChangeDeclinedNotification.js.map +1 -0
  175. package/lib/commonjs/components/HMSRoomOptions.js +2 -2
  176. package/lib/commonjs/components/HMSRoomOptions.js.map +1 -1
  177. package/lib/commonjs/components/HMSSendMessageInput.js +57 -0
  178. package/lib/commonjs/components/HMSSendMessageInput.js.map +1 -0
  179. package/lib/commonjs/components/HMSTextInput.js +101 -15
  180. package/lib/commonjs/components/HMSTextInput.js.map +1 -1
  181. package/lib/commonjs/components/HMSVideoView.js +43 -0
  182. package/lib/commonjs/components/HMSVideoView.js.map +1 -0
  183. package/lib/commonjs/components/Header.js +21 -127
  184. package/lib/commonjs/components/Header.js.map +1 -1
  185. package/lib/commonjs/components/LocalPeerRegularVideoView.js +2 -2
  186. package/lib/commonjs/components/LocalPeerRegularVideoView.js.map +1 -1
  187. package/lib/commonjs/components/LocalPeerScreenshareView.js +3 -9
  188. package/lib/commonjs/components/LocalPeerScreenshareView.js.map +1 -1
  189. package/lib/commonjs/components/Meeting.js +8 -7
  190. package/lib/commonjs/components/Meeting.js.map +1 -1
  191. package/lib/commonjs/components/MeetingScreenContent.js +23 -10
  192. package/lib/commonjs/components/MeetingScreenContent.js.map +1 -1
  193. package/lib/commonjs/components/MenuModal/Menu.js +2 -2
  194. package/lib/commonjs/components/MenuModal/Menu.js.map +1 -1
  195. package/lib/commonjs/components/MiniView.js +10 -5
  196. package/lib/commonjs/components/MiniView.js.map +1 -1
  197. package/lib/commonjs/components/Modals.js +90 -319
  198. package/lib/commonjs/components/Modals.js.map +1 -1
  199. package/lib/commonjs/components/OverlayContainer.js +41 -0
  200. package/lib/commonjs/components/OverlayContainer.js.map +1 -0
  201. package/lib/commonjs/components/OverlayedViews.js +21 -0
  202. package/lib/commonjs/components/OverlayedViews.js.map +1 -0
  203. package/lib/commonjs/components/PIPView.js +24 -18
  204. package/lib/commonjs/components/PIPView.js.map +1 -1
  205. package/lib/commonjs/components/PaginationDots.js +7 -8
  206. package/lib/commonjs/components/PaginationDots.js.map +1 -1
  207. package/lib/commonjs/components/Participants/MultiRoleParticipantsList.js +65 -0
  208. package/lib/commonjs/components/Participants/MultiRoleParticipantsList.js.map +1 -0
  209. package/lib/commonjs/components/Participants/ParticipantsAccordian.js +60 -0
  210. package/lib/commonjs/components/Participants/ParticipantsAccordian.js.map +1 -0
  211. package/lib/commonjs/components/Participants/ParticipantsAccordianExpanded.js +25 -0
  212. package/lib/commonjs/components/Participants/ParticipantsAccordianExpanded.js.map +1 -0
  213. package/lib/commonjs/components/Participants/ParticipantsGroupFooter.js +61 -0
  214. package/lib/commonjs/components/Participants/ParticipantsGroupFooter.js.map +1 -0
  215. package/lib/commonjs/components/Participants/ParticipantsGroupHeader.js +131 -0
  216. package/lib/commonjs/components/Participants/ParticipantsGroupHeader.js.map +1 -0
  217. package/lib/commonjs/components/Participants/ParticipantsGroupOptions.js +79 -0
  218. package/lib/commonjs/components/Participants/ParticipantsGroupOptions.js.map +1 -0
  219. package/lib/commonjs/components/Participants/ParticipantsItem.js +123 -0
  220. package/lib/commonjs/components/Participants/ParticipantsItem.js.map +1 -0
  221. package/lib/commonjs/components/Participants/ParticipantsItemOption.js +45 -0
  222. package/lib/commonjs/components/Participants/ParticipantsItemOption.js.map +1 -0
  223. package/lib/commonjs/components/Participants/ParticipantsItemOptions.js +219 -0
  224. package/lib/commonjs/components/Participants/ParticipantsItemOptions.js.map +1 -0
  225. package/lib/commonjs/components/Participants/ParticipantsList.js +171 -220
  226. package/lib/commonjs/components/Participants/ParticipantsList.js.map +1 -1
  227. package/lib/commonjs/components/Participants/ParticipantsListFooter.js +43 -0
  228. package/lib/commonjs/components/Participants/ParticipantsListFooter.js.map +1 -0
  229. package/lib/commonjs/components/Participants/ParticipantsSeachInput.js +38 -32
  230. package/lib/commonjs/components/Participants/ParticipantsSeachInput.js.map +1 -1
  231. package/lib/commonjs/components/Participants/index.js +4 -26
  232. package/lib/commonjs/components/Participants/index.js.map +1 -1
  233. package/lib/commonjs/components/ParticipantsCount.js +3 -4
  234. package/lib/commonjs/components/ParticipantsCount.js.map +1 -1
  235. package/lib/commonjs/components/PeerDisplayView.js +1 -2
  236. package/lib/commonjs/components/PeerDisplayView.js.map +1 -1
  237. package/lib/commonjs/components/PeerMinimizedView.js +4 -5
  238. package/lib/commonjs/components/PeerMinimizedView.js.map +1 -1
  239. package/lib/commonjs/components/PeerRTCStatsContainer.js +3 -4
  240. package/lib/commonjs/components/PeerRTCStatsContainer.js.map +1 -1
  241. package/lib/commonjs/components/PeerRTCStatsView.js +1 -2
  242. package/lib/commonjs/components/PeerRTCStatsView.js.map +1 -1
  243. package/lib/commonjs/components/PeerSettingsModalContent.js +47 -123
  244. package/lib/commonjs/components/PeerSettingsModalContent.js.map +1 -1
  245. package/lib/commonjs/components/PeerVideoTile/AvatarView.js +23 -10
  246. package/lib/commonjs/components/PeerVideoTile/AvatarView.js.map +1 -1
  247. package/lib/commonjs/components/PeerVideoTile/HMSFullScreenButton.js +45 -0
  248. package/lib/commonjs/components/PeerVideoTile/HMSFullScreenButton.js.map +1 -0
  249. package/lib/commonjs/components/PeerVideoTile/HMSPinchGesture.js +202 -0
  250. package/lib/commonjs/components/PeerVideoTile/HMSPinchGesture.js.map +1 -0
  251. package/lib/commonjs/components/PeerVideoTile/PeerAudioIndicator.js +75 -0
  252. package/lib/commonjs/components/PeerVideoTile/PeerAudioIndicator.js.map +1 -0
  253. package/lib/commonjs/components/PeerVideoTile/PeerMetadata.js +22 -12
  254. package/lib/commonjs/components/PeerVideoTile/PeerMetadata.js.map +1 -1
  255. package/lib/commonjs/components/PeerVideoTile/PeerNameAndNetwork.js +12 -4
  256. package/lib/commonjs/components/PeerVideoTile/PeerNameAndNetwork.js.map +1 -1
  257. package/lib/commonjs/components/PeerVideoTile/PeerVideoTileView.js +60 -25
  258. package/lib/commonjs/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
  259. package/lib/commonjs/components/PeerVideoTile/VideoView.js +46 -14
  260. package/lib/commonjs/components/PeerVideoTile/VideoView.js.map +1 -1
  261. package/lib/commonjs/components/PressableIcon.js +12 -7
  262. package/lib/commonjs/components/PressableIcon.js.map +1 -1
  263. package/lib/commonjs/components/Preview.js +10 -15
  264. package/lib/commonjs/components/Preview.js.map +1 -1
  265. package/lib/commonjs/components/PreviewForRoleChangeModal.js +326 -0
  266. package/lib/commonjs/components/PreviewForRoleChangeModal.js.map +1 -0
  267. package/lib/commonjs/components/ReconnectionView.js +65 -0
  268. package/lib/commonjs/components/ReconnectionView.js.map +1 -0
  269. package/lib/commonjs/components/RoomSettingsModalContent.js +54 -27
  270. package/lib/commonjs/components/RoomSettingsModalContent.js.map +1 -1
  271. package/lib/commonjs/components/RoomSettingsModalDebugModeContent.js +32 -71
  272. package/lib/commonjs/components/RoomSettingsModalDebugModeContent.js.map +1 -1
  273. package/lib/commonjs/components/StatusBar.js +2 -2
  274. package/lib/commonjs/components/StatusBar.js.map +1 -1
  275. package/lib/commonjs/components/StopRecordingModalContent.js +2 -2
  276. package/lib/commonjs/components/StopRecordingModalContent.js.map +1 -1
  277. package/lib/commonjs/components/StreamingQualityModalContent.js +10 -11
  278. package/lib/commonjs/components/StreamingQualityModalContent.js.map +1 -1
  279. package/lib/commonjs/components/Tile.js +1 -2
  280. package/lib/commonjs/components/Tile.js.map +1 -1
  281. package/lib/commonjs/components/TilesContainer.js +32 -11
  282. package/lib/commonjs/components/TilesContainer.js.map +1 -1
  283. package/lib/commonjs/components/UnmountAfterDelay.js +3 -4
  284. package/lib/commonjs/components/UnmountAfterDelay.js.map +1 -1
  285. package/lib/commonjs/components/WebrtcView.js +16 -19
  286. package/lib/commonjs/components/WebrtcView.js.map +1 -1
  287. package/lib/commonjs/components/WelcomeInMeeting.js +20 -23
  288. package/lib/commonjs/components/WelcomeInMeeting.js.map +1 -1
  289. package/lib/commonjs/components/index.js +0 -33
  290. package/lib/commonjs/components/index.js.map +1 -1
  291. package/lib/commonjs/components/styles.js +1 -2
  292. package/lib/commonjs/components/styles.js.map +1 -1
  293. package/lib/commonjs/hooks-sdk.js +46 -1
  294. package/lib/commonjs/hooks-sdk.js.map +1 -1
  295. package/lib/commonjs/hooks-util-selectors.js +43 -9
  296. package/lib/commonjs/hooks-util-selectors.js.map +1 -1
  297. package/lib/commonjs/hooks-util.js +657 -237
  298. package/lib/commonjs/hooks-util.js.map +1 -1
  299. package/lib/commonjs/modules/HMSManager.js +3 -3
  300. package/lib/commonjs/modules/HMSManager.js.map +1 -1
  301. package/lib/commonjs/modules/parser.js +2 -3
  302. package/lib/commonjs/modules/parser.js.map +1 -1
  303. package/lib/commonjs/redux/actionTypes.js +30 -5
  304. package/lib/commonjs/redux/actionTypes.js.map +1 -1
  305. package/lib/commonjs/redux/actions/index.js +108 -3
  306. package/lib/commonjs/redux/actions/index.js.map +1 -1
  307. package/lib/commonjs/redux/index.js +1 -2
  308. package/lib/commonjs/redux/index.js.map +1 -1
  309. package/lib/commonjs/redux/reducers/appState.js +80 -6
  310. package/lib/commonjs/redux/reducers/appState.js.map +1 -1
  311. package/lib/commonjs/redux/reducers/chatWindow.js +4 -9
  312. package/lib/commonjs/redux/reducers/chatWindow.js.map +1 -1
  313. package/lib/commonjs/redux/reducers/hmsStates.js +242 -9
  314. package/lib/commonjs/redux/reducers/hmsStates.js.map +1 -1
  315. package/lib/commonjs/redux/reducers/index.js +1 -2
  316. package/lib/commonjs/redux/reducers/index.js.map +1 -1
  317. package/lib/commonjs/redux/reducers/message.js +3 -4
  318. package/lib/commonjs/redux/reducers/message.js.map +1 -1
  319. package/lib/commonjs/redux/reducers/userState.js +3 -4
  320. package/lib/commonjs/redux/reducers/userState.js.map +1 -1
  321. package/lib/commonjs/types.js +1 -2
  322. package/lib/commonjs/types.js.map +1 -1
  323. package/lib/commonjs/utils/dimension.js +2 -4
  324. package/lib/commonjs/utils/dimension.js.map +1 -1
  325. package/lib/commonjs/utils/functions.js +10 -3
  326. package/lib/commonjs/utils/functions.js.map +1 -1
  327. package/lib/commonjs/utils/theme.js +7 -10
  328. package/lib/commonjs/utils/theme.js.map +1 -1
  329. package/lib/commonjs/utils/types.js +17 -21
  330. package/lib/commonjs/utils/types.js.map +1 -1
  331. package/lib/commonjs/utils.js +7 -1
  332. package/lib/commonjs/utils.js.map +1 -1
  333. package/lib/module/HMSPrebuilt.js +5 -6
  334. package/lib/module/HMSPrebuilt.js.map +1 -1
  335. package/lib/module/HMSRoomSetup.js +30 -33
  336. package/lib/module/HMSRoomSetup.js.map +1 -1
  337. package/lib/module/Icons/AlertTriangle/assets/alert-triangle-filled.png +0 -0
  338. package/lib/module/Icons/AlertTriangle/assets/alert-triangle-filled@2x.png +0 -0
  339. package/lib/module/Icons/AlertTriangle/assets/alert-triangle-filled@3x.png +0 -0
  340. package/lib/module/Icons/AlertTriangle/index.js +2 -1
  341. package/lib/module/Icons/AlertTriangle/index.js.map +1 -1
  342. package/lib/module/Icons/Chevron/index.js +5 -1
  343. package/lib/module/Icons/Chevron/index.js.map +1 -1
  344. package/lib/module/Icons/Eye/assets/eye-on-small.png +0 -0
  345. package/lib/module/Icons/Eye/assets/eye-on-small@2x.png +0 -0
  346. package/lib/module/Icons/Eye/assets/eye-on-small@3x.png +0 -0
  347. package/lib/module/Icons/Eye/index.js +27 -0
  348. package/lib/module/Icons/Eye/index.js.map +1 -0
  349. package/lib/module/Icons/Leave/index.js +5 -1
  350. package/lib/module/Icons/Leave/index.js.map +1 -1
  351. package/lib/module/Icons/Person/assets/person-left.png +0 -0
  352. package/lib/module/Icons/Person/assets/person-left@2x.png +0 -0
  353. package/lib/module/Icons/Person/assets/person-left@3x.png +0 -0
  354. package/lib/module/Icons/Person/assets/person-off.png +0 -0
  355. package/lib/module/Icons/Person/assets/person-off@2x.png +0 -0
  356. package/lib/module/Icons/Person/assets/person-off@3x.png +0 -0
  357. package/lib/module/Icons/Person/assets/person-rectangle.png +0 -0
  358. package/lib/module/Icons/Person/assets/person-rectangle@2x.png +0 -0
  359. package/lib/module/Icons/Person/assets/person-rectangle@3x.png +0 -0
  360. package/lib/module/Icons/Person/index.js +2 -1
  361. package/lib/module/Icons/Person/index.js.map +1 -1
  362. package/lib/module/Icons/Search/assets/search.png +0 -0
  363. package/lib/module/Icons/Search/assets/search@2x.png +0 -0
  364. package/lib/module/Icons/Search/assets/search@3x.png +0 -0
  365. package/lib/module/Icons/Search/index.js +26 -0
  366. package/lib/module/Icons/Search/index.js.map +1 -0
  367. package/lib/module/Icons/WelcomeHand/assets/welcome-hand.png +0 -0
  368. package/lib/module/Icons/WelcomeHand/assets/welcome-hand@2x.png +0 -0
  369. package/lib/module/Icons/WelcomeHand/assets/welcome-hand@3x.png +0 -0
  370. package/lib/module/Icons/WelcomeHand/index.js +22 -0
  371. package/lib/module/Icons/WelcomeHand/index.js.map +1 -0
  372. package/lib/module/Icons/index.js +3 -0
  373. package/lib/module/Icons/index.js.map +1 -1
  374. package/lib/module/assets/audio-level-white.json +1271 -0
  375. package/lib/module/assets/empty-chat-illustration/empty-chat.png +0 -0
  376. package/lib/module/assets/empty-chat-illustration/empty-chat@2x.png +0 -0
  377. package/lib/module/assets/empty-chat-illustration/empty-chat@3x.png +0 -0
  378. package/lib/module/components/AnimatedFooter.js +26 -0
  379. package/lib/module/components/AnimatedFooter.js.map +1 -0
  380. package/lib/module/components/AnimatedHLSFooter.js +27 -0
  381. package/lib/module/components/AnimatedHLSFooter.js.map +1 -0
  382. package/lib/module/components/AnimatedHeader.js +35 -0
  383. package/lib/module/components/AnimatedHeader.js.map +1 -0
  384. package/lib/module/components/BottomSheet.js +6 -3
  385. package/lib/module/components/BottomSheet.js.map +1 -1
  386. package/lib/module/components/ChangeNameModalContent.js +13 -6
  387. package/lib/module/components/ChangeNameModalContent.js.map +1 -1
  388. package/lib/module/components/Chat/ChatBanner.js +36 -55
  389. package/lib/module/components/Chat/ChatBanner.js.map +1 -1
  390. package/lib/module/components/Chat/ChatFilterBottomSheetOpener.js +74 -0
  391. package/lib/module/components/Chat/ChatFilterBottomSheetOpener.js.map +1 -0
  392. package/lib/module/components/Chat/ChatFilterBottomSheetView.js +60 -0
  393. package/lib/module/components/Chat/ChatFilterBottomSheetView.js.map +1 -0
  394. package/lib/module/components/Chat/ChatFilterItem.js +62 -0
  395. package/lib/module/components/Chat/ChatFilterItem.js.map +1 -0
  396. package/lib/module/components/Chat/ChatFilterView.js +189 -0
  397. package/lib/module/components/Chat/ChatFilterView.js.map +1 -0
  398. package/lib/module/components/Chat/ChatList.js +6 -6
  399. package/lib/module/components/Chat/ChatList.js.map +1 -1
  400. package/lib/module/components/Chat/ChatMessage.js +36 -135
  401. package/lib/module/components/Chat/ChatMessage.js.map +1 -1
  402. package/lib/module/components/Chat/PinnedMessage.js +40 -43
  403. package/lib/module/components/Chat/PinnedMessage.js.map +1 -1
  404. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js +33 -0
  405. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js.map +1 -0
  406. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsHeader.js +97 -0
  407. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsHeader.js.map +1 -0
  408. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsView.js +57 -0
  409. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsView.js.map +1 -0
  410. package/lib/module/components/ChatAndParticipants/ChatView.js +28 -0
  411. package/lib/module/components/ChatAndParticipants/ChatView.js.map +1 -0
  412. package/lib/module/components/ChatAndParticipants/ParticipantsView.js +31 -0
  413. package/lib/module/components/ChatAndParticipants/ParticipantsView.js.map +1 -0
  414. package/lib/module/components/ChatAndParticipants/index.js +2 -0
  415. package/lib/module/components/ChatAndParticipants/index.js.map +1 -0
  416. package/lib/module/components/CompanyLogo.js +4 -3
  417. package/lib/module/components/CompanyLogo.js.map +1 -1
  418. package/lib/module/components/DefaultModal.js +2 -6
  419. package/lib/module/components/DefaultModal.js.map +1 -1
  420. package/lib/module/components/DisplayView.js +7 -20
  421. package/lib/module/components/DisplayView.js.map +1 -1
  422. package/lib/module/components/EndRoomModalContent.js +20 -6
  423. package/lib/module/components/EndRoomModalContent.js.map +1 -1
  424. package/lib/module/components/Footer.js +39 -30
  425. package/lib/module/components/Footer.js.map +1 -1
  426. package/lib/module/components/FullScreenVideoView.js +64 -0
  427. package/lib/module/components/FullScreenVideoView.js.map +1 -0
  428. package/lib/module/components/GridView.js +130 -49
  429. package/lib/module/components/GridView.js.map +1 -1
  430. package/lib/module/components/HLSFooter.js +26 -0
  431. package/lib/module/components/HLSFooter.js.map +1 -0
  432. package/lib/module/components/HLSView.js +11 -23
  433. package/lib/module/components/HLSView.js.map +1 -1
  434. package/lib/module/components/HMSChat.js +16 -15
  435. package/lib/module/components/HMSChat.js.map +1 -1
  436. package/lib/module/components/HMSDangerButton.js +2 -1
  437. package/lib/module/components/HMSDangerButton.js.map +1 -1
  438. package/lib/module/components/HMSHLSMessage.js +58 -0
  439. package/lib/module/components/HMSHLSMessage.js.map +1 -0
  440. package/lib/module/components/HMSHLSMessageList.js +49 -0
  441. package/lib/module/components/HMSHLSMessageList.js.map +1 -0
  442. package/lib/module/components/HMSHLSNotStarted.js +2 -7
  443. package/lib/module/components/HMSHLSNotStarted.js.map +1 -1
  444. package/lib/module/components/HMSHLSStreamLoading.js +5 -3
  445. package/lib/module/components/HMSHLSStreamLoading.js.map +1 -1
  446. package/lib/module/components/HMSHandRaiseNotification.js +75 -0
  447. package/lib/module/components/HMSHandRaiseNotification.js.map +1 -0
  448. package/lib/module/components/HMSKeyboardAvoidingView.js +39 -0
  449. package/lib/module/components/HMSKeyboardAvoidingView.js.map +1 -0
  450. package/lib/module/components/HMSLiveIndicator.js +96 -0
  451. package/lib/module/components/HMSLiveIndicator.js.map +1 -0
  452. package/lib/module/components/HMSLocalScreenshareNotification.js +29 -0
  453. package/lib/module/components/HMSLocalScreenshareNotification.js.map +1 -0
  454. package/lib/module/components/HMSLocalVideoView.js +4 -23
  455. package/lib/module/components/HMSLocalVideoView.js.map +1 -1
  456. package/lib/module/components/HMSManageAudioOutput.js +8 -2
  457. package/lib/module/components/HMSManageAudioOutput.js.map +1 -1
  458. package/lib/module/components/HMSManageLeave.js +37 -14
  459. package/lib/module/components/HMSManageLeave.js.map +1 -1
  460. package/lib/module/components/HMSManageRaiseHand.js +22 -10
  461. package/lib/module/components/HMSManageRaiseHand.js.map +1 -1
  462. package/lib/module/components/HMSNotification.js +87 -0
  463. package/lib/module/components/HMSNotification.js.map +1 -0
  464. package/lib/module/components/HMSNotifications.js +105 -0
  465. package/lib/module/components/HMSNotifications.js.map +1 -0
  466. package/lib/module/components/HMSOverlayChatView.js +20 -0
  467. package/lib/module/components/HMSOverlayChatView.js.map +1 -0
  468. package/lib/module/components/HMSPreviewHLSLiveIndicator.js +3 -2
  469. package/lib/module/components/HMSPreviewHLSLiveIndicator.js.map +1 -1
  470. package/lib/module/components/HMSPreviewJoinButton.js +10 -6
  471. package/lib/module/components/HMSPreviewJoinButton.js.map +1 -1
  472. package/lib/module/components/HMSPreviewNetworkQuality.js +1 -1
  473. package/lib/module/components/HMSPreviewNetworkQuality.js.map +1 -1
  474. package/lib/module/components/HMSPreviewSubtitle.js +2 -4
  475. package/lib/module/components/HMSPreviewSubtitle.js.map +1 -1
  476. package/lib/module/components/HMSPreviewTile.js +1 -1
  477. package/lib/module/components/HMSPreviewTile.js.map +1 -1
  478. package/lib/module/components/HMSPreviewTitle.js +2 -4
  479. package/lib/module/components/HMSPreviewTitle.js.map +1 -1
  480. package/lib/module/components/HMSRecordingIndicator.js +10 -3
  481. package/lib/module/components/HMSRecordingIndicator.js.map +1 -1
  482. package/lib/module/components/HMSRoleChangeDeclinedNotification.js +21 -0
  483. package/lib/module/components/HMSRoleChangeDeclinedNotification.js.map +1 -0
  484. package/lib/module/components/HMSSendMessageInput.js +48 -0
  485. package/lib/module/components/HMSSendMessageInput.js.map +1 -0
  486. package/lib/module/components/HMSTextInput.js +100 -14
  487. package/lib/module/components/HMSTextInput.js.map +1 -1
  488. package/lib/module/components/HMSVideoView.js +34 -0
  489. package/lib/module/components/HMSVideoView.js.map +1 -0
  490. package/lib/module/components/Header.js +18 -123
  491. package/lib/module/components/Header.js.map +1 -1
  492. package/lib/module/components/LocalPeerScreenshareView.js +1 -6
  493. package/lib/module/components/LocalPeerScreenshareView.js.map +1 -1
  494. package/lib/module/components/Meeting.js +8 -7
  495. package/lib/module/components/Meeting.js.map +1 -1
  496. package/lib/module/components/MeetingScreenContent.js +23 -10
  497. package/lib/module/components/MeetingScreenContent.js.map +1 -1
  498. package/lib/module/components/MenuModal/Menu.js +2 -2
  499. package/lib/module/components/MenuModal/Menu.js.map +1 -1
  500. package/lib/module/components/MiniView.js +8 -3
  501. package/lib/module/components/MiniView.js.map +1 -1
  502. package/lib/module/components/Modals.js +88 -313
  503. package/lib/module/components/Modals.js.map +1 -1
  504. package/lib/module/components/OverlayContainer.js +32 -0
  505. package/lib/module/components/OverlayContainer.js.map +1 -0
  506. package/lib/module/components/OverlayedViews.js +13 -0
  507. package/lib/module/components/OverlayedViews.js.map +1 -0
  508. package/lib/module/components/PIPView.js +21 -13
  509. package/lib/module/components/PIPView.js.map +1 -1
  510. package/lib/module/components/PaginationDots.js +4 -4
  511. package/lib/module/components/PaginationDots.js.map +1 -1
  512. package/lib/module/components/Participants/MultiRoleParticipantsList.js +56 -0
  513. package/lib/module/components/Participants/MultiRoleParticipantsList.js.map +1 -0
  514. package/lib/module/components/Participants/ParticipantsAccordian.js +51 -0
  515. package/lib/module/components/Participants/ParticipantsAccordian.js.map +1 -0
  516. package/lib/module/components/Participants/ParticipantsAccordianExpanded.js +16 -0
  517. package/lib/module/components/Participants/ParticipantsAccordianExpanded.js.map +1 -0
  518. package/lib/module/components/Participants/ParticipantsGroupFooter.js +53 -0
  519. package/lib/module/components/Participants/ParticipantsGroupFooter.js.map +1 -0
  520. package/lib/module/components/Participants/ParticipantsGroupHeader.js +122 -0
  521. package/lib/module/components/Participants/ParticipantsGroupHeader.js.map +1 -0
  522. package/lib/module/components/Participants/ParticipantsGroupOptions.js +71 -0
  523. package/lib/module/components/Participants/ParticipantsGroupOptions.js.map +1 -0
  524. package/lib/module/components/Participants/ParticipantsItem.js +115 -0
  525. package/lib/module/components/Participants/ParticipantsItem.js.map +1 -0
  526. package/lib/module/components/Participants/ParticipantsItemOption.js +37 -0
  527. package/lib/module/components/Participants/ParticipantsItemOption.js.map +1 -0
  528. package/lib/module/components/Participants/ParticipantsItemOptions.js +211 -0
  529. package/lib/module/components/Participants/ParticipantsItemOptions.js.map +1 -0
  530. package/lib/module/components/Participants/ParticipantsList.js +171 -219
  531. package/lib/module/components/Participants/ParticipantsList.js.map +1 -1
  532. package/lib/module/components/Participants/ParticipantsListFooter.js +35 -0
  533. package/lib/module/components/Participants/ParticipantsListFooter.js.map +1 -0
  534. package/lib/module/components/Participants/ParticipantsSeachInput.js +37 -30
  535. package/lib/module/components/Participants/ParticipantsSeachInput.js.map +1 -1
  536. package/lib/module/components/Participants/index.js +1 -3
  537. package/lib/module/components/Participants/index.js.map +1 -1
  538. package/lib/module/components/PeerMinimizedView.js +1 -1
  539. package/lib/module/components/PeerSettingsModalContent.js +50 -126
  540. package/lib/module/components/PeerSettingsModalContent.js.map +1 -1
  541. package/lib/module/components/PeerVideoTile/AvatarView.js +20 -6
  542. package/lib/module/components/PeerVideoTile/AvatarView.js.map +1 -1
  543. package/lib/module/components/PeerVideoTile/HMSFullScreenButton.js +36 -0
  544. package/lib/module/components/PeerVideoTile/HMSFullScreenButton.js.map +1 -0
  545. package/lib/module/components/PeerVideoTile/HMSPinchGesture.js +193 -0
  546. package/lib/module/components/PeerVideoTile/HMSPinchGesture.js.map +1 -0
  547. package/lib/module/components/PeerVideoTile/PeerAudioIndicator.js +65 -0
  548. package/lib/module/components/PeerVideoTile/PeerAudioIndicator.js.map +1 -0
  549. package/lib/module/components/PeerVideoTile/PeerMetadata.js +21 -11
  550. package/lib/module/components/PeerVideoTile/PeerMetadata.js.map +1 -1
  551. package/lib/module/components/PeerVideoTile/PeerNameAndNetwork.js +11 -3
  552. package/lib/module/components/PeerVideoTile/PeerNameAndNetwork.js.map +1 -1
  553. package/lib/module/components/PeerVideoTile/PeerVideoTileView.js +59 -22
  554. package/lib/module/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
  555. package/lib/module/components/PeerVideoTile/VideoView.js +43 -10
  556. package/lib/module/components/PeerVideoTile/VideoView.js.map +1 -1
  557. package/lib/module/components/PressableIcon.js +11 -6
  558. package/lib/module/components/PressableIcon.js.map +1 -1
  559. package/lib/module/components/Preview.js +11 -14
  560. package/lib/module/components/Preview.js.map +1 -1
  561. package/lib/module/components/PreviewForRoleChangeModal.js +317 -0
  562. package/lib/module/components/PreviewForRoleChangeModal.js.map +1 -0
  563. package/lib/module/components/ReconnectionView.js +56 -0
  564. package/lib/module/components/ReconnectionView.js.map +1 -0
  565. package/lib/module/components/RoomSettingsModalContent.js +53 -26
  566. package/lib/module/components/RoomSettingsModalContent.js.map +1 -1
  567. package/lib/module/components/RoomSettingsModalDebugModeContent.js +32 -71
  568. package/lib/module/components/RoomSettingsModalDebugModeContent.js.map +1 -1
  569. package/lib/module/components/StreamingQualityModalContent.js +8 -8
  570. package/lib/module/components/StreamingQualityModalContent.js.map +1 -1
  571. package/lib/module/components/TilesContainer.js +31 -9
  572. package/lib/module/components/TilesContainer.js.map +1 -1
  573. package/lib/module/components/WebrtcView.js +13 -15
  574. package/lib/module/components/WebrtcView.js.map +1 -1
  575. package/lib/module/components/WelcomeInMeeting.js +19 -22
  576. package/lib/module/components/WelcomeInMeeting.js.map +1 -1
  577. package/lib/module/components/index.js +0 -3
  578. package/lib/module/components/index.js.map +1 -1
  579. package/lib/module/hooks-sdk.js +46 -1
  580. package/lib/module/hooks-sdk.js.map +1 -1
  581. package/lib/module/hooks-util-selectors.js +38 -8
  582. package/lib/module/hooks-util-selectors.js.map +1 -1
  583. package/lib/module/hooks-util.js +654 -239
  584. package/lib/module/hooks-util.js.map +1 -1
  585. package/lib/module/modules/HMSManager.js +3 -3
  586. package/lib/module/modules/HMSManager.js.map +1 -1
  587. package/lib/module/modules/parser.js +2 -3
  588. package/lib/module/modules/parser.js.map +1 -1
  589. package/lib/module/redux/actionTypes.js +28 -1
  590. package/lib/module/redux/actionTypes.js.map +1 -1
  591. package/lib/module/redux/actions/index.js +87 -0
  592. package/lib/module/redux/actions/index.js.map +1 -1
  593. package/lib/module/redux/reducers/appState.js +78 -2
  594. package/lib/module/redux/reducers/appState.js.map +1 -1
  595. package/lib/module/redux/reducers/chatWindow.js +3 -7
  596. package/lib/module/redux/reducers/chatWindow.js.map +1 -1
  597. package/lib/module/redux/reducers/hmsStates.js +241 -7
  598. package/lib/module/redux/reducers/hmsStates.js.map +1 -1
  599. package/lib/module/utils/functions.js +8 -2
  600. package/lib/module/utils/functions.js.map +1 -1
  601. package/lib/module/utils/theme.js +2 -0
  602. package/lib/module/utils/theme.js.map +1 -1
  603. package/lib/module/utils/types.js +7 -2
  604. package/lib/module/utils/types.js.map +1 -1
  605. package/lib/module/utils.js +6 -0
  606. package/lib/module/utils.js.map +1 -1
  607. package/lib/typescript/HMSPrebuilt.d.ts +1 -0
  608. package/lib/typescript/HMSPrebuilt.d.ts.map +1 -1
  609. package/lib/typescript/HMSRoomSetup.d.ts.map +1 -1
  610. package/lib/typescript/Icons/AlertTriangle/index.d.ts +1 -0
  611. package/lib/typescript/Icons/AlertTriangle/index.d.ts.map +1 -1
  612. package/lib/typescript/Icons/Chevron/index.d.ts +1 -1
  613. package/lib/typescript/Icons/Chevron/index.d.ts.map +1 -1
  614. package/lib/typescript/Icons/Eye/index.d.ts +8 -0
  615. package/lib/typescript/Icons/Eye/index.d.ts.map +1 -0
  616. package/lib/typescript/Icons/Leave/index.d.ts.map +1 -1
  617. package/lib/typescript/Icons/Person/index.d.ts +1 -0
  618. package/lib/typescript/Icons/Person/index.d.ts.map +1 -1
  619. package/lib/typescript/Icons/Search/index.d.ts +7 -0
  620. package/lib/typescript/Icons/Search/index.d.ts.map +1 -0
  621. package/lib/typescript/Icons/WelcomeHand/index.d.ts +7 -0
  622. package/lib/typescript/Icons/WelcomeHand/index.d.ts.map +1 -0
  623. package/lib/typescript/Icons/index.d.ts +3 -0
  624. package/lib/typescript/Icons/index.d.ts.map +1 -1
  625. package/lib/typescript/components/AnimatedFooter.d.ts +8 -0
  626. package/lib/typescript/components/AnimatedFooter.d.ts.map +1 -0
  627. package/lib/typescript/components/AnimatedHLSFooter.d.ts +11 -0
  628. package/lib/typescript/components/AnimatedHLSFooter.d.ts.map +1 -0
  629. package/lib/typescript/components/AnimatedHeader.d.ts +7 -0
  630. package/lib/typescript/components/AnimatedHeader.d.ts.map +1 -0
  631. package/lib/typescript/components/BottomSheet.d.ts +4 -1
  632. package/lib/typescript/components/BottomSheet.d.ts.map +1 -1
  633. package/lib/typescript/components/ChangeNameModalContent.d.ts.map +1 -1
  634. package/lib/typescript/components/Chat/ChatBanner.d.ts +1 -1
  635. package/lib/typescript/components/Chat/ChatBanner.d.ts.map +1 -1
  636. package/lib/typescript/components/Chat/ChatFilterBottomSheetOpener.d.ts +6 -0
  637. package/lib/typescript/components/Chat/ChatFilterBottomSheetOpener.d.ts.map +1 -0
  638. package/lib/typescript/components/Chat/ChatFilterBottomSheetView.d.ts +6 -0
  639. package/lib/typescript/components/Chat/ChatFilterBottomSheetView.d.ts.map +1 -0
  640. package/lib/typescript/components/Chat/ChatFilterItem.d.ts +12 -0
  641. package/lib/typescript/components/Chat/ChatFilterItem.d.ts.map +1 -0
  642. package/lib/typescript/components/Chat/ChatFilterView.d.ts +6 -0
  643. package/lib/typescript/components/Chat/ChatFilterView.d.ts.map +1 -0
  644. package/lib/typescript/components/Chat/ChatList.d.ts.map +1 -1
  645. package/lib/typescript/components/Chat/ChatMessage.d.ts +2 -2
  646. package/lib/typescript/components/Chat/ChatMessage.d.ts.map +1 -1
  647. package/lib/typescript/components/Chat/PinnedMessage.d.ts.map +1 -1
  648. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.d.ts +3 -0
  649. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.d.ts.map +1 -0
  650. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsHeader.d.ts +7 -0
  651. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsHeader.d.ts.map +1 -0
  652. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsView.d.ts +3 -0
  653. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsView.d.ts.map +1 -0
  654. package/lib/typescript/components/ChatAndParticipants/ChatView.d.ts +6 -0
  655. package/lib/typescript/components/ChatAndParticipants/ChatView.d.ts.map +1 -0
  656. package/lib/typescript/components/ChatAndParticipants/ParticipantsView.d.ts +5 -0
  657. package/lib/typescript/components/ChatAndParticipants/ParticipantsView.d.ts.map +1 -0
  658. package/lib/typescript/components/ChatAndParticipants/index.d.ts +2 -0
  659. package/lib/typescript/components/ChatAndParticipants/index.d.ts.map +1 -0
  660. package/lib/typescript/components/CompanyLogo.d.ts.map +1 -1
  661. package/lib/typescript/components/DefaultModal.d.ts.map +1 -1
  662. package/lib/typescript/components/DisplayView.d.ts.map +1 -1
  663. package/lib/typescript/components/EndRoomModalContent.d.ts.map +1 -1
  664. package/lib/typescript/components/Footer.d.ts +0 -2
  665. package/lib/typescript/components/Footer.d.ts.map +1 -1
  666. package/lib/typescript/components/FullScreenVideoView.d.ts +3 -0
  667. package/lib/typescript/components/FullScreenVideoView.d.ts.map +1 -0
  668. package/lib/typescript/components/GridView.d.ts +12 -1
  669. package/lib/typescript/components/GridView.d.ts.map +1 -1
  670. package/lib/typescript/components/HLSFooter.d.ts +8 -0
  671. package/lib/typescript/components/HLSFooter.d.ts.map +1 -0
  672. package/lib/typescript/components/HLSView.d.ts.map +1 -1
  673. package/lib/typescript/components/HMSBaseButton.d.ts +2 -2
  674. package/lib/typescript/components/HMSBaseButton.d.ts.map +1 -1
  675. package/lib/typescript/components/HMSChat.d.ts.map +1 -1
  676. package/lib/typescript/components/HMSDangerButton.d.ts.map +1 -1
  677. package/lib/typescript/components/HMSHLSMessage.d.ts +8 -0
  678. package/lib/typescript/components/HMSHLSMessage.d.ts.map +1 -0
  679. package/lib/typescript/components/HMSHLSMessageList.d.ts +3 -0
  680. package/lib/typescript/components/HMSHLSMessageList.d.ts.map +1 -0
  681. package/lib/typescript/components/HMSHLSNotStarted.d.ts.map +1 -1
  682. package/lib/typescript/components/HMSHLSStreamLoading.d.ts.map +1 -1
  683. package/lib/typescript/components/HMSHandRaiseNotification.d.ts +10 -0
  684. package/lib/typescript/components/HMSHandRaiseNotification.d.ts.map +1 -0
  685. package/lib/typescript/components/HMSKeyboardAvoidingView.d.ts +8 -0
  686. package/lib/typescript/components/HMSKeyboardAvoidingView.d.ts.map +1 -0
  687. package/lib/typescript/components/HMSLiveIndicator.d.ts +3 -0
  688. package/lib/typescript/components/HMSLiveIndicator.d.ts.map +1 -0
  689. package/lib/typescript/components/HMSLocalScreenshareNotification.d.ts +5 -0
  690. package/lib/typescript/components/HMSLocalScreenshareNotification.d.ts.map +1 -0
  691. package/lib/typescript/components/HMSLocalVideoView.d.ts.map +1 -1
  692. package/lib/typescript/components/HMSManageAudioOutput.d.ts.map +1 -1
  693. package/lib/typescript/components/HMSManageLeave.d.ts.map +1 -1
  694. package/lib/typescript/components/HMSManageRaiseHand.d.ts.map +1 -1
  695. package/lib/typescript/components/HMSNotification.d.ts +15 -0
  696. package/lib/typescript/components/HMSNotification.d.ts.map +1 -0
  697. package/lib/typescript/components/HMSNotifications.d.ts +5 -0
  698. package/lib/typescript/components/HMSNotifications.d.ts.map +1 -0
  699. package/lib/typescript/components/HMSOverlayChatView.d.ts +3 -0
  700. package/lib/typescript/components/HMSOverlayChatView.d.ts.map +1 -0
  701. package/lib/typescript/components/HMSPreviewHLSLiveIndicator.d.ts.map +1 -1
  702. package/lib/typescript/components/HMSPreviewJoinButton.d.ts.map +1 -1
  703. package/lib/typescript/components/HMSPreviewNetworkQuality.d.ts.map +1 -1
  704. package/lib/typescript/components/HMSPreviewSubtitle.d.ts.map +1 -1
  705. package/lib/typescript/components/HMSPreviewTitle.d.ts.map +1 -1
  706. package/lib/typescript/components/HMSRecordingIndicator.d.ts.map +1 -1
  707. package/lib/typescript/components/HMSRoleChangeDeclinedNotification.d.ts +9 -0
  708. package/lib/typescript/components/HMSRoleChangeDeclinedNotification.d.ts.map +1 -0
  709. package/lib/typescript/components/HMSSendMessageInput.d.ts +9 -0
  710. package/lib/typescript/components/HMSSendMessageInput.d.ts.map +1 -0
  711. package/lib/typescript/components/HMSTextInput.d.ts +20 -6
  712. package/lib/typescript/components/HMSTextInput.d.ts.map +1 -1
  713. package/lib/typescript/components/HMSVideoView.d.ts +6 -0
  714. package/lib/typescript/components/HMSVideoView.d.ts.map +1 -0
  715. package/lib/typescript/components/Header.d.ts +3 -2
  716. package/lib/typescript/components/Header.d.ts.map +1 -1
  717. package/lib/typescript/components/LocalPeerScreenshareView.d.ts.map +1 -1
  718. package/lib/typescript/components/Meeting.d.ts.map +1 -1
  719. package/lib/typescript/components/MeetingScreenContent.d.ts.map +1 -1
  720. package/lib/typescript/components/MiniView.d.ts.map +1 -1
  721. package/lib/typescript/components/Modals.d.ts +1 -21
  722. package/lib/typescript/components/Modals.d.ts.map +1 -1
  723. package/lib/typescript/components/OverlayContainer.d.ts +9 -0
  724. package/lib/typescript/components/OverlayContainer.d.ts.map +1 -0
  725. package/lib/typescript/components/OverlayedViews.d.ts +4 -0
  726. package/lib/typescript/components/OverlayedViews.d.ts.map +1 -0
  727. package/lib/typescript/components/PIPView.d.ts +2 -1
  728. package/lib/typescript/components/PIPView.d.ts.map +1 -1
  729. package/lib/typescript/components/PaginationDots.d.ts +3 -0
  730. package/lib/typescript/components/PaginationDots.d.ts.map +1 -1
  731. package/lib/typescript/components/Participants/MultiRoleParticipantsList.d.ts +7 -0
  732. package/lib/typescript/components/Participants/MultiRoleParticipantsList.d.ts.map +1 -0
  733. package/lib/typescript/components/Participants/ParticipantsAccordian.d.ts +11 -0
  734. package/lib/typescript/components/Participants/ParticipantsAccordian.d.ts.map +1 -0
  735. package/lib/typescript/components/Participants/ParticipantsAccordianExpanded.d.ts +9 -0
  736. package/lib/typescript/components/Participants/ParticipantsAccordianExpanded.d.ts.map +1 -0
  737. package/lib/typescript/components/Participants/ParticipantsGroupFooter.d.ts +9 -0
  738. package/lib/typescript/components/Participants/ParticipantsGroupFooter.d.ts.map +1 -0
  739. package/lib/typescript/components/Participants/ParticipantsGroupHeader.d.ts +12 -0
  740. package/lib/typescript/components/Participants/ParticipantsGroupHeader.d.ts.map +1 -0
  741. package/lib/typescript/components/Participants/ParticipantsGroupOptions.d.ts +6 -0
  742. package/lib/typescript/components/Participants/ParticipantsGroupOptions.d.ts.map +1 -0
  743. package/lib/typescript/components/Participants/ParticipantsItem.d.ts +9 -0
  744. package/lib/typescript/components/Participants/ParticipantsItem.d.ts.map +1 -0
  745. package/lib/typescript/components/Participants/ParticipantsItemOption.d.ts +12 -0
  746. package/lib/typescript/components/Participants/ParticipantsItemOption.d.ts.map +1 -0
  747. package/lib/typescript/components/Participants/ParticipantsItemOptions.d.ts +10 -0
  748. package/lib/typescript/components/Participants/ParticipantsItemOptions.d.ts.map +1 -0
  749. package/lib/typescript/components/Participants/ParticipantsList.d.ts +3 -2
  750. package/lib/typescript/components/Participants/ParticipantsList.d.ts.map +1 -1
  751. package/lib/typescript/components/Participants/ParticipantsListFooter.d.ts +6 -0
  752. package/lib/typescript/components/Participants/ParticipantsListFooter.d.ts.map +1 -0
  753. package/lib/typescript/components/Participants/ParticipantsSeachInput.d.ts.map +1 -1
  754. package/lib/typescript/components/Participants/index.d.ts +1 -3
  755. package/lib/typescript/components/Participants/index.d.ts.map +1 -1
  756. package/lib/typescript/components/PeerSettingsModalContent.d.ts.map +1 -1
  757. package/lib/typescript/components/PeerVideoTile/AvatarView.d.ts +4 -0
  758. package/lib/typescript/components/PeerVideoTile/AvatarView.d.ts.map +1 -1
  759. package/lib/typescript/components/PeerVideoTile/HMSFullScreenButton.d.ts +7 -0
  760. package/lib/typescript/components/PeerVideoTile/HMSFullScreenButton.d.ts.map +1 -0
  761. package/lib/typescript/components/PeerVideoTile/HMSPinchGesture.d.ts +7 -0
  762. package/lib/typescript/components/PeerVideoTile/HMSPinchGesture.d.ts.map +1 -0
  763. package/lib/typescript/components/PeerVideoTile/PeerAudioIndicator.d.ts +8 -0
  764. package/lib/typescript/components/PeerVideoTile/PeerAudioIndicator.d.ts.map +1 -0
  765. package/lib/typescript/components/PeerVideoTile/PeerMetadata.d.ts +1 -0
  766. package/lib/typescript/components/PeerVideoTile/PeerMetadata.d.ts.map +1 -1
  767. package/lib/typescript/components/PeerVideoTile/PeerNameAndNetwork.d.ts.map +1 -1
  768. package/lib/typescript/components/PeerVideoTile/PeerVideoTileView.d.ts +2 -1
  769. package/lib/typescript/components/PeerVideoTile/PeerVideoTileView.d.ts.map +1 -1
  770. package/lib/typescript/components/PeerVideoTile/VideoView.d.ts +1 -0
  771. package/lib/typescript/components/PeerVideoTile/VideoView.d.ts.map +1 -1
  772. package/lib/typescript/components/PressableIcon.d.ts.map +1 -1
  773. package/lib/typescript/components/Preview.d.ts.map +1 -1
  774. package/lib/typescript/components/PreviewForRoleChangeModal.d.ts +3 -0
  775. package/lib/typescript/components/PreviewForRoleChangeModal.d.ts.map +1 -0
  776. package/lib/typescript/components/ReconnectionView.d.ts +4 -0
  777. package/lib/typescript/components/ReconnectionView.d.ts.map +1 -0
  778. package/lib/typescript/components/RoomSettingsModalContent.d.ts.map +1 -1
  779. package/lib/typescript/components/RoomSettingsModalDebugModeContent.d.ts.map +1 -1
  780. package/lib/typescript/components/StreamingQualityModalContent.d.ts.map +1 -1
  781. package/lib/typescript/components/TilesContainer.d.ts.map +1 -1
  782. package/lib/typescript/components/WebrtcView.d.ts.map +1 -1
  783. package/lib/typescript/components/WelcomeInMeeting.d.ts.map +1 -1
  784. package/lib/typescript/components/index.d.ts +0 -3
  785. package/lib/typescript/components/index.d.ts.map +1 -1
  786. package/lib/typescript/hooks-sdk.d.ts +4 -0
  787. package/lib/typescript/hooks-sdk.d.ts.map +1 -1
  788. package/lib/typescript/hooks-util-selectors.d.ts +7 -2
  789. package/lib/typescript/hooks-util-selectors.d.ts.map +1 -1
  790. package/lib/typescript/hooks-util.d.ts +46 -26
  791. package/lib/typescript/hooks-util.d.ts.map +1 -1
  792. package/lib/typescript/modules/HMSManager.d.ts +1 -1
  793. package/lib/typescript/modules/HMSManager.d.ts.map +1 -1
  794. package/lib/typescript/modules/parser.d.ts +1 -1
  795. package/lib/typescript/modules/parser.d.ts.map +1 -1
  796. package/lib/typescript/redux/actionTypes.d.ts +19 -1
  797. package/lib/typescript/redux/actionTypes.d.ts.map +1 -1
  798. package/lib/typescript/redux/actions/index.d.ts +105 -4
  799. package/lib/typescript/redux/actions/index.d.ts.map +1 -1
  800. package/lib/typescript/redux/index.d.ts +22 -2
  801. package/lib/typescript/redux/index.d.ts.map +1 -1
  802. package/lib/typescript/redux/reducers/appState.d.ts +10 -0
  803. package/lib/typescript/redux/reducers/appState.d.ts.map +1 -1
  804. package/lib/typescript/redux/reducers/chatWindow.d.ts +6 -6
  805. package/lib/typescript/redux/reducers/chatWindow.d.ts.map +1 -1
  806. package/lib/typescript/redux/reducers/hmsStates.d.ts +45 -4
  807. package/lib/typescript/redux/reducers/hmsStates.d.ts.map +1 -1
  808. package/lib/typescript/redux/reducers/index.d.ts +22 -2
  809. package/lib/typescript/redux/reducers/index.d.ts.map +1 -1
  810. package/lib/typescript/redux/reducers/userState.d.ts +1 -0
  811. package/lib/typescript/redux/reducers/userState.d.ts.map +1 -1
  812. package/lib/typescript/utils/functions.d.ts +3 -2
  813. package/lib/typescript/utils/functions.d.ts.map +1 -1
  814. package/lib/typescript/utils/theme.d.ts +1 -1
  815. package/lib/typescript/utils/theme.d.ts.map +1 -1
  816. package/lib/typescript/utils/types.d.ts +7 -2
  817. package/lib/typescript/utils/types.d.ts.map +1 -1
  818. package/lib/typescript/utils.d.ts +5 -0
  819. package/lib/typescript/utils.d.ts.map +1 -1
  820. package/package.json +13 -9
  821. package/src/HMSPrebuilt.tsx +9 -12
  822. package/src/HMSRoomSetup.tsx +51 -29
  823. package/src/Icons/AlertTriangle/assets/alert-triangle-filled.png +0 -0
  824. package/src/Icons/AlertTriangle/assets/alert-triangle-filled@2x.png +0 -0
  825. package/src/Icons/AlertTriangle/assets/alert-triangle-filled@3x.png +0 -0
  826. package/src/Icons/AlertTriangle/index.tsx +9 -2
  827. package/src/Icons/Chevron/index.tsx +9 -2
  828. package/src/Icons/Eye/assets/eye-on-small.png +0 -0
  829. package/src/Icons/Eye/assets/eye-on-small@2x.png +0 -0
  830. package/src/Icons/Eye/assets/eye-on-small@3x.png +0 -0
  831. package/src/Icons/Eye/index.tsx +36 -0
  832. package/src/Icons/Leave/index.tsx +7 -1
  833. package/src/Icons/Person/assets/person-left.png +0 -0
  834. package/src/Icons/Person/assets/person-left@2x.png +0 -0
  835. package/src/Icons/Person/assets/person-left@3x.png +0 -0
  836. package/src/Icons/Person/assets/person-off.png +0 -0
  837. package/src/Icons/Person/assets/person-off@2x.png +0 -0
  838. package/src/Icons/Person/assets/person-off@3x.png +0 -0
  839. package/src/Icons/Person/assets/person-rectangle.png +0 -0
  840. package/src/Icons/Person/assets/person-rectangle@2x.png +0 -0
  841. package/src/Icons/Person/assets/person-rectangle@3x.png +0 -0
  842. package/src/Icons/Person/index.tsx +13 -2
  843. package/src/Icons/Search/assets/search.png +0 -0
  844. package/src/Icons/Search/assets/search@2x.png +0 -0
  845. package/src/Icons/Search/assets/search@3x.png +0 -0
  846. package/src/Icons/Search/index.tsx +33 -0
  847. package/src/Icons/WelcomeHand/assets/welcome-hand.png +0 -0
  848. package/src/Icons/WelcomeHand/assets/welcome-hand@2x.png +0 -0
  849. package/src/Icons/WelcomeHand/assets/welcome-hand@3x.png +0 -0
  850. package/src/Icons/WelcomeHand/index.tsx +27 -0
  851. package/src/Icons/index.ts +3 -0
  852. package/src/assets/audio-level-white.json +1271 -0
  853. package/src/assets/empty-chat-illustration/empty-chat.png +0 -0
  854. package/src/assets/empty-chat-illustration/empty-chat@2x.png +0 -0
  855. package/src/assets/empty-chat-illustration/empty-chat@3x.png +0 -0
  856. package/src/components/AnimatedFooter.tsx +37 -0
  857. package/src/components/AnimatedHLSFooter.tsx +43 -0
  858. package/src/components/AnimatedHeader.tsx +53 -0
  859. package/src/components/BottomSheet.tsx +8 -4
  860. package/src/components/ChangeNameModalContent.tsx +19 -9
  861. package/src/components/Chat/ChatBanner.tsx +37 -52
  862. package/src/components/Chat/ChatFilterBottomSheetOpener.tsx +88 -0
  863. package/src/components/Chat/ChatFilterBottomSheetView.tsx +81 -0
  864. package/src/components/Chat/ChatFilterItem.tsx +71 -0
  865. package/src/components/Chat/ChatFilterView.tsx +250 -0
  866. package/src/components/Chat/ChatList.tsx +16 -12
  867. package/src/components/Chat/ChatMessage.tsx +48 -197
  868. package/src/components/Chat/PinnedMessage.tsx +45 -45
  869. package/src/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.tsx +38 -0
  870. package/src/components/ChatAndParticipants/ChatAndParticipantsHeader.tsx +143 -0
  871. package/src/components/ChatAndParticipants/ChatAndParticipantsView.tsx +84 -0
  872. package/src/components/ChatAndParticipants/ChatView.tsx +42 -0
  873. package/src/components/ChatAndParticipants/ParticipantsView.tsx +49 -0
  874. package/src/components/ChatAndParticipants/index.ts +1 -0
  875. package/src/components/CompanyLogo.tsx +3 -2
  876. package/src/components/DefaultModal.tsx +4 -6
  877. package/src/components/DisplayView.tsx +10 -26
  878. package/src/components/EndRoomModalContent.tsx +32 -7
  879. package/src/components/Footer.tsx +93 -58
  880. package/src/components/FullScreenVideoView.tsx +77 -0
  881. package/src/components/GridView.tsx +186 -65
  882. package/src/components/HLSFooter.tsx +32 -0
  883. package/src/components/HLSView.tsx +5 -32
  884. package/src/components/HMSBaseButton.tsx +2 -2
  885. package/src/components/HMSChat.tsx +12 -25
  886. package/src/components/HMSDangerButton.tsx +2 -1
  887. package/src/components/HMSHLSMessage.tsx +72 -0
  888. package/src/components/HMSHLSMessageList.tsx +60 -0
  889. package/src/components/HMSHLSNotStarted.tsx +8 -19
  890. package/src/components/HMSHLSStreamLoading.tsx +9 -3
  891. package/src/components/HMSHandRaiseNotification.tsx +101 -0
  892. package/src/components/HMSKeyboardAvoidingView.tsx +58 -0
  893. package/src/components/HMSLiveIndicator.tsx +124 -0
  894. package/src/components/HMSLocalScreenshareNotification.tsx +41 -0
  895. package/src/components/HMSLocalVideoView.tsx +4 -31
  896. package/src/components/HMSManageAudioOutput.tsx +14 -2
  897. package/src/components/HMSManageLeave.tsx +47 -19
  898. package/src/components/HMSManageRaiseHand.tsx +20 -13
  899. package/src/components/HMSNotification.tsx +126 -0
  900. package/src/components/HMSNotifications.tsx +154 -0
  901. package/src/components/HMSOverlayChatView.tsx +36 -0
  902. package/src/components/HMSPreviewHLSLiveIndicator.tsx +3 -2
  903. package/src/components/HMSPreviewJoinButton.tsx +20 -6
  904. package/src/components/HMSPreviewNetworkQuality.tsx +3 -1
  905. package/src/components/HMSPreviewSubtitle.tsx +2 -6
  906. package/src/components/HMSPreviewTile.tsx +1 -1
  907. package/src/components/HMSPreviewTitle.tsx +2 -6
  908. package/src/components/HMSRecordingIndicator.tsx +16 -3
  909. package/src/components/HMSRoleChangeDeclinedNotification.tsx +25 -0
  910. package/src/components/HMSSendMessageInput.tsx +59 -0
  911. package/src/components/HMSTextInput.tsx +158 -24
  912. package/src/components/HMSVideoView.tsx +43 -0
  913. package/src/components/Header.tsx +25 -133
  914. package/src/components/LocalPeerScreenshareView.tsx +0 -6
  915. package/src/components/Meeting.tsx +15 -8
  916. package/src/components/MeetingScreenContent.tsx +28 -11
  917. package/src/components/MiniView.tsx +10 -4
  918. package/src/components/Modals.tsx +112 -370
  919. package/src/components/OverlayContainer.tsx +31 -0
  920. package/src/components/OverlayedViews.tsx +22 -0
  921. package/src/components/PIPView.tsx +34 -13
  922. package/src/components/PaginationDots.tsx +9 -8
  923. package/src/components/Participants/MultiRoleParticipantsList.tsx +70 -0
  924. package/src/components/Participants/ParticipantsAccordian.tsx +70 -0
  925. package/src/components/Participants/ParticipantsAccordianExpanded.tsx +27 -0
  926. package/src/components/Participants/ParticipantsGroupFooter.tsx +65 -0
  927. package/src/components/Participants/ParticipantsGroupHeader.tsx +145 -0
  928. package/src/components/Participants/ParticipantsGroupOptions.tsx +82 -0
  929. package/src/components/Participants/ParticipantsItem.tsx +153 -0
  930. package/src/components/Participants/ParticipantsItemOption.tsx +52 -0
  931. package/src/components/Participants/ParticipantsItemOptions.tsx +262 -0
  932. package/src/components/Participants/ParticipantsList.tsx +222 -269
  933. package/src/components/Participants/ParticipantsListFooter.tsx +45 -0
  934. package/src/components/Participants/ParticipantsSeachInput.tsx +37 -35
  935. package/src/components/Participants/index.ts +1 -3
  936. package/src/components/PeerMinimizedView.tsx +1 -1
  937. package/src/components/PeerSettingsModalContent.tsx +44 -191
  938. package/src/components/PeerVideoTile/AvatarView.tsx +44 -6
  939. package/src/components/PeerVideoTile/HMSFullScreenButton.tsx +56 -0
  940. package/src/components/PeerVideoTile/HMSPinchGesture.tsx +176 -0
  941. package/src/components/PeerVideoTile/PeerAudioIndicator.tsx +83 -0
  942. package/src/components/PeerVideoTile/PeerMetadata.tsx +21 -12
  943. package/src/components/PeerVideoTile/PeerNameAndNetwork.tsx +15 -2
  944. package/src/components/PeerVideoTile/PeerVideoTileView.tsx +189 -115
  945. package/src/components/PeerVideoTile/VideoView.tsx +59 -9
  946. package/src/components/PressableIcon.tsx +26 -13
  947. package/src/components/Preview.tsx +39 -32
  948. package/src/components/PreviewForRoleChangeModal.tsx +443 -0
  949. package/src/components/ReconnectionView.tsx +73 -0
  950. package/src/components/RoomSettingsModalContent.tsx +60 -23
  951. package/src/components/RoomSettingsModalDebugModeContent.tsx +12 -66
  952. package/src/components/StreamingQualityModalContent.tsx +8 -8
  953. package/src/components/TilesContainer.tsx +54 -24
  954. package/src/components/WebrtcView.tsx +36 -17
  955. package/src/components/WelcomeInMeeting.tsx +19 -20
  956. package/src/components/index.ts +0 -3
  957. package/src/hooks-sdk.ts +58 -0
  958. package/src/hooks-util-selectors.tsx +69 -6
  959. package/src/hooks-util.ts +910 -292
  960. package/src/modules/HMSManager.ts +3 -3
  961. package/src/modules/parser.ts +3 -4
  962. package/src/redux/actionTypes.ts +36 -0
  963. package/src/redux/actions/index.ts +112 -1
  964. package/src/redux/reducers/appState.ts +83 -1
  965. package/src/redux/reducers/chatWindow.ts +12 -5
  966. package/src/redux/reducers/hmsStates.ts +369 -4
  967. package/src/redux/reducers/userState.ts +1 -1
  968. package/src/utils/functions.ts +9 -1
  969. package/src/utils/theme.ts +3 -1
  970. package/src/utils/types.ts +8 -2
  971. package/src/utils.ts +6 -0
  972. package/lib/commonjs/assets/100ms-logo.png +0 -0
  973. package/lib/commonjs/assets/brb.png +0 -0
  974. package/lib/commonjs/assets/icon.png +0 -0
  975. package/lib/commonjs/assets/illustration.png +0 -0
  976. package/lib/commonjs/assets/network_0.png +0 -0
  977. package/lib/commonjs/assets/network_1.png +0 -0
  978. package/lib/commonjs/assets/network_2.png +0 -0
  979. package/lib/commonjs/assets/network_3.png +0 -0
  980. package/lib/commonjs/assets/network_4.png +0 -0
  981. package/lib/commonjs/assets/user_music.png +0 -0
  982. package/lib/commonjs/components/ChatWindow.js +0 -608
  983. package/lib/commonjs/components/ChatWindow.js.map +0 -1
  984. package/lib/commonjs/components/CustomInput.js +0 -89
  985. package/lib/commonjs/components/CustomInput.js.map +0 -1
  986. package/lib/commonjs/components/DisplayTrack.js +0 -70
  987. package/lib/commonjs/components/DisplayTrack.js.map +0 -1
  988. package/lib/commonjs/components/HMSShareScreen.js +0 -59
  989. package/lib/commonjs/components/HMSShareScreen.js.map +0 -1
  990. package/lib/commonjs/components/HMSShowNetworkQuality.js +0 -56
  991. package/lib/commonjs/components/HMSShowNetworkQuality.js.map +0 -1
  992. package/lib/commonjs/components/LiveButton.js +0 -70
  993. package/lib/commonjs/components/LiveButton.js.map +0 -1
  994. package/lib/commonjs/components/Participants/ParticipantsFilter.js +0 -128
  995. package/lib/commonjs/components/Participants/ParticipantsFilter.js.map +0 -1
  996. package/lib/commonjs/components/Participants/ParticipantsHeader.js +0 -67
  997. package/lib/commonjs/components/Participants/ParticipantsHeader.js.map +0 -1
  998. package/lib/commonjs/components/Participants/SearchableParticipantsView.js +0 -27
  999. package/lib/commonjs/components/Participants/SearchableParticipantsView.js.map +0 -1
  1000. package/lib/commonjs/components/ParticipantsModal.js +0 -43
  1001. package/lib/commonjs/components/ParticipantsModal.js.map +0 -1
  1002. package/lib/commonjs/components/PeerVideoTile/PeerAudioMutedIndicator.js +0 -44
  1003. package/lib/commonjs/components/PeerVideoTile/PeerAudioMutedIndicator.js.map +0 -1
  1004. package/lib/commonjs/components/Picker.js +0 -93
  1005. package/lib/commonjs/components/Picker.js.map +0 -1
  1006. package/lib/module/assets/100ms-logo.png +0 -0
  1007. package/lib/module/assets/brb.png +0 -0
  1008. package/lib/module/assets/icon.png +0 -0
  1009. package/lib/module/assets/illustration.png +0 -0
  1010. package/lib/module/assets/network_0.png +0 -0
  1011. package/lib/module/assets/network_1.png +0 -0
  1012. package/lib/module/assets/network_2.png +0 -0
  1013. package/lib/module/assets/network_3.png +0 -0
  1014. package/lib/module/assets/network_4.png +0 -0
  1015. package/lib/module/assets/user_music.png +0 -0
  1016. package/lib/module/components/ChatWindow.js +0 -595
  1017. package/lib/module/components/ChatWindow.js.map +0 -1
  1018. package/lib/module/components/CustomInput.js +0 -82
  1019. package/lib/module/components/CustomInput.js.map +0 -1
  1020. package/lib/module/components/DisplayTrack.js +0 -63
  1021. package/lib/module/components/DisplayTrack.js.map +0 -1
  1022. package/lib/module/components/HMSShareScreen.js +0 -50
  1023. package/lib/module/components/HMSShareScreen.js.map +0 -1
  1024. package/lib/module/components/HMSShowNetworkQuality.js +0 -47
  1025. package/lib/module/components/HMSShowNetworkQuality.js.map +0 -1
  1026. package/lib/module/components/LiveButton.js +0 -61
  1027. package/lib/module/components/LiveButton.js.map +0 -1
  1028. package/lib/module/components/Participants/ParticipantsFilter.js +0 -121
  1029. package/lib/module/components/Participants/ParticipantsFilter.js.map +0 -1
  1030. package/lib/module/components/Participants/ParticipantsHeader.js +0 -58
  1031. package/lib/module/components/Participants/ParticipantsHeader.js.map +0 -1
  1032. package/lib/module/components/Participants/SearchableParticipantsView.js +0 -18
  1033. package/lib/module/components/Participants/SearchableParticipantsView.js.map +0 -1
  1034. package/lib/module/components/ParticipantsModal.js +0 -34
  1035. package/lib/module/components/ParticipantsModal.js.map +0 -1
  1036. package/lib/module/components/PeerVideoTile/PeerAudioMutedIndicator.js +0 -35
  1037. package/lib/module/components/PeerVideoTile/PeerAudioMutedIndicator.js.map +0 -1
  1038. package/lib/module/components/Picker.js +0 -83
  1039. package/lib/module/components/Picker.js.map +0 -1
  1040. package/lib/typescript/components/ChatWindow.d.ts +0 -22
  1041. package/lib/typescript/components/ChatWindow.d.ts.map +0 -1
  1042. package/lib/typescript/components/CustomInput.d.ts +0 -24
  1043. package/lib/typescript/components/CustomInput.d.ts.map +0 -1
  1044. package/lib/typescript/components/DisplayTrack.d.ts +0 -9
  1045. package/lib/typescript/components/DisplayTrack.d.ts.map +0 -1
  1046. package/lib/typescript/components/HMSShareScreen.d.ts +0 -9
  1047. package/lib/typescript/components/HMSShareScreen.d.ts.map +0 -1
  1048. package/lib/typescript/components/HMSShowNetworkQuality.d.ts +0 -3
  1049. package/lib/typescript/components/HMSShowNetworkQuality.d.ts.map +0 -1
  1050. package/lib/typescript/components/LiveButton.d.ts +0 -17
  1051. package/lib/typescript/components/LiveButton.d.ts.map +0 -1
  1052. package/lib/typescript/components/Participants/ParticipantsFilter.d.ts +0 -6
  1053. package/lib/typescript/components/Participants/ParticipantsFilter.d.ts.map +0 -1
  1054. package/lib/typescript/components/Participants/ParticipantsHeader.d.ts +0 -9
  1055. package/lib/typescript/components/Participants/ParticipantsHeader.d.ts.map +0 -1
  1056. package/lib/typescript/components/Participants/SearchableParticipantsView.d.ts +0 -3
  1057. package/lib/typescript/components/Participants/SearchableParticipantsView.d.ts.map +0 -1
  1058. package/lib/typescript/components/ParticipantsModal.d.ts +0 -5
  1059. package/lib/typescript/components/ParticipantsModal.d.ts.map +0 -1
  1060. package/lib/typescript/components/PeerVideoTile/PeerAudioMutedIndicator.d.ts +0 -6
  1061. package/lib/typescript/components/PeerVideoTile/PeerAudioMutedIndicator.d.ts.map +0 -1
  1062. package/lib/typescript/components/Picker.d.ts +0 -9
  1063. package/lib/typescript/components/Picker.d.ts.map +0 -1
  1064. package/src/assets/100ms-logo.png +0 -0
  1065. package/src/assets/brb.png +0 -0
  1066. package/src/assets/icon.png +0 -0
  1067. package/src/assets/illustration.png +0 -0
  1068. package/src/assets/network_0.png +0 -0
  1069. package/src/assets/network_1.png +0 -0
  1070. package/src/assets/network_2.png +0 -0
  1071. package/src/assets/network_3.png +0 -0
  1072. package/src/assets/network_4.png +0 -0
  1073. package/src/assets/user_music.png +0 -0
  1074. package/src/components/ChatWindow.tsx +0 -706
  1075. package/src/components/CustomInput.tsx +0 -138
  1076. package/src/components/DisplayTrack.tsx +0 -92
  1077. package/src/components/HMSShareScreen.tsx +0 -71
  1078. package/src/components/HMSShowNetworkQuality.tsx +0 -68
  1079. package/src/components/LiveButton.tsx +0 -77
  1080. package/src/components/Participants/ParticipantsFilter.tsx +0 -144
  1081. package/src/components/Participants/ParticipantsHeader.tsx +0 -64
  1082. package/src/components/Participants/SearchableParticipantsView.tsx +0 -21
  1083. package/src/components/ParticipantsModal.tsx +0 -46
  1084. package/src/components/PeerVideoTile/PeerAudioMutedIndicator.tsx +0 -41
  1085. package/src/components/Picker.tsx +0 -108
package/src/hooks-util.ts CHANGED
@@ -3,6 +3,7 @@ import {
3
3
  HMSConfig,
4
4
  HMSLocalPeer,
5
5
  HMSMessage,
6
+ HMSMessageRecipientType,
6
7
  HMSPIPListenerActions,
7
8
  HMSPeer,
8
9
  HMSPeerUpdate,
@@ -16,15 +17,21 @@ import {
16
17
  HMSTrackType,
17
18
  HMSTrackUpdate,
18
19
  HMSUpdateListenerActions,
20
+ HMSMessageRecipient,
19
21
  // useHMSPeerUpdates,
20
22
  } from '@100mslive/react-native-hms';
23
+ import type { Chat as ChatConfig } from '@100mslive/types-prebuilt/elements/chat';
21
24
  import type {
25
+ HMSRole,
22
26
  HMSSessionStore,
23
27
  HMSSessionStoreValue,
24
28
  HMSSpeaker,
25
29
  } from '@100mslive/react-native-hms';
26
30
  import type {
27
31
  ColorPalette,
32
+ DefaultConferencingScreen,
33
+ HLSLiveStreamingScreen,
34
+ Layout,
28
35
  Theme,
29
36
  Typography,
30
37
  } from '@100mslive/types-prebuilt';
@@ -39,9 +46,14 @@ import {
39
46
  } from 'react';
40
47
  import type { DependencyList } from 'react';
41
48
 
42
- import { MaxTilesInOnePage, ModalTypes, PipModes } from './utils/types';
43
- import type { PeerTrackNode } from './utils/types';
44
- import { createPeerTrackNode, parseMetadata } from './utils/functions';
49
+ import {
50
+ MaxTilesInOnePage,
51
+ ModalTypes,
52
+ PeerListRefreshInterval,
53
+ PipModes,
54
+ } from './utils/types';
55
+ import type { ChatBroadcastFilter, PeerTrackNode } from './utils/types';
56
+ import { createPeerTrackNode } from './utils/functions';
45
57
  import {
46
58
  batch,
47
59
  shallowEqual,
@@ -52,12 +64,25 @@ import {
52
64
  import type { RootState } from './redux';
53
65
  import {
54
66
  addMessage,
67
+ addNotification,
68
+ addParticipant,
69
+ addParticipants,
55
70
  addPinnedMessage,
71
+ addScreenshareTile,
72
+ addUpdateParticipant,
56
73
  changeMeetingState,
57
74
  changePipModeStatus,
58
75
  changeStartingHLSStream,
59
76
  clearStore,
77
+ removeNotification,
78
+ removeParticipant,
79
+ removeParticipants,
80
+ removeScreenshareTile,
81
+ replaceParticipantsList,
60
82
  saveUserData,
83
+ setActiveChatBottomSheetTab,
84
+ setActiveSpeakers,
85
+ setFullScreenPeerTrackNode,
61
86
  setHMSLocalPeerState,
62
87
  setHMSRoleState,
63
88
  setHMSRoomState,
@@ -67,9 +92,13 @@ import {
67
92
  setLocalPeerTrackNode,
68
93
  setMiniViewPeerTrackNode,
69
94
  setModalType,
95
+ setReconnecting,
96
+ setRoleChangeRequest,
70
97
  setStartingOrStoppingRecording,
98
+ updateFullScreenPeerTrackNode,
71
99
  updateLocalPeerTrackNode,
72
100
  updateMiniViewPeerTrackNode,
101
+ updateScreenshareTile,
73
102
  } from './redux/actions';
74
103
  import {
75
104
  createPeerTrackNodeUniqueId,
@@ -82,12 +111,7 @@ import {
82
111
  replacePeerTrackNodesWithTrack,
83
112
  } from './peerTrackNodeUtils';
84
113
  import { MeetingState } from './types';
85
- import {
86
- AppState,
87
- InteractionManager,
88
- LayoutAnimation,
89
- Platform,
90
- } from 'react-native';
114
+ import { InteractionManager, Keyboard, Platform } from 'react-native';
91
115
  import type { ImageStyle, StyleProp, ViewStyle, TextStyle } from 'react-native';
92
116
  import { NavigationContext } from '@react-navigation/native';
93
117
  import {
@@ -95,13 +119,17 @@ import {
95
119
  useIsPortraitOrientation,
96
120
  } from './utils/dimension';
97
121
  import {
98
- useSafeAreaFrame,
99
- useSafeAreaInsets,
100
- } from 'react-native-safe-area-context';
101
- import { selectIsHLSViewer, selectShouldGoLive } from './hooks-util-selectors';
122
+ selectChatLayoutConfig,
123
+ selectConferencingScreenConfig,
124
+ selectIsHLSViewer,
125
+ selectLayoutConfigForRole,
126
+ selectShouldGoLive,
127
+ selectVideoTileLayoutConfig,
128
+ } from './hooks-util-selectors';
102
129
  import type { GridViewRefAttrs } from './components/GridView';
103
130
  import { getRoomLayout } from './modules/HMSManager';
104
131
  import { DEFAULT_THEME, DEFAULT_TYPOGRAPHY } from './utils/theme';
132
+ import { NotificationTypes } from './utils';
105
133
 
106
134
  export const useHMSListeners = (
107
135
  setPeerTrackNodes: React.Dispatch<React.SetStateAction<PeerTrackNode[]>>
@@ -113,6 +141,8 @@ export const useHMSListeners = (
113
141
 
114
142
  useHMSPeersUpdate(hmsInstance, updateLocalPeer, setPeerTrackNodes);
115
143
 
144
+ useHMSPeerListUpdated(hmsInstance);
145
+
116
146
  useHMSTrackUpdate(hmsInstance, updateLocalPeer, setPeerTrackNodes);
117
147
  };
118
148
 
@@ -129,21 +159,6 @@ const useHMSRoomUpdate = (hmsInstance: HMSSDK) => {
129
159
 
130
160
  dispatch(setHMSRoomState(room));
131
161
 
132
- /**
133
- * Handle case when User is joining as HLSViewer,
134
- * before ON_JOIN, if ON_ROOM comes then we can show Meeting screen to user, instead of Loader or Preview
135
- */
136
- if (room.localPeer.role?.name?.includes('hls-') ?? false) {
137
- const meetingState = reduxStore.getState().app.meetingState;
138
-
139
- batch(() => {
140
- dispatch(setHMSLocalPeerState(room.localPeer));
141
- if (meetingState !== MeetingState.IN_MEETING) {
142
- dispatch(changeMeetingState(MeetingState.IN_MEETING));
143
- }
144
- });
145
- }
146
-
147
162
  if (type === HMSRoomUpdate.BROWSER_RECORDING_STATE_UPDATED) {
148
163
  const startingOrStoppingRecording =
149
164
  reduxStore.getState().app.startingOrStoppingRecording;
@@ -151,37 +166,8 @@ const useHMSRoomUpdate = (hmsInstance: HMSSDK) => {
151
166
  if (startingOrStoppingRecording) {
152
167
  dispatch(setStartingOrStoppingRecording(false));
153
168
  }
154
-
155
- let streaming = room?.browserRecordingState?.running;
156
- const startAtDate = room?.browserRecordingState?.startedAt;
157
-
158
- let startTime: null | string = null;
159
-
160
- if (startAtDate) {
161
- let hours = startAtDate.getHours().toString();
162
- let minutes = startAtDate.getMinutes()?.toString();
163
- startTime = hours + ':' + minutes;
164
- }
165
-
166
- Toast.showWithGravity(
167
- `Browser Recording ${
168
- streaming
169
- ? `Started ${startTime ? 'At ' + startTime : ''}`
170
- : 'Stopped'
171
- }`,
172
- Toast.LONG,
173
- Toast.TOP
174
- );
175
169
  } else if (type === HMSRoomUpdate.HLS_STREAMING_STATE_UPDATED) {
176
170
  dispatch(changeStartingHLSStream(false));
177
-
178
- let streaming = room?.hlsStreamingState?.running;
179
-
180
- Toast.showWithGravity(
181
- `HLS Streaming ${streaming ? 'Started' : 'Stopped'}`,
182
- Toast.LONG,
183
- Toast.TOP
184
- );
185
171
  } else if (type === HMSRoomUpdate.RTMP_STREAMING_STATE_UPDATED) {
186
172
  let streaming = room?.rtmpHMSRtmpStreamingState?.running;
187
173
  const startAtDate = room?.rtmpHMSRtmpStreamingState?.startedAt;
@@ -268,41 +254,108 @@ const useHMSPeersUpdate = (
268
254
 
269
255
  // Handle State for Meeting screen
270
256
  if (type === HMSPeerUpdate.PEER_JOINED) {
257
+ dispatch(addParticipant(peer));
271
258
  return;
272
259
  }
273
260
  if (type === HMSPeerUpdate.PEER_LEFT) {
261
+ dispatch(removeParticipant(peer));
262
+
263
+ // Handling regular tiles list
274
264
  setPeerTrackNodes((prevPeerTrackNodes) =>
275
265
  removePeerTrackNodes(prevPeerTrackNodes, peer)
276
266
  );
267
+
268
+ const reduxState = store.getState();
269
+
270
+ // Handling Screenshare tiles list
271
+ const screensharePeerTrackNodes =
272
+ reduxState.app.screensharePeerTrackNodes;
273
+ const nodeToRemove = screensharePeerTrackNodes.find(
274
+ (node) => node.peer.peerID === peer.peerID
275
+ );
276
+ if (nodeToRemove) {
277
+ dispatch(removeScreenshareTile(nodeToRemove.id));
278
+ }
279
+
280
+ // Handling Full screen view
281
+ const fullScreenPeerTrackNode = reduxState.app.fullScreenPeerTrackNode;
282
+ if (
283
+ fullScreenPeerTrackNode !== null &&
284
+ fullScreenPeerTrackNode.peer.peerID === peer.peerID
285
+ ) {
286
+ dispatch(setFullScreenPeerTrackNode(null));
287
+ }
277
288
  return;
278
289
  }
279
290
  if (peer.isLocal) {
280
- setPeerTrackNodes((prevPeerTrackNodes) => {
281
- if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
282
- return replacePeerTrackNodes(prevPeerTrackNodes, peer);
283
- }
284
- return prevPeerTrackNodes;
285
- });
286
-
287
291
  const reduxState = store.getState();
292
+ const fullScreenPeerTrackNode = reduxState.app.fullScreenPeerTrackNode;
288
293
  const miniviewPeerTrackNode = reduxState.app.miniviewPeerTrackNode;
289
294
  const localPeerTrackNode = reduxState.app.localPeerTrackNode;
290
295
 
296
+ // Currently Applied Layout config
297
+ const currentLayoutConfig = selectLayoutConfigForRole(
298
+ reduxState.hmsStates.layoutConfig,
299
+ peer.role || null
300
+ );
301
+
302
+ // Local Tile Inset layout is enabled
303
+ const enableLocalTileInset =
304
+ selectVideoTileLayoutConfig(currentLayoutConfig)?.grid
305
+ ?.enable_local_tile_inset;
306
+
307
+ // Local Tile Inset layout is disabled
308
+ const localTileInsetDisbaled = !enableLocalTileInset;
309
+
310
+ // Local Tile Inset layout is disabled
311
+ // then update local peer track node available in list of peer track nodes
312
+ if (localTileInsetDisbaled) {
313
+ setPeerTrackNodes((prevPeerTrackNodes) => {
314
+ if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
315
+ return replacePeerTrackNodes(prevPeerTrackNodes, peer);
316
+ }
317
+ return prevPeerTrackNodes;
318
+ });
319
+ }
320
+
291
321
  batch(() => {
292
322
  if (localPeerTrackNode) {
293
323
  dispatch(updateLocalPeerTrackNode({ peer }));
294
- } else {
324
+ } else if (isPublishingAllowed(peer)) {
295
325
  dispatch(
296
326
  setLocalPeerTrackNode(createPeerTrackNode(peer, peer.videoTrack))
297
327
  );
298
328
  }
299
329
 
300
- // only set `localPeerTrackNode` as miniview peer track node when we are already using it.
301
330
  if (
302
- miniviewPeerTrackNode &&
303
- miniviewPeerTrackNode.peer.peerID === peer.peerID
331
+ fullScreenPeerTrackNode &&
332
+ fullScreenPeerTrackNode.peer.peerID === peer.peerID
304
333
  ) {
305
- dispatch(updateMiniViewPeerTrackNode({ peer }));
334
+ dispatch(updateFullScreenPeerTrackNode({ peer }));
335
+ }
336
+
337
+ // If Local Tile Inset layout is enabled, then update or set it
338
+ if (enableLocalTileInset) {
339
+ if (
340
+ miniviewPeerTrackNode !== null &&
341
+ miniviewPeerTrackNode.peer.peerID === peer.peerID
342
+ ) {
343
+ dispatch(updateMiniViewPeerTrackNode({ peer }));
344
+ } else if (
345
+ miniviewPeerTrackNode === null &&
346
+ peer.role?.publishSettings?.allowed &&
347
+ peer.role.publishSettings.allowed.length > 0
348
+ ) {
349
+ dispatch(
350
+ setMiniViewPeerTrackNode(
351
+ createPeerTrackNode(peer, peer.videoTrack)
352
+ )
353
+ );
354
+ }
355
+ }
356
+ // If Local Tile Inset layout is disabled, then remove it if it exists
357
+ else if (miniviewPeerTrackNode) {
358
+ dispatch(setMiniViewPeerTrackNode(null));
306
359
  }
307
360
  });
308
361
 
@@ -312,6 +365,9 @@ const useHMSPeersUpdate = (
312
365
  return;
313
366
  }
314
367
  if (type === HMSPeerUpdate.ROLE_CHANGED) {
368
+ dispatch(addUpdateParticipant(peer));
369
+
370
+ // Handling regular tiles list
315
371
  if (
316
372
  peer.role?.publishSettings?.allowed === undefined ||
317
373
  (peer.role?.publishSettings?.allowed &&
@@ -324,19 +380,122 @@ const useHMSPeersUpdate = (
324
380
  return prevPeerTrackNodes;
325
381
  });
326
382
  }
383
+
384
+ const reduxState = store.getState();
385
+
386
+ // Handling screenshare tiles list
387
+ if (
388
+ peer.role?.publishSettings?.allowed === undefined ||
389
+ (peer.role?.publishSettings?.allowed &&
390
+ !peer.role?.publishSettings?.allowed.includes('screen'))
391
+ ) {
392
+ const screensharePeerTrackNodes =
393
+ reduxState.app.screensharePeerTrackNodes;
394
+ const nodeToRemove = screensharePeerTrackNodes.find(
395
+ (node) => node.peer.peerID === peer.peerID
396
+ );
397
+ if (nodeToRemove) {
398
+ dispatch(removeScreenshareTile(nodeToRemove.id));
399
+ }
400
+ }
401
+
402
+ // Handling full screen view
403
+ if (
404
+ peer.role?.publishSettings?.allowed === undefined ||
405
+ (peer.role?.publishSettings?.allowed &&
406
+ !peer.role?.publishSettings?.allowed.includes('video'))
407
+ ) {
408
+ const fullScreenPeerTrackNode =
409
+ reduxState.app.fullScreenPeerTrackNode;
410
+ if (
411
+ fullScreenPeerTrackNode !== null &&
412
+ fullScreenPeerTrackNode.peer.peerID === peer.peerID
413
+ ) {
414
+ dispatch(setFullScreenPeerTrackNode(null));
415
+ }
416
+ }
327
417
  return;
328
418
  }
329
419
  if (
330
420
  type === HMSPeerUpdate.METADATA_CHANGED ||
421
+ type === HMSPeerUpdate.HAND_RAISED_CHANGED ||
331
422
  type === HMSPeerUpdate.NAME_CHANGED ||
332
423
  type === HMSPeerUpdate.NETWORK_QUALITY_UPDATED
333
424
  ) {
425
+ dispatch(addUpdateParticipant(peer));
426
+
427
+ const reduxState = store.getState();
428
+
429
+ if (type === HMSPeerUpdate.HAND_RAISED_CHANGED) {
430
+ const handRaised = peer.isHandRaised;
431
+
432
+ if (handRaised) {
433
+ const { layoutConfig, localPeer } = reduxState.hmsStates;
434
+
435
+ const selectedLayoutConfig = selectLayoutConfigForRole(
436
+ layoutConfig,
437
+ localPeer?.role || null
438
+ );
439
+
440
+ // list of roles which should be brought on stage when they raise hand
441
+ const offStageRoles =
442
+ selectedLayoutConfig?.screens?.conferencing?.default?.elements
443
+ ?.on_stage_exp?.off_stage_roles;
444
+
445
+ // checking if the current peer role is included in the above list
446
+ const shouldBringOnStage =
447
+ offStageRoles && offStageRoles.includes(peer.role?.name!);
448
+
449
+ const canChangeRole =
450
+ reduxState.hmsStates.localPeer?.role?.permissions?.changeRole;
451
+
452
+ if (shouldBringOnStage && canChangeRole) {
453
+ dispatch(
454
+ addNotification({
455
+ id: `${peer.peerID}-${NotificationTypes.HAND_RAISE}`,
456
+ type: NotificationTypes.HAND_RAISE,
457
+ peer,
458
+ })
459
+ );
460
+ }
461
+ } else {
462
+ const notifications = reduxState.app.notifications;
463
+ const notificationToRemove = notifications.find(
464
+ (notification) =>
465
+ notification.id ===
466
+ `${peer.peerID}-${NotificationTypes.HAND_RAISE}`
467
+ );
468
+ if (notificationToRemove) {
469
+ dispatch(removeNotification(notificationToRemove.id));
470
+ }
471
+ }
472
+ }
473
+
334
474
  setPeerTrackNodes((prevPeerTrackNodes) => {
335
475
  if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
336
476
  return replacePeerTrackNodes(prevPeerTrackNodes, peer);
337
477
  }
338
478
  return prevPeerTrackNodes;
339
479
  });
480
+
481
+ // Handling screenshare tile views
482
+ const screensharePeerTrackNodes =
483
+ reduxState.app.screensharePeerTrackNodes;
484
+ const nodeToUpdate = screensharePeerTrackNodes.find(
485
+ (node) => node.peer.peerID === peer.peerID
486
+ );
487
+ if (nodeToUpdate) {
488
+ dispatch(updateScreenshareTile({ id: nodeToUpdate.id, peer }));
489
+ }
490
+
491
+ // Handling fullscreen view
492
+ const fullScreenPeerTrackNode = reduxState.app.fullScreenPeerTrackNode;
493
+ if (
494
+ fullScreenPeerTrackNode !== null &&
495
+ fullScreenPeerTrackNode.peer.peerID === peer.peerID
496
+ ) {
497
+ dispatch(updateFullScreenPeerTrackNode({ peer }));
498
+ }
340
499
  return;
341
500
  }
342
501
  };
@@ -352,12 +511,52 @@ const useHMSPeersUpdate = (
352
511
  }, [hmsInstance]);
353
512
  };
354
513
 
514
+ type PeerListUpdate = {
515
+ addedPeers: HMSPeer[];
516
+ removedPeers: HMSPeer[];
517
+ };
518
+
519
+ const useHMSPeerListUpdated = (hmsInstance: HMSSDK) => {
520
+ const dispatch = useDispatch();
521
+
522
+ useEffect(() => {
523
+ const peerListUpdateHandler = ({
524
+ addedPeers,
525
+ removedPeers,
526
+ }: PeerListUpdate) => {
527
+ batch(() => {
528
+ dispatch(addParticipants(addedPeers));
529
+ dispatch(removeParticipants(removedPeers));
530
+ });
531
+ };
532
+
533
+ hmsInstance.addEventListener(
534
+ HMSUpdateListenerActions.ON_PEER_LIST_UPDATED,
535
+ peerListUpdateHandler
536
+ );
537
+
538
+ return () => {
539
+ hmsInstance.removeEventListener(
540
+ HMSUpdateListenerActions.ON_PEER_LIST_UPDATED
541
+ );
542
+ };
543
+ }, [hmsInstance]);
544
+ };
545
+
355
546
  type TrackUpdate = {
356
547
  peer: HMSPeer;
357
548
  track: HMSTrack;
358
549
  type: HMSTrackUpdate;
359
550
  };
360
551
 
552
+ export const isPublishingAllowed = (peer: HMSPeer): boolean => {
553
+ return (
554
+ (peer.role?.publishSettings?.allowed &&
555
+ peer.role?.publishSettings?.allowed?.length > 0) ??
556
+ false
557
+ );
558
+ };
559
+
361
560
  const useHMSTrackUpdate = (
362
561
  hmsInstance: HMSSDK,
363
562
  updateLocalPeer: () => void,
@@ -369,48 +568,66 @@ const useHMSTrackUpdate = (
369
568
  useEffect(() => {
370
569
  const trackUpdateHandler = ({ peer, track, type }: TrackUpdate) => {
371
570
  const reduxState = store.getState();
571
+ const fullScreenPeerTrackNode = reduxState.app.fullScreenPeerTrackNode;
372
572
  const miniviewPeerTrackNode = reduxState.app.miniviewPeerTrackNode;
373
573
  const localPeerTrackNode = reduxState.app.localPeerTrackNode;
374
574
 
575
+ const currentLayoutConfig = selectLayoutConfigForRole(
576
+ reduxState.hmsStates.layoutConfig,
577
+ reduxState.hmsStates.localPeer?.role ?? null
578
+ );
579
+
580
+ const localTileInsetEnabled =
581
+ selectVideoTileLayoutConfig(currentLayoutConfig)?.grid
582
+ ?.enable_local_tile_inset;
583
+
375
584
  if (type === HMSTrackUpdate.TRACK_ADDED) {
376
585
  const newPeerTrackNode = createPeerTrackNode(peer, track);
377
586
 
378
- const willCreateMiniviewPeerTrackNode =
379
- !miniviewPeerTrackNode &&
380
- peer.isLocal &&
381
- track.source === HMSTrackSource.REGULAR;
587
+ if (track.source === HMSTrackSource.SCREEN) {
588
+ if (!peer.isLocal && track.type === HMSTrackType.VIDEO) {
589
+ dispatch(addScreenshareTile(newPeerTrackNode));
590
+ }
591
+ } else {
592
+ setPeerTrackNodes((prevPeerTrackNodes) => {
593
+ if (
594
+ peerTrackNodeExistForPeerAndTrack(prevPeerTrackNodes, peer, track)
595
+ ) {
596
+ if (track.type === HMSTrackType.VIDEO) {
597
+ return replacePeerTrackNodesWithTrack(
598
+ prevPeerTrackNodes,
599
+ peer,
600
+ track
601
+ );
602
+ }
603
+ return replacePeerTrackNodes(prevPeerTrackNodes, peer);
604
+ }
382
605
 
383
- setPeerTrackNodes((prevPeerTrackNodes) => {
384
- if (
385
- peerTrackNodeExistForPeerAndTrack(prevPeerTrackNodes, peer, track)
386
- ) {
387
- if (track.type === HMSTrackType.VIDEO) {
388
- return replacePeerTrackNodesWithTrack(
389
- prevPeerTrackNodes,
390
- peer,
391
- track
392
- );
606
+ if (peer.isLocal && !localTileInsetEnabled) {
607
+ return [newPeerTrackNode, ...prevPeerTrackNodes];
393
608
  }
394
- return replacePeerTrackNodes(prevPeerTrackNodes, peer);
395
- }
396
609
 
397
- if (
398
- miniviewPeerTrackNode
399
- ? newPeerTrackNode.id !== miniviewPeerTrackNode.id
400
- : !willCreateMiniviewPeerTrackNode
401
- ) {
402
- return [...prevPeerTrackNodes, newPeerTrackNode];
403
- }
610
+ if (
611
+ !peer.isLocal &&
612
+ (miniviewPeerTrackNode
613
+ ? newPeerTrackNode.id !== miniviewPeerTrackNode.id
614
+ : true)
615
+ ) {
616
+ return [...prevPeerTrackNodes, newPeerTrackNode];
617
+ }
404
618
 
405
- return prevPeerTrackNodes;
406
- });
619
+ return prevPeerTrackNodes;
620
+ });
621
+ }
407
622
 
408
623
  // - TODO: update local localPeer state
409
624
  // - Pass this updated data to Meeting component -> DisplayView component
410
625
  if (peer.isLocal) {
411
626
  if (track.source === HMSTrackSource.REGULAR) {
412
627
  if (!localPeerTrackNode) {
413
- dispatch(setLocalPeerTrackNode(newPeerTrackNode));
628
+ if (isPublishingAllowed(newPeerTrackNode.peer)) {
629
+ dispatch(setLocalPeerTrackNode(newPeerTrackNode));
630
+ }
414
631
  } else {
415
632
  dispatch(
416
633
  updateLocalPeerTrackNode(
@@ -419,18 +636,28 @@ const useHMSTrackUpdate = (
419
636
  );
420
637
  }
421
638
 
422
- // only setting `miniviewPeerTrackNode`, when:
423
- // - there is no `miniviewPeerTrackNode`
424
- // - if there is, then it is of regular track
425
- if (!miniviewPeerTrackNode) {
426
- dispatch(setMiniViewPeerTrackNode(newPeerTrackNode));
427
- } else if (miniviewPeerTrackNode.id === newPeerTrackNode.id) {
428
- dispatch(
429
- updateMiniViewPeerTrackNode(
430
- track.type === HMSTrackType.VIDEO ? { peer, track } : { peer }
431
- )
432
- );
639
+ if (localTileInsetEnabled) {
640
+ // only setting `miniviewPeerTrackNode`, when:
641
+ // - there is no `miniviewPeerTrackNode`
642
+ // - if there is, then it is of regular track
643
+ if (!miniviewPeerTrackNode) {
644
+ dispatch(setMiniViewPeerTrackNode(newPeerTrackNode));
645
+ } else if (miniviewPeerTrackNode.id === newPeerTrackNode.id) {
646
+ dispatch(
647
+ updateMiniViewPeerTrackNode(
648
+ track.type === HMSTrackType.VIDEO
649
+ ? { peer, track }
650
+ : { peer }
651
+ )
652
+ );
653
+ }
433
654
  }
655
+
656
+ // if (track.type === HMSTrackType.AUDIO) {
657
+ // dispatch(setIsLocalAudioMutedState(track.isMute()));
658
+ // } else if (track.type === HMSTrackType.VIDEO) {
659
+ // dispatch(setIsLocalVideoMutedState(track.isMute()));
660
+ // }
434
661
  }
435
662
  // else -> {
436
663
  // should `localPeerTrackNode` be created/updated for non-regular track addition?
@@ -456,8 +683,19 @@ const useHMSTrackUpdate = (
456
683
  return;
457
684
  }
458
685
  if (type === HMSTrackUpdate.TRACK_REMOVED) {
459
- if (
460
- track.source !== HMSTrackSource.REGULAR ||
686
+ if (track.source === HMSTrackSource.SCREEN) {
687
+ if (!peer.isLocal && track.type === HMSTrackType.VIDEO) {
688
+ const screensharePeerTrackNodes =
689
+ reduxState.app.screensharePeerTrackNodes;
690
+ const nodeToRemove = screensharePeerTrackNodes.find(
691
+ (node) => node.track?.trackId === track.trackId
692
+ );
693
+ if (nodeToRemove) {
694
+ dispatch(removeScreenshareTile(nodeToRemove.id));
695
+ }
696
+ }
697
+ } else if (
698
+ track.source === HMSTrackSource.PLUGIN ||
461
699
  (peer.audioTrack?.trackId === undefined &&
462
700
  peer.videoTrack?.trackId === undefined)
463
701
  ) {
@@ -466,6 +704,14 @@ const useHMSTrackUpdate = (
466
704
  );
467
705
  }
468
706
 
707
+ if (
708
+ fullScreenPeerTrackNode &&
709
+ fullScreenPeerTrackNode.track &&
710
+ fullScreenPeerTrackNode.track.trackId === track.trackId
711
+ ) {
712
+ dispatch(setFullScreenPeerTrackNode(null));
713
+ }
714
+
469
715
  // - TODO: update local localPeer state
470
716
  // - Pass this updated data to Meeting component -> DisplayView component
471
717
  if (peer.isLocal) {
@@ -552,48 +798,67 @@ const useHMSTrackUpdate = (
552
798
 
553
799
  // - TODO: update local localPeer state
554
800
  // - Pass this updated data to Meeting component -> DisplayView component
555
- if (peer.isLocal) {
556
- const updatePayload =
557
- track.type === HMSTrackType.VIDEO ? { peer, track } : { peer };
801
+ const updatePayload =
802
+ track.type === HMSTrackType.VIDEO ? { peer, track } : { peer };
558
803
 
804
+ if (peer.isLocal) {
559
805
  dispatch(updateLocalPeerTrackNode(updatePayload));
560
-
561
- // Take care of miniviewPeerTrackNode
562
- if (miniviewPeerTrackNode && miniviewPeerTrackNode.id === uniqueId) {
563
- dispatch(updateMiniViewPeerTrackNode(updatePayload));
564
- }
565
-
566
806
  updateLocalPeer();
567
- } else {
568
- if (miniviewPeerTrackNode && miniviewPeerTrackNode.id === uniqueId) {
569
- const updatePayload =
570
- track.type === HMSTrackType.VIDEO ? { peer, track } : { peer };
807
+ }
571
808
 
572
- dispatch(updateMiniViewPeerTrackNode(updatePayload));
573
- }
809
+ if (miniviewPeerTrackNode && miniviewPeerTrackNode.id === uniqueId) {
810
+ dispatch(updateMiniViewPeerTrackNode(updatePayload));
574
811
  }
812
+
813
+ if (
814
+ fullScreenPeerTrackNode &&
815
+ fullScreenPeerTrackNode.id === uniqueId
816
+ ) {
817
+ dispatch(updateFullScreenPeerTrackNode(updatePayload));
818
+ }
819
+
575
820
  return;
576
821
  }
577
822
  if (
578
823
  type === HMSTrackUpdate.TRACK_RESTORED ||
579
824
  type === HMSTrackUpdate.TRACK_DEGRADED
580
825
  ) {
581
- setPeerTrackNodes((prevPeerTrackNodes) => {
582
- if (
583
- peerTrackNodeExistForPeerAndTrack(prevPeerTrackNodes, peer, track)
584
- ) {
585
- return degradeOrRestorePeerTrackNodes(
586
- prevPeerTrackNodes,
587
- peer,
588
- track,
589
- type === HMSTrackUpdate.TRACK_DEGRADED
826
+ // Checking if track source is screenshare
827
+ if (track.source === HMSTrackSource.SCREEN) {
828
+ // Handling screenshare tiles list
829
+ const screensharePeerTrackNodes =
830
+ reduxState.app.screensharePeerTrackNodes;
831
+ const nodeToUpdate = screensharePeerTrackNodes.find(
832
+ (node) => node.track?.trackId === track.trackId
833
+ );
834
+ if (nodeToUpdate) {
835
+ dispatch(
836
+ updateScreenshareTile({
837
+ id: nodeToUpdate.id,
838
+ isDegraded: type === HMSTrackUpdate.TRACK_DEGRADED,
839
+ })
590
840
  );
591
841
  }
592
- return prevPeerTrackNodes;
593
- });
842
+ } else {
843
+ // Handling regular tiles list
844
+ setPeerTrackNodes((prevPeerTrackNodes) => {
845
+ if (
846
+ peerTrackNodeExistForPeerAndTrack(prevPeerTrackNodes, peer, track)
847
+ ) {
848
+ return degradeOrRestorePeerTrackNodes(
849
+ prevPeerTrackNodes,
850
+ peer,
851
+ track,
852
+ type === HMSTrackUpdate.TRACK_DEGRADED
853
+ );
854
+ }
855
+ return prevPeerTrackNodes;
856
+ });
857
+ }
594
858
 
595
859
  const uniqueId = createPeerTrackNodeUniqueId(peer, track);
596
860
 
861
+ // Handling miniview
597
862
  if (miniviewPeerTrackNode && miniviewPeerTrackNode.id === uniqueId) {
598
863
  dispatch(
599
864
  updateMiniViewPeerTrackNode({
@@ -601,6 +866,18 @@ const useHMSTrackUpdate = (
601
866
  })
602
867
  );
603
868
  }
869
+
870
+ // Handling full screen view
871
+ if (
872
+ fullScreenPeerTrackNode &&
873
+ fullScreenPeerTrackNode.id === uniqueId
874
+ ) {
875
+ dispatch(
876
+ updateFullScreenPeerTrackNode({
877
+ isDegraded: type === HMSTrackUpdate.TRACK_DEGRADED,
878
+ })
879
+ );
880
+ }
604
881
  return;
605
882
  }
606
883
  };
@@ -651,9 +928,14 @@ export const useHMSInstance = () => {
651
928
  };
652
929
 
653
930
  export const useIsHLSViewer = () => {
654
- return useSelector((state: RootState) =>
655
- selectIsHLSViewer(state.hmsStates.localPeer)
656
- );
931
+ return useSelector((state: RootState) => {
932
+ const { layoutConfig, localPeer } = state.hmsStates;
933
+ const selectedLayoutConfig = selectLayoutConfigForRole(
934
+ layoutConfig,
935
+ localPeer?.role || null
936
+ );
937
+ return selectIsHLSViewer(localPeer?.role, selectedLayoutConfig);
938
+ });
657
939
  };
658
940
 
659
941
  type TrackStateChangeRequest = {
@@ -702,26 +984,20 @@ export const useHMSChangeTrackStateRequest = (
702
984
  return trackStateChangeRequest;
703
985
  };
704
986
 
705
- type RoleChangeRequest = {
706
- requestedBy?: string;
707
- suggestedRole?: string;
708
- };
709
-
710
987
  export const useHMSRoleChangeRequest = (
711
988
  callback?: (request: HMSRoleChangeRequest) => void,
712
989
  deps?: React.DependencyList
713
990
  ) => {
991
+ const taskRef = useRef<any>(null);
992
+ const dispatch = useDispatch();
714
993
  const hmsInstance = useHMSInstance();
715
- const [roleChangeRequest, setRoleChangeRequest] =
716
- useState<RoleChangeRequest | null>(null);
717
994
 
718
995
  useEffect(() => {
719
- const changeRoleRequestHandler = (request: HMSRoleChangeRequest) => {
720
- setRoleChangeRequest({
721
- requestedBy: request?.requestedBy?.name,
722
- suggestedRole: request?.suggestedRole?.name,
996
+ const changeRoleRequestHandler = async (request: HMSRoleChangeRequest) => {
997
+ taskRef.current = InteractionManager.runAfterInteractions(() => {
998
+ dispatch(setRoleChangeRequest(request));
999
+ callback?.(request);
723
1000
  });
724
- callback?.(request);
725
1001
  };
726
1002
 
727
1003
  hmsInstance.addEventListener(
@@ -730,13 +1006,12 @@ export const useHMSRoleChangeRequest = (
730
1006
  );
731
1007
 
732
1008
  return () => {
1009
+ taskRef.current?.cancel();
733
1010
  hmsInstance.removeEventListener(
734
1011
  HMSUpdateListenerActions.ON_ROLE_CHANGE_REQUEST
735
1012
  );
736
1013
  };
737
1014
  }, [...(deps || []), hmsInstance]);
738
-
739
- return roleChangeRequest;
740
1015
  };
741
1016
 
742
1017
  type SessionStoreListeners = Array<{ remove: () => void }>;
@@ -762,7 +1037,7 @@ export const useHMSSessionStoreListeners = (
762
1037
  dispatch(saveUserData({ spotlightTrackId: id }));
763
1038
  // Scroll to start of the list
764
1039
  gridViewRef.current
765
- ?.getFlatlistRef()
1040
+ ?.getRegularTilesFlatlistRef()
766
1041
  .current?.scrollToOffset({ animated: true, offset: 0 });
767
1042
  };
768
1043
 
@@ -917,10 +1192,31 @@ export const useHMSSessionStore = () => {
917
1192
  export const useHMSMessages = () => {
918
1193
  const hmsInstance = useHMSInstance();
919
1194
  const dispatch = useDispatch();
1195
+ const canChangeRole = useSelector(
1196
+ (state: RootState) =>
1197
+ state.hmsStates.localPeer?.role?.permissions?.changeRole
1198
+ );
1199
+ const canShowChat = useHMSConferencingScreenConfig(
1200
+ (conferencingScreenConfig) => !!conferencingScreenConfig?.elements?.chat
1201
+ );
920
1202
 
921
1203
  useEffect(() => {
922
1204
  const onMessageListener = (message: HMSMessage) => {
923
- dispatch(addMessage(message));
1205
+ if (message.type === NotificationTypes.ROLE_CHANGE_DECLINED) {
1206
+ if (canChangeRole) {
1207
+ dispatch(
1208
+ addNotification({
1209
+ id: `${message.sender?.peerID}-${NotificationTypes.ROLE_CHANGE_DECLINED}`,
1210
+ type: NotificationTypes.ROLE_CHANGE_DECLINED,
1211
+ peer: message.sender!,
1212
+ })
1213
+ );
1214
+ }
1215
+ } else if (message.type === 'EMOJI_REACTION') {
1216
+ console.log('Ignoring Emoji Reaction Message: ', message);
1217
+ } else if (canShowChat) {
1218
+ dispatch(addMessage(message));
1219
+ }
924
1220
  };
925
1221
 
926
1222
  hmsInstance.addEventListener(
@@ -932,12 +1228,38 @@ export const useHMSMessages = () => {
932
1228
  // TODO: Remove this listener when user leaves, removed or room is ended
933
1229
  hmsInstance.removeEventListener(HMSUpdateListenerActions.ON_MESSAGE);
934
1230
  };
1231
+ }, [canChangeRole, canShowChat, hmsInstance]);
1232
+ };
1233
+
1234
+ export const useHMSReconnection = () => {
1235
+ const dispatch = useDispatch();
1236
+ const hmsInstance = useHMSInstance();
1237
+
1238
+ useEffect(() => {
1239
+ let mounted = true;
1240
+
1241
+ hmsInstance.addEventListener(HMSUpdateListenerActions.RECONNECTING, () => {
1242
+ if (mounted) {
1243
+ dispatch(setReconnecting(true));
1244
+ }
1245
+ });
1246
+ hmsInstance.addEventListener(HMSUpdateListenerActions.RECONNECTED, () => {
1247
+ if (mounted) {
1248
+ dispatch(setReconnecting(false));
1249
+ }
1250
+ });
1251
+
1252
+ return () => {
1253
+ mounted = false;
1254
+ hmsInstance.removeEventListener(HMSUpdateListenerActions.RECONNECTING);
1255
+ hmsInstance.removeEventListener(HMSUpdateListenerActions.RECONNECTED);
1256
+ };
935
1257
  }, [hmsInstance]);
936
1258
  };
937
1259
 
938
1260
  export const useHMSPIPRoomLeave = () => {
939
1261
  const hmsInstance = useHMSInstance();
940
- const { destroy } = useLeaveMethods();
1262
+ const { destroy } = useLeaveMethods(true);
941
1263
 
942
1264
  useEffect(() => {
943
1265
  const pipRoomLeaveHandler = () => {
@@ -957,7 +1279,7 @@ export const useHMSPIPRoomLeave = () => {
957
1279
 
958
1280
  export const useHMSRemovedFromRoomUpdate = () => {
959
1281
  const hmsInstance = useHMSInstance();
960
- const { destroy } = useLeaveMethods();
1282
+ const { destroy } = useLeaveMethods(true);
961
1283
 
962
1284
  useEffect(() => {
963
1285
  const removedFromRoomHandler = () => {
@@ -985,20 +1307,27 @@ export const usePIPListener = () => {
985
1307
  );
986
1308
 
987
1309
  useEffect(() => {
988
- if (isPipModeActive) {
989
- const appStateListener = () => {
990
- LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);
991
- dispatch(changePipModeStatus(PipModes.INACTIVE));
992
- };
1310
+ const pipModeChangedHandler = (data: {
1311
+ isInPictureInPictureMode: boolean;
1312
+ }) => {
1313
+ dispatch(
1314
+ changePipModeStatus(
1315
+ data.isInPictureInPictureMode ? PipModes.ACTIVE : PipModes.INACTIVE
1316
+ )
1317
+ );
1318
+ };
993
1319
 
994
- AppState.addEventListener('focus', appStateListener);
1320
+ hmsInstance.addEventListener(
1321
+ HMSPIPListenerActions.ON_PIP_MODE_CHANGED,
1322
+ pipModeChangedHandler
1323
+ );
995
1324
 
996
- return () => {
997
- AppState.removeEventListener('focus', appStateListener);
998
- dispatch(changePipModeStatus(PipModes.INACTIVE));
999
- };
1000
- }
1001
- }, [isPipModeActive]);
1325
+ return () => {
1326
+ hmsInstance.removeEventListener(
1327
+ HMSPIPListenerActions.ON_PIP_MODE_CHANGED
1328
+ );
1329
+ };
1330
+ }, []);
1002
1331
 
1003
1332
  // Check if PIP is supported or not
1004
1333
  useEffect(() => {
@@ -1036,6 +1365,7 @@ export const useHMSActiveSpeakerUpdates = (
1036
1365
  active?: boolean
1037
1366
  ) => {
1038
1367
  const hmsInstance = useHMSInstance();
1368
+ const dispatch = useDispatch();
1039
1369
  const reduxStore = useStore<RootState>();
1040
1370
  const isPortraitOrientation = useIsPortraitOrientation();
1041
1371
 
@@ -1045,6 +1375,8 @@ export const useHMSActiveSpeakerUpdates = (
1045
1375
  }
1046
1376
 
1047
1377
  const handleActiveSpeaker = (data: HMSSpeaker[]) => {
1378
+ dispatch(setActiveSpeakers(data));
1379
+
1048
1380
  const activePage = reduxStore.getState().app.gridViewActivePage;
1049
1381
  if (activePage !== 0) {
1050
1382
  return;
@@ -1192,12 +1524,9 @@ export const useShowLandscapeLayout = () => {
1192
1524
  const localPeerRoleName = useSelector(
1193
1525
  (state: RootState) => state.hmsStates.localPeer?.role?.name
1194
1526
  );
1527
+ const isHLSViewer = useIsHLSViewer();
1195
1528
 
1196
- return (
1197
- isLandscapeOrientation &&
1198
- !!localPeerRoleName &&
1199
- localPeerRoleName.includes('hls-')
1200
- );
1529
+ return isLandscapeOrientation && !!localPeerRoleName && isHLSViewer;
1201
1530
  };
1202
1531
 
1203
1532
  let hmsConfig: HMSConfig | null = null;
@@ -1227,7 +1556,7 @@ export const useHMSConfig = () => {
1227
1556
  const roomLayout = await getRoomLayout(
1228
1557
  hmsInstance,
1229
1558
  token,
1230
- 'https://api-nonprod.100ms.live'
1559
+ storeState.user.endPoints?.layout
1231
1560
  );
1232
1561
  dispatch(setLayoutConfig(roomLayout));
1233
1562
  } catch (error) {
@@ -1239,7 +1568,6 @@ export const useHMSConfig = () => {
1239
1568
  username: storeState.user.userName,
1240
1569
  captureNetworkQualityInPreview: true,
1241
1570
  endpoint: storeState.user.endPoints?.init,
1242
- // metadata: JSON.stringify({isHandRaised: true}), // To join with hand raised
1243
1571
  });
1244
1572
 
1245
1573
  return hmsConfig;
@@ -1259,137 +1587,296 @@ export const useHMSConfig = () => {
1259
1587
  return { clearConfig, updateConfig, getConfig };
1260
1588
  };
1261
1589
 
1262
- export const useSafeDimensions = () => {
1263
- const { height, width } = useSafeAreaFrame();
1264
- const safeAreaInsets = useSafeAreaInsets();
1590
+ export const useShowChatAndParticipants = () => {
1591
+ const dispatch = useDispatch();
1592
+ const { modalVisibleType, handleModalVisibleType: setModalVisible } =
1593
+ useModalType();
1265
1594
 
1266
- return {
1267
- safeWidth: width - safeAreaInsets.left - safeAreaInsets.right,
1268
- safeHeight: height - safeAreaInsets.top - safeAreaInsets.bottom,
1269
- };
1270
- };
1595
+ const overlayChatLayout = useHMSChatLayoutConfig(
1596
+ (chatConfig) => chatConfig?.is_overlay
1597
+ );
1598
+ const canShowChat = useHMSConferencingScreenConfig(
1599
+ (conferencingScreenConfig) => !!conferencingScreenConfig?.elements?.chat
1600
+ );
1601
+ const canShowParticipants = useHMSConferencingScreenConfig(
1602
+ (conferencingScreenConfig) =>
1603
+ !!conferencingScreenConfig?.elements?.participant_list
1604
+ );
1271
1605
 
1272
- export const useShowChat = (): [
1273
- 'none' | 'inset' | 'modal',
1274
- (show: boolean) => void,
1275
- ] => {
1276
- const dispatch = useDispatch();
1277
- const isHLSViewer = useIsHLSViewer();
1278
- const showChatView = useSelector(
1606
+ // state for inset chat view
1607
+ const overlayChatVisible = useSelector(
1279
1608
  (state: RootState) => state.chatWindow.showChatView
1280
1609
  );
1281
- const hlsAspectRatio = useSelector(
1282
- (state: RootState) => state.app.hlsAspectRatio
1283
- );
1284
- const chatVisible: 'none' | 'inset' | 'modal' = useMemo(() => {
1285
- if (!showChatView) return 'none';
1286
1610
 
1287
- if (isHLSViewer && ['16:9', '4:3'].includes(hlsAspectRatio.id))
1288
- return 'inset';
1611
+ const modalVisible = modalVisibleType === ModalTypes.CHAT_AND_PARTICIPANTS;
1289
1612
 
1290
- // TODO: handle case when type modal is selected, but chat modal is not shown because aspect ration modal was just closed
1291
- return 'modal';
1292
- }, [showChatView, hlsAspectRatio.id, isHLSViewer]);
1613
+ const show = useCallback(
1614
+ (view: 'chat' | 'participants') => {
1615
+ // Handle Showing Chat View/Modal
1616
+ if (view === 'chat') {
1617
+ if (!canShowChat) return;
1293
1618
 
1294
- const isChatVisibleInsetType = chatVisible === 'inset';
1619
+ if (overlayChatLayout) {
1620
+ dispatch({ type: 'SET_SHOW_CHAT_VIEW', showChatView: true });
1621
+ } else {
1622
+ batch(() => {
1623
+ dispatch({ type: 'SET_SHOW_CHAT_VIEW', showChatView: false });
1624
+ dispatch(setActiveChatBottomSheetTab('Chat'));
1625
+ });
1626
+ setModalVisible(ModalTypes.CHAT_AND_PARTICIPANTS);
1627
+ }
1628
+ }
1629
+ // Handle Showing Participant
1630
+ else if (canShowParticipants) {
1631
+ dispatch(setActiveChatBottomSheetTab('Participants'));
1632
+ setModalVisible(ModalTypes.CHAT_AND_PARTICIPANTS);
1633
+ }
1634
+ },
1635
+ [overlayChatLayout, canShowChat, canShowParticipants, setModalVisible]
1636
+ );
1295
1637
 
1296
- const showChat = useCallback(
1297
- (show: boolean) => {
1298
- if (isChatVisibleInsetType) {
1299
- LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);
1638
+ const hide = useCallback(
1639
+ (view: 'chat_overlay' | 'modal') => {
1640
+ if (view === 'chat_overlay') {
1641
+ dispatch({ type: 'SET_SHOW_CHAT_VIEW', showChatView: false });
1642
+ } else {
1643
+ setModalVisible(ModalTypes.DEFAULT);
1300
1644
  }
1301
- dispatch({ type: 'SET_SHOW_CHAT_VIEW', showChatView: show });
1302
1645
  },
1303
- [isChatVisibleInsetType]
1646
+ [overlayChatLayout, setModalVisible]
1304
1647
  );
1305
1648
 
1306
- return [chatVisible, showChat];
1649
+ return {
1650
+ overlayChatVisible,
1651
+ modalVisible,
1652
+ overlayChatLayout,
1653
+ canShowChat,
1654
+ canShowParticipants,
1655
+ show,
1656
+ hide,
1657
+ };
1307
1658
  };
1308
1659
 
1309
1660
  export const usePortraitChatViewVisible = () => {
1310
- const [chatVisible] = useShowChat();
1661
+ const { overlayChatVisible } = useShowChatAndParticipants();
1311
1662
  const pipModeNotActive = useSelector(
1312
1663
  (state: RootState) => state.app.pipModeStatus !== PipModes.ACTIVE
1313
1664
  );
1314
1665
  const isPortraitOrientation = useIsPortraitOrientation();
1315
1666
 
1316
- return pipModeNotActive && isPortraitOrientation && chatVisible === 'inset';
1667
+ return pipModeNotActive && isPortraitOrientation && overlayChatVisible;
1317
1668
  };
1318
1669
 
1319
1670
  export const useLandscapeChatViewVisible = () => {
1320
- const [chatVisible] = useShowChat();
1671
+ const { overlayChatVisible } = useShowChatAndParticipants();
1321
1672
  const pipModeNotActive = useSelector(
1322
1673
  (state: RootState) => state.app.pipModeStatus !== PipModes.ACTIVE
1323
1674
  );
1324
1675
  const isLandscapeOrientation = useIsLandscapeOrientation();
1325
1676
 
1326
- return pipModeNotActive && isLandscapeOrientation && chatVisible === 'inset';
1677
+ return pipModeNotActive && isLandscapeOrientation && overlayChatVisible;
1327
1678
  };
1328
1679
 
1329
- export const useFilteredParticipants = () => {
1680
+ export type ParticipantAccordianData = {
1681
+ id: string;
1682
+ label: string;
1683
+ showViewAll: boolean;
1684
+ data: (HMSPeer | HMSLocalPeer)[];
1685
+ };
1686
+
1687
+ export const useOffStageParticipants = () => {
1688
+ const dispatch = useDispatch();
1330
1689
  const hmsInstance = useHMSInstance();
1331
- const localPeer = useSelector(
1332
- (state: RootState) => state.hmsStates.localPeer
1333
- );
1334
- const [filter, setFilter] = useState('everyone');
1335
- const [participantsSearchInput, setParticipantsSearchInput] = useState('');
1336
- const [hmsPeers, setHmsPeers] = useState<(HMSLocalPeer | HMSRemotePeer)[]>(
1337
- localPeer ? [localPeer] : []
1690
+ const offStageRoles = useHMSLayoutConfig(
1691
+ (layoutConfig) =>
1692
+ layoutConfig?.screens?.conferencing?.default?.elements?.on_stage_exp
1693
+ ?.off_stage_roles || null
1338
1694
  );
1339
1695
 
1340
- const filteredPeerTrackNodes = useMemo(() => {
1341
- const newFilteredPeerTrackNodes = hmsPeers?.filter((peer) => {
1342
- if (
1343
- participantsSearchInput.length < 1 ||
1344
- peer.name.includes(participantsSearchInput) ||
1345
- peer.role?.name?.includes(participantsSearchInput)
1346
- ) {
1347
- return true;
1348
- }
1349
- return false;
1350
- });
1696
+ const [participantsTotalCounts, setParticipantsTotalCounts] = useState<
1697
+ Record<string, number>
1698
+ >({});
1351
1699
 
1352
- if (filter === 'everyone') {
1353
- return newFilteredPeerTrackNodes;
1354
- }
1700
+ useEffect(() => {
1701
+ if (offStageRoles) {
1702
+ let mounted = true;
1355
1703
 
1356
- if (filter === 'raised hand') {
1357
- return newFilteredPeerTrackNodes.filter((peer) => {
1358
- const parsedMetaData = parseMetadata(peer.metadata);
1359
- return parsedMetaData.isHandRaised === true;
1360
- });
1704
+ const createIterator = async (forRole: string) => {
1705
+ const iterator = hmsInstance.getPeerListIterator({
1706
+ byRoleName: forRole,
1707
+ limit: 10,
1708
+ });
1709
+ const participants = await iterator.next();
1710
+ if (mounted) {
1711
+ dispatch(replaceParticipantsList(participants, forRole));
1712
+ setParticipantsTotalCounts((prev) => ({
1713
+ ...prev,
1714
+ [forRole]: iterator.totalCount,
1715
+ }));
1716
+ }
1717
+ };
1718
+
1719
+ const createIteratorForRoles = () => {
1720
+ offStageRoles.forEach((role) => {
1721
+ createIterator(role);
1722
+ });
1723
+ };
1724
+
1725
+ createIteratorForRoles();
1726
+
1727
+ const intervalId = setInterval(() => {
1728
+ createIteratorForRoles();
1729
+ }, PeerListRefreshInterval);
1730
+
1731
+ return () => {
1732
+ mounted = false;
1733
+ clearInterval(intervalId);
1734
+ };
1361
1735
  }
1736
+ }, [offStageRoles]);
1362
1737
 
1363
- return newFilteredPeerTrackNodes.filter(
1364
- (peer) => peer.role?.name === filter
1365
- );
1366
- }, [participantsSearchInput, filter, hmsPeers]);
1738
+ return participantsTotalCounts;
1739
+ };
1367
1740
 
1368
- useEffect(() => {
1369
- let ignore = false;
1741
+ export const useFilteredParticipants = (filterText: string) => {
1742
+ const roles = useSelector((state: RootState) => state.hmsStates.roles);
1743
+ const onStageRole = useHMSLayoutConfig(
1744
+ (layoutConfig) =>
1745
+ layoutConfig?.screens?.conferencing?.default?.elements?.on_stage_exp
1746
+ ?.on_stage_role || null
1747
+ );
1748
+
1749
+ const offStageParticipantsTotalCounts = useOffStageParticipants();
1750
+
1751
+ const formattedSearchText = filterText.trim().toLowerCase();
1752
+
1753
+ const groupedParticipants = useSelector(
1754
+ (state: RootState) => state.hmsStates.groupedParticipants
1755
+ );
1756
+
1757
+ const sortedRoles = useMemo(
1758
+ () => {
1759
+ return roles
1760
+ .filter((role) => {
1761
+ if (!role.name || role.name.startsWith('_')) {
1762
+ return false;
1763
+ }
1764
+ return true;
1765
+
1766
+ // const list = groupedParticipants[role.name!];
1767
+
1768
+ // return list && list.length > 0;
1769
+ })
1770
+ .sort((a, b) => {
1771
+ if (onStageRole) {
1772
+ if (a.name === onStageRole && b.name === onStageRole) {
1773
+ return 0;
1774
+ }
1775
+
1776
+ if (a.name === onStageRole) {
1777
+ return -1;
1778
+ }
1370
1779
 
1371
- hmsInstance.getRemotePeers().then((peers) => {
1372
- if (localPeer) {
1373
- InteractionManager.runAfterInteractions(() => {
1374
- if (!ignore) {
1375
- setHmsPeers([localPeer, ...peers]);
1780
+ if (b.name === onStageRole) {
1781
+ return 1;
1782
+ }
1376
1783
  }
1784
+
1785
+ const canAPublish: boolean =
1786
+ (a.publishSettings?.allowed &&
1787
+ a.publishSettings.allowed.length > 0) ??
1788
+ false;
1789
+ const canBPublish: boolean =
1790
+ (b.publishSettings?.allowed &&
1791
+ b.publishSettings.allowed.length > 0) ??
1792
+ false;
1793
+
1794
+ if (canAPublish && canBPublish) {
1795
+ return 0;
1796
+ }
1797
+
1798
+ if (canAPublish) {
1799
+ return -1;
1800
+ }
1801
+
1802
+ return 1;
1803
+ });
1804
+ },
1805
+ // [groupedParticipants, onStageRole, roles]
1806
+ [onStageRole, roles]
1807
+ );
1808
+
1809
+ const participantsAccordianData: ParticipantAccordianData[] = useMemo(() => {
1810
+ const t = [];
1811
+
1812
+ const filteredHandRaisedPeers: (HMSPeer | HMSLocalPeer)[][] = [];
1813
+
1814
+ sortedRoles.forEach((role) => {
1815
+ const list = groupedParticipants[role.name!];
1816
+ const filteredList =
1817
+ Array.isArray(list) && formattedSearchText.length > 0
1818
+ ? list.filter((peer) =>
1819
+ peer.name.toLowerCase().includes(formattedSearchText)
1820
+ )
1821
+ : list;
1822
+
1823
+ if (Array.isArray(filteredList) && filteredList.length > 0) {
1824
+
1825
+ filteredHandRaisedPeers.push(filteredList);
1826
+ const offStageRoleTotalCount =
1827
+ offStageParticipantsTotalCounts[role.name!];
1828
+
1829
+ const firstTen = filteredList.slice(0, 10);
1830
+
1831
+ t.push({
1832
+ id: role.name!,
1833
+ label: `${role.name!} (${
1834
+ typeof offStageRoleTotalCount === 'number'
1835
+ ? offStageRoleTotalCount
1836
+ : filteredList.length
1837
+ })`,
1838
+ showViewAll:
1839
+ typeof offStageRoleTotalCount === 'number' &&
1840
+ formattedSearchText.length <= 0
1841
+ ? offStageRoleTotalCount > 10
1842
+ : filteredList.length > 10,
1843
+ data: firstTen,
1377
1844
  });
1378
1845
  }
1379
1846
  });
1380
1847
 
1381
- return () => {
1382
- ignore = true;
1383
- };
1384
- }, [localPeer, hmsInstance]);
1848
+ const handRaisedParticipants = filteredHandRaisedPeers
1849
+ .flat()
1850
+ .filter((participant) => participant.isHandRaised);
1851
+
1852
+ const firstTenHandRaisedParticipants = handRaisedParticipants.slice(0, 10);
1853
+
1854
+ if (handRaisedParticipants.length > 0) {
1855
+ t.unshift({
1856
+ id: 'hand-raised',
1857
+ label: `Hand Raised (${handRaisedParticipants.length})`,
1858
+ showViewAll: handRaisedParticipants.length > 10,
1859
+ data: firstTenHandRaisedParticipants,
1860
+ });
1861
+ }
1862
+
1863
+ return t;
1864
+ }, [
1865
+ formattedSearchText,
1866
+ groupedParticipants,
1867
+ offStageParticipantsTotalCounts,
1868
+ sortedRoles,
1869
+ ]);
1870
+
1871
+ const [expandedGroup, setExpandedGroup] = useState<string | null>(
1872
+ participantsAccordianData[0]?.id ?? null
1873
+ );
1385
1874
 
1386
1875
  return {
1387
- allParticipants: hmsPeers,
1388
- filteredParticipants: filteredPeerTrackNodes,
1389
- selectedFilter: filter,
1390
- changeFilter: setFilter,
1391
- searchText: participantsSearchInput,
1392
- setSearchText: setParticipantsSearchInput,
1876
+ data: participantsAccordianData,
1877
+ formattedSearchText,
1878
+ expandedGroup,
1879
+ setExpandedGroup,
1393
1880
  };
1394
1881
  };
1395
1882
 
@@ -1399,15 +1886,15 @@ export const useShouldGoLive = () => {
1399
1886
  return shouldGoLive;
1400
1887
  };
1401
1888
 
1402
- export const useLeaveMethods = () => {
1889
+ export const useLeaveMethods = (isUnmounted: boolean) => {
1403
1890
  const navigation = useContext(NavigationContext);
1404
1891
  const hmsInstance = useHMSInstance();
1405
1892
  const dispatch = useDispatch();
1406
1893
  const reduxStore = useStore<RootState>();
1407
1894
 
1408
- const destroy = useCallback(async () => {
1895
+ const destroy = useCallback(() => {
1409
1896
  try {
1410
- const s = await hmsInstance.destroy();
1897
+ const s = hmsInstance.destroy();
1411
1898
  console.log('Destroy Success: ', s);
1412
1899
  // TODOS:
1413
1900
  // - If show `Meeting_Ended` is true, show Meeting screen by setting state to MEETING_ENDED
@@ -1434,11 +1921,10 @@ export const useLeaveMethods = () => {
1434
1921
  if (typeof onLeave === 'function') {
1435
1922
  onLeave();
1436
1923
  dispatch(clearStore());
1437
- } else if (navigation && navigation.canGoBack()) {
1924
+ } else if (navigation && navigation.canGoBack() && !isUnmounted) {
1438
1925
  navigation.goBack();
1439
1926
  dispatch(clearStore());
1440
1927
  } else {
1441
- // TODO: call onLeave Callback if provided
1442
1928
  // Otherwise default action is to show "Meeting Ended" screen
1443
1929
  dispatch(clearStore()); // TODO: We need different clearStore for MeetingEnded
1444
1930
  dispatch(changeMeetingState(MeetingState.MEETING_ENDED));
@@ -1454,16 +1940,24 @@ export const useLeaveMethods = () => {
1454
1940
  }
1455
1941
  }, [hmsInstance]);
1456
1942
 
1457
- const leave = useCallback(async () => {
1458
- try {
1459
- const d = await hmsInstance.leave();
1460
- console.log('Leave Success: ', d);
1461
- await destroy();
1462
- } catch (e) {
1463
- console.log(`Leave Room Error: ${e}`);
1464
- Toast.showWithGravity(`Leave Room Error: ${e}`, Toast.LONG, Toast.TOP);
1465
- }
1466
- }, [destroy, hmsInstance]);
1943
+ const leave = useCallback(
1944
+ async (shouldEndStream: boolean = false) => {
1945
+ if (shouldEndStream) {
1946
+ hmsInstance.stopHLSStreaming().catch((error) => {
1947
+ console.log('Stop HLS Streaming Error: ', error);
1948
+ });
1949
+ }
1950
+ try {
1951
+ const d = await hmsInstance.leave();
1952
+ console.log('Leave Success: ', d);
1953
+ await destroy();
1954
+ } catch (e) {
1955
+ console.log(`Leave Room Error: ${e}`);
1956
+ Toast.showWithGravity(`Leave Room Error: ${e}`, Toast.LONG, Toast.TOP);
1957
+ }
1958
+ },
1959
+ [destroy, hmsInstance]
1960
+ );
1467
1961
 
1468
1962
  const goToPreview = useCallback(async () => {
1469
1963
  try {
@@ -1492,21 +1986,32 @@ export const useLeaveMethods = () => {
1492
1986
  return { destroy, leave, endRoom, goToPreview };
1493
1987
  };
1494
1988
 
1495
- export const useHMSLayoutConfig = () => {
1496
- return useSelector((state: RootState) => state.hmsStates.layoutConfig);
1989
+ // Returns layout config as it is returned from server
1990
+ export const useHMSLayoutConfig = <Selected = unknown>(
1991
+ selector: (layoutConfig: Layout | null) => Selected,
1992
+ equalityFn?: (left: Selected, right: Selected) => boolean
1993
+ ): Selected => {
1994
+ return useSelector((state: RootState) => {
1995
+ return selector(
1996
+ selectLayoutConfigForRole(
1997
+ state.hmsStates.layoutConfig,
1998
+ state.hmsStates.localPeer?.role || null
1999
+ )
2000
+ );
2001
+ }, equalityFn);
1497
2002
  };
1498
2003
 
1499
- export const useHMSRoomTheme = <S>(
1500
- selector?: (theme: Required<Theme>) => S
1501
- ): Required<Theme> | S => {
1502
- return useSelector((state: RootState) => {
1503
- const layoutConfig = state.hmsStates.layoutConfig;
2004
+ type ThemeWithPalette = Theme & { palette: ColorPalette };
1504
2005
 
1505
- const roomTheme = layoutConfig?.themes.find((theme) => theme.default);
2006
+ export const useHMSRoomTheme = <S>(
2007
+ selector?: (theme: ThemeWithPalette) => S
2008
+ ): ThemeWithPalette | S => {
2009
+ return useHMSLayoutConfig((layoutConfig) => {
2010
+ const roomTheme = layoutConfig?.themes?.find((theme) => theme.default);
1506
2011
 
1507
- const defaultTheme: Required<Theme> = roomTheme
2012
+ const defaultTheme: ThemeWithPalette = roomTheme
1508
2013
  ? roomTheme.palette
1509
- ? (roomTheme as Required<Theme>)
2014
+ ? (roomTheme as ThemeWithPalette)
1510
2015
  : { ...roomTheme, palette: DEFAULT_THEME.palette }
1511
2016
  : DEFAULT_THEME;
1512
2017
 
@@ -1522,10 +2027,8 @@ export const useHMSRoomColorPalette = (): ColorPalette => {
1522
2027
  return useHMSRoomTheme((theme) => theme.palette) as ColorPalette;
1523
2028
  };
1524
2029
 
1525
- export const useHMSRoomTypography = (): Typography => {
1526
- return useSelector((state: RootState) => {
1527
- const layoutConfig = state.hmsStates.layoutConfig;
1528
-
2030
+ export const useHMSRoomTypography = (): Required<Typography> => {
2031
+ return useHMSLayoutConfig((layoutConfig) => {
1529
2032
  const typography = layoutConfig?.typography;
1530
2033
 
1531
2034
  if (!typography) {
@@ -1539,17 +2042,20 @@ export const useHMSRoomTypography = (): Typography => {
1539
2042
  };
1540
2043
  }
1541
2044
 
1542
- return typography;
2045
+ // formatting font family name
2046
+ typography.font_family = typography.font_family.replace(/ /g, '');
2047
+
2048
+ return typography as Required<Typography>;
1543
2049
  }, shallowEqual);
1544
2050
  };
1545
2051
 
1546
2052
  export const useHMSRoomStyleSheet = <
1547
2053
  T extends { [key: string]: StyleProp<ViewStyle | TextStyle | ImageStyle> },
1548
2054
  >(
1549
- updater: (theme: Required<Theme>, typography: Required<Typography>) => T,
2055
+ updater: (theme: ThemeWithPalette, typography: Required<Typography>) => T,
1550
2056
  deps: DependencyList = []
1551
2057
  ): T => {
1552
- const theme = useHMSRoomTheme<Required<Theme>>();
2058
+ const theme = useHMSRoomTheme<ThemeWithPalette>();
1553
2059
  const typography = useHMSRoomTypography();
1554
2060
 
1555
2061
  return useMemo(
@@ -1561,7 +2067,7 @@ export const useHMSRoomStyleSheet = <
1561
2067
  export const useHMSRoomStyle = <
1562
2068
  T extends StyleProp<ViewStyle | TextStyle | ImageStyle>,
1563
2069
  >(
1564
- updater: (theme: Required<Theme>, typography: Required<Typography>) => T,
2070
+ updater: (theme: ThemeWithPalette, typography: Required<Typography>) => T,
1565
2071
  deps: DependencyList = []
1566
2072
  ): T => {
1567
2073
  return useHMSRoomStyleSheet(
@@ -1571,3 +2077,115 @@ export const useHMSRoomStyle = <
1571
2077
  deps
1572
2078
  ).default;
1573
2079
  };
2080
+
2081
+ export const useSendMessage = () => {
2082
+ const hmsInstance = useHMSInstance();
2083
+ const dispatch = useDispatch();
2084
+ const reduxStore = useStore<RootState>();
2085
+
2086
+ const message = useSelector(
2087
+ (state: RootState) => state.chatWindow.typedMessage
2088
+ );
2089
+
2090
+ const setMessage = useCallback((text: string) => {
2091
+ dispatch({ type: 'SET_TYPED_MESSAGE', typedMessage: text });
2092
+ }, []);
2093
+
2094
+ const sendMessage = useCallback(async () => {
2095
+ const chatWindowState = reduxStore.getState().chatWindow;
2096
+
2097
+ const message = chatWindowState.typedMessage;
2098
+ const sendingTo = chatWindowState.sendTo as
2099
+ | HMSRole
2100
+ | HMSRemotePeer
2101
+ | typeof ChatBroadcastFilter;
2102
+
2103
+ if (message.length <= 0) return;
2104
+
2105
+ const hmsMessageRecipient = new HMSMessageRecipient({
2106
+ recipientType:
2107
+ 'publishSettings' in sendingTo
2108
+ ? HMSMessageRecipientType.ROLES
2109
+ : 'peerID' in sendingTo
2110
+ ? HMSMessageRecipientType.PEER
2111
+ : HMSMessageRecipientType.BROADCAST,
2112
+ recipientPeer: 'peerID' in sendingTo ? sendingTo : undefined,
2113
+ recipientRoles: 'publishSettings' in sendingTo ? [sendingTo] : undefined,
2114
+ });
2115
+
2116
+ // Saving reference of `message` state to local variable
2117
+ // to use the typed message after clearing state
2118
+ const messageText = message;
2119
+
2120
+ dispatch({ type: 'SET_TYPED_MESSAGE', typedMessage: '' });
2121
+
2122
+ const handleMessageID = ({
2123
+ messageId,
2124
+ }: {
2125
+ messageId: string | undefined;
2126
+ }) => {
2127
+ const localPeer = reduxStore.getState().hmsStates.localPeer;
2128
+
2129
+ if (messageId) {
2130
+ Keyboard.dismiss();
2131
+ const localMessage = new HMSMessage({
2132
+ messageId: messageId,
2133
+ message: messageText,
2134
+ type: 'chat',
2135
+ time: new Date(),
2136
+ sender: localPeer || undefined,
2137
+ recipient: hmsMessageRecipient,
2138
+ });
2139
+ dispatch(addMessage(localMessage));
2140
+ }
2141
+ };
2142
+
2143
+ try {
2144
+ let result: { messageId: string | undefined };
2145
+ if ('publishSettings' in sendingTo) {
2146
+ result = await hmsInstance.sendGroupMessage(messageText, [sendingTo]);
2147
+ } else if ('peerID' in sendingTo) {
2148
+ result = await hmsInstance.sendDirectMessage(messageText, sendingTo);
2149
+ } else {
2150
+ result = await hmsInstance.sendBroadcastMessage(messageText);
2151
+ }
2152
+ handleMessageID(result);
2153
+
2154
+ return Promise.resolve(result);
2155
+ } catch (error) {
2156
+ return Promise.reject(error);
2157
+ }
2158
+ }, []);
2159
+
2160
+ return {
2161
+ message,
2162
+ setMessage,
2163
+ sendMessage,
2164
+ };
2165
+ };
2166
+
2167
+ export const useHMSChatLayoutConfig = <Selected = unknown>(
2168
+ selector: (chatConfig: ChatConfig | null) => Selected,
2169
+ equalityFn?: (left: Selected, right: Selected) => boolean
2170
+ ): Selected => {
2171
+ return useHMSLayoutConfig((layoutConfig) => {
2172
+ const chatConfig = selectChatLayoutConfig(layoutConfig);
2173
+ return selector(chatConfig);
2174
+ }, equalityFn);
2175
+ };
2176
+
2177
+ export const useHMSConferencingScreenConfig = <Selected = unknown>(
2178
+ selector: (
2179
+ conferencingScreenConfig:
2180
+ | DefaultConferencingScreen
2181
+ | HLSLiveStreamingScreen
2182
+ | null
2183
+ ) => Selected,
2184
+ equalityFn?: (left: Selected, right: Selected) => boolean
2185
+ ): Selected => {
2186
+ return useHMSLayoutConfig((layoutConfig) => {
2187
+ const conferencingScreenConfig =
2188
+ selectConferencingScreenConfig(layoutConfig);
2189
+ return selector(conferencingScreenConfig);
2190
+ }, equalityFn);
2191
+ };