@stream-io/video-react-native-sdk 0.6.2 → 0.6.3

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 (196) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/commonjs/components/Call/CallContent/CallContent.js +3 -0
  3. package/dist/commonjs/components/Call/CallContent/CallContent.js.map +1 -1
  4. package/dist/commonjs/components/Call/CallControls/{ScreenShareButton.js → ScreenShareToggleButton.js} +44 -43
  5. package/dist/commonjs/components/Call/CallControls/ScreenShareToggleButton.js.map +1 -0
  6. package/dist/commonjs/components/Call/CallControls/index.js +4 -4
  7. package/dist/commonjs/components/Call/CallControls/index.js.map +1 -1
  8. package/dist/commonjs/components/Call/CallLayout/CallParticipantsSpotlight.js +3 -2
  9. package/dist/commonjs/components/Call/CallLayout/CallParticipantsSpotlight.js.map +1 -1
  10. package/dist/commonjs/components/Livestream/HostLivestream/HostLivestream.js +59 -6
  11. package/dist/commonjs/components/Livestream/HostLivestream/HostLivestream.js.map +1 -1
  12. package/dist/commonjs/components/Livestream/LivestreamControls/HostLivestreamControls.js +7 -3
  13. package/dist/commonjs/components/Livestream/LivestreamControls/HostLivestreamControls.js.map +1 -1
  14. package/dist/commonjs/components/Livestream/LivestreamControls/HostStartStreamButton.js +13 -9
  15. package/dist/commonjs/components/Livestream/LivestreamControls/HostStartStreamButton.js.map +1 -1
  16. package/dist/commonjs/components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.js +126 -0
  17. package/dist/commonjs/components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.js.map +1 -0
  18. package/dist/commonjs/components/Livestream/LivestreamControls/ViewerLivestreamControls.js +4 -2
  19. package/dist/commonjs/components/Livestream/LivestreamControls/ViewerLivestreamControls.js.map +1 -1
  20. package/dist/commonjs/components/Livestream/LivestreamControls/index.js +44 -11
  21. package/dist/commonjs/components/Livestream/LivestreamControls/index.js.map +1 -1
  22. package/dist/commonjs/components/Livestream/LivestreamLayout/LivestreamLayout.js +45 -6
  23. package/dist/commonjs/components/Livestream/LivestreamLayout/LivestreamLayout.js.map +1 -1
  24. package/dist/commonjs/components/Livestream/LivestreamTopView/HostLivestreamTopView.js +4 -2
  25. package/dist/commonjs/components/Livestream/LivestreamTopView/HostLivestreamTopView.js.map +1 -1
  26. package/dist/commonjs/components/Livestream/LivestreamTopView/ViewerLivestreamTopView.js +4 -2
  27. package/dist/commonjs/components/Livestream/LivestreamTopView/ViewerLivestreamTopView.js.map +1 -1
  28. package/dist/commonjs/components/Livestream/LivestreamTopView/index.js +11 -0
  29. package/dist/commonjs/components/Livestream/LivestreamTopView/index.js.map +1 -1
  30. package/dist/commonjs/components/Livestream/ViewerLivestream/ViewerLivestream.js +24 -23
  31. package/dist/commonjs/components/Livestream/ViewerLivestream/ViewerLivestream.js.map +1 -1
  32. package/dist/commonjs/components/Participant/FloatingParticipantView/index.js +4 -3
  33. package/dist/commonjs/components/Participant/FloatingParticipantView/index.js.map +1 -1
  34. package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer.js +33 -9
  35. package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer.js.map +1 -1
  36. package/dist/commonjs/components/utility/ScreenShareOverlay.js +92 -0
  37. package/dist/commonjs/components/utility/ScreenShareOverlay.js.map +1 -0
  38. package/dist/commonjs/components/utility/index.js +11 -0
  39. package/dist/commonjs/components/utility/index.js.map +1 -1
  40. package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js +5 -3
  41. package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
  42. package/dist/commonjs/icons/StopScreenShare.js +26 -0
  43. package/dist/commonjs/icons/StopScreenShare.js.map +1 -0
  44. package/dist/commonjs/icons/index.js +11 -0
  45. package/dist/commonjs/icons/index.js.map +1 -1
  46. package/dist/commonjs/theme/theme.js +13 -4
  47. package/dist/commonjs/theme/theme.js.map +1 -1
  48. package/dist/commonjs/translations/en.json +2 -0
  49. package/dist/commonjs/utils/StreamVideoRN/index.js +2 -1
  50. package/dist/commonjs/utils/StreamVideoRN/index.js.map +1 -1
  51. package/dist/commonjs/utils/internal/pushLogoutCallback.js.map +1 -1
  52. package/dist/commonjs/utils/push/android.js +6 -4
  53. package/dist/commonjs/utils/push/android.js.map +1 -1
  54. package/dist/commonjs/utils/push/ios.js +6 -4
  55. package/dist/commonjs/utils/push/ios.js.map +1 -1
  56. package/dist/commonjs/version.js +1 -1
  57. package/dist/module/components/Call/CallContent/CallContent.js +3 -0
  58. package/dist/module/components/Call/CallContent/CallContent.js.map +1 -1
  59. package/dist/module/components/Call/CallControls/{ScreenShareButton.js → ScreenShareToggleButton.js} +41 -40
  60. package/dist/module/components/Call/CallControls/ScreenShareToggleButton.js.map +1 -0
  61. package/dist/module/components/Call/CallControls/index.js +1 -1
  62. package/dist/module/components/Call/CallControls/index.js.map +1 -1
  63. package/dist/module/components/Call/CallLayout/CallParticipantsSpotlight.js +3 -2
  64. package/dist/module/components/Call/CallLayout/CallParticipantsSpotlight.js.map +1 -1
  65. package/dist/module/components/Livestream/HostLivestream/HostLivestream.js +60 -7
  66. package/dist/module/components/Livestream/HostLivestream/HostLivestream.js.map +1 -1
  67. package/dist/module/components/Livestream/LivestreamControls/HostLivestreamControls.js +7 -3
  68. package/dist/module/components/Livestream/LivestreamControls/HostLivestreamControls.js.map +1 -1
  69. package/dist/module/components/Livestream/LivestreamControls/HostStartStreamButton.js +13 -9
  70. package/dist/module/components/Livestream/LivestreamControls/HostStartStreamButton.js.map +1 -1
  71. package/dist/module/components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.js +117 -0
  72. package/dist/module/components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.js.map +1 -0
  73. package/dist/module/components/Livestream/LivestreamControls/ViewerLivestreamControls.js +4 -2
  74. package/dist/module/components/Livestream/LivestreamControls/ViewerLivestreamControls.js.map +1 -1
  75. package/dist/module/components/Livestream/LivestreamControls/index.js +4 -1
  76. package/dist/module/components/Livestream/LivestreamControls/index.js.map +1 -1
  77. package/dist/module/components/Livestream/LivestreamLayout/LivestreamLayout.js +43 -5
  78. package/dist/module/components/Livestream/LivestreamLayout/LivestreamLayout.js.map +1 -1
  79. package/dist/module/components/Livestream/LivestreamTopView/HostLivestreamTopView.js +4 -2
  80. package/dist/module/components/Livestream/LivestreamTopView/HostLivestreamTopView.js.map +1 -1
  81. package/dist/module/components/Livestream/LivestreamTopView/ViewerLivestreamTopView.js +4 -2
  82. package/dist/module/components/Livestream/LivestreamTopView/ViewerLivestreamTopView.js.map +1 -1
  83. package/dist/module/components/Livestream/LivestreamTopView/index.js +1 -0
  84. package/dist/module/components/Livestream/LivestreamTopView/index.js.map +1 -1
  85. package/dist/module/components/Livestream/ViewerLivestream/ViewerLivestream.js +24 -24
  86. package/dist/module/components/Livestream/ViewerLivestream/ViewerLivestream.js.map +1 -1
  87. package/dist/module/components/Participant/FloatingParticipantView/index.js +4 -3
  88. package/dist/module/components/Participant/FloatingParticipantView/index.js.map +1 -1
  89. package/dist/module/components/Participant/ParticipantView/VideoRenderer.js +33 -9
  90. package/dist/module/components/Participant/ParticipantView/VideoRenderer.js.map +1 -1
  91. package/dist/module/components/utility/ScreenShareOverlay.js +85 -0
  92. package/dist/module/components/utility/ScreenShareOverlay.js.map +1 -0
  93. package/dist/module/components/utility/index.js +1 -0
  94. package/dist/module/components/utility/index.js.map +1 -1
  95. package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js +5 -3
  96. package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
  97. package/dist/module/icons/StopScreenShare.js +16 -0
  98. package/dist/module/icons/StopScreenShare.js.map +1 -0
  99. package/dist/module/icons/index.js +1 -0
  100. package/dist/module/icons/index.js.map +1 -1
  101. package/dist/module/theme/theme.js +13 -4
  102. package/dist/module/theme/theme.js.map +1 -1
  103. package/dist/module/translations/en.json +2 -0
  104. package/dist/module/utils/StreamVideoRN/index.js +2 -1
  105. package/dist/module/utils/StreamVideoRN/index.js.map +1 -1
  106. package/dist/module/utils/internal/pushLogoutCallback.js.map +1 -1
  107. package/dist/module/utils/push/android.js +6 -4
  108. package/dist/module/utils/push/android.js.map +1 -1
  109. package/dist/module/utils/push/ios.js +6 -4
  110. package/dist/module/utils/push/ios.js.map +1 -1
  111. package/dist/module/version.js +1 -1
  112. package/dist/typescript/components/Call/CallContent/CallContent.d.ts +6 -1
  113. package/dist/typescript/components/Call/CallContent/CallContent.d.ts.map +1 -1
  114. package/dist/typescript/components/Call/CallControls/{ScreenShareButton.d.ts → ScreenShareToggleButton.d.ts} +3 -3
  115. package/dist/typescript/components/Call/CallControls/ScreenShareToggleButton.d.ts.map +1 -0
  116. package/dist/typescript/components/Call/CallControls/index.d.ts +1 -1
  117. package/dist/typescript/components/Call/CallControls/index.d.ts.map +1 -1
  118. package/dist/typescript/components/Call/CallLayout/CallParticipantsSpotlight.d.ts +2 -2
  119. package/dist/typescript/components/Call/CallLayout/CallParticipantsSpotlight.d.ts.map +1 -1
  120. package/dist/typescript/components/Livestream/HostLivestream/HostLivestream.d.ts +16 -1
  121. package/dist/typescript/components/Livestream/HostLivestream/HostLivestream.d.ts.map +1 -1
  122. package/dist/typescript/components/Livestream/LivestreamControls/HostLivestreamControls.d.ts +7 -1
  123. package/dist/typescript/components/Livestream/LivestreamControls/HostLivestreamControls.d.ts.map +1 -1
  124. package/dist/typescript/components/Livestream/LivestreamControls/HostStartStreamButton.d.ts +7 -3
  125. package/dist/typescript/components/Livestream/LivestreamControls/HostStartStreamButton.d.ts.map +1 -1
  126. package/dist/typescript/components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.d.ts +7 -0
  127. package/dist/typescript/components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.d.ts.map +1 -0
  128. package/dist/typescript/components/Livestream/LivestreamControls/ViewerLivestreamControls.d.ts +3 -1
  129. package/dist/typescript/components/Livestream/LivestreamControls/ViewerLivestreamControls.d.ts.map +1 -1
  130. package/dist/typescript/components/Livestream/LivestreamControls/index.d.ts +4 -1
  131. package/dist/typescript/components/Livestream/LivestreamControls/index.d.ts.map +1 -1
  132. package/dist/typescript/components/Livestream/LivestreamLayout/LivestreamLayout.d.ts +6 -1
  133. package/dist/typescript/components/Livestream/LivestreamLayout/LivestreamLayout.d.ts.map +1 -1
  134. package/dist/typescript/components/Livestream/LivestreamTopView/HostLivestreamTopView.d.ts +3 -1
  135. package/dist/typescript/components/Livestream/LivestreamTopView/HostLivestreamTopView.d.ts.map +1 -1
  136. package/dist/typescript/components/Livestream/LivestreamTopView/ViewerLivestreamTopView.d.ts +3 -1
  137. package/dist/typescript/components/Livestream/LivestreamTopView/ViewerLivestreamTopView.d.ts.map +1 -1
  138. package/dist/typescript/components/Livestream/LivestreamTopView/index.d.ts +1 -0
  139. package/dist/typescript/components/Livestream/LivestreamTopView/index.d.ts.map +1 -1
  140. package/dist/typescript/components/Livestream/ViewerLivestream/ViewerLivestream.d.ts.map +1 -1
  141. package/dist/typescript/components/Participant/FloatingParticipantView/index.d.ts +8 -3
  142. package/dist/typescript/components/Participant/FloatingParticipantView/index.d.ts.map +1 -1
  143. package/dist/typescript/components/Participant/ParticipantView/VideoRenderer.d.ts.map +1 -1
  144. package/dist/typescript/components/utility/ScreenShareOverlay.d.ts +10 -0
  145. package/dist/typescript/components/utility/ScreenShareOverlay.d.ts.map +1 -0
  146. package/dist/typescript/components/utility/index.d.ts +1 -0
  147. package/dist/typescript/components/utility/index.d.ts.map +1 -1
  148. package/dist/typescript/hooks/push/useIosVoipPushEventsSetupEffect.d.ts.map +1 -1
  149. package/dist/typescript/icons/StopScreenShare.d.ts +8 -0
  150. package/dist/typescript/icons/StopScreenShare.d.ts.map +1 -0
  151. package/dist/typescript/icons/index.d.ts +1 -0
  152. package/dist/typescript/icons/index.d.ts.map +1 -1
  153. package/dist/typescript/theme/theme.d.ts +12 -3
  154. package/dist/typescript/theme/theme.d.ts.map +1 -1
  155. package/dist/typescript/translations/index.d.ts +2 -0
  156. package/dist/typescript/translations/index.d.ts.map +1 -1
  157. package/dist/typescript/utils/StreamVideoRN/index.d.ts +1 -1
  158. package/dist/typescript/utils/StreamVideoRN/index.d.ts.map +1 -1
  159. package/dist/typescript/utils/internal/pushLogoutCallback.d.ts +2 -2
  160. package/dist/typescript/utils/internal/pushLogoutCallback.d.ts.map +1 -1
  161. package/dist/typescript/utils/push/android.d.ts.map +1 -1
  162. package/dist/typescript/utils/push/ios.d.ts.map +1 -1
  163. package/dist/typescript/version.d.ts +1 -1
  164. package/package.json +1 -1
  165. package/src/components/Call/CallContent/CallContent.tsx +10 -0
  166. package/src/components/Call/CallControls/{ScreenShareButton.tsx → ScreenShareToggleButton.tsx} +59 -41
  167. package/src/components/Call/CallControls/index.tsx +1 -1
  168. package/src/components/Call/CallLayout/CallParticipantsSpotlight.tsx +32 -24
  169. package/src/components/Livestream/HostLivestream/HostLivestream.tsx +92 -6
  170. package/src/components/Livestream/LivestreamControls/HostLivestreamControls.tsx +10 -1
  171. package/src/components/Livestream/LivestreamControls/HostStartStreamButton.tsx +18 -10
  172. package/src/components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.tsx +161 -0
  173. package/src/components/Livestream/LivestreamControls/ViewerLivestreamControls.tsx +4 -1
  174. package/src/components/Livestream/LivestreamControls/index.ts +4 -1
  175. package/src/components/Livestream/LivestreamLayout/LivestreamLayout.tsx +66 -6
  176. package/src/components/Livestream/LivestreamTopView/HostLivestreamTopView.tsx +4 -1
  177. package/src/components/Livestream/LivestreamTopView/ViewerLivestreamTopView.tsx +4 -1
  178. package/src/components/Livestream/LivestreamTopView/index.ts +1 -0
  179. package/src/components/Livestream/ViewerLivestream/ViewerLivestream.tsx +39 -38
  180. package/src/components/Participant/FloatingParticipantView/index.tsx +15 -5
  181. package/src/components/Participant/ParticipantView/VideoRenderer.tsx +54 -8
  182. package/src/components/utility/ScreenShareOverlay.tsx +106 -0
  183. package/src/components/utility/index.ts +1 -0
  184. package/src/hooks/push/useIosVoipPushEventsSetupEffect.ts +5 -3
  185. package/src/icons/StopScreenShare.tsx +22 -0
  186. package/src/icons/index.tsx +1 -0
  187. package/src/theme/theme.ts +24 -6
  188. package/src/translations/en.json +2 -0
  189. package/src/utils/StreamVideoRN/index.ts +4 -1
  190. package/src/utils/internal/pushLogoutCallback.ts +2 -2
  191. package/src/utils/push/android.ts +6 -4
  192. package/src/utils/push/ios.ts +6 -4
  193. package/src/version.ts +1 -1
  194. package/dist/commonjs/components/Call/CallControls/ScreenShareButton.js.map +0 -1
  195. package/dist/module/components/Call/CallControls/ScreenShareButton.js.map +0 -1
  196. package/dist/typescript/components/Call/CallControls/ScreenShareButton.d.ts.map +0 -1
@@ -1,15 +1,22 @@
1
1
  import React, { useEffect } from 'react';
2
- import { StyleSheet, SafeAreaView } from 'react-native';
2
+ import { StyleSheet, View } from 'react-native';
3
3
  import InCallManager from 'react-native-incall-manager';
4
4
  import { useTheme } from '../../../contexts';
5
5
  import { HostLivestreamTopView as DefaultHostLivestreamTopView } from '../LivestreamTopView/HostLivestreamTopView';
6
6
  import { HostLivestreamControls as DefaultHostLivestreamControls } from '../LivestreamControls/HostLivestreamControls';
7
7
  import { LivestreamLayout as DefaultLivestreamLayout } from '../LivestreamLayout';
8
+ import { Z_INDEX } from '../../../constants';
9
+ import { FloatingParticipantView as DefaultFloatingParticipantView } from '../../Participant/FloatingParticipantView';
10
+ import { useCallStateHooks } from '@stream-io/video-react-bindings';
11
+ import { SfuModels } from '@stream-io/video-client';
12
+ import { ScreenShareOverlay as DefaultScreenShaerOverlay } from '../../utility/ScreenShareOverlay';
8
13
 
9
14
  /**
10
15
  * Props for the HostLivestream component.
11
16
  */
12
17
 
18
+ const hasVideoTrack = p => p === null || p === void 0 ? void 0 : p.publishedTracks.includes(SfuModels.TrackType.VIDEO);
19
+
13
20
  /**
14
21
  * The HostLivestream component displays the UI for the Host's live stream.
15
22
  */
@@ -17,6 +24,8 @@ export const HostLivestream = ({
17
24
  HostLivestreamTopView = DefaultHostLivestreamTopView,
18
25
  HostLivestreamControls = DefaultHostLivestreamControls,
19
26
  LivestreamLayout = DefaultLivestreamLayout,
27
+ FloatingParticipantView = DefaultFloatingParticipantView,
28
+ ScreenShareOverlay = DefaultScreenShaerOverlay,
20
29
  LiveIndicator,
21
30
  FollowerCount,
22
31
  DurationBadge,
@@ -24,7 +33,8 @@ export const HostLivestream = ({
24
33
  LivestreamMediaControls,
25
34
  onEndStreamHandler,
26
35
  onStartStreamHandler,
27
- hls = false
36
+ hls = false,
37
+ stopPublishedStreamsOnEndStream = true
28
38
  }) => {
29
39
  const {
30
40
  theme: {
@@ -32,6 +42,13 @@ export const HostLivestream = ({
32
42
  hostLivestream
33
43
  }
34
44
  } = useTheme();
45
+ const {
46
+ useParticipants,
47
+ useHasOngoingScreenShare
48
+ } = useCallStateHooks();
49
+ const [currentSpeaker] = useParticipants();
50
+ const hasOngoingScreenShare = useHasOngoingScreenShare();
51
+ const floatingParticipant = hasOngoingScreenShare && hasVideoTrack(currentSpeaker) && currentSpeaker;
35
52
 
36
53
  // Automatically route audio to speaker devices as relevant for watching videos.
37
54
  useEffect(() => {
@@ -40,26 +57,62 @@ export const HostLivestream = ({
40
57
  });
41
58
  return () => InCallManager.stop();
42
59
  }, []);
60
+ const [topViewHeight, setTopViewHeight] = React.useState();
61
+ const [controlsHeight, setControlsHeight] = React.useState();
43
62
  const topViewProps = {
44
63
  LiveIndicator,
45
64
  FollowerCount,
46
- DurationBadge
65
+ DurationBadge,
66
+ onLayout: event => {
67
+ setTopViewHeight(event.nativeEvent.layout.height);
68
+ }
47
69
  };
48
- return /*#__PURE__*/React.createElement(SafeAreaView, {
70
+ return /*#__PURE__*/React.createElement(View, {
49
71
  style: [styles.container, {
50
- backgroundColor: colors.static_grey
72
+ backgroundColor: colors.dark_gray
51
73
  }, hostLivestream.container]
52
- }, HostLivestreamTopView && /*#__PURE__*/React.createElement(HostLivestreamTopView, topViewProps), LivestreamLayout && /*#__PURE__*/React.createElement(LivestreamLayout, null), HostLivestreamControls && /*#__PURE__*/React.createElement(HostLivestreamControls, {
74
+ }, HostLivestreamTopView && /*#__PURE__*/React.createElement(View, {
75
+ style: styles.topViewContainer,
76
+ onLayout: event => {
77
+ setTopViewHeight(event.nativeEvent.layout.height);
78
+ }
79
+ }, /*#__PURE__*/React.createElement(HostLivestreamTopView, topViewProps)), FloatingParticipantView && floatingParticipant && topViewHeight && controlsHeight && /*#__PURE__*/React.createElement(FloatingParticipantView, {
80
+ participant: floatingParticipant,
81
+ draggableContainerStyle: [StyleSheet.absoluteFill, {
82
+ top: topViewHeight,
83
+ bottom: controlsHeight
84
+ }]
85
+ }), LivestreamLayout && /*#__PURE__*/React.createElement(LivestreamLayout, {
86
+ ScreenShareOverlay: ScreenShareOverlay
87
+ }), HostLivestreamControls && /*#__PURE__*/React.createElement(HostLivestreamControls, {
53
88
  onEndStreamHandler: onEndStreamHandler,
54
89
  onStartStreamHandler: onStartStreamHandler,
55
90
  HostStartStreamButton: HostStartStreamButton,
56
91
  LivestreamMediaControls: LivestreamMediaControls,
57
- hls: hls
92
+ hls: hls,
93
+ onLayout: event => {
94
+ setControlsHeight(event.nativeEvent.layout.height);
95
+ },
96
+ stopPublishedStreamsOnEndStream: stopPublishedStreamsOnEndStream
58
97
  }));
59
98
  };
60
99
  const styles = StyleSheet.create({
61
100
  container: {
62
101
  flex: 1
102
+ },
103
+ topViewContainer: {
104
+ position: 'absolute',
105
+ top: 0,
106
+ left: 0,
107
+ right: 0,
108
+ zIndex: Z_INDEX.IN_FRONT
109
+ },
110
+ controlsViewContainer: {
111
+ position: 'absolute',
112
+ bottom: 0,
113
+ left: 0,
114
+ right: 0,
115
+ zIndex: Z_INDEX.IN_FRONT
63
116
  }
64
117
  });
65
118
  //# sourceMappingURL=HostLivestream.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","StyleSheet","SafeAreaView","InCallManager","useTheme","HostLivestreamTopView","DefaultHostLivestreamTopView","HostLivestreamControls","DefaultHostLivestreamControls","LivestreamLayout","DefaultLivestreamLayout","HostLivestream","LiveIndicator","FollowerCount","DurationBadge","HostStartStreamButton","LivestreamMediaControls","onEndStreamHandler","onStartStreamHandler","hls","theme","colors","hostLivestream","start","media","stop","topViewProps","createElement","style","styles","container","backgroundColor","static_grey","create","flex"],"sourceRoot":"../../../../../src","sources":["components/Livestream/HostLivestream/HostLivestream.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,UAAU,EAAEC,YAAY,QAAQ,cAAc;AACvD,OAAOC,aAAa,MAAM,6BAA6B;AAEvD,SAASC,QAAQ,QAAQ,mBAAmB;AAC5C,SACEC,qBAAqB,IAAIC,4BAA4B,QAEhD,4CAA4C;AACnD,SACEC,sBAAsB,IAAIC,6BAA6B,QAElD,8CAA8C;AACrD,SACEC,gBAAgB,IAAIC,uBAAuB,QAEtC,qBAAqB;;AAE5B;AACA;AACA;;AAqBA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,GAAGA,CAAC;EAC7BN,qBAAqB,GAAGC,4BAA4B;EACpDC,sBAAsB,GAAGC,6BAA6B;EACtDC,gBAAgB,GAAGC,uBAAuB;EAC1CE,aAAa;EACbC,aAAa;EACbC,aAAa;EACbC,qBAAqB;EACrBC,uBAAuB;EACvBC,kBAAkB;EAClBC,oBAAoB;EACpBC,GAAG,GAAG;AACa,CAAC,KAAK;EACzB,MAAM;IACJC,KAAK,EAAE;MAAEC,MAAM;MAAEC;IAAe;EAClC,CAAC,GAAGlB,QAAQ,CAAC,CAAC;;EAEd;EACAJ,SAAS,CAAC,MAAM;IACdG,aAAa,CAACoB,KAAK,CAAC;MAAEC,KAAK,EAAE;IAAQ,CAAC,CAAC;IACvC,OAAO,MAAMrB,aAAa,CAACsB,IAAI,CAAC,CAAC;EACnC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,YAAwC,GAAG;IAC/Cd,aAAa;IACbC,aAAa;IACbC;EACF,CAAC;EAED,oBACEf,KAAA,CAAA4B,aAAA,CAACzB,YAAY;IACX0B,KAAK,EAAE,CACLC,MAAM,CAACC,SAAS,EAChB;MACEC,eAAe,EAAEV,MAAM,CAACW;IAC1B,CAAC,EACDV,cAAc,CAACQ,SAAS;EACxB,GAEDzB,qBAAqB,iBAAIN,KAAA,CAAA4B,aAAA,CAACtB,qBAAqB,EAAKqB,YAAe,CAAC,EACpEjB,gBAAgB,iBAAIV,KAAA,CAAA4B,aAAA,CAAClB,gBAAgB,MAAE,CAAC,EACxCF,sBAAsB,iBACrBR,KAAA,CAAA4B,aAAA,CAACpB,sBAAsB;IACrBU,kBAAkB,EAAEA,kBAAmB;IACvCC,oBAAoB,EAAEA,oBAAqB;IAC3CH,qBAAqB,EAAEA,qBAAsB;IAC7CC,uBAAuB,EAAEA,uBAAwB;IACjDG,GAAG,EAAEA;EAAI,CACV,CAES,CAAC;AAEnB,CAAC;AAED,MAAMU,MAAM,GAAG5B,UAAU,CAACgC,MAAM,CAAC;EAC/BH,SAAS,EAAE;IACTI,IAAI,EAAE;EACR;AACF,CAAC,CAAC"}
1
+ {"version":3,"names":["React","useEffect","StyleSheet","View","InCallManager","useTheme","HostLivestreamTopView","DefaultHostLivestreamTopView","HostLivestreamControls","DefaultHostLivestreamControls","LivestreamLayout","DefaultLivestreamLayout","Z_INDEX","FloatingParticipantView","DefaultFloatingParticipantView","useCallStateHooks","SfuModels","ScreenShareOverlay","DefaultScreenShaerOverlay","hasVideoTrack","p","publishedTracks","includes","TrackType","VIDEO","HostLivestream","LiveIndicator","FollowerCount","DurationBadge","HostStartStreamButton","LivestreamMediaControls","onEndStreamHandler","onStartStreamHandler","hls","stopPublishedStreamsOnEndStream","theme","colors","hostLivestream","useParticipants","useHasOngoingScreenShare","currentSpeaker","hasOngoingScreenShare","floatingParticipant","start","media","stop","topViewHeight","setTopViewHeight","useState","controlsHeight","setControlsHeight","topViewProps","onLayout","event","nativeEvent","layout","height","createElement","style","styles","container","backgroundColor","dark_gray","topViewContainer","participant","draggableContainerStyle","absoluteFill","top","bottom","create","flex","position","left","right","zIndex","IN_FRONT","controlsViewContainer"],"sourceRoot":"../../../../../src","sources":["components/Livestream/HostLivestream/HostLivestream.tsx"],"mappings":"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"}
@@ -17,7 +17,9 @@ export const HostLivestreamControls = ({
17
17
  LivestreamMediaControls = DefaultLivestreamMediaControls,
18
18
  onEndStreamHandler,
19
19
  onStartStreamHandler,
20
- hls = false
20
+ hls = false,
21
+ stopPublishedStreamsOnEndStream,
22
+ onLayout
21
23
  }) => {
22
24
  const {
23
25
  theme: {
@@ -28,13 +30,15 @@ export const HostLivestreamControls = ({
28
30
  return /*#__PURE__*/React.createElement(View, {
29
31
  style: [styles.container, {
30
32
  backgroundColor: colors.static_overlay
31
- }, hostLivestreamControls.container]
33
+ }, hostLivestreamControls.container],
34
+ onLayout: onLayout
32
35
  }, /*#__PURE__*/React.createElement(View, {
33
36
  style: [styles.leftElement, hostLivestreamControls.leftElement]
34
37
  }, HostStartStreamButton && /*#__PURE__*/React.createElement(HostStartStreamButton, {
35
38
  onEndStreamHandler: onEndStreamHandler,
36
39
  onStartStreamHandler: onStartStreamHandler,
37
- hls: hls
40
+ hls: hls,
41
+ stopPublishedStreamsOnEndStream: stopPublishedStreamsOnEndStream
38
42
  })), /*#__PURE__*/React.createElement(View, {
39
43
  style: [styles.rightElement, hostLivestreamControls.rightElement]
40
44
  }, LivestreamMediaControls && /*#__PURE__*/React.createElement(LivestreamMediaControls, null)));
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","View","HostStartStreamButton","DefaultHostStartStreamButton","LivestreamMediaControls","DefaultLivestreamMediaControls","useTheme","Z_INDEX","HostLivestreamControls","onEndStreamHandler","onStartStreamHandler","hls","theme","colors","hostLivestreamControls","createElement","style","styles","container","backgroundColor","static_overlay","leftElement","rightElement","create","position","bottom","flexDirection","alignItems","paddingVertical","paddingHorizontal","zIndex","IN_FRONT","flex"],"sourceRoot":"../../../../../src","sources":["components/Livestream/LivestreamControls/HostLivestreamControls.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SACEC,qBAAqB,IAAIC,4BAA4B,QAEhD,yBAAyB;AAChC,SACEC,uBAAuB,IAAIC,8BAA8B,QAEpD,2BAA2B;AAClC,SAASC,QAAQ,QAAQ,mBAAmB;AAC5C,SAASC,OAAO,QAAQ,oBAAoB;;AAE5C;AACA;AACA;;AAgBA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,GAAGA,CAAC;EACrCN,qBAAqB,GAAGC,4BAA4B;EACpDC,uBAAuB,GAAGC,8BAA8B;EACxDI,kBAAkB;EAClBC,oBAAoB;EACpBC,GAAG,GAAG;AACqB,CAAC,KAAK;EACjC,MAAM;IACJC,KAAK,EAAE;MAAEC,MAAM;MAAEC;IAAuB;EAC1C,CAAC,GAAGR,QAAQ,CAAC,CAAC;EACd,oBACEP,KAAA,CAAAgB,aAAA,CAACd,IAAI;IACHe,KAAK,EAAE,CACLC,MAAM,CAACC,SAAS,EAChB;MAAEC,eAAe,EAAEN,MAAM,CAACO;IAAe,CAAC,EAC1CN,sBAAsB,CAACI,SAAS;EAChC,gBAEFnB,KAAA,CAAAgB,aAAA,CAACd,IAAI;IAACe,KAAK,EAAE,CAACC,MAAM,CAACI,WAAW,EAAEP,sBAAsB,CAACO,WAAW;EAAE,GACnEnB,qBAAqB,iBACpBH,KAAA,CAAAgB,aAAA,CAACb,qBAAqB;IACpBO,kBAAkB,EAAEA,kBAAmB;IACvCC,oBAAoB,EAAEA,oBAAqB;IAC3CC,GAAG,EAAEA;EAAI,CACV,CAEC,CAAC,eACPZ,KAAA,CAAAgB,aAAA,CAACd,IAAI;IAACe,KAAK,EAAE,CAACC,MAAM,CAACK,YAAY,EAAER,sBAAsB,CAACQ,YAAY;EAAE,GACrElB,uBAAuB,iBAAIL,KAAA,CAAAgB,aAAA,CAACX,uBAAuB,MAAE,CAClD,CACF,CAAC;AAEX,CAAC;AAED,MAAMa,MAAM,GAAGjB,UAAU,CAACuB,MAAM,CAAC;EAC/BL,SAAS,EAAE;IACTM,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,CAAC;IACTC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,eAAe,EAAE,EAAE;IACnBC,iBAAiB,EAAE,CAAC;IACpBC,MAAM,EAAEvB,OAAO,CAACwB;EAClB,CAAC;EACDV,WAAW,EAAE;IACXW,IAAI,EAAE,CAAC;IACPL,UAAU,EAAE;EACd,CAAC;EACDL,YAAY,EAAE;IACZU,IAAI,EAAE,CAAC;IACPL,UAAU,EAAE;EACd;AACF,CAAC,CAAC"}
1
+ {"version":3,"names":["React","StyleSheet","View","HostStartStreamButton","DefaultHostStartStreamButton","LivestreamMediaControls","DefaultLivestreamMediaControls","useTheme","Z_INDEX","HostLivestreamControls","onEndStreamHandler","onStartStreamHandler","hls","stopPublishedStreamsOnEndStream","onLayout","theme","colors","hostLivestreamControls","createElement","style","styles","container","backgroundColor","static_overlay","leftElement","rightElement","create","position","bottom","flexDirection","alignItems","paddingVertical","paddingHorizontal","zIndex","IN_FRONT","flex"],"sourceRoot":"../../../../../src","sources":["components/Livestream/LivestreamControls/HostLivestreamControls.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AAC1D,SACEC,qBAAqB,IAAIC,4BAA4B,QAEhD,yBAAyB;AAChC,SACEC,uBAAuB,IAAIC,8BAA8B,QAEpD,2BAA2B;AAClC,SAASC,QAAQ,QAAQ,mBAAmB;AAC5C,SAASC,OAAO,QAAQ,oBAAoB;;AAE5C;AACA;AACA;;AAqBA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,GAAGA,CAAC;EACrCN,qBAAqB,GAAGC,4BAA4B;EACpDC,uBAAuB,GAAGC,8BAA8B;EACxDI,kBAAkB;EAClBC,oBAAoB;EACpBC,GAAG,GAAG,KAAK;EACXC,+BAA+B;EAC/BC;AAC2B,CAAC,KAAK;EACjC,MAAM;IACJC,KAAK,EAAE;MAAEC,MAAM;MAAEC;IAAuB;EAC1C,CAAC,GAAGV,QAAQ,CAAC,CAAC;EACd,oBACEP,KAAA,CAAAkB,aAAA,CAAChB,IAAI;IACHiB,KAAK,EAAE,CACLC,MAAM,CAACC,SAAS,EAChB;MAAEC,eAAe,EAAEN,MAAM,CAACO;IAAe,CAAC,EAC1CN,sBAAsB,CAACI,SAAS,CAChC;IACFP,QAAQ,EAAEA;EAAS,gBAEnBd,KAAA,CAAAkB,aAAA,CAAChB,IAAI;IAACiB,KAAK,EAAE,CAACC,MAAM,CAACI,WAAW,EAAEP,sBAAsB,CAACO,WAAW;EAAE,GACnErB,qBAAqB,iBACpBH,KAAA,CAAAkB,aAAA,CAACf,qBAAqB;IACpBO,kBAAkB,EAAEA,kBAAmB;IACvCC,oBAAoB,EAAEA,oBAAqB;IAC3CC,GAAG,EAAEA,GAAI;IACTC,+BAA+B,EAAEA;EAAgC,CAClE,CAEC,CAAC,eACPb,KAAA,CAAAkB,aAAA,CAAChB,IAAI;IAACiB,KAAK,EAAE,CAACC,MAAM,CAACK,YAAY,EAAER,sBAAsB,CAACQ,YAAY;EAAE,GACrEpB,uBAAuB,iBAAIL,KAAA,CAAAkB,aAAA,CAACb,uBAAuB,MAAE,CAClD,CACF,CAAC;AAEX,CAAC;AAED,MAAMe,MAAM,GAAGnB,UAAU,CAACyB,MAAM,CAAC;EAC/BL,SAAS,EAAE;IACTM,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,CAAC;IACTC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,eAAe,EAAE,EAAE;IACnBC,iBAAiB,EAAE,CAAC;IACpBC,MAAM,EAAEzB,OAAO,CAAC0B;EAClB,CAAC;EACDV,WAAW,EAAE;IACXW,IAAI,EAAE,CAAC;IACPL,UAAU,EAAE;EACd,CAAC;EACDL,YAAY,EAAE;IACZU,IAAI,EAAE,CAAC;IACPL,UAAU,EAAE;EACd;AACF,CAAC,CAAC"}
@@ -3,6 +3,7 @@ import React, { useState } from 'react';
3
3
  import { ActivityIndicator, Pressable, StyleSheet, Text, View } from 'react-native';
4
4
  import { useTheme } from '../../../contexts';
5
5
  import { EndBroadcastIcon, StartStreamIcon } from '../../../icons';
6
+ import { SfuModels } from '@stream-io/video-client';
6
7
 
7
8
  /**
8
9
  * Props for the HostStartStreamButton component.
@@ -14,7 +15,8 @@ import { EndBroadcastIcon, StartStreamIcon } from '../../../icons';
14
15
  export const HostStartStreamButton = ({
15
16
  onEndStreamHandler,
16
17
  onStartStreamHandler,
17
- hls
18
+ hls,
19
+ stopPublishedStreamsOnEndStream
18
20
  }) => {
19
21
  const [isAwaitingResponse, setIsAwaitingResponse] = useState(false);
20
22
  const {
@@ -39,10 +41,6 @@ export const HostStartStreamButton = ({
39
41
  } = useI18n();
40
42
  const liveOrBroadcasting = isCallLive || isCallBroadcasting;
41
43
  const onStartStreamButtonPress = async () => {
42
- if (onStartStreamHandler) {
43
- onStartStreamHandler();
44
- return;
45
- }
46
44
  try {
47
45
  setIsAwaitingResponse(true);
48
46
  await (call === null || call === void 0 ? void 0 : call.goLive());
@@ -50,23 +48,29 @@ export const HostStartStreamButton = ({
50
48
  await (call === null || call === void 0 ? void 0 : call.startHLS());
51
49
  }
52
50
  setIsAwaitingResponse(false);
51
+ if (onStartStreamHandler) {
52
+ onStartStreamHandler();
53
+ }
53
54
  } catch (error) {
54
55
  console.error('Error starting livestream', error);
55
56
  }
56
57
  };
57
58
  const onEndStreamButtonPress = async () => {
58
- if (onEndStreamHandler) {
59
- onEndStreamHandler();
60
- return;
61
- }
62
59
  try {
63
60
  setIsAwaitingResponse(true);
61
+ if (stopPublishedStreamsOnEndStream) {
62
+ await (call === null || call === void 0 ? void 0 : call.stopPublish(SfuModels.TrackType.VIDEO));
63
+ await (call === null || call === void 0 ? void 0 : call.stopPublish(SfuModels.TrackType.SCREEN_SHARE));
64
+ }
64
65
  if (hls) {
65
66
  await (call === null || call === void 0 ? void 0 : call.stopHLS());
66
67
  } else {
67
68
  await (call === null || call === void 0 ? void 0 : call.stopLive());
68
69
  }
69
70
  setIsAwaitingResponse(false);
71
+ if (onEndStreamHandler) {
72
+ onEndStreamHandler();
73
+ }
70
74
  } catch (error) {
71
75
  console.error('Error stopping livestream', error);
72
76
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useCall","useCallStateHooks","useI18n","React","useState","ActivityIndicator","Pressable","StyleSheet","Text","View","useTheme","EndBroadcastIcon","StartStreamIcon","HostStartStreamButton","onEndStreamHandler","onStartStreamHandler","hls","isAwaitingResponse","setIsAwaitingResponse","useIsCallLive","useIsCallHLSBroadcastingInProgress","theme","colors","variants","iconSizes","typefaces","hostStartStreamButton","call","isCallLive","isCallBroadcasting","t","liveOrBroadcasting","onStartStreamButtonPress","goLive","startHLS","error","console","onEndStreamButtonPress","stopHLS","stopLive","createElement","disabled","style","styles","container","backgroundColor","dark_gray","primary","onPress","icon","height","xs","width","text","subtitleBold","color","static_white","create","flexDirection","alignItems","padding","borderRadius","marginLeft","includeFontPadding"],"sourceRoot":"../../../../../src","sources":["components/Livestream/LivestreamControls/HostStartStreamButton.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["useCall","useCallStateHooks","useI18n","React","useState","ActivityIndicator","Pressable","StyleSheet","Text","View","useTheme","EndBroadcastIcon","StartStreamIcon","SfuModels","HostStartStreamButton","onEndStreamHandler","onStartStreamHandler","hls","stopPublishedStreamsOnEndStream","isAwaitingResponse","setIsAwaitingResponse","useIsCallLive","useIsCallHLSBroadcastingInProgress","theme","colors","variants","iconSizes","typefaces","hostStartStreamButton","call","isCallLive","isCallBroadcasting","t","liveOrBroadcasting","onStartStreamButtonPress","goLive","startHLS","error","console","onEndStreamButtonPress","stopPublish","TrackType","VIDEO","SCREEN_SHARE","stopHLS","stopLive","createElement","disabled","style","styles","container","backgroundColor","dark_gray","primary","onPress","icon","height","xs","width","text","subtitleBold","color","static_white","create","flexDirection","alignItems","padding","borderRadius","marginLeft","includeFontPadding"],"sourceRoot":"../../../../../src","sources":["components/Livestream/LivestreamControls/HostStartStreamButton.tsx"],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ import React, { useEffect } from 'react';
2
+ import { useTheme } from '../../../contexts/ThemeContext';
3
+ import { NativeModules, Platform, Pressable, StyleSheet, View, findNodeHandle } from 'react-native';
4
+ import { ScreenShare } from '../../../icons/ScreenShare';
5
+ import { StopScreenShare } from '../../../icons/StopScreenShare';
6
+ import { ScreenCapturePickerView } from '@stream-io/react-native-webrtc';
7
+ import { SfuModels } from '@stream-io/video-client';
8
+ import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
9
+ import { useIsIosScreenshareBroadcastStarted } from '../../../hooks/useIsIosScreenshareBroadcastStarted';
10
+ import { usePrevious } from '../../../utils/hooks/usePrevious';
11
+ // ios >= 14.0 or android - platform restrictions
12
+ const CanDeviceScreenShare = Platform.OS === 'ios' &&
13
+ // @ts-ignore
14
+ Number.parseInt(Platform.Version.split('.')[0], 10) >= 14 || Platform.OS === 'android';
15
+
16
+ /**
17
+ * The LivestreamVideoControlButton controls the screenshare stream publish/unpublish while in the livestream for the host.
18
+ */
19
+ export const LivestreamScreenShareToggleButton = () => {
20
+ const {
21
+ theme: {
22
+ colors,
23
+ variants: {
24
+ iconSizes,
25
+ buttonSizes
26
+ },
27
+ livestreamScreenShareToggleButton
28
+ }
29
+ } = useTheme();
30
+ const call = useCall();
31
+ const {
32
+ useLocalParticipant,
33
+ useCallSettings
34
+ } = useCallStateHooks();
35
+ const callSettings = useCallSettings();
36
+ const isScreenSharingEnabledInCall = callSettings === null || callSettings === void 0 ? void 0 : callSettings.screensharing.enabled;
37
+ const iosScreenShareStartedFromSystem = useIsIosScreenshareBroadcastStarted();
38
+ const prevIosScreenShareStartedFromSystem = usePrevious(iosScreenShareStartedFromSystem);
39
+ const localParticipant = useLocalParticipant();
40
+ const hasPublishedScreenShare = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.publishedTracks.includes(SfuModels.TrackType.SCREEN_SHARE);
41
+
42
+ // listens to iOS screen share broadcast started event from the system
43
+ useEffect(() => {
44
+ const run = async () => {
45
+ if (Platform.OS !== 'ios') {
46
+ return;
47
+ }
48
+ if (iosScreenShareStartedFromSystem && !prevIosScreenShareStartedFromSystem) {
49
+ const media = await navigator.mediaDevices.getDisplayMedia({
50
+ // @ts-ignore
51
+ deviceId: 'broadcast',
52
+ video: true,
53
+ audio: true
54
+ });
55
+ await (call === null || call === void 0 ? void 0 : call.publishScreenShareStream(media));
56
+ } else if (!iosScreenShareStartedFromSystem && prevIosScreenShareStartedFromSystem) {
57
+ await (call === null || call === void 0 ? void 0 : call.stopPublish(SfuModels.TrackType.SCREEN_SHARE));
58
+ }
59
+ };
60
+ run();
61
+ }, [call, iosScreenShareStartedFromSystem, prevIosScreenShareStartedFromSystem]);
62
+ const screenCapturePickerViewiOSRef = React.useRef(null);
63
+ const onPress = async () => {
64
+ if (!hasPublishedScreenShare) {
65
+ if (Platform.OS === 'ios') {
66
+ const reactTag = findNodeHandle(screenCapturePickerViewiOSRef.current);
67
+ await NativeModules.ScreenCapturePickerViewManager.show(reactTag);
68
+ // After this the iOS screen share broadcast started/stopped event will be triggered
69
+ // and the useEffect listener will handle the rest
70
+ } else {
71
+ try {
72
+ const media = await navigator.mediaDevices.getDisplayMedia({
73
+ video: true,
74
+ audio: true
75
+ });
76
+ await (call === null || call === void 0 ? void 0 : call.publishScreenShareStream(media));
77
+ } catch (e) {
78
+ // ignored.. user didnt allow the screen share in the popup
79
+ }
80
+ }
81
+ } else if (hasPublishedScreenShare) {
82
+ await (call === null || call === void 0 ? void 0 : call.stopPublish(SfuModels.TrackType.SCREEN_SHARE));
83
+ }
84
+ };
85
+ if (!isScreenSharingEnabledInCall || !CanDeviceScreenShare) {
86
+ return null;
87
+ }
88
+ return /*#__PURE__*/React.createElement(Pressable, {
89
+ onPress: onPress,
90
+ style: [styles.container, {
91
+ backgroundColor: hasPublishedScreenShare ? colors.error : colors.dark_gray,
92
+ height: buttonSizes.xs,
93
+ width: buttonSizes.xs
94
+ }, livestreamScreenShareToggleButton.container]
95
+ }, /*#__PURE__*/React.createElement(View, {
96
+ style: [styles.icon, {
97
+ height: iconSizes.sm,
98
+ width: iconSizes.sm
99
+ }, livestreamScreenShareToggleButton.icon]
100
+ }, hasPublishedScreenShare ? /*#__PURE__*/React.createElement(StopScreenShare, {
101
+ color: colors.static_white
102
+ }) : /*#__PURE__*/React.createElement(ScreenShare, {
103
+ color: colors.static_white
104
+ })), Platform.OS === 'ios' && /*#__PURE__*/React.createElement(ScreenCapturePickerView, {
105
+ ref: screenCapturePickerViewiOSRef
106
+ }));
107
+ };
108
+ const styles = StyleSheet.create({
109
+ container: {
110
+ justifyContent: 'center',
111
+ alignItems: 'center',
112
+ marginHorizontal: 4,
113
+ borderRadius: 4
114
+ },
115
+ icon: {}
116
+ });
117
+ //# sourceMappingURL=LivestreamScreenShareToggleButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useTheme","NativeModules","Platform","Pressable","StyleSheet","View","findNodeHandle","ScreenShare","StopScreenShare","ScreenCapturePickerView","SfuModels","useCall","useCallStateHooks","useIsIosScreenshareBroadcastStarted","usePrevious","CanDeviceScreenShare","OS","Number","parseInt","Version","split","LivestreamScreenShareToggleButton","theme","colors","variants","iconSizes","buttonSizes","livestreamScreenShareToggleButton","call","useLocalParticipant","useCallSettings","callSettings","isScreenSharingEnabledInCall","screensharing","enabled","iosScreenShareStartedFromSystem","prevIosScreenShareStartedFromSystem","localParticipant","hasPublishedScreenShare","publishedTracks","includes","TrackType","SCREEN_SHARE","run","media","navigator","mediaDevices","getDisplayMedia","deviceId","video","audio","publishScreenShareStream","stopPublish","screenCapturePickerViewiOSRef","useRef","onPress","reactTag","current","ScreenCapturePickerViewManager","show","e","createElement","style","styles","container","backgroundColor","error","dark_gray","height","xs","width","icon","sm","color","static_white","ref","create","justifyContent","alignItems","marginHorizontal","borderRadius"],"sourceRoot":"../../../../../src","sources":["components/Livestream/LivestreamControls/LivestreamScreenShareToggleButton.tsx"],"mappings":"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"}
@@ -13,7 +13,8 @@ import { Z_INDEX } from '../../../constants';
13
13
  */
14
14
  export const ViewerLivestreamControls = ({
15
15
  ViewerLeaveStreamButton = DefaultViewerLeaveStreamButton,
16
- onLeaveStreamHandler
16
+ onLeaveStreamHandler,
17
+ onLayout
17
18
  }) => {
18
19
  const {
19
20
  theme: {
@@ -24,7 +25,8 @@ export const ViewerLivestreamControls = ({
24
25
  return /*#__PURE__*/React.createElement(View, {
25
26
  style: [styles.container, {
26
27
  backgroundColor: colors.static_overlay
27
- }, viewerLivestreamControls.container]
28
+ }, viewerLivestreamControls.container],
29
+ onLayout: onLayout
28
30
  }, /*#__PURE__*/React.createElement(View, {
29
31
  style: [styles.leftElement, viewerLivestreamControls.leftElement]
30
32
  }, ViewerLeaveStreamButton && /*#__PURE__*/React.createElement(ViewerLeaveStreamButton, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","View","ViewerLeaveStreamButton","DefaultViewerLeaveStreamButton","useTheme","Z_INDEX","ViewerLivestreamControls","onLeaveStreamHandler","theme","colors","viewerLivestreamControls","createElement","style","styles","container","backgroundColor","static_overlay","leftElement","rightElement","create","position","bottom","flexDirection","alignItems","paddingVertical","paddingHorizontal","zIndex","IN_FRONT","content","flex"],"sourceRoot":"../../../../../src","sources":["components/Livestream/LivestreamControls/ViewerLivestreamControls.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAE/C,SACEC,uBAAuB,IAAIC,8BAA8B,QAEpD,2BAA2B;AAClC,SAASC,QAAQ,QAAQ,mBAAmB;AAC5C,SAASC,OAAO,QAAQ,oBAAoB;;AAE5C;AACA;AACA;;AAQA;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,GAAGA,CAAC;EACvCJ,uBAAuB,GAAGC,8BAA8B;EACxDI;AAC6B,CAAC,KAAK;EACnC,MAAM;IACJC,KAAK,EAAE;MAAEC,MAAM;MAAEC;IAAyB;EAC5C,CAAC,GAAGN,QAAQ,CAAC,CAAC;EAEd,oBACEL,KAAA,CAAAY,aAAA,CAACV,IAAI;IACHW,KAAK,EAAE,CACLC,MAAM,CAACC,SAAS,EAChB;MACEC,eAAe,EAAEN,MAAM,CAACO;IAC1B,CAAC,EACDN,wBAAwB,CAACI,SAAS;EAClC,gBAEFf,KAAA,CAAAY,aAAA,CAACV,IAAI;IAACW,KAAK,EAAE,CAACC,MAAM,CAACI,WAAW,EAAEP,wBAAwB,CAACO,WAAW;EAAE,GACrEf,uBAAuB,iBACtBH,KAAA,CAAAY,aAAA,CAACT,uBAAuB;IACtBK,oBAAoB,EAAEA;EAAqB,CAC5C,CAEC,CAAC,eACPR,KAAA,CAAAY,aAAA,CAACV,IAAI;IACHW,KAAK,EAAE,CAACC,MAAM,CAACK,YAAY,EAAER,wBAAwB,CAACQ,YAAY;EAAE,CACrE,CACG,CAAC;AAEX,CAAC;AAED,MAAML,MAAM,GAAGb,UAAU,CAACmB,MAAM,CAAC;EAC/BL,SAAS,EAAE;IACTM,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,CAAC;IACTC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,eAAe,EAAE,EAAE;IACnBC,iBAAiB,EAAE,CAAC;IACpBC,MAAM,EAAErB,OAAO,CAACsB;EAClB,CAAC;EACDC,OAAO,EAAE,CAAC,CAAC;EACXX,WAAW,EAAE;IACXY,IAAI,EAAE,CAAC;IACPN,UAAU,EAAE;EACd,CAAC;EACDL,YAAY,EAAE;IACZW,IAAI,EAAE,CAAC;IACPN,UAAU,EAAE;EACd;AACF,CAAC,CAAC"}
1
+ {"version":3,"names":["React","StyleSheet","View","ViewerLeaveStreamButton","DefaultViewerLeaveStreamButton","useTheme","Z_INDEX","ViewerLivestreamControls","onLeaveStreamHandler","onLayout","theme","colors","viewerLivestreamControls","createElement","style","styles","container","backgroundColor","static_overlay","leftElement","rightElement","create","position","bottom","flexDirection","alignItems","paddingVertical","paddingHorizontal","zIndex","IN_FRONT","content","flex"],"sourceRoot":"../../../../../src","sources":["components/Livestream/LivestreamControls/ViewerLivestreamControls.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AAE1D,SACEC,uBAAuB,IAAIC,8BAA8B,QAEpD,2BAA2B;AAClC,SAASC,QAAQ,QAAQ,mBAAmB;AAC5C,SAASC,OAAO,QAAQ,oBAAoB;;AAE5C;AACA;AACA;;AASA;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,GAAGA,CAAC;EACvCJ,uBAAuB,GAAGC,8BAA8B;EACxDI,oBAAoB;EACpBC;AAC6B,CAAC,KAAK;EACnC,MAAM;IACJC,KAAK,EAAE;MAAEC,MAAM;MAAEC;IAAyB;EAC5C,CAAC,GAAGP,QAAQ,CAAC,CAAC;EAEd,oBACEL,KAAA,CAAAa,aAAA,CAACX,IAAI;IACHY,KAAK,EAAE,CACLC,MAAM,CAACC,SAAS,EAChB;MACEC,eAAe,EAAEN,MAAM,CAACO;IAC1B,CAAC,EACDN,wBAAwB,CAACI,SAAS,CAClC;IACFP,QAAQ,EAAEA;EAAS,gBAEnBT,KAAA,CAAAa,aAAA,CAACX,IAAI;IAACY,KAAK,EAAE,CAACC,MAAM,CAACI,WAAW,EAAEP,wBAAwB,CAACO,WAAW;EAAE,GACrEhB,uBAAuB,iBACtBH,KAAA,CAAAa,aAAA,CAACV,uBAAuB;IACtBK,oBAAoB,EAAEA;EAAqB,CAC5C,CAEC,CAAC,eACPR,KAAA,CAAAa,aAAA,CAACX,IAAI;IACHY,KAAK,EAAE,CAACC,MAAM,CAACK,YAAY,EAAER,wBAAwB,CAACQ,YAAY;EAAE,CACrE,CACG,CAAC;AAEX,CAAC;AAED,MAAML,MAAM,GAAGd,UAAU,CAACoB,MAAM,CAAC;EAC/BL,SAAS,EAAE;IACTM,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,CAAC;IACTC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,eAAe,EAAE,EAAE;IACnBC,iBAAiB,EAAE,CAAC;IACpBC,MAAM,EAAEtB,OAAO,CAACuB;EAClB,CAAC;EACDC,OAAO,EAAE,CAAC,CAAC;EACXX,WAAW,EAAE;IACXY,IAAI,EAAE,CAAC;IACPN,UAAU,EAAE;EACd,CAAC;EACDL,YAAY,EAAE;IACZW,IAAI,EAAE,CAAC;IACPN,UAAU,EAAE;EACd;AACF,CAAC,CAAC"}
@@ -1,6 +1,9 @@
1
1
  export * from './HostLivestreamControls';
2
- export * from './LivestreamMediaControls';
3
2
  export * from './HostStartStreamButton';
4
3
  export * from './LivestreamAudioControlButton';
4
+ export * from './LivestreamMediaControls';
5
5
  export * from './LivestreamVideoControlButton';
6
+ export * from './ViewerLeaveStreamButton';
7
+ export * from './ViewerLivestreamControls';
8
+ export * from './LivestreamScreenShareToggleButton';
6
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["components/Livestream/LivestreamControls/index.ts"],"mappings":"AAAA,cAAc,0BAA0B;AACxC,cAAc,2BAA2B;AACzC,cAAc,yBAAyB;AACvC,cAAc,gCAAgC;AAC9C,cAAc,gCAAgC"}
1
+ {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["components/Livestream/LivestreamControls/index.ts"],"mappings":"AAAA,cAAc,0BAA0B;AACxC,cAAc,yBAAyB;AACvC,cAAc,gCAAgC;AAC9C,cAAc,2BAA2B;AACzC,cAAc,gCAAgC;AAC9C,cAAc,2BAA2B;AACzC,cAAc,4BAA4B;AAC1C,cAAc,qCAAqC"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useCallback, useEffect, useState } from 'react';
2
2
  import { SfuModels } from '@stream-io/video-client';
3
3
  import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
4
4
  import { StyleSheet, View } from 'react-native';
@@ -17,7 +17,8 @@ const hasScreenShare = p => p === null || p === void 0 ? void 0 : p.publishedTra
17
17
  */
18
18
  export const LivestreamLayout = ({
19
19
  landscape,
20
- VideoRenderer = DefaultVideoRenderer
20
+ VideoRenderer = DefaultVideoRenderer,
21
+ ScreenShareOverlay
21
22
  }) => {
22
23
  const {
23
24
  useParticipants,
@@ -34,21 +35,58 @@ export const LivestreamLayout = ({
34
35
  const hasOngoingScreenShare = useHasOngoingScreenShare();
35
36
  const presenter = hasOngoingScreenShare ? hasScreenShare(currentSpeaker) && currentSpeaker : otherParticipants.find(hasScreenShare);
36
37
  usePaginatedLayoutSortPreset(call);
38
+ const [objectFit, setObjectFit] = useState();
39
+
40
+ // no need to pass object fit for local participant as the dimensions are for remote tracks
41
+ const objectFitToBeSet = currentSpeaker !== null && currentSpeaker !== void 0 && currentSpeaker.isLocalParticipant ? undefined : objectFit;
42
+ const onDimensionsChange = useCallback(d => {
43
+ if (d) {
44
+ const isWidthWide = d.width > d.height;
45
+ setObjectFit(isWidthWide ? 'contain' : 'cover');
46
+ }
47
+ }, []);
37
48
  const landScapeStyles = {
38
49
  flexDirection: landscape ? 'row' : 'column'
39
50
  };
40
51
  return /*#__PURE__*/React.createElement(View, {
41
52
  style: [styles.container, landScapeStyles, {
42
- backgroundColor: colors.dark_gray
53
+ backgroundColor: colors.static_grey
43
54
  }, livestreamLayout.container]
44
- }, VideoRenderer && hasOngoingScreenShare && presenter && /*#__PURE__*/React.createElement(VideoRenderer, {
55
+ }, /*#__PURE__*/React.createElement(RemoteVideoTrackDimensionsRenderLessComponent, {
56
+ onDimensionsChange: onDimensionsChange
57
+ }), VideoRenderer && hasOngoingScreenShare && presenter && (ScreenShareOverlay ? /*#__PURE__*/React.createElement(ScreenShareOverlay, null) : /*#__PURE__*/React.createElement(VideoRenderer, {
45
58
  trackType: "screenShareTrack",
46
59
  participant: presenter
47
- }), VideoRenderer && !hasOngoingScreenShare && currentSpeaker && /*#__PURE__*/React.createElement(VideoRenderer, {
60
+ })), VideoRenderer && !hasOngoingScreenShare && currentSpeaker && /*#__PURE__*/React.createElement(VideoRenderer, {
48
61
  participant: currentSpeaker,
62
+ objectFit: objectFitToBeSet,
49
63
  trackType: "videoTrack"
50
64
  }));
51
65
  };
66
+ const RemoteVideoTrackDimensionsRenderLessComponent = ({
67
+ onDimensionsChange
68
+ }) => {
69
+ var _statsReport$subscrib, _statsReport$subscrib2;
70
+ const [dimension, setDimension] = useState();
71
+ const {
72
+ useCallStatsReport
73
+ } = useCallStateHooks();
74
+ const statsReport = useCallStatsReport();
75
+ const highestFrameHeight = statsReport === null || statsReport === void 0 || (_statsReport$subscrib = statsReport.subscriberStats) === null || _statsReport$subscrib === void 0 ? void 0 : _statsReport$subscrib.highestFrameHeight;
76
+ const highestFrameWidth = statsReport === null || statsReport === void 0 || (_statsReport$subscrib2 = statsReport.subscriberStats) === null || _statsReport$subscrib2 === void 0 ? void 0 : _statsReport$subscrib2.highestFrameWidth;
77
+ useEffect(() => {
78
+ if (highestFrameHeight && highestFrameWidth) {
79
+ setDimension({
80
+ height: highestFrameHeight,
81
+ width: highestFrameWidth
82
+ });
83
+ }
84
+ }, [highestFrameHeight, highestFrameWidth]);
85
+ useEffect(() => {
86
+ onDimensionsChange(dimension);
87
+ }, [dimension, onDimensionsChange]);
88
+ return null;
89
+ };
52
90
  const styles = StyleSheet.create({
53
91
  container: {
54
92
  flex: 1
@@ -1 +1 @@
1
- {"version":3,"names":["React","SfuModels","useCall","useCallStateHooks","StyleSheet","View","usePaginatedLayoutSortPreset","useTheme","VideoRenderer","DefaultVideoRenderer","hasScreenShare","p","publishedTracks","includes","TrackType","SCREEN_SHARE","LivestreamLayout","landscape","useParticipants","useHasOngoingScreenShare","call","theme","colors","livestreamLayout","currentSpeaker","otherParticipants","hasOngoingScreenShare","presenter","find","landScapeStyles","flexDirection","createElement","style","styles","container","backgroundColor","dark_gray","trackType","participant","create","flex"],"sourceRoot":"../../../../../src","sources":["components/Livestream/LivestreamLayout/LivestreamLayout.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,SAAS,QAAgC,yBAAyB;AAC3E,SAASC,OAAO,EAAEC,iBAAiB,QAAQ,iCAAiC;AAC5E,SAASC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AAC1D,SAASC,4BAA4B,QAAQ,6CAA6C;AAC1F,SAASC,QAAQ,QAAQ,mBAAmB;AAC5C,SACEC,aAAa,IAAIC,oBAAoB,QAEhC,mBAAmB;;AAE1B;AACA;AACA;;AAaA,MAAMC,cAAc,GAAIC,CAA0B,IAChDA,CAAC,aAADA,CAAC,uBAADA,CAAC,CAAEC,eAAe,CAACC,QAAQ,CAACZ,SAAS,CAACa,SAAS,CAACC,YAAY,CAAC;;AAE/D;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAGA,CAAC;EAC/BC,SAAS;EACTT,aAAa,GAAGC;AACK,CAAC,KAAK;EAC3B,MAAM;IAAES,eAAe;IAAEC;EAAyB,CAAC,GAAGhB,iBAAiB,CAAC,CAAC;EACzE,MAAMiB,IAAI,GAAGlB,OAAO,CAAC,CAAC;EACtB,MAAM;IACJmB,KAAK,EAAE;MAAEC,MAAM;MAAEC;IAAiB;EACpC,CAAC,GAAGhB,QAAQ,CAAC,CAAC;EACd,MAAM,CAACiB,cAAc,EAAE,GAAGC,iBAAiB,CAAC,GAAGP,eAAe,CAAC,CAAC;EAChE,MAAMQ,qBAAqB,GAAGP,wBAAwB,CAAC,CAAC;EACxD,MAAMQ,SAAS,GAAGD,qBAAqB,GACnChB,cAAc,CAACc,cAAc,CAAC,IAAIA,cAAc,GAChDC,iBAAiB,CAACG,IAAI,CAAClB,cAAc,CAAC;EAE1CJ,4BAA4B,CAACc,IAAI,CAAC;EAElC,MAAMS,eAA0B,GAAG;IACjCC,aAAa,EAAEb,SAAS,GAAG,KAAK,GAAG;EACrC,CAAC;EAED,oBACEjB,KAAA,CAAA+B,aAAA,CAAC1B,IAAI;IACH2B,KAAK,EAAE,CACLC,MAAM,CAACC,SAAS,EAChBL,eAAe,EACf;MAAEM,eAAe,EAAEb,MAAM,CAACc;IAAU,CAAC,EACrCb,gBAAgB,CAACW,SAAS;EAC1B,GAED1B,aAAa,IAAIkB,qBAAqB,IAAIC,SAAS,iBAClD3B,KAAA,CAAA+B,aAAA,CAACvB,aAAa;IAAC6B,SAAS,EAAC,kBAAkB;IAACC,WAAW,EAAEX;EAAU,CAAE,CACtE,EACAnB,aAAa,IAAI,CAACkB,qBAAqB,IAAIF,cAAc,iBACxDxB,KAAA,CAAA+B,aAAA,CAACvB,aAAa;IAAC8B,WAAW,EAAEd,cAAe;IAACa,SAAS,EAAC;EAAY,CAAE,CAElE,CAAC;AAEX,CAAC;AAED,MAAMJ,MAAM,GAAG7B,UAAU,CAACmC,MAAM,CAAC;EAC/BL,SAAS,EAAE;IACTM,IAAI,EAAE;EACR;AACF,CAAC,CAAC"}
1
+ {"version":3,"names":["React","useCallback","useEffect","useState","SfuModels","useCall","useCallStateHooks","StyleSheet","View","usePaginatedLayoutSortPreset","useTheme","VideoRenderer","DefaultVideoRenderer","hasScreenShare","p","publishedTracks","includes","TrackType","SCREEN_SHARE","LivestreamLayout","landscape","ScreenShareOverlay","useParticipants","useHasOngoingScreenShare","call","theme","colors","livestreamLayout","currentSpeaker","otherParticipants","hasOngoingScreenShare","presenter","find","objectFit","setObjectFit","objectFitToBeSet","isLocalParticipant","undefined","onDimensionsChange","d","isWidthWide","width","height","landScapeStyles","flexDirection","createElement","style","styles","container","backgroundColor","static_grey","RemoteVideoTrackDimensionsRenderLessComponent","trackType","participant","_statsReport$subscrib","_statsReport$subscrib2","dimension","setDimension","useCallStatsReport","statsReport","highestFrameHeight","subscriberStats","highestFrameWidth","create","flex"],"sourceRoot":"../../../../../src","sources":["components/Livestream/LivestreamLayout/LivestreamLayout.tsx"],"mappings":"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"}
@@ -17,7 +17,8 @@ import { Z_INDEX } from '../../../constants';
17
17
  export const HostLivestreamTopView = ({
18
18
  DurationBadge = DefaultDurationBadge,
19
19
  LiveIndicator = DefaultLiveIndicator,
20
- FollowerCount = DefaultFollowerCount
20
+ FollowerCount = DefaultFollowerCount,
21
+ onLayout
21
22
  }) => {
22
23
  const {
23
24
  useIsCallLive,
@@ -35,7 +36,8 @@ export const HostLivestreamTopView = ({
35
36
  return /*#__PURE__*/React.createElement(View, {
36
37
  style: [styles.container, {
37
38
  backgroundColor: colors.static_overlay
38
- }, hostLivestreamTopView.container]
39
+ }, hostLivestreamTopView.container],
40
+ onLayout: onLayout
39
41
  }, /*#__PURE__*/React.createElement(View, {
40
42
  style: [styles.leftElement, hostLivestreamTopView.leftElement]
41
43
  }, DurationBadge && /*#__PURE__*/React.createElement(DurationBadge, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","View","DurationBadge","DefaultDurationBadge","LiveIndicator","DefaultLiveIndicator","FollowerCount","DefaultFollowerCount","useTheme","useCallStateHooks","Z_INDEX","HostLivestreamTopView","useIsCallLive","useIsCallHLSBroadcastingInProgress","isCallLive","isBroadcasting","liveOrBroadcasting","theme","colors","hostLivestreamTopView","createElement","style","styles","container","backgroundColor","static_overlay","leftElement","mode","centerElement","rightElement","liveInfo","create","position","top","flexDirection","alignItems","paddingVertical","paddingHorizontal","borderBottomEndRadius","borderBottomStartRadius","zIndex","IN_FRONT","flex"],"sourceRoot":"../../../../../src","sources":["components/Livestream/LivestreamTopView/HostLivestreamTopView.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["React","StyleSheet","View","DurationBadge","DefaultDurationBadge","LiveIndicator","DefaultLiveIndicator","FollowerCount","DefaultFollowerCount","useTheme","useCallStateHooks","Z_INDEX","HostLivestreamTopView","onLayout","useIsCallLive","useIsCallHLSBroadcastingInProgress","isCallLive","isBroadcasting","liveOrBroadcasting","theme","colors","hostLivestreamTopView","createElement","style","styles","container","backgroundColor","static_overlay","leftElement","mode","centerElement","rightElement","liveInfo","create","position","top","flexDirection","alignItems","paddingVertical","paddingHorizontal","borderBottomEndRadius","borderBottomStartRadius","zIndex","IN_FRONT","flex"],"sourceRoot":"../../../../../src","sources":["components/Livestream/LivestreamTopView/HostLivestreamTopView.tsx"],"mappings":"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"}
@@ -16,7 +16,8 @@ import { Z_INDEX } from '../../../constants';
16
16
  export const ViewerLivestreamTopView = ({
17
17
  DurationBadge = DefaultDurationBadge,
18
18
  LiveIndicator = DefaultLiveIndicator,
19
- FollowerCount = DefaultFollowerCount
19
+ FollowerCount = DefaultFollowerCount,
20
+ onLayout
20
21
  }) => {
21
22
  const {
22
23
  theme: {
@@ -27,7 +28,8 @@ export const ViewerLivestreamTopView = ({
27
28
  return /*#__PURE__*/React.createElement(View, {
28
29
  style: [styles.container, {
29
30
  backgroundColor: colors.static_overlay
30
- }, viewerLivestreamTopView.container]
31
+ }, viewerLivestreamTopView.container],
32
+ onLayout: onLayout
31
33
  }, /*#__PURE__*/React.createElement(View, {
32
34
  style: [styles.leftElement, viewerLivestreamTopView.leftElement]
33
35
  }, /*#__PURE__*/React.createElement(View, {