@stream-io/video-react-native-sdk 0.0.1-alpha.141

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 (360) hide show
  1. package/CHANGELOG.md +739 -0
  2. package/LICENSE +219 -0
  3. package/README.md +19 -0
  4. package/dist/__tests__/components/ActiveCall.test.d.ts +1 -0
  5. package/dist/__tests__/components/ActiveCall.test.js +89 -0
  6. package/dist/__tests__/components/ActiveCall.test.js.map +1 -0
  7. package/dist/__tests__/components/Avatar.test.d.ts +1 -0
  8. package/dist/__tests__/components/Avatar.test.js +34 -0
  9. package/dist/__tests__/components/Avatar.test.js.map +1 -0
  10. package/dist/__tests__/components/ParticipantView.test.d.ts +1 -0
  11. package/dist/__tests__/components/ParticipantView.test.js +66 -0
  12. package/dist/__tests__/components/ParticipantView.test.js.map +1 -0
  13. package/dist/__tests__/mocks/call.d.ts +2 -0
  14. package/dist/__tests__/mocks/call.js +21 -0
  15. package/dist/__tests__/mocks/call.js.map +1 -0
  16. package/dist/__tests__/mocks/client.d.ts +2 -0
  17. package/dist/__tests__/mocks/client.js +31 -0
  18. package/dist/__tests__/mocks/client.js.map +1 -0
  19. package/dist/__tests__/mocks/participant.d.ts +3 -0
  20. package/dist/__tests__/mocks/participant.js +25 -0
  21. package/dist/__tests__/mocks/participant.js.map +1 -0
  22. package/dist/__tests__/utils/RNTLTools.d.ts +15 -0
  23. package/dist/__tests__/utils/RNTLTools.js +54 -0
  24. package/dist/__tests__/utils/RNTLTools.js.map +1 -0
  25. package/dist/index.d.ts +9 -0
  26. package/dist/index.js +39 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/jest-setup.d.ts +1 -0
  29. package/dist/jest-setup.js +34 -0
  30. package/dist/jest-setup.js.map +1 -0
  31. package/dist/src/components/ActiveCall.d.ts +18 -0
  32. package/dist/src/components/ActiveCall.js +117 -0
  33. package/dist/src/components/ActiveCall.js.map +1 -0
  34. package/dist/src/components/Avatar.d.ts +25 -0
  35. package/dist/src/components/Avatar.js +55 -0
  36. package/dist/src/components/Avatar.js.map +1 -0
  37. package/dist/src/components/CallControlsButton.d.ts +22 -0
  38. package/dist/src/components/CallControlsButton.js +43 -0
  39. package/dist/src/components/CallControlsButton.js.map +1 -0
  40. package/dist/src/components/CallControlsView.d.ts +9 -0
  41. package/dist/src/components/CallControlsView.js +95 -0
  42. package/dist/src/components/CallControlsView.js.map +1 -0
  43. package/dist/src/components/CallParticipantsBadge.d.ts +1 -0
  44. package/dist/src/components/CallParticipantsBadge.js +48 -0
  45. package/dist/src/components/CallParticipantsBadge.js.map +1 -0
  46. package/dist/src/components/CallParticipantsInfoView.d.ts +21 -0
  47. package/dist/src/components/CallParticipantsInfoView.js +213 -0
  48. package/dist/src/components/CallParticipantsInfoView.js.map +1 -0
  49. package/dist/src/components/CallParticipantsList.d.ts +25 -0
  50. package/dist/src/components/CallParticipantsList.js +124 -0
  51. package/dist/src/components/CallParticipantsList.js.map +1 -0
  52. package/dist/src/components/CallParticipantsOptions.d.ts +8 -0
  53. package/dist/src/components/CallParticipantsOptions.js +189 -0
  54. package/dist/src/components/CallParticipantsOptions.js.map +1 -0
  55. package/dist/src/components/CallParticipantsSpotlightView.d.ts +1 -0
  56. package/dist/src/components/CallParticipantsSpotlightView.js +40 -0
  57. package/dist/src/components/CallParticipantsSpotlightView.js.map +1 -0
  58. package/dist/src/components/CallParticipantsView.d.ts +1 -0
  59. package/dist/src/components/CallParticipantsView.js +31 -0
  60. package/dist/src/components/CallParticipantsView.js.map +1 -0
  61. package/dist/src/components/IncomingCallView.d.ts +1 -0
  62. package/dist/src/components/IncomingCallView.js +98 -0
  63. package/dist/src/components/IncomingCallView.js.map +1 -0
  64. package/dist/src/components/LobbyView.d.ts +1 -0
  65. package/dist/src/components/LobbyView.js +215 -0
  66. package/dist/src/components/LobbyView.js.map +1 -0
  67. package/dist/src/components/LocalVideoView.d.ts +34 -0
  68. package/dist/src/components/LocalVideoView.js +100 -0
  69. package/dist/src/components/LocalVideoView.js.map +1 -0
  70. package/dist/src/components/NetworkQualityIndicator.d.ts +8 -0
  71. package/dist/src/components/NetworkQualityIndicator.js +36 -0
  72. package/dist/src/components/NetworkQualityIndicator.js.map +1 -0
  73. package/dist/src/components/OutgoingCallView.d.ts +1 -0
  74. package/dist/src/components/OutgoingCallView.js +103 -0
  75. package/dist/src/components/OutgoingCallView.js.map +1 -0
  76. package/dist/src/components/ParticipantReaction.d.ts +7 -0
  77. package/dist/src/components/ParticipantReaction.js +45 -0
  78. package/dist/src/components/ParticipantReaction.js.map +1 -0
  79. package/dist/src/components/ParticipantView.d.ts +42 -0
  80. package/dist/src/components/ParticipantView.js +256 -0
  81. package/dist/src/components/ParticipantView.js.map +1 -0
  82. package/dist/src/components/ReactionsModal.d.ts +7 -0
  83. package/dist/src/components/ReactionsModal.js +65 -0
  84. package/dist/src/components/ReactionsModal.js.map +1 -0
  85. package/dist/src/components/ToggleAudioButton.d.ts +1 -0
  86. package/dist/src/components/ToggleAudioButton.js +78 -0
  87. package/dist/src/components/ToggleAudioButton.js.map +1 -0
  88. package/dist/src/components/ToggleVideoButton.d.ts +1 -0
  89. package/dist/src/components/ToggleVideoButton.js +78 -0
  90. package/dist/src/components/ToggleVideoButton.js.map +1 -0
  91. package/dist/src/components/UserInfoView.d.ts +13 -0
  92. package/dist/src/components/UserInfoView.js +82 -0
  93. package/dist/src/components/UserInfoView.js.map +1 -0
  94. package/dist/src/components/VideoRenderer.d.ts +65 -0
  95. package/dist/src/components/VideoRenderer.js +18 -0
  96. package/dist/src/components/VideoRenderer.js.map +1 -0
  97. package/dist/src/components/index.d.ts +12 -0
  98. package/dist/src/components/index.js +29 -0
  99. package/dist/src/components/index.js.map +1 -0
  100. package/dist/src/constants/A11yLabels.d.ts +20 -0
  101. package/dist/src/constants/A11yLabels.js +29 -0
  102. package/dist/src/constants/A11yLabels.js.map +1 -0
  103. package/dist/src/constants/index.d.ts +11 -0
  104. package/dist/src/constants/index.js +30 -0
  105. package/dist/src/constants/index.js.map +1 -0
  106. package/dist/src/contexts/StreamVideoContext/createStoreContext.d.ts +14 -0
  107. package/dist/src/contexts/StreamVideoContext/createStoreContext.js +100 -0
  108. package/dist/src/contexts/StreamVideoContext/createStoreContext.js.map +1 -0
  109. package/dist/src/contexts/StreamVideoContext/index.d.ts +30 -0
  110. package/dist/src/contexts/StreamVideoContext/index.js +18 -0
  111. package/dist/src/contexts/StreamVideoContext/index.js.map +1 -0
  112. package/dist/src/contexts/index.d.ts +1 -0
  113. package/dist/src/contexts/index.js +18 -0
  114. package/dist/src/contexts/index.js.map +1 -0
  115. package/dist/src/hooks/index.d.ts +10 -0
  116. package/dist/src/hooks/index.js +27 -0
  117. package/dist/src/hooks/index.js.map +1 -0
  118. package/dist/src/hooks/useCallControls.d.ts +14 -0
  119. package/dist/src/hooks/useCallControls.js +148 -0
  120. package/dist/src/hooks/useCallControls.js.map +1 -0
  121. package/dist/src/hooks/useCallCycleEffect.d.ts +8 -0
  122. package/dist/src/hooks/useCallCycleEffect.js +62 -0
  123. package/dist/src/hooks/useCallCycleEffect.js.map +1 -0
  124. package/dist/src/hooks/useCallKeep.d.ts +11 -0
  125. package/dist/src/hooks/useCallKeep.js +41 -0
  126. package/dist/src/hooks/useCallKeep.js.map +1 -0
  127. package/dist/src/hooks/useCreateStreamVideoClient.d.ts +33 -0
  128. package/dist/src/hooks/useCreateStreamVideoClient.js +40 -0
  129. package/dist/src/hooks/useCreateStreamVideoClient.js.map +1 -0
  130. package/dist/src/hooks/useIncallManager.d.ts +13 -0
  131. package/dist/src/hooks/useIncallManager.js +24 -0
  132. package/dist/src/hooks/useIncallManager.js.map +1 -0
  133. package/dist/src/hooks/useLocalVideoStream.d.ts +7 -0
  134. package/dist/src/hooks/useLocalVideoStream.js +34 -0
  135. package/dist/src/hooks/useLocalVideoStream.js.map +1 -0
  136. package/dist/src/hooks/useMutingState.d.ts +12 -0
  137. package/dist/src/hooks/useMutingState.js +25 -0
  138. package/dist/src/hooks/useMutingState.js.map +1 -0
  139. package/dist/src/hooks/usePermissionNotification.d.ts +18 -0
  140. package/dist/src/hooks/usePermissionNotification.js +33 -0
  141. package/dist/src/hooks/usePermissionNotification.js.map +1 -0
  142. package/dist/src/hooks/usePermissionRequest.d.ts +1 -0
  143. package/dist/src/hooks/usePermissionRequest.js +62 -0
  144. package/dist/src/hooks/usePermissionRequest.js.map +1 -0
  145. package/dist/src/hooks/usePublishMediaStreams.d.ts +6 -0
  146. package/dist/src/hooks/usePublishMediaStreams.js +49 -0
  147. package/dist/src/hooks/usePublishMediaStreams.js.map +1 -0
  148. package/dist/src/icons/ArrowRight.d.ts +5 -0
  149. package/dist/src/icons/ArrowRight.js +9 -0
  150. package/dist/src/icons/ArrowRight.js.map +1 -0
  151. package/dist/src/icons/CameraSwitch.d.ts +5 -0
  152. package/dist/src/icons/CameraSwitch.js +9 -0
  153. package/dist/src/icons/CameraSwitch.js.map +1 -0
  154. package/dist/src/icons/Chat.d.ts +5 -0
  155. package/dist/src/icons/Chat.js +9 -0
  156. package/dist/src/icons/Chat.js.map +1 -0
  157. package/dist/src/icons/Cross.d.ts +5 -0
  158. package/dist/src/icons/Cross.js +9 -0
  159. package/dist/src/icons/Cross.js.map +1 -0
  160. package/dist/src/icons/Mic.d.ts +5 -0
  161. package/dist/src/icons/Mic.js +10 -0
  162. package/dist/src/icons/Mic.js.map +1 -0
  163. package/dist/src/icons/MicOff.d.ts +5 -0
  164. package/dist/src/icons/MicOff.js +9 -0
  165. package/dist/src/icons/MicOff.js.map +1 -0
  166. package/dist/src/icons/Participants.d.ts +5 -0
  167. package/dist/src/icons/Participants.js +9 -0
  168. package/dist/src/icons/Participants.js.map +1 -0
  169. package/dist/src/icons/Phone.d.ts +5 -0
  170. package/dist/src/icons/Phone.js +9 -0
  171. package/dist/src/icons/Phone.js.map +1 -0
  172. package/dist/src/icons/PhoneDown.d.ts +5 -0
  173. package/dist/src/icons/PhoneDown.js +10 -0
  174. package/dist/src/icons/PhoneDown.js.map +1 -0
  175. package/dist/src/icons/Pin.d.ts +5 -0
  176. package/dist/src/icons/Pin.js +9 -0
  177. package/dist/src/icons/Pin.js.map +1 -0
  178. package/dist/src/icons/Reaction.d.ts +5 -0
  179. package/dist/src/icons/Reaction.js +9 -0
  180. package/dist/src/icons/Reaction.js.map +1 -0
  181. package/dist/src/icons/ScreenShare.d.ts +5 -0
  182. package/dist/src/icons/ScreenShare.js +40 -0
  183. package/dist/src/icons/ScreenShare.js.map +1 -0
  184. package/dist/src/icons/Settings.d.ts +5 -0
  185. package/dist/src/icons/Settings.js +34 -0
  186. package/dist/src/icons/Settings.js.map +1 -0
  187. package/dist/src/icons/Spotlight.d.ts +5 -0
  188. package/dist/src/icons/Spotlight.js +9 -0
  189. package/dist/src/icons/Spotlight.js.map +1 -0
  190. package/dist/src/icons/ThreeDots.d.ts +5 -0
  191. package/dist/src/icons/ThreeDots.js +11 -0
  192. package/dist/src/icons/ThreeDots.js.map +1 -0
  193. package/dist/src/icons/Video.d.ts +5 -0
  194. package/dist/src/icons/Video.js +9 -0
  195. package/dist/src/icons/Video.js.map +1 -0
  196. package/dist/src/icons/VideoDisabled.d.ts +5 -0
  197. package/dist/src/icons/VideoDisabled.js +10 -0
  198. package/dist/src/icons/VideoDisabled.js.map +1 -0
  199. package/dist/src/icons/VideoOff.d.ts +5 -0
  200. package/dist/src/icons/VideoOff.js +10 -0
  201. package/dist/src/icons/VideoOff.js.map +1 -0
  202. package/dist/src/icons/VideoSlash.d.ts +5 -0
  203. package/dist/src/icons/VideoSlash.js +10 -0
  204. package/dist/src/icons/VideoSlash.js.map +1 -0
  205. package/dist/src/icons/index.d.ts +19 -0
  206. package/dist/src/icons/index.js +36 -0
  207. package/dist/src/icons/index.js.map +1 -0
  208. package/dist/src/providers/MediaDevices.d.ts +9 -0
  209. package/dist/src/providers/MediaDevices.js +43 -0
  210. package/dist/src/providers/MediaDevices.js.map +1 -0
  211. package/dist/src/providers/StreamCall.d.ts +81 -0
  212. package/dist/src/providers/StreamCall.js +74 -0
  213. package/dist/src/providers/StreamCall.js.map +1 -0
  214. package/dist/src/providers/StreamVideo.d.ts +10 -0
  215. package/dist/src/providers/StreamVideo.js +66 -0
  216. package/dist/src/providers/StreamVideo.js.map +1 -0
  217. package/dist/src/providers/index.d.ts +2 -0
  218. package/dist/src/providers/index.js +19 -0
  219. package/dist/src/providers/index.js.map +1 -0
  220. package/dist/src/theme/avatar.d.ts +2 -0
  221. package/dist/src/theme/avatar.js +11 -0
  222. package/dist/src/theme/avatar.js.map +1 -0
  223. package/dist/src/theme/button.d.ts +2 -0
  224. package/dist/src/theme/button.js +11 -0
  225. package/dist/src/theme/button.js.map +1 -0
  226. package/dist/src/theme/colors.d.ts +3 -0
  227. package/dist/src/theme/colors.js +49 -0
  228. package/dist/src/theme/colors.js.map +1 -0
  229. package/dist/src/theme/constants.d.ts +47 -0
  230. package/dist/src/theme/constants.js +54 -0
  231. package/dist/src/theme/constants.js.map +1 -0
  232. package/dist/src/theme/fonts.d.ts +2 -0
  233. package/dist/src/theme/fonts.js +67 -0
  234. package/dist/src/theme/fonts.js.map +1 -0
  235. package/dist/src/theme/icon.d.ts +2 -0
  236. package/dist/src/theme/icon.js +11 -0
  237. package/dist/src/theme/icon.js.map +1 -0
  238. package/dist/src/theme/index.d.ts +2 -0
  239. package/dist/src/theme/index.js +26 -0
  240. package/dist/src/theme/index.js.map +1 -0
  241. package/dist/src/theme/margin.d.ts +2 -0
  242. package/dist/src/theme/margin.js +11 -0
  243. package/dist/src/theme/margin.js.map +1 -0
  244. package/dist/src/theme/padding.d.ts +2 -0
  245. package/dist/src/theme/padding.js +11 -0
  246. package/dist/src/theme/padding.js.map +1 -0
  247. package/dist/src/theme/rounded.d.ts +2 -0
  248. package/dist/src/theme/rounded.js +11 -0
  249. package/dist/src/theme/rounded.js.map +1 -0
  250. package/dist/src/theme/spacing.d.ts +2 -0
  251. package/dist/src/theme/spacing.js +11 -0
  252. package/dist/src/theme/spacing.js.map +1 -0
  253. package/dist/src/theme/types.d.ts +45 -0
  254. package/dist/src/theme/types.js +3 -0
  255. package/dist/src/theme/types.js.map +1 -0
  256. package/dist/src/utils/StreamVideoRN.d.ts +25 -0
  257. package/dist/src/utils/StreamVideoRN.js +23 -0
  258. package/dist/src/utils/StreamVideoRN.js.map +1 -0
  259. package/dist/src/utils/hooks/index.d.ts +3 -0
  260. package/dist/src/utils/hooks/index.js +20 -0
  261. package/dist/src/utils/hooks/index.js.map +1 -0
  262. package/dist/src/utils/hooks/useAppStateListener.d.ts +1 -0
  263. package/dist/src/utils/hooks/useAppStateListener.js +41 -0
  264. package/dist/src/utils/hooks/useAppStateListener.js.map +1 -0
  265. package/dist/src/utils/hooks/useDebouncedValue.d.ts +7 -0
  266. package/dist/src/utils/hooks/useDebouncedValue.js +22 -0
  267. package/dist/src/utils/hooks/useDebouncedValue.js.map +1 -0
  268. package/dist/src/utils/hooks/usePrevious.d.ts +1 -0
  269. package/dist/src/utils/hooks/usePrevious.js +13 -0
  270. package/dist/src/utils/hooks/usePrevious.js.map +1 -0
  271. package/dist/src/utils/index.d.ts +5 -0
  272. package/dist/src/utils/index.js +53 -0
  273. package/dist/src/utils/index.js.map +1 -0
  274. package/dist/src/utils/verifyAndroidBluetoothPermissions.d.ts +1 -0
  275. package/dist/src/utils/verifyAndroidBluetoothPermissions.js +30 -0
  276. package/dist/src/utils/verifyAndroidBluetoothPermissions.js.map +1 -0
  277. package/index.ts +22 -0
  278. package/package.json +70 -0
  279. package/src/components/ActiveCall.tsx +122 -0
  280. package/src/components/Avatar.tsx +88 -0
  281. package/src/components/CallControlsButton.tsx +72 -0
  282. package/src/components/CallControlsView.tsx +128 -0
  283. package/src/components/CallParticipantsBadge.tsx +57 -0
  284. package/src/components/CallParticipantsInfoView.tsx +287 -0
  285. package/src/components/CallParticipantsList.tsx +172 -0
  286. package/src/components/CallParticipantsOptions.tsx +248 -0
  287. package/src/components/CallParticipantsSpotlightView.tsx +53 -0
  288. package/src/components/CallParticipantsView.tsx +30 -0
  289. package/src/components/IncomingCallView.tsx +133 -0
  290. package/src/components/LobbyView.tsx +236 -0
  291. package/src/components/LocalVideoView.tsx +141 -0
  292. package/src/components/NetworkQualityIndicator.tsx +72 -0
  293. package/src/components/OutgoingCallView.tsx +133 -0
  294. package/src/components/ParticipantReaction.tsx +59 -0
  295. package/src/components/ParticipantView.tsx +315 -0
  296. package/src/components/ReactionsModal.tsx +90 -0
  297. package/src/components/ToggleAudioButton.tsx +103 -0
  298. package/src/components/ToggleVideoButton.tsx +103 -0
  299. package/src/components/UserInfoView.tsx +118 -0
  300. package/src/components/VideoRenderer.tsx +85 -0
  301. package/src/components/index.ts +12 -0
  302. package/src/constants/A11yLabels.ts +24 -0
  303. package/src/constants/index.ts +28 -0
  304. package/src/contexts/StreamVideoContext/createStoreContext.tsx +117 -0
  305. package/src/contexts/StreamVideoContext/index.tsx +37 -0
  306. package/src/contexts/index.ts +1 -0
  307. package/src/hooks/index.ts +10 -0
  308. package/src/hooks/useCallControls.tsx +186 -0
  309. package/src/hooks/useCallCycleEffect.tsx +68 -0
  310. package/src/hooks/useCallKeep.tsx +51 -0
  311. package/src/hooks/useCreateStreamVideoClient.tsx +77 -0
  312. package/src/hooks/useIncallManager.tsx +23 -0
  313. package/src/hooks/useLocalVideoStream.ts +36 -0
  314. package/src/hooks/useMutingState.ts +24 -0
  315. package/src/hooks/usePermissionNotification.tsx +53 -0
  316. package/src/hooks/usePermissionRequest.tsx +67 -0
  317. package/src/hooks/usePublishMediaStreams.ts +59 -0
  318. package/src/icons/ArrowRight.tsx +16 -0
  319. package/src/icons/CameraSwitch.tsx +14 -0
  320. package/src/icons/Chat.tsx +14 -0
  321. package/src/icons/Cross.tsx +14 -0
  322. package/src/icons/Mic.tsx +18 -0
  323. package/src/icons/MicOff.tsx +14 -0
  324. package/src/icons/Participants.tsx +16 -0
  325. package/src/icons/Phone.tsx +14 -0
  326. package/src/icons/PhoneDown.tsx +15 -0
  327. package/src/icons/Pin.tsx +16 -0
  328. package/src/icons/Reaction.tsx +14 -0
  329. package/src/icons/ScreenShare.tsx +32 -0
  330. package/src/icons/Settings.tsx +13 -0
  331. package/src/icons/Spotlight.tsx +16 -0
  332. package/src/icons/ThreeDots.tsx +13 -0
  333. package/src/icons/Video.tsx +14 -0
  334. package/src/icons/VideoDisabled.tsx +22 -0
  335. package/src/icons/VideoOff.tsx +20 -0
  336. package/src/icons/VideoSlash.tsx +15 -0
  337. package/src/icons/index.tsx +19 -0
  338. package/src/providers/MediaDevices.tsx +45 -0
  339. package/src/providers/StreamCall.tsx +136 -0
  340. package/src/providers/StreamVideo.tsx +50 -0
  341. package/src/providers/index.ts +2 -0
  342. package/src/theme/avatar.ts +9 -0
  343. package/src/theme/button.ts +9 -0
  344. package/src/theme/colors.ts +49 -0
  345. package/src/theme/constants.ts +51 -0
  346. package/src/theme/fonts.ts +65 -0
  347. package/src/theme/icon.ts +9 -0
  348. package/src/theme/index.ts +25 -0
  349. package/src/theme/margin.ts +9 -0
  350. package/src/theme/padding.ts +9 -0
  351. package/src/theme/rounded.ts +9 -0
  352. package/src/theme/spacing.ts +9 -0
  353. package/src/theme/types.ts +64 -0
  354. package/src/utils/StreamVideoRN.ts +35 -0
  355. package/src/utils/hooks/index.ts +3 -0
  356. package/src/utils/hooks/useAppStateListener.ts +48 -0
  357. package/src/utils/hooks/useDebouncedValue.ts +21 -0
  358. package/src/utils/hooks/usePrevious.ts +11 -0
  359. package/src/utils/index.ts +45 -0
  360. package/src/utils/verifyAndroidBluetoothPermissions.ts +31 -0
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.CallParticipantsInfoView = void 0;
27
+ const video_client_1 = require("@stream-io/video-client");
28
+ const video_react_bindings_1 = require("@stream-io/video-react-bindings");
29
+ const react_native_1 = require("react-native");
30
+ const icons_1 = require("../icons");
31
+ const react_1 = __importStar(require("react"));
32
+ const utils_1 = require("../utils");
33
+ const CallParticipantsOptions_1 = require("./CallParticipantsOptions");
34
+ const Avatar_1 = require("./Avatar");
35
+ const theme_1 = require("../theme");
36
+ const CallParticipantInfoItem = (props) => {
37
+ const { participant, setSelectedParticipant } = props;
38
+ const connectedUser = (0, video_react_bindings_1.useConnectedUser)();
39
+ const participantIsLoggedInUser = participant.userId === connectedUser?.id;
40
+ const userHasMuteUsersCapability = (0, video_react_bindings_1.useHasPermissions)(video_client_1.OwnCapability.MUTE_USERS);
41
+ const userHasUpdateCallPermissionsCapability = (0, video_react_bindings_1.useHasPermissions)(video_client_1.OwnCapability.UPDATE_CALL_PERMISSIONS);
42
+ const userHasBlockUserCapability = (0, video_react_bindings_1.useHasPermissions)(video_client_1.OwnCapability.BLOCK_USERS);
43
+ const optionsOpenHandler = (0, react_1.useCallback)(() => {
44
+ if (!participantIsLoggedInUser)
45
+ setSelectedParticipant(participant);
46
+ }, [participant, setSelectedParticipant, participantIsLoggedInUser]);
47
+ if (!participant)
48
+ return null;
49
+ const { publishedTracks } = participant;
50
+ const isAudioMuted = !publishedTracks.includes(video_client_1.SfuModels.TrackType.AUDIO);
51
+ const isVideoMuted = !publishedTracks.includes(video_client_1.SfuModels.TrackType.VIDEO);
52
+ const isScreenSharing = publishedTracks.includes(video_client_1.SfuModels.TrackType.SCREEN_SHARE);
53
+ const isParticipantItemPressable = userHasBlockUserCapability ||
54
+ userHasMuteUsersCapability ||
55
+ userHasUpdateCallPermissionsCapability;
56
+ return (<react_native_1.Pressable style={styles.participant} onPress={optionsOpenHandler} disabled={!isParticipantItemPressable}>
57
+ <Avatar_1.Avatar radius={theme_1.theme.avatar.xs} participant={participant}/>
58
+
59
+ <react_native_1.Text style={styles.name}>
60
+ {(participant.name || (0, utils_1.generateParticipantTitle)(participant.userId)) +
61
+ (participantIsLoggedInUser ? ' (You)' : '')}
62
+ </react_native_1.Text>
63
+ <react_native_1.View style={styles.icons}>
64
+ {isScreenSharing && (<react_native_1.View style={[styles.svgContainerStyle, theme_1.theme.icon.md]}>
65
+ <icons_1.ScreenShare color={theme_1.theme.light.info}/>
66
+ </react_native_1.View>)}
67
+ {isAudioMuted && (<react_native_1.View style={[styles.svgContainerStyle, theme_1.theme.icon.sm]}>
68
+ <icons_1.MicOff color={theme_1.theme.light.error}/>
69
+ </react_native_1.View>)}
70
+ {isVideoMuted && (<react_native_1.View style={[styles.svgContainerStyle, theme_1.theme.icon.sm]}>
71
+ <icons_1.VideoSlash color={theme_1.theme.light.error}/>
72
+ </react_native_1.View>)}
73
+ {!participantIsLoggedInUser && (<video_react_bindings_1.Restricted requiredGrants={[
74
+ video_client_1.OwnCapability.MUTE_USERS,
75
+ video_client_1.OwnCapability.UPDATE_CALL_PERMISSIONS,
76
+ video_client_1.OwnCapability.BLOCK_USERS,
77
+ ]}>
78
+ <react_native_1.View style={[styles.svgContainerStyle, theme_1.theme.icon.sm]}>
79
+ <icons_1.ArrowRight color={theme_1.theme.light.text_high_emphasis}/>
80
+ </react_native_1.View>
81
+ </video_react_bindings_1.Restricted>)}
82
+ </react_native_1.View>
83
+ </react_native_1.Pressable>);
84
+ };
85
+ /**
86
+ * Shows information about the call, it's participants in the call and
87
+ * their mute states, handler to trigger options (TBD, permissions not impl)
88
+ * and options to invite more people to the call.
89
+ *
90
+ * | Participants List | Options Modal is Open |
91
+ * | :--- | :----: |
92
+ * |![call-participants-info-view-1](https://user-images.githubusercontent.com/25864161/217341952-1e875bc3-e31f-42eb-918b-307eace116b1.png) | ![call-participants-info-view-2](https://user-images.githubusercontent.com/25864161/217341960-5016b678-d1a5-4ecf-bb4b-e463987b9cae.png)|
93
+ **/
94
+ const CallParticipantsInfoView = ({ isCallParticipantsViewVisible, setIsCallParticipantsViewVisible, }) => {
95
+ const participants = (0, video_react_bindings_1.useParticipants)();
96
+ const participantCount = (0, video_react_bindings_1.useParticipantCount)();
97
+ const [selectedParticipant, setSelectedParticipant] = (0, react_1.useState)(undefined);
98
+ const call = (0, video_react_bindings_1.useCall)();
99
+ const muteAllParticipantsHandler = async () => {
100
+ try {
101
+ await call?.muteAllUsers('audio');
102
+ react_native_1.Alert.alert('Users Muted Successfully');
103
+ }
104
+ catch (error) {
105
+ console.log('Error muting users', error);
106
+ }
107
+ };
108
+ const onCloseCallParticipantsViewVisible = () => {
109
+ setIsCallParticipantsViewVisible(false);
110
+ };
111
+ const renderItem = (0, react_1.useCallback)(({ item }) => {
112
+ return (<CallParticipantInfoItem key={item.sessionId} participant={item} setSelectedParticipant={setSelectedParticipant}/>);
113
+ }, []);
114
+ return (<react_native_1.Modal animationType="slide" transparent={true} visible={isCallParticipantsViewVisible} onRequestClose={onCloseCallParticipantsViewVisible}>
115
+ <react_native_1.View style={styles.container}>
116
+ <react_native_1.View style={styles.content}>
117
+ <react_native_1.View style={styles.header}>
118
+ <react_native_1.View style={styles.leftHeaderElement}/>
119
+ <react_native_1.Text style={styles.headerText}>
120
+ Participants ({participantCount})
121
+ </react_native_1.Text>
122
+ <react_native_1.Pressable style={[styles.closeIcon, theme_1.theme.icon.sm]} onPress={onCloseCallParticipantsViewVisible}>
123
+ <icons_1.Cross color={theme_1.theme.light.primary}/>
124
+ </react_native_1.Pressable>
125
+ </react_native_1.View>
126
+ <react_native_1.View style={styles.buttonGroup}>
127
+ <video_react_bindings_1.Restricted requiredGrants={[video_client_1.OwnCapability.MUTE_USERS]}>
128
+ <react_native_1.Pressable style={styles.button} onPress={muteAllParticipantsHandler}>
129
+ <react_native_1.Text style={styles.buttonText}>Mute All</react_native_1.Text>
130
+ </react_native_1.Pressable>
131
+ </video_react_bindings_1.Restricted>
132
+ </react_native_1.View>
133
+ <react_native_1.FlatList data={participants} renderItem={renderItem}/>
134
+ {selectedParticipant && (<react_native_1.View style={[react_native_1.StyleSheet.absoluteFill, styles.modal]}>
135
+ <CallParticipantsOptions_1.CallParticipantOptions participant={selectedParticipant} setSelectedParticipant={setSelectedParticipant}/>
136
+ </react_native_1.View>)}
137
+ </react_native_1.View>
138
+ </react_native_1.View>
139
+ </react_native_1.Modal>);
140
+ };
141
+ exports.CallParticipantsInfoView = CallParticipantsInfoView;
142
+ const styles = react_native_1.StyleSheet.create({
143
+ container: {
144
+ flex: 1,
145
+ justifyContent: 'center',
146
+ },
147
+ content: {
148
+ flex: 1,
149
+ backgroundColor: theme_1.theme.light.bars,
150
+ borderRadius: theme_1.theme.rounded.md,
151
+ marginVertical: theme_1.theme.margin.lg,
152
+ marginHorizontal: theme_1.theme.margin.md,
153
+ },
154
+ header: {
155
+ display: 'flex',
156
+ flexDirection: 'row',
157
+ justifyContent: 'space-between',
158
+ alignItems: 'center',
159
+ paddingVertical: theme_1.theme.padding.md,
160
+ width: '100%',
161
+ },
162
+ leftHeaderElement: {
163
+ marginLeft: theme_1.theme.margin.md,
164
+ },
165
+ headerText: {
166
+ ...theme_1.theme.fonts.bodyBold,
167
+ color: theme_1.theme.light.text_high_emphasis,
168
+ },
169
+ closeIcon: {
170
+ marginRight: theme_1.theme.margin.md,
171
+ },
172
+ buttonGroup: {},
173
+ button: {
174
+ backgroundColor: theme_1.theme.light.primary,
175
+ borderRadius: theme_1.theme.rounded.lg,
176
+ padding: theme_1.theme.padding.md,
177
+ margin: theme_1.theme.margin.lg,
178
+ },
179
+ buttonText: {
180
+ textAlign: 'center',
181
+ color: theme_1.theme.light.static_white,
182
+ ...theme_1.theme.fonts.subtitleBold,
183
+ },
184
+ participant: {
185
+ paddingHorizontal: theme_1.theme.padding.sm,
186
+ paddingVertical: theme_1.theme.padding.xs,
187
+ display: 'flex',
188
+ flexDirection: 'row',
189
+ alignItems: 'center',
190
+ borderBottomColor: theme_1.theme.light.borders,
191
+ borderBottomWidth: 1,
192
+ },
193
+ name: {
194
+ marginLeft: theme_1.theme.margin.sm,
195
+ color: theme_1.theme.light.text_high_emphasis,
196
+ ...theme_1.theme.fonts.subtitleBold,
197
+ },
198
+ icons: {
199
+ position: 'absolute',
200
+ right: theme_1.theme.spacing.lg,
201
+ display: 'flex',
202
+ flexDirection: 'row',
203
+ },
204
+ svgContainerStyle: {
205
+ marginLeft: theme_1.theme.margin.sm,
206
+ },
207
+ modal: {
208
+ alignItems: 'center',
209
+ justifyContent: 'center',
210
+ backgroundColor: theme_1.theme.light.overlay,
211
+ },
212
+ });
213
+ //# sourceMappingURL=CallParticipantsInfoView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallParticipantsInfoView.js","sourceRoot":"","sources":["../../../src/components/CallParticipantsInfoView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { StreamVideoLocalParticipant, StreamVideoParticipant } from '@stream-io/video-client';
2
+ /**
3
+ * The props for the CallParticipantsList component
4
+ */
5
+ interface CallParticipantsListProps {
6
+ /**
7
+ * The list of participants to display in the list
8
+ */
9
+ participants: (StreamVideoParticipant | StreamVideoLocalParticipant)[];
10
+ /**
11
+ * The number of columns to display in the list of participants while in vertical or horizontal scrolling mode
12
+ * @default 2
13
+ */
14
+ numColumns?: number;
15
+ /**
16
+ * If true, the list will be displayed in horizontal scrolling mode
17
+ */
18
+ horizontal?: boolean;
19
+ }
20
+ /**
21
+ * The CallParticipantsList component displays a list of participants in a FlatList
22
+ * NOTE: this component depends on a flex container to calculate the width and height of the participant view, hence it should be used only in a flex parent container
23
+ */
24
+ export declare const CallParticipantsList: (props: CallParticipantsListProps) => JSX.Element;
25
+ export {};
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.CallParticipantsList = void 0;
27
+ const react_1 = __importStar(require("react"));
28
+ const react_native_1 = require("react-native");
29
+ const ParticipantView_1 = require("./ParticipantView");
30
+ const video_client_1 = require("@stream-io/video-client");
31
+ const theme_1 = require("../theme");
32
+ const useDebouncedValue_1 = require("../utils/hooks/useDebouncedValue");
33
+ const video_react_bindings_1 = require("@stream-io/video-react-bindings");
34
+ const A11yLabels_1 = require("../constants/A11yLabels");
35
+ const VIEWABILITY_CONFIG = {
36
+ waitForInteraction: false,
37
+ itemVisiblePercentThreshold: 60,
38
+ };
39
+ /**
40
+ * The CallParticipantsList component displays a list of participants in a FlatList
41
+ * NOTE: this component depends on a flex container to calculate the width and height of the participant view, hence it should be used only in a flex parent container
42
+ */
43
+ const CallParticipantsList = (props) => {
44
+ const { numColumns = 2, horizontal, participants } = props;
45
+ const [containerWidth, setContainerWidth] = (0, react_1.useState)(0);
46
+ // we use a HashSet to track the currently viewable participants
47
+ // and a separate force update state to rerender the component to inform that the HashSet has changed
48
+ // NOTE: we use set instead of array or object for O(1) lookup, add and delete
49
+ const viewableParticipantSessionIds = (0, react_1.useRef)(new Set());
50
+ const [_forceUpdateValue, forceUpdate] = (0, react_1.useReducer)((x) => x + 1, 0);
51
+ const forceUpdateValue = (0, useDebouncedValue_1.useDebouncedValue)(_forceUpdateValue, 500); // we debounce forced value to avoid multiple viewability change continuous rerenders due to callbacks that occurs simultaneously during a large list scroll or when scrolling is completed
52
+ // we use a ref to store the active call object
53
+ // so that it can be used in the onViewableItemsChanged callback
54
+ const activeCall = (0, video_react_bindings_1.useCall)();
55
+ const activeCallRef = (0, react_1.useRef)(activeCall);
56
+ activeCallRef.current = activeCall;
57
+ // This is the function that gets called when the user scrolls the list of participants.
58
+ // It updates viewableParticipantSessionIds HashSet with the session IDs
59
+ // of the participants that are currently visible.
60
+ const onViewableItemsChanged = (0, react_1.useRef)(({ viewableItems }) => {
61
+ const participantPatches = {};
62
+ let mustUpdate = false;
63
+ const newVisibleParticipantSessionIds = new Set(viewableItems.map((v) => v.key));
64
+ const oldVisibleParticipantSessionIds = viewableParticipantSessionIds.current;
65
+ newVisibleParticipantSessionIds.forEach((key) => {
66
+ if (!oldVisibleParticipantSessionIds.has(key)) {
67
+ mustUpdate = true;
68
+ participantPatches[key] = {
69
+ viewportVisibilityState: video_client_1.VisibilityState.VISIBLE,
70
+ };
71
+ }
72
+ });
73
+ oldVisibleParticipantSessionIds.forEach((key) => {
74
+ if (!newVisibleParticipantSessionIds.has(key)) {
75
+ mustUpdate = true;
76
+ participantPatches[key] = {
77
+ viewportVisibilityState: video_client_1.VisibilityState.INVISIBLE,
78
+ };
79
+ }
80
+ });
81
+ viewableParticipantSessionIds.current = newVisibleParticipantSessionIds;
82
+ if (mustUpdate) {
83
+ activeCallRef.current?.state.updateParticipants(participantPatches);
84
+ forceUpdate();
85
+ }
86
+ }).current;
87
+ // NOTE: key must be sessionId always as it is used to track viewable participants
88
+ const keyExtractor = (0, react_1.useRef)((item) => item.sessionId).current;
89
+ const onLayout = (0, react_1.useRef)((event) => {
90
+ const { width } = event.nativeEvent.layout;
91
+ setContainerWidth(width);
92
+ }).current;
93
+ const itemContainerStyle = (0, react_1.useMemo)(() => {
94
+ // we calculate the size of the participant view based on the containerWidth (the phone's screen width),
95
+ // number of columns and the margin between the views
96
+ const size = containerWidth / numColumns - theme_1.theme.margin.sm * 2;
97
+ const style = { width: size, height: size };
98
+ if (horizontal) {
99
+ return [styles.participantWrapperHorizontal, style];
100
+ }
101
+ return [styles.participantWrapperVertical, style];
102
+ }, [horizontal, numColumns, containerWidth]);
103
+ const renderItem = (0, react_1.useCallback)(({ item: participant }) => {
104
+ const isVisible = viewableParticipantSessionIds.current.has(participant.sessionId);
105
+ return (<ParticipantView_1.ParticipantView participant={participant} containerStyle={itemContainerStyle} kind="video" isVisible={isVisible}/>);
106
+ }, [itemContainerStyle]);
107
+ return (<react_native_1.FlatList onLayout={onLayout} key={!horizontal ? numColumns : undefined} // setting numColumns as key is a strict requirement of react-native to support changing numColumns on the fly
108
+ data={participants} keyExtractor={keyExtractor} viewabilityConfig={VIEWABILITY_CONFIG} onViewableItemsChanged={onViewableItemsChanged} renderItem={renderItem} numColumns={!horizontal ? numColumns : undefined} horizontal={horizontal} showsHorizontalScrollIndicator={false} extraData={`${forceUpdateValue}${containerWidth}`} // this is important to force re-render when visibility changes
109
+ accessibilityLabel={A11yLabels_1.A11yComponents.CALL_PARTICIPANTS_LIST}/>);
110
+ };
111
+ exports.CallParticipantsList = CallParticipantsList;
112
+ const styles = react_native_1.StyleSheet.create({
113
+ participantWrapperVertical: {
114
+ margin: theme_1.theme.margin.sm,
115
+ overflow: 'hidden',
116
+ borderRadius: theme_1.theme.rounded.sm,
117
+ },
118
+ participantWrapperHorizontal: {
119
+ marginHorizontal: theme_1.theme.margin.sm,
120
+ overflow: 'hidden',
121
+ borderRadius: theme_1.theme.rounded.sm,
122
+ },
123
+ });
124
+ //# sourceMappingURL=CallParticipantsList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallParticipantsList.js","sourceRoot":"","sources":["../../../src/components/CallParticipantsList.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { StreamVideoParticipant } from '@stream-io/video-client';
3
+ type CallParticipantOptionsType = {
4
+ participant: StreamVideoParticipant;
5
+ setSelectedParticipant: React.Dispatch<React.SetStateAction<StreamVideoParticipant | undefined>>;
6
+ };
7
+ export declare const CallParticipantOptions: (props: CallParticipantOptionsType) => JSX.Element;
8
+ export {};
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CallParticipantOptions = void 0;
4
+ const video_client_1 = require("@stream-io/video-client");
5
+ const icons_1 = require("../icons");
6
+ const react_native_1 = require("react-native");
7
+ const utils_1 = require("../utils");
8
+ const react_1 = require("react");
9
+ const Avatar_1 = require("./Avatar");
10
+ const theme_1 = require("../theme");
11
+ const video_react_bindings_1 = require("@stream-io/video-react-bindings");
12
+ const CallParticipantOptions = (props) => {
13
+ const { participant, setSelectedParticipant } = props;
14
+ const call = (0, video_react_bindings_1.useCall)();
15
+ const grantPermission = async (permission) => {
16
+ await call?.updateUserPermissions({
17
+ user_id: participant.userId,
18
+ grant_permissions: [permission],
19
+ });
20
+ };
21
+ const revokePermission = async (permission) => {
22
+ await call?.updateUserPermissions({
23
+ user_id: participant.userId,
24
+ revoke_permissions: [permission],
25
+ });
26
+ };
27
+ const muteUser = async (mediaType) => {
28
+ await call?.muteUser(participant.userId, mediaType);
29
+ };
30
+ const muteUserAudio = async () => {
31
+ await muteUser('audio');
32
+ };
33
+ const muteUserVideo = async () => {
34
+ await muteUser('video');
35
+ };
36
+ const blockUser = async () => {
37
+ await call?.blockUser(participant.userId);
38
+ };
39
+ const userHasMuteUsersCapability = (0, video_react_bindings_1.useHasPermissions)(video_client_1.OwnCapability.MUTE_USERS);
40
+ const userHasUpdateCallPermissionsCapability = (0, video_react_bindings_1.useHasPermissions)(video_client_1.OwnCapability.UPDATE_CALL_PERMISSIONS);
41
+ const userHasBlockUserCapability = (0, video_react_bindings_1.useHasPermissions)(video_client_1.OwnCapability.BLOCK_USERS);
42
+ const participantCanPublishVideo = participant.publishedTracks.includes(video_client_1.SfuModels.TrackType.VIDEO);
43
+ const participantCanPublishAudio = participant.publishedTracks.includes(video_client_1.SfuModels.TrackType.AUDIO);
44
+ const callMediaStreamMutePermissions = userHasMuteUsersCapability
45
+ ? [
46
+ participantCanPublishVideo
47
+ ? {
48
+ title: 'Mute Video',
49
+ onPressHandler: muteUserVideo,
50
+ }
51
+ : null,
52
+ participantCanPublishAudio
53
+ ? {
54
+ title: 'Mute Audio',
55
+ onPressHandler: muteUserAudio,
56
+ }
57
+ : null,
58
+ ]
59
+ : [];
60
+ const callMediaStreamPermissions = userHasUpdateCallPermissionsCapability
61
+ ? [
62
+ {
63
+ icon: <icons_1.VideoDisabled color={theme_1.theme.light.text_high_emphasis}/>,
64
+ title: 'Disable Video',
65
+ onPressHandler: async () => await revokePermission(video_client_1.OwnCapability.SEND_VIDEO),
66
+ },
67
+ {
68
+ title: 'Disable Audio',
69
+ onPressHandler: async () => await revokePermission(video_client_1.OwnCapability.SEND_AUDIO),
70
+ },
71
+ {
72
+ title: 'Allow Audio',
73
+ onPressHandler: async () => await grantPermission(video_client_1.OwnCapability.SEND_AUDIO),
74
+ },
75
+ {
76
+ title: 'Allow Video',
77
+ onPressHandler: async () => await grantPermission(video_client_1.OwnCapability.SEND_VIDEO),
78
+ },
79
+ {
80
+ title: 'Allow Screen Sharing',
81
+ onPressHandler: async () => await grantPermission(video_client_1.OwnCapability.SCREENSHARE),
82
+ },
83
+ {
84
+ title: 'Disable Screen Sharing',
85
+ onPressHandler: async () => await revokePermission(video_client_1.OwnCapability.SCREENSHARE),
86
+ },
87
+ ]
88
+ : [];
89
+ const options = [
90
+ userHasBlockUserCapability
91
+ ? {
92
+ title: 'Block',
93
+ onPressHandler: blockUser,
94
+ }
95
+ : null,
96
+ ...callMediaStreamMutePermissions,
97
+ ...callMediaStreamPermissions,
98
+ ];
99
+ const onCloseParticipantOptions = (0, react_1.useCallback)(() => {
100
+ setSelectedParticipant(undefined);
101
+ }, [setSelectedParticipant]);
102
+ const showYouLabel = participant.isLoggedInUser;
103
+ return (<react_native_1.View style={styles.container}>
104
+ <react_native_1.View style={styles.menu}>
105
+ <react_native_1.View style={styles.participantInfo}>
106
+ <react_native_1.View style={styles.userInfo}>
107
+ <Avatar_1.Avatar radius={theme_1.theme.avatar.xs} participant={participant}/>
108
+
109
+ <react_native_1.Text style={styles.name}>
110
+ {(0, utils_1.generateParticipantTitle)(participant.userId) +
111
+ (showYouLabel ? ' (You)' : '')}
112
+ </react_native_1.Text>
113
+ </react_native_1.View>
114
+
115
+ <react_native_1.Pressable style={[styles.svgContainerStyle, theme_1.theme.icon.sm]} onPress={onCloseParticipantOptions}>
116
+ <icons_1.Cross color={theme_1.theme.light.primary}/>
117
+ </react_native_1.Pressable>
118
+ </react_native_1.View>
119
+ <react_native_1.View style={styles.options}>
120
+ {options.map((option, index) => {
121
+ if (!option) {
122
+ return null;
123
+ }
124
+ const applyBottomPadding = index < options.length - 1 ? styles.borderBottom : null;
125
+ const onPressHandler = () => {
126
+ option?.onPressHandler();
127
+ onCloseParticipantOptions();
128
+ };
129
+ return (<react_native_1.Pressable style={[applyBottomPadding, styles.option]} key={option.title} onPress={onPressHandler}>
130
+ <react_native_1.View style={[styles.svgContainerStyle, theme_1.theme.icon.sm]}>
131
+ {option.icon}
132
+ </react_native_1.View>
133
+ <react_native_1.Text style={styles.title}>{option.title}</react_native_1.Text>
134
+ </react_native_1.Pressable>);
135
+ })}
136
+ </react_native_1.View>
137
+ </react_native_1.View>
138
+ </react_native_1.View>);
139
+ };
140
+ exports.CallParticipantOptions = CallParticipantOptions;
141
+ const styles = react_native_1.StyleSheet.create({
142
+ container: {
143
+ width: '100%',
144
+ height: '100%',
145
+ display: 'flex',
146
+ justifyContent: 'center',
147
+ paddingHorizontal: theme_1.theme.padding.xl,
148
+ },
149
+ menu: {
150
+ backgroundColor: theme_1.theme.light.bars,
151
+ borderRadius: theme_1.theme.rounded.md,
152
+ },
153
+ participantInfo: {
154
+ display: 'flex',
155
+ flexDirection: 'row',
156
+ alignItems: 'center',
157
+ justifyContent: 'space-between',
158
+ padding: theme_1.theme.padding.md,
159
+ },
160
+ userInfo: {
161
+ display: 'flex',
162
+ flexDirection: 'row',
163
+ alignItems: 'center',
164
+ },
165
+ name: {
166
+ marginLeft: theme_1.theme.margin.sm,
167
+ ...theme_1.theme.fonts.subtitleBold,
168
+ color: theme_1.theme.light.text_high_emphasis,
169
+ },
170
+ svgContainerStyle: {},
171
+ options: {},
172
+ option: {
173
+ paddingHorizontal: theme_1.theme.padding.md,
174
+ paddingVertical: theme_1.theme.padding.sm,
175
+ display: 'flex',
176
+ flexDirection: 'row',
177
+ alignItems: 'center',
178
+ },
179
+ title: {
180
+ marginLeft: theme_1.theme.margin.md,
181
+ color: theme_1.theme.light.text_high_emphasis,
182
+ ...theme_1.theme.fonts.subtitle,
183
+ },
184
+ borderBottom: {
185
+ borderBottomColor: theme_1.theme.light.borders,
186
+ borderBottomWidth: 1,
187
+ },
188
+ });
189
+ //# sourceMappingURL=CallParticipantsOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallParticipantsOptions.js","sourceRoot":"","sources":["../../../src/components/CallParticipantsOptions.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const CallParticipantsSpotlightView: () => JSX.Element;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CallParticipantsSpotlightView = void 0;
4
+ const video_client_1 = require("@stream-io/video-client");
5
+ const video_react_bindings_1 = require("@stream-io/video-react-bindings");
6
+ const react_native_1 = require("react-native");
7
+ const ParticipantView_1 = require("./ParticipantView");
8
+ const theme_1 = require("../theme");
9
+ const useDebouncedValue_1 = require("../utils/hooks/useDebouncedValue");
10
+ const CallParticipantsList_1 = require("./CallParticipantsList");
11
+ const video_client_2 = require("@stream-io/video-client");
12
+ const hasScreenShare = (p) => p.publishedTracks.includes(video_client_1.SfuModels.TrackType.SCREEN_SHARE);
13
+ const CallParticipantsSpotlightView = () => {
14
+ const _allParticipants = (0, video_react_bindings_1.useParticipants)({
15
+ sortBy: video_client_2.speakerLayoutSortPreset,
16
+ });
17
+ const allParticipants = (0, useDebouncedValue_1.useDebouncedValue)(_allParticipants, 300); // we debounce the participants to avoid unnecessary rerenders that happen when participant tracks are all subscribed simultaneously
18
+ const [participantInSpotlight, ...otherParticipants] = allParticipants;
19
+ const isScreenShareOnSpotlight = hasScreenShare(participantInSpotlight);
20
+ return (<react_native_1.View style={styles.container}>
21
+ {participantInSpotlight && (<ParticipantView_1.ParticipantView participant={participantInSpotlight} containerStyle={styles.participantView} kind={isScreenShareOnSpotlight ? 'screen' : 'video'}/>)}
22
+ <react_native_1.View style={styles.participantVideoContainer}>
23
+ <CallParticipantsList_1.CallParticipantsList participants={isScreenShareOnSpotlight ? allParticipants : otherParticipants} horizontal/>
24
+ </react_native_1.View>
25
+ </react_native_1.View>);
26
+ };
27
+ exports.CallParticipantsSpotlightView = CallParticipantsSpotlightView;
28
+ const styles = react_native_1.StyleSheet.create({
29
+ container: { flex: 1 },
30
+ participantView: {
31
+ flex: 1,
32
+ overflow: 'hidden',
33
+ borderRadius: theme_1.theme.rounded.sm,
34
+ marginHorizontal: theme_1.theme.padding.sm,
35
+ },
36
+ participantVideoContainer: {
37
+ paddingVertical: theme_1.theme.padding.sm,
38
+ },
39
+ });
40
+ //# sourceMappingURL=CallParticipantsSpotlightView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallParticipantsSpotlightView.js","sourceRoot":"","sources":["../../../src/components/CallParticipantsSpotlightView.tsx"],"names":[],"mappings":";;;AAAA,0DAA4E;AAC5E,0EAAkE;AAClE,+CAAgD;AAChD,uDAAoD;AACpD,oCAAiC;AACjC,wEAAqE;AACrE,iEAA8D;AAC9D,0DAAkE;AAElE,MAAM,cAAc,GAAG,CAAC,CAAyB,EAAE,EAAE,CACnD,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,wBAAS,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AAExD,MAAM,6BAA6B,GAAG,GAAG,EAAE;IAChD,MAAM,gBAAgB,GAAG,IAAA,sCAAe,EAAC;QACvC,MAAM,EAAE,sCAAuB;KAChC,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,IAAA,qCAAiB,EAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC,oIAAoI;IACtM,MAAM,CAAC,sBAAsB,EAAE,GAAG,iBAAiB,CAAC,GAAG,eAAe,CAAC;IACvE,MAAM,wBAAwB,GAAG,cAAc,CAAC,sBAAsB,CAAC,CAAC;IAExE,OAAO,CACL,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAC5B;MAAA,CAAC,sBAAsB,IAAI,CACzB,CAAC,iCAAe,CACd,WAAW,CAAC,CAAC,sBAAsB,CAAC,CACpC,cAAc,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CACvC,IAAI,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EACpD,CACH,CACD;MAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAC5C;QAAA,CAAC,2CAAoB,CACnB,YAAY,CAAC,CACX,wBAAwB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAC/D,CACD,UAAU,EAEd;MAAA,EAAE,mBAAI,CACR;IAAA,EAAE,mBAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AA3BW,QAAA,6BAA6B,iCA2BxC;AAEF,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;IACtB,eAAe,EAAE;QACf,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,aAAK,CAAC,OAAO,CAAC,EAAE;QAC9B,gBAAgB,EAAE,aAAK,CAAC,OAAO,CAAC,EAAE;KACnC;IACD,yBAAyB,EAAE;QACzB,eAAe,EAAE,aAAK,CAAC,OAAO,CAAC,EAAE;KAClC;CACF,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const CallParticipantsView: () => JSX.Element;