@stream-io/video-react-native-sdk 1.22.1-alpha.0 → 1.22.1

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 (29) hide show
  1. package/CHANGELOG.md +2816 -0
  2. package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.js +79 -0
  3. package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.js.map +1 -0
  4. package/dist/commonjs/components/Participant/ParticipantView/{VideoRenderer.js → VideoRenderer/index.js} +16 -88
  5. package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer/index.js.map +1 -0
  6. package/dist/commonjs/version.js +1 -1
  7. package/dist/commonjs/version.js.map +1 -1
  8. package/dist/module/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.js +73 -0
  9. package/dist/module/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.js.map +1 -0
  10. package/dist/module/components/Participant/ParticipantView/{VideoRenderer.js → VideoRenderer/index.js} +16 -89
  11. package/dist/module/components/Participant/ParticipantView/VideoRenderer/index.js.map +1 -0
  12. package/dist/module/version.js +1 -1
  13. package/dist/module/version.js.map +1 -1
  14. package/dist/typescript/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.d.ts +25 -0
  15. package/dist/typescript/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.d.ts.map +1 -0
  16. package/dist/typescript/components/Participant/ParticipantView/{VideoRenderer.d.ts → VideoRenderer/index.d.ts} +2 -2
  17. package/dist/typescript/components/Participant/ParticipantView/VideoRenderer/index.d.ts.map +1 -0
  18. package/dist/typescript/version.d.ts +1 -1
  19. package/dist/typescript/version.d.ts.map +1 -1
  20. package/ios/StreamInCallManager.swift +40 -40
  21. package/package.json +6 -6
  22. package/src/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.tsx +125 -0
  23. package/src/components/Participant/ParticipantView/{VideoRenderer.tsx → VideoRenderer/index.tsx} +18 -107
  24. package/src/version.ts +1 -1
  25. package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer.js.map +0 -1
  26. package/dist/module/components/Participant/ParticipantView/VideoRenderer.js.map +0 -1
  27. package/dist/typescript/components/Participant/ParticipantView/VideoRenderer.d.ts.map +0 -1
  28. package/ios/StreamVideoReactNative.xcodeproj/project.xcworkspace/xcuserdata/santhoshvaiyapuri.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  29. package/ios/StreamVideoReactNative.xcodeproj/xcuserdata/santhoshvaiyapuri.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
@@ -19,6 +19,8 @@ enum DefaultAudioDevice {
19
19
  @objc(StreamInCallManager)
20
20
  class StreamInCallManager: RCTEventEmitter {
21
21
 
22
+ private let audioSessionQueue = DispatchQueue(label: "io.getstream.rn.audioSessionQueue")
23
+
22
24
  private var audioManagerActivated = false
23
25
  private var callAudioRole: CallAudioRole = .communicator
24
26
  private var defaultAudioDevice: DefaultAudioDevice = .speaker
@@ -44,55 +46,60 @@ class StreamInCallManager: RCTEventEmitter {
44
46
 
45
47
  @objc(setAudioRole:)
46
48
  func setAudioRole(audioRole: String) {
47
- if audioManagerActivated {
48
- log("AudioManager is already activated, audio role cannot be changed.")
49
- return
49
+ audioSessionQueue.async { [self] in
50
+ if audioManagerActivated {
51
+ log("AudioManager is already activated, audio role cannot be changed.")
52
+ return
53
+ }
54
+ self.callAudioRole = audioRole.lowercased() == "listener" ? .listener : .communicator
50
55
  }
51
- self.callAudioRole = audioRole.lowercased() == "listener" ? .listener : .communicator
52
-
53
56
  }
54
57
 
55
58
  @objc(setDefaultAudioDeviceEndpointType:)
56
59
  func setDefaultAudioDeviceEndpointType(endpointType: String) {
57
- if audioManagerActivated {
58
- log("AudioManager is already activated, default audio device cannot be changed.")
59
- return
60
+ audioSessionQueue.async { [self] in
61
+ if audioManagerActivated {
62
+ log("AudioManager is already activated, default audio device cannot be changed.")
63
+ return
64
+ }
65
+ self.defaultAudioDevice = endpointType.lowercased() == "earpiece" ? .earpiece : .speaker
60
66
  }
61
- self.defaultAudioDevice = endpointType.lowercased() == "earpiece" ? .earpiece : .speaker
62
-
63
67
  }
64
68
 
65
69
  @objc
66
70
  func start() {
67
- if audioManagerActivated {
68
- return
71
+ audioSessionQueue.async { [self] in
72
+ if audioManagerActivated {
73
+ return
74
+ }
75
+ let session = AVAudioSession.sharedInstance()
76
+ previousAudioSessionState = AudioSessionState(
77
+ category: session.category,
78
+ mode: session.mode,
79
+ options: session.categoryOptions
80
+ )
81
+ configureAudioSession()
82
+ audioManagerActivated = true
69
83
  }
70
- let session = AVAudioSession.sharedInstance()
71
- previousAudioSessionState = AudioSessionState(
72
- category: session.category,
73
- mode: session.mode,
74
- options: session.categoryOptions
75
- )
76
- configureAudioSession()
77
- audioManagerActivated = true
78
84
  }
79
85
 
80
86
  @objc
81
87
  func stop() {
82
- if !audioManagerActivated {
83
- return
84
- }
85
- if let prev = previousAudioSessionState {
86
- let session = AVAudioSession.sharedInstance()
87
- do {
88
- try session.setCategory(prev.category, mode: prev.mode, options: prev.options)
89
- } catch {
90
- log("Error restoring previous audio session: \(error.localizedDescription)")
88
+ audioSessionQueue.async { [self] in
89
+ if !audioManagerActivated {
90
+ return
91
+ }
92
+ if let prev = previousAudioSessionState {
93
+ let session = AVAudioSession.sharedInstance()
94
+ do {
95
+ try session.setCategory(prev.category, mode: prev.mode, options: prev.options)
96
+ } catch {
97
+ log("Error restoring previous audio session: \(error.localizedDescription)")
98
+ }
99
+ previousAudioSessionState = nil
91
100
  }
92
- previousAudioSessionState = nil
101
+ audioManagerActivated = false
93
102
  }
94
- audioManagerActivated = false
95
-
96
103
  }
97
104
 
98
105
  private func configureAudioSession() {
@@ -135,9 +142,6 @@ class StreamInCallManager: RCTEventEmitter {
135
142
 
136
143
  if currentCategory != intendedCategory.rawValue || currentMode != intendedMode.rawValue || currentOptions != intendedOptions || !currentIsActive {
137
144
  session.lockForConfiguration()
138
- defer {
139
- session.unlockForConfiguration()
140
- }
141
145
  do {
142
146
  try session.setCategory(intendedCategory, mode: intendedMode, options: intendedOptions)
143
147
  try session.setActive(true)
@@ -152,6 +156,7 @@ class StreamInCallManager: RCTEventEmitter {
152
156
  log("configureAudioSession: Error setting mode: \(error.localizedDescription)")
153
157
  }
154
158
  }
159
+ session.unlockForConfiguration()
155
160
  } else {
156
161
  log("configureAudioSession: no change needed")
157
162
  }
@@ -290,11 +295,6 @@ class StreamInCallManager: RCTEventEmitter {
290
295
  }
291
296
  }
292
297
 
293
- @objc
294
- func methodQueue() -> DispatchQueue {
295
- return DispatchQueue(label: "io.getstream.rn.audioSessionQueue", qos: .userInitiated)
296
- }
297
-
298
298
  // MARK: - Logging Helper
299
299
  private func log(_ message: String) {
300
300
  NSLog("InCallManager: %@", message)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stream-io/video-react-native-sdk",
3
- "version": "1.22.1-alpha.0",
3
+ "version": "1.22.1",
4
4
  "description": "Stream Video SDK for React Native",
5
5
  "author": "https://getstream.io",
6
6
  "homepage": "https://getstream.io/video/docs/react-native/",
@@ -45,8 +45,8 @@
45
45
  "!**/.*"
46
46
  ],
47
47
  "dependencies": {
48
- "@stream-io/video-client": "1.34.0",
49
- "@stream-io/video-react-bindings": "1.10.0",
48
+ "@stream-io/video-client": "1.34.1",
49
+ "@stream-io/video-react-bindings": "1.10.1",
50
50
  "intl-pluralrules": "2.0.1",
51
51
  "lodash.merge": "^4.6.2",
52
52
  "react-native-url-polyfill": "^3.0.0",
@@ -125,9 +125,9 @@
125
125
  "@react-native-firebase/app": "^23.4.0",
126
126
  "@react-native-firebase/messaging": "^23.4.0",
127
127
  "@react-native/babel-preset": "^0.81.4",
128
- "@stream-io/noise-cancellation-react-native": "workspace:^",
128
+ "@stream-io/noise-cancellation-react-native": "^0.4.0",
129
129
  "@stream-io/react-native-webrtc": "125.4.4",
130
- "@stream-io/video-filters-react-native": "workspace:^",
130
+ "@stream-io/video-filters-react-native": "^0.8.0",
131
131
  "@testing-library/jest-native": "^5.4.3",
132
132
  "@testing-library/react-native": "13.3.3",
133
133
  "@tsconfig/node18": "^18.2.4",
@@ -162,4 +162,4 @@
162
162
  "typescript"
163
163
  ]
164
164
  }
165
- }
165
+ }
@@ -0,0 +1,125 @@
1
+ import { forwardRef, useImperativeHandle, useEffect, useMemo } from 'react';
2
+ import { LayoutChangeEvent } from 'react-native';
3
+ import {
4
+ Call,
5
+ CallingState,
6
+ hasScreenShare,
7
+ hasVideo,
8
+ SfuModels,
9
+ type VideoTrackType,
10
+ DebounceType,
11
+ } from '@stream-io/video-client';
12
+ import {
13
+ BehaviorSubject,
14
+ combineLatest,
15
+ distinctUntilChanged,
16
+ distinctUntilKeyChanged,
17
+ map,
18
+ takeWhile,
19
+ } from 'rxjs';
20
+ export type TrackSubscriberHandle = {
21
+ onLayoutUpdate: (event: LayoutChangeEvent) => void;
22
+ };
23
+
24
+ type TrackSubscriberProps = {
25
+ participantSessionId: string;
26
+ call: Call;
27
+ trackType: VideoTrackType;
28
+ isVisible: boolean;
29
+ };
30
+
31
+ /**
32
+ * This component is used to subscribe to the video + audio track of the participant in the following cases:
33
+ * 1. When the participant starts publishing the video track
34
+ * 2. When the participant changes the video track dimensions
35
+ * 3. When the participant becomes visible
36
+ * 4. On joined callingState, this handles reconnection
37
+
38
+ * This component is used to unsubscribe to video track and subscribe only to the audio track of the participant (by passing undefined dimensions) in the following cases:
39
+ * 1. When the participant stops publishing the video track
40
+ * 2. When the participant becomes invisible
41
+ */
42
+ const TrackSubscriber = forwardRef<TrackSubscriberHandle, TrackSubscriberProps>(
43
+ (props, ref) => {
44
+ const { call, participantSessionId, trackType, isVisible } = props;
45
+ const dimensions$ = useMemo(() => {
46
+ return new BehaviorSubject<SfuModels.VideoDimension | undefined>(
47
+ undefined,
48
+ );
49
+ }, []);
50
+
51
+ useEffect(() => {
52
+ const requestTrackWithDimensions = (
53
+ debounceType: DebounceType,
54
+ dimension: SfuModels.VideoDimension | undefined,
55
+ ) => {
56
+ if (dimension && (dimension.width === 0 || dimension.height === 0)) {
57
+ // ignore 0x0 dimensions. this can happen when the video element
58
+ // is not visible (e.g., has display: none).
59
+ // we treat this as "unsubscription" as we don't want to keep
60
+ // consuming bandwidth for a video that is not visible on the screen.
61
+ dimension = undefined;
62
+ }
63
+ call.state.updateParticipantTracks(trackType, {
64
+ [participantSessionId]: { dimension },
65
+ });
66
+ call.dynascaleManager.applyTrackSubscriptions(debounceType);
67
+ };
68
+ const isPublishingTrack$ = call.state.participants$.pipe(
69
+ map((ps) => ps.find((p) => p.sessionId === participantSessionId)),
70
+ takeWhile((p) => !!p),
71
+ distinctUntilChanged(),
72
+ distinctUntilKeyChanged('publishedTracks'),
73
+ map((p) =>
74
+ trackType === 'videoTrack' ? hasVideo(p) : hasScreenShare(p),
75
+ ),
76
+ distinctUntilChanged(),
77
+ );
78
+ const isJoinedState$ = call.state.callingState$.pipe(
79
+ map((callingState) => callingState === CallingState.JOINED),
80
+ );
81
+
82
+ const subscription = combineLatest([
83
+ dimensions$,
84
+ isPublishingTrack$,
85
+ isJoinedState$,
86
+ ]).subscribe(([dimension, isPublishing, isJoined]) => {
87
+ if (isJoined && isPublishing && !isVisible) {
88
+ // the participant is publishing and we are not visible, so we unsubscribe from the video track
89
+ requestTrackWithDimensions(DebounceType.FAST, undefined);
90
+ } else if (isJoined && isPublishing && isVisible && dimension) {
91
+ // the participant is publishing and we are visible and have valid dimensions, so we subscribe to the video track
92
+ requestTrackWithDimensions(DebounceType.IMMEDIATE, dimension);
93
+ } else if (isJoined && !isPublishing) {
94
+ // the participant stopped publishing a track, so we unsubscribe from the video track
95
+ requestTrackWithDimensions(DebounceType.FAST, undefined);
96
+ }
97
+ // if isPublishing but no dimension yet, we wait for dimensions
98
+ });
99
+
100
+ return () => {
101
+ subscription.unsubscribe();
102
+ };
103
+ }, [call, participantSessionId, trackType, isVisible, dimensions$]);
104
+
105
+ useImperativeHandle(
106
+ ref,
107
+ () => ({
108
+ onLayoutUpdate: (event) => {
109
+ const dimension = {
110
+ width: Math.trunc(event.nativeEvent.layout.width),
111
+ height: Math.trunc(event.nativeEvent.layout.height),
112
+ };
113
+ dimensions$.next(dimension);
114
+ },
115
+ }),
116
+ [dimensions$],
117
+ );
118
+
119
+ return null;
120
+ },
121
+ );
122
+
123
+ TrackSubscriber.displayName = 'TrackSubscriber';
124
+
125
+ export default TrackSubscriber;
@@ -2,21 +2,20 @@ import React, { useEffect, useRef } from 'react';
2
2
  import { Platform, StyleSheet, View } from 'react-native';
3
3
  import type { MediaStream } from '@stream-io/react-native-webrtc';
4
4
  import { RTCView } from '@stream-io/react-native-webrtc';
5
- import type { ParticipantViewProps } from './ParticipantView';
5
+ import type { ParticipantViewProps } from '../ParticipantView';
6
6
  import {
7
- CallingState,
8
7
  hasPausedTrack,
9
8
  hasScreenShare,
10
9
  hasVideo,
11
- SfuModels,
12
10
  type VideoTrackType,
13
11
  VisibilityState,
14
12
  } from '@stream-io/video-client';
15
13
  import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
16
- import { ParticipantVideoFallback as DefaultParticipantVideoFallback } from './ParticipantVideoFallback';
17
- import { useTheme } from '../../../contexts/ThemeContext';
18
- import { useTrackDimensions } from '../../../hooks/useTrackDimensions';
19
- import { useScreenshotIosContext } from '../../../contexts/internal/ScreenshotIosContext';
14
+ import { ParticipantVideoFallback as DefaultParticipantVideoFallback } from '../ParticipantVideoFallback';
15
+ import { useTheme } from '../../../../contexts/ThemeContext';
16
+ import { useTrackDimensions } from '../../../../hooks/useTrackDimensions';
17
+ import { useScreenshotIosContext } from '../../../../contexts/internal/ScreenshotIosContext';
18
+ import TrackSubscriber, { TrackSubscriberHandle } from './TrackSubscriber';
20
19
 
21
20
  const DEFAULT_VIEWPORT_VISIBILITY_STATE: Record<
22
21
  VideoTrackType,
@@ -56,16 +55,9 @@ export const VideoRenderer = ({
56
55
  theme: { videoRenderer },
57
56
  } = useTheme();
58
57
  const call = useCall();
59
- const { useCallCallingState, useCameraState, useIncomingVideoSettings } =
60
- useCallStateHooks();
58
+ const { useCameraState, useIncomingVideoSettings } = useCallStateHooks();
59
+ const trackSubscriberRef = useRef<TrackSubscriberHandle>(null);
61
60
  const { isParticipantVideoEnabled } = useIncomingVideoSettings();
62
- const callingState = useCallCallingState();
63
- const pendingVideoLayoutRef = useRef<SfuModels.VideoDimension | undefined>(
64
- undefined,
65
- );
66
- const subscribedVideoLayoutRef = useRef<SfuModels.VideoDimension | undefined>(
67
- undefined,
68
- );
69
61
  const { direction } = useCameraState();
70
62
  const viewRef = useRef(null);
71
63
  const {
@@ -91,7 +83,6 @@ export const VideoRenderer = ({
91
83
  ? hasScreenShare(participant)
92
84
  : hasVideo(participant);
93
85
 
94
- const hasJoinedCall = callingState === CallingState.JOINED;
95
86
  const videoStreamToRender = (isScreenSharing
96
87
  ? screenShareStream
97
88
  : videoStream) as unknown as MediaStream | undefined;
@@ -179,11 +170,6 @@ export const VideoRenderer = ({
179
170
  },
180
171
  }));
181
172
  }
182
- if (subscribedVideoLayoutRef.current) {
183
- // when video is enabled again, we want to use the last subscribed dimension to resubscribe
184
- pendingVideoLayoutRef.current = subscribedVideoLayoutRef.current;
185
- subscribedVideoLayoutRef.current = undefined;
186
- }
187
173
  }
188
174
  }, [
189
175
  sessionId,
@@ -194,94 +180,10 @@ export const VideoRenderer = ({
194
180
  isLocalParticipant,
195
181
  ]);
196
182
 
197
- useEffect(() => {
198
- if (!hasJoinedCall && subscribedVideoLayoutRef.current) {
199
- // when call is joined again, we want to use the last subscribed dimension to resubscribe
200
- pendingVideoLayoutRef.current = subscribedVideoLayoutRef.current;
201
- subscribedVideoLayoutRef.current = undefined;
202
- }
203
- }, [hasJoinedCall]);
204
-
205
- /**
206
- * This effect updates the subscription either
207
- * 1. when video tracks are published and was unpublished before
208
- * 2. when the view's visibility changes
209
- * 3. when call was rejoined
210
- */
211
- useEffect(() => {
212
- if (!call || isLocalParticipant) {
213
- return;
214
- }
215
- // NOTE: We only want to update the subscription if the pendingVideoLayoutRef is set
216
- const updateIsNeeded = pendingVideoLayoutRef.current;
217
-
218
- if (!updateIsNeeded || !isPublishingVideoTrack || !hasJoinedCall) {
219
- return;
220
- }
221
-
222
- // NOTE: When the view is not visible, we want to subscribe to audio only.
223
- // We unsubscribe their video by setting the dimension to undefined
224
- const dimension = isVisible ? pendingVideoLayoutRef.current : undefined;
225
- call.state.updateParticipantTracks(trackType, {
226
- [sessionId]: { dimension },
227
- });
228
- call.dynascaleManager.applyTrackSubscriptions();
229
-
230
- if (dimension) {
231
- subscribedVideoLayoutRef.current = pendingVideoLayoutRef.current;
232
- pendingVideoLayoutRef.current = undefined;
233
- }
234
- }, [
235
- call,
236
- isPublishingVideoTrack,
237
- trackType,
238
- isVisible,
239
- sessionId,
240
- hasJoinedCall,
241
- isLocalParticipant,
242
- ]);
243
-
244
- useEffect(() => {
245
- return () => {
246
- subscribedVideoLayoutRef.current = undefined;
247
- pendingVideoLayoutRef.current = undefined;
248
- };
249
- }, [trackType, sessionId]);
250
-
251
183
  const onLayout: React.ComponentProps<typeof RTCView>['onLayout'] = (
252
184
  event,
253
185
  ) => {
254
- if (!call || isLocalParticipant) {
255
- return;
256
- }
257
- const dimension = {
258
- width: Math.trunc(event.nativeEvent.layout.width),
259
- height: Math.trunc(event.nativeEvent.layout.height),
260
- };
261
-
262
- // NOTE: If the participant hasn't published a video track yet,
263
- // or the view is not viewable, we store the dimensions and handle it
264
- // when the track is published or the video is enabled.
265
- if (!isPublishingVideoTrack || !isVisible || !hasJoinedCall) {
266
- pendingVideoLayoutRef.current = dimension;
267
- return;
268
- }
269
-
270
- // NOTE: We don't want to update the subscription if the dimension hasn't changed
271
- if (
272
- subscribedVideoLayoutRef.current?.width === dimension.width &&
273
- subscribedVideoLayoutRef.current?.height === dimension.height
274
- ) {
275
- return;
276
- }
277
- call.state.updateParticipantTracks(trackType, {
278
- [sessionId]: {
279
- dimension,
280
- },
281
- });
282
- call.dynascaleManager.applyTrackSubscriptions();
283
- subscribedVideoLayoutRef.current = dimension;
284
- pendingVideoLayoutRef.current = undefined;
186
+ trackSubscriberRef.current?.onLayoutUpdate(event);
285
187
  };
286
188
 
287
189
  return (
@@ -289,6 +191,15 @@ export const VideoRenderer = ({
289
191
  onLayout={onLayout}
290
192
  style={[styles.container, videoRenderer.container]}
291
193
  >
194
+ {call && !isLocalParticipant && (
195
+ <TrackSubscriber
196
+ ref={trackSubscriberRef}
197
+ call={call}
198
+ participantSessionId={sessionId}
199
+ trackType={trackType}
200
+ isVisible={isVisible}
201
+ />
202
+ )}
292
203
  {canShowVideo &&
293
204
  videoStreamToRender &&
294
205
  (objectFit || isVideoDimensionsValid) ? (
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '1.22.1-alpha.0';
1
+ export const version = '1.22.1';
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeWebrtc","_videoClient","_videoReactBindings","_ParticipantVideoFallback","_ThemeContext","_useTrackDimensions","_ScreenshotIosContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULT_VIEWPORT_VISIBILITY_STATE","videoTrack","VisibilityState","UNKNOWN","screenShareTrack","VideoRenderer","trackType","participant","isVisible","ParticipantVideoFallback","DefaultParticipantVideoFallback","objectFit","videoZOrder","theme","videoRenderer","useTheme","useCall","useCallCallingState","useCameraState","useIncomingVideoSettings","useCallStateHooks","isParticipantVideoEnabled","callingState","pendingVideoLayoutRef","useRef","undefined","subscribedVideoLayoutRef","direction","viewRef","register","registerIosScreenshot","deregister","deregisterIosScreenshot","useScreenshotIosContext","videoDimensions","useTrackDimensions","isVideoDimensionsValid","width","height","isLocalParticipant","sessionId","viewportVisibilityState","videoStream","screenShareStream","isScreenSharing","isPublishingVideoTrack","hasScreenShare","hasVideo","hasJoinedCall","CallingState","JOINED","videoStreamToRender","canShowVideo","hasPausedTrack","useEffect","Platform","OS","mirror","VISIBLE","state","updateParticipant","p","INVISIBLE","current","updateIsNeeded","dimension","updateParticipantTracks","dynascaleManager","applyTrackSubscriptions","onLayout","event","Math","trunc","nativeEvent","layout","createElement","View","style","styles","container","RTCView","streamURL","toURL","ref","zOrder","exports","StyleSheet","create","absoluteFillObject"],"sourceRoot":"../../../../../src","sources":["components/Participant/ParticipantView/VideoRenderer.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","useEffect","useRef","Platform","StyleSheet","View","RTCView","CallingState","hasPausedTrack","hasScreenShare","hasVideo","VisibilityState","useCall","useCallStateHooks","ParticipantVideoFallback","DefaultParticipantVideoFallback","useTheme","useTrackDimensions","useScreenshotIosContext","DEFAULT_VIEWPORT_VISIBILITY_STATE","videoTrack","UNKNOWN","screenShareTrack","VideoRenderer","trackType","participant","isVisible","objectFit","videoZOrder","theme","videoRenderer","call","useCallCallingState","useCameraState","useIncomingVideoSettings","isParticipantVideoEnabled","callingState","pendingVideoLayoutRef","undefined","subscribedVideoLayoutRef","direction","viewRef","register","registerIosScreenshot","deregister","deregisterIosScreenshot","videoDimensions","isVideoDimensionsValid","width","height","isLocalParticipant","sessionId","viewportVisibilityState","videoStream","screenShareStream","isScreenSharing","isPublishingVideoTrack","hasJoinedCall","JOINED","videoStreamToRender","canShowVideo","OS","mirror","VISIBLE","state","updateParticipant","p","INVISIBLE","current","updateIsNeeded","dimension","updateParticipantTracks","dynascaleManager","applyTrackSubscriptions","onLayout","event","Math","trunc","nativeEvent","layout","createElement","style","styles","container","streamURL","toURL","ref","zOrder","create","absoluteFillObject"],"sourceRoot":"../../../../../src","sources":["components/Participant/ParticipantView/VideoRenderer.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"VideoRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/components/Participant/ParticipantView/VideoRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAIjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAwB9D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,oBAAoB,EAClB,0BAA0B,GAC1B,WAAW,GACX,aAAa,GACb,WAAW,GACX,WAAW,GACX,aAAa,CAChB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,0FAO3B,kBAAkB,sBAqQpB,CAAC"}
@@ -1,14 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
- <plist version="1.0">
4
- <dict>
5
- <key>SchemeUserState</key>
6
- <dict>
7
- <key>StreamVideoReactNative.xcscheme_^#shared#^_</key>
8
- <dict>
9
- <key>orderHint</key>
10
- <integer>0</integer>
11
- </dict>
12
- </dict>
13
- </dict>
14
- </plist>