@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,747 +0,0 @@
1
- import React, { useCallback, useEffect, useRef, useState } from 'react';
2
- import { useFullscreen, useMedia, usePrevious, useToggle } from 'react-use';
3
- import { HLSPlaybackState, HMSHLSPlayer, HMSHLSPlayerEvents } from '@100mslive/hls-player';
4
- import screenfull from 'screenfull';
5
- import { match, P } from 'ts-pattern';
6
- import {
7
- HLSPlaylistType,
8
- HMSNotificationTypes,
9
- selectAppData,
10
- selectHLSState,
11
- selectPeerNameByID,
12
- selectPollByID,
13
- useHMSActions,
14
- useHMSNotifications,
15
- useHMSStore,
16
- useHMSVanillaStore,
17
- } from '@100mslive/react-sdk';
18
- import { ColoredHandIcon, GoLiveIcon } from '@100mslive/react-icons';
19
- import { ChatToggle } from '../components/Footer/ChatToggle';
20
- import { HlsStatsOverlay } from '../components/HlsStatsOverlay';
21
- import { HMSVideoPlayer } from '../components/HMSVideo';
22
- import { FullScreenButton } from '../components/HMSVideo/FullscreenButton';
23
- import { HLSAutoplayBlockedPrompt } from '../components/HMSVideo/HLSAutoplayBlockedPrompt';
24
- import { HLSCaptionSelector } from '../components/HMSVideo/HLSCaptionSelector';
25
- import { HLSQualitySelector } from '../components/HMSVideo/HLSQualitySelector';
26
- import { HLSViewTitle } from '../components/HMSVideo/MwebHLSViewTitle';
27
- import { HMSPlayerContext } from '../components/HMSVideo/PlayerContext';
28
- import { LeaveRoom } from '../components/Leave/LeaveRoom';
29
- import { ToastManager } from '../components/Toast/ToastManager';
30
- import { Button } from '../../Button';
31
- import { IconButton } from '../../IconButton';
32
- import { Box, Flex } from '../../Layout';
33
- import { Loading } from '../../Loading';
34
- import { Text } from '../../Text';
35
- import { config, theme, useTheme } from '../../Theme';
36
- import { Tooltip } from '../../Tooltip';
37
- import { WaitingView } from './WaitingView';
38
- import { useSidepaneToggle } from '../components/AppData/useSidepane';
39
- import { useRoomLayoutConferencingScreen } from '../provider/roomLayoutProvider/hooks/useRoomLayoutScreen';
40
- import { useIsLandscape, useKeyboardHandler } from '../common/hooks';
41
- import { APP_DATA, EMOJI_REACTION_TYPE, POLL_STATE, POLL_VIEWS, SIDE_PANE_OPTIONS } from '../common/constants';
42
-
43
- let hlsPlayer;
44
- const toastMap = {};
45
-
46
- const ToggleChat = ({ isFullScreen = false }) => {
47
- const { elements } = useRoomLayoutConferencingScreen();
48
- const sidepane = useHMSStore(selectAppData(APP_DATA.sidePane));
49
- const showChat = !!elements?.chat;
50
- const isMobile = useMedia(config.media.md);
51
- const hmsActions = useHMSActions();
52
-
53
- useEffect(() => {
54
- match({ sidepane, isMobile, showChat, isFullScreen })
55
- .with({ isFullScreen: true }, () => {
56
- hmsActions.setAppData(APP_DATA.sidePane, '');
57
- })
58
- .with({ isMobile: true, showChat: true, sidepane: P.when(value => !value) }, () => {
59
- hmsActions.setAppData(APP_DATA.sidePane, SIDE_PANE_OPTIONS.CHAT);
60
- })
61
- .with({ showChat: false, isMobile: true, sidepane: SIDE_PANE_OPTIONS.CHAT }, () => {
62
- hmsActions.setAppData(APP_DATA.sidePane, '');
63
- })
64
- .otherwise(() => {
65
- //do nothing
66
- });
67
- }, [sidepane, isMobile, showChat, hmsActions, isFullScreen]);
68
- return null;
69
- };
70
- const HLSView = () => {
71
- const videoRef = useRef(null);
72
- const hlsViewRef = useRef();
73
- const { elements } = useRoomLayoutConferencingScreen();
74
- const hlsState = useHMSStore(selectHLSState);
75
- const enablHlsStats = useHMSStore(selectAppData(APP_DATA.hlsStats));
76
- const notification = useHMSNotifications(HMSNotificationTypes.POLL_STOPPED);
77
- const hmsActions = useHMSActions();
78
- const { themeType } = useTheme();
79
- const [streamEnded, setStreamEnded] = useState(false);
80
- let [hlsStatsState, setHlsStatsState] = useState(null);
81
- const hlsUrl = hlsState.variants[0]?.url;
82
- const [availableLayers, setAvailableLayers] = useState([]);
83
- const [isVideoLive, setIsVideoLive] = useState(true);
84
- const [isCaptionEnabled, setIsCaptionEnabled] = useState(true);
85
- const [hasCaptions, setHasCaptions] = useState(false);
86
- const [currentSelectedQuality, setCurrentSelectedQuality] = useState(null);
87
- const [isHlsAutoplayBlocked, setIsHlsAutoplayBlocked] = useState(false);
88
- const [hoverControlsVisible, setHoverControlsVisible] = useState({
89
- seekForward: false,
90
- pausePlay: false,
91
- seekBackward: false,
92
- });
93
- const [isPaused, setIsPaused] = useState(false);
94
- const [show, toggle] = useToggle(false);
95
- const lastHlsUrl = usePrevious(hlsUrl);
96
- const vanillaStore = useHMSVanillaStore();
97
- const [controlsVisible, setControlsVisible] = useState(true);
98
- const [isUserSelectedAuto, setIsUserSelectedAuto] = useState(true);
99
- const [qualityDropDownOpen, setQualityDropDownOpen] = useState(false);
100
- const controlsRef = useRef(null);
101
- const controlsTimerRef = useRef();
102
- const [seekProgress, setSeekProgress] = useState(false);
103
- const isFullScreenSupported = screenfull.isEnabled;
104
- const toggleChat = useSidepaneToggle(SIDE_PANE_OPTIONS.CHAT);
105
- const showChat = !!elements?.chat;
106
-
107
- const isMobile = useMedia(config.media.md);
108
- const isLandscape = useIsLandscape();
109
-
110
- const isFullScreen = useFullscreen(hlsViewRef, show, {
111
- onClose: () => toggle(false),
112
- });
113
- const [showLoader, setShowLoader] = useState(false);
114
-
115
- // FIXME: move this logic to player controller in next release
116
- useEffect(() => {
117
- /**
118
- * @type {HTMLVideoElement} videoEl
119
- */
120
- const videoEl = videoRef.current;
121
- const showLoader = () => setShowLoader(true);
122
- const hideLoader = () => setShowLoader(false);
123
- videoEl?.addEventListener('playing', hideLoader);
124
- videoEl?.addEventListener('waiting', showLoader);
125
- return () => {
126
- videoEl?.removeEventListener('playing', hideLoader);
127
- videoEl?.removeEventListener('waiting', showLoader);
128
- };
129
- }, []);
130
- useEffect(() => {
131
- if (streamEnded && lastHlsUrl !== hlsUrl) {
132
- setStreamEnded(false);
133
- }
134
- }, [hlsUrl, streamEnded, lastHlsUrl]);
135
-
136
- useEffect(() => {
137
- if (!notification) return;
138
- const toastID = toastMap?.[notification.data.id];
139
- if (toastID) {
140
- ToastManager.removeToast(toastMap[notification.data.id]);
141
- delete toastMap[notification.data.id];
142
- }
143
- }, [notification]);
144
-
145
- useEffect(() => {
146
- const videoElem = videoRef.current;
147
- const setStreamEndedCallback = () => {
148
- setStreamEnded(true);
149
- // no point keeping the callback attached once the streaming is ended
150
- videoElem?.removeEventListener('ended', setStreamEndedCallback);
151
- };
152
- videoElem?.addEventListener('ended', setStreamEndedCallback);
153
- return () => {
154
- videoElem?.removeEventListener('ended', setStreamEndedCallback);
155
- };
156
- }, [hlsUrl]);
157
-
158
- const handleQuality = useCallback(
159
- quality => {
160
- if (hlsPlayer) {
161
- setIsUserSelectedAuto(quality.height?.toString().toLowerCase() === 'auto');
162
- hlsPlayer?.setLayer(quality);
163
- }
164
- },
165
- [availableLayers], //eslint-disable-line
166
- );
167
- /**
168
- * initialize HMSHLSPlayer and add event listeners.
169
- */
170
- useEffect(() => {
171
- let videoEl = videoRef.current;
172
- const manifestLoadedHandler = ({ layers }) => {
173
- setAvailableLayers(layers);
174
- setHasCaptions(hlsPlayer?.hasCaptions());
175
- };
176
- const layerUpdatedHandler = ({ layer }) => {
177
- setCurrentSelectedQuality(layer);
178
- };
179
- const metadataLoadedHandler = ({ payload, ...rest }) => {
180
- const parsePayload = str => {
181
- try {
182
- return JSON.parse(str);
183
- } catch (e) {
184
- return str;
185
- }
186
- };
187
- const duration = rest.duration;
188
- const parsedPayload = parsePayload(payload);
189
- // check if poll happened
190
- if (parsedPayload.startsWith('poll:')) {
191
- const pollId = parsedPayload.substr(parsedPayload.indexOf(':') + 1);
192
- const poll = vanillaStore.getState(selectPollByID(pollId));
193
- const pollStartedBy = vanillaStore.getState(selectPeerNameByID(poll.startedBy)) || 'Participant';
194
- // launch poll
195
- if (!toastMap[pollId]) {
196
- const toastID = ToastManager.addToast({
197
- title: `${pollStartedBy} started a ${poll.type}: ${poll.title}`,
198
- action: (
199
- <Button
200
- onClick={() => {
201
- hmsActions.setAppData(APP_DATA.pollState, {
202
- [POLL_STATE.pollInView]: pollId,
203
- [POLL_STATE.view]: POLL_VIEWS.VOTE,
204
- });
205
- hmsActions.setAppData(APP_DATA.sidePane, SIDE_PANE_OPTIONS.POLLS);
206
- }}
207
- variant="standard"
208
- css={{
209
- backgroundColor: '$surface_bright',
210
- fontWeight: '$semiBold',
211
- color: '$on_surface_high',
212
- p: '$xs $md',
213
- }}
214
- >
215
- {poll.type === 'quiz' ? 'Answer' : 'Vote'}
216
- </Button>
217
- ),
218
- duration: Infinity,
219
- });
220
- toastMap[pollId] = toastID;
221
- }
222
- return;
223
- }
224
- switch (parsedPayload.type) {
225
- case EMOJI_REACTION_TYPE:
226
- window.showFlyingEmoji?.({ emojiId: parsedPayload?.emojiId, senderId: parsedPayload?.senderId });
227
- break;
228
- default: {
229
- const toast = {
230
- title: `Payload from timed Metadata ${parsedPayload}`,
231
- duration: duration || 3000,
232
- };
233
- console.debug('Added toast ', JSON.stringify(toast));
234
- ToastManager.addToast(toast);
235
- break;
236
- }
237
- }
238
- };
239
- const handleError = data => {
240
- console.error('[HLSView] error in hls', `${data}`);
241
- };
242
- const handleNoLongerLive = ({ isLive }) => {
243
- setIsVideoLive(isLive);
244
- };
245
-
246
- const playbackEventHandler = data => {
247
- setIsPaused(data.state === HLSPlaybackState.paused);
248
- setHoverControlsVisible({
249
- ...hoverControlsVisible,
250
- pausePlay: true,
251
- });
252
- setTimeout(() => {
253
- setHoverControlsVisible({
254
- ...hoverControlsVisible,
255
- pausePlay: false,
256
- });
257
- }, 2000);
258
- };
259
- const captionEnabledEventHandler = isCaptionEnabled => {
260
- setIsCaptionEnabled(isCaptionEnabled);
261
- };
262
-
263
- const handleAutoplayBlock = data => setIsHlsAutoplayBlocked(!!data);
264
- if (videoEl && hlsUrl) {
265
- hlsPlayer = new HMSHLSPlayer(hlsUrl, videoEl);
266
- hlsPlayer.on(HMSHLSPlayerEvents.SEEK_POS_BEHIND_LIVE_EDGE, handleNoLongerLive);
267
- hlsPlayer.on(HMSHLSPlayerEvents.TIMED_METADATA_LOADED, metadataLoadedHandler);
268
- hlsPlayer.on(HMSHLSPlayerEvents.ERROR, handleError);
269
- hlsPlayer.on(HMSHLSPlayerEvents.PLAYBACK_STATE, playbackEventHandler);
270
- hlsPlayer.on(HMSHLSPlayerEvents.CAPTION_ENABLED, captionEnabledEventHandler);
271
- hlsPlayer.on(HMSHLSPlayerEvents.AUTOPLAY_BLOCKED, handleAutoplayBlock);
272
-
273
- hlsPlayer.on(HMSHLSPlayerEvents.MANIFEST_LOADED, manifestLoadedHandler);
274
- hlsPlayer.on(HMSHLSPlayerEvents.LAYER_UPDATED, layerUpdatedHandler);
275
- return () => {
276
- hlsPlayer.off(HMSHLSPlayerEvents.SEEK_POS_BEHIND_LIVE_EDGE, handleNoLongerLive);
277
- hlsPlayer.off(HMSHLSPlayerEvents.ERROR, handleError);
278
- hlsPlayer.off(HMSHLSPlayerEvents.TIMED_METADATA_LOADED, metadataLoadedHandler);
279
- hlsPlayer.off(HMSHLSPlayerEvents.PLAYBACK_STATE, playbackEventHandler);
280
- hlsPlayer.off(HMSHLSPlayerEvents.CAPTION_ENABLED, captionEnabledEventHandler);
281
-
282
- hlsPlayer.off(HMSHLSPlayerEvents.AUTOPLAY_BLOCKED, handleAutoplayBlock);
283
- hlsPlayer.off(HMSHLSPlayerEvents.MANIFEST_LOADED, manifestLoadedHandler);
284
- hlsPlayer.off(HMSHLSPlayerEvents.LAYER_UPDATED, layerUpdatedHandler);
285
- hlsPlayer.reset();
286
- };
287
- }
288
- // eslint-disable-next-line react-hooks/exhaustive-deps
289
- }, [hlsUrl, vanillaStore, hmsActions]);
290
-
291
- /**
292
- * initialize and subscribe to hlsState
293
- */
294
- useEffect(() => {
295
- const onHLSStats = state => setHlsStatsState(state);
296
- if (enablHlsStats) {
297
- hlsPlayer?.on(HMSHLSPlayerEvents.STATS, onHLSStats);
298
- } else {
299
- hlsPlayer?.off(HMSHLSPlayerEvents.STATS, onHLSStats);
300
- }
301
- return () => {
302
- hlsPlayer?.off(HMSHLSPlayerEvents.STATS, onHLSStats);
303
- };
304
- }, [enablHlsStats]);
305
-
306
- const unblockAutoPlay = async () => {
307
- try {
308
- await hlsPlayer.play();
309
- setIsHlsAutoplayBlocked(false);
310
- } catch (error) {
311
- console.error('Tried to unblock Autoplay failed with', error.message);
312
- }
313
- };
314
-
315
- const sfnOverlayClose = () => {
316
- hmsActions.setAppData(APP_DATA.hlsStats, !enablHlsStats);
317
- };
318
-
319
- useEffect(() => {
320
- if (controlsVisible && isFullScreen && !qualityDropDownOpen) {
321
- if (controlsTimerRef.current) {
322
- clearTimeout(controlsTimerRef.current);
323
- }
324
- }
325
- if (!isFullScreen && controlsTimerRef.current) {
326
- clearTimeout(controlsTimerRef.current);
327
- }
328
- controlsTimerRef.current = setTimeout(() => {
329
- if (!seekProgress) {
330
- setControlsVisible(false);
331
- }
332
- }, 5000);
333
- return () => {
334
- if (controlsTimerRef.current) {
335
- clearTimeout(controlsTimerRef.current);
336
- }
337
- };
338
- }, [controlsVisible, isFullScreen, seekProgress, qualityDropDownOpen]);
339
-
340
- const onSeekTo = useCallback(
341
- seek => {
342
- match({ isLandscape, isMobile, seek })
343
- .with({ seek: -10, isMobile: false, isLandscape: false }, () => {
344
- setHoverControlsVisible({ ...hoverControlsVisible, seekBackward: true });
345
- setTimeout(() => {
346
- setHoverControlsVisible({
347
- ...hoverControlsVisible,
348
- seekBackward: false,
349
- });
350
- }, 1000);
351
- })
352
- .with({ seek: 10, isMobile: false, isLandscape: false }, () => {
353
- setHoverControlsVisible({ ...hoverControlsVisible, seekForward: true });
354
- setTimeout(() => {
355
- setHoverControlsVisible({
356
- ...hoverControlsVisible,
357
- seekForward: false,
358
- });
359
- }, 1000);
360
- })
361
- .otherwise(() => null);
362
- hlsPlayer?.seekTo(videoRef.current?.currentTime + seek);
363
- },
364
- [hoverControlsVisible, isLandscape, isMobile],
365
- );
366
- const onDoubleClickHandler = useCallback(
367
- event => {
368
- if (!(isMobile || isLandscape) || hlsState?.variants[0]?.playlist_type !== HLSPlaylistType.DVR) {
369
- return;
370
- }
371
- const sidePercentage = (event.screenX * 100) / event.target.clientWidth;
372
- // there is space for pause/unpause button
373
- if (sidePercentage < 45) {
374
- setHoverControlsVisible({
375
- ...hoverControlsVisible,
376
- seekBackward: true,
377
- });
378
- onSeekTo(-10);
379
- } else {
380
- setHoverControlsVisible({
381
- ...hoverControlsVisible,
382
- seekForward: true,
383
- });
384
- onSeekTo(10);
385
- }
386
- setTimeout(() => {
387
- setHoverControlsVisible({
388
- ...hoverControlsVisible,
389
- seekForward: false,
390
- seekBackward: false,
391
- });
392
- }, 1000);
393
- },
394
- [hlsState?.variants, hoverControlsVisible, isLandscape, isMobile, onSeekTo],
395
- );
396
-
397
- const onClickHandler = useCallback(async () => {
398
- match({ isMobile, isLandscape, playlist_type: hlsState?.variants[0]?.playlist_type })
399
- .with({ playlist_type: HLSPlaylistType.DVR, isMobile: false, isLandscape: false }, async () => {
400
- if (isPaused) {
401
- await hlsPlayer?.play();
402
- } else {
403
- hlsPlayer?.pause();
404
- }
405
- })
406
- .when(
407
- ({ isMobile, isLandscape }) => isMobile || isLandscape,
408
- () => {
409
- setControlsVisible(value => !value);
410
- if (controlsTimerRef.current) {
411
- clearTimeout(controlsTimerRef.current);
412
- }
413
- },
414
- )
415
- .otherwise(() => null);
416
- }, [hlsState?.variants, isLandscape, isMobile, isPaused]);
417
-
418
- const onHoverHandler = useCallback(
419
- event => {
420
- event.preventDefault();
421
- if (isMobile || isLandscape) {
422
- return;
423
- }
424
- if (event.type === 'mouseenter' || qualityDropDownOpen) {
425
- setControlsVisible(true);
426
- return;
427
- }
428
- if (event.type === 'mouseleave' && !seekProgress) {
429
- setControlsVisible(false);
430
- } else if (!controlsVisible && event.type === 'mousemove') {
431
- setControlsVisible(true);
432
- if (controlsTimerRef.current) {
433
- clearTimeout(controlsTimerRef.current);
434
- }
435
- }
436
- },
437
- [controlsVisible, isLandscape, isMobile, qualityDropDownOpen, seekProgress],
438
- );
439
-
440
- const keyHandler = useKeyboardHandler(isPaused, hlsPlayer);
441
-
442
- if (!hlsUrl || streamEnded) {
443
- return (
444
- <>
445
- <ToggleChat />
446
- {hlsViewRef.current && (isMobile || isLandscape) && (
447
- <Box css={{ position: 'fixed', left: '$4', top: '$4', zIndex: 11 }}>
448
- <LeaveRoom screenType="hls_live_streaming" container={hlsViewRef.current} />
449
- </Box>
450
- )}
451
- <Flex
452
- key="hls-viewer"
453
- id={`hls-viewer-${themeType}`}
454
- ref={hlsViewRef}
455
- direction={isMobile || isLandscape ? 'column' : 'row'}
456
- justify="center"
457
- css={{
458
- flex: isLandscape ? '2 1 0' : '1 1 0',
459
- }}
460
- >
461
- {streamEnded ? (
462
- <WaitingView
463
- icon={<ColoredHandIcon height={56} width={56} />}
464
- title="Stream has ended"
465
- subtitle="Have a nice day!"
466
- />
467
- ) : (
468
- <WaitingView
469
- icon={<GoLiveIcon height={56} width={56} style={{ color: 'white' }} />}
470
- title="Stream yet to start"
471
- subtitle="Sit back and relax"
472
- />
473
- )}
474
- </Flex>
475
- </>
476
- );
477
- }
478
- return (
479
- <Flex
480
- key="hls-viewer"
481
- id={`hls-viewer-${themeType}`}
482
- ref={hlsViewRef}
483
- direction={isMobile || isLandscape ? 'column' : 'row'}
484
- justify="center"
485
- css={{
486
- flex: isLandscape ? '2 1 0' : '1 1 0',
487
- transition: 'all 0.3s ease-in-out',
488
- }}
489
- >
490
- {hlsViewRef.current && (isMobile || isLandscape) && (
491
- <Box css={{ position: 'fixed', left: '$4', top: '$4', zIndex: 11 }}>
492
- <LeaveRoom screenType="hls_live_streaming" container={hlsViewRef.current} />
493
- </Box>
494
- )}
495
-
496
- <HMSPlayerContext.Provider value={{ hlsPlayer }}>
497
- {hlsStatsState?.url && enablHlsStats && !(isMobile || isLandscape) ? (
498
- <HlsStatsOverlay hlsStatsState={hlsStatsState} onClose={sfnOverlayClose} />
499
- ) : null}
500
- <Flex
501
- id="hls-player-container"
502
- align="center"
503
- justify="center"
504
- css={{
505
- size: '100%',
506
- margin: '0 auto',
507
- '@md': {
508
- height: 'auto',
509
- },
510
- outline: 'none',
511
- }}
512
- onKeyDown={async event => {
513
- if (hlsState?.variants[0]?.playlist_type === HLSPlaylistType.DVR) {
514
- await keyHandler(event);
515
- }
516
- }}
517
- tabIndex="0"
518
- >
519
- {!(isMobile || isLandscape) && (
520
- <HLSAutoplayBlockedPrompt open={isHlsAutoplayBlocked} unblockAutoPlay={unblockAutoPlay} />
521
- )}
522
- {showLoader && (
523
- <Flex
524
- align="center"
525
- justify="center"
526
- css={{
527
- position: 'absolute',
528
- }}
529
- >
530
- <Loading width={72} height={72} />
531
- </Flex>
532
- )}
533
- <HMSVideoPlayer.Root
534
- ref={videoRef}
535
- onMouseEnter={onHoverHandler}
536
- onMouseMove={onHoverHandler}
537
- onMouseLeave={onHoverHandler}
538
- onClick={onClickHandler}
539
- isFullScreen={isFullScreen}
540
- onDoubleClick={e => {
541
- onDoubleClickHandler(e);
542
- }}
543
- >
544
- <>
545
- {!(isMobile || isLandscape) && (
546
- <Flex
547
- align="center"
548
- justify="between"
549
- css={{
550
- position: 'absolute',
551
- bg: `${
552
- hoverControlsVisible.pausePlay ||
553
- hoverControlsVisible.seekBackward ||
554
- hoverControlsVisible.seekForward
555
- ? '#00000066'
556
- : ''
557
- }`,
558
- display: 'inline-flex',
559
- gap: '$2',
560
- zIndex: 1,
561
- size: '100%',
562
- }}
563
- >
564
- {!showLoader && hlsState?.variants[0]?.playlist_type === HLSPlaylistType.DVR && (
565
- <HMSVideoPlayer.PlayPauseSeekControls.Overlay
566
- isPaused={isPaused}
567
- showControls={controlsVisible}
568
- hoverControlsVisible={hoverControlsVisible}
569
- />
570
- )}
571
- </Flex>
572
- )}
573
- {isMobile || isLandscape ? (
574
- <>
575
- {!showLoader && hlsState?.variants[0]?.playlist_type === HLSPlaylistType.DVR && (
576
- <HMSVideoPlayer.PlayPauseSeekControls.Overlay
577
- isPaused={isPaused}
578
- showControls={controlsVisible}
579
- hoverControlsVisible={hoverControlsVisible}
580
- />
581
- )}
582
- <Flex
583
- ref={controlsRef}
584
- direction="column"
585
- justify="start"
586
- align="start"
587
- css={{
588
- position: 'absolute',
589
- top: '0',
590
- left: '0',
591
- width: '100%',
592
- flexShrink: 0,
593
- zIndex: 1,
594
- visibility: controlsVisible ? `` : `hidden`,
595
- opacity: controlsVisible ? `1` : '0',
596
- }}
597
- >
598
- <HMSVideoPlayer.Controls.Root
599
- css={{
600
- p: '$4 $8',
601
- }}
602
- onClick={e => e.stopPropagation()}
603
- >
604
- <HMSVideoPlayer.Controls.Right>
605
- {(isLandscape || (isMobile && isFullScreen)) && showChat && (
606
- <ChatToggle
607
- onClick={() => {
608
- if (isFullScreen) {
609
- toggle();
610
- }
611
- // toggle and closing fullscreen takes few ms, to make it synced we are calling settimeout
612
- setTimeout(() => {
613
- toggleChat();
614
- }, 0);
615
- }}
616
- />
617
- )}
618
- {hasCaptions && !isHlsAutoplayBlocked && <HLSCaptionSelector isEnabled={isCaptionEnabled} />}
619
- {hlsViewRef.current && availableLayers.length > 0 && !isHlsAutoplayBlocked ? (
620
- <HLSQualitySelector
621
- layers={availableLayers}
622
- onOpenChange={setQualityDropDownOpen}
623
- open={qualityDropDownOpen}
624
- selection={currentSelectedQuality}
625
- onQualityChange={handleQuality}
626
- isAuto={isUserSelectedAuto}
627
- containerRef={hlsViewRef.current}
628
- />
629
- ) : null}
630
- <HLSAutoplayBlockedPrompt open={isHlsAutoplayBlocked} unblockAutoPlay={unblockAutoPlay} />
631
- </HMSVideoPlayer.Controls.Right>
632
- </HMSVideoPlayer.Controls.Root>
633
- </Flex>
634
- </>
635
- ) : null}
636
- {controlsVisible && (
637
- <Flex
638
- ref={controlsRef}
639
- direction={isMobile ? 'columnReverse' : 'column'}
640
- justify="end"
641
- align="start"
642
- css={{
643
- position: 'absolute',
644
- bottom: isFullScreen && hlsState?.variants[0]?.playlist_type === HLSPlaylistType.DVR ? '$8' : '0',
645
- left: '0',
646
- zIndex: 1,
647
- background:
648
- isMobile || isLandscape
649
- ? ''
650
- : `linear-gradient(180deg, ${theme.colors.background_dim.value}00 29.46%, ${theme.colors.background_dim.value}A3 100%);`,
651
- width: '100%',
652
- pt: '$8',
653
- flexShrink: 0,
654
- transition: 'visibility 0s 0.5s, opacity 0.5s linear',
655
- }}
656
- >
657
- {hlsState?.variants[0]?.playlist_type === HLSPlaylistType.DVR ? (
658
- <HMSVideoPlayer.Progress seekProgress={seekProgress} setSeekProgress={setSeekProgress} />
659
- ) : null}
660
- <HMSVideoPlayer.Controls.Root
661
- css={{
662
- p: '$4 $8',
663
- }}
664
- onClick={e => e.stopPropagation()}
665
- >
666
- <HMSVideoPlayer.Controls.Left>
667
- {!(isMobile || isLandscape) && (
668
- <>
669
- {hlsState?.variants[0]?.playlist_type === HLSPlaylistType.DVR ? (
670
- <>
671
- <HMSVideoPlayer.PlayPauseSeekControls.Button isPaused={isPaused} onSeekTo={onSeekTo} />
672
- {!isVideoLive ? <HMSVideoPlayer.Duration /> : null}
673
- </>
674
- ) : null}
675
- <HMSVideoPlayer.Volume />
676
- </>
677
- )}
678
- <IconButton
679
- css={{ px: '$2' }}
680
- onClick={async e => {
681
- e.stopPropagation();
682
- await hlsPlayer?.seekToLivePosition();
683
- setIsVideoLive(true);
684
- }}
685
- key="jump-to-live_btn"
686
- data-testid="jump-to-live_btn"
687
- >
688
- <Tooltip title={isVideoLive ? 'Live' : 'Go to Live'} side="top">
689
- <Flex justify="center" gap={2} align="center">
690
- <Box
691
- css={{
692
- height: '$4',
693
- width: '$4',
694
- background: isVideoLive ? '$alert_error_default' : '$on_primary_medium',
695
- r: '$1',
696
- }}
697
- />
698
- <Text
699
- variant="$body1"
700
- css={{
701
- c: isVideoLive ? '$on_surface_high' : '$on_surface_medium',
702
- fontWeight: '$semiBold',
703
- }}
704
- >
705
- {isVideoLive ? 'LIVE' : 'GO LIVE'}
706
- </Text>
707
- </Flex>
708
- </Tooltip>
709
- </IconButton>
710
- {(isMobile || isLandscape) &&
711
- !isVideoLive &&
712
- hlsState?.variants[0]?.playlist_type === HLSPlaylistType.DVR ? (
713
- <HMSVideoPlayer.Duration />
714
- ) : null}
715
- </HMSVideoPlayer.Controls.Left>
716
-
717
- <HMSVideoPlayer.Controls.Right>
718
- {hasCaptions && !(isMobile || isLandscape) && <HLSCaptionSelector isEnabled={isCaptionEnabled} />}
719
- {availableLayers.length > 0 && !(isMobile || isLandscape) ? (
720
- <HLSQualitySelector
721
- layers={availableLayers}
722
- onOpenChange={setQualityDropDownOpen}
723
- open={qualityDropDownOpen}
724
- selection={currentSelectedQuality}
725
- onQualityChange={handleQuality}
726
- isAuto={isUserSelectedAuto}
727
- containerRef={hlsViewRef.current}
728
- />
729
- ) : null}
730
- {isFullScreenSupported ? (
731
- <FullScreenButton isFullScreen={isFullScreen} onToggle={toggle} />
732
- ) : null}
733
- </HMSVideoPlayer.Controls.Right>
734
- </HMSVideoPlayer.Controls.Root>
735
- </Flex>
736
- )}
737
- </>
738
- </HMSVideoPlayer.Root>
739
- </Flex>
740
- </HMSPlayerContext.Provider>
741
- <ToggleChat isFullScreen={isFullScreen} />
742
- {isMobile && !isFullScreen && <HLSViewTitle />}
743
- </Flex>
744
- );
745
- };
746
-
747
- export default HLSView;