@stream-io/video-react-sdk 1.41.0 → 1.42.0

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 (305) hide show
  1. package/CHANGELOG.md +22 -6
  2. package/dist/embedded.cjs.js +1 -1
  3. package/dist/esm/embedded.js +3 -0
  4. package/dist/esm/embedded.js.map +1 -0
  5. package/dist/esm/index.js +92 -0
  6. package/dist/esm/index.js.map +1 -0
  7. package/dist/esm/src/components/Avatar/Avatar.js +14 -0
  8. package/dist/esm/src/components/Avatar/Avatar.js.map +1 -0
  9. package/dist/{background-filters-D2U5UBbH.es.js → esm/src/components/BackgroundFilters/BackgroundFilters.js} +1 -1
  10. package/dist/esm/src/components/BackgroundFilters/BackgroundFilters.js.map +1 -0
  11. package/dist/esm/src/components/BackgroundFilters/BackgroundFiltersProvider.js +33 -0
  12. package/dist/esm/src/components/BackgroundFilters/BackgroundFiltersProvider.js.map +1 -0
  13. package/dist/esm/src/components/Button/CompositeButton.js +29 -0
  14. package/dist/esm/src/components/Button/CompositeButton.js.map +1 -0
  15. package/dist/esm/src/components/Button/IconButton.js +18 -0
  16. package/dist/esm/src/components/Button/IconButton.js.map +1 -0
  17. package/dist/esm/src/components/Button/TextButton.js +8 -0
  18. package/dist/esm/src/components/Button/TextButton.js.map +1 -0
  19. package/dist/esm/src/components/CallControls/AcceptCallButton.js +28 -0
  20. package/dist/esm/src/components/CallControls/AcceptCallButton.js.map +1 -0
  21. package/dist/esm/src/components/CallControls/CallControls.js +21 -0
  22. package/dist/esm/src/components/CallControls/CallControls.js.map +1 -0
  23. package/dist/esm/src/components/CallControls/CallStatsButton.js +18 -0
  24. package/dist/esm/src/components/CallControls/CallStatsButton.js.map +1 -0
  25. package/dist/esm/src/components/CallControls/CancelCallButton.js +78 -0
  26. package/dist/esm/src/components/CallControls/CancelCallButton.js.map +1 -0
  27. package/dist/esm/src/components/CallControls/ReactionsButton.js +61 -0
  28. package/dist/esm/src/components/CallControls/ReactionsButton.js.map +1 -0
  29. package/dist/esm/src/components/CallControls/RecordCallButton.js +64 -0
  30. package/dist/esm/src/components/CallControls/RecordCallButton.js.map +1 -0
  31. package/dist/esm/src/components/CallControls/ScreenShareButton.js +44 -0
  32. package/dist/esm/src/components/CallControls/ScreenShareButton.js.map +1 -0
  33. package/dist/esm/src/components/CallControls/ToggleAudioButton.js +72 -0
  34. package/dist/esm/src/components/CallControls/ToggleAudioButton.js.map +1 -0
  35. package/dist/esm/src/components/CallControls/ToggleAudioOutputButton.js +27 -0
  36. package/dist/esm/src/components/CallControls/ToggleAudioOutputButton.js.map +1 -0
  37. package/dist/esm/src/components/CallControls/ToggleVideoButton.js +81 -0
  38. package/dist/esm/src/components/CallControls/ToggleVideoButton.js.map +1 -0
  39. package/dist/esm/src/components/CallParticipantsList/BlockedUserListing.js +23 -0
  40. package/dist/esm/src/components/CallParticipantsList/BlockedUserListing.js.map +1 -0
  41. package/dist/esm/src/components/CallParticipantsList/CallParticipantListHeader.js +15 -0
  42. package/dist/esm/src/components/CallParticipantsList/CallParticipantListHeader.js.map +1 -0
  43. package/dist/esm/src/components/CallParticipantsList/CallParticipantListing.js +7 -0
  44. package/dist/esm/src/components/CallParticipantsList/CallParticipantListing.js.map +1 -0
  45. package/dist/esm/src/components/CallParticipantsList/CallParticipantListingItem.js +46 -0
  46. package/dist/esm/src/components/CallParticipantsList/CallParticipantListingItem.js.map +1 -0
  47. package/dist/esm/src/components/CallParticipantsList/CallParticipantsList.js +81 -0
  48. package/dist/esm/src/components/CallParticipantsList/CallParticipantsList.js.map +1 -0
  49. package/dist/esm/src/components/CallParticipantsList/EmptyParticipantSearchList.js +10 -0
  50. package/dist/esm/src/components/CallParticipantsList/EmptyParticipantSearchList.js.map +1 -0
  51. package/dist/esm/src/components/CallPreview/CallPreview.js +24 -0
  52. package/dist/esm/src/components/CallPreview/CallPreview.js.map +1 -0
  53. package/dist/esm/src/components/CallRecordingList/CallRecordingList.js +12 -0
  54. package/dist/esm/src/components/CallRecordingList/CallRecordingList.js.map +1 -0
  55. package/dist/esm/src/components/CallRecordingList/CallRecordingListHeader.js +12 -0
  56. package/dist/esm/src/components/CallRecordingList/CallRecordingListHeader.js.map +1 -0
  57. package/dist/esm/src/components/CallRecordingList/CallRecordingListItem.js +14 -0
  58. package/dist/esm/src/components/CallRecordingList/CallRecordingListItem.js.map +1 -0
  59. package/dist/esm/src/components/CallRecordingList/EmptyCallRecordingListing.js +8 -0
  60. package/dist/esm/src/components/CallRecordingList/EmptyCallRecordingListing.js.map +1 -0
  61. package/dist/esm/src/components/CallRecordingList/LoadingCallRecordingListing.js +10 -0
  62. package/dist/esm/src/components/CallRecordingList/LoadingCallRecordingListing.js.map +1 -0
  63. package/dist/esm/src/components/CallStats/CallStats.js +180 -0
  64. package/dist/esm/src/components/CallStats/CallStats.js.map +1 -0
  65. package/dist/{latency-chart-Bj5OSYzg.es.js → esm/src/components/CallStats/CallStatsLatencyChart.js} +1 -1
  66. package/dist/esm/src/components/CallStats/CallStatsLatencyChart.js.map +1 -0
  67. package/dist/esm/src/components/DeviceSettings/AudioVolumeIndicator.js +27 -0
  68. package/dist/esm/src/components/DeviceSettings/AudioVolumeIndicator.js.map +1 -0
  69. package/dist/esm/src/components/DeviceSettings/DeviceAudioPreviewItem.js +42 -0
  70. package/dist/esm/src/components/DeviceSettings/DeviceAudioPreviewItem.js.map +1 -0
  71. package/dist/esm/src/components/DeviceSettings/DeviceSelector.js +67 -0
  72. package/dist/esm/src/components/DeviceSettings/DeviceSelector.js.map +1 -0
  73. package/dist/esm/src/components/DeviceSettings/DeviceSelectorAudio.js +26 -0
  74. package/dist/esm/src/components/DeviceSettings/DeviceSelectorAudio.js.map +1 -0
  75. package/dist/esm/src/components/DeviceSettings/DeviceSelectorVideo.js +15 -0
  76. package/dist/esm/src/components/DeviceSettings/DeviceSelectorVideo.js.map +1 -0
  77. package/dist/esm/src/components/DeviceSettings/DeviceSettings.js +26 -0
  78. package/dist/esm/src/components/DeviceSettings/DeviceSettings.js.map +1 -0
  79. package/dist/esm/src/components/DeviceSettings/DeviceVideoPreviewItem.js +42 -0
  80. package/dist/esm/src/components/DeviceSettings/DeviceVideoPreviewItem.js.map +1 -0
  81. package/dist/esm/src/components/DeviceSettings/SpeakerTest.js +57 -0
  82. package/dist/esm/src/components/DeviceSettings/SpeakerTest.js.map +1 -0
  83. package/dist/esm/src/components/DropdownSelect/DropdownSelect.js +79 -0
  84. package/dist/esm/src/components/DropdownSelect/DropdownSelect.js.map +1 -0
  85. package/dist/esm/src/components/Icon/Icon.js +7 -0
  86. package/dist/esm/src/components/Icon/Icon.js.map +1 -0
  87. package/dist/esm/src/components/LoadingIndicator/LoadingIndicator.js +9 -0
  88. package/dist/esm/src/components/LoadingIndicator/LoadingIndicator.js.map +1 -0
  89. package/dist/esm/src/components/Menu/GenericMenu.js +19 -0
  90. package/dist/esm/src/components/Menu/GenericMenu.js.map +1 -0
  91. package/dist/esm/src/components/Menu/MenuToggle.js +75 -0
  92. package/dist/esm/src/components/Menu/MenuToggle.js.map +1 -0
  93. package/dist/esm/src/components/NoiseCancellation/NoiseCancellationProvider.js +96 -0
  94. package/dist/esm/src/components/NoiseCancellation/NoiseCancellationProvider.js.map +1 -0
  95. package/dist/esm/src/components/Notification/MicCaptureErrorNotification.js +23 -0
  96. package/dist/esm/src/components/Notification/MicCaptureErrorNotification.js.map +1 -0
  97. package/dist/esm/src/components/Notification/Notification.js +31 -0
  98. package/dist/esm/src/components/Notification/Notification.js.map +1 -0
  99. package/dist/esm/src/components/Notification/PermissionNotification.js +32 -0
  100. package/dist/esm/src/components/Notification/PermissionNotification.js.map +1 -0
  101. package/dist/esm/src/components/Notification/RecordingInProgressNotification.js +23 -0
  102. package/dist/esm/src/components/Notification/RecordingInProgressNotification.js.map +1 -0
  103. package/dist/esm/src/components/Notification/SpeakingWhileMutedNotification.js +14 -0
  104. package/dist/esm/src/components/Notification/SpeakingWhileMutedNotification.js.map +1 -0
  105. package/dist/esm/src/components/Permissions/PermissionRequests.js +99 -0
  106. package/dist/esm/src/components/Permissions/PermissionRequests.js.map +1 -0
  107. package/dist/esm/src/components/Reaction/Reaction.js +32 -0
  108. package/dist/esm/src/components/Reaction/Reaction.js.map +1 -0
  109. package/dist/esm/src/components/RingingCall/RingingCall.js +48 -0
  110. package/dist/esm/src/components/RingingCall/RingingCall.js.map +1 -0
  111. package/dist/esm/src/components/RingingCall/RingingCallControls.js +34 -0
  112. package/dist/esm/src/components/RingingCall/RingingCallControls.js.map +1 -0
  113. package/dist/esm/src/components/Search/SearchInput.js +27 -0
  114. package/dist/esm/src/components/Search/SearchInput.js.map +1 -0
  115. package/dist/esm/src/components/Search/SearchResults.js +15 -0
  116. package/dist/esm/src/components/Search/SearchResults.js.map +1 -0
  117. package/dist/esm/src/components/Search/hooks/useSearch.js +38 -0
  118. package/dist/esm/src/components/Search/hooks/useSearch.js.map +1 -0
  119. package/dist/esm/src/components/StreamTheme/StreamTheme.js +9 -0
  120. package/dist/esm/src/components/StreamTheme/StreamTheme.js.map +1 -0
  121. package/dist/esm/src/components/Tooltip/Tooltip.js +29 -0
  122. package/dist/esm/src/components/Tooltip/Tooltip.js.map +1 -0
  123. package/dist/esm/src/components/Tooltip/WithTooltip.js +15 -0
  124. package/dist/esm/src/components/Tooltip/WithTooltip.js.map +1 -0
  125. package/dist/esm/src/components/Tooltip/hooks/useEnterLeaveHandlers.js +17 -0
  126. package/dist/esm/src/components/Tooltip/hooks/useEnterLeaveHandlers.js.map +1 -0
  127. package/dist/esm/src/components/VideoPreview/VideoPreview.js +37 -0
  128. package/dist/esm/src/components/VideoPreview/VideoPreview.js.map +1 -0
  129. package/dist/esm/src/core/components/Audio/Audio.js +22 -0
  130. package/dist/esm/src/core/components/Audio/Audio.js.map +1 -0
  131. package/dist/esm/src/core/components/Audio/ParticipantsAudio.js +23 -0
  132. package/dist/esm/src/core/components/Audio/ParticipantsAudio.js.map +1 -0
  133. package/dist/esm/src/core/components/CallLayout/LivestreamLayout.js +150 -0
  134. package/dist/esm/src/core/components/CallLayout/LivestreamLayout.js.map +1 -0
  135. package/dist/esm/src/core/components/CallLayout/PaginatedGridLayout.js +79 -0
  136. package/dist/esm/src/core/components/CallLayout/PaginatedGridLayout.js.map +1 -0
  137. package/dist/esm/src/core/components/CallLayout/PipLayout/Grid.js +80 -0
  138. package/dist/esm/src/core/components/CallLayout/PipLayout/Grid.js.map +1 -0
  139. package/dist/esm/src/core/components/CallLayout/PipLayout/Host.js +13 -0
  140. package/dist/esm/src/core/components/CallLayout/PipLayout/Host.js.map +1 -0
  141. package/dist/esm/src/core/components/CallLayout/PipLayout/Pip.js +57 -0
  142. package/dist/esm/src/core/components/CallLayout/PipLayout/Pip.js.map +1 -0
  143. package/dist/esm/src/core/components/CallLayout/PipLayout/index.js +8 -0
  144. package/dist/esm/src/core/components/CallLayout/PipLayout/index.js.map +1 -0
  145. package/dist/esm/src/core/components/CallLayout/SpeakerLayout.js +103 -0
  146. package/dist/esm/src/core/components/CallLayout/SpeakerLayout.js.map +1 -0
  147. package/dist/esm/src/core/components/CallLayout/hooks.js +62 -0
  148. package/dist/esm/src/core/components/CallLayout/hooks.js.map +1 -0
  149. package/dist/esm/src/core/components/ParticipantView/DefaultParticipantViewUI.js +94 -0
  150. package/dist/esm/src/core/components/ParticipantView/DefaultParticipantViewUI.js.map +1 -0
  151. package/dist/esm/src/core/components/ParticipantView/ParticipantActionsContextMenu.js +97 -0
  152. package/dist/esm/src/core/components/ParticipantView/ParticipantActionsContextMenu.js.map +1 -0
  153. package/dist/esm/src/core/components/ParticipantView/ParticipantView.js +65 -0
  154. package/dist/esm/src/core/components/ParticipantView/ParticipantView.js.map +1 -0
  155. package/dist/esm/src/core/components/ParticipantView/ParticipantViewContext.js +7 -0
  156. package/dist/esm/src/core/components/ParticipantView/ParticipantViewContext.js.map +1 -0
  157. package/dist/esm/src/core/components/StreamCall/StreamCall.js +8 -0
  158. package/dist/esm/src/core/components/StreamCall/StreamCall.js.map +1 -0
  159. package/dist/esm/src/core/components/StreamVideo/StreamVideo.js +11 -0
  160. package/dist/esm/src/core/components/StreamVideo/StreamVideo.js.map +1 -0
  161. package/dist/esm/src/core/components/Video/BaseVideo.js +41 -0
  162. package/dist/esm/src/core/components/Video/BaseVideo.js.map +1 -0
  163. package/dist/esm/src/core/components/Video/BaseVideoPlaceholder.js +21 -0
  164. package/dist/esm/src/core/components/Video/BaseVideoPlaceholder.js.map +1 -0
  165. package/dist/esm/src/core/components/Video/DefaultPictureInPicturePlaceholder.js +12 -0
  166. package/dist/esm/src/core/components/Video/DefaultPictureInPicturePlaceholder.js.map +1 -0
  167. package/dist/esm/src/core/components/Video/DefaultVideoPlaceholder.js +12 -0
  168. package/dist/esm/src/core/components/Video/DefaultVideoPlaceholder.js.map +1 -0
  169. package/dist/esm/src/core/components/Video/Video.js +88 -0
  170. package/dist/esm/src/core/components/Video/Video.js.map +1 -0
  171. package/dist/esm/src/core/hooks/useCalculateHardLimit.js +59 -0
  172. package/dist/esm/src/core/hooks/useCalculateHardLimit.js.map +1 -0
  173. package/dist/esm/src/core/hooks/usePictureInPictureState.js +24 -0
  174. package/dist/esm/src/core/hooks/usePictureInPictureState.js.map +1 -0
  175. package/dist/esm/src/core/hooks/useTrackElementVisibility.js +14 -0
  176. package/dist/esm/src/core/hooks/useTrackElementVisibility.js.map +1 -0
  177. package/dist/esm/src/embedded/EmbeddedClientProvider.js +83 -0
  178. package/dist/esm/src/embedded/EmbeddedClientProvider.js.map +1 -0
  179. package/dist/esm/src/embedded/call/CallControls.js +65 -0
  180. package/dist/esm/src/embedded/call/CallControls.js.map +1 -0
  181. package/dist/esm/src/embedded/call/CallHeader.js +57 -0
  182. package/dist/esm/src/embedded/call/CallHeader.js.map +1 -0
  183. package/dist/esm/src/embedded/call/CallLayout.js +63 -0
  184. package/dist/esm/src/embedded/call/CallLayout.js.map +1 -0
  185. package/dist/esm/src/embedded/call/CallStateRouter.js +87 -0
  186. package/dist/esm/src/embedded/call/CallStateRouter.js.map +1 -0
  187. package/dist/esm/src/embedded/call/EmbeddedCall.js +12 -0
  188. package/dist/esm/src/embedded/call/EmbeddedCall.js.map +1 -0
  189. package/dist/esm/src/embedded/context/ConfigurationContext.js +21 -0
  190. package/dist/esm/src/embedded/context/ConfigurationContext.js.map +1 -0
  191. package/dist/esm/src/embedded/hooks/useCallDuration.js +32 -0
  192. package/dist/esm/src/embedded/hooks/useCallDuration.js.map +1 -0
  193. package/dist/esm/src/embedded/hooks/useEmbeddedClient.js +40 -0
  194. package/dist/esm/src/embedded/hooks/useEmbeddedClient.js.map +1 -0
  195. package/dist/esm/src/embedded/hooks/useInitializeCall.js +39 -0
  196. package/dist/esm/src/embedded/hooks/useInitializeCall.js.map +1 -0
  197. package/dist/esm/src/embedded/hooks/useInitializeVideoClient.js +93 -0
  198. package/dist/esm/src/embedded/hooks/useInitializeVideoClient.js.map +1 -0
  199. package/dist/esm/src/embedded/hooks/useIsLivestreamPaused.js +42 -0
  200. package/dist/esm/src/embedded/hooks/useIsLivestreamPaused.js.map +1 -0
  201. package/dist/esm/src/embedded/hooks/useLayout.js +122 -0
  202. package/dist/esm/src/embedded/hooks/useLayout.js.map +1 -0
  203. package/dist/esm/src/embedded/hooks/useNoiseCancellationLoader.js +48 -0
  204. package/dist/esm/src/embedded/hooks/useNoiseCancellationLoader.js.map +1 -0
  205. package/dist/esm/src/embedded/hooks/useWakeLock.js +34 -0
  206. package/dist/esm/src/embedded/hooks/useWakeLock.js.map +1 -0
  207. package/dist/esm/src/embedded/livestream/EmbeddedLivestream.js +11 -0
  208. package/dist/esm/src/embedded/livestream/EmbeddedLivestream.js.map +1 -0
  209. package/dist/esm/src/embedded/livestream/LivestreamUI.js +17 -0
  210. package/dist/esm/src/embedded/livestream/LivestreamUI.js.map +1 -0
  211. package/dist/esm/src/embedded/livestream/host/HostLayout.js +76 -0
  212. package/dist/esm/src/embedded/livestream/host/HostLayout.js.map +1 -0
  213. package/dist/esm/src/embedded/livestream/host/HostStateRouter.js +110 -0
  214. package/dist/esm/src/embedded/livestream/host/HostStateRouter.js.map +1 -0
  215. package/dist/esm/src/embedded/livestream/viewer/ViewerLayout.js +74 -0
  216. package/dist/esm/src/embedded/livestream/viewer/ViewerLayout.js.map +1 -0
  217. package/dist/esm/src/embedded/livestream/viewer/ViewerLobby.js +109 -0
  218. package/dist/esm/src/embedded/livestream/viewer/ViewerLobby.js.map +1 -0
  219. package/dist/esm/src/embedded/livestream/viewer/ViewerStateRouter.js +105 -0
  220. package/dist/esm/src/embedded/livestream/viewer/ViewerStateRouter.js.map +1 -0
  221. package/dist/esm/src/embedded/shared/BlurToggleButton/BlurToggleButton.js +65 -0
  222. package/dist/esm/src/embedded/shared/BlurToggleButton/BlurToggleButton.js.map +1 -0
  223. package/dist/esm/src/embedded/shared/CallFeedback/CallEndedScreen.js +34 -0
  224. package/dist/esm/src/embedded/shared/CallFeedback/CallEndedScreen.js.map +1 -0
  225. package/dist/esm/src/embedded/shared/CallFeedback/CallFeedback.js +35 -0
  226. package/dist/esm/src/embedded/shared/CallFeedback/CallFeedback.js.map +1 -0
  227. package/dist/esm/src/embedded/shared/CallFeedback/RatingScreen.js +18 -0
  228. package/dist/esm/src/embedded/shared/CallFeedback/RatingScreen.js.map +1 -0
  229. package/dist/esm/src/embedded/shared/CallFeedback/StarRating.js +37 -0
  230. package/dist/esm/src/embedded/shared/CallFeedback/StarRating.js.map +1 -0
  231. package/dist/esm/src/embedded/shared/CallFeedback/ThankYouScreen.js +34 -0
  232. package/dist/esm/src/embedded/shared/CallFeedback/ThankYouScreen.js.map +1 -0
  233. package/dist/esm/src/embedded/shared/ConnectionNotification/ConnectionNotification.js +56 -0
  234. package/dist/esm/src/embedded/shared/ConnectionNotification/ConnectionNotification.js.map +1 -0
  235. package/dist/esm/src/embedded/shared/EmbeddedParticipantViewUI/EmbeddedParticipantViewUI.js +42 -0
  236. package/dist/esm/src/embedded/shared/EmbeddedParticipantViewUI/EmbeddedParticipantViewUI.js.map +1 -0
  237. package/dist/esm/src/embedded/shared/JoinError/JoinError.js +34 -0
  238. package/dist/esm/src/embedded/shared/JoinError/JoinError.js.map +1 -0
  239. package/dist/esm/src/embedded/shared/Lobby/DeviceControls.js +44 -0
  240. package/dist/esm/src/embedded/shared/Lobby/DeviceControls.js.map +1 -0
  241. package/dist/esm/src/embedded/shared/Lobby/DisabledDeviceButton.js +31 -0
  242. package/dist/esm/src/embedded/shared/Lobby/DisabledDeviceButton.js.map +1 -0
  243. package/dist/esm/src/embedded/shared/Lobby/Lobby.js +45 -0
  244. package/dist/esm/src/embedded/shared/Lobby/Lobby.js.map +1 -0
  245. package/dist/esm/src/embedded/shared/Lobby/ToggleCameraButton.js +40 -0
  246. package/dist/esm/src/embedded/shared/Lobby/ToggleCameraButton.js.map +1 -0
  247. package/dist/esm/src/embedded/shared/Lobby/ToggleMicButton.js +41 -0
  248. package/dist/esm/src/embedded/shared/Lobby/ToggleMicButton.js.map +1 -0
  249. package/dist/esm/src/embedded/shared/Lobby/VideoPreviewFallbacks.js +50 -0
  250. package/dist/esm/src/embedded/shared/Lobby/VideoPreviewFallbacks.js.map +1 -0
  251. package/dist/esm/src/embedded/shared/ViewersCount/ViewersCount.js +31 -0
  252. package/dist/esm/src/embedded/shared/ViewersCount/ViewersCount.js.map +1 -0
  253. package/dist/esm/src/hooks/useDeviceList.js +40 -0
  254. package/dist/esm/src/hooks/useDeviceList.js.map +1 -0
  255. package/dist/esm/src/hooks/useDragToScroll.js +116 -0
  256. package/dist/esm/src/hooks/useDragToScroll.js.map +1 -0
  257. package/dist/esm/src/hooks/useFloatingUIPreset.js +34 -0
  258. package/dist/esm/src/hooks/useFloatingUIPreset.js.map +1 -0
  259. package/dist/esm/src/hooks/useLoopbackRecording.js +138 -0
  260. package/dist/esm/src/hooks/useLoopbackRecording.js.map +1 -0
  261. package/dist/esm/src/hooks/useModeration.js +135 -0
  262. package/dist/esm/src/hooks/useModeration.js.map +1 -0
  263. package/dist/esm/src/hooks/usePersistedDevicePreferences.js +16 -0
  264. package/dist/esm/src/hooks/usePersistedDevicePreferences.js.map +1 -0
  265. package/dist/esm/src/hooks/useRequestPermission.js +41 -0
  266. package/dist/esm/src/hooks/useRequestPermission.js.map +1 -0
  267. package/dist/esm/src/hooks/useScrollPosition.js +66 -0
  268. package/dist/esm/src/hooks/useScrollPosition.js.map +1 -0
  269. package/dist/esm/src/translations/en.json.js +177 -0
  270. package/dist/esm/src/translations/en.json.js.map +1 -0
  271. package/dist/esm/src/translations/index.js +6 -0
  272. package/dist/esm/src/translations/index.js.map +1 -0
  273. package/dist/esm/src/utilities/applyElementToRef.js +10 -0
  274. package/dist/esm/src/utilities/applyElementToRef.js.map +1 -0
  275. package/dist/esm/src/utilities/callControlHandler.js +29 -0
  276. package/dist/esm/src/utilities/callControlHandler.js.map +1 -0
  277. package/dist/esm/src/utilities/chunk.js +7 -0
  278. package/dist/esm/src/utilities/chunk.js.map +1 -0
  279. package/dist/esm/src/utilities/filter.js +94 -0
  280. package/dist/esm/src/utilities/filter.js.map +1 -0
  281. package/dist/esm/src/utilities/isComponentType.js +10 -0
  282. package/dist/esm/src/utilities/isComponentType.js.map +1 -0
  283. package/dist/esm/src/utilities/normalizeString.js +11 -0
  284. package/dist/esm/src/utilities/normalizeString.js.map +1 -0
  285. package/dist/esm/src/wrappers/LivestreamPlayer/LivestreamPlayer.js +105 -0
  286. package/dist/esm/src/wrappers/LivestreamPlayer/LivestreamPlayer.js.map +1 -0
  287. package/dist/index.cjs.js +135 -2
  288. package/dist/index.cjs.js.map +1 -1
  289. package/dist/index.d.ts +1 -1
  290. package/dist/src/hooks/index.d.ts +1 -0
  291. package/dist/src/hooks/useLoopbackRecording.d.ts +23 -0
  292. package/index.ts +4 -0
  293. package/package.json +14 -10
  294. package/src/hooks/index.ts +1 -0
  295. package/src/hooks/useLoopbackRecording.ts +207 -0
  296. package/dist/background-filters-D2U5UBbH.es.js.map +0 -1
  297. package/dist/embedded-BackgroundFilters-D2U5UBbH.es.js +0 -420
  298. package/dist/embedded-BackgroundFilters-D2U5UBbH.es.js.map +0 -1
  299. package/dist/embedded-CallStatsLatencyChart-Bj5OSYzg.es.js +0 -57
  300. package/dist/embedded-CallStatsLatencyChart-Bj5OSYzg.es.js.map +0 -1
  301. package/dist/embedded.es.js +0 -3536
  302. package/dist/embedded.es.js.map +0 -1
  303. package/dist/index.es.js +0 -3291
  304. package/dist/index.es.js.map +0 -1
  305. package/dist/latency-chart-Bj5OSYzg.es.js.map +0 -1
@@ -0,0 +1,35 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useState, useCallback } from 'react';
3
+ import { useCall } from '@stream-io/video-react-bindings';
4
+ import { CallEndedScreen } from './CallEndedScreen.js';
5
+ import { RatingScreen } from './RatingScreen.js';
6
+ import { ThankYouScreen } from './ThankYouScreen.js';
7
+ import { useEmbeddedConfiguration } from '../../context/ConfigurationContext.js';
8
+
9
+ const CallFeedback = ({ onJoin }) => {
10
+ const call = useCall();
11
+ const { onError } = useEmbeddedConfiguration();
12
+ const [state, setState] = useState('ended');
13
+ const onFeedback = useCallback(() => setState('rating'), []);
14
+ const handleSubmit = useCallback(async (rating, message) => {
15
+ if (!call)
16
+ return;
17
+ const clampedRating = Math.min(Math.max(1, rating), 5);
18
+ try {
19
+ await call.submitFeedback(clampedRating, {
20
+ reason: message,
21
+ custom: { message },
22
+ });
23
+ }
24
+ catch (err) {
25
+ onError?.(err);
26
+ }
27
+ finally {
28
+ setState('submitted');
29
+ }
30
+ }, [call, onError]);
31
+ return (jsx("div", { className: "str-video__embedded-call-feedback", children: state === 'submitted' ? (jsx(ThankYouScreen, {})) : state === 'rating' ? (jsx(RatingScreen, { onSubmit: handleSubmit })) : (jsx(CallEndedScreen, { onJoin: onJoin, onFeedback: onFeedback })) }));
32
+ };
33
+
34
+ export { CallFeedback };
35
+ //# sourceMappingURL=CallFeedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallFeedback.js","sources":["../../../../../../../../src/embedded/shared/CallFeedback/CallFeedback.tsx"],"sourcesContent":["import { useCallback, useState } from 'react';\nimport { useCall } from '@stream-io/video-react-bindings';\nimport { CallEndedScreen } from './CallEndedScreen';\nimport { RatingScreen } from './RatingScreen';\nimport { ThankYouScreen } from './ThankYouScreen';\nimport { useEmbeddedConfiguration } from '../../context';\n\nexport interface CallFeedbackProps {\n onJoin?: () => void;\n}\n\ntype FeedbackState = 'ended' | 'rating' | 'submitted';\n\nexport const CallFeedback = ({ onJoin }: CallFeedbackProps) => {\n const call = useCall();\n const { onError } = useEmbeddedConfiguration();\n const [state, setState] = useState<FeedbackState>('ended');\n\n const onFeedback = useCallback(() => setState('rating'), []);\n\n const handleSubmit = useCallback(\n async (rating: number, message: string) => {\n if (!call) return;\n\n const clampedRating = Math.min(Math.max(1, rating), 5);\n try {\n await call.submitFeedback(clampedRating, {\n reason: message,\n custom: { message },\n });\n } catch (err) {\n onError?.(err);\n } finally {\n setState('submitted');\n }\n },\n [call, onError],\n );\n\n return (\n <div className=\"str-video__embedded-call-feedback\">\n {state === 'submitted' ? (\n <ThankYouScreen />\n ) : state === 'rating' ? (\n <RatingScreen onSubmit={handleSubmit} />\n ) : (\n <CallEndedScreen onJoin={onJoin} onFeedback={onFeedback} />\n )}\n </div>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;;;MAaa,YAAY,GAAG,CAAC,EAAE,MAAM,EAAqB,KAAI;AAC5D,IAAA,MAAM,IAAI,GAAG,OAAO,EAAE;AACtB,IAAA,MAAM,EAAE,OAAO,EAAE,GAAG,wBAAwB,EAAE;IAC9C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,OAAO,CAAC;AAE1D,IAAA,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;IAE5D,MAAM,YAAY,GAAG,WAAW,CAC9B,OAAO,MAAc,EAAE,OAAe,KAAI;AACxC,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AACtD,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACvC,gBAAA,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,EAAE,OAAO,EAAE;AACpB,aAAA,CAAC;QACJ;QAAE,OAAO,GAAG,EAAE;AACZ,YAAA,OAAO,GAAG,GAAG,CAAC;QAChB;gBAAU;YACR,QAAQ,CAAC,WAAW,CAAC;QACvB;AACF,IAAA,CAAC,EACD,CAAC,IAAI,EAAE,OAAO,CAAC,CAChB;IAED,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mCAAmC,YAC/C,KAAK,KAAK,WAAW,IACpBA,GAAA,CAAC,cAAc,EAAA,EAAA,CAAG,IAChB,KAAK,KAAK,QAAQ,IACpBA,GAAA,CAAC,YAAY,EAAA,EAAC,QAAQ,EAAE,YAAY,GAAI,KAExCA,GAAA,CAAC,eAAe,EAAA,EAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAA,CAAI,CAC5D,EAAA,CACG;AAEV;;;;"}
@@ -0,0 +1,18 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useState } from 'react';
3
+ import { useI18n } from '@stream-io/video-react-bindings';
4
+ import { StarRating } from './StarRating.js';
5
+
6
+ const RatingScreen = ({ onSubmit }) => {
7
+ const { t } = useI18n();
8
+ const [rating, setRating] = useState(0);
9
+ const [message, setMessage] = useState('');
10
+ const handleSubmit = () => {
11
+ if (rating > 0)
12
+ onSubmit(rating, message);
13
+ };
14
+ return (jsxs("div", { className: "str-video__embedded-call-feedback__container", children: [jsx("h2", { className: "str-video__embedded-call-feedback__title", children: t('Share your feedback') }), jsx(StarRating, { value: rating, onChange: setRating }), jsx("textarea", { "aria-label": t('Feedback message'), className: "str-video__embedded-call-feedback__textarea", placeholder: t('Tell us about your experience...'), value: message, onChange: (e) => setMessage(e.target.value), rows: 3 }), jsx("div", { className: "str-video__embedded-call-feedback__actions", children: jsx("button", { type: "button", className: "str-video__button", onClick: handleSubmit, disabled: rating === 0, children: t('Submit feedback') }) })] }));
15
+ };
16
+
17
+ export { RatingScreen };
18
+ //# sourceMappingURL=RatingScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RatingScreen.js","sources":["../../../../../../../../src/embedded/shared/CallFeedback/RatingScreen.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { useI18n } from '@stream-io/video-react-bindings';\nimport { StarRating } from './StarRating';\n\ninterface RatingScreenProps {\n onSubmit: (rating: number, message: string) => void;\n}\n\nexport const RatingScreen = ({ onSubmit }: RatingScreenProps) => {\n const { t } = useI18n();\n const [rating, setRating] = useState(0);\n const [message, setMessage] = useState('');\n\n const handleSubmit = () => {\n if (rating > 0) onSubmit(rating, message);\n };\n\n return (\n <div className=\"str-video__embedded-call-feedback__container\">\n <h2 className=\"str-video__embedded-call-feedback__title\">\n {t('Share your feedback')}\n </h2>\n\n <StarRating value={rating} onChange={setRating} />\n\n <textarea\n aria-label={t('Feedback message')}\n className=\"str-video__embedded-call-feedback__textarea\"\n placeholder={t('Tell us about your experience...')}\n value={message}\n onChange={(e) => setMessage(e.target.value)}\n rows={3}\n />\n\n <div className=\"str-video__embedded-call-feedback__actions\">\n <button\n type=\"button\"\n className=\"str-video__button\"\n onClick={handleSubmit}\n disabled={rating === 0}\n >\n {t('Submit feedback')}\n </button>\n </div>\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;MAQa,YAAY,GAAG,CAAC,EAAE,QAAQ,EAAqB,KAAI;AAC9D,IAAA,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE;IACvB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;IAE1C,MAAM,YAAY,GAAG,MAAK;QACxB,IAAI,MAAM,GAAG,CAAC;AAAE,YAAA,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;AAC3C,IAAA,CAAC;IAED,QACEA,cAAK,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAAA,CAC3DC,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,0CAA0C,EAAA,QAAA,EACrD,CAAC,CAAC,qBAAqB,CAAC,EAAA,CACtB,EAELA,IAAC,UAAU,EAAA,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,GAAI,EAElDA,GAAA,CAAA,UAAA,EAAA,EAAA,YAAA,EACc,CAAC,CAAC,kBAAkB,CAAC,EACjC,SAAS,EAAC,6CAA6C,EACvD,WAAW,EAAE,CAAC,CAAC,kCAAkC,CAAC,EAClD,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC3C,IAAI,EAAE,CAAC,EAAA,CACP,EAEFA,aAAK,SAAS,EAAC,4CAA4C,EAAA,QAAA,EACzDA,GAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,mBAAmB,EAC7B,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,MAAM,KAAK,CAAC,EAAA,QAAA,EAErB,CAAC,CAAC,iBAAiB,CAAC,EAAA,CACd,EAAA,CACL,CAAA,EAAA,CACF;AAEV;;;;"}
@@ -0,0 +1,37 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useState } from 'react';
3
+ import clsx from 'clsx';
4
+ import { useI18n } from '@stream-io/video-react-bindings';
5
+ import '../../../components/BackgroundFilters/BackgroundFiltersProvider.js';
6
+ import '../../../components/Button/CompositeButton.js';
7
+ import '../../../components/Button/IconButton.js';
8
+ import '@stream-io/video-client';
9
+ import '@floating-ui/react';
10
+ import '../../../components/CallControls/RecordCallButton.js';
11
+ import '../../../components/CallControls/ReactionsButton.js';
12
+ import { Icon } from '../../../components/Icon/Icon.js';
13
+ import '../../../components/DeviceSettings/DeviceSettings.js';
14
+ import '../../../components/DropdownSelect/DropdownSelect.js';
15
+ import '../../../components/Menu/MenuToggle.js';
16
+ import '../../../components/CallControls/CancelCallButton.js';
17
+ import '../../../components/CallControls/CallStatsButton.js';
18
+ import '../../../components/CallParticipantsList/CallParticipantsList.js';
19
+ import '../../../components/CallParticipantsList/CallParticipantListingItem.js';
20
+ import '../../../components/CallStats/CallStats.js';
21
+ import '../../../components/NoiseCancellation/NoiseCancellationProvider.js';
22
+ import '../../../components/RingingCall/RingingCall.js';
23
+ import '../../../components/Permissions/PermissionRequests.js';
24
+ import '../../../core/components/Video/Video.js';
25
+ import '../../../core/components/Video/BaseVideo.js';
26
+ import '../../../core/components/Video/DefaultVideoPlaceholder.js';
27
+
28
+ const StarRating = ({ value, onChange }) => {
29
+ const { t } = useI18n();
30
+ const [hovered, setHovered] = useState(0);
31
+ const displayValue = hovered || value;
32
+ const getStarClasses = (star) => clsx('str-video__embedded-call-feedback__star', star <= displayValue && 'str-video__embedded-call-feedback__star--active');
33
+ return (jsxs("div", { className: "str-video__embedded-call-feedback__rating-section", children: [jsx("p", { className: "str-video__embedded-call-feedback__rating-label", children: t('How was your call quality?') }), jsx("div", { className: "str-video__embedded-call-feedback__stars", onMouseLeave: () => setHovered(0), children: [1, 2, 3, 4, 5].map((star) => (jsx("button", { type: "button", className: getStarClasses(star), onClick: () => onChange(star), onMouseEnter: () => setHovered(star), "aria-label": t('Rate {{ count }} star', { count: star }), children: jsx(Icon, { icon: "star-filled" }) }, star))) })] }));
34
+ };
35
+
36
+ export { StarRating };
37
+ //# sourceMappingURL=StarRating.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StarRating.js","sources":["../../../../../../../../src/embedded/shared/CallFeedback/StarRating.tsx"],"sourcesContent":["import { useState } from 'react';\nimport clsx from 'clsx';\nimport { useI18n } from '@stream-io/video-react-bindings';\nimport { Icon } from '../../../components';\n\ninterface StarRatingProps {\n value: number;\n onChange: (rating: number) => void;\n}\n\nexport const StarRating = ({ value, onChange }: StarRatingProps) => {\n const { t } = useI18n();\n const [hovered, setHovered] = useState(0);\n const displayValue = hovered || value;\n\n const getStarClasses = (star: number) =>\n clsx(\n 'str-video__embedded-call-feedback__star',\n star <= displayValue && 'str-video__embedded-call-feedback__star--active',\n );\n\n return (\n <div className=\"str-video__embedded-call-feedback__rating-section\">\n <p className=\"str-video__embedded-call-feedback__rating-label\">\n {t('How was your call quality?')}\n </p>\n <div\n className=\"str-video__embedded-call-feedback__stars\"\n onMouseLeave={() => setHovered(0)}\n >\n {[1, 2, 3, 4, 5].map((star) => (\n <button\n key={star}\n type=\"button\"\n className={getStarClasses(star)}\n onClick={() => onChange(star)}\n onMouseEnter={() => setHovered(star)}\n aria-label={t('Rate {{ count }} star', { count: star })}\n >\n <Icon icon=\"star-filled\" />\n </button>\n ))}\n </div>\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,MAAM,UAAU,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAmB,KAAI;AACjE,IAAA,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE;IACvB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AACzC,IAAA,MAAM,YAAY,GAAG,OAAO,IAAI,KAAK;AAErC,IAAA,MAAM,cAAc,GAAG,CAAC,IAAY,KAClC,IAAI,CACF,yCAAyC,EACzC,IAAI,IAAI,YAAY,IAAI,iDAAiD,CAC1E;IAEH,QACEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mDAAmD,aAChEC,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,iDAAiD,EAAA,QAAA,EAC3D,CAAC,CAAC,4BAA4B,CAAC,EAAA,CAC9B,EACJA,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,0CAA0C,EACpD,YAAY,EAAE,MAAM,UAAU,CAAC,CAAC,CAAC,EAAA,QAAA,EAEhC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MACxBA,GAAA,CAAA,QAAA,EAAA,EAEE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,EAC/B,OAAO,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,EAC7B,YAAY,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,gBACxB,CAAC,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,QAAA,EAEvDA,GAAA,CAAC,IAAI,IAAC,IAAI,EAAC,aAAa,EAAA,CAAG,EAAA,EAPtB,IAAI,CAQF,CACV,CAAC,EAAA,CACE,CAAA,EAAA,CACF;AAEV;;;;"}
@@ -0,0 +1,34 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useI18n } from '@stream-io/video-react-bindings';
3
+ import 'react';
4
+ import 'clsx';
5
+ import '../../../components/BackgroundFilters/BackgroundFiltersProvider.js';
6
+ import '../../../components/Button/CompositeButton.js';
7
+ import '../../../components/Button/IconButton.js';
8
+ import '@stream-io/video-client';
9
+ import '@floating-ui/react';
10
+ import '../../../components/CallControls/RecordCallButton.js';
11
+ import '../../../components/CallControls/ReactionsButton.js';
12
+ import { Icon } from '../../../components/Icon/Icon.js';
13
+ import '../../../components/DeviceSettings/DeviceSettings.js';
14
+ import '../../../components/DropdownSelect/DropdownSelect.js';
15
+ import '../../../components/Menu/MenuToggle.js';
16
+ import '../../../components/CallControls/CancelCallButton.js';
17
+ import '../../../components/CallControls/CallStatsButton.js';
18
+ import '../../../components/CallParticipantsList/CallParticipantsList.js';
19
+ import '../../../components/CallParticipantsList/CallParticipantListingItem.js';
20
+ import '../../../components/CallStats/CallStats.js';
21
+ import '../../../components/NoiseCancellation/NoiseCancellationProvider.js';
22
+ import '../../../components/RingingCall/RingingCall.js';
23
+ import '../../../components/Permissions/PermissionRequests.js';
24
+ import '../../../core/components/Video/Video.js';
25
+ import '../../../core/components/Video/BaseVideo.js';
26
+ import '../../../core/components/Video/DefaultVideoPlaceholder.js';
27
+
28
+ const ThankYouScreen = () => {
29
+ const { t } = useI18n();
30
+ return (jsxs("div", { className: "str-video__embedded-call-feedback__container", children: [jsx("div", { className: "str-video__embedded-call-feedback__checkmark", children: jsx(Icon, { icon: "checkmark" }) }), jsx("h2", { className: "str-video__embedded-call-feedback__title", children: t('Thank you!') }), jsx("p", { className: "str-video__embedded-call-feedback__subtitle", children: t('Your feedback helps improve call quality.') })] }));
31
+ };
32
+
33
+ export { ThankYouScreen };
34
+ //# sourceMappingURL=ThankYouScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThankYouScreen.js","sources":["../../../../../../../../src/embedded/shared/CallFeedback/ThankYouScreen.tsx"],"sourcesContent":["import { useI18n } from '@stream-io/video-react-bindings';\nimport { Icon } from '../../../components';\n\nexport const ThankYouScreen = () => {\n const { t } = useI18n();\n return (\n <div className=\"str-video__embedded-call-feedback__container\">\n <div className=\"str-video__embedded-call-feedback__checkmark\">\n <Icon icon=\"checkmark\" />\n </div>\n <h2 className=\"str-video__embedded-call-feedback__title\">\n {t('Thank you!')}\n </h2>\n <p className=\"str-video__embedded-call-feedback__subtitle\">\n {t('Your feedback helps improve call quality.')}\n </p>\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAM,cAAc,GAAG,MAAK;AACjC,IAAA,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE;AACvB,IAAA,QACEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAAA,CAC3DC,aAAK,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAC3DA,GAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAC,WAAW,EAAA,CAAG,GACrB,EACNA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,0CAA0C,YACrD,CAAC,CAAC,YAAY,CAAC,EAAA,CACb,EACLA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,6CAA6C,EAAA,QAAA,EACvD,CAAC,CAAC,2CAA2C,CAAC,EAAA,CAC7C,CAAA,EAAA,CACA;AAEV;;;;"}
@@ -0,0 +1,56 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { CallingState } from '@stream-io/video-client';
3
+ import { useI18n, useCallStateHooks } from '@stream-io/video-react-bindings';
4
+ import 'react';
5
+ import 'clsx';
6
+ import '../../../components/BackgroundFilters/BackgroundFiltersProvider.js';
7
+ import '../../../components/Button/CompositeButton.js';
8
+ import '../../../components/Button/IconButton.js';
9
+ import { Notification } from '../../../components/Notification/Notification.js';
10
+ import '../../../components/CallControls/RecordCallButton.js';
11
+ import '../../../components/CallControls/ReactionsButton.js';
12
+ import '@floating-ui/react';
13
+ import '../../../components/DeviceSettings/DeviceSettings.js';
14
+ import '../../../components/DropdownSelect/DropdownSelect.js';
15
+ import '../../../components/Menu/MenuToggle.js';
16
+ import '../../../components/CallControls/CancelCallButton.js';
17
+ import '../../../components/CallControls/CallStatsButton.js';
18
+ import '../../../components/CallParticipantsList/CallParticipantsList.js';
19
+ import '../../../components/CallParticipantsList/CallParticipantListingItem.js';
20
+ import { LoadingIndicator } from '../../../components/LoadingIndicator/LoadingIndicator.js';
21
+ import '../../../components/CallStats/CallStats.js';
22
+ import '../../../components/NoiseCancellation/NoiseCancellationProvider.js';
23
+ import '../../../components/RingingCall/RingingCall.js';
24
+ import '../../../components/Permissions/PermissionRequests.js';
25
+ import '../../../core/components/Video/Video.js';
26
+ import '../../../core/components/Video/BaseVideo.js';
27
+ import '../../../core/components/Video/DefaultVideoPlaceholder.js';
28
+
29
+ const ConnectionNotification = () => {
30
+ const { t } = useI18n();
31
+ const { useCallCallingState } = useCallStateHooks();
32
+ const callingState = useCallCallingState();
33
+ const isOffline = callingState === CallingState.OFFLINE;
34
+ const isReconnecting = callingState === CallingState.RECONNECTING;
35
+ const isMigrating = callingState === CallingState.MIGRATING;
36
+ const isJoining = callingState === CallingState.JOINING;
37
+ const hasFailedToRecover = callingState === CallingState.RECONNECTING_FAILED;
38
+ const showError = isOffline || hasFailedToRecover;
39
+ const showLoading = isJoining || isReconnecting || isMigrating;
40
+ if (showError) {
41
+ return (jsx("div", { className: "str-video__embedded-connection-notification", children: jsx(Notification, { isVisible: true, placement: "bottom", message: isOffline
42
+ ? t('You are offline. Check your internet connection.')
43
+ : t('Failed to restore connection. Please try again.') }) }));
44
+ }
45
+ if (showLoading) {
46
+ return (jsx("div", { className: "str-video__embedded-connection-notification", children: jsx(Notification, { isVisible: true, placement: "bottom", iconClassName: null, message: jsx(LoadingIndicator, { text: isMigrating
47
+ ? t('Migrating...')
48
+ : isJoining
49
+ ? t('Joining')
50
+ : t('Reconnecting...') }) }) }));
51
+ }
52
+ return null;
53
+ };
54
+
55
+ export { ConnectionNotification };
56
+ //# sourceMappingURL=ConnectionNotification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionNotification.js","sources":["../../../../../../../../src/embedded/shared/ConnectionNotification/ConnectionNotification.tsx"],"sourcesContent":["import { CallingState } from '@stream-io/video-client';\nimport { useCallStateHooks, useI18n } from '@stream-io/video-react-bindings';\nimport { LoadingIndicator, Notification } from '../../../components';\n\nexport const ConnectionNotification = () => {\n const { t } = useI18n();\n const { useCallCallingState } = useCallStateHooks();\n const callingState = useCallCallingState();\n\n const isOffline = callingState === CallingState.OFFLINE;\n const isReconnecting = callingState === CallingState.RECONNECTING;\n const isMigrating = callingState === CallingState.MIGRATING;\n const isJoining = callingState === CallingState.JOINING;\n const hasFailedToRecover = callingState === CallingState.RECONNECTING_FAILED;\n\n const showError = isOffline || hasFailedToRecover;\n const showLoading = isJoining || isReconnecting || isMigrating;\n\n if (showError) {\n return (\n <div className=\"str-video__embedded-connection-notification\">\n <Notification\n isVisible\n placement=\"bottom\"\n message={\n isOffline\n ? t('You are offline. Check your internet connection.')\n : t('Failed to restore connection. Please try again.')\n }\n />\n </div>\n );\n }\n\n if (showLoading) {\n return (\n <div className=\"str-video__embedded-connection-notification\">\n <Notification\n isVisible\n placement=\"bottom\"\n iconClassName={null}\n message={\n <LoadingIndicator\n text={\n isMigrating\n ? t('Migrating...')\n : isJoining\n ? t('Joining')\n : t('Reconnecting...')\n }\n />\n }\n />\n </div>\n );\n }\n\n return null;\n};\n"],"names":["_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,MAAM,sBAAsB,GAAG,MAAK;AACzC,IAAA,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE;AACvB,IAAA,MAAM,EAAE,mBAAmB,EAAE,GAAG,iBAAiB,EAAE;AACnD,IAAA,MAAM,YAAY,GAAG,mBAAmB,EAAE;AAE1C,IAAA,MAAM,SAAS,GAAG,YAAY,KAAK,YAAY,CAAC,OAAO;AACvD,IAAA,MAAM,cAAc,GAAG,YAAY,KAAK,YAAY,CAAC,YAAY;AACjE,IAAA,MAAM,WAAW,GAAG,YAAY,KAAK,YAAY,CAAC,SAAS;AAC3D,IAAA,MAAM,SAAS,GAAG,YAAY,KAAK,YAAY,CAAC,OAAO;AACvD,IAAA,MAAM,kBAAkB,GAAG,YAAY,KAAK,YAAY,CAAC,mBAAmB;AAE5E,IAAA,MAAM,SAAS,GAAG,SAAS,IAAI,kBAAkB;AACjD,IAAA,MAAM,WAAW,GAAG,SAAS,IAAI,cAAc,IAAI,WAAW;IAE9D,IAAI,SAAS,EAAE;AACb,QAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6CAA6C,YAC1DA,GAAA,CAAC,YAAY,EAAA,EACX,SAAS,QACT,SAAS,EAAC,QAAQ,EAClB,OAAO,EACL;AACE,sBAAE,CAAC,CAAC,kDAAkD;sBACpD,CAAC,CAAC,iDAAiD,CAAC,EAAA,CAE1D,EAAA,CACE;IAEV;IAEA,IAAI,WAAW,EAAE;QACf,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6CAA6C,EAAA,QAAA,EAC1DA,GAAA,CAAC,YAAY,EAAA,EACX,SAAS,EAAA,IAAA,EACT,SAAS,EAAC,QAAQ,EAClB,aAAa,EAAE,IAAI,EACnB,OAAO,EACLA,GAAA,CAAC,gBAAgB,EAAA,EACf,IAAI,EACF;AACE,0BAAE,CAAC,CAAC,cAAc;AAClB,0BAAE;AACA,8BAAE,CAAC,CAAC,SAAS;8BACX,CAAC,CAAC,iBAAiB,CAAC,EAAA,CAE5B,EAAA,CAEJ,EAAA,CACE;IAEV;AAEA,IAAA,OAAO,IAAI;AACb;;;;"}
@@ -0,0 +1,42 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useCallback } from 'react';
3
+ import clsx from 'clsx';
4
+ import '../../../core/components/Audio/Audio.js';
5
+ import '../../../core/components/Audio/ParticipantsAudio.js';
6
+ import '@stream-io/video-react-bindings';
7
+ import '@stream-io/video-client';
8
+ import { useParticipantViewContext } from '../../../core/components/ParticipantView/ParticipantViewContext.js';
9
+ import '../../../components/Menu/MenuToggle.js';
10
+ import '../../../core/components/ParticipantView/ParticipantView.js';
11
+ import { DefaultParticipantViewUI } from '../../../core/components/ParticipantView/DefaultParticipantViewUI.js';
12
+ import '../../../core/components/StreamCall/StreamCall.js';
13
+ import '../../../core/components/StreamVideo/StreamVideo.js';
14
+ import '../../../core/components/Video/BaseVideo.js';
15
+ import '../../../core/components/Video/Video.js';
16
+ import '../../../core/components/CallLayout/LivestreamLayout.js';
17
+ import '../../../core/components/CallLayout/PaginatedGridLayout.js';
18
+ import '../../../core/components/CallLayout/SpeakerLayout.js';
19
+ import '../../../core/components/CallLayout/PipLayout/Pip.js';
20
+ import '../../../core/components/CallLayout/PipLayout/Host.js';
21
+ import '../../../core/components/CallLayout/PipLayout/Grid.js';
22
+
23
+ const EmbeddedParticipantViewUI = () => {
24
+ const { participantViewElement, trackType } = useParticipantViewContext();
25
+ const handleDoubleClick = useCallback(() => {
26
+ if (!participantViewElement)
27
+ return;
28
+ if (typeof participantViewElement.requestFullscreen === 'undefined')
29
+ return;
30
+ if (!document.fullscreenElement) {
31
+ participantViewElement.requestFullscreen().catch(console.error);
32
+ }
33
+ else {
34
+ document.exitFullscreen().catch(console.error);
35
+ }
36
+ }, [participantViewElement]);
37
+ return (jsx("div", { className: clsx('str-video__embedded-participant-view-ui', trackType === 'screenShareTrack' &&
38
+ 'str-video__embedded-participant-view-ui--screen-share'), onDoubleClick: handleDoubleClick, children: jsx(DefaultParticipantViewUI, {}) }));
39
+ };
40
+
41
+ export { EmbeddedParticipantViewUI };
42
+ //# sourceMappingURL=EmbeddedParticipantViewUI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmbeddedParticipantViewUI.js","sources":["../../../../../../../../src/embedded/shared/EmbeddedParticipantViewUI/EmbeddedParticipantViewUI.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport clsx from 'clsx';\nimport { DefaultParticipantViewUI } from '../../../core';\nimport { useParticipantViewContext } from '../../../core';\n\nexport const EmbeddedParticipantViewUI = () => {\n const { participantViewElement, trackType } = useParticipantViewContext();\n\n const handleDoubleClick = useCallback(() => {\n if (!participantViewElement) return;\n if (typeof participantViewElement.requestFullscreen === 'undefined') return;\n\n if (!document.fullscreenElement) {\n participantViewElement.requestFullscreen().catch(console.error);\n } else {\n document.exitFullscreen().catch(console.error);\n }\n }, [participantViewElement]);\n\n return (\n <div\n className={clsx(\n 'str-video__embedded-participant-view-ui',\n trackType === 'screenShareTrack' &&\n 'str-video__embedded-participant-view-ui--screen-share',\n )}\n onDoubleClick={handleDoubleClick}\n >\n <DefaultParticipantViewUI />\n </div>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAKO,MAAM,yBAAyB,GAAG,MAAK;IAC5C,MAAM,EAAE,sBAAsB,EAAE,SAAS,EAAE,GAAG,yBAAyB,EAAE;AAEzE,IAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAK;AACzC,QAAA,IAAI,CAAC,sBAAsB;YAAE;AAC7B,QAAA,IAAI,OAAO,sBAAsB,CAAC,iBAAiB,KAAK,WAAW;YAAE;AAErE,QAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;YAC/B,sBAAsB,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACjE;aAAO;YACL,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAChD;AACF,IAAA,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC;IAE5B,QACEA,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,IAAI,CACb,yCAAyC,EACzC,SAAS,KAAK,kBAAkB;YAC9B,uDAAuD,CAC1D,EACD,aAAa,EAAE,iBAAiB,EAAA,QAAA,EAEhCA,GAAA,CAAC,wBAAwB,EAAA,EAAA,CAAG,EAAA,CACxB;AAEV;;;;"}
@@ -0,0 +1,34 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useI18n } from '@stream-io/video-react-bindings';
3
+ import 'react';
4
+ import 'clsx';
5
+ import '../../../components/BackgroundFilters/BackgroundFiltersProvider.js';
6
+ import '../../../components/Button/CompositeButton.js';
7
+ import '../../../components/Button/IconButton.js';
8
+ import '@stream-io/video-client';
9
+ import '@floating-ui/react';
10
+ import '../../../components/CallControls/RecordCallButton.js';
11
+ import '../../../components/CallControls/ReactionsButton.js';
12
+ import { Icon } from '../../../components/Icon/Icon.js';
13
+ import '../../../components/DeviceSettings/DeviceSettings.js';
14
+ import '../../../components/DropdownSelect/DropdownSelect.js';
15
+ import '../../../components/Menu/MenuToggle.js';
16
+ import '../../../components/CallControls/CancelCallButton.js';
17
+ import '../../../components/CallControls/CallStatsButton.js';
18
+ import '../../../components/CallParticipantsList/CallParticipantsList.js';
19
+ import '../../../components/CallParticipantsList/CallParticipantListingItem.js';
20
+ import '../../../components/CallStats/CallStats.js';
21
+ import '../../../components/NoiseCancellation/NoiseCancellationProvider.js';
22
+ import '../../../components/RingingCall/RingingCall.js';
23
+ import '../../../components/Permissions/PermissionRequests.js';
24
+ import '../../../core/components/Video/Video.js';
25
+ import '../../../core/components/Video/BaseVideo.js';
26
+ import '../../../core/components/Video/DefaultVideoPlaceholder.js';
27
+
28
+ const JoinError = ({ onJoin }) => {
29
+ const { t } = useI18n();
30
+ return (jsxs("div", { className: "str-video__embedded-join-error", children: [jsx("h2", { className: "str-video__embedded-join-error__title", children: t('Failed to join the call') }), jsx("p", { className: "str-video__embedded-join-error__message", children: t("We couldn't connect to the server. Please check your connection and try again.") }), jsxs("button", { type: "button", className: "str-video__button", onClick: onJoin, children: [jsx(Icon, { icon: "login" }), t('Try again')] })] }));
31
+ };
32
+
33
+ export { JoinError };
34
+ //# sourceMappingURL=JoinError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JoinError.js","sources":["../../../../../../../../src/embedded/shared/JoinError/JoinError.tsx"],"sourcesContent":["import { useI18n } from '@stream-io/video-react-bindings';\nimport { Icon } from '../../../components';\n\ninterface JoinErrorProps {\n onJoin: () => void;\n}\n\nexport const JoinError = ({ onJoin }: JoinErrorProps) => {\n const { t } = useI18n();\n\n return (\n <div className=\"str-video__embedded-join-error\">\n <h2 className=\"str-video__embedded-join-error__title\">\n {t('Failed to join the call')}\n </h2>\n <p className=\"str-video__embedded-join-error__message\">\n {t(\n \"We couldn't connect to the server. Please check your connection and try again.\",\n )}\n </p>\n <button type=\"button\" className=\"str-video__button\" onClick={onJoin}>\n <Icon icon=\"login\" />\n {t('Try again')}\n </button>\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;MAOa,SAAS,GAAG,CAAC,EAAE,MAAM,EAAkB,KAAI;AACtD,IAAA,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE;IAEvB,QACEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAAA,CAC7CC,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,uCAAuC,EAAA,QAAA,EAClD,CAAC,CAAC,yBAAyB,CAAC,EAAA,CAC1B,EACLA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,yCAAyC,EAAA,QAAA,EACnD,CAAC,CACA,gFAAgF,CACjF,EAAA,CACC,EACJD,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,mBAAmB,EAAC,OAAO,EAAE,MAAM,EAAA,QAAA,EAAA,CACjEC,GAAA,CAAC,IAAI,IAAC,IAAI,EAAC,OAAO,EAAA,CAAG,EACpB,CAAC,CAAC,WAAW,CAAC,CAAA,EAAA,CACR,CAAA,EAAA,CACL;AAEV;;;;"}
@@ -0,0 +1,44 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { useI18n, useCallStateHooks } from '@stream-io/video-react-bindings';
3
+ import 'react';
4
+ import 'clsx';
5
+ import '../../../components/BackgroundFilters/BackgroundFiltersProvider.js';
6
+ import '../../../components/Button/CompositeButton.js';
7
+ import '../../../components/Button/IconButton.js';
8
+ import '@stream-io/video-client';
9
+ import '@floating-ui/react';
10
+ import '../../../components/CallControls/RecordCallButton.js';
11
+ import '../../../components/CallControls/ReactionsButton.js';
12
+ import { ToggleAudioPreviewButton } from '../../../components/CallControls/ToggleAudioButton.js';
13
+ import { ToggleVideoPreviewButton } from '../../../components/CallControls/ToggleVideoButton.js';
14
+ import '../../../components/CallControls/CancelCallButton.js';
15
+ import '../../../components/CallControls/CallStatsButton.js';
16
+ import '../../../components/DeviceSettings/DeviceSettings.js';
17
+ import '../../../components/DropdownSelect/DropdownSelect.js';
18
+ import '../../../components/Menu/MenuToggle.js';
19
+ import '../../../components/CallParticipantsList/CallParticipantsList.js';
20
+ import '../../../components/CallParticipantsList/CallParticipantListingItem.js';
21
+ import '../../../components/CallStats/CallStats.js';
22
+ import '../../../components/NoiseCancellation/NoiseCancellationProvider.js';
23
+ import '../../../components/RingingCall/RingingCall.js';
24
+ import '../../../components/Permissions/PermissionRequests.js';
25
+ import '../../../core/components/Video/Video.js';
26
+ import '../../../core/components/Video/BaseVideo.js';
27
+ import '../../../core/components/Video/DefaultVideoPlaceholder.js';
28
+ import { VideoPreview } from '../../../components/VideoPreview/VideoPreview.js';
29
+ import { ToggleMicButton } from './ToggleMicButton.js';
30
+ import { ToggleCameraButton } from './ToggleCameraButton.js';
31
+ import { DisabledDeviceButton } from './DisabledDeviceButton.js';
32
+ import { NoCameraPreview, DisabledVideoPreview } from './VideoPreviewFallbacks.js';
33
+
34
+ const DeviceControls = ({ isVideoEnabled }) => {
35
+ const { t } = useI18n();
36
+ const { useCameraState, useMicrophoneState } = useCallStateHooks();
37
+ const { hasBrowserPermission: hasCameraPermission } = useCameraState();
38
+ const { hasBrowserPermission: hasMicPermission } = useMicrophoneState();
39
+ return (jsxs(Fragment, { children: [jsxs("div", { className: "str-video__embedded-lobby__video-preview", children: [jsx(VideoPreview, { DisabledVideoPreview: DisabledVideoPreview, NoCameraPreview: NoCameraPreview }), jsxs("div", { className: "str-video__embedded-lobby__media-toggle", children: [jsx(ToggleAudioPreviewButton, { Menu: null }), isVideoEnabled && jsx(ToggleVideoPreviewButton, { Menu: null })] })] }), jsxs("div", { className: "str-video__embedded-lobby__media", children: [hasMicPermission ? (jsx(ToggleMicButton, {})) : (jsx(DisabledDeviceButton, { icon: "mic", label: t('Permission needed') })), isVideoEnabled &&
40
+ (hasCameraPermission ? (jsx(ToggleCameraButton, {})) : (jsx(DisabledDeviceButton, { icon: "camera", label: t('Permission needed') })))] })] }));
41
+ };
42
+
43
+ export { DeviceControls };
44
+ //# sourceMappingURL=DeviceControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeviceControls.js","sources":["../../../../../../../../src/embedded/shared/Lobby/DeviceControls.tsx"],"sourcesContent":["import { useCallStateHooks, useI18n } from '@stream-io/video-react-bindings';\nimport {\n ToggleAudioPreviewButton,\n ToggleVideoPreviewButton,\n VideoPreview,\n} from '../../../components';\nimport { ToggleMicButton } from './ToggleMicButton';\nimport { ToggleCameraButton } from './ToggleCameraButton';\nimport { DisabledDeviceButton } from './DisabledDeviceButton';\nimport { DisabledVideoPreview, NoCameraPreview } from './VideoPreviewFallbacks';\n\ninterface DeviceControlsProps {\n isVideoEnabled: boolean;\n}\n\nexport const DeviceControls = ({ isVideoEnabled }: DeviceControlsProps) => {\n const { t } = useI18n();\n const { useCameraState, useMicrophoneState } = useCallStateHooks();\n\n const { hasBrowserPermission: hasCameraPermission } = useCameraState();\n const { hasBrowserPermission: hasMicPermission } = useMicrophoneState();\n\n return (\n <>\n <div className=\"str-video__embedded-lobby__video-preview\">\n <VideoPreview\n DisabledVideoPreview={DisabledVideoPreview}\n NoCameraPreview={NoCameraPreview}\n />\n <div className=\"str-video__embedded-lobby__media-toggle\">\n <ToggleAudioPreviewButton Menu={null} />\n {isVideoEnabled && <ToggleVideoPreviewButton Menu={null} />}\n </div>\n </div>\n\n <div className=\"str-video__embedded-lobby__media\">\n {hasMicPermission ? (\n <ToggleMicButton />\n ) : (\n <DisabledDeviceButton icon=\"mic\" label={t('Permission needed')} />\n )}\n {isVideoEnabled &&\n (hasCameraPermission ? (\n <ToggleCameraButton />\n ) : (\n <DisabledDeviceButton\n icon=\"camera\"\n label={t('Permission needed')}\n />\n ))}\n </div>\n </>\n );\n};\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAea,cAAc,GAAG,CAAC,EAAE,cAAc,EAAuB,KAAI;AACxE,IAAA,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE;IACvB,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,iBAAiB,EAAE;IAElE,MAAM,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,GAAG,cAAc,EAAE;IACtE,MAAM,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,EAAE;AAEvE,IAAA,QACEA,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACED,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,0CAA0C,EAAA,QAAA,EAAA,CACvDE,GAAA,CAAC,YAAY,EAAA,EACX,oBAAoB,EAAE,oBAAoB,EAC1C,eAAe,EAAE,eAAe,EAAA,CAChC,EACFF,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yCAAyC,EAAA,QAAA,EAAA,CACtDE,GAAA,CAAC,wBAAwB,EAAA,EAAC,IAAI,EAAE,IAAI,GAAI,EACvC,cAAc,IAAIA,GAAA,CAAC,wBAAwB,IAAC,IAAI,EAAE,IAAI,EAAA,CAAI,IACvD,CAAA,EAAA,CACF,EAENF,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kCAAkC,EAAA,QAAA,EAAA,CAC9C,gBAAgB,IACfE,GAAA,CAAC,eAAe,KAAG,KAEnBA,GAAA,CAAC,oBAAoB,EAAA,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAA,CAAI,CACnE,EACA,cAAc;AACb,yBAAC,mBAAmB,IAClBA,GAAA,CAAC,kBAAkB,EAAA,EAAA,CAAG,KAEtBA,IAAC,oBAAoB,EAAA,EACnB,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAA,CAC7B,CACH,CAAC,CAAA,EAAA,CACA,CAAA,EAAA,CACL;AAEP;;;;"}
@@ -0,0 +1,31 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import 'react';
3
+ import 'clsx';
4
+ import '../../../components/BackgroundFilters/BackgroundFiltersProvider.js';
5
+ import '../../../components/Button/CompositeButton.js';
6
+ import '../../../components/Button/IconButton.js';
7
+ import '@stream-io/video-react-bindings';
8
+ import '@stream-io/video-client';
9
+ import '@floating-ui/react';
10
+ import '../../../components/CallControls/RecordCallButton.js';
11
+ import '../../../components/CallControls/ReactionsButton.js';
12
+ import { Icon } from '../../../components/Icon/Icon.js';
13
+ import '../../../components/DeviceSettings/DeviceSettings.js';
14
+ import '../../../components/DropdownSelect/DropdownSelect.js';
15
+ import '../../../components/Menu/MenuToggle.js';
16
+ import '../../../components/CallControls/CancelCallButton.js';
17
+ import '../../../components/CallControls/CallStatsButton.js';
18
+ import '../../../components/CallParticipantsList/CallParticipantsList.js';
19
+ import '../../../components/CallParticipantsList/CallParticipantListingItem.js';
20
+ import '../../../components/CallStats/CallStats.js';
21
+ import '../../../components/NoiseCancellation/NoiseCancellationProvider.js';
22
+ import '../../../components/RingingCall/RingingCall.js';
23
+ import '../../../components/Permissions/PermissionRequests.js';
24
+ import '../../../core/components/Video/Video.js';
25
+ import '../../../core/components/Video/BaseVideo.js';
26
+ import '../../../core/components/Video/DefaultVideoPlaceholder.js';
27
+
28
+ const DisabledDeviceButton = ({ icon, label, }) => (jsxs("div", { className: "str-video__embedded-lobby__device-button str-video__embedded-lobby__device-button--disabled", children: [jsx(Icon, { className: "str-video__embedded-lobby__device-button-icon", icon: icon }), jsx("span", { className: "str-video__embedded-lobby__device-button-label", children: label })] }));
29
+
30
+ export { DisabledDeviceButton };
31
+ //# sourceMappingURL=DisabledDeviceButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DisabledDeviceButton.js","sources":["../../../../../../../../src/embedded/shared/Lobby/DisabledDeviceButton.tsx"],"sourcesContent":["import { Icon } from '../../../components';\n\ninterface DisabledDeviceButtonProps {\n icon: string;\n label: string;\n}\n\nexport const DisabledDeviceButton = ({\n icon,\n label,\n}: DisabledDeviceButtonProps) => (\n <div className=\"str-video__embedded-lobby__device-button str-video__embedded-lobby__device-button--disabled\">\n <Icon\n className=\"str-video__embedded-lobby__device-button-icon\"\n icon={icon}\n />\n <span className=\"str-video__embedded-lobby__device-button-label\">\n {label}\n </span>\n </div>\n);\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,MAAM,oBAAoB,GAAG,CAAC,EACnC,IAAI,EACJ,KAAK,GACqB,MAC1BA,cAAK,SAAS,EAAC,6FAA6F,EAAA,QAAA,EAAA,CAC1GC,GAAA,CAAC,IAAI,EAAA,EACH,SAAS,EAAC,+CAA+C,EACzD,IAAI,EAAE,IAAI,EAAA,CACV,EACFA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,gDAAgD,EAAA,QAAA,EAC7D,KAAK,EAAA,CACD,CAAA,EAAA,CACH;;;;"}
@@ -0,0 +1,45 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import clsx from 'clsx';
3
+ import { useI18n, useConnectedUser, useCallStateHooks } from '@stream-io/video-react-bindings';
4
+ import 'react';
5
+ import '../../../components/BackgroundFilters/BackgroundFiltersProvider.js';
6
+ import '../../../components/Button/CompositeButton.js';
7
+ import '../../../components/Button/IconButton.js';
8
+ import '@stream-io/video-client';
9
+ import '@floating-ui/react';
10
+ import '../../../components/CallControls/RecordCallButton.js';
11
+ import '../../../components/CallControls/ReactionsButton.js';
12
+ import { Icon } from '../../../components/Icon/Icon.js';
13
+ import '../../../components/DeviceSettings/DeviceSettings.js';
14
+ import '../../../components/DropdownSelect/DropdownSelect.js';
15
+ import '../../../components/Menu/MenuToggle.js';
16
+ import '../../../components/CallControls/CancelCallButton.js';
17
+ import '../../../components/CallControls/CallStatsButton.js';
18
+ import '../../../components/CallParticipantsList/CallParticipantsList.js';
19
+ import '../../../components/CallParticipantsList/CallParticipantListingItem.js';
20
+ import '../../../components/CallStats/CallStats.js';
21
+ import '../../../components/NoiseCancellation/NoiseCancellationProvider.js';
22
+ import '../../../components/RingingCall/RingingCall.js';
23
+ import '../../../components/Permissions/PermissionRequests.js';
24
+ import '../../../core/components/Video/Video.js';
25
+ import '../../../core/components/Video/BaseVideo.js';
26
+ import '../../../core/components/Video/DefaultVideoPlaceholder.js';
27
+ import { DeviceControls } from './DeviceControls.js';
28
+
29
+ /**
30
+ * Lobby component - Device setup screen before joining a call.
31
+ */
32
+ const Lobby = ({ onJoin, title, joinLabel }) => {
33
+ const { t } = useI18n();
34
+ const user = useConnectedUser();
35
+ const { useCameraState, useCallSettings } = useCallStateHooks();
36
+ const { isMute } = useCameraState();
37
+ const settings = useCallSettings();
38
+ const isVideoEnabled = settings?.video.enabled ?? true;
39
+ const resolvedJoinLabel = joinLabel ?? t('Join');
40
+ const resolvedTitle = title ?? t('Set up your call before joining');
41
+ return (jsx("div", { className: "str-video__embedded-lobby", children: jsxs("div", { className: "str-video__embedded-lobby__content", children: [jsx("h1", { className: "str-video__embedded-lobby__heading", children: resolvedTitle }), jsx("div", { className: clsx('str-video__embedded-lobby__camera', isMute && 'str-video__embedded-lobby__camera--off'), children: jsx(DeviceControls, { isVideoEnabled: isVideoEnabled }) }), jsxs("div", { className: "str-video__embedded-lobby__display-name", children: [jsx("div", { className: "str-video__embedded-lobby__display-name-label", children: t('Display name') }), jsx("span", { className: "str-video__embedded-lobby__display-name-value", children: user?.name }), jsxs("button", { className: "str-video__button", onClick: onJoin, children: [jsx(Icon, { className: "str-video__button__icon", icon: "login" }), resolvedJoinLabel] })] })] }) }));
42
+ };
43
+
44
+ export { Lobby };
45
+ //# sourceMappingURL=Lobby.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Lobby.js","sources":["../../../../../../../../src/embedded/shared/Lobby/Lobby.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport {\n useCallStateHooks,\n useConnectedUser,\n useI18n,\n} from '@stream-io/video-react-bindings';\nimport { Icon } from '../../../components';\nimport { DeviceControls } from './DeviceControls';\n\ninterface LobbyProps {\n onJoin: () => void;\n title?: string;\n joinLabel?: string;\n}\n\n/**\n * Lobby component - Device setup screen before joining a call.\n */\nexport const Lobby = ({ onJoin, title, joinLabel }: LobbyProps) => {\n const { t } = useI18n();\n const user = useConnectedUser();\n const { useCameraState, useCallSettings } = useCallStateHooks();\n\n const { isMute } = useCameraState();\n const settings = useCallSettings();\n\n const isVideoEnabled = settings?.video.enabled ?? true;\n const resolvedJoinLabel = joinLabel ?? t('Join');\n const resolvedTitle = title ?? t('Set up your call before joining');\n\n return (\n <div className=\"str-video__embedded-lobby\">\n <div className=\"str-video__embedded-lobby__content\">\n <h1 className=\"str-video__embedded-lobby__heading\">{resolvedTitle}</h1>\n <div\n className={clsx(\n 'str-video__embedded-lobby__camera',\n isMute && 'str-video__embedded-lobby__camera--off',\n )}\n >\n <DeviceControls isVideoEnabled={isVideoEnabled} />\n </div>\n\n <div className=\"str-video__embedded-lobby__display-name\">\n <div className=\"str-video__embedded-lobby__display-name-label\">\n {t('Display name')}\n </div>\n <span className=\"str-video__embedded-lobby__display-name-value\">\n {user?.name}\n </span>\n <button className=\"str-video__button\" onClick={onJoin}>\n <Icon className=\"str-video__button__icon\" icon=\"login\" />\n {resolvedJoinLabel}\n </button>\n </div>\n </div>\n </div>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA;;AAEG;AACI,MAAM,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAc,KAAI;AAChE,IAAA,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE;AACvB,IAAA,MAAM,IAAI,GAAG,gBAAgB,EAAE;IAC/B,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,iBAAiB,EAAE;AAE/D,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE;AACnC,IAAA,MAAM,QAAQ,GAAG,eAAe,EAAE;IAElC,MAAM,cAAc,GAAG,QAAQ,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;IACtD,MAAM,iBAAiB,GAAG,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC;IAChD,MAAM,aAAa,GAAG,KAAK,IAAI,CAAC,CAAC,iCAAiC,CAAC;IAEnE,QACEA,aAAK,SAAS,EAAC,2BAA2B,EAAA,QAAA,EACxCC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oCAAoC,aACjDD,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,oCAAoC,EAAA,QAAA,EAAE,aAAa,EAAA,CAAM,EACvEA,aACE,SAAS,EAAE,IAAI,CACb,mCAAmC,EACnC,MAAM,IAAI,wCAAwC,CACnD,EAAA,QAAA,EAEDA,IAAC,cAAc,EAAA,EAAC,cAAc,EAAE,cAAc,GAAI,EAAA,CAC9C,EAENC,cAAK,SAAS,EAAC,yCAAyC,EAAA,QAAA,EAAA,CACtDD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+CAA+C,YAC3D,CAAC,CAAC,cAAc,CAAC,EAAA,CACd,EACNA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,+CAA+C,EAAA,QAAA,EAC5D,IAAI,EAAE,IAAI,GACN,EACPC,IAAA,CAAA,QAAA,EAAA,EAAQ,SAAS,EAAC,mBAAmB,EAAC,OAAO,EAAE,MAAM,EAAA,QAAA,EAAA,CACnDD,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,yBAAyB,EAAC,IAAI,EAAC,OAAO,GAAG,EACxD,iBAAiB,IACX,CAAA,EAAA,CACL,CAAA,EAAA,CACF,EAAA,CACF;AAEV;;;;"}
@@ -0,0 +1,40 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
3
+ import { useCallStateHooks } from '@stream-io/video-react-bindings';
4
+ import 'clsx';
5
+ import '../../../components/BackgroundFilters/BackgroundFiltersProvider.js';
6
+ import '../../../components/Button/CompositeButton.js';
7
+ import '../../../components/Button/IconButton.js';
8
+ import '@stream-io/video-client';
9
+ import '@floating-ui/react';
10
+ import '../../../components/CallControls/RecordCallButton.js';
11
+ import '../../../components/CallControls/ReactionsButton.js';
12
+ import { Icon } from '../../../components/Icon/Icon.js';
13
+ import '../../../components/DeviceSettings/DeviceSettings.js';
14
+ import '../../../components/DropdownSelect/DropdownSelect.js';
15
+ import { MenuToggle, MenuVisualType } from '../../../components/Menu/MenuToggle.js';
16
+ import '../../../components/CallControls/CancelCallButton.js';
17
+ import '../../../components/CallControls/CallStatsButton.js';
18
+ import '../../../components/CallParticipantsList/CallParticipantsList.js';
19
+ import '../../../components/CallParticipantsList/CallParticipantListingItem.js';
20
+ import '../../../components/CallStats/CallStats.js';
21
+ import '../../../components/NoiseCancellation/NoiseCancellationProvider.js';
22
+ import '../../../components/RingingCall/RingingCall.js';
23
+ import '../../../components/Permissions/PermissionRequests.js';
24
+ import '../../../core/components/Video/Video.js';
25
+ import '../../../core/components/Video/BaseVideo.js';
26
+ import '../../../core/components/Video/DefaultVideoPlaceholder.js';
27
+ import { CameraMenuWithBlur } from '../BlurToggleButton/BlurToggleButton.js';
28
+
29
+ const ToggleMenuButton = forwardRef(function ToggleMenuButtonRender(props, ref) {
30
+ const { useCameraState } = useCallStateHooks();
31
+ const { selectedDevice: selectedCamera, devices: cameras } = useCameraState();
32
+ return (jsxs("button", { ref: ref, className: "str-video__embedded-lobby__device-button", children: [jsx(Icon, { className: "str-video__embedded-lobby__device-button-icon", icon: "camera" }), jsx("span", { className: "str-video__embedded-lobby__device-button-label", children: cameras?.find((c) => c.deviceId === selectedCamera)
33
+ ?.label || 'Default' }), jsx(Icon, { icon: props.menuShown ? 'chevron-down' : 'chevron-up' })] }));
34
+ });
35
+ const ToggleCameraButton = () => {
36
+ return (jsx(MenuToggle, { placement: "top-start", ToggleButton: ToggleMenuButton, visualType: MenuVisualType.MENU, children: jsx(CameraMenuWithBlur, {}) }));
37
+ };
38
+
39
+ export { ToggleCameraButton };
40
+ //# sourceMappingURL=ToggleCameraButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleCameraButton.js","sources":["../../../../../../../../src/embedded/shared/Lobby/ToggleCameraButton.tsx"],"sourcesContent":["import { forwardRef } from 'react';\n\nimport { useCallStateHooks } from '@stream-io/video-react-bindings';\nimport {\n Icon,\n MenuToggle,\n MenuVisualType,\n ToggleMenuButtonProps,\n} from '../../../components';\nimport { CameraMenuWithBlur } from '../BlurToggleButton/BlurToggleButton';\n\nconst ToggleMenuButton = forwardRef<HTMLButtonElement, ToggleMenuButtonProps>(\n function ToggleMenuButtonRender(props, ref) {\n const { useCameraState } = useCallStateHooks();\n const { selectedDevice: selectedCamera, devices: cameras } =\n useCameraState();\n\n return (\n <button ref={ref} className=\"str-video__embedded-lobby__device-button\">\n <Icon\n className=\"str-video__embedded-lobby__device-button-icon\"\n icon=\"camera\"\n />\n <span className=\"str-video__embedded-lobby__device-button-label\">\n {cameras?.find((c: MediaDeviceInfo) => c.deviceId === selectedCamera)\n ?.label || 'Default'}\n </span>\n <Icon icon={props.menuShown ? 'chevron-down' : 'chevron-up'} />\n </button>\n );\n },\n);\n\nexport const ToggleCameraButton = () => {\n return (\n <MenuToggle\n placement=\"top-start\"\n ToggleButton={ToggleMenuButton}\n visualType={MenuVisualType.MENU}\n >\n <CameraMenuWithBlur />\n </MenuToggle>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,MAAM,gBAAgB,GAAG,UAAU,CACjC,SAAS,sBAAsB,CAAC,KAAK,EAAE,GAAG,EAAA;AACxC,IAAA,MAAM,EAAE,cAAc,EAAE,GAAG,iBAAiB,EAAE;AAC9C,IAAA,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,GACxD,cAAc,EAAE;AAElB,IAAA,QACEA,IAAA,CAAA,QAAA,EAAA,EAAQ,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,0CAA0C,EAAA,QAAA,EAAA,CACpEC,GAAA,CAAC,IAAI,EAAA,EACH,SAAS,EAAC,+CAA+C,EACzD,IAAI,EAAC,QAAQ,EAAA,CACb,EACFA,cAAM,SAAS,EAAC,gDAAgD,EAAA,QAAA,EAC7D,OAAO,EAAE,IAAI,CAAC,CAAC,CAAkB,KAAK,CAAC,CAAC,QAAQ,KAAK,cAAc;sBAChE,KAAK,IAAI,SAAS,EAAA,CACjB,EACPA,IAAC,IAAI,EAAA,EAAC,IAAI,EAAE,KAAK,CAAC,SAAS,GAAG,cAAc,GAAG,YAAY,EAAA,CAAI,CAAA,EAAA,CACxD;AAEb,CAAC,CACF;AAEM,MAAM,kBAAkB,GAAG,MAAK;IACrC,QACEA,IAAC,UAAU,EAAA,EACT,SAAS,EAAC,WAAW,EACrB,YAAY,EAAE,gBAAgB,EAC9B,UAAU,EAAE,cAAc,CAAC,IAAI,EAAA,QAAA,EAE/BA,IAAC,kBAAkB,EAAA,EAAA,CAAG,EAAA,CACX;AAEjB;;;;"}
@@ -0,0 +1,41 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
3
+ import { useCallStateHooks, useI18n } from '@stream-io/video-react-bindings';
4
+ import 'clsx';
5
+ import '../../../components/BackgroundFilters/BackgroundFiltersProvider.js';
6
+ import '../../../components/Button/CompositeButton.js';
7
+ import '../../../components/Button/IconButton.js';
8
+ import '@stream-io/video-client';
9
+ import '@floating-ui/react';
10
+ import '../../../components/CallControls/RecordCallButton.js';
11
+ import '../../../components/CallControls/ReactionsButton.js';
12
+ import { Icon } from '../../../components/Icon/Icon.js';
13
+ import '../../../components/DeviceSettings/DeviceSettings.js';
14
+ import '../../../components/DropdownSelect/DropdownSelect.js';
15
+ import { MenuToggle, MenuVisualType } from '../../../components/Menu/MenuToggle.js';
16
+ import { DeviceSelectorAudioInput, DeviceSelectorAudioOutput } from '../../../components/DeviceSettings/DeviceSelectorAudio.js';
17
+ import '../../../components/CallControls/CancelCallButton.js';
18
+ import '../../../components/CallControls/CallStatsButton.js';
19
+ import '../../../components/CallParticipantsList/CallParticipantsList.js';
20
+ import '../../../components/CallParticipantsList/CallParticipantListingItem.js';
21
+ import '../../../components/CallStats/CallStats.js';
22
+ import '../../../components/NoiseCancellation/NoiseCancellationProvider.js';
23
+ import '../../../components/RingingCall/RingingCall.js';
24
+ import '../../../components/Permissions/PermissionRequests.js';
25
+ import '../../../core/components/Video/Video.js';
26
+ import '../../../core/components/Video/BaseVideo.js';
27
+ import '../../../core/components/Video/DefaultVideoPlaceholder.js';
28
+
29
+ const ToggleMenuButton = forwardRef(function ToggleMenuButtonRender(props, ref) {
30
+ const { useMicrophoneState } = useCallStateHooks();
31
+ const { selectedDevice: selectedMic, devices: microphones } = useMicrophoneState();
32
+ return (jsxs("button", { ref: ref, className: "str-video__embedded-lobby__device-button", children: [jsx(Icon, { className: "str-video__embedded-lobby__device-button-icon", icon: "mic" }), jsx("span", { className: "str-video__embedded-lobby__device-button-label", children: microphones?.find((m) => m.deviceId === selectedMic)
33
+ ?.label || 'Default' }), jsx(Icon, { icon: props.menuShown ? 'chevron-down' : 'chevron-up' })] }));
34
+ });
35
+ const ToggleMicButton = () => {
36
+ const { t } = useI18n();
37
+ return (jsxs(MenuToggle, { placement: "top-start", ToggleButton: ToggleMenuButton, visualType: MenuVisualType.MENU, children: [jsx(DeviceSelectorAudioInput, { visualType: "list", title: t('Microphone') }), jsx(DeviceSelectorAudioOutput, { visualType: "list", title: t('Speaker') })] }));
38
+ };
39
+
40
+ export { ToggleMicButton };
41
+ //# sourceMappingURL=ToggleMicButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleMicButton.js","sources":["../../../../../../../../src/embedded/shared/Lobby/ToggleMicButton.tsx"],"sourcesContent":["import { forwardRef } from 'react';\n\nimport { useCallStateHooks, useI18n } from '@stream-io/video-react-bindings';\nimport {\n DeviceSelectorAudioInput,\n DeviceSelectorAudioOutput,\n Icon,\n MenuToggle,\n MenuVisualType,\n ToggleMenuButtonProps,\n} from '../../../components';\n\nconst ToggleMenuButton = forwardRef<HTMLButtonElement, ToggleMenuButtonProps>(\n function ToggleMenuButtonRender(props, ref) {\n const { useMicrophoneState } = useCallStateHooks();\n const { selectedDevice: selectedMic, devices: microphones } =\n useMicrophoneState();\n\n return (\n <button ref={ref} className=\"str-video__embedded-lobby__device-button\">\n <Icon\n className=\"str-video__embedded-lobby__device-button-icon\"\n icon=\"mic\"\n />\n <span className=\"str-video__embedded-lobby__device-button-label\">\n {microphones?.find((m: MediaDeviceInfo) => m.deviceId === selectedMic)\n ?.label || 'Default'}\n </span>\n <Icon icon={props.menuShown ? 'chevron-down' : 'chevron-up'} />\n </button>\n );\n },\n);\n\nexport const ToggleMicButton = () => {\n const { t } = useI18n();\n\n return (\n <MenuToggle\n placement=\"top-start\"\n ToggleButton={ToggleMenuButton}\n visualType={MenuVisualType.MENU}\n >\n <DeviceSelectorAudioInput visualType=\"list\" title={t('Microphone')} />\n <DeviceSelectorAudioOutput visualType=\"list\" title={t('Speaker')} />\n </MenuToggle>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,MAAM,gBAAgB,GAAG,UAAU,CACjC,SAAS,sBAAsB,CAAC,KAAK,EAAE,GAAG,EAAA;AACxC,IAAA,MAAM,EAAE,kBAAkB,EAAE,GAAG,iBAAiB,EAAE;AAClD,IAAA,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,GACzD,kBAAkB,EAAE;AAEtB,IAAA,QACEA,IAAA,CAAA,QAAA,EAAA,EAAQ,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,0CAA0C,EAAA,QAAA,EAAA,CACpEC,GAAA,CAAC,IAAI,EAAA,EACH,SAAS,EAAC,+CAA+C,EACzD,IAAI,EAAC,KAAK,EAAA,CACV,EACFA,cAAM,SAAS,EAAC,gDAAgD,EAAA,QAAA,EAC7D,WAAW,EAAE,IAAI,CAAC,CAAC,CAAkB,KAAK,CAAC,CAAC,QAAQ,KAAK,WAAW;sBACjE,KAAK,IAAI,SAAS,EAAA,CACjB,EACPA,IAAC,IAAI,EAAA,EAAC,IAAI,EAAE,KAAK,CAAC,SAAS,GAAG,cAAc,GAAG,YAAY,EAAA,CAAI,CAAA,EAAA,CACxD;AAEb,CAAC,CACF;AAEM,MAAM,eAAe,GAAG,MAAK;AAClC,IAAA,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE;IAEvB,QACED,KAAC,UAAU,EAAA,EACT,SAAS,EAAC,WAAW,EACrB,YAAY,EAAE,gBAAgB,EAC9B,UAAU,EAAE,cAAc,CAAC,IAAI,aAE/BC,GAAA,CAAC,wBAAwB,EAAA,EAAC,UAAU,EAAC,MAAM,EAAC,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,EAAA,CAAI,EACtEA,GAAA,CAAC,yBAAyB,EAAA,EAAC,UAAU,EAAC,MAAM,EAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EAAA,CAAI,CAAA,EAAA,CACzD;AAEjB;;;;"}