@100mslive/roomkit-react 0.4.3-alpha.3 → 0.4.3-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/dist/index.cjs.css +194 -219
  2. package/dist/index.cjs.css.map +3 -3
  3. package/dist/index.cjs.js +2 -2
  4. package/dist/index.cjs.js.map +2 -2
  5. package/dist/index.css +194 -219
  6. package/dist/index.css.map +3 -3
  7. package/dist/index.js +2 -2
  8. package/dist/index.js.map +2 -2
  9. package/dist/meta.cjs.json +18 -31
  10. package/dist/meta.esbuild.json +18 -31
  11. package/package.json +8 -9
  12. package/src/Accordion/Accordion.tsx +0 -88
  13. package/src/Accordion/index.ts +0 -8
  14. package/src/AudioLevel/AudioLevel.tsx +0 -84
  15. package/src/AudioLevel/audio-level.png +0 -0
  16. package/src/AudioLevel/index.ts +0 -2
  17. package/src/AudioLevel/useBorderAudioLevel.tsx +0 -34
  18. package/src/Avatar/Avatar.tsx +0 -60
  19. package/src/Avatar/getAvatarBg.ts +0 -50
  20. package/src/Avatar/index.ts +0 -1
  21. package/src/Button/Button.tsx +0 -210
  22. package/src/Button/index.tsx +0 -1
  23. package/src/Checkbox/Checkbox.tsx +0 -35
  24. package/src/Checkbox/index.tsx +0 -1
  25. package/src/Collapsible/Collapsible.tsx +0 -34
  26. package/src/Collapsible/index.tsx +0 -1
  27. package/src/Diagnostics/AudioTest.tsx +0 -188
  28. package/src/Diagnostics/BrowserTest.tsx +0 -141
  29. package/src/Diagnostics/ConnectivityTest.tsx +0 -383
  30. package/src/Diagnostics/DeviceSelector.jsx +0 -71
  31. package/src/Diagnostics/Diagnostics.tsx +0 -190
  32. package/src/Diagnostics/DiagnosticsContext.ts +0 -46
  33. package/src/Diagnostics/VideoTest.tsx +0 -72
  34. package/src/Diagnostics/components.tsx +0 -70
  35. package/src/Diagnostics/index.ts +0 -1
  36. package/src/Divider/Divider.tsx +0 -45
  37. package/src/Divider/index.ts +0 -1
  38. package/src/Dropdown/Dropdown.tsx +0 -145
  39. package/src/Dropdown/index.tsx +0 -1
  40. package/src/Fieldset/Fieldset.tsx +0 -11
  41. package/src/Fieldset/index.tsx +0 -1
  42. package/src/Footer/Footer.tsx +0 -47
  43. package/src/Footer/index.tsx +0 -1
  44. package/src/IconButton/IconButton.tsx +0 -43
  45. package/src/IconButton/index.tsx +0 -1
  46. package/src/Input/Input.tsx +0 -109
  47. package/src/Input/index.tsx +0 -1
  48. package/src/Label/Label.tsx +0 -8
  49. package/src/Label/index.ts +0 -1
  50. package/src/Layout/Box.tsx +0 -3
  51. package/src/Layout/Flex.tsx +0 -76
  52. package/src/Layout/index.tsx +0 -2
  53. package/src/Link/Link.tsx +0 -54
  54. package/src/Link/index.tsx +0 -2
  55. package/src/Loading/Loading.tsx +0 -30
  56. package/src/Loading/index.ts +0 -1
  57. package/src/Modal/Dialog.tsx +0 -57
  58. package/src/Modal/DialogContent.tsx +0 -65
  59. package/src/Modal/index.ts +0 -1
  60. package/src/Pagination/StyledPagination.tsx +0 -70
  61. package/src/Pagination/index.tsx +0 -1
  62. package/src/Popover/index.tsx +0 -34
  63. package/src/Prebuilt/App.tsx +0 -318
  64. package/src/Prebuilt/AppContext.tsx +0 -33
  65. package/src/Prebuilt/AppStateContext.tsx +0 -95
  66. package/src/Prebuilt/IconButton.tsx +0 -26
  67. package/src/Prebuilt/common/PeersSorter.ts +0 -111
  68. package/src/Prebuilt/common/constants.ts +0 -151
  69. package/src/Prebuilt/common/hooks.ts +0 -257
  70. package/src/Prebuilt/common/utils.js +0 -185
  71. package/src/Prebuilt/components/AppData/AppData.tsx +0 -208
  72. package/src/Prebuilt/components/AppData/useChatState.js +0 -18
  73. package/src/Prebuilt/components/AppData/useSheet.ts +0 -33
  74. package/src/Prebuilt/components/AppData/useSidepane.js +0 -99
  75. package/src/Prebuilt/components/AppData/useSidepaneResetOnLayoutUpdate.tsx +0 -22
  76. package/src/Prebuilt/components/AppData/useUISettings.js +0 -212
  77. package/src/Prebuilt/components/AudioVideoToggle.tsx +0 -411
  78. package/src/Prebuilt/components/AuthToken.tsx +0 -148
  79. package/src/Prebuilt/components/CaptionIcon.tsx +0 -27
  80. package/src/Prebuilt/components/Chat/ArrowNavigation.tsx +0 -44
  81. package/src/Prebuilt/components/Chat/Chat.tsx +0 -190
  82. package/src/Prebuilt/components/Chat/ChatActions.tsx +0 -314
  83. package/src/Prebuilt/components/Chat/ChatBody.tsx +0 -493
  84. package/src/Prebuilt/components/Chat/ChatFooter.tsx +0 -316
  85. package/src/Prebuilt/components/Chat/ChatSelector.tsx +0 -228
  86. package/src/Prebuilt/components/Chat/ChatSelectorContainer.tsx +0 -158
  87. package/src/Prebuilt/components/Chat/ChatStates.tsx +0 -73
  88. package/src/Prebuilt/components/Chat/EmptyChat.tsx +0 -58
  89. package/src/Prebuilt/components/Chat/MwebChatOption.tsx +0 -24
  90. package/src/Prebuilt/components/Chat/PinnedMessage.tsx +0 -140
  91. package/src/Prebuilt/components/Chat/StickIndicator.tsx +0 -24
  92. package/src/Prebuilt/components/Chat/useEmojiPickerStyles.js +0 -32
  93. package/src/Prebuilt/components/Chat/useUnreadCount.ts +0 -19
  94. package/src/Prebuilt/components/Chat/utils.ts +0 -11
  95. package/src/Prebuilt/components/ChatSettings.tsx +0 -68
  96. package/src/Prebuilt/components/Chip.tsx +0 -40
  97. package/src/Prebuilt/components/ConferenceScreen.tsx +0 -205
  98. package/src/Prebuilt/components/Connection/ConnectionIndicator.tsx +0 -89
  99. package/src/Prebuilt/components/Connection/TileConnection.tsx +0 -93
  100. package/src/Prebuilt/components/Connection/connectionQualityUtils.js +0 -37
  101. package/src/Prebuilt/components/EmojiReaction.jsx +0 -100
  102. package/src/Prebuilt/components/EndCallFeedback/Feedback.tsx +0 -71
  103. package/src/Prebuilt/components/EndCallFeedback/FeedbackForm.tsx +0 -381
  104. package/src/Prebuilt/components/EndCallFeedback/ThankyouView.tsx +0 -64
  105. package/src/Prebuilt/components/ErrorBoundary.jsx +0 -102
  106. package/src/Prebuilt/components/Footer/ChatToggle.tsx +0 -53
  107. package/src/Prebuilt/components/Footer/EmojiCard.jsx +0 -34
  108. package/src/Prebuilt/components/Footer/Footer.tsx +0 -115
  109. package/src/Prebuilt/components/Footer/PaginatedParticipants.tsx +0 -124
  110. package/src/Prebuilt/components/Footer/ParticipantList.tsx +0 -478
  111. package/src/Prebuilt/components/Footer/PollsToggle.tsx +0 -37
  112. package/src/Prebuilt/components/Footer/RoleAccordion.tsx +0 -183
  113. package/src/Prebuilt/components/Footer/RoleOptions.tsx +0 -215
  114. package/src/Prebuilt/components/Footer/WhiteboardToggle.tsx +0 -52
  115. package/src/Prebuilt/components/FullPageProgress.tsx +0 -22
  116. package/src/Prebuilt/components/HMSVideo/Controls.jsx +0 -22
  117. package/src/Prebuilt/components/HMSVideo/FullscreenButton.tsx +0 -13
  118. package/src/Prebuilt/components/HMSVideo/HLSAutoplayBlockedPrompt.tsx +0 -72
  119. package/src/Prebuilt/components/HMSVideo/HLSCaptionSelector.tsx +0 -15
  120. package/src/Prebuilt/components/HMSVideo/HLSQualitySelector.tsx +0 -248
  121. package/src/Prebuilt/components/HMSVideo/HMSVideo.jsx +0 -75
  122. package/src/Prebuilt/components/HMSVideo/MwebHLSViewTitle.tsx +0 -86
  123. package/src/Prebuilt/components/HMSVideo/PlayPauseButton.tsx +0 -27
  124. package/src/Prebuilt/components/HMSVideo/PlayPauseSeekControls.tsx +0 -158
  125. package/src/Prebuilt/components/HMSVideo/PlayerContext.tsx +0 -15
  126. package/src/Prebuilt/components/HMSVideo/SeekControl.tsx +0 -22
  127. package/src/Prebuilt/components/HMSVideo/VideoProgress.tsx +0 -100
  128. package/src/Prebuilt/components/HMSVideo/VideoTime.tsx +0 -52
  129. package/src/Prebuilt/components/HMSVideo/VolumeControl.tsx +0 -70
  130. package/src/Prebuilt/components/HMSVideo/index.ts +0 -24
  131. package/src/Prebuilt/components/HMSVideo/utils.ts +0 -37
  132. package/src/Prebuilt/components/Header/Header.tsx +0 -52
  133. package/src/Prebuilt/components/Header/HeaderComponents.jsx +0 -57
  134. package/src/Prebuilt/components/Header/ParticipantFilter.jsx +0 -89
  135. package/src/Prebuilt/components/Header/RoomDetailsHeader.tsx +0 -51
  136. package/src/Prebuilt/components/Header/StreamActions.tsx +0 -297
  137. package/src/Prebuilt/components/Header/common.jsx +0 -196
  138. package/src/Prebuilt/components/Header/index.tsx +0 -1
  139. package/src/Prebuilt/components/HlsStatsOverlay.jsx +0 -89
  140. package/src/Prebuilt/components/IconButtonWithOptions/IconButtonWithOptions.tsx +0 -167
  141. package/src/Prebuilt/components/Input/KeyboardInputManager.js +0 -107
  142. package/src/Prebuilt/components/InsetTile.tsx +0 -136
  143. package/src/Prebuilt/components/LayoutModeSelector.tsx +0 -112
  144. package/src/Prebuilt/components/Leave/DesktopLeaveRoom.tsx +0 -166
  145. package/src/Prebuilt/components/Leave/EndSessionContent.tsx +0 -64
  146. package/src/Prebuilt/components/Leave/LeaveAtoms.tsx +0 -26
  147. package/src/Prebuilt/components/Leave/LeaveCard.tsx +0 -36
  148. package/src/Prebuilt/components/Leave/LeaveRoom.tsx +0 -82
  149. package/src/Prebuilt/components/Leave/LeaveSessionContent.tsx +0 -61
  150. package/src/Prebuilt/components/Leave/MwebLeaveRoom.tsx +0 -135
  151. package/src/Prebuilt/components/LeaveScreen.tsx +0 -71
  152. package/src/Prebuilt/components/MoreSettings/ActionTile.jsx +0 -60
  153. package/src/Prebuilt/components/MoreSettings/BulkRoleChangeModal.jsx +0 -139
  154. package/src/Prebuilt/components/MoreSettings/CaptionContent.tsx +0 -143
  155. package/src/Prebuilt/components/MoreSettings/CaptionModal.tsx +0 -37
  156. package/src/Prebuilt/components/MoreSettings/ChangeNameContent.tsx +0 -123
  157. package/src/Prebuilt/components/MoreSettings/ChangeNameModal.tsx +0 -78
  158. package/src/Prebuilt/components/MoreSettings/EmbedUrl.jsx +0 -81
  159. package/src/Prebuilt/components/MoreSettings/FullScreenItem.tsx +0 -26
  160. package/src/Prebuilt/components/MoreSettings/MoreSettings.tsx +0 -29
  161. package/src/Prebuilt/components/MoreSettings/MuteAllContent.tsx +0 -81
  162. package/src/Prebuilt/components/MoreSettings/MuteAllModal.tsx +0 -72
  163. package/src/Prebuilt/components/MoreSettings/SplitComponents/DesktopOptions.tsx +0 -282
  164. package/src/Prebuilt/components/MoreSettings/SplitComponents/MwebOptions.tsx +0 -387
  165. package/src/Prebuilt/components/MoreSettings/constants.ts +0 -14
  166. package/src/Prebuilt/components/MwebLandscapePrompt.tsx +0 -81
  167. package/src/Prebuilt/components/Notifications/AutoplayBlockedModal.tsx +0 -39
  168. package/src/Prebuilt/components/Notifications/ChatNotifications.tsx +0 -34
  169. package/src/Prebuilt/components/Notifications/DeviceChangeNotifications.tsx +0 -18
  170. package/src/Prebuilt/components/Notifications/DeviceInUseError.tsx +0 -86
  171. package/src/Prebuilt/components/Notifications/ErrorNotifications.tsx +0 -56
  172. package/src/Prebuilt/components/Notifications/HLSFailureModal.tsx +0 -71
  173. package/src/Prebuilt/components/Notifications/HandRaisedNotifications.tsx +0 -78
  174. package/src/Prebuilt/components/Notifications/InitErrorModal.tsx +0 -42
  175. package/src/Prebuilt/components/Notifications/MessageNotifications.tsx +0 -24
  176. package/src/Prebuilt/components/Notifications/Notifications.tsx +0 -65
  177. package/src/Prebuilt/components/Notifications/PeerNotifications.tsx +0 -52
  178. package/src/Prebuilt/components/Notifications/PermissionErrorModal.tsx +0 -144
  179. package/src/Prebuilt/components/Notifications/PollNotificationModal.tsx +0 -71
  180. package/src/Prebuilt/components/Notifications/ReconnectNotifications.tsx +0 -33
  181. package/src/Prebuilt/components/Notifications/RoleChangeNotification.tsx +0 -24
  182. package/src/Prebuilt/components/Notifications/TrackBulkUnmuteModal.tsx +0 -61
  183. package/src/Prebuilt/components/Notifications/TrackNotifications.tsx +0 -41
  184. package/src/Prebuilt/components/Notifications/TrackUnmuteModal.tsx +0 -63
  185. package/src/Prebuilt/components/Notifications/TranscriptionNotifications.tsx +0 -58
  186. package/src/Prebuilt/components/Notifications/index.tsx +0 -1
  187. package/src/Prebuilt/components/PIP/PIPChat.tsx +0 -292
  188. package/src/Prebuilt/components/PIP/PIPChatOption.tsx +0 -18
  189. package/src/Prebuilt/components/PIP/PIPComponent.tsx +0 -90
  190. package/src/Prebuilt/components/PIP/PIPManager.ts +0 -335
  191. package/src/Prebuilt/components/PIP/PIPProvider.tsx +0 -56
  192. package/src/Prebuilt/components/PIP/PIPWindow.tsx +0 -13
  193. package/src/Prebuilt/components/PIP/SetupMediaSession.js +0 -60
  194. package/src/Prebuilt/components/PIP/context.ts +0 -10
  195. package/src/Prebuilt/components/PIP/index.jsx +0 -6
  196. package/src/Prebuilt/components/PIP/pip.test.js +0 -72
  197. package/src/Prebuilt/components/PIP/pipUtils.js +0 -183
  198. package/src/Prebuilt/components/PIP/usePIPChat.tsx +0 -105
  199. package/src/Prebuilt/components/PIP/usePIPWindow.tsx +0 -12
  200. package/src/Prebuilt/components/Pagination.tsx +0 -60
  201. package/src/Prebuilt/components/Polls/CreatePollQuiz/PollsQuizMenu.tsx +0 -248
  202. package/src/Prebuilt/components/Polls/CreateQuestions/CreateQuestions.jsx +0 -142
  203. package/src/Prebuilt/components/Polls/CreateQuestions/DeleteQuestionModal.tsx +0 -74
  204. package/src/Prebuilt/components/Polls/CreateQuestions/QuestionForm.tsx +0 -324
  205. package/src/Prebuilt/components/Polls/CreateQuestions/SavedQuestion.tsx +0 -64
  206. package/src/Prebuilt/components/Polls/Polls.tsx +0 -31
  207. package/src/Prebuilt/components/Polls/Voting/LeaderboardEntry.tsx +0 -76
  208. package/src/Prebuilt/components/Polls/Voting/LeaderboardSummary.tsx +0 -116
  209. package/src/Prebuilt/components/Polls/Voting/PeerParticipationSummary.tsx +0 -60
  210. package/src/Prebuilt/components/Polls/Voting/QuestionCard.jsx +0 -221
  211. package/src/Prebuilt/components/Polls/Voting/StandardVoting.tsx +0 -47
  212. package/src/Prebuilt/components/Polls/Voting/StatisticBox.tsx +0 -20
  213. package/src/Prebuilt/components/Polls/Voting/TimedVoting.tsx +0 -55
  214. package/src/Prebuilt/components/Polls/Voting/Voting.tsx +0 -143
  215. package/src/Prebuilt/components/Polls/Voting/useQuizSummary.tsx +0 -50
  216. package/src/Prebuilt/components/Polls/common/Line.tsx +0 -4
  217. package/src/Prebuilt/components/Polls/common/MultipleChoiceOptions.jsx +0 -115
  218. package/src/Prebuilt/components/Polls/common/OptionInputWithDelete.tsx +0 -38
  219. package/src/Prebuilt/components/Polls/common/SingleChoiceOptions.jsx +0 -140
  220. package/src/Prebuilt/components/Polls/common/StatusIndicator.tsx +0 -35
  221. package/src/Prebuilt/components/Polls/common/VoteCount.tsx +0 -15
  222. package/src/Prebuilt/components/Polls/common/VoteProgress.tsx +0 -18
  223. package/src/Prebuilt/components/Polls/common/constants.ts +0 -5
  224. package/src/Prebuilt/components/Polls/common/utils.ts +0 -22
  225. package/src/Prebuilt/components/Preview/PreviewForm.tsx +0 -94
  226. package/src/Prebuilt/components/Preview/PreviewJoin.tsx +0 -292
  227. package/src/Prebuilt/components/Preview/PreviewScreen.tsx +0 -38
  228. package/src/Prebuilt/components/PreviousRoleInMetadata.tsx +0 -20
  229. package/src/Prebuilt/components/RaiseHand.tsx +0 -30
  230. package/src/Prebuilt/components/RemoveParticipant.tsx +0 -35
  231. package/src/Prebuilt/components/RoleChangeModal.tsx +0 -188
  232. package/src/Prebuilt/components/RoleChangeRequest/RequestPrompt.tsx +0 -75
  233. package/src/Prebuilt/components/RoleChangeRequest/RoleChangeRequestModal.tsx +0 -94
  234. package/src/Prebuilt/components/RoomDetails/Duration.tsx +0 -26
  235. package/src/Prebuilt/components/RoomDetails/RoomDetailsPane.tsx +0 -63
  236. package/src/Prebuilt/components/RoomDetails/RoomDetailsRow.tsx +0 -23
  237. package/src/Prebuilt/components/RoomDetails/RoomDetailsSheet.tsx +0 -45
  238. package/src/Prebuilt/components/ScreenShareToggle.jsx +0 -58
  239. package/src/Prebuilt/components/ScreenshareDisplay.tsx +0 -39
  240. package/src/Prebuilt/components/ScreenshareTile.tsx +0 -134
  241. package/src/Prebuilt/components/SecondaryTiles.tsx +0 -81
  242. package/src/Prebuilt/components/Settings/DeviceSettings.jsx +0 -208
  243. package/src/Prebuilt/components/Settings/LayoutSettings.tsx +0 -74
  244. package/src/Prebuilt/components/Settings/NotificationSettings.tsx +0 -66
  245. package/src/Prebuilt/components/Settings/SettingsModal.jsx +0 -301
  246. package/src/Prebuilt/components/Settings/StartRecording.jsx +0 -101
  247. package/src/Prebuilt/components/Settings/SwitchWithLabel.tsx +0 -53
  248. package/src/Prebuilt/components/Settings/common.ts +0 -16
  249. package/src/Prebuilt/components/ShareMenuIcon.jsx +0 -27
  250. package/src/Prebuilt/components/SidePaneTabs.tsx +0 -214
  251. package/src/Prebuilt/components/StatsForNerds.jsx +0 -373
  252. package/src/Prebuilt/components/Streaming/Common.jsx +0 -143
  253. package/src/Prebuilt/components/Streaming/ResolutionInput.jsx +0 -88
  254. package/src/Prebuilt/components/TileMenu/TileMenu.tsx +0 -148
  255. package/src/Prebuilt/components/TileMenu/TileMenuContent.tsx +0 -393
  256. package/src/Prebuilt/components/TileMenu/utils.ts +0 -7
  257. package/src/Prebuilt/components/Toast/Toast.jsx +0 -17
  258. package/src/Prebuilt/components/Toast/ToastBatcher.js +0 -64
  259. package/src/Prebuilt/components/Toast/ToastConfig.jsx +0 -177
  260. package/src/Prebuilt/components/Toast/ToastContainer.jsx +0 -30
  261. package/src/Prebuilt/components/Toast/ToastManager.js +0 -44
  262. package/src/Prebuilt/components/VideoLayouts/EqualProminence.tsx +0 -62
  263. package/src/Prebuilt/components/VideoLayouts/Grid.tsx +0 -43
  264. package/src/Prebuilt/components/VideoLayouts/GridLayout.tsx +0 -155
  265. package/src/Prebuilt/components/VideoLayouts/ProminenceLayout.tsx +0 -91
  266. package/src/Prebuilt/components/VideoLayouts/RoleProminence.tsx +0 -66
  267. package/src/Prebuilt/components/VideoLayouts/ScreenshareLayout.tsx +0 -74
  268. package/src/Prebuilt/components/VideoLayouts/WhiteboardLayout.tsx +0 -93
  269. package/src/Prebuilt/components/VideoLayouts/interface.ts +0 -11
  270. package/src/Prebuilt/components/VideoTile.tsx +0 -203
  271. package/src/Prebuilt/components/VirtualBackground/VBCollection.tsx +0 -52
  272. package/src/Prebuilt/components/VirtualBackground/VBHandler.tsx +0 -130
  273. package/src/Prebuilt/components/VirtualBackground/VBOption.tsx +0 -57
  274. package/src/Prebuilt/components/VirtualBackground/VBPicker.tsx +0 -252
  275. package/src/Prebuilt/components/VirtualBackground/VBToggle.tsx +0 -50
  276. package/src/Prebuilt/components/hooks/useAudioOutputTest.tsx +0 -20
  277. package/src/Prebuilt/components/hooks/useAutoStartStreaming.tsx +0 -70
  278. package/src/Prebuilt/components/hooks/useChatBlacklist.ts +0 -29
  279. package/src/Prebuilt/components/hooks/useCloseScreenshareWhiteboard.tsx +0 -17
  280. package/src/Prebuilt/components/hooks/useDropdownList.ts +0 -24
  281. package/src/Prebuilt/components/hooks/useDropdownSelection.jsx +0 -3
  282. package/src/Prebuilt/components/hooks/useFullscreen.ts +0 -46
  283. package/src/Prebuilt/components/hooks/useGroupOnStageActions.tsx +0 -54
  284. package/src/Prebuilt/components/hooks/useMetadata.tsx +0 -56
  285. package/src/Prebuilt/components/hooks/usePeerOnStageActions.tsx +0 -49
  286. package/src/Prebuilt/components/hooks/usePinnedBy.tsx +0 -22
  287. package/src/Prebuilt/components/hooks/usePinnedMessages.ts +0 -78
  288. package/src/Prebuilt/components/hooks/usePlaylist.js +0 -25
  289. package/src/Prebuilt/components/hooks/usePlaylistMusic.js +0 -35
  290. package/src/Prebuilt/components/hooks/useRedirectToLeave.tsx +0 -23
  291. package/src/Prebuilt/components/hooks/useRoleProminencePeers.tsx +0 -39
  292. package/src/Prebuilt/components/hooks/useScreenshareAudio.js +0 -28
  293. package/src/Prebuilt/components/hooks/useTileLayout.tsx +0 -128
  294. package/src/Prebuilt/components/hooks/useUnreadPollQuizPresent.tsx +0 -17
  295. package/src/Prebuilt/components/hooks/useUserPreferences.jsx +0 -26
  296. package/src/Prebuilt/components/hooks/useVideoTileLayout.ts +0 -26
  297. package/src/Prebuilt/components/init/Init.jsx +0 -31
  298. package/src/Prebuilt/components/pdfAnnotator/pdfFileOptions.jsx +0 -42
  299. package/src/Prebuilt/components/pdfAnnotator/pdfHeader.jsx +0 -31
  300. package/src/Prebuilt/components/pdfAnnotator/pdfInfo.jsx +0 -32
  301. package/src/Prebuilt/components/pdfAnnotator/shareScreenOptions.jsx +0 -211
  302. package/src/Prebuilt/components/pdfAnnotator/submitPdf.jsx +0 -48
  303. package/src/Prebuilt/components/pdfAnnotator/uploadedFile.jsx +0 -71
  304. package/src/Prebuilt/components/peerTileUtils.tsx +0 -42
  305. package/src/Prebuilt/images/android-perm-1.png +0 -0
  306. package/src/Prebuilt/images/empty-chat.svg +0 -12
  307. package/src/Prebuilt/images/ios-perm-0.png +0 -0
  308. package/src/Prebuilt/images/pdf-share.png +0 -0
  309. package/src/Prebuilt/images/rtmp.png +0 -0
  310. package/src/Prebuilt/images/screen-share.png +0 -0
  311. package/src/Prebuilt/images/transaction_error.svg +0 -12
  312. package/src/Prebuilt/index.ts +0 -1
  313. package/src/Prebuilt/layouts/EmbedView.jsx +0 -94
  314. package/src/Prebuilt/layouts/HLSView.jsx +0 -747
  315. package/src/Prebuilt/layouts/PDFView.jsx +0 -67
  316. package/src/Prebuilt/layouts/Sheet.tsx +0 -14
  317. package/src/Prebuilt/layouts/SidePane.tsx +0 -241
  318. package/src/Prebuilt/layouts/VideoStreamingSection.tsx +0 -164
  319. package/src/Prebuilt/layouts/WaitingView.tsx +0 -52
  320. package/src/Prebuilt/plugins/CaptionsViewer.tsx +0 -261
  321. package/src/Prebuilt/plugins/FlyingEmoji.jsx +0 -154
  322. package/src/Prebuilt/plugins/RemoteStopScreenshare.jsx +0 -18
  323. package/src/Prebuilt/plugins/transcription/Transcriber.js +0 -216
  324. package/src/Prebuilt/plugins/transcription/TranscriptionButton.jsx +0 -138
  325. package/src/Prebuilt/plugins/transcription/index.jsx +0 -1
  326. package/src/Prebuilt/primitives/DialogContent.jsx +0 -285
  327. package/src/Prebuilt/primitives/DropdownTrigger.jsx +0 -46
  328. package/src/Prebuilt/provider/roomLayoutProvider/constants/index.ts +0 -60
  329. package/src/Prebuilt/provider/roomLayoutProvider/hooks/useFetchRoomLayout.ts +0 -88
  330. package/src/Prebuilt/provider/roomLayoutProvider/hooks/useInsetEnabled.ts +0 -10
  331. package/src/Prebuilt/provider/roomLayoutProvider/hooks/useRoomLayoutScreen.ts +0 -112
  332. package/src/Prebuilt/provider/roomLayoutProvider/index.tsx +0 -53
  333. package/src/Prebuilt/services/FeatureFlags.jsx +0 -46
  334. package/src/Progress/index.tsx +0 -17
  335. package/src/QRCode/QRCode.tsx +0 -6
  336. package/src/QRCode/index.tsx +0 -1
  337. package/src/RadioGroup/RadioGroup.tsx +0 -33
  338. package/src/RadioGroup/index.tsx +0 -1
  339. package/src/ReactSelect/ReactSelect.tsx +0 -97
  340. package/src/ReactSelect/index.ts +0 -1
  341. package/src/Select/Select.tsx +0 -63
  342. package/src/Select/index.ts +0 -1
  343. package/src/Sheet/Sheet.tsx +0 -122
  344. package/src/Sheet/index.ts +0 -1
  345. package/src/Slider/Slider.tsx +0 -70
  346. package/src/Slider/index.ts +0 -1
  347. package/src/Stats/Stats.tsx +0 -243
  348. package/src/Stats/StyledStats.tsx +0 -57
  349. package/src/Stats/formatBytes.ts +0 -19
  350. package/src/Stats/index.tsx +0 -2
  351. package/src/Stats/useQoE.ts +0 -79
  352. package/src/Switch/Switch.tsx +0 -52
  353. package/src/Switch/index.ts +0 -1
  354. package/src/Tabs/Tabs.tsx +0 -41
  355. package/src/Tabs/index.tsx +0 -1
  356. package/src/Text/Text.tsx +0 -149
  357. package/src/Text/index.tsx +0 -1
  358. package/src/TextArea/TextArea.tsx +0 -30
  359. package/src/TextArea/index.tsx +0 -1
  360. package/src/Theme/ThemeProvider.tsx +0 -98
  361. package/src/Theme/base.config.ts +0 -236
  362. package/src/Theme/index.tsx +0 -2
  363. package/src/Theme/stitches.config.ts +0 -88
  364. package/src/Theme/useSSR.tsx +0 -24
  365. package/src/TileMenu/StyledMenuTile.tsx +0 -105
  366. package/src/TileMenu/TileMenu.tsx +0 -98
  367. package/src/TileMenu/index.tsx +0 -1
  368. package/src/Toast/Toast.tsx +0 -170
  369. package/src/Toast/index.tsx +0 -1
  370. package/src/Tooltip/Tooltip.tsx +0 -79
  371. package/src/Tooltip/index.ts +0 -1
  372. package/src/Video/Video.tsx +0 -61
  373. package/src/Video/index.tsx +0 -1
  374. package/src/VideoList/StyledVideoList.tsx +0 -39
  375. package/src/VideoList/index.tsx +0 -2
  376. package/src/VideoList/videoListUtils.tsx +0 -20
  377. package/src/VideoTile/StyledVideoTile.tsx +0 -146
  378. package/src/VideoTile/index.tsx +0 -1
  379. package/src/context/DialogContext.tsx +0 -13
  380. package/src/fixtures/chats.ts +0 -25
  381. package/src/fixtures/peers.ts +0 -27
  382. package/src/fixtures/tracks.ts +0 -11
  383. package/src/hooks/useDialogContainerSelector.tsx +0 -7
  384. package/src/index.ts +0 -41
  385. package/src/store/SetupFakeStore.ts +0 -33
  386. package/src/store/StorybookSDK.ts +0 -231
  387. package/src/utils/animations.ts +0 -114
  388. package/src/utils/index.ts +0 -2
  389. package/src/utils/styles.ts +0 -22
@@ -1,203 +0,0 @@
1
- import React, { useCallback, useMemo, useState } from 'react';
2
- import { useMeasure } from 'react-use';
3
- import {
4
- selectAudioTrackByPeerID,
5
- selectHasPeerHandRaised,
6
- selectIsPeerAudioEnabled,
7
- selectLocalPeerID,
8
- selectPeerMetadata,
9
- selectPeerNameByID,
10
- selectVideoTrackByID,
11
- selectVideoTrackByPeerID,
12
- useHMSStore,
13
- } from '@100mslive/react-sdk';
14
- import { BrbTileIcon, HandIcon, MicOffIcon } from '@100mslive/react-icons';
15
- import TileConnection from './Connection/TileConnection';
16
- import TileMenu, { isSameTile } from './TileMenu/TileMenu';
17
- import { AudioLevel } from '../../AudioLevel';
18
- import { Avatar } from '../../Avatar';
19
- import { VideoTileStats } from '../../Stats';
20
- import { CSS } from '../../Theme';
21
- import { Video } from '../../Video';
22
- import { StyledVideoTile } from '../../VideoTile';
23
- import { getVideoTileLabel } from './peerTileUtils';
24
- // @ts-ignore: No implicit Any
25
- import { useSetAppDataByKey, useUISettings } from './AppData/useUISettings';
26
- // @ts-ignore: No implicit Any
27
- import { calculateAvatarAndAttribBoxSize } from '../common/utils';
28
- import { APP_DATA, UI_SETTINGS } from '../common/constants';
29
-
30
- const PeerMetadata = ({ peerId, size }: { peerId: string; size?: 'medium' | 'small' }) => {
31
- const metaData = useHMSStore(selectPeerMetadata(peerId));
32
- const isBRB = metaData?.isBRBOn || false;
33
- const isHandRaised = useHMSStore(selectHasPeerHandRaised(peerId));
34
-
35
- return (
36
- <>
37
- {isHandRaised ? (
38
- <StyledVideoTile.AttributeBox size={size} data-testid="raiseHand_icon_onTile">
39
- <HandIcon width={24} height={24} />
40
- </StyledVideoTile.AttributeBox>
41
- ) : null}
42
- {isBRB ? (
43
- <StyledVideoTile.AttributeBox size={size} data-testid="brb_icon_onTile">
44
- <BrbTileIcon width={22} height={22} />
45
- </StyledVideoTile.AttributeBox>
46
- ) : null}
47
- </>
48
- );
49
- };
50
-
51
- const Tile = ({
52
- peerId = '',
53
- trackId = '',
54
- width,
55
- height,
56
- objectFit = 'cover',
57
- canMinimise = false,
58
- isDragabble = false,
59
- rootCSS = {},
60
- containerCSS = {},
61
- enableSpotlightingPeer = true,
62
- hideParticipantNameOnTile = false,
63
- roundedVideoTile = true,
64
- hideAudioMuteOnTile = false,
65
- hideMetadataOnTile = false,
66
- }: {
67
- peerId?: string;
68
- trackId?: string;
69
- width?: string | number;
70
- height?: string | number;
71
- objectFit?: string;
72
- canMinimise?: boolean;
73
- isDragabble?: boolean;
74
- rootCSS?: CSS;
75
- containerCSS?: CSS;
76
- enableSpotlightingPeer?: boolean;
77
- hideParticipantNameOnTile?: boolean;
78
- roundedVideoTile?: boolean;
79
- hideAudioMuteOnTile?: boolean;
80
- hideMetadataOnTile?: boolean;
81
- }) => {
82
- const trackSelector = trackId ? selectVideoTrackByID(trackId) : selectVideoTrackByPeerID(peerId);
83
- const track = useHMSStore(trackSelector);
84
- const peerName = useHMSStore(selectPeerNameByID(peerId));
85
- const audioTrack = useHMSStore(selectAudioTrackByPeerID(peerId));
86
- const localPeerID = useHMSStore(selectLocalPeerID);
87
- const isAudioOnly = useUISettings(UI_SETTINGS.isAudioOnly);
88
- const mirrorLocalVideo = useUISettings(UI_SETTINGS.mirrorLocalVideo);
89
- const showStatsOnTiles = useUISettings(UI_SETTINGS.showStatsOnTiles);
90
- const isAudioMuted = !useHMSStore(selectIsPeerAudioEnabled(peerId));
91
- const isVideoMuted = !track?.enabled;
92
- const [isMouseHovered, setIsMouseHovered] = useState(false);
93
- const isVideoDegraded = track?.degraded;
94
- const isLocal = localPeerID === peerId;
95
- const [pinnedTrackId] = useSetAppDataByKey(APP_DATA.pinnedTrackId);
96
- const pinned = isSameTile({
97
- trackId: pinnedTrackId,
98
- videoTrackID: track?.id,
99
- audioTrackID: audioTrack?.id,
100
- });
101
- const label = getVideoTileLabel({
102
- peerName,
103
- isLocal,
104
- videoTrack: track,
105
- audioTrack,
106
- });
107
- const onHoverHandler = useCallback((event: React.MouseEvent) => {
108
- setIsMouseHovered(event.type === 'mouseenter');
109
- }, []);
110
-
111
- const [ref, { width: calculatedWidth, height: calculatedHeight }] = useMeasure<HTMLDivElement>();
112
-
113
- const isTileBigEnoughToShowStats = calculatedHeight >= 180 && calculatedWidth >= 180;
114
-
115
- const [avatarSize, attribBoxSize] = useMemo(
116
- () => calculateAvatarAndAttribBoxSize(calculatedWidth, calculatedHeight),
117
- [calculatedWidth, calculatedHeight],
118
- );
119
-
120
- return (
121
- <StyledVideoTile.Root
122
- ref={ref}
123
- css={{
124
- width,
125
- height,
126
- ...rootCSS,
127
- }}
128
- data-testid={`participant_tile_${peerName}`}
129
- >
130
- {peerName !== undefined ? (
131
- <StyledVideoTile.Container
132
- onMouseEnter={onHoverHandler}
133
- onMouseLeave={onHoverHandler}
134
- noRadius={!roundedVideoTile}
135
- css={containerCSS}
136
- >
137
- {showStatsOnTiles && isTileBigEnoughToShowStats ? (
138
- <VideoTileStats audioTrackID={audioTrack?.id} videoTrackID={track?.id} peerID={peerId} isLocal={isLocal} />
139
- ) : null}
140
-
141
- <Video
142
- trackId={track?.id}
143
- attach={isLocal ? undefined : !isAudioOnly}
144
- mirror={
145
- mirrorLocalVideo &&
146
- peerId === localPeerID &&
147
- track?.source === 'regular' &&
148
- track?.facingMode !== 'environment'
149
- }
150
- noRadius={!roundedVideoTile}
151
- data-testid="participant_video_tile"
152
- css={{
153
- objectFit,
154
- filter: isVideoDegraded ? 'blur($space$2)' : undefined,
155
- bg: 'transparent',
156
- }}
157
- />
158
- {calculatedWidth > 0 && calculatedHeight > 0 ? (
159
- <>
160
- {isVideoMuted || (!isLocal && isAudioOnly) ? (
161
- <StyledVideoTile.AvatarContainer>
162
- <Avatar name={peerName || ''} data-testid="participant_avatar_icon" size={avatarSize} />
163
- </StyledVideoTile.AvatarContainer>
164
- ) : null}
165
- {!hideAudioMuteOnTile && isAudioMuted ? (
166
- <StyledVideoTile.AudioIndicator data-testid="participant_audio_mute_icon" size={attribBoxSize}>
167
- <MicOffIcon />
168
- </StyledVideoTile.AudioIndicator>
169
- ) : null}
170
- {!hideAudioMuteOnTile && !isAudioMuted ? (
171
- <StyledVideoTile.AudioIndicator size={attribBoxSize}>
172
- <AudioLevel trackId={audioTrack?.id} size={attribBoxSize} />
173
- </StyledVideoTile.AudioIndicator>
174
- ) : null}
175
- {!hideMetadataOnTile && <PeerMetadata peerId={peerId} size={attribBoxSize} />}
176
- </>
177
- ) : null}
178
- {isMouseHovered || (isDragabble && navigator.maxTouchPoints > 0) ? (
179
- <TileMenu
180
- peerID={peerId}
181
- audioTrackID={audioTrack?.id || ''}
182
- videoTrackID={track?.id || ''}
183
- canMinimise={canMinimise}
184
- enableSpotlightingPeer={enableSpotlightingPeer}
185
- />
186
- ) : null}
187
-
188
- <TileConnection
189
- hideLabel={hideParticipantNameOnTile}
190
- name={label}
191
- peerId={peerId}
192
- width={width}
193
- pinned={pinned}
194
- />
195
- </StyledVideoTile.Container>
196
- ) : null}
197
- </StyledVideoTile.Root>
198
- );
199
- };
200
-
201
- const VideoTile = React.memo(Tile);
202
-
203
- export default VideoTile;
@@ -1,52 +0,0 @@
1
- import React from 'react';
2
- // Open issue with eslint-plugin-import https://github.com/import-js/eslint-plugin-import/issues/1810
3
- // eslint-disable-next-line
4
- import { HMSVirtualBackgroundTypes } from '@100mslive/hms-virtual-background/hmsvbplugin';
5
- import { Box } from '../../../Layout';
6
- import { Text } from '../../../Text';
7
- import { VBOption } from './VBOption';
8
-
9
- export const VBCollection = ({
10
- options,
11
- title,
12
- activeBackground = '',
13
- }: {
14
- options: {
15
- title?: string;
16
- icon?: React.JSX.Element;
17
- onClick?: () => Promise<void>;
18
- mediaURL?: string;
19
- value: string | HMSVirtualBackgroundTypes;
20
- supported?: boolean;
21
- }[];
22
- title: string;
23
- activeBackground: string;
24
- }) => {
25
- if (options.length === 0) {
26
- return null;
27
- }
28
- return (
29
- <Box css={{ mt: '$10' }}>
30
- <Text variant="sm" css={{ color: '$on_surface_high', fontWeight: '$semiBold' }}>
31
- {title}
32
- </Text>
33
- <Box css={{ py: '$4', display: 'grid', gridTemplateColumns: '1fr 1fr 1fr', gap: '$8' }}>
34
- {options.map((option, index) =>
35
- option.supported ? (
36
- <VBOption.Root
37
- key={option.value}
38
- testid={option.value === HMSVirtualBackgroundTypes.IMAGE ? `virtual_bg_option-${index}` : option.value}
39
- {...option}
40
- isActive={activeBackground === option.value}
41
- >
42
- <VBOption.Icon>{option?.icon}</VBOption.Icon>
43
- <VBOption.Title>{option?.title}</VBOption.Title>
44
- </VBOption.Root>
45
- ) : (
46
- ''
47
- ),
48
- )}
49
- </Box>
50
- </Box>
51
- );
52
- };
@@ -1,130 +0,0 @@
1
- // Open issue with eslint-plugin-import https://github.com/import-js/eslint-plugin-import/issues/1810
2
- // eslint-disable-next-line
3
- import { HMSVBPlugin, HMSVirtualBackgroundTypes } from '@100mslive/hms-virtual-background/hmsvbplugin';
4
- import { parsedUserAgent } from '@100mslive/react-sdk';
5
- import { isIOS, isSafari } from '../../common/constants';
6
- export class VBPlugin {
7
- private hmsPlugin?: HMSVBPlugin;
8
- private effectsPlugin?: any;
9
-
10
- initialisePlugin = async (effectsSDKKey?: string, onInit?: () => void) => {
11
- if (this.getVBObject()) {
12
- return;
13
- }
14
- if (effectsSDKKey) {
15
- try {
16
- // eslint-disable-next-line
17
- const effects = await import('@100mslive/hms-virtual-background/hmseffectsplugin');
18
- this.effectsPlugin = new effects.HMSEffectsPlugin(effectsSDKKey, onInit);
19
- } catch (error) {
20
- console.error('Failed to initialise HMSEffectsPlugin:', error, 'Using HMSVBPlugin');
21
- this.hmsPlugin = new HMSVBPlugin(HMSVirtualBackgroundTypes.NONE, HMSVirtualBackgroundTypes.NONE);
22
- }
23
- } else {
24
- this.hmsPlugin = new HMSVBPlugin(HMSVirtualBackgroundTypes.NONE, HMSVirtualBackgroundTypes.NONE);
25
- }
26
- };
27
-
28
- getBackground = () => {
29
- if (this.effectsPlugin) {
30
- return this.effectsPlugin?.getBackground();
31
- } else {
32
- const background = this.hmsPlugin?.getBackground();
33
- // @ts-ignore
34
- return background?.src || background;
35
- }
36
- };
37
-
38
- getBlurAmount = () => {
39
- if (this.effectsPlugin) {
40
- return this.effectsPlugin.getBlurAmount();
41
- } else {
42
- // Treating HMS VB intensity as a fixed value
43
- return this.hmsPlugin?.getBackground() === HMSVirtualBackgroundTypes.BLUR ? 1 : 0;
44
- }
45
- };
46
-
47
- getVBObject = () => {
48
- return this.effectsPlugin || this.hmsPlugin;
49
- };
50
-
51
- getName = () => {
52
- return this.effectsPlugin ? this.effectsPlugin?.getName() : this.hmsPlugin?.getName();
53
- };
54
-
55
- setBlur = async (blurPower: number) => {
56
- if (this.effectsPlugin) {
57
- this.effectsPlugin?.setBlur(blurPower);
58
- } else {
59
- await this.hmsPlugin?.setBackground(HMSVirtualBackgroundTypes.BLUR, HMSVirtualBackgroundTypes.BLUR);
60
- }
61
- };
62
-
63
- setBackground = async (mediaURL: string) => {
64
- if (this.effectsPlugin) {
65
- this.effectsPlugin?.setBackground(mediaURL);
66
- } else {
67
- const img = document.createElement('img');
68
- let retries = 0;
69
- const MAX_RETRIES = 3;
70
- img.alt = 'VB';
71
- img.src = mediaURL;
72
- try {
73
- await this.hmsPlugin?.setBackground(img, HMSVirtualBackgroundTypes.IMAGE);
74
- } catch (e) {
75
- console.error(e);
76
- if (retries++ < MAX_RETRIES) {
77
- await this.hmsPlugin?.setBackground(img, HMSVirtualBackgroundTypes.IMAGE);
78
- }
79
- }
80
- }
81
- };
82
-
83
- setPreset = async (preset: 'quality' | 'balanced') => {
84
- if (this.effectsPlugin) {
85
- await this.effectsPlugin.setPreset(preset);
86
- }
87
- };
88
-
89
- getPreset = () => {
90
- return this.effectsPlugin?.getPreset() || '';
91
- };
92
-
93
- removeEffects = async () => {
94
- if (this.effectsPlugin) {
95
- this.effectsPlugin?.removeEffects();
96
- } else {
97
- await this.hmsPlugin?.setBackground(HMSVirtualBackgroundTypes.NONE, HMSVirtualBackgroundTypes.NONE);
98
- }
99
- };
100
-
101
- reset = () => {
102
- this.effectsPlugin = undefined;
103
- this.hmsPlugin = undefined;
104
- };
105
-
106
- isBlurSupported = () => {
107
- if ((isSafari || isIOS) && this.hmsPlugin) {
108
- return false;
109
- }
110
-
111
- if (this.effectsPlugin) {
112
- return true;
113
- }
114
-
115
- return false;
116
- };
117
-
118
- isEffectsSupported = () => {
119
- if (!isSafari) {
120
- return true;
121
- }
122
- const browserVersion = parsedUserAgent?.getBrowser()?.version || '16';
123
- if (browserVersion && parseInt(browserVersion.split('.')[0]) < 17) {
124
- return false;
125
- }
126
- return true;
127
- };
128
- }
129
-
130
- export const VBHandler = new VBPlugin();
@@ -1,57 +0,0 @@
1
- import React from 'react';
2
- import { Box, Flex } from '../../../Layout';
3
- import { Text } from '../../../Text';
4
-
5
- const Root = ({
6
- onClick,
7
- mediaURL,
8
- isActive,
9
- children,
10
- testid = '',
11
- }: {
12
- onClick?: () => Promise<void>;
13
- mediaURL?: string;
14
- isActive: boolean;
15
- children?: React.JSX.Element[];
16
- testid: string;
17
- }) => (
18
- <Flex
19
- data-testid={testid}
20
- direction="column"
21
- align="center"
22
- css={{
23
- p: '$5',
24
- borderRadius: '$1',
25
- bg: '$surface_bright',
26
- border: `4px solid ${isActive ? '$primary_default' : '$surface_dim'}`,
27
- cursor: 'pointer',
28
- '@media (hover:hover)': {
29
- '&:hover': { border: '4px solid $primary_dim' },
30
- },
31
- ...(mediaURL ? { height: '$20', backgroundImage: `url("${mediaURL}")`, backgroundSize: 'cover' } : {}),
32
- }}
33
- onClick={async () => {
34
- await onClick?.();
35
- }}
36
- >
37
- {children}
38
- </Flex>
39
- );
40
-
41
- const Title = ({ children }: { children?: string }) => {
42
- return children ? (
43
- <Text variant="xs" css={{ color: '$on_surface_medium' }}>
44
- {children}
45
- </Text>
46
- ) : null;
47
- };
48
-
49
- const Icon = ({ children }: { children?: React.JSX.Element }) => {
50
- return children ? <Box css={{ color: '$on_surface_high' }}>{children}</Box> : null;
51
- };
52
-
53
- export const VBOption = {
54
- Root,
55
- Title,
56
- Icon,
57
- };
@@ -1,252 +0,0 @@
1
- import React, { useEffect, useRef, useState } from 'react';
2
- import { useMedia } from 'react-use';
3
- import {
4
- HMSMediaStreamPlugin,
5
- selectAppData,
6
- selectEffectsKey,
7
- selectIsEffectsEnabled,
8
- selectLocalPeerRole,
9
- } from '@100mslive/hms-video-store';
10
- // Open issue with eslint-plugin-import https://github.com/import-js/eslint-plugin-import/issues/1810
11
- // eslint-disable-next-line
12
- import { HMSVBPlugin, HMSVirtualBackgroundTypes } from '@100mslive/hms-virtual-background/hmsvbplugin';
13
- import { VirtualBackgroundMedia } from '@100mslive/types-prebuilt/elements/virtual_background';
14
- import {
15
- HMSRoomState,
16
- selectIsLargeRoom,
17
- selectIsLocalVideoEnabled,
18
- selectIsLocalVideoPluginPresent,
19
- selectLocalPeer,
20
- selectRoomState,
21
- selectVideoTrackByID,
22
- useHMSActions,
23
- useHMSStore,
24
- } from '@100mslive/react-sdk';
25
- import { BlurPersonHighIcon, CrossCircleIcon, CrossIcon } from '@100mslive/react-icons';
26
- import { Box, config as cssConfig, Flex, Loading, Slider, Video } from '../../../index';
27
- import { Text } from '../../../Text';
28
- import { VBCollection } from './VBCollection';
29
- import { VBHandler } from './VBHandler';
30
- // @ts-ignore
31
- import { useSidepaneToggle } from '../AppData/useSidepane';
32
- import { useSidepaneResetOnLayoutUpdate } from '../AppData/useSidepaneResetOnLayoutUpdate';
33
- // @ts-ignore
34
- import { useSetAppDataByKey, useUISettings } from '../AppData/useUISettings';
35
- import { APP_DATA, SIDE_PANE_OPTIONS, UI_SETTINGS } from '../../common/constants';
36
-
37
- const iconDims = { height: '40px', width: '40px' };
38
-
39
- export const VBPicker = ({ backgroundMedia = [] }: { backgroundMedia: VirtualBackgroundMedia[] }) => {
40
- const toggleVB = useSidepaneToggle(SIDE_PANE_OPTIONS.VB);
41
- const hmsActions = useHMSActions();
42
- const localPeer = useHMSStore(selectLocalPeer);
43
- const role = useHMSStore(selectLocalPeerRole);
44
- const isVideoOn = useHMSStore(selectIsLocalVideoEnabled);
45
- const mirrorLocalVideo = useUISettings(UI_SETTINGS.mirrorLocalVideo);
46
- const trackSelector = selectVideoTrackByID(localPeer?.videoTrack);
47
- const track = useHMSStore(trackSelector);
48
- const [blurAmount, setBlurAmount] = useState(VBHandler.getBlurAmount() || 0.5);
49
- const roomState = useHMSStore(selectRoomState);
50
- const isLargeRoom = useHMSStore(selectIsLargeRoom);
51
- const isEffectsSupported = VBHandler.isEffectsSupported();
52
- const isEffectsEnabled = useHMSStore(selectIsEffectsEnabled);
53
- const effectsKey = useHMSStore(selectEffectsKey);
54
- const isMobile = useMedia(cssConfig.media.md);
55
- const [loadingEffects, setLoadingEffects] = useSetAppDataByKey(APP_DATA.loadingEffects);
56
- const isPluginAdded = useHMSStore(selectIsLocalVideoPluginPresent(VBHandler?.getName() || ''));
57
- const background = useHMSStore(selectAppData(APP_DATA.background));
58
- const mediaList = backgroundMedia.map((media: VirtualBackgroundMedia) => media.url || '');
59
- const pluginLoadingRef = useRef(false);
60
- const isBlurSupported = VBHandler?.isBlurSupported();
61
-
62
- const inPreview = roomState === HMSRoomState.Preview;
63
- // Hidden in preview as the effect will be visible in the preview tile
64
- const showVideoTile = isVideoOn && isLargeRoom && !inPreview;
65
-
66
- useEffect(() => {
67
- const addHMSVBPlugin = async () => {
68
- setLoadingEffects(false);
69
- if (!role) {
70
- return;
71
- }
72
- await VBHandler.initialisePlugin();
73
- await hmsActions.addPluginToVideoTrack(
74
- VBHandler.getVBObject() as HMSVBPlugin,
75
- Math.floor(role.publishParams.video.frameRate / 2),
76
- );
77
- };
78
- const initializeVirtualBackground = async () => {
79
- if (!track?.id || pluginLoadingRef.current || isPluginAdded) {
80
- return;
81
- }
82
-
83
- try {
84
- pluginLoadingRef.current = true;
85
- if (isEffectsEnabled && isEffectsSupported && effectsKey) {
86
- setLoadingEffects(true);
87
- await VBHandler.initialisePlugin(effectsKey, () => {
88
- setLoadingEffects(false);
89
- });
90
- const vbInstance = VBHandler.getVBObject();
91
- if (vbInstance.getName() === 'HMSEffects') {
92
- hmsActions.addPluginsToVideoStream([VBHandler.getVBObject() as HMSMediaStreamPlugin]);
93
- } else {
94
- await addHMSVBPlugin();
95
- }
96
- } else {
97
- await addHMSVBPlugin();
98
- }
99
-
100
- const handleDefaultBackground = async () => {
101
- switch (background) {
102
- case HMSVirtualBackgroundTypes.NONE:
103
- break;
104
- case HMSVirtualBackgroundTypes.BLUR:
105
- await VBHandler.setBlur(blurAmount);
106
- break;
107
- default:
108
- await VBHandler.setBackground(background);
109
- }
110
- };
111
-
112
- await handleDefaultBackground();
113
- } catch (error) {
114
- console.error('Error initializing virtual background:', error);
115
- setLoadingEffects(false);
116
- }
117
- };
118
-
119
- initializeVirtualBackground();
120
- }, [
121
- hmsActions,
122
- role,
123
- isPluginAdded,
124
- isEffectsEnabled,
125
- isEffectsSupported,
126
- effectsKey,
127
- track?.id,
128
- background,
129
- blurAmount,
130
- setLoadingEffects,
131
- ]);
132
-
133
- useEffect(() => {
134
- if (!isVideoOn) {
135
- toggleVB();
136
- }
137
- return () => setLoadingEffects(false);
138
- }, [isVideoOn, setLoadingEffects, toggleVB]);
139
-
140
- useSidepaneResetOnLayoutUpdate('virtual_background', SIDE_PANE_OPTIONS.VB);
141
-
142
- return (
143
- <Flex css={{ pr: '$6', size: '100%' }} direction="column">
144
- <Flex align="center" justify="between" css={{ w: '100%', background: '$surface_dim', pb: '$4' }}>
145
- <Text variant="h6" css={{ color: '$on_surface_high', display: 'flex', alignItems: 'center' }}>
146
- Virtual Background {isMobile && loadingEffects ? <Loading size={18} style={{ marginLeft: '0.5rem' }} /> : ''}
147
- </Text>
148
- <Box
149
- css={{ color: '$on_surface_high', '&:hover': { color: '$on_surface_medium' }, cursor: 'pointer' }}
150
- onClick={toggleVB}
151
- >
152
- <CrossIcon />
153
- </Box>
154
- </Flex>
155
-
156
- {showVideoTile ? (
157
- <Video
158
- mirror={track?.facingMode !== 'environment' && mirrorLocalVideo}
159
- trackId={localPeer?.videoTrack}
160
- data-testid="preview_tile"
161
- css={{ width: '100%', height: '16rem' }}
162
- />
163
- ) : null}
164
- <Box
165
- css={{
166
- mt: '$4',
167
- overflowY: 'auto',
168
- flex: '1 1 0',
169
- mr: '-$10',
170
- pr: '$10',
171
- }}
172
- >
173
- <VBCollection
174
- title="Effects"
175
- options={[
176
- {
177
- title: 'No effect',
178
- icon: <CrossCircleIcon style={iconDims} />,
179
- value: HMSVirtualBackgroundTypes.NONE,
180
- onClick: async () => {
181
- await VBHandler.removeEffects();
182
- hmsActions.setAppData(APP_DATA.background, HMSVirtualBackgroundTypes.NONE);
183
- if (isMobile) {
184
- toggleVB();
185
- }
186
- },
187
- supported: true,
188
- },
189
- {
190
- title: 'Blur',
191
- icon: <BlurPersonHighIcon style={iconDims} />,
192
- value: HMSVirtualBackgroundTypes.BLUR,
193
- onClick: async () => {
194
- await VBHandler?.setBlur(blurAmount);
195
- hmsActions.setAppData(APP_DATA.background, HMSVirtualBackgroundTypes.BLUR);
196
- },
197
- supported: isBlurSupported,
198
- },
199
- ]}
200
- activeBackground={background}
201
- />
202
-
203
- {/* Slider */}
204
- <Flex direction="column" css={{ w: '100%', gap: '$8', mt: '$8' }}>
205
- {background === HMSVirtualBackgroundTypes.BLUR && isBlurSupported ? (
206
- <Box>
207
- <Text variant="sm" css={{ color: '$on_surface_high', fontWeight: '$semiBold', mb: '$4' }}>
208
- Blur intensity
209
- </Text>
210
- <Flex css={{ w: '100%', justifyContent: 'space-between', alignItems: 'center', gap: '$4' }}>
211
- <Text variant="caption" css={{ fontWeight: '$medium', color: '$on_surface_medium' }}>
212
- Low
213
- </Text>
214
- <Slider
215
- showTooltip={false}
216
- value={[blurAmount]}
217
- onValueChange={async e => {
218
- setBlurAmount(e[0]);
219
- await VBHandler.setBlur(e[0]);
220
- }}
221
- step={0.1}
222
- min={0.1}
223
- max={1}
224
- />
225
- <Text variant="caption" css={{ fontWeight: '$medium', color: '$on_surface_medium' }}>
226
- High
227
- </Text>
228
- </Flex>
229
- </Box>
230
- ) : null}
231
- </Flex>
232
-
233
- <VBCollection
234
- title="Backgrounds"
235
- options={mediaList.map(mediaURL => ({
236
- mediaURL,
237
- value: mediaURL,
238
- onClick: async () => {
239
- await VBHandler?.setBackground(mediaURL);
240
- hmsActions.setAppData(APP_DATA.background, mediaURL);
241
- if (isMobile) {
242
- toggleVB();
243
- }
244
- },
245
- supported: true,
246
- }))}
247
- activeBackground={background}
248
- />
249
- </Box>
250
- </Flex>
251
- );
252
- };