@100mslive/roomkit-react 0.4.3-alpha.0 → 0.4.3-alpha.10

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 (442) hide show
  1. package/dist/index.cjs.css +214 -223
  2. package/dist/index.cjs.css.map +3 -3
  3. package/dist/index.cjs.js +489 -727
  4. package/dist/index.cjs.js.map +4 -4
  5. package/dist/index.css +214 -223
  6. package/dist/index.css.map +3 -3
  7. package/dist/index.js +501 -739
  8. package/dist/index.js.map +4 -4
  9. package/dist/meta.cjs.json +93 -149
  10. package/dist/meta.esbuild.json +92 -148
  11. package/package.json +10 -24
  12. package/src/Accordion/Accordion.stories.tsx +0 -50
  13. package/src/Accordion/Accordion.tsx +0 -88
  14. package/src/Accordion/index.ts +0 -8
  15. package/src/AudioLevel/AudioLevel.tsx +0 -84
  16. package/src/AudioLevel/audio-level.png +0 -0
  17. package/src/AudioLevel/index.ts +0 -2
  18. package/src/AudioLevel/useBorderAudioLevel.tsx +0 -34
  19. package/src/Avatar/Avatar.stories.tsx +0 -33
  20. package/src/Avatar/Avatar.tsx +0 -60
  21. package/src/Avatar/getAvatarBg.ts +0 -50
  22. package/src/Avatar/index.ts +0 -1
  23. package/src/Button/Button.mdx +0 -43
  24. package/src/Button/Button.stories.tsx +0 -52
  25. package/src/Button/Button.tsx +0 -210
  26. package/src/Button/index.tsx +0 -1
  27. package/src/Chat/Chat.mdx +0 -39
  28. package/src/Chat/Chat.stories.tsx +0 -39
  29. package/src/Checkbox/Checkbox.stories.tsx +0 -61
  30. package/src/Checkbox/Checkbox.tsx +0 -35
  31. package/src/Checkbox/index.tsx +0 -1
  32. package/src/Collapsible/Collapsible.tsx +0 -34
  33. package/src/Collapsible/index.tsx +0 -1
  34. package/src/Diagnostics/AudioTest.tsx +0 -188
  35. package/src/Diagnostics/BrowserTest.tsx +0 -141
  36. package/src/Diagnostics/ConnectivityTest.tsx +0 -383
  37. package/src/Diagnostics/DeviceSelector.jsx +0 -71
  38. package/src/Diagnostics/Diagnostics.tsx +0 -190
  39. package/src/Diagnostics/DiagnosticsContext.ts +0 -46
  40. package/src/Diagnostics/VideoTest.tsx +0 -72
  41. package/src/Diagnostics/components.tsx +0 -70
  42. package/src/Diagnostics/index.ts +0 -1
  43. package/src/Divider/Divider.tsx +0 -45
  44. package/src/Divider/HorizontalDivider.stories.tsx +0 -34
  45. package/src/Divider/VerticalDivider.stories.tsx +0 -40
  46. package/src/Divider/index.ts +0 -1
  47. package/src/Dropdown/Dropdown.stories.tsx +0 -94
  48. package/src/Dropdown/Dropdown.tsx +0 -145
  49. package/src/Dropdown/index.tsx +0 -1
  50. package/src/Fieldset/Fieldset.stories.tsx +0 -29
  51. package/src/Fieldset/Fieldset.tsx +0 -11
  52. package/src/Fieldset/index.tsx +0 -1
  53. package/src/Footer/Footer.stories.tsx +0 -61
  54. package/src/Footer/Footer.tsx +0 -47
  55. package/src/Footer/index.tsx +0 -1
  56. package/src/IconButton/IconButton.tsx +0 -43
  57. package/src/IconButton/index.tsx +0 -1
  58. package/src/Icons/Icons.stories.mdx +0 -10
  59. package/src/Icons/IconsList.jsx +0 -17
  60. package/src/Input/Input.stories.tsx +0 -25
  61. package/src/Input/Input.tsx +0 -109
  62. package/src/Input/PasswordInput.stories.tsx +0 -53
  63. package/src/Input/index.tsx +0 -1
  64. package/src/Introduction/Integrating.stories.mdx +0 -100
  65. package/src/Introduction/Introduction.stories.mdx +0 -9
  66. package/src/Label/Label.tsx +0 -8
  67. package/src/Label/index.ts +0 -1
  68. package/src/Layout/Box.tsx +0 -3
  69. package/src/Layout/Flex.tsx +0 -76
  70. package/src/Layout/index.tsx +0 -2
  71. package/src/Link/Link.stories.tsx +0 -18
  72. package/src/Link/Link.tsx +0 -54
  73. package/src/Link/index.tsx +0 -2
  74. package/src/Loading/Loading.mdx +0 -15
  75. package/src/Loading/Loading.stories.tsx +0 -37
  76. package/src/Loading/Loading.tsx +0 -30
  77. package/src/Loading/index.ts +0 -1
  78. package/src/Modal/Dialog.mdx +0 -19
  79. package/src/Modal/Dialog.stories.tsx +0 -68
  80. package/src/Modal/Dialog.tsx +0 -57
  81. package/src/Modal/DialogContent.tsx +0 -65
  82. package/src/Modal/index.ts +0 -1
  83. package/src/Pagination/StyledPagination.stories.tsx +0 -80
  84. package/src/Pagination/StyledPagination.tsx +0 -70
  85. package/src/Pagination/index.tsx +0 -1
  86. package/src/Popover/Popover.mdx +0 -9
  87. package/src/Popover/Popover.stories.tsx +0 -95
  88. package/src/Popover/index.tsx +0 -34
  89. package/src/Prebuilt/App.tsx +0 -318
  90. package/src/Prebuilt/AppContext.tsx +0 -33
  91. package/src/Prebuilt/AppStateContext.tsx +0 -95
  92. package/src/Prebuilt/IconButton.tsx +0 -26
  93. package/src/Prebuilt/Prebuilt.stories.tsx +0 -46
  94. package/src/Prebuilt/common/PeersSorter.ts +0 -111
  95. package/src/Prebuilt/common/constants.ts +0 -151
  96. package/src/Prebuilt/common/hooks.ts +0 -257
  97. package/src/Prebuilt/common/utils.js +0 -185
  98. package/src/Prebuilt/components/AppData/AppData.tsx +0 -208
  99. package/src/Prebuilt/components/AppData/useChatState.js +0 -18
  100. package/src/Prebuilt/components/AppData/useSheet.ts +0 -33
  101. package/src/Prebuilt/components/AppData/useSidepane.js +0 -99
  102. package/src/Prebuilt/components/AppData/useSidepaneResetOnLayoutUpdate.tsx +0 -22
  103. package/src/Prebuilt/components/AppData/useUISettings.js +0 -212
  104. package/src/Prebuilt/components/AudioVideoToggle.tsx +0 -411
  105. package/src/Prebuilt/components/AuthToken.tsx +0 -148
  106. package/src/Prebuilt/components/CaptionIcon.tsx +0 -27
  107. package/src/Prebuilt/components/Chat/ArrowNavigation.tsx +0 -44
  108. package/src/Prebuilt/components/Chat/Chat.tsx +0 -190
  109. package/src/Prebuilt/components/Chat/ChatActions.tsx +0 -314
  110. package/src/Prebuilt/components/Chat/ChatBody.tsx +0 -493
  111. package/src/Prebuilt/components/Chat/ChatFooter.tsx +0 -316
  112. package/src/Prebuilt/components/Chat/ChatSelector.tsx +0 -228
  113. package/src/Prebuilt/components/Chat/ChatSelectorContainer.tsx +0 -158
  114. package/src/Prebuilt/components/Chat/ChatStates.tsx +0 -73
  115. package/src/Prebuilt/components/Chat/EmptyChat.tsx +0 -58
  116. package/src/Prebuilt/components/Chat/MwebChatOption.tsx +0 -24
  117. package/src/Prebuilt/components/Chat/PinnedMessage.tsx +0 -140
  118. package/src/Prebuilt/components/Chat/StickIndicator.tsx +0 -24
  119. package/src/Prebuilt/components/Chat/useEmojiPickerStyles.js +0 -32
  120. package/src/Prebuilt/components/Chat/useUnreadCount.ts +0 -19
  121. package/src/Prebuilt/components/Chat/utils.ts +0 -11
  122. package/src/Prebuilt/components/ChatSettings.tsx +0 -68
  123. package/src/Prebuilt/components/Chip.tsx +0 -40
  124. package/src/Prebuilt/components/ConferenceScreen.tsx +0 -205
  125. package/src/Prebuilt/components/Connection/ConnectionIndicator.tsx +0 -89
  126. package/src/Prebuilt/components/Connection/TileConnection.tsx +0 -93
  127. package/src/Prebuilt/components/Connection/connectionQualityUtils.js +0 -37
  128. package/src/Prebuilt/components/EmojiReaction.jsx +0 -100
  129. package/src/Prebuilt/components/EndCallFeedback/Feedback.tsx +0 -71
  130. package/src/Prebuilt/components/EndCallFeedback/FeedbackForm.tsx +0 -381
  131. package/src/Prebuilt/components/EndCallFeedback/ThankyouView.tsx +0 -64
  132. package/src/Prebuilt/components/ErrorBoundary.jsx +0 -102
  133. package/src/Prebuilt/components/Footer/ChatToggle.tsx +0 -53
  134. package/src/Prebuilt/components/Footer/EmojiCard.jsx +0 -34
  135. package/src/Prebuilt/components/Footer/Footer.tsx +0 -115
  136. package/src/Prebuilt/components/Footer/PaginatedParticipants.tsx +0 -124
  137. package/src/Prebuilt/components/Footer/ParticipantList.tsx +0 -478
  138. package/src/Prebuilt/components/Footer/PollsToggle.tsx +0 -37
  139. package/src/Prebuilt/components/Footer/RoleAccordion.tsx +0 -183
  140. package/src/Prebuilt/components/Footer/RoleOptions.tsx +0 -215
  141. package/src/Prebuilt/components/Footer/WhiteboardToggle.tsx +0 -52
  142. package/src/Prebuilt/components/FullPageProgress.tsx +0 -22
  143. package/src/Prebuilt/components/HMSVideo/Controls.jsx +0 -22
  144. package/src/Prebuilt/components/HMSVideo/FullscreenButton.tsx +0 -13
  145. package/src/Prebuilt/components/HMSVideo/HLSAutoplayBlockedPrompt.tsx +0 -72
  146. package/src/Prebuilt/components/HMSVideo/HLSCaptionSelector.tsx +0 -15
  147. package/src/Prebuilt/components/HMSVideo/HLSQualitySelector.tsx +0 -248
  148. package/src/Prebuilt/components/HMSVideo/HMSVideo.jsx +0 -75
  149. package/src/Prebuilt/components/HMSVideo/MwebHLSViewTitle.tsx +0 -86
  150. package/src/Prebuilt/components/HMSVideo/PlayPauseButton.tsx +0 -27
  151. package/src/Prebuilt/components/HMSVideo/PlayPauseSeekControls.tsx +0 -158
  152. package/src/Prebuilt/components/HMSVideo/PlayerContext.tsx +0 -15
  153. package/src/Prebuilt/components/HMSVideo/SeekControl.tsx +0 -22
  154. package/src/Prebuilt/components/HMSVideo/VideoProgress.tsx +0 -100
  155. package/src/Prebuilt/components/HMSVideo/VideoTime.tsx +0 -52
  156. package/src/Prebuilt/components/HMSVideo/VolumeControl.tsx +0 -70
  157. package/src/Prebuilt/components/HMSVideo/index.ts +0 -24
  158. package/src/Prebuilt/components/HMSVideo/utils.ts +0 -37
  159. package/src/Prebuilt/components/Header/Header.tsx +0 -52
  160. package/src/Prebuilt/components/Header/HeaderComponents.jsx +0 -57
  161. package/src/Prebuilt/components/Header/ParticipantFilter.jsx +0 -89
  162. package/src/Prebuilt/components/Header/RoomDetailsHeader.tsx +0 -51
  163. package/src/Prebuilt/components/Header/StreamActions.tsx +0 -297
  164. package/src/Prebuilt/components/Header/common.jsx +0 -196
  165. package/src/Prebuilt/components/Header/index.tsx +0 -1
  166. package/src/Prebuilt/components/HlsStatsOverlay.jsx +0 -89
  167. package/src/Prebuilt/components/IconButtonWithOptions/IconButtonWithOptions.stories.tsx +0 -40
  168. package/src/Prebuilt/components/IconButtonWithOptions/IconButtonWithOptions.tsx +0 -167
  169. package/src/Prebuilt/components/Input/KeyboardInputManager.js +0 -107
  170. package/src/Prebuilt/components/InsetTile.tsx +0 -136
  171. package/src/Prebuilt/components/LayoutModeSelector.tsx +0 -112
  172. package/src/Prebuilt/components/Leave/DesktopLeaveRoom.tsx +0 -166
  173. package/src/Prebuilt/components/Leave/EndSessionContent.tsx +0 -64
  174. package/src/Prebuilt/components/Leave/LeaveAtoms.tsx +0 -26
  175. package/src/Prebuilt/components/Leave/LeaveCard.tsx +0 -36
  176. package/src/Prebuilt/components/Leave/LeaveRoom.tsx +0 -82
  177. package/src/Prebuilt/components/Leave/LeaveSessionContent.tsx +0 -61
  178. package/src/Prebuilt/components/Leave/MwebLeaveRoom.tsx +0 -135
  179. package/src/Prebuilt/components/LeaveScreen.tsx +0 -71
  180. package/src/Prebuilt/components/MoreSettings/ActionTile.jsx +0 -60
  181. package/src/Prebuilt/components/MoreSettings/BulkRoleChangeModal.jsx +0 -139
  182. package/src/Prebuilt/components/MoreSettings/CaptionContent.tsx +0 -143
  183. package/src/Prebuilt/components/MoreSettings/CaptionModal.tsx +0 -37
  184. package/src/Prebuilt/components/MoreSettings/ChangeNameContent.tsx +0 -123
  185. package/src/Prebuilt/components/MoreSettings/ChangeNameModal.tsx +0 -78
  186. package/src/Prebuilt/components/MoreSettings/EmbedUrl.jsx +0 -81
  187. package/src/Prebuilt/components/MoreSettings/FullScreenItem.tsx +0 -26
  188. package/src/Prebuilt/components/MoreSettings/MoreSettings.tsx +0 -29
  189. package/src/Prebuilt/components/MoreSettings/MuteAllContent.tsx +0 -81
  190. package/src/Prebuilt/components/MoreSettings/MuteAllModal.tsx +0 -72
  191. package/src/Prebuilt/components/MoreSettings/SplitComponents/DesktopOptions.tsx +0 -282
  192. package/src/Prebuilt/components/MoreSettings/SplitComponents/MwebOptions.tsx +0 -387
  193. package/src/Prebuilt/components/MoreSettings/constants.ts +0 -14
  194. package/src/Prebuilt/components/MwebLandscapePrompt.tsx +0 -81
  195. package/src/Prebuilt/components/Notifications/AutoplayBlockedModal.tsx +0 -39
  196. package/src/Prebuilt/components/Notifications/ChatNotifications.tsx +0 -34
  197. package/src/Prebuilt/components/Notifications/DeviceChangeNotifications.tsx +0 -18
  198. package/src/Prebuilt/components/Notifications/DeviceInUseError.tsx +0 -86
  199. package/src/Prebuilt/components/Notifications/ErrorNotifications.tsx +0 -56
  200. package/src/Prebuilt/components/Notifications/HLSFailureModal.tsx +0 -71
  201. package/src/Prebuilt/components/Notifications/HandRaisedNotifications.tsx +0 -78
  202. package/src/Prebuilt/components/Notifications/InitErrorModal.tsx +0 -42
  203. package/src/Prebuilt/components/Notifications/MessageNotifications.tsx +0 -24
  204. package/src/Prebuilt/components/Notifications/Notifications.tsx +0 -65
  205. package/src/Prebuilt/components/Notifications/PeerNotifications.tsx +0 -52
  206. package/src/Prebuilt/components/Notifications/PermissionErrorModal.tsx +0 -144
  207. package/src/Prebuilt/components/Notifications/PollNotificationModal.tsx +0 -71
  208. package/src/Prebuilt/components/Notifications/ReconnectNotifications.tsx +0 -33
  209. package/src/Prebuilt/components/Notifications/RoleChangeNotification.tsx +0 -24
  210. package/src/Prebuilt/components/Notifications/TrackBulkUnmuteModal.tsx +0 -61
  211. package/src/Prebuilt/components/Notifications/TrackNotifications.tsx +0 -41
  212. package/src/Prebuilt/components/Notifications/TrackUnmuteModal.tsx +0 -63
  213. package/src/Prebuilt/components/Notifications/TranscriptionNotifications.tsx +0 -58
  214. package/src/Prebuilt/components/Notifications/index.tsx +0 -1
  215. package/src/Prebuilt/components/PIP/PIPChat.tsx +0 -292
  216. package/src/Prebuilt/components/PIP/PIPChatOption.tsx +0 -18
  217. package/src/Prebuilt/components/PIP/PIPComponent.tsx +0 -90
  218. package/src/Prebuilt/components/PIP/PIPManager.ts +0 -335
  219. package/src/Prebuilt/components/PIP/PIPProvider.tsx +0 -56
  220. package/src/Prebuilt/components/PIP/PIPWindow.tsx +0 -13
  221. package/src/Prebuilt/components/PIP/SetupMediaSession.js +0 -60
  222. package/src/Prebuilt/components/PIP/context.ts +0 -10
  223. package/src/Prebuilt/components/PIP/index.jsx +0 -6
  224. package/src/Prebuilt/components/PIP/pip.test.js +0 -72
  225. package/src/Prebuilt/components/PIP/pipUtils.js +0 -183
  226. package/src/Prebuilt/components/PIP/usePIPChat.tsx +0 -105
  227. package/src/Prebuilt/components/PIP/usePIPWindow.tsx +0 -12
  228. package/src/Prebuilt/components/Pagination.tsx +0 -60
  229. package/src/Prebuilt/components/Polls/CreatePollQuiz/PollsQuizMenu.tsx +0 -248
  230. package/src/Prebuilt/components/Polls/CreateQuestions/CreateQuestions.jsx +0 -142
  231. package/src/Prebuilt/components/Polls/CreateQuestions/DeleteQuestionModal.tsx +0 -74
  232. package/src/Prebuilt/components/Polls/CreateQuestions/QuestionForm.tsx +0 -324
  233. package/src/Prebuilt/components/Polls/CreateQuestions/SavedQuestion.tsx +0 -64
  234. package/src/Prebuilt/components/Polls/Polls.tsx +0 -31
  235. package/src/Prebuilt/components/Polls/Voting/LeaderboardEntry.tsx +0 -76
  236. package/src/Prebuilt/components/Polls/Voting/LeaderboardSummary.tsx +0 -116
  237. package/src/Prebuilt/components/Polls/Voting/PeerParticipationSummary.tsx +0 -60
  238. package/src/Prebuilt/components/Polls/Voting/QuestionCard.jsx +0 -221
  239. package/src/Prebuilt/components/Polls/Voting/StandardVoting.tsx +0 -47
  240. package/src/Prebuilt/components/Polls/Voting/StatisticBox.tsx +0 -20
  241. package/src/Prebuilt/components/Polls/Voting/TimedVoting.tsx +0 -55
  242. package/src/Prebuilt/components/Polls/Voting/Voting.tsx +0 -143
  243. package/src/Prebuilt/components/Polls/Voting/useQuizSummary.tsx +0 -50
  244. package/src/Prebuilt/components/Polls/common/Line.tsx +0 -4
  245. package/src/Prebuilt/components/Polls/common/MultipleChoiceOptions.jsx +0 -115
  246. package/src/Prebuilt/components/Polls/common/OptionInputWithDelete.tsx +0 -38
  247. package/src/Prebuilt/components/Polls/common/SingleChoiceOptions.jsx +0 -140
  248. package/src/Prebuilt/components/Polls/common/StatusIndicator.tsx +0 -35
  249. package/src/Prebuilt/components/Polls/common/VoteCount.tsx +0 -15
  250. package/src/Prebuilt/components/Polls/common/VoteProgress.tsx +0 -18
  251. package/src/Prebuilt/components/Polls/common/constants.ts +0 -5
  252. package/src/Prebuilt/components/Polls/common/utils.ts +0 -22
  253. package/src/Prebuilt/components/Preview/PreviewForm.tsx +0 -94
  254. package/src/Prebuilt/components/Preview/PreviewJoin.tsx +0 -292
  255. package/src/Prebuilt/components/Preview/PreviewScreen.tsx +0 -38
  256. package/src/Prebuilt/components/PreviousRoleInMetadata.tsx +0 -20
  257. package/src/Prebuilt/components/RaiseHand.tsx +0 -30
  258. package/src/Prebuilt/components/RemoveParticipant.tsx +0 -35
  259. package/src/Prebuilt/components/RoleChangeModal.tsx +0 -188
  260. package/src/Prebuilt/components/RoleChangeRequest/RequestPrompt.tsx +0 -75
  261. package/src/Prebuilt/components/RoleChangeRequest/RoleChangeRequestModal.tsx +0 -94
  262. package/src/Prebuilt/components/RoomDetails/Duration.tsx +0 -26
  263. package/src/Prebuilt/components/RoomDetails/RoomDetailsPane.tsx +0 -63
  264. package/src/Prebuilt/components/RoomDetails/RoomDetailsRow.tsx +0 -23
  265. package/src/Prebuilt/components/RoomDetails/RoomDetailsSheet.tsx +0 -45
  266. package/src/Prebuilt/components/ScreenShareToggle.jsx +0 -58
  267. package/src/Prebuilt/components/ScreenshareDisplay.tsx +0 -39
  268. package/src/Prebuilt/components/ScreenshareTile.tsx +0 -134
  269. package/src/Prebuilt/components/SecondaryTiles.tsx +0 -81
  270. package/src/Prebuilt/components/Settings/DeviceSettings.jsx +0 -208
  271. package/src/Prebuilt/components/Settings/LayoutSettings.tsx +0 -74
  272. package/src/Prebuilt/components/Settings/NotificationSettings.tsx +0 -66
  273. package/src/Prebuilt/components/Settings/SettingsModal.jsx +0 -301
  274. package/src/Prebuilt/components/Settings/StartRecording.jsx +0 -101
  275. package/src/Prebuilt/components/Settings/SwitchWithLabel.tsx +0 -53
  276. package/src/Prebuilt/components/Settings/common.ts +0 -16
  277. package/src/Prebuilt/components/ShareMenuIcon.jsx +0 -27
  278. package/src/Prebuilt/components/SidePaneTabs.tsx +0 -214
  279. package/src/Prebuilt/components/StatsForNerds.jsx +0 -373
  280. package/src/Prebuilt/components/Streaming/Common.jsx +0 -143
  281. package/src/Prebuilt/components/Streaming/ResolutionInput.jsx +0 -88
  282. package/src/Prebuilt/components/TileMenu/TileMenu.tsx +0 -148
  283. package/src/Prebuilt/components/TileMenu/TileMenuContent.tsx +0 -393
  284. package/src/Prebuilt/components/TileMenu/utils.ts +0 -7
  285. package/src/Prebuilt/components/Toast/Toast.jsx +0 -17
  286. package/src/Prebuilt/components/Toast/ToastBatcher.js +0 -64
  287. package/src/Prebuilt/components/Toast/ToastConfig.jsx +0 -177
  288. package/src/Prebuilt/components/Toast/ToastContainer.jsx +0 -30
  289. package/src/Prebuilt/components/Toast/ToastManager.js +0 -44
  290. package/src/Prebuilt/components/VideoLayouts/EqualProminence.tsx +0 -62
  291. package/src/Prebuilt/components/VideoLayouts/Grid.tsx +0 -43
  292. package/src/Prebuilt/components/VideoLayouts/GridLayout.tsx +0 -155
  293. package/src/Prebuilt/components/VideoLayouts/ProminenceLayout.tsx +0 -91
  294. package/src/Prebuilt/components/VideoLayouts/RoleProminence.tsx +0 -66
  295. package/src/Prebuilt/components/VideoLayouts/ScreenshareLayout.tsx +0 -74
  296. package/src/Prebuilt/components/VideoLayouts/WhiteboardLayout.tsx +0 -93
  297. package/src/Prebuilt/components/VideoLayouts/interface.ts +0 -11
  298. package/src/Prebuilt/components/VideoTile.tsx +0 -203
  299. package/src/Prebuilt/components/VirtualBackground/VBCollection.tsx +0 -52
  300. package/src/Prebuilt/components/VirtualBackground/VBHandler.tsx +0 -130
  301. package/src/Prebuilt/components/VirtualBackground/VBOption.tsx +0 -57
  302. package/src/Prebuilt/components/VirtualBackground/VBPicker.tsx +0 -252
  303. package/src/Prebuilt/components/VirtualBackground/VBToggle.tsx +0 -50
  304. package/src/Prebuilt/components/hooks/useAudioOutputTest.tsx +0 -20
  305. package/src/Prebuilt/components/hooks/useAutoStartStreaming.tsx +0 -70
  306. package/src/Prebuilt/components/hooks/useChatBlacklist.ts +0 -29
  307. package/src/Prebuilt/components/hooks/useCloseScreenshareWhiteboard.tsx +0 -17
  308. package/src/Prebuilt/components/hooks/useDropdownList.ts +0 -24
  309. package/src/Prebuilt/components/hooks/useDropdownSelection.jsx +0 -3
  310. package/src/Prebuilt/components/hooks/useFullscreen.ts +0 -46
  311. package/src/Prebuilt/components/hooks/useGroupOnStageActions.tsx +0 -54
  312. package/src/Prebuilt/components/hooks/useMetadata.tsx +0 -56
  313. package/src/Prebuilt/components/hooks/usePeerOnStageActions.tsx +0 -49
  314. package/src/Prebuilt/components/hooks/usePinnedBy.tsx +0 -22
  315. package/src/Prebuilt/components/hooks/usePinnedMessages.ts +0 -78
  316. package/src/Prebuilt/components/hooks/usePlaylist.js +0 -25
  317. package/src/Prebuilt/components/hooks/usePlaylistMusic.js +0 -35
  318. package/src/Prebuilt/components/hooks/useRedirectToLeave.tsx +0 -23
  319. package/src/Prebuilt/components/hooks/useRoleProminencePeers.tsx +0 -39
  320. package/src/Prebuilt/components/hooks/useScreenshareAudio.js +0 -28
  321. package/src/Prebuilt/components/hooks/useTileLayout.tsx +0 -128
  322. package/src/Prebuilt/components/hooks/useUnreadPollQuizPresent.tsx +0 -17
  323. package/src/Prebuilt/components/hooks/useUserPreferences.jsx +0 -26
  324. package/src/Prebuilt/components/hooks/useVideoTileLayout.ts +0 -26
  325. package/src/Prebuilt/components/init/Init.jsx +0 -31
  326. package/src/Prebuilt/components/pdfAnnotator/pdfFileOptions.jsx +0 -42
  327. package/src/Prebuilt/components/pdfAnnotator/pdfHeader.jsx +0 -31
  328. package/src/Prebuilt/components/pdfAnnotator/pdfInfo.jsx +0 -32
  329. package/src/Prebuilt/components/pdfAnnotator/shareScreenOptions.jsx +0 -211
  330. package/src/Prebuilt/components/pdfAnnotator/submitPdf.jsx +0 -48
  331. package/src/Prebuilt/components/pdfAnnotator/uploadedFile.jsx +0 -71
  332. package/src/Prebuilt/components/peerTileUtils.tsx +0 -42
  333. package/src/Prebuilt/images/android-perm-1.png +0 -0
  334. package/src/Prebuilt/images/empty-chat.svg +0 -12
  335. package/src/Prebuilt/images/ios-perm-0.png +0 -0
  336. package/src/Prebuilt/images/pdf-share.png +0 -0
  337. package/src/Prebuilt/images/rtmp.png +0 -0
  338. package/src/Prebuilt/images/screen-share.png +0 -0
  339. package/src/Prebuilt/images/transaction_error.svg +0 -12
  340. package/src/Prebuilt/index.ts +0 -1
  341. package/src/Prebuilt/layouts/EmbedView.jsx +0 -94
  342. package/src/Prebuilt/layouts/HLSView.jsx +0 -747
  343. package/src/Prebuilt/layouts/PDFView.jsx +0 -67
  344. package/src/Prebuilt/layouts/Sheet.tsx +0 -14
  345. package/src/Prebuilt/layouts/SidePane.tsx +0 -241
  346. package/src/Prebuilt/layouts/VideoStreamingSection.tsx +0 -164
  347. package/src/Prebuilt/layouts/WaitingView.tsx +0 -52
  348. package/src/Prebuilt/plugins/CaptionsViewer.tsx +0 -261
  349. package/src/Prebuilt/plugins/FlyingEmoji.jsx +0 -154
  350. package/src/Prebuilt/plugins/RemoteStopScreenshare.jsx +0 -18
  351. package/src/Prebuilt/plugins/transcription/Transcriber.js +0 -216
  352. package/src/Prebuilt/plugins/transcription/TranscriptionButton.jsx +0 -138
  353. package/src/Prebuilt/plugins/transcription/index.jsx +0 -1
  354. package/src/Prebuilt/primitives/DialogContent.jsx +0 -285
  355. package/src/Prebuilt/primitives/DropdownTrigger.jsx +0 -46
  356. package/src/Prebuilt/provider/roomLayoutProvider/constants/index.ts +0 -60
  357. package/src/Prebuilt/provider/roomLayoutProvider/hooks/useFetchRoomLayout.ts +0 -88
  358. package/src/Prebuilt/provider/roomLayoutProvider/hooks/useInsetEnabled.ts +0 -10
  359. package/src/Prebuilt/provider/roomLayoutProvider/hooks/useRoomLayoutScreen.ts +0 -112
  360. package/src/Prebuilt/provider/roomLayoutProvider/index.tsx +0 -53
  361. package/src/Prebuilt/services/FeatureFlags.jsx +0 -46
  362. package/src/Progress/index.tsx +0 -17
  363. package/src/QRCode/QRCode.mdx +0 -9
  364. package/src/QRCode/QRCode.stories.tsx +0 -29
  365. package/src/QRCode/QRCode.tsx +0 -6
  366. package/src/QRCode/index.tsx +0 -1
  367. package/src/RadioGroup/RadioGroup.stories.tsx +0 -32
  368. package/src/RadioGroup/RadioGroup.tsx +0 -33
  369. package/src/RadioGroup/index.tsx +0 -1
  370. package/src/ReactSelect/ReactSelect.stories.tsx +0 -83
  371. package/src/ReactSelect/ReactSelect.tsx +0 -97
  372. package/src/ReactSelect/index.ts +0 -1
  373. package/src/Select/Select.stories.tsx +0 -33
  374. package/src/Select/Select.tsx +0 -63
  375. package/src/Select/index.ts +0 -1
  376. package/src/Sheet/Sheet.mdx +0 -19
  377. package/src/Sheet/Sheet.stories.tsx +0 -103
  378. package/src/Sheet/Sheet.tsx +0 -122
  379. package/src/Sheet/index.ts +0 -1
  380. package/src/Slider/Slider.stories.tsx +0 -21
  381. package/src/Slider/Slider.tsx +0 -70
  382. package/src/Slider/index.ts +0 -1
  383. package/src/Stats/Stats.tsx +0 -243
  384. package/src/Stats/StyledStats.tsx +0 -57
  385. package/src/Stats/formatBytes.ts +0 -19
  386. package/src/Stats/index.tsx +0 -2
  387. package/src/Stats/useQoE.ts +0 -79
  388. package/src/Switch/Switch.mdx +0 -11
  389. package/src/Switch/Switch.stories.tsx +0 -46
  390. package/src/Switch/Switch.tsx +0 -52
  391. package/src/Switch/index.ts +0 -1
  392. package/src/Tabs/Tabs.stories.tsx +0 -77
  393. package/src/Tabs/Tabs.tsx +0 -41
  394. package/src/Tabs/index.tsx +0 -1
  395. package/src/Text/Text.stories.tsx +0 -21
  396. package/src/Text/Text.tsx +0 -149
  397. package/src/Text/index.tsx +0 -1
  398. package/src/TextArea/TextArea.tsx +0 -30
  399. package/src/TextArea/index.tsx +0 -1
  400. package/src/Theme/Theme.stories.mdx +0 -8
  401. package/src/Theme/ThemeProvider.tsx +0 -98
  402. package/src/Theme/ThemeStory.jsx +0 -56
  403. package/src/Theme/base.config.ts +0 -236
  404. package/src/Theme/index.tsx +0 -2
  405. package/src/Theme/stitches.config.ts +0 -88
  406. package/src/Theme/useSSR.tsx +0 -24
  407. package/src/TileMenu/StyledMenuTile.tsx +0 -105
  408. package/src/TileMenu/TileMenu.tsx +0 -98
  409. package/src/TileMenu/index.tsx +0 -1
  410. package/src/Toast/AppToast.stories.tsx +0 -56
  411. package/src/Toast/Toast.mdx +0 -19
  412. package/src/Toast/Toast.stories.tsx +0 -57
  413. package/src/Toast/Toast.tsx +0 -170
  414. package/src/Toast/index.tsx +0 -1
  415. package/src/Tooltip/Tooltip.stories.tsx +0 -62
  416. package/src/Tooltip/Tooltip.tsx +0 -79
  417. package/src/Tooltip/index.ts +0 -1
  418. package/src/Video/UseVideo.mdx +0 -22
  419. package/src/Video/UseVideo.stories.tsx +0 -26
  420. package/src/Video/Video.mdx +0 -24
  421. package/src/Video/Video.stories.tsx +0 -27
  422. package/src/Video/Video.tsx +0 -61
  423. package/src/Video/index.tsx +0 -1
  424. package/src/VideoList/StyledVideoList.tsx +0 -39
  425. package/src/VideoList/VideoList.stories.tsx +0 -92
  426. package/src/VideoList/index.tsx +0 -2
  427. package/src/VideoList/videoListUtils.tsx +0 -20
  428. package/src/VideoTile/StyledVideoTile.tsx +0 -146
  429. package/src/VideoTile/VideoTile.mdx +0 -28
  430. package/src/VideoTile/VideoTile.stories.tsx +0 -32
  431. package/src/VideoTile/index.tsx +0 -1
  432. package/src/context/DialogContext.tsx +0 -13
  433. package/src/fixtures/chats.ts +0 -25
  434. package/src/fixtures/peers.ts +0 -27
  435. package/src/fixtures/tracks.ts +0 -11
  436. package/src/hooks/useDialogContainerSelector.tsx +0 -7
  437. package/src/index.ts +0 -41
  438. package/src/store/SetupFakeStore.ts +0 -33
  439. package/src/store/StorybookSDK.ts +0 -231
  440. package/src/utils/animations.ts +0 -114
  441. package/src/utils/index.ts +0 -2
  442. package/src/utils/styles.ts +0 -22
@@ -1,335 +0,0 @@
1
- import * as workerTimers from 'worker-timers';
2
- import { HMSActions, HMSPeer, HMSTrack, HMSVideoTrack } from '@100mslive/react-sdk';
3
- // @ts-ignore: No implicit any
4
- import { drawVideoElementsOnCanvas, dummyChangeInCanvas, resetPIPCanvasColors } from './pipUtils';
5
- import { isIOS, isMacOS, isSafari } from '../../common/constants';
6
- const MAX_NUMBER_OF_TILES_IN_PIP = 4;
7
- const DEFAULT_FPS = 30;
8
- const DEFAULT_CANVAS_WIDTH = 480;
9
- const DEFAULT_CANVAS_HEIGHT = 320;
10
- const LEAVE_EVENT_NAME = 'leavepictureinpicture';
11
-
12
- enum PIPStates {
13
- starting = 'starting',
14
- started = 'started',
15
- stopping = 'stopping',
16
- stopped = 'stopped',
17
- }
18
-
19
- /**
20
- * video elements are stitched together as a canvas which is converted to
21
- * another video element converted to PIP.
22
- * The task is split into two parts -
23
- * 1. a function which gets hit when the input changes and updates the tracks
24
- * to show
25
- * 2. an independent loop which updates the canvas periodically based on the current
26
- * tracks which should be shown.
27
- */
28
- class PipManager {
29
- private listeners = new Set<(value: boolean) => void>();
30
- private canvas: HTMLCanvasElement | null = null;
31
- private pipVideo: HTMLVideoElement | null = null;
32
- private hmsActions: HMSActions | null = null;
33
- private timeoutRef = 0;
34
- private videoElements: HTMLVideoElement[] = [];
35
- private onStateChange: ((value: boolean) => void) | null = null;
36
- private tracksToShow: Array<string> = [];
37
- private state: PIPStates = PIPStates.stopped;
38
-
39
- constructor() {
40
- this.reset();
41
- }
42
-
43
- listenToStateChange(cb: (value: boolean) => void) {
44
- this.listeners.add(cb);
45
- }
46
-
47
- /**
48
- * @private
49
- */
50
- reset() {
51
- console.debug('resetting PIP state');
52
- resetPIPCanvasColors();
53
- this.canvas = null; // where stitching will take place
54
- this.pipVideo = null; // the element which will be sent in PIP
55
- this.timeoutRef = 0; // setTimeout reference so it can be cancelled
56
- this.hmsActions = null; // for attaching detaching
57
- this.videoElements = []; // for attaching tracks
58
- this.tracksToShow = [];
59
- this.onStateChange = null; // for user of this class to listen to changes
60
- this.state = PIPStates.stopped;
61
- }
62
-
63
- /**
64
- * check if PIP is supported in this browser env
65
- */
66
- isSupported() {
67
- return !!document.pictureInPictureEnabled && !isIOS && !(isMacOS && isSafari);
68
- }
69
-
70
- /**
71
- * check if pip is currently turned on
72
- */
73
- isOn() {
74
- return !!document.pictureInPictureElement;
75
- }
76
-
77
- /**
78
- * request browser to start pip and start the render loop updating the pip
79
- * video element with peer tracks.
80
- * @param hmsActions
81
- * @param onStateChangeFn {function(bool):void} callback called to notify change in pip state
82
- */
83
- async start(hmsActions: HMSActions, onStateChangeFn: (value: boolean) => void): Promise<void> {
84
- if (!this.isSupported()) {
85
- throw new Error('pip is not supported on this browser');
86
- }
87
- console.debug('starting PIP, current state', this.state);
88
- if (this.state === PIPStates.started) {
89
- await this.stop(); // if anything is already running
90
- } else if (this.state === PIPStates.starting) {
91
- return; // ignore double clicks
92
- }
93
- this.state = PIPStates.starting;
94
- try {
95
- await this.init(hmsActions, onStateChangeFn);
96
- // when user closes pip, call internal stop
97
- this.pipVideo?.addEventListener(LEAVE_EVENT_NAME, this.stop);
98
- this.renderLoop();
99
- if (!this.isOn()) {
100
- await this.requestPIP();
101
- }
102
- console.debug('pip started');
103
- this.state = PIPStates.started;
104
- this.onStateChange?.(true);
105
- this.callListeners(true);
106
- } catch (err) {
107
- console.error('error in request pip', err);
108
- this.state = PIPStates.stopped;
109
- }
110
- }
111
-
112
- stop = async () => {
113
- if (this.state === PIPStates.stopped) {
114
- return;
115
- }
116
- this.state = PIPStates.stopping;
117
- this.pipVideo?.removeEventListener(LEAVE_EVENT_NAME, this.stop);
118
- if (this.timeoutRef) {
119
- workerTimers.clearTimeout(this.timeoutRef);
120
- this.timeoutRef = 0;
121
- }
122
- if (this.isOn()) {
123
- this.exitPIP();
124
- }
125
- // detach all to avoid bandwidth consumption
126
- await this.detachOldAttachNewTracks(this.tracksToShow, []);
127
- this.onStateChange?.(false); // notify parent about this
128
- this.callListeners(false);
129
- this.reset(); // cleanup
130
- this.state = PIPStates.stopped;
131
- };
132
-
133
- /**
134
- * @param peers {Array} All Remote Peers present in call.
135
- * @param tracksMap {Object} map of track id to track
136
- * */
137
- async updatePeersAndTracks(peers: HMSPeer[], tracksMap: Record<string, HMSTrack>) {
138
- if (!this.canvas) {
139
- console.log('no canvas to render video to');
140
- return;
141
- }
142
- const newTracksToShowUnordered = this.pickTracksToShow(peers, tracksMap);
143
- const currentTracksShowing = this.tracksToShow;
144
- this.tracksToShow = this.orderNewTracksToShow(newTracksToShowUnordered, currentTracksShowing);
145
- try {
146
- await this.detachOldAttachNewTracks(currentTracksShowing, this.tracksToShow, tracksMap);
147
- } catch (error) {
148
- console.error('error in detaching/attaching tracks', error);
149
- }
150
- }
151
-
152
- // ------- Private function --------------
153
- /**
154
- * @private {boolean} on - whether pip is on/off
155
- */
156
- callListeners = (on: boolean) => {
157
- this.listeners.forEach(listener => listener?.(on));
158
- };
159
-
160
- /**
161
- * @private
162
- */
163
- async init(hmsActions: HMSActions, onStateChangeFn: (value: boolean) => void) {
164
- await this.initMediaElements();
165
- this.hmsActions = hmsActions;
166
- this.onStateChange = onStateChangeFn;
167
- }
168
-
169
- async initMediaElements() {
170
- if (!this.canvas) {
171
- const { canvas, pipVideo } = this.initializeCanvasAndVideoElement();
172
- this.canvas = canvas; // where stitching will take place
173
- this.pipVideo = pipVideo; // the element which will be sent in PIP
174
- this.videoElements = this.initializeVideoElements(); // for attaching tracks
175
- const videoPlayPromise = this.pipVideo.play();
176
- dummyChangeInCanvas(this.canvas);
177
- await videoPlayPromise;
178
- }
179
- }
180
-
181
- initializeCanvasAndVideoElement() {
182
- const canvas = document.createElement('canvas');
183
- canvas.width = DEFAULT_CANVAS_WIDTH;
184
- canvas.height = DEFAULT_CANVAS_HEIGHT;
185
- const pipVideo = document.createElement('video');
186
- pipVideo.width = DEFAULT_CANVAS_WIDTH;
187
- pipVideo.height = DEFAULT_CANVAS_HEIGHT;
188
- pipVideo.muted = true;
189
- pipVideo.srcObject = canvas.captureStream();
190
- return { canvas, pipVideo };
191
- }
192
-
193
- initializeVideoElements() {
194
- const videoElements = [];
195
- for (let i = 0; i < MAX_NUMBER_OF_TILES_IN_PIP; i++) {
196
- const videoElement = document.createElement('video');
197
- videoElement.autoplay = true;
198
- videoElement.playsInline = true;
199
- videoElements.push(videoElement);
200
- }
201
- return videoElements;
202
- }
203
-
204
- /**
205
- * render loop is responsible for rendering the video elements on canvas/pip.
206
- * in each loop current video elements are stitched and painted on canvas
207
- */
208
- renderLoop() {
209
- const delay = 1000 / DEFAULT_FPS;
210
- this.timeoutRef = workerTimers.setTimeout(() => {
211
- if (this.state === PIPStates.stopping || this.state === PIPStates.stopped) {
212
- return;
213
- }
214
- if (this.state === PIPStates.started) {
215
- drawVideoElementsOnCanvas(this.videoElements, this.canvas);
216
- }
217
- this.renderLoop();
218
- }, delay);
219
- }
220
-
221
- async requestPIP() {
222
- try {
223
- if (this.isOn()) {
224
- this.exitPIP(); // is this really needed?
225
- }
226
- if (!this.pipVideo) {
227
- return;
228
- }
229
- await this.pipVideo.requestPictureInPicture();
230
- } catch (error) {
231
- console.error('error in requestpip', error, 'state', this.state);
232
- throw error;
233
- }
234
- }
235
-
236
- exitPIP() {
237
- document.exitPictureInPicture();
238
- }
239
-
240
- /**
241
- * Logic - pick only enabled video tracks
242
- * @param peers {Array<any>}
243
- * @param tracksMap {Record<string, any>}
244
- */
245
- pickTracksToShow(peers: HMSPeer[], tracksMap: Record<string, HMSTrack>) {
246
- const tracksToShow = new Set<string>();
247
- for (const peer of peers) {
248
- if (tracksToShow.size === MAX_NUMBER_OF_TILES_IN_PIP) {
249
- break;
250
- } else if (peer.videoTrack && this.showTrack(tracksMap[peer.videoTrack] as HMSVideoTrack)) {
251
- tracksToShow.add(peer.videoTrack);
252
- }
253
- }
254
- return Array.from(tracksToShow);
255
- }
256
-
257
- /**
258
- * there has to be a smart reordering of new tracks based on currently showing
259
- * ones to reduce unnecessary displacement. If someone was showing up both
260
- * earlier and now, it's a better UX to keep their position same instead
261
- * of letting it change.
262
- * The returned array is a shuffled version of newTracks with position of
263
- * tracks present in the old tracks intact.
264
- * eg. old = [1,5,9,3], new = [3,8,2,9], result = [8,2,9,3]
265
- * @param oldTracks {Array}
266
- * @param newTracks {Array}
267
- * @return {Array}
268
- */
269
- orderNewTracksToShow(newTracks: string[], oldTracks: string[]) {
270
- const betterNewTracks: Array<string> = new Array(newTracks.length);
271
- const leftOvers: Array<string> = [];
272
- // put the common ones in right position
273
- newTracks.forEach(track => {
274
- const oldPosition = oldTracks.indexOf(track);
275
- if (oldPosition !== -1 && oldPosition < newTracks.length) {
276
- // if track is there currently and we can put it on the same position
277
- betterNewTracks[oldPosition] = track;
278
- } else {
279
- leftOvers.push(track);
280
- }
281
- });
282
- // put the left overs in remaining empty positions
283
- for (let i = 0; i < newTracks.length; i++) {
284
- if (!betterNewTracks[i]) {
285
- const newEntry = leftOvers.shift();
286
- if (newEntry) {
287
- betterNewTracks[i] = newEntry;
288
- }
289
- }
290
- }
291
- return Array.from(new Set(betterNewTracks));
292
- }
293
-
294
- private showTrack(track: HMSVideoTrack | undefined) {
295
- return track && track.enabled && !track.degraded;
296
- }
297
-
298
- /**
299
- * call detach for tracks which no longer need to be shown and attach for
300
- * new ones which are to be shown now.
301
- * Note: oldTracks and newTracks are not necessarily of same length
302
- * @param oldTracks {Array<String>}
303
- * @param newTracks {Array<String>}
304
- * @param tracksMap {Record<String, any>}
305
- */
306
- // eslint-disable-next-line complexity
307
- async detachOldAttachNewTracks(
308
- oldTracks: Array<string>,
309
- newTracks: Array<string>,
310
- tracksMap: Record<string, HMSTrack> | null = null,
311
- ) {
312
- const numTracks = Math.max(oldTracks.length, newTracks.length);
313
- for (let i = 0; i < numTracks; i++) {
314
- if (oldTracks[i] === newTracks[i]) {
315
- continue; // it would already have been attached previously
316
- } else if (oldTracks[i]) {
317
- // old track is there but not equal to new track, detach
318
- // no need to call detach if we know for sure track is no longer in store
319
- if (!tracksMap || tracksMap[oldTracks[i]]) {
320
- await this.hmsActions?.detachVideo(oldTracks[i], this.videoElements[i]);
321
- }
322
- if (this.videoElements[i]) {
323
- // even if old track got removed from the room, element needs to be cleaned up
324
- this.videoElements[i].srcObject = null;
325
- }
326
- }
327
- if (newTracks[i]) {
328
- await this.hmsActions?.attachVideo(newTracks[i], this.videoElements[i]);
329
- }
330
- }
331
- }
332
- }
333
-
334
- export const PictureInPicture = new PipManager();
335
- // PictureInPicture.initMediaElements().catch(console.error); // for safari, init early
@@ -1,56 +0,0 @@
1
- import React, { useCallback, useMemo, useState } from 'react';
2
- import { PIPContext } from './context';
3
-
4
- type PIPProviderProps = {
5
- children: React.ReactNode;
6
- };
7
-
8
- export const PIPProvider = ({ children }: PIPProviderProps) => {
9
- // Detect if the feature is available.
10
- const isSupported = 'documentPictureInPicture' in window;
11
-
12
- // Expose pipWindow that is currently active
13
- const [pipWindow, setPipWindow] = useState<Window | null>(null);
14
-
15
- // Close pipWidnow programmatically
16
- const closePipWindow = useCallback(() => {
17
- if (pipWindow != null) {
18
- pipWindow.close();
19
- setPipWindow(null);
20
- }
21
- }, [pipWindow]);
22
-
23
- // Open new pipWindow
24
- const requestPipWindow = useCallback(
25
- async (width: number, height: number) => {
26
- // We don't want to allow multiple requests.
27
- if (pipWindow != null) {
28
- return;
29
- }
30
- // @ts-ignore for documentPIP
31
- const pip = await window.documentPictureInPicture.requestWindow({
32
- width,
33
- height,
34
- });
35
-
36
- // Detect when window is closed by user
37
- pip.addEventListener('pagehide', () => {
38
- setPipWindow(null);
39
- });
40
-
41
- setPipWindow(pip);
42
- },
43
- [pipWindow],
44
- );
45
-
46
- const value = useMemo(() => {
47
- return {
48
- isSupported,
49
- pipWindow,
50
- requestPipWindow,
51
- closePipWindow,
52
- };
53
- }, [closePipWindow, isSupported, pipWindow, requestPipWindow]);
54
-
55
- return <PIPContext.Provider value={value}>{children}</PIPContext.Provider>;
56
- };
@@ -1,13 +0,0 @@
1
- import React from 'react';
2
- import { createPortal } from 'react-dom';
3
-
4
- type PIPWindowProps = {
5
- pipWindow: Window;
6
- children: React.ReactNode;
7
- };
8
-
9
- export const PIPWindow = ({ pipWindow, children }: PIPWindowProps) => {
10
- pipWindow.document.body.style.margin = '0';
11
- pipWindow.document.body.style.overflow = 'clip';
12
- return createPortal(children, pipWindow.document.body);
13
- };
@@ -1,60 +0,0 @@
1
- import { selectIsLocalAudioEnabled, selectIsLocalVideoEnabled } from '@100mslive/react-sdk';
2
-
3
- /**
4
- * Media Session API allows for handling control actions on top of pip
5
- * https://web.dev/media-session/#video-conferencing-actions
6
- */
7
- class SetupMediaSession {
8
- setup = (actions, store) => {
9
- this.actions = actions;
10
- this.store = store;
11
- this.initState();
12
- this.setUpHandlers();
13
- };
14
-
15
- initState = () => {
16
- const isMicActive = this.store.getState(selectIsLocalAudioEnabled);
17
- const isCamActive = this.store.getState(selectIsLocalVideoEnabled);
18
- navigator.mediaSession?.setMicrophoneActive?.(isMicActive);
19
- navigator.mediaSession?.setCameraActive?.(isCamActive);
20
-
21
- this.store.subscribe(isMicActive => {
22
- navigator.mediaSession?.setMicrophoneActive?.(isMicActive);
23
- }, selectIsLocalAudioEnabled);
24
-
25
- this.store.subscribe(isCamActive => {
26
- navigator.mediaSession?.setCameraActive?.(isCamActive);
27
- }, selectIsLocalVideoEnabled);
28
- };
29
-
30
- toggleMic = async () => {
31
- console.log('toggle mic clicked in pip');
32
- const current = this.store.getState(selectIsLocalAudioEnabled);
33
- await this.actions.setLocalAudioEnabled(!current);
34
- };
35
-
36
- toggleCam = async () => {
37
- console.log('toggle cam clicked in pip');
38
- const current = this.store.getState(selectIsLocalVideoEnabled);
39
- await this.actions.setLocalVideoEnabled(!current);
40
- };
41
-
42
- leave = () => {
43
- console.log('leave called from pip');
44
- this.actions.leave();
45
- };
46
-
47
- setUpHandlers = () => {
48
- if (navigator.mediaSession) {
49
- try {
50
- navigator.mediaSession.setActionHandler('togglemicrophone', this.toggleMic);
51
- navigator.mediaSession.setActionHandler('togglecamera', this.toggleCam);
52
- navigator.mediaSession.setActionHandler('hangup', this.leave);
53
- } catch (err) {
54
- console.error('error in setting media session handlers', err);
55
- }
56
- }
57
- };
58
- }
59
-
60
- export const MediaSession = new SetupMediaSession();
@@ -1,10 +0,0 @@
1
- import { createContext } from 'react';
2
-
3
- export type PIPContextType = {
4
- isSupported: boolean;
5
- pipWindow: Window | null;
6
- requestPipWindow: (width: number, height: number) => Promise<void>;
7
- closePipWindow: () => void;
8
- };
9
-
10
- export const PIPContext = createContext<PIPContextType | undefined>(undefined);
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- import PIPComponent from './PIPComponent';
3
-
4
- export const PIP = ({ content = null }) => {
5
- return <PIPComponent content={content} />;
6
- };
@@ -1,72 +0,0 @@
1
- import { PictureInPicture } from './PIPManager';
2
-
3
- describe('pip manager tests', () => {
4
- /**
5
- * Ensure that if a track is showing in both before and after, it's at the
6
- * same position.
7
- */
8
- test('merging old and new tracks to show avoids shuffling', () => {
9
- const makeTestData = (oldArr, newArr, result) => {
10
- return { oldArr, newArr, result };
11
- };
12
-
13
- const examples = [
14
- makeTestData([1, 5, 9, 3], [3, 8, 2, 9], [8, 2, 9, 3]),
15
- makeTestData([1, 3, 5], [5, 3, 1], [1, 3, 5]),
16
- makeTestData([2, 7, 9, 4], [9, 2, 4, 6], [2, 6, 9, 4]),
17
- makeTestData([1, 2, 3], [4, 5, 6], [4, 5, 6]),
18
- makeTestData([1, 2], [4, 5, 2, 1], [1, 2, 4, 5]),
19
- makeTestData([4, 1, 2, 3], [1, 3], [3, 1]),
20
- makeTestData([4, 5, 1, 3], [1, 3], [1, 3]),
21
- makeTestData([], [1, 3], [1, 3]),
22
- makeTestData([1, 3], [], []),
23
- makeTestData([1], [4, 2, 1, 3], [1, 4, 2, 3]),
24
- makeTestData([4, 2, 1, 3], [1], [1]),
25
- makeTestData([], [], []),
26
- ];
27
-
28
- examples.forEach(example => {
29
- expect(PictureInPicture.orderNewTracksToShow(example.newArr, example.oldArr)).toEqual(example.result);
30
- });
31
- });
32
-
33
- /**
34
- * It's very important that detach is properly called for old tracks to guarantee
35
- * no unnecessary bandwidth consumption.
36
- * For simplicity's sake currently, detach/attach is done if position of
37
- * the track changes as well. That is earlier it was showing on third position
38
- * but not it's on second position(because there are only two tracks left to show).
39
- */
40
- test('attach and detach are called properly after tracks in view changes', async () => {
41
- const makeTestData = (oldTracks, newTracks, detachFor, attachFor) => {
42
- return { oldTracks, newTracks, detachFor, attachFor };
43
- };
44
-
45
- let attachCalledFor = [];
46
- let detachCalledFor = [];
47
- PictureInPicture.hmsActions = {
48
- attachVideo: jest.fn(track => attachCalledFor.push(track)),
49
- detachVideo: jest.fn(track => detachCalledFor.push(track)),
50
- };
51
-
52
- const examples = [
53
- makeTestData([1, 2], [3, 4], [1, 2], [3, 4]),
54
- makeTestData([1, 2], [1, 2], [], []),
55
- makeTestData([1, 5, 9, 3], [8, 2, 9, 3], [1, 5], [8, 2]),
56
- makeTestData([1, 5, 9], [6, 5, 9], [1], [6]),
57
- makeTestData([], [1, 3], [], [1, 3]),
58
- makeTestData([1, 3], [], [1, 3], []),
59
- makeTestData([1], [4, 2, 1, 3], [1], [4, 2, 1, 3]),
60
- makeTestData([4, 2, 1, 3], [1], [4, 2, 1, 3], [1]),
61
- makeTestData([], [], [], []),
62
- ];
63
-
64
- for (let example of examples) {
65
- attachCalledFor = [];
66
- detachCalledFor = [];
67
- await PictureInPicture.detachOldAttachNewTracks(example.oldTracks, example.newTracks);
68
- expect(attachCalledFor).toEqual(example.attachFor);
69
- expect(detachCalledFor).toEqual(example.detachFor);
70
- }
71
- });
72
- });